chiark / gitweb /
logging: provide vslilog as well as slilog
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 12 Jun 2011 19:03:33 +0000 (20:03 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 19 Jun 2011 15:38:42 +0000 (16:38 +0100)
In general it is a mistake to provide a varargs function which takes a
format string, but not the corresponding function taking a va_list.

We implement slilog in terms of vslilog in the obvious way.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
secnet.h
util.c

index ede3ffc..2b913d9 100644 (file)
--- a/secnet.h
+++ b/secnet.h
@@ -324,9 +324,11 @@ struct log_if {
     log_msg_fn *log;
     log_vmsg_fn *vlog;
 };
     log_msg_fn *log;
     log_vmsg_fn *vlog;
 };
-/* (convenience function, defined in util.c) */
+/* (convenience functions, defined in util.c) */
 extern void slilog(struct log_if *lf, int class, const char *message, ...)
 FORMAT(printf,3,4);
 extern void slilog(struct log_if *lf, int class, const char *message, ...)
 FORMAT(printf,3,4);
+extern void vslilog(struct log_if *lf, int class, const char *message, va_list)
+FORMAT(printf,3,0);
 
 /* SITE interface */
 
 
 /* SITE interface */
 
diff --git a/util.c b/util.c
index 9a009dc..997979a 100644 (file)
--- a/util.c
+++ b/util.c
@@ -198,12 +198,17 @@ bool_t remove_hook(uint32_t phase, hook_fn *fn, void *state)
     return False;
 }
 
     return False;
 }
 
+void vslilog(struct log_if *lf, int priority, const char *message, va_list ap)
+{
+    lf->vlog(lf->st,priority,message,ap);
+}
+
 void slilog(struct log_if *lf, int priority, const char *message, ...)
 {
     va_list ap;
     
     va_start(ap,message);
 void slilog(struct log_if *lf, int priority, const char *message, ...)
 {
     va_list ap;
     
     va_start(ap,message);
-    lf->vlog(lf->st,priority,message,ap);
+    vslilog(lf,priority,message,ap);
     va_end(ap);
 }
 
     va_end(ap);
 }