X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fua_output.c;h=55c308966a248eb8b62d1ced01e628b5b7e7eb65;hb=f1810901d8f179b90b31964664e73ae5f983d513;hp=1efb461a8f95d5a7b3719bf1c717bc6937cac31a;hpb=59b4943d6c828fedb6172acd5bcc97055b2fd37a;p=bacula%2Fbacula diff --git a/bacula/src/dird/ua_output.c b/bacula/src/dird/ua_output.c index 1efb461a8f..55c308966a 100644 --- a/bacula/src/dird/ua_output.c +++ b/bacula/src/dird/ua_output.c @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2008 Free Software Foundation Europe e.V. + Copyright (C) 2000-2009 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. @@ -96,7 +96,29 @@ int gui_cmd(UAContext *ua, const char *cmd) return 1; } - +/* + * Enter with Resources locked + */ +static void show_disabled_jobs(UAContext *ua) +{ + JOB *job; + bool first = true; + foreach_res(job, R_JOB) { + if (!acl_access_ok(ua, Job_ACL, job->name())) { + continue; + } + if (!job->enabled) { + if (first) { + first = false; + ua->send_msg(_("Disabled Jobs:\n")); + } + ua->send_msg(" %s\n", job->name()); + } + } + if (first) { + ua->send_msg(_("No disabled Jobs.\n")); + } +} struct showstruct {const char *res_name; int type;}; static struct showstruct reses[] = { @@ -123,6 +145,7 @@ static struct showstruct reses[] = { * show all * show e.g. show directors * show = e.g. show director=HeadMan + * show disabled shows disabled jobs * */ int show_cmd(UAContext *ua, const char *cmd) @@ -137,6 +160,10 @@ int show_cmd(UAContext *ua, const char *cmd) LockRes(); for (i=1; iargc; i++) { + if (strcasecmp(ua->argk[i], _("disabled")) == 0) { + show_disabled_jobs(ua); + goto bail_out; + } type = 0; res_name = ua->argk[i]; if (!ua->argv[i]) { /* was a name given? */ @@ -320,7 +347,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) /* List JOBMEDIA */ } else if (strcasecmp(ua->argk[i], NT_("jobmedia")) == 0) { - int done = FALSE; + bool done = false; for (j=i+1; jargc; j++) { if (strcasecmp(ua->argk[j], NT_("ujobid")) == 0 && ua->argv[j]) { bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH); @@ -333,7 +360,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) continue; } db_list_jobmedia_records(ua->jcr, ua->db, jobid, prtit, ua, llist); - done = TRUE; + done = true; } if (!done) { /* List for all jobs (jobid=0) */ @@ -342,7 +369,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) /* List JOBLOG */ } else if (strcasecmp(ua->argk[i], NT_("joblog")) == 0) { - int done = FALSE; + bool done = false; for (j=i+1; jargc; j++) { if (strcasecmp(ua->argk[j], NT_("ujobid")) == 0 && ua->argv[j]) { bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH); @@ -355,7 +382,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) continue; } db_list_joblog_records(ua->jcr, ua->db, jobid, prtit, ua, llist); - done = TRUE; + done = true; } if (!done) { /* List for all jobs (jobid=0) */ @@ -456,7 +483,7 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) } list_nextvol(ua, n); } else if (strcasecmp(ua->argk[i], NT_("copies")) == 0) { - char *jobids=NULL; + char *jobids = NULL; uint32_t limit=0; for (j=i+1; jargc; j++) { if (strcasecmp(ua->argk[j], NT_("jobid")) == 0 && ua->argv[j]) { @@ -523,6 +550,7 @@ static bool list_nextvol(UAContext *ua, int ndays) mr.PoolId = jcr->jr.PoolId; get_job_storage(&store, job, run); mr.StorageId = store.store->StorageId; + /* 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));