Annotation of 43BSD/ingres/source/iutil/printup.c, revision 1.1

1.1     ! root        1: # include      <stdio.h>
        !             2: # include      <ingres.h>
        !             3: # include      <aux.h>
        !             4: # include      <access.h>
        !             5: # include      <symbol.h>
        !             6: # include      <sccs.h>
        !             7: 
        !             8: SCCSID(@(#)printup.c   8.3     2/8/85)
        !             9: 
        !            10: /*
        !            11: **  PRINTUP -- print tuple
        !            12: **
        !            13: **     Parameters:
        !            14: **             d -- a descriptor describing the tuple.
        !            15: **             tuple -- the tuple to print.
        !            16: **
        !            17: **     Returns:
        !            18: **             ??
        !            19: **
        !            20: **     Side Effects:
        !            21: **             None.
        !            22: */
        !            23: 
        !            24: # define       PAGELGTH        56
        !            25: 
        !            26: int    Printlgth;
        !            27: extern struct out_arg  Out_arg;
        !            28: int    Hdr = 0;
        !            29: HDRINFO        *Fieldwidth, *Hdrptr;
        !            30: 
        !            31: printup(d, tuple)
        !            32: DESC   *d;
        !            33: char   *tuple;
        !            34: {
        !            35:        register char   *ftype, *flen;
        !            36:        register short  *foff;
        !            37:        static  double  dbl;
        !            38:        auto    long    lng;
        !            39:        int             i, type;
        !            40:        extern HDRINFO  *Hdrptr;
        !            41:        extern HDRINFO  *Fieldwidth;
        !            42: 
        !            43:        ftype = &d->relfrmt[1];
        !            44:        flen = &d->relfrml[1];
        !            45:        foff = &d->reloff[1];
        !            46:        i = d->reldum.relatts;
        !            47: 
        !            48:        /* If relation is S_BINARY then print char fields escaped */
        !            49:        if (d->reldum.relstat & S_BINARY)
        !            50:        {
        !            51:                while (i--)
        !            52:                        printatt((type = *ftype++) == CHAR ? BINARY : type, *flen++, &tuple[*foff++]);
        !            53:        }
        !            54:        else
        !            55:        {
        !            56:                while (i--)
        !            57:                {
        !            58:                        switch ( *ftype )
        !            59:                        {
        !            60:                          case FLOAT:
        !            61:                                bmove(&tuple[*foff++],&dbl,*flen);
        !            62:                                printatt(*ftype++, *flen++, (ANYTYPE *)&dbl);
        !            63:                                break;
        !            64:                        
        !            65:                          case CHAR:
        !            66:                                printatt(*ftype++, *flen++, (ANYTYPE *)&tuple[*foff++]);
        !            67:                                break;
        !            68: 
        !            69:                          case INT:
        !            70:                                if ( *flen != 4 )
        !            71:                                        printatt(*ftype++, *flen++, (ANYTYPE *)&tuple[*foff++]);
        !            72:                                else
        !            73:                                {
        !            74:                                        bmove(&tuple[*foff++],&lng,4);
        !            75:                                        printatt(*ftype++, *flen++, (ANYTYPE *)&lng);
        !            76:                                }
        !            77:                                break;
        !            78:                        }
        !            79:                }
        !            80:        }
        !            81:        printeol();
        !            82: }
        !            83: 
        !            84: printatt(type, length, value)
        !            85: char                   type;
        !            86: register int           length;
        !            87: register ANYTYPE       *value;
        !            88: {
        !            89:        char            buf[MAXFIELD];
        !            90:        ANYTYPE         valbuf;
        !            91:        double          dbl;
        !            92:        float           flt;
        !            93:        extern char     *iocv();
        !            94:        extern  char    *locv();
        !            95:        extern HDRINFO  *Hdrptr;
        !            96:        extern HDRINFO  *Fieldwidth;
        !            97:        extern int      Hdr;
        !            98:        register char   *p;
        !            99: 
        !           100:        putc(Out_arg.coldelim, stdout);
        !           101:        switch (type)
        !           102:        {
        !           103:          case INT:
        !           104:                switch (length)
        !           105:                {
        !           106:                  case 1:
        !           107:                        printfatt(Out_arg.i1width, iocv(value->i1type));
        !           108:                        break;
        !           109: 
        !           110:                  case 2:
        !           111:                        printfatt(Out_arg.i2width, iocv(value->i2type));
        !           112:                        break;
        !           113: 
        !           114:                  case 4:
        !           115:                        printfatt(Out_arg.i4width, locv(value->i4type));
        !           116:                        break;
        !           117: 
        !           118:                  default:
        !           119:                        syserr("printatt: i%d", length);
        !           120:                }
        !           121:                return (0);
        !           122: 
        !           123:          case FLOAT:
        !           124:                switch (length)
        !           125:                {
        !           126:                  case 4:
        !           127:                        ftoa(value->f4type, buf, Out_arg.f4width, Out_arg.f4prec, Out_arg.f4style);
        !           128:                        printfatt(Out_arg.f4width, buf);
        !           129:                        break;
        !           130: 
        !           131:                  case 8:
        !           132:                        dbl = value->f8type;
        !           133: 
        !           134:                        ftoa(dbl, (char *)buf, (int)Out_arg.f8width,(int) Out_arg.f8prec, (char)Out_arg.f8style);
        !           135:                        printfatt(Out_arg.f8width, buf);
        !           136:                        break;
        !           137: 
        !           138:                  default:
        !           139:                        syserr("printatt: f%d", length);
        !           140:                }
        !           141:                return (0);
        !           142: 
        !           143:          case CHAR:
        !           144:                length &= I1MASK;
        !           145:                if (Hdr)
        !           146:                {
        !           147:                        if (length > Fieldwidth->len)
        !           148:                                length = Fieldwidth->len;
        !           149:                }
        !           150:                fwrite(value, 1, length, stdout);
        !           151:                if (Hdr)
        !           152:                {
        !           153:                        if ((length = Fieldwidth->len - length) > 0)
        !           154:                                while (length--)
        !           155:                                        putc(' ', stdout);
        !           156:                        if ((length = Out_arg.c0width - Fieldwidth->len) > 0)
        !           157:                                while (length--)
        !           158:                                        putc(' ', stdout);
        !           159:                Fieldwidth = Fieldwidth->next;
        !           160:                if (Fieldwidth == NULL)
        !           161:                        Fieldwidth = Hdrptr;
        !           162:                }
        !           163:                else
        !           164:                {
        !           165:                        if ((length = Out_arg.c0width - length) > 0)
        !           166:                                while (length--)
        !           167:                                        putc(' ', stdout);
        !           168:                }
        !           169:                return (0);
        !           170: 
        !           171:          case BINARY:
        !           172:                length &= I1MASK;
        !           173:                p = (char *) value;
        !           174:                while (length--)
        !           175:                        xputchar(*p++);
        !           176:                return (0);
        !           177: 
        !           178:          default:
        !           179:                syserr("printatt type %d", type);
        !           180:        }
        !           181: }
        !           182: /*
        !           183: **  FORMATTED ATTRIBUTE PRINT
        !           184: **
        !           185: **     Attribute 'value' is printed.  It is type 'type' and has a
        !           186: **     field width of 'width'.
        !           187: */
        !           188: 
        !           189: printfatt(width, value)
        !           190: int    width;
        !           191: char   *value;
        !           192: {
        !           193:        register char   *p;
        !           194:        register int    w;
        !           195:        register int    v;
        !           196: 
        !           197:        w = width;
        !           198:        p = value;
        !           199:        v = length(p);
        !           200: 
        !           201:        if (v > w)
        !           202:        {
        !           203:                /* field overflow */
        !           204:                while (w--)
        !           205:                        putc('*', stdout);
        !           206:                return;
        !           207:        }
        !           208: 
        !           209:        /* output the field */
        !           210:        for (w -= v; w > 0; w--)
        !           211:                putc(' ', stdout);
        !           212:        fwrite(p, 1, v, stdout);
        !           213: }
        !           214: 
        !           215: 
        !           216: printeol()
        !           217: {
        !           218:        putc(Out_arg.coldelim, stdout);
        !           219:        putc('\n', stdout);
        !           220: }
        !           221: 
        !           222: printeh()
        !           223: {
        !           224:        register int            i;
        !           225: 
        !           226:        putc(Out_arg.coldelim, stdout);
        !           227:        for (i = 1; i < Printlgth; i++)
        !           228:                putc('-', stdout);
        !           229:        printeol();
        !           230: }
        !           231: 
        !           232: printhdr(type, length, value)
        !           233: char           type;
        !           234: register int   length;
        !           235: register char  *value;
        !           236: {
        !           237:        register int    i;
        !           238:        char            c;
        !           239: 
        !           240:        switch (type)
        !           241:        {
        !           242:          case INT:
        !           243:                switch (length)
        !           244:                {
        !           245:                  case 1:
        !           246:                        length = Out_arg.i1width;
        !           247:                        break;
        !           248: 
        !           249:                  case 2:
        !           250:                        length = Out_arg.i2width;
        !           251:                        break;
        !           252: 
        !           253:                  case 4:
        !           254:                        length = Out_arg.i4width;
        !           255:                        break;
        !           256: 
        !           257:                  default:
        !           258:                        syserr("printhdr: i%d", length);
        !           259:                }
        !           260:                break;
        !           261: 
        !           262:          case FLOAT:
        !           263:                switch (length)
        !           264:                {
        !           265:                  case 4:
        !           266:                        length = Out_arg.f4width;
        !           267:                        break;
        !           268: 
        !           269:                  case 8:
        !           270:                        length = Out_arg.f8width;
        !           271:                        break;
        !           272: 
        !           273:                  default:
        !           274:                        syserr("printhdr: f%d", length);
        !           275:                }
        !           276:                break;
        !           277: 
        !           278:          case CHAR:
        !           279:                length &= I1MASK;
        !           280:                if (length < Out_arg.c0width)
        !           281:                        length = Out_arg.c0width;
        !           282:                break;
        !           283: 
        !           284:          default:
        !           285:                syserr("printhdr: type 0%o", type);
        !           286:        }
        !           287: 
        !           288:        putc(Out_arg.coldelim, stdout);
        !           289:        for (i = 0; i < length && i < MAXNAME; i++)
        !           290:                if (c = *value++)
        !           291:                        putc(c, stdout);
        !           292:                else
        !           293:                        break;
        !           294: 
        !           295:        for ( ; i < length; i++)
        !           296:                putc(' ', stdout);
        !           297: 
        !           298:        Printlgth += length + 1;
        !           299: }
        !           300: 
        !           301: beginhdr()
        !           302: {
        !           303:        Printlgth = 0;
        !           304:        putchar('\n');
        !           305: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.