X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3d6bd825eec79140483560eda4377278b1334ba2..82cfcd4391f9f6c748634bfd7b48a44f42e6a53d:/missing/snprintf.c diff --git a/missing/snprintf.c b/missing/snprintf.c index bada4721..dfff6ee0 100644 --- a/missing/snprintf.c +++ b/missing/snprintf.c @@ -2,22 +2,22 @@ * Copyright (c) 1995-1999 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * + * * 3. Neither the name of the Institute nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -31,17 +31,10 @@ * SUCH DAMAGE. */ -/* $Id: snprintf.c,v 1.4 2001-01-02 22:33:04 guy Exp $ */ - #ifdef HAVE_CONFIG_H #include #endif -#ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/missing/snprintf.c,v 1.4 2001-01-02 22:33:04 guy Exp $"; -#endif - #include #include #include @@ -49,7 +42,7 @@ static const char rcsid[] = #include #include -#include +#include "netdissect.h" enum format_flags { minus_flag = 1, @@ -74,25 +67,7 @@ struct state { /* XXX - methods */ }; -#ifndef HAVE_VSNPRINTF -static int -sn_reserve (struct state *state, size_t n) -{ - return state->s + n > state->theend; -} - -static int -sn_append_char (struct state *state, unsigned char c) -{ - if (sn_reserve (state, 1)) { - return 1; - } else { - *state->s++ = c; - return 0; - } -} -#endif - +#if 0 static int as_reserve (struct state *state, size_t n) { @@ -126,6 +101,7 @@ as_append_char (struct state *state, unsigned char c) return 0; } } +#endif static int append_number(struct state *state, @@ -212,7 +188,7 @@ append_number(struct state *state, state->s[-i-1] = state->s[-len+i]; state->s[-len+i] = c; } - + return 0; } @@ -256,13 +232,13 @@ append_char(struct state *state, while(!(flags & minus_flag) && --width > 0) if((*state->append_char) (state, ' ')) return 1; - + if((*state->append_char) (state, arg)) return 1; while((flags & minus_flag) && --width > 0) if((*state->append_char) (state, ' ')) return 1; - + return 0; } @@ -311,7 +287,7 @@ xyzprintf (struct state *state, const char *char_format, va_list ap) else break; } - + if((flags & space_flag) && (flags & plus_flag)) flags ^= space_flag; @@ -363,7 +339,7 @@ xyzprintf (struct state *state, const char *char_format, va_list ap) if (append_string(state, va_arg(ap, unsigned char*), width, - prec, + prec, flags)) return -1; break; @@ -435,7 +411,7 @@ xyzprintf (struct state *state, const char *char_format, va_list ap) break; } case 'n' : { - int *arg = va_arg(ap, int*); + int *arg = va_arg(ap, int *); *arg = state->s - state->str; break; } @@ -459,37 +435,7 @@ xyzprintf (struct state *state, const char *char_format, va_list ap) return 0; } -#ifndef HAVE_SNPRINTF -int -snprintf (char *str, size_t sz, const char *format, ...) -{ - va_list args; - int ret; - - va_start(args, format); - ret = vsnprintf (str, sz, format, args); - -#ifdef PARANOIA - { - int ret2; - char *tmp; - - tmp = malloc (sz); - if (tmp == NULL) - abort (); - - ret2 = vsprintf (tmp, format, args); - if (ret != ret2 || strcmp(str, tmp)) - abort (); - free (tmp); - } -#endif - - va_end(args); - return ret; -} -#endif - +#if 0 #ifndef HAVE_ASPRINTF int asprintf (char **ret, const char *format, ...) @@ -520,48 +466,9 @@ asprintf (char **ret, const char *format, ...) } #endif -#ifndef HAVE_ASNPRINTF -int -asnprintf (char **ret, size_t max_sz, const char *format, ...) -{ - va_list args; - int val; - - va_start(args, format); - val = vasnprintf (ret, max_sz, format, args); - -#ifdef PARANOIA - { - int ret2; - char *tmp; - tmp = malloc (val + 1); - if (tmp == NULL) - abort (); - - ret2 = vsprintf (tmp, format, args); - if (val != ret2 || strcmp(*ret, tmp)) - abort (); - free (tmp); - } -#endif - - va_end(args); - return val; -} -#endif - -#ifndef HAVE_VASPRINTF -int -vasprintf (char **ret, const char *format, va_list args) -{ - return vasnprintf (ret, 0, format, args); -} -#endif - - #ifndef HAVE_VASNPRINTF int -vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) +nd_vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) { int st; size_t len; @@ -600,29 +507,4 @@ vasnprintf (char **ret, size_t max_sz, const char *format, va_list args) } } #endif - -#ifndef HAVE_VSNPRINTF -int -vsnprintf (char *str, size_t sz, const char *format, va_list args) -{ - struct state state; - int ret; - unsigned char *ustr = (unsigned char *)str; - - state.max_sz = 0; - state.sz = sz; - state.str = ustr; - state.s = ustr; - state.theend = ustr + sz - 1; - state.append_char = sn_append_char; - state.reserve = sn_reserve; - - ret = xyzprintf (&state, format, args); - *state.s = '\0'; - if (ret) - return sz; - else - return state.s - state.str; -} #endif -