xref: /netbsd-src/external/bsd/nvi/dist/clib/snprintf.c (revision dbd550ed1a6686d6600f748306f9cc03d8cd4c94)
1 #include "config.h"
2 
3 #include <sys/types.h>
4 
5 #include <stdio.h>
6 
7 #ifdef __STDC__
8 #include <stdarg.h>
9 #else
10 #include <varargs.h>
11 #endif
12 
13 /*
14  * PUBLIC: #ifndef HAVE_SNPRINTF
15  * PUBLIC: int snprintf __P((char *, size_t, const char *, ...));
16  * PUBLIC: #endif
17  */
18 int
19 #ifdef __STDC__
snprintf(char * str,size_t n,const char * fmt,...)20 snprintf(char *str, size_t n, const char *fmt, ...)
21 #else
22 snprintf(str, n, fmt, va_alist)
23 	char *str;
24 	size_t n;
25 	const char *fmt;
26 	va_dcl
27 #endif
28 {
29 	va_list ap;
30 	int rval;
31 #ifdef __STDC__
32 	va_start(ap, fmt);
33 #else
34 	va_start(ap);
35 #endif
36 #ifdef SPRINTF_RET_CHARPNT
37 	(void)vsprintf(str, fmt, ap);
38 	va_end(ap);
39 	return (strlen(str));
40 #else
41 	rval = vsprintf(str, fmt, ap);
42 	va_end(ap);
43 	return (rval);
44 #endif
45 }
46