This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
- version 2 as ammended with additional clauses defined in the
+ version 2 as amended with additional clauses defined in the
file LICENSE in the main source directory.
This program is distributed in the hope that it will be useful,
#endif
#endif
-#define FULL_LOCATION 1 /* set for file:line in Debug messages */
+#define FULL_LOCATION 1 /* set for file:line in Debug messages */
/*
* This is where we define "Globals" because all the
* daemons include this file.
*/
-const char *working_directory = NULL; /* working directory path stored here */
-int verbose = 0; /* increase User messages */
-int debug_level = 0; /* debug level */
-time_t daemon_start_time = 0; /* Daemon start time */
+const char *working_directory = NULL; /* working directory path stored here */
+int verbose = 0; /* increase User messages */
+int debug_level = 0; /* debug level */
+time_t daemon_start_time = 0; /* Daemon start time */
const char *version = VERSION " (" BDATE ")";
-char my_name[30]; /* daemon name is stored here */
+char my_name[30]; /* daemon name is stored here */
char *exepath = (char *)NULL;
char *exename = (char *)NULL;
int console_msg_pending = 0;
-char con_fname[500]; /* Console filename */
-FILE *con_fd = NULL; /* Console file descriptor */
-brwlock_t con_lock; /* Console lock structure */
+char con_fname[500]; /* Console filename */
+FILE *con_fd = NULL; /* Console file descriptor */
+brwlock_t con_lock; /* Console lock structure */
#ifdef HAVE_POSTGRESQL
char catalog_db[] = "PostgreSQL";
/* Used to allow only one thread close the daemon messages at a time */
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-static MSGS *daemon_msgs; /* global messages */
+static MSGS *daemon_msgs; /* global messages */
/*
/* strip trailing filename and save exepath */
for (l=p=argv[0]; *p; p++) {
if (*p == '/') {
- l = p; /* set pos of last slash */
- }
+ l = p; /* set pos of last slash */
+ }
}
if (*l == '/') {
- l++;
+ l++;
} else {
- l = argv[0];
+ l = argv[0];
#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
- /* On Windows allow c: junk */
+ /* On Windows allow c: junk */
if (l[1] == ':') {
- l += 2;
- }
+ l += 2;
+ }
#endif
}
len = strlen(l) + 1;
if (exename) {
- free(exename);
+ free(exename);
}
exename = (char *)malloc(len);
strcpy(exename, l);
if (exepath) {
- free(exepath);
+ free(exepath);
}
exepath = (char *)malloc(strlen(argv[0]) + 1 + len);
for (p=argv[0],q=exepath; p < l; ) {
- *q++ = *p++;
+ *q++ = *p++;
}
*q = 0;
if (strchr(exepath, '.') || exepath[0] != '/') {
- if (getcwd(cpath, sizeof(cpath))) {
- free(exepath);
- exepath = (char *)malloc(strlen(cpath) + 1 + len);
- strcpy(exepath, cpath);
- }
+ if (getcwd(cpath, sizeof(cpath))) {
+ free(exepath);
+ exepath = (char *)malloc(strlen(cpath) + 1 + len);
+ strcpy(exepath, cpath);
+ }
}
Dmsg2(500, "exepath=%s\nexename=%s\n", exepath, exename);
}
* to the job or daemon and thus can be modified.
*
* NULL for jcr -> initialize global messages for daemon
- * non-NULL -> initialize jcr using Message resource
+ * non-NULL -> initialize jcr using Message resource
*/
void
init_msg(JCR *jcr, MSGS *msg)
close(fd);
} else {
for(i=1; fd + i <= 2; i++) {
- dup2(fd, fd+i);
+ dup2(fd, fd+i);
}
}
if (msg == NULL) {
daemon_msgs = (MSGS *)malloc(sizeof(MSGS));
memset(daemon_msgs, 0, sizeof(MSGS));
- for (i=1; i<=M_MAX; i++) {
#ifndef WIN32
- add_msg_dest(daemon_msgs, MD_STDOUT, i, NULL, NULL);
-#endif
- add_msg_dest(daemon_msgs, MD_SYSLOG, i, NULL, NULL);
+ for (i=1; i<=M_MAX; i++) {
+ add_msg_dest(daemon_msgs, MD_STDOUT, i, NULL, NULL);
}
+#endif
Dmsg1(050, "Create daemon global message resource 0x%x\n", daemon_msgs);
return;
}
dnew->fd = NULL;
dnew->mail_filename = NULL;
if (d->mail_cmd) {
- dnew->mail_cmd = bstrdup(d->mail_cmd);
+ dnew->mail_cmd = bstrdup(d->mail_cmd);
}
if (d->where) {
- dnew->where = bstrdup(d->where);
+ dnew->where = bstrdup(d->where);
}
temp_chain = dnew;
}
} else {
/* If we have default values, release them now */
if (daemon_msgs) {
- free_msgs_res(daemon_msgs);
+ free_msgs_res(daemon_msgs);
}
daemon_msgs = (MSGS *)malloc(sizeof(MSGS));
memset(daemon_msgs, 0, sizeof(MSGS));
if (fd == -1) {
berrno be;
Emsg2(M_ERROR_TERM, 0, _("Could not open console message file %s: ERR=%s\n"),
- con_fname, be.strerror());
+ con_fname, be.strerror());
}
if (lseek(fd, 0, SEEK_END) > 0) {
console_msg_pending = 1;
if (!con_fd) {
berrno be;
Emsg2(M_ERROR, 0, _("Could not open console message file %s: ERR=%s\n"),
- con_fname, be.strerror());
+ con_fname, be.strerror());
}
if (rwl_init(&con_lock) != 0) {
berrno be;
Emsg1(M_ERROR_TERM, 0, _("Could not get con mutex: ERR=%s\n"),
- be.strerror());
+ be.strerror());
}
}
*/
for (d=msg->dest_chain; d; d=d->next) {
if (dest_code == d->dest_code && ((where == NULL && d->where == NULL) ||
- (strcmp(where, d->where) == 0))) {
+ (strcmp(where, d->where) == 0))) {
Dmsg4(850, "Add to existing d=%x msgtype=%d destcode=%d where=%s\n",
- d, msg_type, dest_code, NPRT(where));
- set_bit(msg_type, d->msg_types);
- set_bit(msg_type, msg->send_msg); /* set msg_type bit in our local */
- return;
+ d, msg_type, dest_code, NPRT(where));
+ set_bit(msg_type, d->msg_types);
+ set_bit(msg_type, msg->send_msg); /* set msg_type bit in our local */
+ return;
}
}
/* Not found, create a new entry */
memset(d, 0, sizeof(DEST));
d->next = msg->dest_chain;
d->dest_code = dest_code;
- set_bit(msg_type, d->msg_types); /* set type bit in structure */
- set_bit(msg_type, msg->send_msg); /* set type bit in our local */
+ set_bit(msg_type, d->msg_types); /* set type bit in structure */
+ set_bit(msg_type, msg->send_msg); /* set type bit in our local */
if (where) {
d->where = bstrdup(where);
}
d->mail_cmd = bstrdup(mail_cmd);
}
Dmsg5(850, "add new d=%x msgtype=%d destcode=%d where=%s mailcmd=%s\n",
- d, msg_type, dest_code, NPRT(where), NPRT(d->mail_cmd));
+ d, msg_type, dest_code, NPRT(where), NPRT(d->mail_cmd));
msg->dest_chain = d;
}
for (d=msg->dest_chain; d; d=d->next) {
Dmsg2(850, "Remove_msg_dest d=%x where=%s\n", d, NPRT(d->where));
if (bit_is_set(msg_type, d->msg_types) && (dest_code == d->dest_code) &&
- ((where == NULL && d->where == NULL) ||
- (strcmp(where, d->where) == 0))) {
+ ((where == NULL && d->where == NULL) ||
+ (strcmp(where, d->where) == 0))) {
Dmsg3(850, "Found for remove d=%x msgtype=%d destcode=%d\n",
- d, msg_type, dest_code);
- clear_bit(msg_type, d->msg_types);
+ d, msg_type, dest_code);
+ clear_bit(msg_type, d->msg_types);
Dmsg0(850, "Return rem_msg_dest\n");
- return;
+ return;
}
}
}
static void make_unique_mail_filename(JCR *jcr, POOLMEM *&name, DEST *d)
{
if (jcr) {
- Mmsg(name, "%s/%s.mail.%s.%d", working_directory, my_name,
- jcr->Job, (int)(long)d);
+ Mmsg(name, "%s/%s.%s.%d.mail", working_directory, my_name,
+ jcr->Job, (int)(long)d);
} else {
- Mmsg(name, "%s/%s.mail.%s.%d", working_directory, my_name,
- my_name, (int)(long)d);
+ Mmsg(name, "%s/%s.%s.%d.mail", working_directory, my_name,
+ my_name, (int)(long)d);
}
Dmsg1(850, "mailname=%s\n", name);
}
if (!(bpipe = open_bpipe(cmd, 120, "rw"))) {
berrno be;
Jmsg(jcr, M_ERROR, 0, "open mail pipe %s failed: ERR=%s\n",
- cmd, be.strerror());
+ cmd, be.strerror());
}
/* If we had to use sendmail, add subject */
Dmsg1(850, "Close_msg jcr=0x%x\n", jcr);
- if (jcr == NULL) { /* NULL -> global chain */
+ if (jcr == NULL) { /* NULL -> global chain */
msgs = daemon_msgs;
- P(mutex); /* only one thread walking the chain */
+ P(mutex); /* only one thread walking the chain */
} else {
msgs = jcr->jcr_msgs;
jcr->jcr_msgs = NULL;
cmd = get_pool_memory(PM_MESSAGE);
for (d=msgs->dest_chain; d; ) {
if (d->fd) {
- switch (d->dest_code) {
- case MD_FILE:
- case MD_APPEND:
- if (d->fd) {
- fclose(d->fd); /* close open file descriptor */
- }
- break;
- case MD_MAIL:
- case MD_MAIL_ON_ERROR:
+ switch (d->dest_code) {
+ case MD_FILE:
+ case MD_APPEND:
+ if (d->fd) {
+ fclose(d->fd); /* close open file descriptor */
+ }
+ break;
+ case MD_MAIL:
+ case MD_MAIL_ON_ERROR:
Dmsg0(850, "Got MD_MAIL or MD_MAIL_ON_ERROR\n");
- if (!d->fd) {
- break;
- }
- if (d->dest_code == MD_MAIL_ON_ERROR && jcr &&
- jcr->JobStatus == JS_Terminated) {
- goto rem_temp_file;
- }
-
- if (!(bpipe=open_mail_pipe(jcr, cmd, d))) {
+ if (!d->fd) {
+ break;
+ }
+ if (d->dest_code == MD_MAIL_ON_ERROR && jcr &&
+ jcr->JobStatus == JS_Terminated) {
+ goto rem_temp_file;
+ }
+
+ if (!(bpipe=open_mail_pipe(jcr, cmd, d))) {
Pmsg0(000, "open mail pipe failed.\n");
- goto rem_temp_file;
- }
+ goto rem_temp_file;
+ }
Dmsg0(850, "Opened mail pipe\n");
- len = d->max_len+10;
- line = get_memory(len);
- rewind(d->fd);
- while (fgets(line, len, d->fd)) {
- fputs(line, bpipe->wfd);
- }
- if (!close_wpipe(bpipe)) { /* close write pipe sending mail */
- berrno be;
+ len = d->max_len+10;
+ line = get_memory(len);
+ rewind(d->fd);
+ while (fgets(line, len, d->fd)) {
+ fputs(line, bpipe->wfd);
+ }
+ if (!close_wpipe(bpipe)) { /* close write pipe sending mail */
+ berrno be;
Pmsg1(000, "close error: ERR=%s\n", be.strerror());
- }
+ }
- /*
+ /*
* Since we are closing all messages, before "recursing"
- * make sure we are not closing the daemon messages, otherwise
- * kaboom.
- */
- if (msgs != daemon_msgs) {
- /* read what mail prog returned -- should be nothing */
- while (fgets(line, len, bpipe->rfd)) {
+ * make sure we are not closing the daemon messages, otherwise
+ * kaboom.
+ */
+ if (msgs != daemon_msgs) {
+ /* read what mail prog returned -- should be nothing */
+ while (fgets(line, len, bpipe->rfd)) {
Jmsg1(jcr, M_INFO, 0, _("Mail prog: %s"), line);
- }
- }
+ }
+ }
- stat = close_bpipe(bpipe);
- if (stat != 0 && msgs != daemon_msgs) {
- berrno be;
- be.set_errno(stat);
+ stat = close_bpipe(bpipe);
+ if (stat != 0 && msgs != daemon_msgs) {
+ berrno be;
+ be.set_errno(stat);
Dmsg1(850, "Calling emsg. CMD=%s\n", cmd);
Jmsg2(jcr, M_ERROR, 0, _("Mail program terminated in error.\n"
"CMD=%s\n"
"ERR=%s\n"), cmd, be.strerror());
- }
- free_memory(line);
+ }
+ free_memory(line);
rem_temp_file:
- /* Remove temp file */
- fclose(d->fd);
- unlink(d->mail_filename);
- free_pool_memory(d->mail_filename);
- d->mail_filename = NULL;
+ /* Remove temp file */
+ fclose(d->fd);
+ unlink(d->mail_filename);
+ free_pool_memory(d->mail_filename);
+ d->mail_filename = NULL;
Dmsg0(850, "end mail or mail on error\n");
- break;
- default:
- break;
- }
- d->fd = NULL;
+ break;
+ default:
+ break;
+ }
+ d->fd = NULL;
}
- d = d->next; /* point to next buffer */
+ d = d->next; /* point to next buffer */
}
free_pool_memory(cmd);
Dmsg0(850, "Done walking message chain.\n");
/* Walk down the message chain releasing allocated buffers */
for (d=msgs->dest_chain; d; ) {
if (d->where) {
- free(d->where);
+ free(d->where);
}
if (d->mail_cmd) {
- free(d->mail_cmd);
+ free(d->mail_cmd);
}
- old = d; /* save pointer to release */
- d = d->next; /* point to next buffer */
- free(old); /* free the destination item */
+ old = d; /* save pointer to release */
+ d = d->next; /* point to next buffer */
+ free(old); /* free the destination item */
}
msgs->dest_chain = NULL;
- free(msgs); /* free the head */
+ free(msgs); /* free the head */
}
void term_msg()
{
Dmsg0(850, "Enter term_msg\n");
- close_msg(NULL); /* close global chain */
- free_msgs_res(daemon_msgs); /* free the resources */
+ close_msg(NULL); /* close global chain */
+ free_msgs_res(daemon_msgs); /* free the resources */
daemon_msgs = NULL;
if (con_fd) {
fflush(con_fd);
/*
* Most messages are prefixed by a date and time. If mtime is
- * zero, then we use the current time. If mtime is 1 (special
- * kludge), we do not prefix the date and time. Otherwise,
- * we assume mtime is a time_t and use it.
+ * zero, then we use the current time. If mtime is 1 (special
+ * kludge), we do not prefix the date and time. Otherwise,
+ * we assume mtime is a time_t and use it.
*/
if (mtime == 0) {
mtime = time(NULL);
if (type == M_ABORT || type == M_ERROR_TERM) {
#ifndef HAVE_WIN32
fputs(dt, stdout);
- fputs(msg, stdout); /* print this here to INSURE that it is printed */
+ fputs(msg, stdout); /* print this here to INSURE that it is printed */
fflush(stdout);
#endif
}
}
for (d=msgs->dest_chain; d; d=d->next) {
if (bit_is_set(type, d->msg_types)) {
- switch (d->dest_code) {
- case MD_CONSOLE:
+ switch (d->dest_code) {
+ case MD_CONSOLE:
Dmsg1(850, "CONSOLE for following msg: %s", msg);
- if (!con_fd) {
+ if (!con_fd) {
con_fd = fopen(con_fname, "a+");
Dmsg0(850, "Console file not open.\n");
- }
- if (con_fd) {
- Pw(con_lock); /* get write lock on console message file */
- errno = 0;
- if (dtlen) {
- fwrite(dt, dtlen, 1, con_fd);
- }
- len = strlen(msg);
- if (len > 0) {
- fwrite(msg, len, 1, con_fd);
+ }
+ if (con_fd) {
+ Pw(con_lock); /* get write lock on console message file */
+ errno = 0;
+ if (dtlen) {
+ fwrite(dt, dtlen, 1, con_fd);
+ }
+ len = strlen(msg);
+ if (len > 0) {
+ fwrite(msg, len, 1, con_fd);
if (msg[len-1] != '\n') {
fwrite("\n", 2, 1, con_fd);
- }
- } else {
+ }
+ } else {
fwrite("\n", 2, 1, con_fd);
- }
- fflush(con_fd);
- console_msg_pending = TRUE;
- Vw(con_lock);
- }
- break;
- case MD_SYSLOG:
+ }
+ fflush(con_fd);
+ console_msg_pending = TRUE;
+ Vw(con_lock);
+ }
+ break;
+ case MD_SYSLOG:
Dmsg1(850, "SYSLOG for collowing msg: %s\n", msg);
- /*
- * We really should do an openlog() here.
- */
+ /*
+ * We really should do an openlog() here.
+ */
syslog(LOG_DAEMON|LOG_ERR, "%s", msg);
- break;
- case MD_OPERATOR:
+ break;
+ case MD_OPERATOR:
Dmsg1(850, "OPERATOR for following msg: %s\n", msg);
- mcmd = get_pool_memory(PM_MESSAGE);
- if ((bpipe=open_mail_pipe(jcr, mcmd, d))) {
- int stat;
- fputs(dt, bpipe->wfd);
- fputs(msg, bpipe->wfd);
- /* Messages to the operator go one at a time */
- stat = close_bpipe(bpipe);
- if (stat != 0) {
- berrno be;
- be.set_errno(stat);
+ mcmd = get_pool_memory(PM_MESSAGE);
+ if ((bpipe=open_mail_pipe(jcr, mcmd, d))) {
+ int stat;
+ fputs(dt, bpipe->wfd);
+ fputs(msg, bpipe->wfd);
+ /* Messages to the operator go one at a time */
+ stat = close_bpipe(bpipe);
+ if (stat != 0) {
+ berrno be;
+ be.set_errno(stat);
Qmsg2(jcr, M_ERROR, 0, _("Operator mail program terminated in error.\n"
"CMD=%s\n"
"ERR=%s\n"), mcmd, be.strerror());
- }
- }
- free_pool_memory(mcmd);
- break;
- case MD_MAIL:
- case MD_MAIL_ON_ERROR:
+ }
+ }
+ free_pool_memory(mcmd);
+ break;
+ case MD_MAIL:
+ case MD_MAIL_ON_ERROR:
Dmsg1(850, "MAIL for following msg: %s", msg);
- if (!d->fd) {
- POOLMEM *name = get_pool_memory(PM_MESSAGE);
- make_unique_mail_filename(jcr, name, d);
+ if (!d->fd) {
+ POOLMEM *name = get_pool_memory(PM_MESSAGE);
+ make_unique_mail_filename(jcr, name, d);
d->fd = fopen(name, "w+");
- if (!d->fd) {
- berrno be;
- d->fd = stdout;
+ if (!d->fd) {
+ berrno be;
+ d->fd = stdout;
Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", name,
- be.strerror());
- d->fd = NULL;
- free_pool_memory(name);
- break;
- }
- d->mail_filename = name;
- }
- fputs(dt, d->fd);
- len = strlen(msg) + dtlen;;
- if (len > d->max_len) {
- d->max_len = len; /* keep max line length */
- }
- fputs(msg, d->fd);
- break;
- case MD_FILE:
+ be.strerror());
+ d->fd = NULL;
+ free_pool_memory(name);
+ break;
+ }
+ d->mail_filename = name;
+ }
+ fputs(dt, d->fd);
+ len = strlen(msg) + dtlen;;
+ if (len > d->max_len) {
+ d->max_len = len; /* keep max line length */
+ }
+ fputs(msg, d->fd);
+ break;
+ case MD_FILE:
Dmsg1(850, "FILE for following msg: %s", msg);
- if (!d->fd) {
+ if (!d->fd) {
d->fd = fopen(d->where, "w+");
- if (!d->fd) {
- berrno be;
- d->fd = stdout;
+ if (!d->fd) {
+ berrno be;
+ d->fd = stdout;
Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", d->where,
- be.strerror());
- d->fd = NULL;
- break;
- }
- }
- fputs(dt, d->fd);
- fputs(msg, d->fd);
- break;
- case MD_APPEND:
+ be.strerror());
+ d->fd = NULL;
+ break;
+ }
+ }
+ fputs(dt, d->fd);
+ fputs(msg, d->fd);
+ break;
+ case MD_APPEND:
Dmsg1(850, "APPEND for following msg: %s", msg);
- if (!d->fd) {
+ if (!d->fd) {
d->fd = fopen(d->where, "a");
- if (!d->fd) {
- berrno be;
- d->fd = stdout;
+ if (!d->fd) {
+ berrno be;
+ d->fd = stdout;
Qmsg2(jcr, M_ERROR, 0, "fopen %s failed: ERR=%s\n", d->where,
- be.strerror());
- d->fd = NULL;
- break;
- }
- }
- fputs(dt, d->fd);
- fputs(msg, d->fd);
- break;
- case MD_DIRECTOR:
+ be.strerror());
+ d->fd = NULL;
+ break;
+ }
+ }
+ fputs(dt, d->fd);
+ fputs(msg, d->fd);
+ break;
+ case MD_DIRECTOR:
Dmsg1(850, "DIRECTOR for following msg: %s", msg);
- if (jcr && jcr->dir_bsock && !jcr->dir_bsock->errors) {
+ if (jcr && jcr->dir_bsock && !jcr->dir_bsock->errors) {
bnet_fsend(jcr->dir_bsock, "Jmsg Job=%s type=%d level=%d %s",
- jcr->Job, type, mtime, msg);
- }
- break;
- case MD_STDOUT:
+ jcr->Job, type, mtime, msg);
+ }
+ break;
+ case MD_STDOUT:
Dmsg1(850, "STDOUT for following msg: %s", msg);
- if (type != M_ABORT && type != M_ERROR_TERM) { /* already printed */
- fputs(dt, stdout);
- fputs(msg, stdout);
- }
- break;
- case MD_STDERR:
+ if (type != M_ABORT && type != M_ERROR_TERM) { /* already printed */
+ fputs(dt, stdout);
+ fputs(msg, stdout);
+ }
+ break;
+ case MD_STDERR:
Dmsg1(850, "STDERR for following msg: %s", msg);
- fputs(dt, stderr);
- fputs(msg, stderr);
- break;
- default:
- break;
- }
+ fputs(dt, stderr);
+ fputs(msg, stderr);
+ break;
+ default:
+ break;
+ }
}
}
}
if (level <= debug_level) {
#ifdef FULL_LOCATION
if (details) {
- /* visual studio passes the whole path to the file as well
- * which makes for very long lines
- */
+ /* visual studio passes the whole path to the file as well
+ * which makes for very long lines
+ */
const char *f = strrchr(file, '\\');
- if (f) file = f + 1;
+ if (f) file = f + 1;
len = bsnprintf(buf, sizeof(buf), "%s: %s:%d ", my_name, file, line);
} else {
- len = 0;
+ len = 0;
}
#else
len = 0;
/*
* Used the "trace on" command in the console to turn on
* output to the trace file. "trace off" will close the file.
- */
+ */
if (trace) {
- if (!trace_fd) {
- bsnprintf(buf, sizeof(buf), "%s/bacula.trace", working_directory ? working_directory : ".");
- trace_fd = fopen(buf, "a+");
- }
- if (trace_fd) {
- fputs(buf, trace_fd);
- fflush(trace_fd);
- }
+ if (!trace_fd) {
+ char fn[200];
+ bsnprintf(fn, sizeof(fn), "%s/bacula.trace", working_directory ? working_directory : ".");
+ trace_fd = fopen(fn, "a+");
+ }
+ if (trace_fd) {
+ fputs(buf, trace_fd);
+ fflush(trace_fd);
+ } else {
+ /* Some problem, turn off tracing */
+ trace = false;
+ }
} else { /* not tracing */
- fputs(buf, stdout);
+ fputs(buf, stdout);
}
}
}
if (!trace && trace_fd) {
FILE *ltrace_fd = trace_fd;
trace_fd = NULL;
- bmicrosleep(0, 100000); /* yield to prevent seg faults */
+ bmicrosleep(0, 100000); /* yield to prevent seg faults */
fclose(ltrace_fd);
}
}
if (details) {
len = bsnprintf(buf, sizeof(buf), "%s: %s:%d ", my_name, file, line);
} else {
- len = 0;
+ len = 0;
}
#else
len = 0;
bvsnprintf(buf+len, sizeof(buf)-len, (char *)fmt, arg_ptr);
va_end(arg_ptr);
if (trace_fd != NULL) {
- fputs(buf, trace_fd);
- fflush(trace_fd);
+ fputs(buf, trace_fd);
+ fflush(trace_fd);
}
}
}
* We always report M_ABORT and M_ERROR_TERM
*/
if (!daemon_msgs || ((type != M_ABORT && type != M_ERROR_TERM) &&
- !bit_is_set(type, daemon_msgs->send_msg))) {
- return; /* no destination */
+ !bit_is_set(type, daemon_msgs->send_msg))) {
+ return; /* no destination */
}
switch (type) {
case M_ABORT:
len = bsnprintf(buf, sizeof(buf), "%s: ABORTING due to ERROR in %s:%d\n",
- my_name, file, line);
+ my_name, file, line);
break;
case M_ERROR_TERM:
len = bsnprintf(buf, sizeof(buf), "%s: ERROR TERMINATION at %s:%d\n",
- my_name, file, line);
+ my_name, file, line);
break;
case M_FATAL:
- if (level == -1) /* skip details */
+ if (level == -1) /* skip details */
len = bsnprintf(buf, sizeof(buf), "%s: Fatal Error because: ", my_name);
else
len = bsnprintf(buf, sizeof(buf), "%s: Fatal Error at %s:%d because:\n", my_name, file, line);
break;
case M_ERROR:
- if (level == -1) /* skip details */
+ if (level == -1) /* skip details */
len = bsnprintf(buf, sizeof(buf), "%s: ERROR: ", my_name);
else
len = bsnprintf(buf, sizeof(buf), "%s: ERROR in %s:%d ", my_name, file, line);
if (type == M_ABORT) {
char *p = 0;
- p[0] = 0; /* generate segmentation violation */
+ p[0] = 0; /* generate segmentation violation */
}
if (type == M_ERROR_TERM) {
exit(1);
Dmsg1(850, "Enter Jmsg type=%d\n", type);
/* Special case for the console, which has a dir_bsock and JobId==0,
- * in that case, we send the message directly back to the
- * dir_bsock.
+ * in that case, we send the message directly back to the
+ * dir_bsock.
*/
if (jcr && jcr->JobId == 0 && jcr->dir_bsock) {
BSOCK *dir = jcr->dir_bsock;
va_start(arg_ptr, fmt);
dir->msglen = bvsnprintf(dir->msg, sizeof_pool_memory(dir->msg),
- fmt, arg_ptr);
+ fmt, arg_ptr);
va_end(arg_ptr);
bnet_send(jcr->dir_bsock);
return;
job = jcr->Job;
}
if (!msgs) {
- msgs = daemon_msgs; /* if no jcr, we use daemon handler */
+ msgs = daemon_msgs; /* if no jcr, we use daemon handler */
}
if (!job) {
job = ""; /* Set null job name if none */
* We always report M_ABORT and M_ERROR_TERM
*/
if (msgs && (type != M_ABORT && type != M_ERROR_TERM) &&
- !bit_is_set(type, msgs->send_msg)) {
- return; /* no destination */
+ !bit_is_set(type, msgs->send_msg)) {
+ return; /* no destination */
}
switch (type) {
case M_ABORT:
case M_FATAL:
len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Fatal error: ", my_name, job);
if (jcr) {
- set_jcr_job_status(jcr, JS_FatalError);
+ set_jcr_job_status(jcr, JS_FatalError);
}
break;
case M_ERROR:
len = bsnprintf(rbuf, sizeof(rbuf), "%s: %s Error: ", my_name, job);
if (jcr) {
- jcr->Errors++;
+ jcr->Errors++;
}
break;
case M_WARNING:
if (type == M_ABORT){
char *p = 0;
- p[0] = 0; /* generate segmentation violation */
+ p[0] = 0; /* generate segmentation violation */
}
if (type == M_ERROR_TERM) {
exit(1);
len = bvsnprintf(pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
- continue;
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(*pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- *pool_buf = realloc_pool_memory(*pool_buf, maxlen + i + maxlen/2);
- continue;
+ *pool_buf = realloc_pool_memory(*pool_buf, maxlen + i + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
- continue;
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(*pool_buf, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- *pool_buf = realloc_pool_memory(*pool_buf, maxlen + maxlen/2);
- continue;
+ *pool_buf = realloc_pool_memory(*pool_buf, maxlen + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(pool_buf, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + maxlen/2);
- continue;
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(pool_buf.c_str(), maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf.realloc_pm(maxlen + maxlen/2);
- continue;
+ pool_buf.realloc_pm(maxlen + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(pool_buf, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + maxlen/2);
- continue;
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + maxlen/2);
+ continue;
}
break;
}
len = bvsnprintf(pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= (maxlen-5)) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
- continue;
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
+ continue;
}
break;
}