dnl#
if test -z "$CFLAGS"; then
if test -z "$CCOPTS"; then
- CCOPTS='-O'
+ CCOPTS='-g -O2'
dnl> if test "x$GCC" = xyes; then
dnl> if test x$system = xLinux; then
dnl> CCOPTS="$CCOPTS "'-O2 -fno-strength-reduce'
if test -z "$CFLAGS"; then
if test -z "$CCOPTS"; then
- CCOPTS='-O'
+ CCOPTS='-g -O2'
fi
CFLAGS="$CCOPTS"
fi
--sd.conf password does not match dir.conf storage password
=======
+- Add new code to scheduler.c and run_conf.c
+- Problem with len at 362 in tree.c
- Volume Bytes shows bytes on last volume written in Job summary.
- Fix catalog filename truncation in sql_get and sql_create. Use
only a single filename split routine.
{
URES *res;
int rindex = type - r_first;
- int i, size;
+ int i, size;
int error = 0;
/*
default:
printf("Unknown resource type %d\n", type);
error = 1;
+ size = 1;
break;
}
/* Common */
default:
printf("Unknown resource type %d\n", type);
error = 1;
+ size = 1;
break;
}
/* Common */
int get_attributes_and_put_in_catalog(JCR *jcr)
{
BSOCK *fd;
- int n;
+ int n = 0;
ATTR_DBR ar;
fd = jcr->file_bsock;
void store_run(LEX *lc, struct res_items *item, int index, int pass)
{
int i, j, found;
- int token, state, state2, code, code2;
+ int token, state, state2 = 0, code = 0, code2 = 0;
int options = lc->options;
RUN **run = (RUN **)(item->value);
RUN *trun;
found = TRUE;
if (lex_get_token(lc, T_ALL) != T_EQUALS) {
scan_err1(lc, "Expected an equals, got: %s", lc->str);
+ /* NOT REACHED */
}
token = lex_get_token(lc, T_NAME);
switch (RunFields[i].token) {
}
if (j != 0) {
scan_err1(lc, _("Job level field: %s not found in run record"), lc->str);
+ /* NOT REACHED */
}
break;
case 'P': /* Pool */
if (res == NULL) {
scan_err1(lc, "Could not find specified Pool Resource: %s",
lc->str);
+ /* NOT REACHED */
}
lrun.pool = (POOL *)res;
}
if (res == NULL) {
scan_err1(lc, "Could not find specified Storage Resource: %s",
lc->str);
+ /* NOT REACHED */
}
lrun.storage = (STORE *)res;
}
if (res == NULL) {
scan_err1(lc, "Could not find specified Messages Resource: %s",
lc->str);
+ /* NOT REACHED */
}
lrun.msgs = (MSGS *)res;
}
break;
default:
scan_err1(lc, "Expected a keyword name, got: %s", lc->str);
+ /* NOT REACHED */
break;
} /* end switch */
} /* end if strcasecmp */
set_defaults();
for ( ; token != T_EOL; (token = lex_get_token(lc, T_ALL))) {
- int len, pm;
+ int len, pm = 0;
switch (token) {
case T_NUMBER:
state = s_mday;
}
if (i != 0) {
scan_err1(lc, _("Job type field: %s in run record not found"), lc->str);
+ /* NOT REACHED */
}
break;
case T_COMMA:
continue;
default:
scan_err2(lc, _("Unexpected token: %d:%s"), token, lc->str);
+ /* NOT REACHED */
break;
}
switch (state) {
case s_time: /* time */
if (!have_at) {
scan_err0(lc, _("Time must be preceded by keyword AT."));
+ /* NOT REACHED */
}
if (!have_hour) {
clear_bit(0, lrun.hour);
p = strchr(lc->str, ':');
if (!p) {
scan_err0(lc, _("Time logic error.\n"));
+ /* NOT REACHED */
}
*p++ = 0; /* separate two halves */
code = atoi(lc->str);
pm = 1;
} else {
scan_err0(lc, _("Bad time specification."));
+ /* NOT REACHED */
}
} else {
pm = 0;
}
if (code < 0 || code > 23 || code2 < 0 || code2 > 59) {
scan_err0(lc, _("Bad time specification."));
+ /* NOT REACHED */
}
set_bit(code, lrun.hour);
lrun.minute = code2;
}
if (i != 0 || (state != s_month && state != s_wday)) {
scan_err0(lc, _("Invalid month or week day range"));
+ /* NOT REACHED */
}
/* Lookup end of range */
if (i != 0 || state != state2 ||
(state2 != s_month && state2 != s_wday) || code == code2) {
scan_err0(lc, _("Invalid month or weekday range"));
+ /* NOT REACHED */
}
if (state == s_wday) {
if (!have_wday) {
break;
default:
scan_err0(lc, _("Unexpected run state\n"));
+ /* NOT REACHED */
break;
}
}
int i, j, type, len;
int recurse;
char *res_name;
- RES *res;
+ RES *res = NULL;
Dmsg1(20, "show: %s\n", ua->UA_sock->msg);
len = strlen(tree->ua->argk[0]);
found = 0;
+ stat = 0;
for (i=0; i<(int)comsize; i++) /* search for command */
if (strncasecmp(tree->ua->argk[0], _(commands[i].key), len) == 0) {
stat = (*commands[i].func)(tree->ua, tree); /* go execute command */
}
}
- Dmsg2(200, "runtime=%d now=%d\n", runtime, now);
+// Dmsg2(200, "runtime=%d now=%d\n", runtime, now);
if (!found && tom) {
localtime_r(&tomorrow, &tm);
hour = 0;
char *level;
BSOCK *fd;
JOB_DBR jr;
- JobId_t JobId;
+ JobId_t JobId = 0;
if (!get_or_create_client_record(jcr)) {
goto bail_out;
* Link name ???
*/
while ((n=bget_msg(fd, 0)) > 0 && !job_cancelled(jcr)) {
- long file_index, attr_file_index;
+ long file_index = 0, attr_file_index = 0;
int stream;
char *attr, *p, *fn;
char Opts_MD5[MAXSTRING]; /* Verify Opts or MD5 signature */
default:
printf(_("Unknown resource type %d\n"), type);
error = 1;
+ size = 1;
break;
}
/* Common */
static uint32_t scan_pint(LEX *lf, char *str)
{
- double dval;
+ double dval = 0;
if (!is_a_number(str)) {
scan_err1(lf, "expected a positive integer number, got: %s", str);
+ /* NOT REACHED */
} else {
errno = 0;
dval = strtod(str, NULL);
if (errno != 0 || dval < 0) {
scan_err1(lf, "expected a postive integer number, got: %s", str);
+ /* NOT REACHED */
}
}
return (uint32_t)dval;
int token;
char *cmd;
POOLMEM *dest;
- int dest_len;
+ int dest_len;
Dmsg2(200, "store_msgs pass=%d code=%d\n", pass, item->code);
if (pass == 1) {
cmd = res_all.res_msgs.mail_cmd;
}
dest = get_pool_memory(PM_MESSAGE);
- dest_len = 0;
dest[0] = 0;
+ dest_len = 0;
/* Pick up comma separated list of destinations */
for ( ;; ) {
token = lex_get_token(lc, T_NAME); /* scan destination */
- dest = (char *) check_pool_memory_size(dest, dest_len + lc->str_len + 2);
+ dest = check_pool_memory_size(dest, dest_len + lc->str_len + 2);
if (dest[0] != 0) {
strcat(dest, " "); /* separate multiple destinations with space */
dest_len++;
dest = get_pool_memory(PM_MESSAGE);
/* Pick up a single destination */
token = lex_get_token(lc, T_NAME); /* scan destination */
- dest = check_pool_memory_size(dest, dest_len + lc->str_len + 2);
+ dest = check_pool_memory_size(dest, lc->str_len + 2);
strcpy(dest, lc->str);
dest_len = lc->str_len;
token = lex_get_token(lc, T_ALL);
static void scan_types(LEX *lc, MSGS *msg, int dest_code, char *where, char *cmd)
{
int i, found, quit, is_not;
- int msg_type;
+ int msg_type = 0;
char *str;
for (quit=0; !quit;) {
}
if (!found) {
scan_err1(lc, "message type: %s not found", str);
+ /* NOT REACHED */
}
if (msg_type == M_MAX+1) { /* all? */
parse_config(char *cf)
{
LEX *lc = NULL;
- int token, i, res_type, pass;
+ int token, i, pass;
+ int res_type = 0;
enum parse_state state = p_none;
- struct res_items *items;
+ struct res_items *items = NULL;
int level = 0;
/* Make two passes. The first builds the name symbol table,
}
if (token != T_IDENTIFIER) {
scan_err1(lc, "Expected a Resource name identifier, got: %s", lc->str);
+ /* NOT REACHED */
}
for (i=0; resources[i].name; i++)
if (strcasecmp(resources[i].name, lc->str) == 0) {
}
if (state == p_none) {
scan_err1(lc, "expected resource name, got: %s", lc->str);
+ /* NOT REACHED */
}
break;
case p_resource:
case T_IDENTIFIER:
if (level != 1) {
scan_err1(lc, "not in resource definition: %s", lc->str);
+ /* NOT REACHED */
}
for (i=0; items[i].name; i++) {
if (strcasecmp(items[i].name, lc->str) == 0) {
Dmsg1 (150, "in T_IDENT got token=%s\n", lex_tok_to_str(token));
if (token != T_EQUALS) {
scan_err1(lc, "expected an equals, got: %s", lc->str);
+ /* NOT REACHED */
}
Dmsg1(150, "calling handler for %s\n", items[i].name);
/* Call item handler */
Dmsg2(150, "level=%d id=%s\n", level, lc->str);
Dmsg1(150, "Keyword = %s\n", lc->str);
scan_err1(lc, "Keyword %s not permitted in this resource", lc->str);
+ /* NOT REACHED */
}
break;
default:
scan_err2(lc, "unexpected token %d %s in resource definition",
token, lex_tok_to_str(token));
+ /* NOT REACHED */
}
break;
default:
scan_err1(lc, "Unknown parser state %d\n", state);
+ /* NOT REACHED */
}
}
if (debug_level > 50 && pass == 2) {
}
+/*
+ * Do a relative cwd -- i.e. relative to current node rather than root node
+ */
TREE_NODE *tree_relcwd(char *path, TREE_ROOT *root, TREE_NODE *node)
{
char *p;
if (*path == 0) {
return node;
}
+ /* Check the current segment only */
p = strchr(path, '/');
if (p) {
len = p - path;
+ } else {
+ len = strlen(path);
}
for (cd=node->child; cd; cd=cd->sibling) {
if (strncmp(cd->fname, path, len) == 0) {
return cd;
}
Dmsg2(100, "recurse tree_relcwd with path=%s, cd=%s\n", p+1, cd->fname);
+ /* Check the next segment if any */
return tree_relcwd(p+1, root, cd);
}
char *encode_time(time_t time, char *buf)
{
struct tm tm;
- int n;
+ int n = 0;
if (localtime_r(&time, &tm)) {
n = sprintf(buf, "%04d-%02d-%02d %02d:%02d:%02d",
{
int stat = ETIME;
int chldstatus = 0;
- pid_t pid1, pid2;
+ pid_t pid1, pid2 = 0;
int pfd[2];
char *bargv[MAX_ARGV];
int bargc;
struct timeval tv;
struct timezone tz;
struct timespec timeout;
- int stat, jstat;
+ int stat = 0, jstat;
/* ******FIXME******* put these on config variable */
int min_wait = 60 * 60;
int max_wait = 24 * 60 * 60;
*/
int dir_ask_sysop_to_mount_volume(JCR *jcr, DEVICE *dev)
{
- int stat, jstat;
+ int stat = 0;
/* ******FIXME******* put these on config variable */
int min_wait = 60 * 60;
int max_wait = 24 * 60 * 60;
P(dev->mutex);
dev_blocked = dev->dev_blocked;
dev->dev_blocked = BST_WAITING_FOR_SYSOP; /* indicate waiting for mount */
- jcr->JobStatus = jstat;
+ jcr->JobStatus = JS_WaitMount;
dir_send_job_status(jcr);
for ( ;!job_cancelled(jcr); ) {
static void do_extract(char *devname, char *where)
{
- int n;
char VolName[100];
char *p;
struct stat statp;
else if (!(status & MT_ONLINE))
Emsg0(M_ERROR_TERM, 0, "Unexpected Tape is Off-line\n");
else
- Emsg3(M_ERROR_TERM, 0, "Read error %d on Record Header %s: %s\n", n, dev_name(dev), strerror(errno));
+ Emsg3(M_ERROR_TERM, 0, "Read error %d on Record Header %s: %s\n",
+ status, dev_name(dev), strerror(errno));
}
fsf_dev(DEVICE *dev, int num)
{
struct mtop mt_com;
- int stat;
+ int stat = 0;
char rbuf[1024];
if (dev->fd < 0) {
{
uint32_t stat = 0;
char PrevVolName[MAX_NAME_LENGTH];
- DEV_BLOCK *label_blk;
+ DEV_BLOCK *label_blk = NULL;
char b1[30], b2[30];
time_t wait_time;
jcr->run_time += time(NULL) - wait_time; /* correct run time */
return 1; /* device locked */
}
- free_block(label_blk);
+ if (label_blk) {
+ free_block(label_blk);
+ }
return 0; /* device locked */
}
BSOCK *bs = (BSOCK *)arg;
JCR *jcr;
int i, found, quit;
- int bnet_stat;
+ int bnet_stat = 0;
char name[MAX_NAME_LENGTH];
if (bnet_recv(bs) <= 0) {
default:
printf("Unknown resource type %d\n", type);
error = 1;
+ size = 1;
break;
}
/* Common */