]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/q9snprintf.c
5 #include "../lib/sstring.h"
6 #include "../lib/stringbuf.h"
7 #include "../core/error.h"
12 void q9vsnprintf(char *buf
, size_t size
, const char *format
, const char *args
, va_list ap
) {
16 char convbuf
[MAXARGS
][CONVBUF
];
29 for(i
=0;i
<MAXARGS
;i
++)
33 char *cb
= convbuf
[argno
++];
37 s
= va_arg(ap
, char *);
38 snprintf(cb
, CONVBUF
, "%s", s
);
42 snprintf(cb
, CONVBUF
, "%d", d
);
45 u
= va_arg(ap
, unsigned int);
46 snprintf(cb
, CONVBUF
, "%u", u
);
49 g
= va_arg(ap
, double);
50 snprintf(cb
, CONVBUF
, "%.1f", g
);
54 Error("chanserv", ERR_STOP
, "Bad format specifier '%c' supplied in q9vsnprintf, format: '%s'", *args
, format
);
63 for(p
=format
;*p
;p
++) {
65 if(!sbaddchar(&b
, *p
))
73 if(!sbaddchar(&b
, *p
))
96 c
= convbuf
[*p
- '0']; break;
98 c
= "(bad format specifier)";
113 void q9snprintf(char *buf
, size_t size
, const char *format
, const char *args
, ...) {
117 q9vsnprintf(buf
, size
, format
, args
, ap
);