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