]> jfr.im git - irc/quakenet/newserv.git/blobdiff - chanserv/q9snprintf.c
ident comparision should use strcmp
[irc/quakenet/newserv.git] / chanserv / q9snprintf.c
index 813b65295f43401f59a53284fe343f174cc48a56..d31c6979ee409a36cd7275d581fa9cedbf7b8f79 100644 (file)
@@ -2,9 +2,11 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include <string.h>
+#include <time.h>
 #include "../lib/sstring.h"
 #include "../lib/stringbuf.h"
 #include "../core/error.h"
+#include "chanserv_messages.h"
 
 #define MAXARGS 10
 #define CONVBUF 512
@@ -25,6 +27,7 @@ void q9vsnprintf(char *buf, size_t size, const char *format, const char *args, v
     char *s;
     double g;
     unsigned int u;
+    time_t t;
 
     for(i=0;i<MAXARGS;i++)
       convbuf[i][0] = '\0';
@@ -49,6 +52,10 @@ void q9vsnprintf(char *buf, size_t size, const char *format, const char *args, v
           g = va_arg(ap, double);
           snprintf(cb, CONVBUF, "%.1f", g);
           break;
+        case 'T':
+          t = va_arg(ap, time_t);
+          strftime(cb, 15, Q9_FORMAT_TIME, gmtime(&t));
+          break;
         default:
           /* calls exit(0) */
           Error("chanserv", ERR_STOP, "Bad format specifier '%c' supplied in q9vsnprintf, format: '%s'", *args, format);
@@ -56,9 +63,7 @@ void q9vsnprintf(char *buf, size_t size, const char *format, const char *args, v
     }
   }
 
-  b.buf = buf;
-  b.capacity = size;
-  b.len = 0;
+  sbinit(&b, buf, size);
 
   for(p=format;*p;p++) {
     if(*p != '$') {
@@ -102,7 +107,7 @@ void q9vsnprintf(char *buf, size_t size, const char *format, const char *args, v
         break;
   }
 
-  buf[b.len] = '\0';
+  sbterminate(&b);
 
   /* not required */
   /*