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