X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Futils.c;h=3ac1b60926d20014808dcaf708d59f6adb33ee1a;hb=a72f809b1dfe0857290a85b2af52279a05fe2f94;hp=44f2e73407c50d5fc89473dfe174be9323527185;hpb=7977da267649fee17261d0d163a12863f3534b57;p=ppp.git diff --git a/pppd/utils.c b/pppd/utils.c index 44f2e73..3ac1b60 100644 --- a/pppd/utils.c +++ b/pppd/utils.c @@ -28,7 +28,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define RCSID "$Id: utils.c,v 1.24 2004/11/04 10:02:26 paulus Exp $" +#define RCSID "$Id: utils.c,v 1.25 2008/06/03 12:06:37 paulus Exp $" #include #include @@ -68,8 +68,7 @@ extern char *strerror(); static void logit __P((int, char *, va_list)); static void log_write __P((int, char *)); static void vslp_printer __P((void *, char *, ...)); -static void format_packet __P((u_char *, int, void (*) (void *, char *, ...), - void *)); +static void format_packet __P((u_char *, int, printer_func, void *)); struct buffer_info { char *ptr; @@ -236,8 +235,8 @@ vslprintf(buf, buflen, fmt, args) base = 10; break; default: - *buf++ = '%'; --buflen; - *buf++ = 'l'; --buflen; + OUTCHAR('%'); + OUTCHAR('l'); --fmt; /* so %lz outputs %lz etc. */ continue; } @@ -287,19 +286,6 @@ vslprintf(buf, buflen, fmt, args) (ip >> 16) & 0xff, (ip >> 8) & 0xff, ip & 0xff); str = num; break; -#if 0 /* not used, and breaks on S/390, apparently */ - case 'r': - f = va_arg(args, char *); -#ifndef __powerpc__ - n = vslprintf(buf, buflen + 1, f, va_arg(args, va_list)); -#else - /* On the powerpc, a va_list is an array of 1 structure */ - n = vslprintf(buf, buflen + 1, f, va_arg(args, void *)); -#endif - buf += n; - buflen -= n; - continue; -#endif case 't': time(&t); str = ctime(&t); @@ -310,6 +296,8 @@ vslprintf(buf, buflen, fmt, args) case 'q': /* quoted string */ quoted = c == 'q'; p = va_arg(args, unsigned char *); + if (p == NULL) + p = (unsigned char *)""; if (fillch == '0' && prec >= 0) { n = prec; } else { @@ -475,7 +463,7 @@ static void format_packet(p, len, printer, arg) u_char *p; int len; - void (*printer) __P((void *, char *, ...)); + printer_func printer; void *arg; { int i, n; @@ -527,7 +515,7 @@ static int llevel; /* level for logging */ void init_pr_log(prefix, level) - char *prefix; + const char *prefix; int level; { linep = line; @@ -613,7 +601,7 @@ void print_string(p, len, printer, arg) char *p; int len; - void (*printer) __P((void *, char *, ...)); + printer_func printer; void *arg; { int c; @@ -637,7 +625,7 @@ print_string(p, len, printer, arg) printer(arg, "\\t"); break; default: - printer(arg, "\\%.3o", c); + printer(arg, "\\%.3o", (unsigned char) c); } } } @@ -653,10 +641,9 @@ logit(level, fmt, args) char *fmt; va_list args; { - int n; char buf[1024]; - n = vslprintf(buf, sizeof(buf), fmt, args); + vslprintf(buf, sizeof(buf), fmt, args); log_write(level, buf); }