]> git.sur5r.net Git - bacula/bacula/commitdiff
Allow some plugin variables to be available during loadPlugin()
authorEric Bollengier <eric@eb.homelinux.org>
Sun, 7 Nov 2010 09:46:25 +0000 (10:46 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Fri, 12 Nov 2010 08:13:58 +0000 (09:13 +0100)
bacula/src/filed/fd_plugins.c

index 8fb472f8f6beec512ecde52ec54c0605a76379ae..493368000ed23a4156ae7a071e85caf0ca85d251 100644 (file)
@@ -951,24 +951,38 @@ static boffset_t my_plugin_blseek(BFILE *bfd, boffset_t offset, int whence)
 static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
 {
    JCR *jcr;
 static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
 {
    JCR *jcr;
-   if (!value || !ctx) {
+   if (!value) {
       return bRC_Error;
    }
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "bacula: baculaGetValue var=%d\n", var);
+
+   switch (var) {               /* General variables, no need of ctx */
+   case bVarFDName:
+      *((char **)value) = my_name;
+      break;
+   case bVarWorkingDir:
+      *(void **)value = me->working_directory;
+      break;
+   case bVarExePath:
+      *(char **)value = exepath;
+      break;
+   default:
+      break;
+   }
+
+   if (!ctx) {                  /* Other variables need context */
+      return bRC_Error;
+   }
+
    jcr = ((bacula_ctx *)ctx->bContext)->jcr;
    if (!jcr) {
       return bRC_Error;
    }
    jcr = ((bacula_ctx *)ctx->bContext)->jcr;
    if (!jcr) {
       return bRC_Error;
    }
-// Dmsg1(dbglvl, "Bacula: jcr=%p\n", jcr); 
+
    switch (var) {
    case bVarJobId:
       *((int *)value) = jcr->JobId;
       Dmsg1(dbglvl, "Bacula: return bVarJobId=%d\n", jcr->JobId);
       break;
    switch (var) {
    case bVarJobId:
       *((int *)value) = jcr->JobId;
       Dmsg1(dbglvl, "Bacula: return bVarJobId=%d\n", jcr->JobId);
       break;
-   case bVarFDName:
-      *((char **)value) = my_name;
-      Dmsg1(dbglvl, "Bacula: return my_name=%s\n", my_name);
-      break;
    case bVarLevel:
       *((int *)value) = jcr->getJobLevel();
       Dmsg1(dbglvl, "Bacula: return bVarJobLevel=%d\n", jcr->getJobLevel());
    case bVarLevel:
       *((int *)value) = jcr->getJobLevel();
       Dmsg1(dbglvl, "Bacula: return bVarJobLevel=%d\n", jcr->getJobLevel());
@@ -1015,17 +1029,16 @@ static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
        }
 #endif
        return bRC_Error;
        }
 #endif
        return bRC_Error;
-   case bVarWorkingDir:
-      *(void **)value = me->working_directory;
-      break;
    case bVarWhere:
       *(char **)value = jcr->where;
       break;
    case bVarRegexWhere:
       *(char **)value = jcr->RegexWhere;
       break;
    case bVarWhere:
       *(char **)value = jcr->where;
       break;
    case bVarRegexWhere:
       *(char **)value = jcr->RegexWhere;
       break;
+
+   case bVarFDName:             /* get warning with g++ if we missed one */
+   case bVarWorkingDir:
    case bVarExePath:
    case bVarExePath:
-      *(char **)value = exepath;
       break;
    }
    return bRC_OK;
       break;
    }
    return bRC_OK;