--- researchv9/sys/boot/stand/prf.c 2018/04/24 17:21:59 1.1.1.1 +++ researchv9/sys/boot/stand/prf.c 2018/04/24 17:31:14 1.1.1.2 @@ -1,6 +1,4 @@ -/* - * @(#)prf.c 1.1 86/02/03 Copyright (c) 1985 by Sun Microsystems, Inc. - */ +/* prf.c 4.3 81/05/05 */ #include #include @@ -37,8 +35,8 @@ prf(fmt, adx) register u_int *adx; { register int b, c, i; - register char *s; - register int any; + char *s; + int any; loop: while ((c = *fmt++) != '%') { @@ -48,6 +46,7 @@ loop: } again: c = *fmt++; + /* THIS CODE IS VAX DEPENDENT IN HANDLING %l? AND %c */ switch (c) { case 'l': @@ -66,7 +65,9 @@ number: break; case 'c': b = *adx; - putchar(b); + for (i = 24; i >= 0; i -= 8) + if (c = (b >> i) & 0x7f) + putchar(c); break; case 'b': b = *adx++; @@ -105,8 +106,7 @@ number: * We don't use recursion to avoid deep kernel stacks. */ printn(n, b) - register u_long n; - register short b; + u_long n; { char prbuf[11]; register char *cp; @@ -134,3 +134,53 @@ putchar(c) (*romp->v_putchar)(c); } + +getchar() +{ + register c; + + while ((c = (*romp->v_mayget)()) == -1) + ; + if (c == '\r') + c = '\n'; + if (c == 0177 || c == '\b') { + putchar('\b'); + putchar(' '); + c = '\b'; + } + putchar(c); + return (c); +} + +gets(buf) + char *buf; +{ + register char *lp; + register c; + + lp = buf; + for (;;) { + c = getchar() & 0177; + store: + switch(c) { + case '\n': + case '\r': + c = '\n'; + *lp++ = '\0'; + return; + case '\b': + case '#': + lp--; + if (lp < buf) + lp = buf; + continue; + case '@': + case 'u'&037: + lp = buf; + putchar('\n'); + continue; + default: + *lp++ = c; + } + } +}