*/
void backup_cleanup(JCR *jcr, int TermCode)
{
- char sdt[50], edt[50], schedt[50];
+ char sdt[50], edt[50], schedt[50], edl[50];
char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30];
char ec6[30], ec7[30], ec8[30], ec9[30], ec10[30], elapsed[50];
char data_compress[200], comm_compress[200];
HOST_OS, DISTNAME, DISTVER,
jcr->jr.JobId,
jcr->jr.Job,
- level_to_str(jcr->getJobLevel()), jcr->since,
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()), jcr->since,
jcr->client->name(), cr.Uname,
jcr->fileset->name(), jcr->FSCreateTime,
jcr->pool->name(), jcr->pool_source,
FILE *fd;
BPIPE *bpipe = NULL;
int got_pipe = 0;
+ char edl[50];
POOLMEM *fname = get_pool_memory(PM_FNAME);
fname = edit_job_codes(jcr, fname, jcr->job->WriteBootstrap, "",
job_code_callback_director);
/* Start output with when and who wrote it */
bstrftimes(edt, sizeof(edt), time(NULL));
fprintf(fd, "# %s - %s - %s%s\n", edt, jcr->jr.Job,
- level_to_str(jcr->getJobLevel()), jcr->since);
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()), jcr->since);
for (int i=0; i < VolCount; i++) {
/* Write the record */
fprintf(fd, "Volume=\"%s\"\n", VolParams[i].VolumeName);
return dst;
}
-const char *level_to_str(int level)
+char *level_to_str(char *buf, int len, int level)
{
int i;
- static char level_no[30];
- const char *str = level_no;
-
- bsnprintf(level_no, sizeof(level_no), "%c (%d)", level, level); /* default if not found */
+ bsnprintf(buf, len, "%c (%d)", level, level); /* default if not found */
for (i=0; joblevels[i].level_name; i++) {
if (level == (int)joblevels[i].level) {
- str = joblevels[i].level_name;
+ bstrncpy(buf, joblevels[i].level_name, len);
break;
}
}
- return str;
+ return buf;
}
/* Dump contents of resource */
RES *next;
URES *res = (URES *)ares;
bool recurse = true;
- char ed1[100], ed2[100], ed3[100];
+ char ed1[100], ed2[100], ed3[100], edl[50];
DEVICE *dev;
UAContext *ua = (UAContext *)sock;
POOLMEM *buf;
sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"),
type == R_JOB ? _("Job") : _("JobDefs"),
res->res_job.hdr.name, res->res_job.JobType,
- level_to_str(res->res_job.JobLevel), res->res_job.Priority,
+ level_to_str(edl, sizeof(edl), res->res_job.JobLevel), res->res_job.Priority,
res->res_job.is_enabled());
sendit(sock, _(" MaxJobs=%u NumJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob=%d\n"),
res->res_job.MaxConcurrentJobs,
break;
}
next_run:
- sendit(sock, _(" --> Run Level=%s\n"), level_to_str(run->level));
+ sendit(sock, _(" --> Run Level=%s\n"), level_to_str(edl, sizeof(edl), run->level));
if (run->MaxRunSchedTime) {
sendit(sock, _(" MaxRunSchedTime=%u\n"), run->MaxRunSchedTime);
}
utime_t now;
utime_t last_full_time = 0;
utime_t last_diff_time;
- char prev_job[MAX_NAME_LENGTH];
+ char prev_job[MAX_NAME_LENGTH], edl[50];
since[0] = 0;
/* If job cloned and a since time already given, use it */
Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found in catalog. Doing FULL backup.\n"));
bsnprintf(since, since_len, _(" (upgraded from %s)"),
- level_to_str(jcr->getJobLevel()));
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()));
jcr->setJobLevel(jcr->jr.JobLevel = L_FULL);
} else if (do_vfull) {
/* No recent Full job found, and MaxVirtualFull is set so upgrade this one to Virtual Full */
Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found in catalog. Doing Virtual FULL backup.\n"));
bsnprintf(since, since_len, _(" (upgraded from %s)"),
- level_to_str(jcr->getJobLevel()));
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()));
jcr->setJobLevel(jcr->jr.JobLevel = L_VIRTUAL_FULL);
} else if (do_diff) {
/* No recent diff job found, so upgrade this one to Diff */
Jmsg(jcr, M_INFO, 0, _("No prior or suitable Differential backup found in catalog. Doing Differential backup.\n"));
bsnprintf(since, since_len, _(" (upgraded from %s)"),
- level_to_str(jcr->getJobLevel()));
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()));
jcr->setJobLevel(jcr->jr.JobLevel = L_DIFFERENTIAL);
} else {
if (jcr->job->rerun_failed_levels) {
if ((jcr->getJobLevel() == L_INCREMENTAL) ||
((jcr->getJobLevel() == L_DIFFERENTIAL) && (JobLevel == L_FULL))) {
Jmsg(jcr, M_INFO, 0, _("Prior failed job found in catalog. Upgrading to %s.\n"),
- level_to_str(JobLevel));
+ level_to_str(edl, sizeof(edl), JobLevel));
bsnprintf(since, since_len, _(" (upgraded from %s)"),
- level_to_str(jcr->getJobLevel()));
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()));
jcr->setJobLevel(jcr->jr.JobLevel = JobLevel);
jcr->jr.JobId = jcr->JobId;
break;
{
char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], elapsed[50];
- char ec6[50], ec7[50], ec8[50], ec9[30], ec10[30];
+ char ec6[50], ec7[50], ec8[50], ec9[30], ec10[30], edl[50];
char sd_term_msg[100];
POOL_MEM term_code;
POOL_MEM term_msg;
wjcr ? edit_uint64(wjcr->jr.JobId, ec7) : "0",
edit_uint64(jcr->jr.JobId, ec8),
jcr->jr.Job,
- level_to_str(jcr->getJobLevel()), jcr->since,
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()), jcr->since,
jcr->client->name(),
jcr->fileset->name(), jcr->FSCreateTime,
jcr->rpool->name(), jcr->rpool_source,
extern void remove_dummy_jobmedia_records(JCR *jcr);
/* dird_conf.c */
-extern const char *level_to_str(int level);
+extern char *level_to_str(char *buf, int len, int level);
extern "C" char *job_code_callback_director(JCR *jcr, const char*, char *, int);
/* expand.c */
JOB *job = (JOB *)GetResWithName(R_JOB, ua->argv[1]);
if (job) {
USTORE store;
+ char edl[50];
ua->send_msg("job=%s", job->name());
ua->send_msg("pool=%s", job->pool->name());
ua->send_msg("messages=%s", job->messages->name());
get_job_storage(&store, job, NULL);
ua->send_msg("storage=%s", store.store->name());
ua->send_msg("where=%s", job->RestoreWhere?job->RestoreWhere:"");
- ua->send_msg("level=%s", level_to_str(job->JobLevel));
+ ua->send_msg("level=%s", level_to_str(edl, sizeof(edl), job->JobLevel));
ua->send_msg("type=%s", job_type_to_str(job->JobType));
ua->send_msg("fileset=%s", job->fileset->name());
ua->send_msg("enabled=%d", job->is_enabled());
bool found = false;
MEDIA_DBR mr;
POOL_DBR pr;
+ char edl[50];
int i = find_arg_with_value(ua, "job");
if (i <= 0) {
/* no need to set ScratchPoolId, since we use fnv_no_create_vol */
if (!find_next_volume_for_append(jcr, &mr, 1, fnv_no_create_vol, fnv_prune)) {
ua->error_msg(_("Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"),
- job->name(), pr.Name, level_to_str(run->level));
+ job->name(), pr.Name, level_to_str(edl, sizeof(edl), run->level));
} else {
ua->send_msg(
_("The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"),
- job->name(), pr.Name, level_to_str(run->level), mr.VolumeName);
+ job->name(), pr.Name, level_to_str(edl, sizeof(edl), run->level), mr.VolumeName);
found = true;
}
}
static bool display_job_parameters(UAContext *ua, JCR *jcr, JOB *job, const char *verify_list,
char *jid, const char *replace, char *client_name)
{
- char ec1[30];
+ char ec1[30], edl[50];
char dt[MAX_TIME_LENGTH];
Dmsg1(800, "JobType=%c\n", jcr->getJobType());
"Priority: %d\n"
"%s%s%s",
job->name(),
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->name(),
jcr->fileset->name(),
NPRT(jcr->pool->name()),
"Priority: %d\n"
"%s%s%s"),
job->name(),
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->name(),
jcr->fileset->name(),
NPRT(jcr->pool->name()), jcr->pool_source,
"When: %s\n"
"Priority: %d\n",
job->name(),
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->name(),
jcr->fileset->name(),
NPRT(jcr->pool->name()), jcr->pool_source,
"When: %s\n"
"Priority: %d\n"),
job->name(),
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->name(),
jcr->fileset->name(),
NPRT(jcr->pool->name()), jcr->pool_source,
static void prt_runtime(UAContext *ua, sched_pkt *sp, OutputWriter *ow)
{
- char dt[MAX_TIME_LENGTH];
+ char dt[MAX_TIME_LENGTH], edl[50];
const char *level_ptr;
bool ok = false;
bool close_db = false;
level_ptr = "Restore";
break;
default:
- level_ptr = level_to_str(sp->level);
+ level_ptr = level_to_str(edl, sizeof(edl), sp->level);
break;
}
if (ua->api == 1) {
return 1; /* If same name, same time, same prio => insert after */
}
+static bool is_included(const char *str, alist *list)
+{
+ char *v;
+ if (list->size() == 0) { /* The list is empty, we take everything */
+ return true;
+ }
+ foreach_alist(v, list) {
+ if (strcmp(v, str) == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
/*
* Detailed listing of all scheduler jobs
*/
bstrncpy(level, "Restore", sizeof(level));
break;
default:
- bstrncpy(level, level_to_str(jcr->getJobLevel()), sizeof(level));
+ level_to_str(level, sizeof(level), jcr->getJobLevel());
level[7] = 0;
break;
}
bstrncpy(level, "Restore", sizeof(level));
break;
default:
- bstrncpy(level, level_to_str(je->JobLevel), sizeof(level));
+ level_to_str(level, sizeof(level), je->JobLevel);
level[4] = 0;
break;
}
const char *level;
BSOCK *fd, *sd;
int stat;
- char ed1[100];
+ char ed1[100], edl[50];
JOB_DBR jr;
JobId_t verify_jobid = 0;
char *store_address;
/* Print Job Start message */
Jmsg(jcr, M_INFO, 0, _("Start Verify JobId=%s Level=%s Job=%s\n"),
- edit_uint64(jcr->JobId, ed1), level_to_str(jcr->getJobLevel()), jcr->Job);
+ edit_uint64(jcr->JobId, ed1), level_to_str(edl, sizeof(edl), jcr->getJobLevel()), jcr->Job);
if (jcr->getJobLevel() == L_VERIFY_VOLUME_TO_CATALOG ||
jcr->getJobLevel() == L_VERIFY_DATA)
*/
void verify_cleanup(JCR *jcr, int TermCode)
{
- char sdt[50], edt[50];
+ char sdt[50], edt[50], edl[50];
char ec1[30], ec2[30], elapsed[50];
char term_code[100], fd_term_msg[100], sd_term_msg[100];
const char *term_msg;
jcr->jr.JobId,
jcr->jr.Job,
jcr->fileset->hdr.name,
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->hdr.name,
jcr->previous_jr.JobId,
Name,
jcr->jr.JobId,
jcr->jr.Job,
jcr->fileset->hdr.name,
- level_to_str(jcr->getJobLevel()),
+ level_to_str(edl, sizeof(edl), jcr->getJobLevel()),
jcr->client->name(),
jcr->previous_jr.JobId,
Name,