Annotation of embedaddon/ntp/sntp/libopts/compat/snprintf.c, revision 1.1.1.1

1.1       misho       1: 
                      2: #ifndef HAVE_VPRINTF
                      3: #include "choke-me: no vprintf and no snprintf"
                      4: #endif
                      5: 
                      6: #if defined(HAVE_STDARG_H)
                      7: #  include <stdarg.h>
                      8: #  ifndef   VA_START
                      9: #    define VA_START(a, f)  va_start(a, f)
                     10: #    define VA_END(a)       va_end(a)
                     11: #  endif /* VA_START */
                     12: #  define SNV_USING_STDARG_H
                     13: 
                     14: #elif defined(HAVE_VARARGS_H)
                     15: #  include <varargs.h>
                     16: #  ifndef   VA_START
                     17: #    define VA_START(a, f) va_start(a)
                     18: #    define VA_END(a)    va_end(a)
                     19: #  endif /* VA_START */
                     20: #  undef  SNV_USING_STDARG_H
                     21: 
                     22: #else
                     23: #  include "must-have-stdarg-or-varargs"
                     24: #endif
                     25: 
                     26: static int
                     27: snprintf(char *str, size_t n, char const *fmt, ...)
                     28: {
                     29:     va_list ap;
                     30:     int rval;
                     31: 
                     32: #ifdef VSPRINTF_CHARSTAR
                     33:     char *rp;
                     34:     VA_START(ap, fmt);
                     35:     rp = vsprintf(str, fmt, ap);
                     36:     VA_END(ap);
                     37:     rval = strlen(rp);
                     38: 
                     39: #else
                     40:     VA_START(ap, fmt);
                     41:     rval = vsprintf(str, fmt, ap);
                     42:     VA_END(ap);
                     43: #endif
                     44: 
                     45:     if (rval > n) {
                     46:         fprintf(stderr, "snprintf buffer overrun %d > %d\n", rval, (int)n);
                     47:         abort();
                     48:     }
                     49:     return rval;
                     50: }
                     51: 
                     52: static int
                     53: vsnprintf( char *str, size_t n, char const *fmt, va_list ap )
                     54: {
                     55: #ifdef VSPRINTF_CHARSTAR
                     56:     return (strlen(vsprintf(str, fmt, ap)));
                     57: #else
                     58:     return (vsprintf(str, fmt, ap));
                     59: #endif
                     60: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>