projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bell 32V development
[unix-history]
/
usr
/
src
/
cmd
/
adb
/
output.c
diff --git
a/usr/src/cmd/adb/output.c
b/usr/src/cmd/adb/output.c
index
24e4893
..
ca45e38
100644
(file)
--- a/
usr/src/cmd/adb/output.c
+++ b/
usr/src/cmd/adb/output.c
@@
-6,15
+6,19
@@
*/
#include "defs.h"
*/
#include "defs.h"
+SCCSID(@(#)output.c 2.3);
+#include <stdio.h>
INT mkfault;
INT infile;
INT mkfault;
INT infile;
-INT outfile 1;
-INT maxpos;
+INT outfile = 1;
+L_INT maxpos;
+L_INT maxoff;
+INT radix = 16;
CHAR printbuf[MAXLIN];
CHAR printbuf[MAXLIN];
-CHAR *printptr printbuf;
+CHAR *printptr
=
printbuf;
CHAR *digitptr;
CHAR *digitptr;
@@
-32,9
+36,9
@@
eqstr(s1, s2)
}
length(s)
}
length(s)
-
STRING
s;
+
REG STRING
s;
{
{
- INT n 0;
+ INT n
=
0;
WHILE *s++ DO n++; OD
return(n);
}
WHILE *s++ DO n++; OD
return(n);
}
@@
-63,7
+67,11
@@
printc(c)
FI
OD
*q++=EOR;
FI
OD
*q++=EOR;
+#ifdef EDDT
+ printptr=printbuf; do putchar(*printptr++); while (printptr<q);
+#else
write(outfile,printbuf,q-printbuf);
write(outfile,printbuf,q-printbuf);
+#endif
printptr=printbuf;
ELIF c==TB
THEN *printptr++=SP;
printptr=printbuf;
ELIF c==TB
THEN *printptr++=SP;
@@
-97,7
+105,7
@@
printf(fmat,a1)
L_INT lx;
CHAR digits[64];
L_INT lx;
CHAR digits[64];
- fptr = fmat; vptr = &a1;
+ fptr = fmat;
dptr =
vptr = &a1;
WHILE c = *fptr++
DO IF c!='%'
WHILE c = *fptr++
DO IF c!='%'
@@
-106,7
+114,11
@@
printf(fmat,a1)
width=convert(&fptr);
IF *fptr=='.' THEN fptr++; prec=convert(&fptr); ELSE prec = -1; FI
digitptr=digits;
width=convert(&fptr);
IF *fptr=='.' THEN fptr++; prec=convert(&fptr); ELSE prec = -1; FI
digitptr=digits;
+#ifndef vax
dptr=rptr=vptr; lx = *dptr; x = *vptr++;
dptr=rptr=vptr; lx = *dptr; x = *vptr++;
+#else
+ rptr=dptr; x = shorten(lx = *dptr++);
+#endif
s=0;
switch (c = *fptr++) {
s=0;
switch (c = *fptr++) {
@@
-114,11
+126,23
@@
printf(fmat,a1)
case 'u':
printnum(x,c,10); break;
case 'o':
case 'u':
printnum(x,c,10); break;
case 'o':
+#ifndef vax
printoct(0,x,0); break;
printoct(0,x,0); break;
+#else
+ printoct(itol(0,x),0); break;
+#endif
case 'q':
lx=x; printoct(lx,-1); break;
case 'x':
case 'q':
lx=x; printoct(lx,-1); break;
case 'x':
+#ifndef vax
printdbl(0,x,c,16); break;
printdbl(0,x,c,16); break;
+#else
+ printdbl(itol(0,x),c,16); break;
+#endif
+ case 'r':
+ printdbl(lx=x,c,radix); break;
+ case 'R':
+ printdbl(lx,c,radix); vptr++; break;
case 'Y':
printdate(lx); vptr++; break;
case 'D':
case 'Y':
printdate(lx); vptr++; break;
case 'D':
@@
-133,9
+157,18
@@
printf(fmat,a1)
case 'c':
printc(x); break;
case 's':
case 'c':
printc(x); break;
case 's':
+#ifndef vax
s=x; break;
s=x; break;
+#else
+ s=lx; break;
+#endif
+#ifndef EDDT
case 'f':
case 'F':
case 'f':
case 'F':
+#ifdef vax
+ dptr++;
+ sprintf(s=digits,"%+.16e",*rptr,*(rptr+4)); prec= -1; break;
+#else
vptr += 7;
s=ecvt(*rptr, prec, &decpt, &n);
*digitptr++=(n?'-':'+');
vptr += 7;
s=ecvt(*rptr, prec, &decpt, &n);
*digitptr++=(n?'-':'+');
@@
-149,6
+182,8
@@
printf(fmat,a1)
THEN *digitptr++ = 'e'; printnum(decpt,'d',10);
FI
s=0; prec = -1; break;
THEN *digitptr++ = 'e'; printnum(decpt,'d',10);
FI
s=0; prec = -1; break;
+#endif
+#endif
case 'm':
vptr--; break;
case 'M':
case 'm':
vptr--; break;
case 'M':
@@
-157,14
+192,22
@@
printf(fmat,a1)
case 't':
IF c=='T'
THEN width=x;
case 't':
IF c=='T'
THEN width=x;
+#ifndef vax
ELSE vptr--;
ELSE vptr--;
+#else
+ ELSE dptr--;
+#endif
FI
IF width
THEN width -= charpos()%width;
FI
break;
default:
FI
IF width
THEN width -= charpos()%width;
FI
break;
default:
+#ifndef vax
printc(c); vptr--;
printc(c); vptr--;
+#else
+ printc(c); dptr--;
+#endif
}
IF s==0
}
IF s==0
@@
-189,7
+232,11
@@
printdate(tvec)
{
REG INT i;
REG STRING timeptr;
{
REG INT i;
REG STRING timeptr;
+#ifndef EDDT
timeptr = ctime(&tvec);
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*/
FOR i=20; i<24; i++ DO *digitptr++ = *(timeptr+i); OD
FOR i=3; i<19; i++ DO *digitptr++ = *(timeptr+i); OD
} /*printdate*/
@@
-249,7
+296,7
@@
printoct(o,s)
FI
FI
FOR i=0;i<=11;i++
FI
FI
FOR i=0;i<=11;i++
- DO digs[i] = po&7; po
=>>
3; OD
+ 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
digs[10] &= 03; digs[11]=0;
FOR i=11;i>=0;i--
DO IF digs[i] THEN break; FI OD
@@
-257,27
+304,47
@@
printoct(o,s)
DO *digitptr++=digs[i]+'0'; OD
}
DO *digitptr++=digs[i]+'0'; OD
}
+#ifndef vax
printdbl(lx,ly,fmat,base)
INT lx, ly; char fmat; int base;
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;
{ 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;
L_REAL f ,g; long q;
+#ifdef vax
+ INT lx,ly;
+ ly=lxy; lx=(lxy>>16)&0xFFFF;
+#endif
dptr=digs;
dptr=digs;
- IF fmat!='D'
- THEN f=leng(lx); f *= itol(1,0); f += leng(ly);
- IF fmat=='x' THEN *digitptr++='#'; FI
- ELSE f=itol(lx,ly);
+ IF fmat=='D' ORF fmat=='r'
+ THEN f=itol(lx,ly);
IF f<0 THEN *digitptr++='-'; f = -f; FI
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
FI
WHILE f
DO q=f/base; g=q;
*dptr++ = f-g*base;
f=q;
OD
- IF dptr==digs THEN *dptr++=0; FI
+ 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
WHILE dptr!=digs
DO k = *--dptr;
*digitptr++ = (k+(k<=9 ? '0' : 'a'-10));
OD
+#endif
}
iclose()
}
iclose()
@@
-296,7
+363,11
@@
oclose()
endline()
{
endline()
{
+#ifndef vax
IF charpos()>=maxpos
IF charpos()>=maxpos
+#else
+ IF maxpos<=charpos()
+#endif
THEN printf("\n");
FI
}
THEN printf("\n");
FI
}