From b4497ed151bb72b339cf38e50f49d19a6bcb1f5c Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Thu, 14 May 1981 22:19:53 -0800 Subject: [PATCH] date and time created 81/05/14 15:19:53 by root SCCS-vsn: old/adb/adb.vax/output.c 4.1 --- usr/src/old/adb/adb.vax/output.c | 404 +++++++++++++++++++++++++++++++ 1 file changed, 404 insertions(+) create mode 100644 usr/src/old/adb/adb.vax/output.c diff --git a/usr/src/old/adb/adb.vax/output.c b/usr/src/old/adb/adb.vax/output.c new file mode 100644 index 0000000000..58cfb1aa6f --- /dev/null +++ b/usr/src/old/adb/adb.vax/output.c @@ -0,0 +1,404 @@ +# +/* + * + * UNIX debugger + * + */ + +#include "defs.h" +static char sccsid[] = "@(#)output.c 4.1 %G%"; +#include + + +INT mkfault; +INT infile; +INT outfile = 1; +L_INT maxpos; +L_INT maxoff; +INT radix = 16; + +CHAR printbuf[MAXLIN]; +CHAR *printptr = printbuf; +CHAR *digitptr; +MSG TOODEEP; + + +eqstr(s1, s2) + REG STRING s1, s2; +{ + REG STRING es1; + WHILE *s1++ == *s2 + DO IF *s2++ == 0 + THEN return(1); + FI + OD + return(0); +} + +length(s) + REG STRING s; +{ + INT n = 0; + WHILE *s++ DO n++; OD + return(n); +} + +printc(c) + CHAR c; +{ + CHAR d; + STRING q; + INT posn, tabs, p; + + IF mkfault + THEN return; + ELIF (*printptr=c)==EOR + THEN tabs=0; posn=0; q=printbuf; + FOR p=0; p0 DO *q++=TB; tabs--; OD + WHILE posn>0 DO *q++=SP; posn--; OD + *q++=d; + FI + OD + *q++=EOR; +#ifdef EDDT + printptr=printbuf; do putchar(*printptr++); while (printptr0 THEN decpt--; FI + *digitptr++ = '.'; + WHILE *s ANDF prec-- DO *digitptr++ = *s++; OD + WHILE *--digitptr=='0' DONE + digitptr += (digitptr-digits>=3 ? 1 : 2); + IF decpt + THEN *digitptr++ = 'e'; printnum(decpt,'d',10); + FI + s=0; prec = -1; break; +#endif +#endif + case 'm': + vptr--; break; + case 'M': + width=x; break; + case 'T': + case 't': + IF c=='T' + THEN width=x; +#ifndef vax + ELSE vptr--; +#else + ELSE dptr--; +#endif + FI + IF width + THEN width -= charpos()%width; + FI + break; + default: +#ifndef vax + printc(c); vptr--; +#else + printc(c); dptr--; +#endif + } + + IF s==0 + THEN *digitptr=0; s=digits; + FI + n=length(s); + n=(prec=0 ? prec : n); + width -= n; + IF adj=='r' + THEN WHILE width-- > 0 + DO printc(SP); OD + FI + WHILE n-- DO printc(*s++); OD + WHILE width-- > 0 DO printc(SP); OD + digitptr=digits; + FI + OD +} + +printdate(tvec) + L_INT tvec; +{ + REG INT i; + REG STRING timeptr; +#ifndef EDDT + timeptr = ctime(&tvec); +#else + timeptr="????????????????????????"; +#endif + FOR i=20; i<24; i++ DO *digitptr++ = *(timeptr+i); OD + FOR i=3; i<19; i++ DO *digitptr++ = *(timeptr+i); OD +} /*printdate*/ + +prints(s) +char *s; +{ printf("%s",s); +} + +newline() +{ + printc(EOR); +} + +convert(cp) +REG STRING *cp; +{ + REG CHAR c; + INT n; + n=0; + WHILE ((c = *(*cp)++)>='0') ANDF (c<='9') DO n=n*10+c-'0'; OD + (*cp)--; + return(n); +} + +printnum(n,fmat,base) + REG INT n; +{ + REG CHAR k; + REG INT *dptr; + INT digs[15]; + dptr=digs; + IF n<0 ANDF fmat=='d' THEN n = -n; *digitptr++ = '-'; FI + n &= 0xffff; + WHILE n + DO *dptr++ = ((POS)(n&0xffff))%base; + n=((POS)(n&0xffff))/base; + OD + IF dptr==digs THEN *dptr++=0; FI + WHILE dptr!=digs + DO k = *--dptr; + *digitptr++ = (k+(k<=9 ? '0' : 'a'-10)); + OD +} + +printoct(o,s) + L_INT o; + INT s; +{ + INT i; + L_INT po = o; + CHAR digs[12]; + + IF s + THEN IF po<0 + THEN po = -po; *digitptr++='-'; + ELSE IF s>0 THEN *digitptr++='+'; FI + FI + FI + FOR i=0;i<=11;i++ + DO digs[i] = po&7; po >>= 3; OD + digs[10] &= 03; digs[11]=0; + FOR i=11;i>=0;i-- + DO IF digs[i] THEN break; FI OD + FOR i++;i>=0;i-- + DO *digitptr++=digs[i]+'0'; OD +} + +#ifndef vax +printdbl(lx,ly,fmat,base) +INT lx, ly; char fmat; int base; +#else +printdbl(lxy,fmat,base) +L_INT lxy; char fmat; int base; +#endif +{ int digs[20]; int *dptr; char k; +#ifndef MULD2 + register char *cp1; + cp1=digs; if ((lxy&0xFFFF0000L)==0xFFFF0000L) {*cp1++='-'; lxy= -lxy;} + sprintf(cp1,base==16 ? "%X" : "%D",lxy); + cp1=digs; while (*digitptr++= *cp1++); --digitptr; +#else + L_REAL f ,g; long q; +#ifdef vax + INT lx,ly; + ly=lxy; lx=(lxy>>16)&0xFFFF; +#endif + dptr=digs; + IF fmat=='D' ORF fmat=='r' + THEN f=itol(lx,ly); + IF f<0 THEN *digitptr++='-'; f = -f; FI + ELSE + IF lx==-1 + THEN *digitptr++='-'; f=leng(-ly); + ELSE f=leng(lx); f *= itol(1,0); f += leng(ly); + FI + IF fmat=='x' THEN *digitptr++='#'; FI + FI + WHILE f + DO q=f/base; g=q; + *dptr++ = f-g*base; + f=q; + OD + IF dptr==digs ORF dptr[-1]>9 THEN *dptr++=0; FI + WHILE dptr!=digs + DO k = *--dptr; + *digitptr++ = (k+(k<=9 ? '0' : 'a'-10)); + OD +#endif +} + +#define MAXIFD 5 +struct { + int fd; + int r9; +} istack[MAXIFD]; +int ifiledepth; + +iclose(stack, err) +{ + IF err + THEN IF infile + THEN close(infile); infile=0; + FI + WHILE --ifiledepth >= 0 + DO IF istack[ifiledepth].fd + THEN close(istack[ifiledepth].fd); + FI + OD + ifiledepth = 0; + ELIF stack == 0 + THEN IF infile + THEN close(infile); infile=0; + FI + ELIF stack > 0 + THEN IF ifiledepth >= MAXIFD + THEN error(TOODEEP); + FI + istack[ifiledepth].fd = infile; + istack[ifiledepth].r9 = var[9]; + ifiledepth++; + infile = 0; + ELSE IF infile + THEN close(infile); infile=0; + FI + IF ifiledepth > 0 + THEN infile = istack[--ifiledepth].fd; + var[9] = istack[ifiledepth].r9; + FI + FI +} + +oclose() +{ + IF outfile!=1 + THEN flushbuf(); close(outfile); outfile=1; + FI +} + +endline() +{ + + if (maxpos <= charpos()) + printf("\n"); +} -- 2.20.1