xref: /freebsd/contrib/ntp/libntp/snprintf.c (revision ce265a549db8baf2b7fc2b171e9cc511a6d7552d)
1224ba2bdSOllivier Robert #include <config.h>
2224ba2bdSOllivier Robert 
3ce265a54SOllivier Robert #if !HAVE_SNPRINTF
4224ba2bdSOllivier Robert #include <sys/types.h>
5224ba2bdSOllivier Robert 
6224ba2bdSOllivier Robert #ifdef __STDC__
7224ba2bdSOllivier Robert #include <stdarg.h>
8224ba2bdSOllivier Robert #else
9224ba2bdSOllivier Robert #include <varargs.h>
10224ba2bdSOllivier Robert #endif
11224ba2bdSOllivier Robert #include <stdio.h>
12224ba2bdSOllivier Robert 
13224ba2bdSOllivier Robert #ifdef __STDC__
14224ba2bdSOllivier Robert int snprintf(char *str, size_t n, const char *fmt, ...)
15224ba2bdSOllivier Robert #else
16224ba2bdSOllivier Robert int snprintf(str, n, fmt, va_alist)
17224ba2bdSOllivier Robert 	char *str;
18224ba2bdSOllivier Robert 	size_t n;
19224ba2bdSOllivier Robert 	const char *fmt;
20224ba2bdSOllivier Robert 	va_dcl
21224ba2bdSOllivier Robert #endif
22224ba2bdSOllivier Robert {
23224ba2bdSOllivier Robert 	va_list ap;
24224ba2bdSOllivier Robert 	int rval;
25224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
26224ba2bdSOllivier Robert 	char *rp;
27224ba2bdSOllivier Robert #endif
28224ba2bdSOllivier Robert #ifdef __STDC__
29224ba2bdSOllivier Robert 	va_start(ap, fmt);
30224ba2bdSOllivier Robert #else
31224ba2bdSOllivier Robert 	va_start(ap);
32224ba2bdSOllivier Robert #endif
33224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
34224ba2bdSOllivier Robert 	rp = vsprintf(str, fmt, ap);
35224ba2bdSOllivier Robert 	va_end(ap);
36224ba2bdSOllivier Robert 	return (strlen(rp));
37224ba2bdSOllivier Robert #else
38224ba2bdSOllivier Robert 	rval = vsprintf(str, fmt, ap);
39224ba2bdSOllivier Robert 	va_end(ap);
40224ba2bdSOllivier Robert 	return (rval);
41224ba2bdSOllivier Robert #endif
42224ba2bdSOllivier Robert }
43224ba2bdSOllivier Robert 
44224ba2bdSOllivier Robert int
45224ba2bdSOllivier Robert vsnprintf(str, n, fmt, ap)
46224ba2bdSOllivier Robert 	char *str;
47224ba2bdSOllivier Robert 	size_t n;
48224ba2bdSOllivier Robert 	const char *fmt;
49224ba2bdSOllivier Robert 	va_list ap;
50224ba2bdSOllivier Robert {
51224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
52224ba2bdSOllivier Robert 	return (strlen(vsprintf(str, fmt, ap)));
53224ba2bdSOllivier Robert #else
54224ba2bdSOllivier Robert 	return (vsprintf(str, fmt, ap));
55224ba2bdSOllivier Robert #endif
56224ba2bdSOllivier Robert }
57ce265a54SOllivier Robert #else
58ce265a54SOllivier Robert int snprintf_bs;
59ce265a54SOllivier Robert #endif
60