#ifdef HAVE_MYSQL
char catalog_db[] = "MySQL";
-#endif
+#else
#ifdef HAVE_SQLITE
char catalog_db[] = "SQLite";
-#endif
-#ifdef HAVE_BACULA_DB
+#else
char catalog_db[] = "Internal";
#endif
+#endif
+char *host_os = HOST_OS;
+char *distname = DISTNAME;
+char *distver = DISTVER;
/* Forward referenced functions */
init_msg(JCR *jcr, MSGS *msg)
{
DEST *d, *dnew, *temp_chain = NULL;
+ int i, fd;
+
+ if (jcr == NULL && msg == NULL) {
+ init_last_jobs_list();
+ }
+
+ /*
+ * Make sure we have fd's 0, 1, 2 open
+ * If we don't do this one of our sockets may open
+ * there and if we then use stdout, it could
+ * send total garbage to our socket.
+ *
+ */
+ fd = open("/dev/null", O_RDONLY, 0644);
+ if (fd > 2) {
+ close(fd);
+ } else {
+ for(i=1; fd + i <= 2; i++) {
+ dup2(fd, fd+i);
+ }
+ }
+
/*
* If msg is NULL, initialize global chain for STDOUT and syslog
*/
if (msg == NULL) {
- int i;
daemon_msgs = (MSGS *)malloc(sizeof(MSGS));
memset(daemon_msgs, 0, sizeof(MSGS));
for (i=1; i<=M_MAX; i++) {
POOLMEM *name = get_pool_memory(PM_MESSAGE);
make_unique_spool_filename(jcr, &name, bs->fd);
- bs->spool_fd = fopen(name, "w+");
+ bs->spool_fd = fopen(mp_chr(name), "w+");
if (!bs->spool_fd) {
Jmsg(jcr, M_ERROR, 0, "fopen spool file %s failed: ERR=%s\n", name, strerror(errno));
free_pool_memory(name);
make_unique_spool_filename(jcr, &name, bs->fd);
fclose(bs->spool_fd);
- unlink(name);
+ unlink(mp_chr(name));
free_pool_memory(name);
bs->spool_fd = NULL;
bs->spool = 0;
fflush(stdout);
if (!(bpipe = open_bpipe(*cmd, 120, "rw"))) {
- Jmsg(jcr, M_ERROR, 0, "open mail pipe %s failed: ERR=%s\n", *cmd, strerror(errno));
+ Jmsg(jcr, M_ERROR, 0, "open mail pipe %s failed: ERR=%s\n",
+ *cmd, strerror(errno));
}
return bpipe;
}
}
if (!(bpipe=open_mail_pipe(jcr, &cmd, d))) {
- Dmsg0(000, "open mail pipe failed.\n");
+ Pmsg0(000, "open mail pipe failed.\n");
goto rem_temp_file;
}
Dmsg0(150, "Opened mail pipe\n");
len = d->max_len+10;
line = get_memory(len);
rewind(d->fd);
- while (fgets(line, len, d->fd)) {
+ while (fgets(mp_chr(line), len, d->fd)) {
fputs(line, bpipe->wfd);
}
if (!close_wpipe(bpipe)) { /* close write pipe sending mail */
- Dmsg1(000, "close error: ERR=%s\n", strerror(errno));
+ Pmsg1(000, "close error: ERR=%s\n", strerror(errno));
}
/*
*/
if (msgs != daemon_msgs) {
/* read what mail prog returned -- should be nothing */
- while (fgets(line, len, bpipe->rfd)) {
+ while (fgets(mp_chr(line), len, bpipe->rfd)) {
Jmsg1(jcr, M_INFO, 0, _("Mail prog: %s"), line);
}
}
rem_temp_file:
/* Remove temp file */
fclose(d->fd);
- unlink(d->mail_filename);
+ unlink(mp_chr(d->mail_filename));
free_pool_memory(d->mail_filename);
d->mail_filename = NULL;
Dmsg0(150, "end mail or mail on error\n");
fclose(trace_fd);
trace_fd = NULL;
}
+ term_last_jobs_list();
}
case MD_MAIL_ON_ERROR:
Dmsg1(800, "MAIL for following msg: %s", msg);
if (!d->fd) {
- POOLMEM *name = get_pool_memory(PM_MESSAGE);
- make_unique_mail_filename(jcr, &name, d);
- d->fd = fopen(name, "w+");
+ POOLMEM *name = get_pool_memory(PM_MESSAGE);
+ make_unique_mail_filename(jcr, &mp_chr(name), d);
+ d->fd = fopen(mp_chr(name), "w+");
if (!d->fd) {
d->fd = stdout;
Emsg2(M_ERROR, 0, "fopen %s failed: ERR=%s\n", name, strerror(errno));
case MD_DIRECTOR:
Dmsg1(800, "DIRECTOR for following msg: %s", msg);
if (jcr && jcr->dir_bsock && !jcr->dir_bsock->errors) {
-
- jcr->dir_bsock->msglen = Mmsg(&(jcr->dir_bsock->msg),
- "Jmsg Job=%s type=%d level=%d %s", jcr->Job,
- type, level, msg) + 1;
- bnet_send(jcr->dir_bsock);
+ bnet_fsend(jcr->dir_bsock, "Jmsg Job=%s type=%d level=%d %s",
+ jcr->Job, type, level, msg);
}
break;
case MD_STDOUT:
va_list arg_ptr;
int details = TRUE;
- return;
-
if (level < 0) {
details = FALSE;
level = -level;
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);
+ dir->msglen = bvsnprintf(mp_chr(dir->msg), sizeof_pool_memory(dir->msg),
+ fmt, arg_ptr);
va_end(arg_ptr);
bnet_send(jcr->dir_bsock);
return;
va_list arg_ptr;
int i, len, maxlen;
- i = sprintf(*pool_buf, "%s:%d ", file, line);
+ i = sprintf(mp_chr(*pool_buf), "%s:%d ", file, line);
again:
maxlen = sizeof_pool_memory(*pool_buf) - i - 1;
len = bvsnprintf(*pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= maxlen) {
- *pool_buf = realloc_pool_memory(*pool_buf, maxlen + i + 200);
+ *pool_buf = realloc_pool_memory(*pool_buf, maxlen + i + maxlen/2);
goto again;
}
return len;
len = bvsnprintf(*pool_buf, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= maxlen) {
- *pool_buf = realloc_pool_memory(*pool_buf, maxlen + 200);
+ *pool_buf = realloc_pool_memory(*pool_buf, maxlen + maxlen/2);
goto again;
}
return len;
len = bvsnprintf(pool_buf+i, maxlen, fmt, arg_ptr);
va_end(arg_ptr);
if (len < 0 || len >= maxlen) {
- pool_buf = realloc_pool_memory(pool_buf, maxlen + i + 200);
+ pool_buf = realloc_pool_memory(pool_buf, maxlen + i + maxlen/2);
goto again;
}