]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/restore.c
23Aug07
[bacula/bacula] / bacula / src / dird / restore.c
index cb6eed17cd970822a2fe4a24d141298a14bdcf8d..446aac6881def13ac00122b27169f393e67462d2 100644 (file)
@@ -7,8 +7,8 @@
    many others, a complete list can be found in the file AUTHORS.
    This program is Free Software; you can redistribute it and/or
    modify it under the terms of version two of the GNU General Public
-   License as published by the Free Software Foundation plus additions
-   that are listed in the file LICENSE.
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
 
    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -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);
@@ -293,7 +297,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
 "  Build OS:               %s %s %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
-"  Client:                 %s\n"
+"  Restore Client:         %s\n"
 "  Start time:             %s\n"
 "  End time:               %s\n"
 "  Files Expected:         %s\n"
@@ -308,7 +312,7 @@ void restore_cleanup(JCR *jcr, int TermCode)
         HOST_OS, DISTNAME, DISTVER,
         jcr->jr.JobId,
         jcr->jr.Job,
-        jcr->client->hdr.name,
+        jcr->client->name(),
         sdt,
         edt,
         edit_uint64_with_commas((uint64_t)jcr->ExpectedFiles, ec1),