]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/restore.c
ebl Add comments
[bacula/bacula] / bacula / src / dird / restore.c
index cb6eed17cd970822a2fe4a24d141298a14bdcf8d..973c1ebb805740ae23e1ad7994ad37cf741b2a43 100644 (file)
@@ -51,7 +51,7 @@
 
 /* Commands sent to File daemon */
 static char restorecmd[]        = "restore replace=%c prelinks=%d where=%s\n";
-static char restorecmdR[] = "restore replace=%c prelinks=%d rwhere=%s\n";
+static char restorecmdR[] = "restore replace=%c prelinks=%d regexwhere=%s\n";
 static char storaddr[]   = "storage address=%s port=%d ssl=0\n";
 
 /* Responses received from File daemon */
@@ -173,7 +173,7 @@ bool do_restore(JCR *jcr)
    }
 
    /* Send restore command */
-   char replace, *where, *cmd;
+   char replace, *where, *cmd=NULL;
    char empty = '\0';
 
    if (jcr->replace != 0) {
@@ -183,22 +183,26 @@ bool do_restore(JCR *jcr)
    } else {
       replace = REPLACE_ALWAYS;       /* always replace */
    }
-   if (jcr->where) {
+   
+   where = ∅                   /* default */
+
+   if (jcr->RegexWhere) {
+      where = jcr->RegexWhere;             /* override */
+      cmd = restorecmdR;
+   } else if (jcr->job->RegexWhere) {
+      where = jcr->job->RegexWhere; /* no override take from job */
+      cmd = restorecmdR;
+
+   } else if (jcr->where) {
       where = jcr->where;             /* override */
+      cmd = restorecmd;
    } else if (jcr->job->RestoreWhere) {
       where = jcr->job->RestoreWhere; /* no override take from job */
-   } else {
-      where = ∅                 /* None */
-   }
+      cmd = restorecmd;
+   } 
    
    jcr->prefix_links = jcr->job->PrefixLinks;
 
-   if (jcr->where_use_regexp) {
-      cmd = restorecmdR;
-   } else {
-      cmd = restorecmd;
-   }
-
    bash_spaces(where);
    bnet_fsend(fd, cmd, replace, jcr->prefix_links, where);
    unbash_spaces(where);