]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_run.c
Ensure that StorageId is updated after write
[bacula/bacula] / bacula / src / dird / ua_run.c
index af374c724d688d0b2e22cc7182bd27ccc42f729d..878c02971cd2c3242e6e68a9628a37f2c2a08ab8 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -61,6 +61,8 @@ public:
    bool mod;
    int spool_data;
    bool spool_data_set;
+   int accurate;
+   bool accurate_set;
    int ignoreduplicatecheck;
    bool ignoreduplicatecheck_set;
 
@@ -205,6 +207,25 @@ bail_out:
 int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
 {
    int i, opt;
+   
+   /* Some options are not available through the menu
+    * TODO: Add an advanced menu?
+    */
+   if (rc.spool_data_set) {
+      jcr->spool_data = rc.spool_data;
+   }
+
+   if (rc.accurate_set) {
+      jcr->accurate = rc.accurate;
+   }
+
+   /* Used by migration jobs that can have the same name,
+    * but can run at the same time
+    */
+   if (rc.ignoreduplicatecheck_set) {
+      jcr->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
+   }
+
    /*
     * At user request modify parameters of job to be run.
     */
@@ -1187,6 +1208,7 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
       "spooldata",                    /* 26 */
       "comment",                      /* 27 */
       "ignoreduplicatecheck",         /* 28 */
+      "accurate",                     /* 29 */
       NULL
    };
 
@@ -1201,6 +1223,7 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
    rc.fileset_name = NULL;
    rc.verify_job_name = NULL;
    rc.previous_job_name = NULL;
+   rc.accurate_set = false;
    rc.spool_data_set = false;
    rc.ignoreduplicatecheck = false;
    rc.comment = NULL;
@@ -1433,6 +1456,18 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
                   ua->send_msg(_("Invalid ignoreduplicatecheck flag.\n"));
                }
                break;
+            case 29: /* accurate */
+               if (rc.accurate_set) {
+                  ua->send_msg(_("Accurate flag specified twice.\n"));
+                  return false;
+               }
+               if (is_yesno(ua->argv[i], &rc.accurate)) {
+                  rc.accurate_set = true;
+                  kw_ok = true;
+               } else {
+                  ua->send_msg(_("Invalid accurate flag.\n"));
+               }
+               break;
             default:
                break;
             }
@@ -1517,16 +1552,6 @@ static bool scan_command_line_arguments(UAContext *ua, run_ctx &rc)
    }
    Dmsg1(100, "Using pool %s\n", rc.pool->name());
 
-   if (rc.spool_data_set) {
-      rc.job->spool_data = rc.spool_data;
-   }
-   Dmsg1(900, "Spooling data: %s\n", (rc.job->spool_data ? "Yes" : "No"));
-
-   if (rc.ignoreduplicatecheck) {
-      rc.job->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
-   }
-   Dmsg1(900, "Ignore Duplicate Job Check: %s\n", (rc.job->IgnoreDuplicateJobChecking ? "Yes" : "No"));
-
    if (rc.store_name) {
       rc.store->store = GetStoreResWithName(rc.store_name);
       pm_strcpy(rc.store->store_source, _("command line"));