/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-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.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
int verbose = 0; /* increase User messages */
int debug_level = 0; /* debug level */
bool dbg_timestamp = false; /* print timestamp in debug output */
-time_t daemon_start_time = 0; /* Daemon start time */
+utime_t daemon_start_time = 0; /* Daemon start time */
const char *version = VERSION " (" BDATE ")";
char my_name[30]; /* daemon name is stored here */
+char host_name[50]; /* host machine name */
char *exepath = (char *)NULL;
char *exename = (char *)NULL;
int console_msg_pending = false;
/* Forward referenced functions */
/* Imported functions */
-
+void create_jcr_key();
/* Static storage */
char cpath[1024];
int len;
+ if (gethostname(host_name, sizeof(host_name)) != 0) {
+ bstrncpy(host_name, "Hostname unknown", sizeof(host_name));
+ }
bstrncpy(my_name, name, sizeof(my_name));
if (argc>0 && argv && argv[0]) {
/* strip trailing filename and save exepath */
if (jcr == NULL && msg == NULL) {
init_last_jobs_list();
+ /* Create a daemon key then set invalid jcr */
+ /* Maybe we should give the daemon a jcr??? */
+ create_jcr_key();
+ set_jcr_in_tsd(INVALID_JCR);
}
#if !defined(HAVE_WIN32)
}
fflush(stdout);
- if (!(bpipe = open_bpipe(cmd, 120, "rw"))) {
+ if ((bpipe = open_bpipe(cmd, 120, "rw"))) {
+ /* If we had to use sendmail, add subject */
+ if (!d->mail_cmd) {
+ fprintf(bpipe->wfd, "Subject: %s\r\n\r\n", _("Bacula Message"));
+ }
+ } else {
berrno be;
Jmsg(jcr, M_ERROR, 0, _("open mail pipe %s failed: ERR=%s\n"),
cmd, be.bstrerror());
}
-
- /* If we had to use sendmail, add subject */
- if (!d->mail_cmd) {
- fprintf(bpipe->wfd, "Subject: %s\r\n\r\n", _("Bacula Message"));
- }
-
return bpipe;
}
/*
* Handle sending the message to the appropriate place
*/
-void dispatch_message(JCR *jcr, int type, time_t mtime, char *msg)
+void dispatch_message(JCR *jcr, int type, utime_t mtime, char *msg)
{
DEST *d;
char dt[MAX_TIME_LENGTH];
* 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.
+ * we assume mtime is a utime_t and use it.
*/
if (mtime == 0) {
mtime = time(NULL);
case MD_DIRECTOR:
Dmsg1(850, "DIRECTOR for following msg: %s", msg);
if (jcr && jcr->dir_bsock && !jcr->dir_bsock->errors) {
- bnet_fsend(jcr->dir_bsock, "Jmsg Job=%s type=%d level=%d %s",
+ bnet_fsend(jcr->dir_bsock, "Jmsg Job=%s type=%d level=%lld %s",
jcr->Job, type, mtime, msg);
}
break;
int len;
va_list arg_ptr;
bool details = true;
- time_t mtime;
+ utime_t mtime;
if (level < 0) {
details = false;
}
}
-
-
/* *********************************************************
*
* print an error message
*
*/
void
-Jmsg(JCR *jcr, int type, time_t mtime, const char *fmt,...)
+Jmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...)
{
char rbuf[5000];
va_list arg_ptr;
* If we come here, prefix the message with the file:line-number,
* then pass it on to the normal Jmsg routine.
*/
-void j_msg(const char *file, int line, JCR *jcr, int type, time_t mtime, const char *fmt,...)
+void j_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const char *fmt,...)
{
va_list arg_ptr;
int i, len, maxlen;
* sending a message, it is a bit messy to recursively call
* yourself when the bnet packet is not reentrant).
*/
-void Qmsg(JCR *jcr, int type, time_t mtime, const char *fmt,...)
+void Qmsg(JCR *jcr, int type, utime_t mtime, const char *fmt,...)
{
va_list arg_ptr;
int len, maxlen;
* If we come here, prefix the message with the file:line-number,
* then pass it on to the normal Qmsg routine.
*/
-void q_msg(const char *file, int line, JCR *jcr, int type, time_t mtime, const char *fmt,...)
+void q_msg(const char *file, int line, JCR *jcr, int type, utime_t mtime, const char *fmt,...)
{
va_list arg_ptr;
int i, len, maxlen;