xref: /freebsd/contrib/ntp/libntp/snprintf.c (revision 9c2daa00c2315f101948c7144d62af5d5fb515cf)
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 
139c2daa00SOllivier Robert #include "l_stdlib.h"
149c2daa00SOllivier Robert 
15224ba2bdSOllivier Robert #ifdef __STDC__
16224ba2bdSOllivier Robert int snprintf(char *str, size_t n, const char *fmt, ...)
17224ba2bdSOllivier Robert #else
18224ba2bdSOllivier Robert int snprintf(str, n, fmt, va_alist)
19224ba2bdSOllivier Robert 	char *str;
20224ba2bdSOllivier Robert 	size_t n;
21224ba2bdSOllivier Robert 	const char *fmt;
22224ba2bdSOllivier Robert 	va_dcl
23224ba2bdSOllivier Robert #endif
24224ba2bdSOllivier Robert {
25224ba2bdSOllivier Robert 	va_list ap;
26224ba2bdSOllivier Robert 	int rval;
27224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
28224ba2bdSOllivier Robert 	char *rp;
29224ba2bdSOllivier Robert #endif
30224ba2bdSOllivier Robert #ifdef __STDC__
31224ba2bdSOllivier Robert 	va_start(ap, fmt);
32224ba2bdSOllivier Robert #else
33224ba2bdSOllivier Robert 	va_start(ap);
34224ba2bdSOllivier Robert #endif
35224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
36224ba2bdSOllivier Robert 	rp = vsprintf(str, fmt, ap);
37224ba2bdSOllivier Robert 	va_end(ap);
38224ba2bdSOllivier Robert 	return (strlen(rp));
39224ba2bdSOllivier Robert #else
40224ba2bdSOllivier Robert 	rval = vsprintf(str, fmt, ap);
41224ba2bdSOllivier Robert 	va_end(ap);
42224ba2bdSOllivier Robert 	return (rval);
43224ba2bdSOllivier Robert #endif
44224ba2bdSOllivier Robert }
45224ba2bdSOllivier Robert 
46224ba2bdSOllivier Robert int
479c2daa00SOllivier Robert vsnprintf(
489c2daa00SOllivier Robert 	char *str,
499c2daa00SOllivier Robert 	size_t n,
509c2daa00SOllivier Robert 	const char *fmt,
519c2daa00SOllivier Robert 	va_list ap
529c2daa00SOllivier Robert 	)
53224ba2bdSOllivier Robert {
54224ba2bdSOllivier Robert #ifdef VSPRINTF_CHARSTAR
55224ba2bdSOllivier Robert 	return (strlen(vsprintf(str, fmt, ap)));
56224ba2bdSOllivier Robert #else
57224ba2bdSOllivier Robert 	return (vsprintf(str, fmt, ap));
58224ba2bdSOllivier Robert #endif
59224ba2bdSOllivier Robert }
60ce265a54SOllivier Robert #else
61ce265a54SOllivier Robert int snprintf_bs;
62ce265a54SOllivier Robert #endif
63