diff --git a/WEGA/contrib/ingres/dbs/src/iutil/printup.c b/WEGA/contrib/ingres/dbs/src/iutil/printup.c new file mode 100644 index 0000000..1c279ad --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/iutil/printup.c @@ -0,0 +1,284 @@ +# include +# include "gen.h" +# include "../h/dbs.h" +# include "../h/aux.h" +# include "../h/access.h" +# include "../h/symbol.h" + +# define PAGELGTH 56 + +static int AAprlength; +extern struct out_arg AAout_arg; + +AAprtup(d, tuple) +DESC *d; +char *tuple; +{ + register char *ftype; + register char *flen; + register short *foff; + register int i; + register int type; + register int off; + + ftype = &d->relfrmt[1]; + flen = &d->relfrml[1]; + foff = &d->reloff[1]; + i = d->reldum.relatts; + + /* If relation is S_BINARY then print char fields escaped */ + if (d->reldum.relstat & S_BINARY) + while (i--) + { + off = *foff++; + AApratt((type = *ftype++) == CHAR? BINARY: type, *flen++, &tuple[off]); + } + else + while (i--) + AApratt(*ftype++, *flen++, &tuple[off = *foff++]); + AApreol(); +} + + +AAprkey(d, tuple) +DESC *d; +char *tuple; +{ + register char *fgiven; + register char *ftype; + register char *flen; + register short *foff; + register int i; + register int off; + + fgiven = &d->relgiven[1]; + ftype = &d->relfrmt[1]; + flen = &d->relfrml[1]; + foff = &d->reloff[1]; + for (i = d->reldum.relatts; i; --i, ftype++, flen++, foff++) + if (*fgiven++) + { + off = *foff; + AApratt(*ftype, *flen, &tuple[off]); + } + AApreol(); +} + + +AApratt(type, length, value1) +int type; +register int length; +register char *value1; +{ + register char *value; + register int i; + char valbuf[sizeof (double)]; + char buf[MAXFIELD]; + extern char *AA_iocv(); + extern char *AA_locv(); + + putchar(AAout_arg.coldelim); + switch (type) + { + case INT: + value = valbuf; + AAbmove(value1, value, length); + switch (length) + { + case sizeof (char): + AAprfatt(AAout_arg.i1width, AA_iocv(ctoi(((I1TYPE *) value)->i1type))); + break; + + case sizeof (short): + AAprfatt(AAout_arg.i2width, AA_iocv(((I2TYPE *) value)->i2type)); + break; + + case sizeof (long): + AAprfatt(AAout_arg.i4width, AA_locv(((I4TYPE *) value)->i4type)); + break; + + default: + AAsyserr(15019, length); + } + return (0); + + case FLOAT: + value = valbuf; + AAbmove(value1, value, length); + switch (length) + { +# ifndef NO_F4 + case sizeof (float): + AA_ftoa(((F4TYPE *) value)->f4type, buf, AAout_arg.f4width, AAout_arg.f4prec, AAout_arg.f4style); + AAprfatt(AAout_arg.f4width, buf); + break; +# endif + + case sizeof (double): + AA_ftoa(((F8TYPE *) value)->f8type, buf, AAout_arg.f8width, AAout_arg.f8prec, AAout_arg.f8style); + AAprfatt(AAout_arg.f8width, buf); + break; + + default: + AAsyserr(15020, length); + } + return (0); + + case CHAR: + length = ctou(length); +# ifdef FWRITE + fwrite(value1, 1, length, stdout); +# else + for (i = length; i > 0; i--, value1++) + putchar(*value1); +# endif + if ((length = AAout_arg.c0width - length) > 0) + while (length--) + putchar(' '); + return (0); + + case BINARY: + length = ctou(length); + value = value1; + while (length--) + AAxputchar(*value++); + return (0); + + default: + AAsyserr(15021, type); + } + /*NOTREACHED*/ +} + + +/* +** FORMATTED ATTRIBUTE PRINT +** +** Attribute 'value' is printed. It is type 'type' and has a +** field width of 'width'. +*/ +AAprfatt(w, p) +register int w; +register char *p; +{ + register int v; + + if ((v = AAlength(p)) > w) + { + /* field overflow */ + while (w--) + putchar('*'); + return; + } + + /* output the field */ + for (w -= v; w > 0; w--) + putchar(' '); +# ifdef FWRITE + fwrite(p, 1, v, stdout); +# else + for ( ; v > 0; v--, p++) + putchar(*p); +# endif +} + + +AApreol() +{ + putchar(AAout_arg.coldelim); + putchar('\n'); + fflush(stdout); +} + + +AAendhdr() +{ + register int i; + register int delim; + + putchar(AAout_arg.coldelim); + delim = AAout_arg.linedelim; + for (i = 1; i < AAprlength; i++) + putchar(delim); + AApreol(); +} + + +AAprhdr(type, length, value) +int type; +register int length; +register char *value; +{ + register int i; + register int c; + + length = ctou(length); + + switch (type) + { + case INT: + switch (length) + { + case sizeof (char): + length = AAout_arg.i1width; + break; + + case sizeof (short): + length = AAout_arg.i2width; + break; + + case sizeof (long): + length = AAout_arg.i4width; + break; + + default: + AAsyserr(15022, length); + } + break; + + case FLOAT: + switch (length) + { +# ifndef NO_F4 + case sizeof (float): + length = AAout_arg.f4width; + break; +# endif + + case sizeof (double): + length = AAout_arg.f8width; + break; + + default: + AAsyserr(15023, length); + } + break; + + case CHAR: + if (length < AAout_arg.c0width) + length = AAout_arg.c0width; + break; + + default: + AAsyserr(15024, type); + } + + putchar(AAout_arg.coldelim); + for (i = 0; i < length && i < MAXNAME; i++) + if (c = *value++) + putchar(c); + else + break; + + for ( ; i < length; i++) + putchar(' '); + + AAprlength += length + 1; +} + + +AAbgnhdr() +{ + AAprlength = 0; + putchar('\n'); +}