the same license as the "OpenSSL" library), and distribute the linked
executables. You must obey the GNU General Public License in all
respects for all of the code used other than "OpenSSL".
+
+As a special exception to the GPLv2, the Bacula Project gives
+permission to link the code of its release of the Bacula Win32 File
+daemon with the Microsoft supplied Volume Shadow Copy (VSS) libraries
+and distribute the linked executables. You must obey the GNU General
+Public License in all respects for all of the code used other than for
+the Microsoft VSS code, where you must obey their license terms.
+
===================================
- Implement Diff,Inc Retention Periods
Priority:
+- Encrypt sd_auth_key = s with director's key = d
+ k[i] = s[i] + (d[i] & 0xF)) & 0xFF + 'A' skip -
+ Decrypt key = k with director's key
+ x = k[i] - (d[i] & 0xF))
+ if (x < 0) {
+ x = k[i] - (d[i] & 0xF) + 16
+ }
+ s[i] = x + 'A';
+- finish implementation of fdcalled -- see ua_run.c:105
+- Fix problem in postgresql.c in my_postgresql_query, where the
+ generation of the error message doesn't differentiate result==NULL
+ and a bad status from that result. Not only that, the result is
+ cleared on a bail_out without having generated the error message.
- Erabt if min_block_size > max_block_size
- KIWI
- Implement wait on multiple objects
start)
echo "Starting the Bacula Director: "
@sbindir@/bacula-dir $2 -c @sysconfdir@/bacula-dir.conf
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && touch @subsysdir@/bacula-dir
;;
stop)
echo "Stopping the Director daemon: "
pkill -x bacula-dir
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && rm -f @subsysdir@/bacula-dir
;;
restart)
$0 stop
start)
echo "Starting the Bacula File daemon: "
@sbindir@/bacula-fd $2 -c @sysconfdir@/bacula-fd.conf
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && touch @subsysdir@/bacula-fd
;;
stop)
echo "Stopping the Bacula File daemon: "
pkill -x bacula-fd
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && rm -f @subsysdir@/bacula-fd
;;
restart)
$0 stop
start)
echo "Starting the Bacula Storage daemon: "
@sbindir@/bacula-sd $2 -c @sysconfdir@/bacula-sd.conf
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && touch @subsysdir@/bacula-sd
;;
stop)
echo "Stopping the Bacula Storage daemon: "
pkill -x bacula-sd
- RETVAL=$?
- echo
- [ $RETVAL -eq 0 ] && rm -f @subsysdir@/bacula-sd
;;
restart)
$0 stop
--- /dev/null
+
+ Bacula - The Network Backup Solution
+
+ Copyright (C) 2000-2006 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, a copy of which
+ is in the LICENSE file
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+
+ Bacula is a registered trademark of John Walker.
+ The licensor of Bacula is the Free Software Foundation Europe
+ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 ZC<rich,
+ Switzerland, email:ftf@fsfeurope.org.
+
+
--- /dev/null
+#!/bin/bash
+#
+#
+
+# make use of Studio 11 or 12 compiler
+#
+export CC=cc
+export CXX=CC
+
+INSTALL_BASE=/opt/bacula
+SBIN_DIR=$INSTALL_BASE/sbin
+MAN_DIR=$INSTALL_BASE/man
+SYSCONF_DIR=$INSTALL_BASE/etc
+SCRIPT_DIR=$INSTALL_BASE/etc
+WORKING_DIR=/var/bacula
+
+VERSION=2.2.5
+
+CWD=`pwd`
+# Try to guess the distribution base
+DISTR_BASE=`dirname \`pwd\` | sed -e 's@/platforms$@@'`
+echo "Distribution base: $DISTR_BASE"
+
+TMPINSTALLDIR=/tmp/`basename $DISTR_BASE`-build
+echo "Temp install dir: $TMPINSTALLDIR"
+echo "Install directory: $INSTALL_BASE"
+
+cd $DISTR_BASE
+
+if [ "x$1" = "xbuild" ]; then
+ ./configure --prefix=$INSTALL_BASE \
+ --sbindir=$SBIN_DIR \
+ --sysconfdir=$SYSCONF_DIR \
+ --mandir=$MAN_DIR \
+ --with-scriptdir=$SCRIPT_DIR \
+ --with-working-dir=$WORKING_DIR \
+ --with-subsys-dir=/var/lock/subsys \
+ --with-pid-dir=/var/run \
+ --enable-smartalloc \
+ --enable-conio \
+ --enable-readline \
+ --enable-client-only \
+ --disable-ipv6
+
+ make
+fi
+
+if [ -d $TMPINSTALLDIR ]; then
+ rm -rf $TMPINSTALLDIR
+fi
+mkdir $TMPINSTALLDIR
+
+make DESTDIR=$TMPINSTALLDIR install
+
+# copy additional files to install-dir
+#
+
+
+# change conf-files that they won't be overwritten by install
+#
+cd $TMPINSTALLDIR/$SYSCONF_DIR
+for x in *.conf; do
+ mv ${x} ${x}-dist
+done
+
+
+# cd back to my start-dir
+#
+cd $CWD
+
+#cp prototype.master prototype
+sed -e "s|__PKGSOURCE__|$CWD|" prototype.master > prototype
+
+pkgproto $TMPINSTALLDIR/$INSTALL_BASE=. >> prototype
+
+pkgmk -o -d /tmp -b $TMPINSTALLDIR/$INSTALL_BASE -f prototype
+
+if [ $? = 0 ]; then
+ pkgtrans /tmp bacula-$VERSION.pkg Bacula
+ echo "Package has been created in /tmp"
+fi
+
--- /dev/null
+PKG=Bacula
+NAME=Bacula Client
+ARCH=sparc
+VERSION=2.2.5
+MAXINST=1
+CATEGORY=application
+DESC=Bacula - It comes by night and sucks the essence from your computers
+VENDOR=http://www.bacula.org
+HOTLINE=none
+EMAIL=christian.masopust@siemens.com
+CLASSES=none
+BASEDIR=/opt/bacula
--- /dev/null
+#!/bin/sh
+#
+# postinstall for Bacula
+#
+if [ ! -d /var/bacula ]; then
+ mkdir /var/bacula
+fi
+
+exit 0
--- /dev/null
+#!/bin/sh
+#
+# postremove for Bacula
+#
+if [ ! -d /var/bacula ]; then
+ rm -rf /var/bacula
+fi
+
+exit 0
--- /dev/null
+#
+# Information files
+#
+i pkginfo=./pkginfo
+i copyright=./copyright
+i postinstall=./postinstall
+i postremove=./postremove
+#
+# Stuff that goes into the system areas
+#
+d none /etc ? ? ?
+d none /etc/init.d ? ? ?
+f none /etc/init.d/bacula=__PKGSOURCE__/bacula-fd 0754 root bin
+d none /etc/rc2.d ? ? ?
+s none /etc/rc2.d/S99bacula=/etc/init.d/bacula
+d none /etc/rc0.d ? ? ?
+s none /etc/rc0.d/K01bacula=/etc/init.d/bacula
+#
+d none /var ? ? ?
+d none /var/bacula 0755 root root
+#
+#
+# Dynamically added entries (by pkgproto)
+#
return mdb->errmsg;
}
-int db_sql_query(B_DB *mdb, char const *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, char const *query, DB_RESULT_HANDLER *result_handler, void *ctx)
{
- return 1;
+ return true;
}
/*
* Submit a general SQL command (cmd), and for each row returned,
* the sqlite_handler is called with the ctx.
*/
-int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
{
SQL_ROW row;
bool send = true;
if (sql_query(mdb, query) != 0) {
Mmsg(mdb->errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror(mdb));
db_unlock(mdb);
- return 0;
+ return false;
}
if (result_handler != NULL) {
if ((mdb->result = sql_use_result(mdb)) != NULL) {
}
}
db_unlock(mdb);
- return 1;
+ return true;
}
* Submit a general SQL command (cmd), and for each row returned,
* the sqlite_handler is called with the ctx.
*/
-int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
{
SQL_ROW row;
Mmsg(mdb->errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror(mdb));
db_unlock(mdb);
Dmsg0(500, "db_sql_query failed\n");
- return 0;
+ return false;
}
Dmsg0(500, "db_sql_query succeeded. checking handler\n");
Dmsg0(500, "db_sql_query finished\n");
- return 1;
+ return true;
}
void db_escape_string(JCR *jcr, B_DB *db, char *snew, char *old, int len);
char *db_strerror(B_DB *mdb);
int db_next_index(JCR *jcr, B_DB *mdb, char *table, char *index);
-int db_sql_query(B_DB *mdb, const char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx);
+bool db_sql_query(B_DB *mdb, const char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx);
void db_start_transaction(JCR *jcr, B_DB *mdb);
void db_end_transaction(JCR *jcr, B_DB *mdb);
int db_int64_handler(void *ctx, int num_fields, char **row);
jcr->JobStatus = JS_AttrInserting;
if (!sql_batch_end(jcr, jcr->db_batch, NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Bad batch end %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Batch end %s\n", jcr->db_batch->errmsg);
return false;
}
if (job_canceled(jcr)) {
/* we have to lock tables */
if (!db_sql_query(jcr->db_batch, sql_batch_lock_path_query, NULL, NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Can't lock Path table %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Lock Path table %s\n", jcr->db_batch->errmsg);
return false;
}
if (!db_sql_query(jcr->db_batch, sql_batch_fill_path_query, NULL, NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Can't fill Path table %s\n",jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Fill Path table %s\n",jcr->db_batch->errmsg);
db_sql_query(jcr->db_batch, sql_batch_unlock_tables_query, NULL, NULL);
return false;
}
if (!db_sql_query(jcr->db_batch, sql_batch_unlock_tables_query,NULL,NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Can't unlock Path table %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Unlock Path table %s\n", jcr->db_batch->errmsg);
return false;
}
/* we have to lock tables */
if (!db_sql_query(jcr->db_batch,sql_batch_lock_filename_query,NULL, NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Can't lock Filename table %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Lock Filename table %s\n", jcr->db_batch->errmsg);
return false;
}
if (!db_sql_query(jcr->db_batch,sql_batch_fill_filename_query, NULL,NULL)) {
- Jmsg(jcr,M_FATAL,0,"Can't fill Filename table %s\n",jcr->db_batch->errmsg);
+ Jmsg1(jcr,M_FATAL,0,"Fill Filename table %s\n",jcr->db_batch->errmsg);
db_sql_query(jcr->db_batch, sql_batch_unlock_tables_query, NULL, NULL);
return false;
}
if (!db_sql_query(jcr->db_batch, sql_batch_unlock_tables_query,NULL,NULL)) {
- Jmsg(jcr, M_FATAL, 0, "Can't unlock Filename table %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Unlock Filename table %s\n", jcr->db_batch->errmsg);
return false;
}
"JOIN Filename ON (batch.Name = Filename.Name)",
NULL,NULL))
{
- Jmsg(jcr, M_FATAL, 0, "Can't fill File table %s\n", jcr->db_batch->errmsg);
+ Jmsg1(jcr, M_FATAL, 0, "Fill File table %s\n", jcr->db_batch->errmsg);
return false;
}
* Submit a general SQL command (cmd), and for each row returned,
* the sqlite_handler is called with the ctx.
*/
-int db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
+bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
{
struct rh_data rh_data;
int stat;
if (stat != 0) {
Mmsg(mdb->errmsg, _("Query failed: %s: ERR=%s\n"), query, sql_strerror(mdb));
db_unlock(mdb);
- return 0;
+ return false;
}
db_unlock(mdb);
- return 1;
+ return true;
}
/*
"\nVersion: " VERSION " (" BDATE ") %s %s %s\n\n"
"Usage: bconsole [-s] [-c config_file] [-d debug_level]\n"
" -c <file> set configuration file to file\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -n no conio\n"
" -s no signals\n"
" -t test - read configuration and exit\n"
break;
case 'd':
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
"\nVersion: %s (%s)\n\n"
"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
" -c <file> set configuration file to file\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -f run in foreground (for debugging)\n"
" -g groupid\n"
" -r <job> run <job> now\n"
break;
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
Dmsg1(10, "Debug level = %d\n", debug_level);
break;
for (;;) {
n = bs->recv();
- Dmsg2(100, "bget_dirmsg %d: %s", n, bs->msg);
+ Dmsg2(100, "bget_dirmsg %d: %s\n", n, bs->msg);
if (is_bnet_stop(bs)) {
return n; /* error or terminate */
Dmsg1(800, "Calling run_job job=%x\n", jcr->job);
start_job:
- Dmsg1(100, "Using pool %s\n", jcr->pool->name());
+ Dmsg3(000, "JobId=%u using pool %s priority=%d\n", (int)jcr->JobId,
+ jcr->pool->name(), jcr->JobPriority);
JobId = run_job(jcr);
+ Dmsg4(000, "JobId=%u NewJobId=%d using pool %s priority=%d\n", (int)jcr->JobId,
+ JobId, jcr->pool->name(), jcr->JobPriority);
free_jcr(jcr); /* release jcr */
if (JobId == 0) {
ua->error_msg(_("Job failed.\n"));
"\nVersion: %s (%s)\n\n"
"Usage: bacula-fd [-f -s] [-c config_file] [-d debug_level]\n"
" -c <file> use <file> as configuration file\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -f run in foreground (for debugging)\n"
" -g groupid\n"
" -s no signals (for debugging)\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
const char *working_directory = NULL; /* working directory path stored here */
int verbose = 0; /* increase User messages */
int debug_level = 1; /* debug level */
+bool dbg_timestamp = false; /* print timestamp in debug output */
time_t daemon_start_time = 0; /* Daemon start time */
const char *version = VERSION " (" BDATE ")";
char my_name[30]; /* daemon name is stored here */
int len;
va_list arg_ptr;
bool details = true;
+ time_t mtime;
if (level < 0) {
details = false;
}
if (level <= debug_level) {
+ if (dbg_timestamp) {
+ mtime = time(NULL);
+ bstrftimes(buf, sizeof(buf), mtime);
+ len = strlen(buf);
+ buf[len++] = ' ';
+ buf[len] = 0;
+ fputs(buf, stdout);
+ }
+
#ifdef FULL_LOCATION
if (details) {
len = bsnprintf(buf, sizeof(buf), "%s: %s:%d-%u ",
jcr = get_jcr_from_tsd();
}
/* If no jcr or dequeuing send to daemon to avoid recursion */
- if (!jcr || jcr->dequeuing) {
+ if ((jcr && !jcr->msg_queue) || !jcr || jcr->dequeuing) {
/* jcr==NULL => daemon message, safe to send now */
Jmsg(jcr, item->type, item->mtime, "%s", item->msg);
free(item);
extern DLL_IMP_EXP sql_escape p_sql_escape;
extern DLL_IMP_EXP int debug_level;
+extern DLL_IMP_EXP bool dbg_timestamp; /* print timestamp in debug output */
extern DLL_IMP_EXP int verbose;
extern DLL_IMP_EXP char my_name[];
extern DLL_IMP_EXP const char * working_directory;
"Usage: bcopy [-d debug_level] <input-archive> <output-archive>\n"
" -b bootstrap specify a bootstrap file\n"
" -c <file> specify configuration file\n"
-" -d <nn> set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -i specify input Volume names (separated by |)\n"
" -o specify output Volume names (separated by |)\n"
" -p proceed inspite of errors\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'i': /* input Volume name */
"Usage: bextract <options> <bacula-archive-device-name> <directory-to-store-files>\n"
" -b <file> specify a bootstrap file\n"
" -c <file> specify a configuration file\n"
-" -d <nn> set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -e <file> exclude list\n"
" -i <file> include list\n"
" -p proceed inspite of I/O errors\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'e': /* exclude list */
"Usage: bls [options] <device-name>\n"
" -b <file> specify a bootstrap file\n"
" -c <file> specify a config file\n"
-" -d <level> specify debug level\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -e <file> exclude list\n"
" -i <file> include list\n"
" -j list jobs\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'e': /* exclude list */
"Usage: bscan [ options ] <bacula-archive>\n"
" -b bootstrap specify a bootstrap file\n"
" -c <file> specify configuration file\n"
-" -d <nn> set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -m update media info in database\n"
" -n <name> specify the database name (default bacula)\n"
" -u <user> specify database user name (default bacula)\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'h':
break;
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
"Usage: btape <options> <device_name>\n"
" -b <file> specify bootstrap file\n"
" -c <file> set configuration file to file\n"
-" -d <nn> set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -p proceed inspite of I/O errors\n"
" -s turn off signals\n"
" -v be verbose\n"
"\nVersion: %s (%s)\n\n"
"Usage: stored [options] [-c config_file] [config_file]\n"
" -c <file> use <file> as configuration file\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -f run in foreground (for debugging)\n"
" -g <group> set groupid to group\n"
" -p proceed despite I/O errors\n"
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
" will start 3 thread and load dat1, dat and datx in your catalog\n"
"See bbatch.c to generate datafile\n\n"
"Usage: bbatch [ options ] -w working/dir -f datafile\n"
-" -d <nn> set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -n <name> specify the database name (default bacula)\n"
" -u <user> specify database user name (default bacula)\n"
" -P <password specify database password (default none)\n"
while ((ch = getopt(argc, argv, "h:c:d:n:P:Su:vf:w:?")) != -1) {
switch (ch) {
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'h':
" -f specify file of data to be matched\n"
" -l suppress line numbers\n"
" -n print lines that do not match\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -? print this message.\n"
"\n\n");
while ((ch = getopt(argc, argv, "d:f:n?")) != -1) {
switch (ch) {
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
" -f specify file of data to be matched\n"
" -e specify expression\n"
" -s sed output\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -? print this message.\n"
"\n");
while ((ch = getopt(argc, argv, "sd:f:e:")) != -1) {
switch (ch) {
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
"Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
" -8 set charset utf-8\n"
" -c set the Cc: field\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -f set the From: field\n"
" -h use mailhost:port as the SMTP server\n"
" -s set the Subject: field\n"
break;
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
Dmsg1(20, "Debug level = %d\n", debug_level);
break;
" -b batch mode\n"
" -C catalog name in the director conf file\n"
" -c director conf filename\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -f fix inconsistencies\n"
" -v verbose\n"
" -? print this message\n\n");
break;
case 'd': /* debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0)
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ }
break;
case 'f': /* fix inconsistencies */
"\n"
"Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
" -a print extended attributes (Win32 debug)\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -c specify config file containing FileSet resources\n"
" -f specify which FileSet to use\n"
" -? print this message.\n"
break;
case 'd': /* set debug level */
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
debug_level = atoi(optarg);
if (debug_level <= 0) {
debug_level = 1;
}
+ }
break;
case 'f': /* exclude patterns */
"\n"
"Usage: testls [-d debug_level] [-] [pattern1 ...]\n"
" -a print extended attributes (Win32 debug)\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -e specify file of exclude patterns\n"
" -i specify file of include patterns\n"
" - read pattern(s) from stdin\n"
break;
case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
+++ /dev/null
-VOID:OBJECT,OBJECT
-VOID:OBJECT,STRING,LONG,LONG
-VOID:OBJECT,LONG
-VOID:OBJECT,STRING,STRING
-VOID:UINT,UINT
-BOOLEAN:INT
-BOOLEAN:ENUM
-BOOLEAN:VOID
-OBJECT:VOID
-VOID:VOID
-VOID:INT,INT
-VOID:UINT,UINT
-VOID:BOOLEAN
-VOID:OBJECT,ENUM,BOXED
-VOID:BOXED
-BOOLEAN:BOOLEAN
-BOOLEAN:OBJECT,STRING,STRING
"\nVersion: %s (%s) %s %s %s\n\n"
"Usage: tray-monitor [-c config_file] [-d debug_level]\n"
" -c <file> set configuration file to file\n"
-" -dnn set debug level to nn\n"
+" -d <nn> set debug level to <nn>\n"
+" -dt print timestamp in debug output\n"
" -t test - read configuration and exit\n"
" -? print this message.\n"
"\n"), 2004, VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
break;
case 'd':
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
+ if (*optarg == 't') {
+ dbg_timestamp = true;
+ } else {
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
}
break;
#undef VERSION
#define VERSION "2.3.6"
-#define BDATE "16 October 2007"
-#define LSMDATE "16Oct07"
+#define BDATE "19 October 2007"
+#define LSMDATE "19Oct07"
#define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
#define BYEAR "2007" /* year for copyright messages in progs */
Technical notes on version 2.3
General:
+19Oct07
+kes Make explicit exception to GPL in LICENSE to permit linking
+ the Win32 FD with Microsoft VSS code.
+kes Apply the Solaris package patch from
+ Masopust, Christian <christian.masopust@siemens.com>
+kes Apply the patch to optionally add a timestamp in the debug output
+ submitted by Mariusz Czulada <manieq@wp.eu>.
18Oct07
ebl Use PQerrorMessage instead of PQresultErrorMessage in postgresql
- backend (sql_strerror). Fixe bug #989
+ backend (sql_strerror). Fixes bug #989
16Oct07
+kes Apply Michael Short's <mdshort@gmail.com> Win32 regress patch.
+ It applied with no problems.
kes Add PATH command to SunOS part of mtx-changer.in so that sed and
awk are on the path.
kes Redirect stderror to stdin on mt status command in mtx-changer.in
program.
kes Move patches into patches directory.
11Sep07
-ebl Fix bug #946 about "bacula-dir -t" which doesn't works
+ebl Fix bug #946 about 'bacula-dir -t' which doesn't works
as expected.
09Sep07
-ebl Using "m" in bconsole will show messages like before,
+ebl Using 'm' in bconsole will show messages like before,
and not memory usage.
kes Fix bug #935, and probably also bug #903 where files were not
restored. MediaId was not properly set in JobMedia record after