SCCS-vsn: lib/libc/stdio/vfprintf.c 5.10
*/
#if defined(LIBC_SCCS) && !defined(lint)
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)vfprintf.c 5.9 (Berkeley) %G%";
+static char sccsid[] = "@(#)vfprintf.c 5.10 (Berkeley) %G%";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
#define MAXBUF 120
#define DEFPREC 6
#define MAXBUF 120
#define DEFPREC 6
-#define PUTC(ch, fd) {++cnt; putc(ch, fd);}
+#define PUTC(ch) {++cnt; putc(ch, fp);}
#define LONGINT 0x01
#define LONGDBL 0x02
#define LONGINT 0x01
#define LONGDBL 0x02
va_list argp;
register FILE *fp;
{
va_list argp;
register FILE *fp;
{
+ register int base, cnt;
+ register char *bp, *t;
register u_long reg_ulong;
register long reg_long;
register u_long reg_ulong;
register long reg_long;
- register int base;
- register char *digs, *bp, *t, padc;
- char argsize, *_cvt(), buf[MAXBUF];
- int cnt, n, ladjust, width, prec, size;
+ char argsize, padc, *_cvt(), *digs, buf[MAXBUF];
+ int n, ladjust, width, prec, size;
digs = "0123456789abcdef";
for (cnt = 0; *fmt; ++fmt) {
if (*fmt != '%') {
digs = "0123456789abcdef";
for (cnt = 0; *fmt; ++fmt) {
if (*fmt != '%') {
char ch;
ch = va_arg(argp, int);
char ch;
ch = va_arg(argp, int);
reg_ulong = reg_long;
}
if (printsign)
reg_ulong = reg_long;
}
if (printsign)
base = 10;
goto num1;
case 'e':
base = 10;
goto num1;
case 'e':
pbuf: size = bp - buf;
if (size < width && !ladjust)
do {
pbuf: size = bp - buf;
if (size < width && !ladjust)
do {
} while (--width > size);
for (t = buf; t < bp; ++t)
} while (--width > size);
for (t = buf; t < bp; ++t)
for (; width > size; --width)
for (; width > size; --width)
break;
case 'n':
*(va_arg(argp, int *)) = cnt;
break;
case 'n':
*(va_arg(argp, int *)) = cnt;
size = &buf[sizeof(buf) - 1] - bp;
if (size < --width && !ladjust)
do {
size = &buf[sizeof(buf) - 1] - bp;
if (size < --width && !ladjust)
do {
} while (--width > size);
} while (--width > size);
goto num2;
case 'p':
case 's':
goto num2;
case 'p':
case 's':
n++, bp++);
bp = savep;
while (n++ < width)
n++, bp++);
bp = savep;
while (n++ < width)
}
for (n = 0; *bp; ++bp) {
if (++n > prec && prec >= 0)
break;
}
for (n = 0; *bp; ++bp) {
if (++n > prec && prec >= 0)
break;
}
if (n < width && ladjust)
do {
}
if (n < width && ladjust)
do {
} while (++n < width);
break;
case 'u':
} while (++n < width);
break;
case 'u':
case 'x':
GETARG(reg_ulong);
if (alternate && reg_ulong) {
case 'x':
GETARG(reg_ulong);
if (alternate && reg_ulong) {
- PUTC('0', fp);
- PUTC(*fmt, fp);
+ PUTC('0');
+ PUTC(*fmt);
}
base = 16;
num1: bp = buf + sizeof(buf) - 1;
}
base = 16;
num1: bp = buf + sizeof(buf) - 1;
for (; size < prec; *bp-- = '0', ++size);
if (size < width && !ladjust)
do {
for (; size < prec; *bp-- = '0', ++size);
if (size < width && !ladjust)
do {
} while (--width > size);
num2: while (++bp != &buf[MAXBUF])
} while (--width > size);
num2: while (++bp != &buf[MAXBUF])
for (; width > size; --width)
for (; width > size; --width)
digs = "0123456789abcdef";
break;
case '\0': /* "%?" prints ?, unless ? is NULL */
return(ferror(fp) ? -1 : cnt);
default:
digs = "0123456789abcdef";
break;
case '\0': /* "%?" prints ?, unless ? is NULL */
return(ferror(fp) ? -1 : cnt);
default:
}
}
return(ferror(fp) ? -1 : cnt);
}
}
return(ferror(fp) ? -1 : cnt);