/*
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.
bool mod;
int spool_data;
bool spool_data_set;
+ int accurate;
+ bool accurate_set;
+ int ignoreduplicatecheck;
+ bool ignoreduplicatecheck_set;
/* Methods */
run_ctx() { memset(this, 0, sizeof(run_ctx));
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.
*/
rc.plugin_options = NULL;
}
-
if (rc.replace) {
jcr->replace = 0;
for (i=0; ReplaceOptions[i].name; i++) {
rc.cloned = false;
}
-
/* If pool changed, update migration write storage */
if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY) ||
(jcr->is_JobType(JT_BACKUP) && jcr->is_JobLevel(L_VIRTUAL_FULL))) {
"job", /* Used in a switch() */
"jobid", /* 1 */
"client", /* 2 */
- "fd",
+ "fd", /* 3 */
"fileset", /* 4 */
"level", /* 5 */
"storage", /* 6 */
"replace", /* 11 */
"when", /* 12 */
"priority", /* 13 */
- "yes", /* 14 -- if you change this change YES_POS too */
+ "yes", /* 14 -- if you change this change YES_POS too */
"verifyjob", /* 15 */
"files", /* 16 number of files to restore */
"catalog", /* 17 override catalog */
"pluginoptions", /* 25 */
"spooldata", /* 26 */
"comment", /* 27 */
- NULL};
+ "ignoreduplicatecheck", /* 28 */
+ "accurate", /* 29 */
+ NULL
+ };
#define YES_POS 14
rc.fileset_name = NULL;
rc.verify_job_name = NULL;
rc.previous_job_name = NULL;
- rc.spool_data_set = 0;
+ rc.accurate_set = false;
+ rc.spool_data_set = false;
+ rc.ignoreduplicatecheck = false;
rc.comment = NULL;
for (i=1; i<ua->argc; i++) {
rc.files = atoi(ua->argv[i]);
kw_ok = true;
break;
-
case 17: /* catalog */
rc.catalog_name = ua->argv[i];
kw_ok = true;
break;
-
case 18: /* since */
rc.since = ua->argv[i];
kw_ok = true;
break;
-
case 19: /* cloned */
rc. cloned = true;
kw_ok = true;
break;
-
case 20: /* write verify list output */
rc.verify_list = ua->argv[i];
kw_ok = true;
return false;
}
if (is_yesno(ua->argv[i], &rc.spool_data)) {
- rc.spool_data_set = 1;
+ rc.spool_data_set = true;
kw_ok = true;
} else {
ua->send_msg(_("Invalid spooldata flag.\n"));
case 27: /* comment */
rc.comment = ua->argv[i];
kw_ok = true;
+ break;
+ case 28: /* ignoreduplicatecheck */
+ if (rc.ignoreduplicatecheck_set) {
+ ua->send_msg(_("IgnoreDuplicateCheck flag specified twice.\n"));
+ return false;
+ }
+ if (is_yesno(ua->argv[i], &rc.ignoreduplicatecheck)) {
+ rc.ignoreduplicatecheck_set = true;
+ kw_ok = true;
+ } else {
+ 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;
}
}
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.store_name) {
rc.store->store = GetStoreResWithName(rc.store_name);
pm_strcpy(rc.store->store_source, _("command line"));
}
Dmsg1(800, "Using restore client=%s\n", rc.client->name());
-
if (rc.fileset_name) {
rc.fileset = GetFileSetResWithName(rc.fileset_name);
if (!rc.fileset) {