Mercurial > hg > mlmmj
changeset 420:354fbcc687a4
log_oper is now varargs capable, which is much nicer.
author | mmj |
---|---|
date | Sat, 15 Jan 2005 02:37:18 +1100 |
parents | 90fe4ea4a2e3 |
children | 5388b1eb5ca9 |
files | ChangeLog include/log_oper.h src/log_oper.c |
diffstat | 3 files changed, 21 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Jan 14 19:07:04 2005 +1100 +++ b/ChangeLog Sat Jan 15 02:37:18 2005 +1100 @@ -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
--- a/include/log_oper.h Fri Jan 14 19:07:04 2005 +1100 +++ b/include/log_oper.h Sat Jan 15 02:37:18 2005 +1100 @@ -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 */
--- a/src/log_oper.c Fri Jan 14 19:07:04 2005 +1100 +++ b/src/log_oper.c Sat Jan 15 02:37:18 2005 +1100 @@ -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" @@ -38,12 +40,14 @@ #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 @@ 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);