/*
Bacula® - The Network Backup Solution
- Copyright (C) 2002-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2002-2008 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.
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
/*
* Execute a command from the UA
*/
-int do_a_dot_command(UAContext *ua, const char *cmd)
+bool do_a_dot_command(UAContext *ua)
{
int i;
int len;
Dmsg1(1400, "Dot command: %s\n", user->msg);
if (ua->argc == 0) {
- return 1;
+ return false;
}
len = strlen(ua->argk[0]);
if (len == 1) {
if (ua->api) user->signal(BNET_CMD_BEGIN);
if (ua->api) user->signal(BNET_CMD_OK);
- return 1; /* no op */
+ return true; /* no op */
}
for (i=0; i<comsize; i++) { /* search for command */
if (strncasecmp(ua->argk[0], _(commands[i].key), len) == 0) {
!acl_access_ok(ua, Command_ACL, ua->argk[0], len)) {
break;
}
+ Dmsg1(100, "Cmd: %s\n", ua->cmd);
ua->gui = true;
if (ua->api) user->signal(BNET_CMD_BEGIN);
- ok = (*commands[i].func)(ua, cmd); /* go execute command */
+ ok = (*commands[i].func)(ua, ua->cmd); /* go execute command */
ua->gui = gui;
found = true;
break;
}
if (!found) {
pm_strcat(user->msg, _(": is an invalid command.\n"));
- user->msglen = strlen(user->msg);
- user->send();
+ ua->error_msg("%s", user->msg);
+ ok = false;
}
if (ua->api) user->signal(ok?BNET_CMD_OK:BNET_CMD_FAILED);
- return 1;
+ return ok;
}
static bool dot_quit_cmd(UAContext *ua, const char *cmd)
for (int i=0; num_field--; i++) {
if (i == 0) {
- pm_strcpy(rows, row[0]);
+ pm_strcpy(rows, NPRT(row[0]));
} else {
- pm_strcat(rows, row[i]);
+ pm_strcat(rows, NPRT(row[i]));
}
pm_strcat(rows, "\t");
}
- ua->send_msg(rows.c_str());
+ if (!rows.c_str() || !*rows.c_str()) {
+ ua->send_msg("\t");
+ } else {
+ ua->send_msg("%s", rows.c_str());
+ }
return 0;
}