Annotation of embedaddon/ntp/sntp/libopts/compat/snprintf.c, revision 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>