diff options
Diffstat (limited to 'crypto/heimdal/lib/roken/snprintf.c')
| -rw-r--r-- | crypto/heimdal/lib/roken/snprintf.c | 49 |
1 files changed, 26 insertions, 23 deletions
diff --git a/crypto/heimdal/lib/roken/snprintf.c b/crypto/heimdal/lib/roken/snprintf.c index 4f69e66f43a7..205dc5891ade 100644 --- a/crypto/heimdal/lib/roken/snprintf.c +++ b/crypto/heimdal/lib/roken/snprintf.c @@ -33,7 +33,7 @@ #ifdef HAVE_CONFIG_H #include <config.h> -RCSID("$Id: snprintf.c,v 1.25 2000/02/16 01:38:52 assar Exp $"); +RCSID("$Id: snprintf.c,v 1.28 2000/12/15 14:04:42 joda Exp $"); #endif #include <stdio.h> #include <stdarg.h> @@ -214,28 +214,31 @@ append_string (struct state *state, int prec, int flags) { - if(prec != -1) - width -= prec; - else - width -= strlen((char *)arg); - if(!(flags & minus_flag)) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - if (prec != -1) { - while (*arg && prec--) - if ((*state->append_char) (state, *arg++)) - return 1; - } else { - while (*arg) - if ((*state->append_char) (state, *arg++)) - return 1; - } - if(flags & minus_flag) - while(width-- > 0) - if((*state->append_char) (state, ' ')) - return 1; - return 0; + if(arg == NULL) + arg = (unsigned char*)"(null)"; + + if(prec != -1) + width -= prec; + else + width -= strlen((char *)arg); + if(!(flags & minus_flag)) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + if (prec != -1) { + while (*arg && prec--) + if ((*state->append_char) (state, *arg++)) + return 1; + } else { + while (*arg) + if ((*state->append_char) (state, *arg++)) + return 1; + } + if(flags & minus_flag) + while(width-- > 0) + if((*state->append_char) (state, ' ')) + return 1; + return 0; } static int |
