snprintf.c revision 132451
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__
16int snprintf(char *str, size_t n, const char *fmt, ...)
17#else
18int 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
46int
47vsnprintf(
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
61int snprintf_bs;
62#endif
63