/* Imported variables */
extern int r_first;
extern int r_last;
-extern struct s_res resources[];
+extern RES_TABLE resources[];
extern int console_msg_pending;
extern FILE *con_fd;
extern brwlock_t con_lock;
/*
* Turn auto display of console messages on/off
*/
-int autodisplaycmd(UAContext *ua, char *cmd)
+int autodisplay_cmd(UAContext *ua, char *cmd)
{
static char *kw[] = {
N_("on"),
return 1;
}
+/*
+ * Turn gui processing on/off
+ */
+int gui_cmd(UAContext *ua, char *cmd)
+{
+ static char *kw[] = {
+ N_("on"),
+ N_("off"),
+ NULL};
+
+ switch (find_arg_keyword(ua, kw)) {
+ case 0:
+ ua->jcr->gui = true;
+ break;
+ case 1:
+ ua->jcr->gui = false;
+ break;
+ default:
+ bsendmsg(ua, _("ON or OFF keyword missing.\n"));
+ break;
+ }
+ return 1;
+}
+
+
struct showstruct {char *res_name; int type;};
static struct showstruct reses[] = {
{N_("catalogs"), R_CATALOG},
{N_("schedules"), R_SCHEDULE},
{N_("filesets"), R_FILESET},
- {N_("groups"), R_GROUP},
{N_("pools"), R_POOL},
{N_("messages"), R_MSGS},
{N_("all"), -1},
Dmsg1(20, "show: %s\n", ua->UA_sock->msg);
+ LockRes();
for (i=1; i<ua->argc; i++) {
type = 0;
res_name = ua->argk[i];
break;
}
}
+
} else {
/* Dump a single resource with specified name */
recurse = 0;
for (j=0; reses[j].res_name; j++) {
bsendmsg(ua, "%s\n", _(reses[j].res_name));
}
- return 1;
+ goto bail_out;
case -3:
bsendmsg(ua, _("%s resource %s not found.\n"), res_name, ua->argv[i]);
- return 1;
+ goto bail_out;
case 0:
bsendmsg(ua, _("Resource %s not found\n"), res_name);
- return 1;
+ goto bail_out;
default:
dump_resource(recurse?type:-type, res, bsendmsg, ua);
break;
}
}
+bail_out:
+ UnlockRes();
return 1;
}
/* List MEDIA or VOLUMES */
} else if (strcasecmp(ua->argk[i], _("media")) == 0 ||
strcasecmp(ua->argk[i], _("volumes")) == 0) {
- int done = FALSE;
+ bool done = false;
for (j=i+1; j<ua->argc; j++) {
if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) {
bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH);
n = db_get_job_volume_names(ua->jcr, ua->db, jobid, &VolumeName);
bsendmsg(ua, _("Jobid %d used %d Volume(s): %s\n"), jobid, n, VolumeName);
free_pool_memory(VolumeName);
- done = TRUE;
+ done = true;
}
/* if no job or jobid keyword found, then we list all media */
if (!done) {
time_t now, tomorrow;
SCHED *sched;
struct tm tm;
- int mday, wday, month, wpos, tmday, twday, tmonth, twpos, i, hour;
+ int mday, wday, month, wom, tmday, twday, tmonth, twom, i, hour;
+ int woy, twoy;
int tod, tom;
- Dmsg0(200, "enter find_runs()\n");
-
sched = job->schedule;
if (sched == NULL) { /* scheduled? */
return NULL; /* no nothing to report */
mday = tm.tm_mday - 1;
wday = tm.tm_wday;
month = tm.tm_mon;
- wpos = (tm.tm_mday - 1) / 7;
+ wom = mday / 7;
+ woy = tm_woy(now);
/* Break down tomorrow into components */
tomorrow = now + 60 * 60 * 24;
tmday = tm.tm_mday - 1;
twday = tm.tm_wday;
tmonth = tm.tm_mon;
- twpos = (tm.tm_mday - 1) / 7;
+ twom = tmday / 7;
+ twoy = tm_woy(tomorrow);
if (run == NULL) {
run = sched->run;
* Find runs in next 24 hours
*/
tod = (bit_is_set(mday, run->mday) || bit_is_set(wday, run->wday)) &&
- bit_is_set(month, run->month) && bit_is_set(wpos, run->wpos);
+ bit_is_set(month, run->month) && bit_is_set(wom, run->wom) &&
+ bit_is_set(woy, run->woy);
tom = (bit_is_set(tmday, run->mday) || bit_is_set(twday, run->wday)) &&
- bit_is_set(tmonth, run->month) && bit_is_set(wpos, run->wpos);
+ bit_is_set(tmonth, run->month) && bit_is_set(twom, run->wom) &&
+ bit_is_set(twoy, run->woy);
- Dmsg2(200, "tod=%d tom=%d\n", tod, tom);
+// Dmsg2(200, "tod=%d tom=%d\n", tod, tom);
+// Dmsg2(200, "wom=%d twom=%d\n", wom, twom);
+// Dmsg1(200, "bit_set_wom=%d\n", bit_is_set(wom, run->wom));
if (tod) { /* Jobs scheduled today (next 24 hours) */
/* find time (time_t) job is to be run */
localtime_r(&now, &tm);
tm.tm_sec = 0;
runtime = mktime(&tm);
if (runtime > now) {
+ Dmsg2(000, "Found it level=%d %c\n", run->level, run->level);
return run; /* found it, return run resource */
}
}
tm.tm_min = run->minute;
tm.tm_sec = 0;
runtime = mktime(&tm);
- Dmsg2(200, "truntime=%d now=%d\n", runtime, now);
+// Dmsg2(200, "truntime=%d now=%d\n", runtime, now);
if (runtime < tomorrow) {
return run; /* found it, return run resource */
}
len = bvsnprintf(msg, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= maxlen) {
- msg = realloc_pool_memory(msg, maxlen + 200);
+ msg = realloc_pool_memory(msg, maxlen + maxlen/2);
goto again;
}
if (bs) {
+ bs->msg = msg;
bs->msglen = len;
bnet_send(bs);
} else { /* No UA, send to Job */