]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
log_oper is now varargs capable, which is much nicer.
authormmj <none@none>
Fri, 14 Jan 2005 15:37:18 +0000 (02:37 +1100)
committermmj <none@none>
Fri, 14 Jan 2005 15:37:18 +0000 (02:37 +1100)
ChangeLog
include/log_oper.h
src/log_oper.c

index 58809fb4b583e198a55f454821a5aa8bd97f4ff0..39cc2521929212ea4c5ed96f65d62ead21abecd4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,4 @@
+ o Make log_oper() varargs capable, thanks Rob Holland
 1.1.1-RC1
  o Never discard anything from LISTDIR/queue/, let the admin be able to judge
  o Grab the lock when sending a mail to make sure noone does bad things
index e30ea456e2151ea5b02519772f229a5857ab20ed..a57d3c395fd31297b16fae6dd99f3b39280466cc 100644 (file)
@@ -24,6 +24,6 @@
 #ifndef LOG_OPER_H
 #define LOG_OPER_H
 
-int log_oper(const char *prefix, const char *basename, const char *str);
+int log_oper(const char *prefix, const char *basename, const char *fmt, ...);
 
 #endif /* LOG_OPER_H */
index 1fa6c82839564379e13200dcad966427d026d412..6953f518402a12f2f8e0302314e7af3ab720947e 100644 (file)
@@ -29,6 +29,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
 
 #include "mlmmj.h"
 #include "log_error.h"
 #include "wrappers.h"
 #include "memory.h"
 
-int log_oper(const char *prefix, const char *basename, const char *str)
+int log_oper(const char *prefix, const char *basename, const char *fmt, ...)
 {
        int fd;
-       char ct[26], *logstr, *logfilename, *tmp;
+       char ct[26], *logstr, *logfilename, *tmp, log_msg[256];
        struct stat st;
        time_t t;
+       va_list ap;
+       size_t i;
 
        logfilename = concatstr(2, prefix, basename);
        if(lstat(logfilename, &st) < 0 && errno != ENOENT) {
@@ -84,7 +88,19 @@ int log_oper(const char *prefix, const char *basename, const char *str)
                return -1;
        }
 
-       logstr = concatstr(4, ct, ":", str, "\n");
+       va_start(ap, fmt);
+       i = vsnprintf(log_msg, sizeof(log_msg), fmt, ap);
+       if(i < 0) {
+               va_end(ap);
+               log_error(LOG_ARGS, "Failed to format log message: %s", fmt);
+               return -1;
+       }
+       if(i > sizeof(log_msg))
+               log_error(LOG_ARGS, "Log message truncated");
+
+       va_end(ap);
+
+       logstr = concatstr(4, ct, " ", log_msg, "\n");
        if(writen(fd, logstr, strlen(logstr)) < 0)
                log_error(LOG_ARGS, "Could not write to %s", logfilename);