-
- if (!open_db(ua)) {
- return 1;
- }
- Dmsg1(20, "status:%s:\n", cmd);
-
- if ((ua->argc != 3) || (strcasecmp(ua->argk[1], "dir"))) {
- bsendmsg(ua, "1900 Bad .status command, missing arguments.\n");
- return 1;
- }
-
- if (strcasecmp(ua->argk[2], "current") == 0) {
- bsendmsg(ua, OKqstatus, ua->argk[2]);
- lock_jcr_chain();
- foreach_jcr(njcr) {
- if (njcr->JobId != 0) {
- bsendmsg(ua, DotStatusJob, njcr->JobId, njcr->JobStatus, njcr->JobErrors);
- }
- free_locked_jcr(njcr);
+ char ed1[50];
+
+ Dmsg2(20, "status=\"%s\" argc=%d\n", cmd, ua->argc);
+
+ if (ua->argc < 3) {
+ ua->send_msg("1900 Bad .status command, missing arguments.\n");
+ return false;
+ }
+
+ if (strcasecmp(ua->argk[1], "dir") == 0) {
+ if (strcasecmp(ua->argk[2], "current") == 0) {
+ ua->send_msg(OKqstatus, ua->argk[2]);
+ foreach_jcr(njcr) {
+ if (njcr->JobId != 0 && acl_access_ok(ua, Job_ACL, njcr->job->name())) {
+ ua->send_msg(DotStatusJob, edit_int64(njcr->JobId, ed1),
+ njcr->JobStatus, njcr->JobErrors);
+ }
+ }
+ endeach_jcr(njcr);
+ } else if (strcasecmp(ua->argk[2], "last") == 0) {
+ ua->send_msg(OKqstatus, ua->argk[2]);
+ if ((last_jobs) && (last_jobs->size() > 0)) {
+ job = (s_last_job*)last_jobs->last();
+ if (acl_access_ok(ua, Job_ACL, job->Job)) {
+ ua->send_msg(DotStatusJob, edit_int64(job->JobId, ed1),
+ job->JobStatus, job->Errors);
+ }
+ }
+ } else if (strcasecmp(ua->argk[2], "header") == 0) {
+ list_dir_status_header(ua);
+ } else if (strcasecmp(ua->argk[2], "scheduled") == 0) {
+ list_scheduled_jobs(ua);
+ } else if (strcasecmp(ua->argk[2], "running") == 0) {
+ list_running_jobs(ua);
+ } else if (strcasecmp(ua->argk[2], "terminated") == 0) {
+ list_terminated_jobs(ua);
+ } else {
+ ua->send_msg("1900 Bad .status command, wrong argument.\n");
+ return false;