Annotation of 42BSD/ingres/source/iutil/printup.c, revision 1.1.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   7.1     2/5/81)
                      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: 
                     29: printup(d, tuple)
                     30: DESC   *d;
                     31: char   *tuple;
                     32: {
                     33:        register char   *ftype, *flen;
                     34:        register short  *foff;
                     35:        int             i, type;
                     36: 
                     37:        ftype = &d->relfrmt[1];
                     38:        flen = &d->relfrml[1];
                     39:        foff = &d->reloff[1];
                     40:        i = d->reldum.relatts;
                     41: 
                     42:        /* If relation is S_BINARY then print char fields escaped */
                     43:        if (d->reldum.relstat & S_BINARY)
                     44:        {
                     45:                while (i--)
                     46:                        printatt((type = *ftype++) == CHAR ? BINARY : type, *flen++, &tuple[*foff++]);
                     47:        }
                     48:        else
                     49:        {
                     50:                while (i--)
                     51:                        printatt(*ftype++, *flen++, &tuple[*foff++]);
                     52:        }
                     53:        printeol();
                     54: }
                     55: 
                     56: printatt(type, length, value)
                     57: char                   type;
                     58: register int           length;
                     59: register ANYTYPE       *value;
                     60: {
                     61:        char            buf[MAXFIELD];
                     62:        ANYTYPE         valbuf;
                     63:        extern char     *iocv();
                     64:        register char   *p;
                     65: 
                     66:        putc(Out_arg.coldelim, stdout);
                     67:        switch (type)
                     68:        {
                     69:          case INT:
                     70:                switch (length)
                     71:                {
                     72:                  case 1:
                     73:                        printfatt(Out_arg.i1width, iocv(value->i1type));
                     74:                        break;
                     75: 
                     76:                  case 2:
                     77:                        printfatt(Out_arg.i2width, iocv(value->i2type));
                     78:                        break;
                     79: 
                     80:                  case 4:
                     81:                        printfatt(Out_arg.i4width, locv(value->i4type));
                     82:                        break;
                     83: 
                     84:                  default:
                     85:                        syserr("printatt: i%d", length);
                     86:                }
                     87:                return (0);
                     88: 
                     89:          case FLOAT:
                     90:                switch (length)
                     91:                {
                     92:                  case 4:
                     93:                        ftoa(value->f4type, buf, Out_arg.f4width, Out_arg.f4prec, Out_arg.f4style);
                     94:                        printfatt(Out_arg.f4width, buf);
                     95:                        break;
                     96: 
                     97:                  case 8:
                     98:                        ftoa(value->f8type, buf, Out_arg.f8width, Out_arg.f8prec, Out_arg.f8style);
                     99:                        printfatt(Out_arg.f8width, buf);
                    100:                        break;
                    101: 
                    102:                  default:
                    103:                        syserr("printatt: f%d", length);
                    104:                }
                    105:                return (0);
                    106: 
                    107:          case CHAR:
                    108:                length &= 0377;
                    109:                fwrite(value, 1, length, stdout);
                    110:                if ((length = Out_arg.c0width - length) > 0)
                    111:                        while (length--)
                    112:                                putc(' ', stdout);
                    113:                return (0);
                    114: 
                    115:          case BINARY:
                    116:                length &= 0377;
                    117:                p = (char *) value;
                    118:                while (length--)
                    119:                        xputchar(*p++);
                    120:                return (0);
                    121: 
                    122:          default:
                    123:                syserr("printatt type %d", type);
                    124:        }
                    125: }
                    126: /*
                    127: **  FORMATTED ATTRIBUTE PRINT
                    128: **
                    129: **     Attribute 'value' is printed.  It is type 'type' and has a
                    130: **     field width of 'width'.
                    131: */
                    132: 
                    133: printfatt(width, value)
                    134: int    width;
                    135: char   *value;
                    136: {
                    137:        register char   *p;
                    138:        register int    w;
                    139:        register int    v;
                    140: 
                    141:        w = width;
                    142:        p = value;
                    143:        v = length(p);
                    144: 
                    145:        if (v > w)
                    146:        {
                    147:                /* field overflow */
                    148:                while (w--)
                    149:                        putc('*', stdout);
                    150:                return;
                    151:        }
                    152: 
                    153:        /* output the field */
                    154:        for (w -= v; w > 0; w--)
                    155:                putc(' ', stdout);
                    156:        fwrite(p, 1, v, stdout);
                    157: }
                    158: 
                    159: 
                    160: printeol()
                    161: {
                    162:        putc(Out_arg.coldelim, stdout);
                    163:        putc('\n', stdout);
                    164: }
                    165: 
                    166: printeh()
                    167: {
                    168:        register int            i;
                    169: 
                    170:        putc(Out_arg.coldelim, stdout);
                    171:        for (i = 1; i < Printlgth; i++)
                    172:                putc('-', stdout);
                    173:        printeol();
                    174: }
                    175: 
                    176: printhdr(type, length, value)
                    177: char           type;
                    178: register int   length;
                    179: register char  *value;
                    180: {
                    181:        register int    i;
                    182:        char            c;
                    183: 
                    184:        switch (type)
                    185:        {
                    186:          case INT:
                    187:                switch (length)
                    188:                {
                    189:                  case 1:
                    190:                        length = Out_arg.i1width;
                    191:                        break;
                    192: 
                    193:                  case 2:
                    194:                        length = Out_arg.i2width;
                    195:                        break;
                    196: 
                    197:                  case 4:
                    198:                        length = Out_arg.i4width;
                    199:                        break;
                    200: 
                    201:                  default:
                    202:                        syserr("printhdr: i%d", length);
                    203:                }
                    204:                break;
                    205: 
                    206:          case FLOAT:
                    207:                switch (length)
                    208:                {
                    209:                  case 4:
                    210:                        length = Out_arg.f4width;
                    211:                        break;
                    212: 
                    213:                  case 8:
                    214:                        length = Out_arg.f8width;
                    215:                        break;
                    216: 
                    217:                  default:
                    218:                        syserr("printhdr: f%d", length);
                    219:                }
                    220:                break;
                    221: 
                    222:          case CHAR:
                    223:                length &= 0377;
                    224:                if (length < Out_arg.c0width)
                    225:                        length = Out_arg.c0width;
                    226:                break;
                    227: 
                    228:          default:
                    229:                syserr("printhdr: type 0%o", type);
                    230:        }
                    231: 
                    232:        putc(Out_arg.coldelim, stdout);
                    233:        for (i = 0; i < length && i < MAXNAME; i++)
                    234:                if (c = *value++)
                    235:                        putc(c, stdout);
                    236:                else
                    237:                        break;
                    238: 
                    239:        for ( ; i < length; i++)
                    240:                putc(' ', stdout);
                    241: 
                    242:        Printlgth += length + 1;
                    243: }
                    244: 
                    245: beginhdr()
                    246: {
                    247:        Printlgth = 0;
                    248:        putchar('\n');
                    249: }

unix.superglobalmegacorp.com

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