]> git.sur5r.net Git - bacula/bacula/commitdiff
Allow va_arg in Dmsg/Jmsg director plugin functions
authorEric Bollengier <eric@eb.homelinux.org>
Tue, 17 May 2011 17:43:09 +0000 (19:43 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:44:40 +0000 (14:44 +0200)
bacula/src/dird/dir_plugins.c
bacula/src/dird/dir_plugins.h

index 2c289a3be7f55ec7a1b735b72c8c8ae90c3e7180..1b579ac0b67ec57e00d467d4ca6065666a3efd52 100644 (file)
@@ -34,7 +34,7 @@
 #include "bacula.h"
 #include "dird.h"
 
-const int dbglvl = 0;
+const int dbglvl = 100;
 const char *plugin_type = "-dir.so";
 
 
@@ -43,9 +43,9 @@ static bRC baculaGetValue(bpContext *ctx, brVariable var, void *value);
 static bRC baculaSetValue(bpContext *ctx, bwVariable var, void *value);
 static bRC baculaRegisterEvents(bpContext *ctx, ...);
 static bRC baculaJobMsg(bpContext *ctx, const char *file, int line,
-  int type, utime_t mtime, const char *msg);
+                        int type, utime_t mtime, const char *fmt, ...);
 static bRC baculaDebugMsg(bpContext *ctx, const char *file, int line,
-  int level, const char *msg);
+                          int level, const char *fmt, ...);
 
 
 /* Bacula info */
@@ -403,18 +403,35 @@ static bRC baculaRegisterEvents(bpContext *ctx, ...)
 }
 
 static bRC baculaJobMsg(bpContext *ctx, const char *file, int line,
-  int type, utime_t mtime, const char *msg)
+                        int type, utime_t mtime, const char *fmt, ...)
 {
-   Dmsg5(dbglvl, "Job message: %s:%d type=%d time=%lld msg=%s\n",
-      file, line, type, mtime, msg);
+   va_list arg_ptr;
+   char buf[2000];
+   JCR *jcr;
+
+   if (ctx) {
+      jcr = (JCR *)ctx->bContext;
+   } else {
+      jcr = NULL;
+   }
+
+   va_start(arg_ptr, fmt);
+   bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
+   va_end(arg_ptr);
+   Jmsg(jcr, type, mtime, "%s", buf);
    return bRC_OK;
 }
 
 static bRC baculaDebugMsg(bpContext *ctx, const char *file, int line,
-  int level, const char *msg)
+                          int level, const char *fmt, ...)
 {
-   Dmsg4(dbglvl, "Debug message: %s:%d level=%d msg=%s\n",
-      file, line, level, msg);
+   va_list arg_ptr;
+   char buf[2000];
+
+   va_start(arg_ptr, fmt);
+   bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
+   va_end(arg_ptr);
+   d_msg(file, line, level, "%s", buf);
    return bRC_OK;
 }
 
index b1c572489d2b9989a8b000d929eadcafa0404262..1c22cf5b3a3234955ce98ca60bf2d606b5c45f05 100644 (file)
@@ -134,9 +134,9 @@ typedef struct s_baculaFuncs {
    bRC (*getBaculaValue)(bpContext *ctx, brVariable var, void *value);
    bRC (*setBaculaValue)(bpContext *ctx, bwVariable var, void *value);
    bRC (*JobMessage)(bpContext *ctx, const char *file, int line, 
-       int type, utime_t mtime, const char *msg);     
+                     int type, utime_t mtime, const char *fmt, ...);     
    bRC (*DebugMessage)(bpContext *ctx, const char *file, int line,
-       int level, const char *msg);
+                       int level, const char *fmt, ...);
 } bFuncs;
 
 /* Bacula Core Routines -- not used within a plugin */