diff options
author | Ollivier Robert <roberto@FreeBSD.org> | 2008-08-17 17:37:33 +0000 |
---|---|---|
committer | Ollivier Robert <roberto@FreeBSD.org> | 2008-08-17 17:37:33 +0000 |
commit | cce65f439697627afbccf5a67035a957bb4d784a (patch) | |
tree | 16d100fbc9dae63888d48b464e471ba0e5065193 /libntp/snprintf.c | |
parent | 8c24a1e0ffd629427f94da1b681600008030c41a (diff) |
Notes
Diffstat (limited to 'libntp/snprintf.c')
-rw-r--r-- | libntp/snprintf.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libntp/snprintf.c b/libntp/snprintf.c new file mode 100644 index 000000000000..7588b8483a0a --- /dev/null +++ b/libntp/snprintf.c @@ -0,0 +1,62 @@ +#include <config.h> + +#if !HAVE_SNPRINTF +#include <sys/types.h> + +#ifdef __STDC__ +#include <stdarg.h> +#else +#include <varargs.h> +#endif +#include <stdio.h> + +#include "l_stdlib.h" + +#ifdef __STDC__ +int snprintf(char *str, size_t n, const char *fmt, ...) +#else +int snprintf(str, n, fmt, va_alist) + char *str; + size_t n; + const char *fmt; + va_dcl +#endif +{ + va_list ap; + int rval; +#ifdef VSPRINTF_CHARSTAR + char *rp; +#endif +#ifdef __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif +#ifdef VSPRINTF_CHARSTAR + rp = vsprintf(str, fmt, ap); + va_end(ap); + return (strlen(rp)); +#else + rval = vsprintf(str, fmt, ap); + va_end(ap); + return (rval); +#endif +} + +int +vsnprintf( + char *str, + size_t n, + const char *fmt, + va_list ap + ) +{ +#ifdef VSPRINTF_CHARSTAR + return (strlen(vsprintf(str, fmt, ap))); +#else + return (vsprintf(str, fmt, ap)); +#endif +} +#else +int snprintf_bs; +#endif |