]> git.sur5r.net Git - bacula/bacula/commitdiff
24Feb05
authorKern Sibbald <kern@sibbald.com>
Fri, 25 Feb 2005 09:19:05 +0000 (09:19 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 25 Feb 2005 09:19:05 +0000 (09:19 +0000)
- Fix an ASSERT that was triggering in stored/acquire.c
  attempt to fix a bug report.
23Feb05
- Corrected SunOs to SunOS in btraceback (user submitted).
- Applied patch from Roger HÃ¥kansson <hson@ludd.luth.se>
  to warn the user of defective AWKs during ./configure.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1839 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/autoconf/configure.in
bacula/configure
bacula/kernstodo
bacula/scripts/bacula.in
bacula/scripts/btraceback.in
bacula/src/stored/acquire.c
bacula/src/stored/block.c
bacula/src/stored/dvd.c
bacula/src/stored/status.c
bacula/src/version.h

index 846afa936d550ab9bb27e91fdffd7b3e5f0e0537..bfdbc7e0355c74725eb4ff99d20ae51677bafde2 100644 (file)
@@ -54,7 +54,6 @@ AC_PATH_PROG(MV, mv, mv)
 AC_PATH_PROG(RM, rm, rm)
 AC_PATH_PROG(CP, cp, cp)
 AC_PATH_PROG(SED, sed, sed)
-AC_PATH_PROG(AWK, awk, awk)
 AC_PATH_PROG(ECHO, echo, echo)
 AC_PATH_PROG(CMP, cmp, cmp)
 AC_PATH_PROG(TBL, tbl, tbl)
@@ -70,6 +69,20 @@ AC_PATH_PROG(PKGCONFIG, pkg-config, pkg-config)
 AC_PATH_PROG(WXCONFIG, wx-config, wx-config)
 AC_PATH_PROG(CDRECORD, cdrecord, cdrecord)
 AC_PATH_PROG(PIDOF, pidof, pidof)
+AC_PROG_AWK
+# Some AWK programs fail, so test it and warn the user
+if echo xfoo | $AWK 'BEGIN { prog=ARGV[1]; ARGC=1 } 
+      { if ((prog == $2) || (("(" prog ")") == $2) ||
+          (("[" prog "]") == $2) ||
+          ((prog ":") == $2)) { print $1 ; exit 0 } }' xfoo>/dev/null; then :;
+else
+  AC_MSG_ERROR([!!!!!!!!! WARNING !!!!!!!!!!!!!!
+   The regex engine of $AWK is too broken to be used you 
+   might want to install GNU AWK.
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!])
+fi
+THE_AWK=$AWK
+AC_PATH_PROG(AWK, $THE_AWK, $THE_AWK)
 
 test -n "$ARFLAG" || ARFLAGS="cr"
 AC_SUBST(ARFLAGS)
index df29d69ca6fa0c979ff52815c95fab74917efdea..4aafe1dbb574be389f9c1529f5c1b40f686babef 100755 (executable)
@@ -309,7 +309,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED AWK ECHO CMP TBL AR OPENSSL MTX MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO PKGCONFIG WXCONFIG CDRECORD PIDOF ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE INSIDE_GNOME_COMMON_TRUE INSIDE_GNOME_COMMON_FALSE MSGFMT GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOMEGNORBA_LIBS GTKXMHTML_LIBS ZVT_LIBS GNOME_CONFIG ORBIT_CONFIG ORBIT_IDL HAVE_ORBIT_TRUE HAVE_ORBIT_FALSE ORBIT_CFLAGS ORBIT_LIBS HAVE_GNORBA_TRUE HAVE_GNORBA_FALSE GNORBA_CFLAGS GNORBA_LIBS GNOME_APPLETS_LIBS GNOME_DOCKLETS_LIBS GNOME_CAPPLET_LIBS GNOME_DIR WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR CDSTL working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password bimagemgr_cgidir bimagemgr_docdir bimagemgr_binowner bimagemgr_bingroup bimagemgr_dataowner bimagemgr_datagroup dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_NAME GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS ALLOCA FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS BUILD_DIR TRUEPRG FALSEPRG VERSION DATE LSMDATE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPP EGREP INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA RANLIB ac_ct_RANLIB MV RM CP SED ECHO CMP TBL AR OPENSSL MTX MKISOFS PYTHON GROWISOFS DVDRWMEDIAINFO PKGCONFIG WXCONFIG CDRECORD PIDOF AWK ARFLAGS MAKE_SHELL LOCAL_LIBS LOCAL_CFLAGS LOCAL_LDFLAGS LOCAL_DEFS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HAVE_SUN_OS_TRUE HAVE_SUN_OS_FALSE HAVE_OSF1_OS_TRUE HAVE_OSF1_OS_FALSE HAVE_AIX_OS_TRUE HAVE_AIX_OS_FALSE HAVE_HPUX_OS_TRUE HAVE_HPUX_OS_FALSE HAVE_LINUX_OS_TRUE HAVE_LINUX_OS_FALSE HAVE_FREEBSD_OS_TRUE HAVE_FREEBSD_OS_FALSE HAVE_NETBSD_OS_TRUE HAVE_NETBSD_OS_FALSE HAVE_OPENBSD_OS_TRUE HAVE_OPENBSD_OS_FALSE HAVE_BSDI_OS_TRUE HAVE_BSDI_OS_FALSE HAVE_SGI_OS_TRUE HAVE_SGI_OS_FALSE HAVE_IRIX_OS_TRUE HAVE_IRIX_OS_FALSE HAVE_DARWIN_OS_TRUE HAVE_DARWIN_OS_FALSE INSIDE_GNOME_COMMON_TRUE INSIDE_GNOME_COMMON_FALSE MSGFMT GNOME_INCLUDEDIR GNOMEUI_LIBS GNOME_LIBDIR GNOME_LIBS GNOMEGNORBA_LIBS GTKXMHTML_LIBS ZVT_LIBS GNOME_CONFIG ORBIT_CONFIG ORBIT_IDL HAVE_ORBIT_TRUE HAVE_ORBIT_FALSE ORBIT_CFLAGS ORBIT_LIBS HAVE_GNORBA_TRUE HAVE_GNORBA_FALSE GNORBA_CFLAGS GNORBA_LIBS GNOME_APPLETS_LIBS GNOME_DOCKLETS_LIBS GNOME_CAPPLET_LIBS GNOME_DIR WXCONS_CPPFLAGS WXCONS_LDFLAGS WX_DIR TRAY_MONITOR_CPPFLAGS TRAY_MONITOR_LDFLAGS TRAY_MONITOR_DIR TTOOL_LDFLAGS STATIC_FD STATIC_SD STATIC_DIR STATIC_CONS STATIC_GNOME_CONS STATIC_WX_CONS ALL_DIRS CONS_INC CONS_OBJ CONS_SRC CONS_LIBS CONS_LDFLAGS READLINE_SRC PYTHON_LIBS PYTHON_INCDIR CDSTL working_dir scriptdir dump_email job_email smtp_host piddir subsysdir baseport dir_port fd_port sd_port dir_password fd_password sd_password mon_dir_password mon_fd_password mon_sd_password bimagemgr_cgidir bimagemgr_docdir bimagemgr_binowner bimagemgr_bingroup bimagemgr_dataowner bimagemgr_datagroup dir_user dir_group sd_user sd_group fd_user fd_group SBINPERM SQL_LFLAGS SQL_INCLUDE SQL_BINDIR cats DB_NAME GETCONF ac_ct_GETCONF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS ALLOCA FDLIBS DEBUG DINCLUDE DLIB DB_LIBS WCFLAGS WLDFLAGS OBJLIST hostname TAPEDRIVE PSCMD WIN32 MACOSX DISTNAME DISTVER LTLIBOBJS'
 ac_subst_files='MCOMMON'
 
 # Initialize some variables set by options.
@@ -3518,46 +3518,6 @@ else
 echo "${ECHO_T}no" >&6
 fi
 
-# Extract the first word of "awk", so it can be a program name with args.
-set dummy awk; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $AWK in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_AWK="$AWK" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_path_AWK" && ac_cv_path_AWK="awk"
-  ;;
-esac
-fi
-AWK=$ac_cv_path_AWK
-
-if test -n "$AWK"; then
-  echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
 # Extract the first word of "echo", so it can be a program name with args.
 set dummy echo; ac_word=$2
 echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -4118,6 +4078,103 @@ else
 echo "${ECHO_T}no" >&6
 fi
 
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+# Some AWK programs fail, so test it and warn the user
+if echo xfoo | $AWK 'BEGIN { prog=ARGV1; ARGC=1 }
+      { if ((prog == $2) || (("(" prog ")") == $2) ||
+          (("" prog "") == $2) ||
+          ((prog ":") == $2)) { print $1 ; exit 0 } }' xfoo>/dev/null; then :;
+else
+  { { echo "$as_me:$LINENO: error: !!!!!!!!! WARNING !!!!!!!!!!!!!!
+   The regex engine of $AWK is too broken to be used you
+   might want to install GNU AWK.
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >&5
+echo "$as_me: error: !!!!!!!!! WARNING !!!!!!!!!!!!!!
+   The regex engine of $AWK is too broken to be used you
+   might want to install GNU AWK.
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+THE_AWK=$AWK
+# Extract the first word of "$THE_AWK", so it can be a program name with args.
+set dummy $THE_AWK; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $AWK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AWK="$AWK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_AWK" && ac_cv_path_AWK="$THE_AWK"
+  ;;
+esac
+fi
+AWK=$ac_cv_path_AWK
+
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
 
 test -n "$ARFLAG" || ARFLAGS="cr"
 
@@ -22252,7 +22309,6 @@ s,@MV@,$MV,;t t
 s,@RM@,$RM,;t t
 s,@CP@,$CP,;t t
 s,@SED@,$SED,;t t
-s,@AWK@,$AWK,;t t
 s,@ECHO@,$ECHO,;t t
 s,@CMP@,$CMP,;t t
 s,@TBL@,$TBL,;t t
@@ -22267,6 +22323,7 @@ s,@PKGCONFIG@,$PKGCONFIG,;t t
 s,@WXCONFIG@,$WXCONFIG,;t t
 s,@CDRECORD@,$CDRECORD,;t t
 s,@PIDOF@,$PIDOF,;t t
+s,@AWK@,$AWK,;t t
 s,@ARFLAGS@,$ARFLAGS,;t t
 s,@MAKE_SHELL@,$MAKE_SHELL,;t t
 s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t
index 2348d10e62430827f2246f458b4f6b361bb11940..29521136d20d472a67f5732eef0eb6db33607fb9 100644 (file)
@@ -1,5 +1,5 @@
                     Kern's ToDo List
-                     23 January 2005
+                     22 February 2005
 
 Major development:      
 Project                     Developer
@@ -30,6 +30,9 @@ Suggestions for Preben:
 - Optimized bootstrap.
 
 For 1.37:
+- Device resource needs the "name" of the SD.
+- Add and option to see if the file size changed
+  during backup.
 - Implement "update device" from SD so that DIR will
   always have current version of device.
 - Add disk seeking on restore.  
index b530ad8cf3b2af66b1c6937d922216b227ef7e40..96975173839526ee952c9520aec0fe9a553f16df 100755 (executable)
@@ -15,7 +15,7 @@ PSCMD="@PSCMD@"
 # On Solaris, you may need to use nawk, or alternatively,
 #  add the GNU binaries to your path, such as /usr/xpg4/bin
 #
-AWK=awk
+AWK=@AWK@
 
 # All these are not *really* needed but it makes it
 #  easier to "steal" this code for the development 
index 656e8b31efaddb8d3bed126d691e8a397ba5c3e1..36e9eca8e16d9ad4af7454c4e615d09ae50992b7 100755 (executable)
@@ -9,7 +9,7 @@
 #  $2 = main pid of running program to be traced back.
 #
 PNAME=`basename $1`
-if test `uname -s` = SunOs ; then
+if test `uname -s` = SunOS ; then
   gcore -o @working_dir@/${PNAME} $2
   dbx $1 $2 <@scriptdir@/btraceback.dbx 2>&1 \
    | @sbindir@/bsmtp -h @smtp_host@ -s "Bacula DBX traceback of ${PNAME}" @dump_email@
index 94ddeb09769a34bcabc9c3c5607df268faaf229a..599af52a2d8d8fef225905750665b7062a717174 100644 (file)
@@ -286,6 +286,7 @@ default_path:
    }
 
    dev->state &= ~ST_APPEND;         /* clear any previous append mode */
+   dev->num_writers = 0;
    dev->state |= ST_READ;            /* set read mode */
    set_jcr_job_status(jcr, JS_Running);
    dir_send_job_status(jcr);
@@ -329,7 +330,7 @@ bool reserve_device_for_append(JCR *jcr, DEVICE *dev)
       goto get_out;
    }
    Dmsg1(190, "reserve_append device is %s\n", dev_is_tape(dev)?"tape":"disk");
-   if (dev->can_append()) {
+   if (dev->can_append() || dev->num_writers > 0) {
       Dmsg0(190, "device already in append.\n");
       /*
        * Device already in append mode
index 47efa0ff00c7627e12bada0d4dc908b1eba8e93a..9ccad4999e10ca9b6b88970d9b25a119fb42831e 100644 (file)
@@ -413,7 +413,7 @@ bool write_block_to_dev(DCR *dcr)
       Jmsg(jcr, M_FATAL, 0,  _("Cannot write block. Device at EOM.\n"));
       return false;
    }
-   if (!(dev->state & ST_APPEND)) {
+   if (!dev->can_append()) {
       dev->dev_errno = EIO;
       Jmsg(jcr, M_FATAL, 0, _("Attempt to write on read-only Volume.\n"));
       return false;
index 7d46115f97576d520852fa21beba76e7ebd0ace1..495ecefa89592228ff909f000002578d201cd01d 100644 (file)
@@ -462,7 +462,7 @@ int open_next_part(DEVICE *dev) {
    dev->part_start += dev->part_size;
    dev->part++;
    
-   if ((dev->num_parts < dev->part) && (dev->state & ST_APPEND)) {
+   if ((dev->num_parts < dev->part) && dev->can_append()) {
       dev->num_parts = dev->part;
       
       /* Check that the next part file does not exists.
index d09b93cf650da26fe6c845955d1e384f692c7437..7ebbd19666295323d6ba459979c4e4cae779f51a 100644 (file)
@@ -106,7 +106,7 @@ bool status_cmd(JCR *jcr)
             bnet_fsend(user, _("Device \"%s\" open but no Bacula volume is mounted.\n"), dev_name(dev));
         }
         send_blocked_status(jcr, dev);
-        if (dev_state(dev, ST_APPEND)) {
+        if (dev->can_append()) {
            bpb = dev->VolCatInfo.VolCatBlocks;
            if (bpb <= 0) {
               bpb = 1;
index aa58181eddc9f4073d9925fae23c6f10b88c6de4..ff33c08bd17408f7ea8d293e4159b975d95e1cef 100644 (file)
@@ -1,8 +1,8 @@
 /* */
 #undef  VERSION
 #define VERSION "1.37.4"
-#define BDATE   "20 February 2005"
-#define LSMDATE "20Feb05"
+#define BDATE   "24 February 2005"
+#define LSMDATE "24Feb05"
 
 /* Debug flags */
 #undef  DEBUG