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
{"run", store_alist_str, ITEM(res_job.run_cmds), 0, 0, 0},
/* Root of where to restore files */
{"where", store_dir, ITEM(res_job.RestoreWhere), 0, 0, 0},
- {"whereuseregexp", store_bool, ITEM(res_job.where_use_regexp), 0, 0, 0},
+ {"regexwhere", store_str, ITEM(res_job.RegexWhere), 0, 0, 0},
{"stripprefix", store_str, ITEM(res_job.strip_prefix), 0, 0, 0},
{"addprefix", store_str, ITEM(res_job.add_prefix), 0, 0, 0},
{"addsuffix", store_str, ITEM(res_job.add_suffix), 0, 0, 0},
sendit(sock, _(" --> "));
dump_resource(-R_SCHEDULE, (RES *)res->res_job.schedule, sendit, sock);
}
- if (res->res_job.RestoreWhere) {
- sendit(sock, _(" --> Where=%s\n"), NPRT(res->res_job.RestoreWhere));
+ if (res->res_job.RestoreWhere && !res->res_job.RegexWhere) {
+ sendit(sock, _(" --> Where=%s\n"), NPRT(res->res_job.RestoreWhere));
}
- if (res->res_job.where_use_regexp) {
- sendit(sock, _(" --> RWhere=%u\n"), res->res_job.where_use_regexp);
+ if (res->res_job.RegexWhere) {
+ sendit(sock, _(" --> RegexWhere=%s\n"), NPRT(res->res_job.RegexWhere));
}
if (res->res_job.RestoreBootstrap) {
sendit(sock, _(" --> Bootstrap=%s\n"), NPRT(res->res_job.RestoreBootstrap));
sendit(sock, _(" --> Target=%s\n"), NPRT(script->target));
sendit(sock, _(" --> RunOnSuccess=%u\n"), script->on_success);
sendit(sock, _(" --> RunOnFailure=%u\n"), script->on_failure);
- sendit(sock, _(" --> AbortJobOnError=%u\n"), script->abort_on_error);
+ sendit(sock, _(" --> FailJobOnError=%u\n"), script->fail_on_error);
sendit(sock, _(" --> RunWhen=%u\n"), script->when);
}
}
if (res->res_job.RestoreWhere) {
free(res->res_job.RestoreWhere);
}
+ if (res->res_job.RegexWhere) {
+ free(res->res_job.RegexWhere);
+ }
if (res->res_job.strip_prefix) {
free(res->res_job.strip_prefix);
}
res->res_job.jobdefs = res_all.res_job.jobdefs;
res->res_job.run_cmds = res_all.res_job.run_cmds;
res->res_job.RunScripts = res_all.res_job.RunScripts;
- if (res->res_job.strip_prefix ||
- res->res_job.add_suffix ||
- res->res_job.add_prefix)
- {
- if (res->res_job.RestoreWhere) {
- free(res->res_job.RestoreWhere);
- }
- int len = bregexp_get_build_where_size(res->res_job.strip_prefix,
- res->res_job.add_prefix,
- res->res_job.add_suffix);
- res->res_job.RestoreWhere = (char *) bmalloc (len * sizeof(char));
- bregexp_build_where(res->res_job.RestoreWhere, len,
- res->res_job.strip_prefix,
- res->res_job.add_prefix,
- res->res_job.add_suffix);
- res->res_job.where_use_regexp = true;
-
- /* TODO: test bregexp */
- }
+
+ /* TODO: JobDefs where/regexwhere doesn't work well (but this
+ * is not very useful)
+ * We have to set_bit(index, res_all.hdr.item_present);
+ * or something like that
+ */
+
+ /* we take RegexWhere before all other options */
+ if (!res->res_job.RegexWhere
+ &&
+ (res->res_job.strip_prefix ||
+ res->res_job.add_suffix ||
+ res->res_job.add_prefix))
+ {
+ int len = bregexp_get_build_where_size(res->res_job.strip_prefix,
+ res->res_job.add_prefix,
+ res->res_job.add_suffix);
+ res->res_job.RegexWhere = (char *) bmalloc (len * sizeof(char));
+ bregexp_build_where(res->res_job.RegexWhere, len,
+ res->res_job.strip_prefix,
+ res->res_job.add_prefix,
+ res->res_job.add_suffix);
+ /* TODO: test bregexp */
+ }
+
+ if (res->res_job.RegexWhere && res->res_job.RestoreWhere) {
+ free(res->res_job.RestoreWhere);
+ res->res_job.RestoreWhere = NULL;
+ }
+
break;
case R_COUNTER:
if ((res = (URES *)GetResWithName(R_COUNTER, res_all.res_counter.hdr.name)) == NULL) {
if (strcmp(item->name, "runbeforejob") == 0) {
script->when = SCRIPT_Before;
- script->abort_on_error = true;
+ script->fail_on_error = true;
script->set_target("");
} else if (strcmp(item->name, "runafterjob") == 0) {
script->old_proto = true;
script->when = SCRIPT_Before;
script->set_target("%c");
- script->abort_on_error = true;
+ script->fail_on_error = true;
} else if (strcmp(item->name, "runafterfailedjob") == 0) {
script->when = SCRIPT_After;
{"target", store_runscript_target,{(char **)&res_runscript}, 0, 0, 0},
{"runsonsuccess", store_runscript_bool, {(char **)&res_runscript.on_success},0, 0, 0},
{"runsonfailure", store_runscript_bool, {(char **)&res_runscript.on_failure},0, 0, 0},
- {"abortjobonerror",store_runscript_bool, {(char **)&res_runscript.abort_on_error},0, 0, 0},
+ {"failjobonerror",store_runscript_bool, {(char **)&res_runscript.fail_on_error},0, 0, 0},
+ {"abortjobonerror",store_runscript_bool, {(char **)&res_runscript.fail_on_error},0, 0, 0},
{"runswhen", store_runscript_when, {(char **)&res_runscript.when}, 0, 0, 0},
{"runsonclient", store_runscript_target,{(char **)&res_runscript}, 0, 0, 0}, /* TODO */
{NULL, NULL, {0}, 0, 0, 0}
Dmsg1(200, "store_runscript: begin store_runscript pass=%i\n", pass);
- res_runscript.reset_default(); /* setting on_success, on_failure, abort_on_error */
+ res_runscript.reset_default(); /* setting on_success, on_failure, fail_on_error */
token = lex_get_token(lc, T_SKIP_EOL);