xref: /freebsd/contrib/ntp/libntp/snprintf.c (revision 1e413cf93298b5b97441a21d9a50fdcd0ee9945e)
1 #include <config.h>
2 
3 #if !HAVE_SNPRINTF
4 #include <sys/types.h>
5 
6 #ifdef __STDC__
7 #include <stdarg.h>
8 #else
9 #include <varargs.h>
10 #endif
11 #include <stdio.h>
12 
13 #include "l_stdlib.h"
14 
15 #ifdef __STDC__
16 int snprintf(char *str, size_t n, const char *fmt, ...)
17 #else
18 int snprintf(str, n, fmt, va_alist)
19 	char *str;
20 	size_t n;
21 	const char *fmt;
22 	va_dcl
23 #endif
24 {
25 	va_list ap;
26 	int rval;
27 #ifdef VSPRINTF_CHARSTAR
28 	char *rp;
29 #endif
30 #ifdef __STDC__
31 	va_start(ap, fmt);
32 #else
33 	va_start(ap);
34 #endif
35 #ifdef VSPRINTF_CHARSTAR
36 	rp = vsprintf(str, fmt, ap);
37 	va_end(ap);
38 	return (strlen(rp));
39 #else
40 	rval = vsprintf(str, fmt, ap);
41 	va_end(ap);
42 	return (rval);
43 #endif
44 }
45 
46 int
47 vsnprintf(
48 	char *str,
49 	size_t n,
50 	const char *fmt,
51 	va_list ap
52 	)
53 {
54 #ifdef VSPRINTF_CHARSTAR
55 	return (strlen(vsprintf(str, fmt, ap)));
56 #else
57 	return (vsprintf(str, fmt, ap));
58 #endif
59 }
60 #else
61 int snprintf_bs;
62 #endif
63