]> git.sur5r.net Git - bacula/bacula/commitdiff
Implement savecwd.h and savecwd.c. Remove FSF versions.
authorKern Sibbald <kern@sibbald.com>
Sat, 1 Sep 2007 09:01:26 +0000 (09:01 +0000)
committerKern Sibbald <kern@sibbald.com>
Sat, 1 Sep 2007 09:01:26 +0000 (09:01 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5429 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/findlib/Makefile.in
bacula/src/findlib/find.h
bacula/src/findlib/makepath.c
bacula/src/findlib/save-cwd.c [deleted file]
bacula/src/findlib/save-cwd.h [deleted file]
bacula/src/findlib/savecwd.c [new file with mode: 0644]
bacula/src/findlib/savecwd.h [new file with mode: 0644]
bacula/src/version.h
bacula/technotes-2.1 [deleted file]
bacula/technotes-2.3

index d1e2950faaded19f499dc059f084b7b3e5e45307..89c6354c34466966528655ea1a6cf0a0c9737cd5 100644 (file)
@@ -23,9 +23,11 @@ dummy:
 
 #
 LIBSRCS = find.c match.c find_one.c attribs.c create_file.c \
-         bfile.c drivetype.c enable_priv.c fstype.c makepath.c save-cwd.c
+         bfile.c drivetype.c enable_priv.c fstype.c makepath.c \
+         savecwd.c
 LIBOBJS = find.o match.o find_one.o attribs.o create_file.o \
-         bfile.o drivetype.o enable_priv.o fstype.o makepath.o save-cwd.o
+         bfile.o drivetype.o enable_priv.o fstype.o makepath.o \
+         savecwd.o
 
 .SUFFIXES:     .c .o
 .PHONY:
index da2cd97d1660499eb2576f189e0109ba3245f83b..cd6d8c543ebb0aefacde8b4de6cb2c17e16c8af3 100644 (file)
@@ -63,8 +63,6 @@ struct utimbuf {
 #include <regex.h>
 #endif
 
-#include "save-cwd.h"
-
 #ifndef HAVE_READDIR_R
 int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
 #endif
index 87926a005556cd82a7813a2031e765819fc1735f..24321ced55789fee4bfcec89c2e65022f40a0d05 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "bacula.h"
 #include "jcr.h"
-#include "save-cwd.h"
+#include "savecwd.h"
 
 
 #if !defined(S_ISDIR) && defined(S_IFDIR)
 
 extern void strip_trailing_slashes();
 
-static int
-cleanup(struct saved_cwd *cwd)
-{
-   if (cwd->do_chdir) {
-      int _fail = restore_cwd(cwd, NULL, NULL);
-      free_cwd(cwd);
-      if (_fail) {
-         return 1;
-      }
-   }
-   return 0;
-}
-
-
 /* Attempt to create directory DIR (aka DIRPATH) with the specified MODE.
    If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P to non-zero if this
    function creates DIR and to zero otherwise.  Give a diagnostic and
@@ -187,7 +173,7 @@ make_path(
         struct ptr_list *next;
       };
       struct ptr_list *p, *leading_dirs = NULL;
-      struct saved_cwd cwd;
+      saveCWD cwd;
       char *basename_dir;
       char *dirpath;
 
@@ -215,7 +201,6 @@ make_path(
 #if defined(HAVE_WIN32)
       /* chdir can fail if permissions are sufficiently restricted since I don't think
          backup/restore security rights affect ChangeWorkingDirectory */
-      cwd.do_chdir = 0;
 
       /* Validate drive letter */
       if (dirpath[1] == ':') {
@@ -241,7 +226,7 @@ make_path(
 #else
       /* If we can record the current working directory, we may be able
          to do the chdir optimization.  */
-      cwd.do_chdir = !save_cwd(&cwd);
+      cwd.save(jcr);
 
       slash = dirpath;
 #endif
@@ -249,8 +234,8 @@ make_path(
       /* If we've saved the cwd and DIRPATH is an absolute pathname,
          we must chdir to `/' in order to enable the chdir optimization.
          So if chdir ("/") fails, turn off the optimization.  */
-      if (cwd.do_chdir && isAbsolute(dirpath) && (chdir("/") < 0)) {
-         cwd.do_chdir = 0;
+      if (cwd.is_saved() && isAbsolute(dirpath) && (chdir("/") < 0)) {
+         cwd.release();
       }
 
       /* Skip over leading slashes.  */
@@ -270,7 +255,7 @@ make_path(
 
           /* If we're *not* doing chdir before each mkdir, then we have to refer
              to the target using the full (multi-component) directory name.  */
-          if (!cwd.do_chdir) {
+          if (!cwd.is_saved()) {
              basename_dir = dirpath;
           }
 
@@ -278,7 +263,7 @@ make_path(
           fail = make_dir(jcr, basename_dir, dirpath, tmp_mode, &newly_created_dir);
           if (fail) {
               umask(oldmask);
-              cleanup(&cwd);
+              cwd.restore(jcr);
               return 1;
           }
 
@@ -312,12 +297,13 @@ make_path(
              then we can use chdir to change into each directory before
              creating an entry in that directory.  This avoids making
              stat and mkdir process O(n^2) file name components.  */
-          if (cwd.do_chdir && chdir(basename_dir) < 0) {
+          if (cwd.is_saved() && chdir(basename_dir) < 0) {
               berrno be;
               Jmsg(jcr, M_ERROR, 0, _("Cannot chdir to directory, %s: ERR=%s\n"),
                      quote(dirpath), be.bstrerror());
               umask(oldmask);
-              cleanup(&cwd);
+
+              cwd.restore(jcr);
               return 1;
           }
 
@@ -329,7 +315,7 @@ make_path(
             slash++;
       } /* end while (1) */
 
-      if (!cwd.do_chdir) {
+      if (!cwd.is_saved()) {
          basename_dir = dirpath;
       }
 
@@ -339,7 +325,7 @@ make_path(
       Dmsg1(300, "Create final component. mode=%o\n", mode);
       if (make_dir(jcr, basename_dir, dirpath, mode, NULL)) {
           umask(oldmask);
-          cleanup(&cwd);
+          cwd.restore(jcr);
           return 1;
       }
 
@@ -373,7 +359,7 @@ make_path(
              quote(dirpath), be.bstrerror());
       }
 
-     if (cleanup(&cwd)) {
+     if (!cwd.restore(jcr)) {
         return 1;
      }
 
diff --git a/bacula/src/findlib/save-cwd.c b/bacula/src/findlib/save-cwd.c
deleted file mode 100644 (file)
index 248f0ff..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* save-cwd.c -- Save and restore current working directory.
-
-   Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-/* Written by Jim Meyering <meyering@na-net.ornl.gov>.  */
-
-#include "bacula.h"
-#include "save-cwd.h"
-
-
-
-/* Record the location of the current working directory in CWD so that
-   the program may change to other directories and later use restore_cwd
-   to return to the recorded location.  This function may allocate
-   space using malloc (via xgetcwd) or leave a file descriptor open;
-   use free_cwd to perform the necessary free or close.  Upon failure,
-   no memory is allocated, any locally opened file descriptors are
-   closed;  return non-zero -- in that case, free_cwd need not be
-   called, but doing so is ok.  Otherwise, return zero.  */
-
-int
-save_cwd(struct saved_cwd *cwd)
-{
-  static int have_working_fchdir = 1;
-
-  cwd->desc = -1;
-  cwd->name = NULL;
-
-  if (have_working_fchdir) {
-#if HAVE_FCHDIR
-      cwd->desc = open(".", O_RDONLY);
-      if (cwd->desc < 0) {
-         berrno be;
-         Emsg1(M_ERROR, 0, _("Cannot open current directory: %s\n"), be.bstrerror());
-         return 1;
-      }
-
-# if __sun__ || sun
-      /* On SunOS 4, fchdir returns EINVAL if accounting is enabled,
-         so we have to fall back to chdir.  */
-      if (fchdir(cwd->desc)) {
-          if (errno == EINVAL) {
-              close(cwd->desc);
-              cwd->desc = -1;
-              have_working_fchdir = 0;
-          } else {
-              berrno be;
-              Emsg1(M_ERROR, 0, _("Current directory: %s\n"), be.bstrerror());
-              close(cwd->desc);
-              cwd->desc = -1;
-              return 1;
-          }
-      }
-# endif /* __sun__ || sun */
-#else
-# define fchdir(x) (abort (), 0)
-      have_working_fchdir = 0;
-#endif
-    }
-
-  if (!have_working_fchdir) {
-#ifdef HAVE_WIN32
-      POOLMEM *buf = get_memory(MAX_PATH);
-#else
-      POOLMEM *buf = get_memory(5000);
-#endif
-      cwd->name = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf));
-      if (cwd->name == NULL) {
-         berrno be;
-         Emsg1(M_ERROR, 0, _("Cannot get current directory: %s\n"), be.bstrerror());
-         free_pool_memory(buf);
-         return 1;
-      }
-  }
-  return 0;
-}
-
-/* Change to recorded location, CWD, in directory hierarchy.
-   If "saved working directory", NULL))
-   */
-
-int
-restore_cwd(const struct saved_cwd *cwd, const char *dest, const char *from)
-{
-  int fail = 0;
-  if (cwd->desc >= 0) {
-      if (fchdir(cwd->desc)) {
-         berrno be;
-         if (from) {
-            if (dest) {
-               Emsg3(M_ERROR, 0, _("Cannot return to %s from %s: %s\n"),
-                  dest, from, be.bstrerror());
-            }
-            else {
-               Emsg2(M_ERROR, 0, _("Cannot return to saved working directory from %s: %s\n"),
-                  from, be.bstrerror());
-            }
-         }
-         else {
-            if (dest) {
-               Emsg2(M_ERROR, 0, _("Cannot return to %s: %s\n"),
-                  dest, be.bstrerror());
-            }
-            else {
-               Emsg1(M_ERROR, 0, _("Cannot return to saved working directory: %s\n"),
-                  be.bstrerror());
-            }
-         }
-         fail = 1;
-      }
-  } else if (chdir(cwd->name) < 0) {
-      berrno be;
-      Emsg2(M_ERROR, 0, "%s: %s\n", cwd->name, be.bstrerror());
-      fail = 1;
-  }
-  return fail;
-}
-
-void
-free_cwd(struct saved_cwd *cwd)
-{
-  if (cwd->desc >= 0) {
-     close(cwd->desc);
-  }
-  if (cwd->name) {
-     free_pool_memory(cwd->name);
-  }
-}
diff --git a/bacula/src/findlib/save-cwd.h b/bacula/src/findlib/save-cwd.h
deleted file mode 100644 (file)
index ad2fc65..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-   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 and included
-   in the file LICENSE.
-
-   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 Zürich,
-   Switzerland, email:ftf@fsfeurope.org.
-*/
-
-
-#ifndef SAVE_CWD_H
-# define SAVE_CWD_H 1
-
-struct saved_cwd
-  {
-    int do_chdir;
-    int desc;
-    char *name;
-  };
-
-int save_cwd(struct saved_cwd *cwd);
-int restore_cwd(const struct saved_cwd *cwd, const char *dest,
-                         const char *from);
-void free_cwd(struct saved_cwd *cwd);
-
-#endif
diff --git a/bacula/src/findlib/savecwd.c b/bacula/src/findlib/savecwd.c
new file mode 100644 (file)
index 0000000..6e8bab8
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2007 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 and included
+   in the file LICENSE.
+
+   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 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+
+/*
+ *  Kern Sibbald, August MMVII
+ *
+ *  Version $Id$
+ */
+
+#include "bacula.h"
+#include "savecwd.h"
+
+/* 
+ * Attempt to save the current working directory by various means so that
+ *  we can optimize code by doing a cwd and then restore the cwd.
+ */
+
+#ifdef HAVE_FCHDIR
+static bool fchdir_failed = false;          /* set if we get a fchdir failure */
+#else
+static bool fchdir_failed = true;           /* set if we get a fchdir failure */
+#endif
+
+/* 
+ * Save current working directory.
+ * Returns: true if OK
+ *          false if failed
+ */
+bool saveCWD::save(JCR *jcr)
+{
+   release();                                /* clean up */
+   if (!fchdir_failed) {
+      m_fd = open(".", O_RDONLY);
+      if (m_fd < 0) {
+         berrno be;
+         Jmsg1(jcr, M_ERROR, 0, _("Cannot open current directory: ERR=%s\n"), be.bstrerror());
+         m_saved = false;
+         return false;
+      }
+   }
+
+   if (fchdir_failed) {
+      POOLMEM *buf = get_memory(5000);
+      m_cwd = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf));
+      if (m_cwd == NULL) {
+         berrno be;
+         Jmsg1(jcr, M_ERROR, 0, _("Cannot get current directory: ERR=%s\n"), be.bstrerror());
+         free_pool_memory(buf);
+         m_saved = false;
+         return false;
+      }
+   }
+   m_saved = true;
+   return true;
+}
+
+/*
+ * Restore previous working directory.
+ * Returns: true if OK
+ *          false if failed
+ */
+bool saveCWD::restore(JCR *jcr)
+{
+   if (!m_saved) {
+      return true;
+   }
+   m_saved = false;
+   if (m_fd >= 0) {
+      if (fchdir(m_fd) != 0) {
+         berrno be;
+         Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror());
+         close(m_fd);
+         m_fd = -1;
+         fchdir_failed = true;
+         chdir("/");                  /* punt */
+         return false;
+      }
+      return true;
+   }
+   if (chdir(m_cwd) < 0) {
+      berrno be;
+      Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror());
+      chdir("/");
+      free_pool_memory(m_cwd);
+      m_cwd = NULL;
+      return false;
+   }
+   return true;
+}       
+
+void saveCWD::release()
+{
+   if (!m_saved) {
+      return;
+   }
+   m_saved = false;
+   if (m_fd >= 0) {
+      close(m_fd);
+      m_fd = -1;
+   }
+   if (m_cwd) {
+      free_pool_memory(m_cwd);
+      m_cwd = NULL;
+   }
+}
diff --git a/bacula/src/findlib/savecwd.h b/bacula/src/findlib/savecwd.h
new file mode 100644 (file)
index 0000000..46c94f3
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2007-2007 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 and included
+   in the file LICENSE.
+
+   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 Zürich,
+   Switzerland, email:ftf@fsfeurope.org.
+*/
+
+/*
+ *  Kern Sibbald, August MMVII
+ *
+ *  Version $Id$
+ */
+
+#ifndef _SAVECWD_H
+#define _SAVECWD_H 1
+
+class saveCWD {
+   bool m_saved;                   /* set if we should do chdir i.e. save_cwd worked */
+   int m_fd;                       /* fd of current dir before chdir */
+   char *m_cwd;                    /* cwd before chdir if fd fchdir() works */
+
+public:
+   saveCWD() { m_saved=false; m_fd=-1; m_cwd=NULL; };
+   ~saveCWD() { release(); };
+   bool save(JCR *jcr);
+   bool restore(JCR *jcr);
+   void release();
+   bool is_saved() { return m_saved; };
+};
+
+#endif /* _SAVECWD_H */
index 67388ea7a6d2d292ab5718d2048bffd83a05e4be..1b8864edec5b2f7a4f061d1d06fa8694cfdca530 100644 (file)
@@ -3,9 +3,9 @@
  */
 
 #undef  VERSION
-#define VERSION "2.2.1"
-#define BDATE   "30 August 2007"
-#define LSMDATE "30Aug07"
+#define VERSION "2.3.2"
+#define BDATE   "01 September 2007"
+#define LSMDATE "01Sep07"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2007"       /* year for copyright messages in progs */
@@ -46,7 +46,7 @@
 #define TRACE_FILE 1
 
 /* If this is set stdout will not be closed on startup */
-/* #define DEVELOPER 1 */
+#define DEVELOPER 1
 
 /*
  * SMCHECK does orphaned buffer checking (memory leaks)
diff --git a/bacula/technotes-2.1 b/bacula/technotes-2.1
deleted file mode 100644 (file)
index 00d106e..0000000
+++ /dev/null
@@ -1,1050 +0,0 @@
-              Technical notes on version 2.3
-
-General:
-Release Version 2.2.1
-30Aug07
-kes  Update POTFILES.in
-kes  Cleanup a few underquoted AC_DEFUNs in configure   
-kes  Apply patch from Martin Simmons that adds a test for va_copy to
-     ./configure
-29Aug07
-kes  Fix bug #921 by increasing the number of tries to create a new volume
-     from 11 to 100.
-kes  Rework bmsg in ua_output to use va_copy() so that bvsnprintf()
-     can be called multiple times.  Implement a version for machines
-     without va_copy() that gets a big buffer.
-25Aug07
-kes  Integrate more portable zone offset code into bsmtp.c
-     Submitted by Attila Fülöp.
-24Aug07
-kes  Fix bad SD->FD return status reported by 
-     (James Harper) <james.harper@bendigoit.com.au>
-ebl  Fix a bug in read_close_session which return random status
-     thanks to James Harper
-23Aug07
-kes  Fix (hopefully) bug #930 by doing a db_escape_string() on file  
-     and directory names during restore of single file/directories.
-kes  Add sanity checks to .sql command when string is empty. Hopefully
-     that will resolve Dirks Director crash.
-22Aug07 
-kes  Apply patch submitted by Martin Simmons that corrects a seg fault
-     in the bsmtp chat subroutine when debug is >= 10.
-21Aug07
-kes  Fix Director crash when running bat SQL queries.
-kes  Add David's notes on Item 8: Copy pools.
-18Aug07
-kes  Rework projects file to be current and ready for a vote.
-kes  Enhance lex scanner error message.
-17Aug07
-kes  Tweak LICENSE file to mention BSD code.
-kes  Fix bat.pro.in so that it includes the OpenSSL libraries only
-     if specified on the ./configure.
-kes  Add first (not yet tested) cut of bcomm to the qt-console directory.
-     This class is intended to allow us to open a second bsock to the
-     Director while in the restore subdialog.  
-16Aug07
-kes  Fix configure to create bat Makefile before creating dependencies.
-kes  Eliminate the egg files from the tray-monitor. Use gtk calls.
-kes  Add a tooltip to the tray monitor.
-dvl  Set the Director's PID file before dropping privs. This fixes
-     bug #923.
-15Aug07
-kes  Update AUTHORs file
-kes  Increase the default max concurrent jobs to 20 in FD and SD to
-     correspond with the default .conf files.
-kes  Rewrite the Win32 service routines.  This eliminates the 3 copies
-     some different, of the same file created by RN when porting the 
-     Win32 SD and Dir.
-kes  Rearrange some of the Win32 directories and the placement of the files
-     in them.
-kes  Set DEVELOPER flag in version.h
-
-========================================================================
-Release Version 2.2.0
-09Aug07
-kes  Apply a second doc patch from Marc.
-kes  Apply a doc patch from Marc Schiffbauer <marc@schiffbauer.net> that
-     improves the tips section that discusses how to setup multiple
-     simultaneous jobs.
-08Aug07
-kes  Update bat README file.
-kes  Apply patch from Allan Black <Allan.Black@btconnect.com> that     
-     corrects a typo in the Recycle status check in db_find_next_volume().
-     This will probably fix a number of annoying problems with multiple
-     Recycled volumes.
-kes  Modify most of dird/msgchan.c to use bsock class calls rather than
-     bnet calls -- no functionality change.
-07Aug07 
-kes  Modify the Verify output to specify if files are missing on    
-     the Volume(s) or disk.  Fixes confusion in bug #916.
-kes  When more than one Volume is read in a migration job, the last
-     Volume bytes reported are from the last read volume rather than
-     the last written volume. Fixed. This fixes bug #910.
-kes  Fix display of Recycle flag after update volume=foo recycle=yes.
-     It previously printed New Recyle flag is: no. This fixes bug
-     #917.
-06Aug07
-kes  Correct seg fault when switching tape drives during restore.
-kes  Commit uid_gid_name.c (replacement for idcache.c), but will not
-     be used until after 2.2.0 release.
-04Aug07
-kes  Remove fnmatch() in SD that permitted wild card specifications.
-     This fixes bug #914.
-31Jul07
-kes  Fix %g in filename returned by SQL for browse tree reported by
-     Dirk.
-kes  Fix configure so that it puts config.out in the cwd rather than
-     in src/qt-console
-kes  Attempt to fix the locking problem reported by Eric in bug #906.
-kes  Make berrno class to leave errno unchanged after constructor call.
-kes  Make bnet_server use the heap rather than the stack to allocate
-     its socket fd pointers to avoid a crash at termination. Problem
-     reported by Ryan Novosielski and bugs pointed out by Martin Simmons.
-30Jul07 
-kes  Create new depkgs and depkgs-qt separating the qwt out of depkgs
-     and putting it in depkgs-qt along with Qt4.3.
-29Jul07
-kes  Rework code in acquire.c that switches drives for reading when
-     the Media Type does not match. This should fix bug #906
-28Jul07
-ebl  Fix a director segfault during job setup #907
-kes  Correct seg fault in postgresql when first operation returns no
-     rows.  Fixes Dirks File browser problem seg fault with bat.
-25Jul07
-kes  Apply patch from Felix Schwarz <Felix.Schwarz@web.de> that allows
-     building wxconsole on Fedora 7 with wxWidgets 2.8 (it works with
-     2.6 as well).
-24Jul07 
-kes  Implement PopUp YES/NO dialog for bat.
-23Jul07
-ebl  Fix a compilation bug when using #define BACL_WANT_NUMERIC_IDS
-22Jul07
-kes  Correct RunScript to terminate job in FD on failure.
-kes  Change abort_on_error and AbortJobOnError to fail_on_error
-     and FailJobOnError in RunScripts.
-kes  Minor tweaks of code formating in RunScripts, principally to
-     avoid depassing 80 columns.
-21Jul07
-kes  Eliminate one #ifdef Win32 in bsmtp
-kes  Implement grow tool to grow a file for testing very large databases.
-kes  Add big-vol-test to test Bacula seeking with > 5GB.
-Release 2.1.28 beta
-19Jul07
-kes  Modify find_next_volume() to return all values in Media record.
-kes  Ensure that we keep Recycle Pool when moving Scratch volumes.
-
-Release 2.1.28 beta
-18Jul07
-kes  Update Release notes 
-17Jul07
-ebl  fix a bug in get_scratch_volume() report by Andreas Helmcke
-     Warning, in previous beta version, all media get from scratch keep their
-     old retention.
-16Jul07
-kes  Tweaked Win32 installer to remove temp conf files at uninstall time.
-     This should fix bug #842. Made a note to look at removing the temp
-     files at the end of the install.
-kes  Add ability to mount and unmount a file device providing it is
-     marked as being removable and has the appropriate mount and unmount
-     commands defined in the Device resource. This fixes bug #830.
-kes  When applying a storage override, release all previous storage
-     definitions rather than just prepending the new storage.
-     This should prevent a good deal of confusion.
-14Jul07
-kes  Implement ./configure search for qwt libraries.
-13Jul07
-kes  Disable posting the WM_CLOSE message in KillRunningCopy of the 
-     Win32 FD.  This should fix bug #893.
-kes  Remove an unnecessary beep in Win32 init code.
-kes  Update copyright dates in Win32 executable about boxes.
-kes  Replace the FSF copyrighted getopt.c and getopt.h in the Win32
-     code with a BSD getopt.c and getopt.h.
-kes  Remove sched.h from the Win32 compat directory -- not used.
-kes  Remove the Exit menu item from the Win32 tray monitor. If you really
-     need to shut it down, do it through the services panel or the command
-     line.
-kes  Remove some inappropriate Bacula FSFE copyrights.
-ebl  Tweak status client=xxx to be more easy to parse (more like in 2.0.x)
-kes  Fix regress config non-portable test as pointed out by
-     Florian Heigl <florian.heigl@gmail.com>
-kes  Fix PSCMD for HP-UX in configure.in to have proper syntax.
-     as pointed out by Florian Heigl <florian.heigl@gmail.com>
-12Jul07
-kes  Fix missing rctx. prefixes on the Darwin code in src/filed/restore.c
-     Reported by Frank Sweetser.
-
-Release 2.1.26 beta
-12Jul07
-kes  Fix client-only build.
-kes  Integrate client-only fixes for bsys (initgroups) and conio from
-     Sergey Svishchev <svs@ropnet.ru> for the AIX platform.
-kes  Make arguments to get_scratch_volume() in same order as other
-     such calls.
-kes  Rework the prune_volumes() subroutine so that after purging and
-     no volume found in desired pool, it will check for a scratch 
-     volume. This prevents recycling the whole scratch pool.
-kes  Add code to status storage to print boffset_t (largefile support).
-11Jul07
-kes  Move qwt (Graphics libarary for Qt4) to depkgs.
-kes  You now need a --with-qwt=<dir> to be able to build bat.
-kes  Update src/win32/cats/bacula_cats.def to include the new       
-     db_get_query_dbids() call on Win32.
-07Jul07
-kes  Correct a problem when selecting a scratch volume and moving
-     it to another pool that lost some columns.
-kes  Tweak some code in ua_update.c to use POOL_MEM instead of POOLMEM.
-kes  Enhance Autochanger error messages to include Volume and device name.
-kes  Rework prune_volumes() code to take account of InChanger flag,
-     and to handle recycling volumes going to the Scratch pool and
-     current pool because the RecyclePool directive.
-kes  Implement a better and more efficient db_get_query_dbids() to
-     handle creating and passing back a list of DBIds.
-
-Release 2.1.24 beta
-03Jul07
-kes  Start work on new more efficient DBId subroutine. First use
-     will be for recycling volume to Scratch inchanger.
-kes  Increase number of JobIds in pruning from 1000 to 10000. 
-     This to be replaced by above routine.
-kes  Begin implementation of building Qt4 on Win32.
-kes  Correct typo in fix I added for bad TLS shutdown.
-kes  Pull 2.0.3 patches into patches directory.
-kes  Update Release notes.  Include qt-console in line count.
-kes  Update Projects file.
-30Jun07
-kes  Integrate patch from Sergey Svishchev <svs@ropnet.ru> that fixes 
-     bug in migration code where a job that spanned two volumes
-     was migrated twice.
-29Jun07
-kes  Implement new BST_DESPOOLING blocked state. Change from locking
-     during despooling in SD to blocking. This means that other threads
-     can work with the device structure, in particular the reservations
-     system while despooling.
-28Jun07
-kes  Fix return in reservation message queue that missed clearing
-     the jcr lock (implemented 26Jun07 below).
-kes  Rename a number of dev methods to make locking function names
-     a bit clearer.
-kes  Document locking in lock.c. Move lock structures to new file
-     lock.h.
-26Jun07
-kes  Move reservations message lock to lock jcr only this
-     fixes bug #861.
-kes  Move main SD locking code into lock.c (new file).
-kes  Update Win32 build to include lock.c
-
-Release 2.1.22 beta
-26Jun07
-kes  Dirk committed the qwt library code for drawing graphs in bat.
-kes  Tweak install of qwt so that it is integrated with ./configure.
-25Jun07
-kes  Fix HAVE_BATCH_INSERT to be HAVE_BATCH_FILE_INSERT, pointed
-     out by Eric (my typo).
-ebl  Fix configure.in to get batch mode enable
-kes  Return correct string from authenticate.cpp in bat when connecting
-     to Dir.
-kes  Apply patch suggested by Frank Sweetser to fix bug #888 --     
-     spurious line drops when using TLS.  
-kes  Do not file reparse points when restoring a file that already
-     exists -- Win32.
-24Jun07
-kes  Implement Windows reparse points -- similar to directories, but
-     we do not descend into it. This is a first cut. They seem to 
-     be backed up, but restore is not yet tested.
-kes  Remove restore_blocking in tls code when shutting a socket to leave
-     it in blocking mode. Hopefully this will fix the encryption bug  
-     reported by Frank Sweetser.
-kes  When opening a file for backup, tell the OS that we are going to
-     read it sequentially -- optimization.
-kes  Change variable names in authenticate_director() to not conflict
-     with member names in bat. Caused great confusion with compiler,
-     but no warnings.
-23Jun07
-kes  Queue openssl error messages in case of comm problem.
-kes  Do shutdown() call if socket terminated.
-kes  Remove some duplicated code in tls.c
-kes  Move more of the bsock member variables into private and access
-     them with methods.
-kes  Add Frank Sweetser's tls-test to the regression suite.
-22Jun07
-kes  Add Swedish sv.po file
-21Jun07
-kes  Don't print clock skew message in FD if less than 3 seconds diff.
-kes  Add a bit of VSS info to status client.
-kes  Implement a first cut of Vista VSS, using Win2003 code.
-
-Release: 2.1.20 beta
-20Jun07
-kes  Fixed bug #886 (multidrive autochanger: SD doesn't use drive with
-     loaded tape but uses first drive).
-kes  Fixed bug #807 Restore encrypted backup failed on Windows 2003
-     This was indeed a Win32 issue.
-19Jun07 
-kes  Simplify search of autochanger for in-use Volume.  
-kes  Fix exit condition of check for in-use volume.  kes Remove
-     inappropriate my_postgresql_free_result() in db_close()
-     routine.
-kes  Fix bad return in FD when encryption signature not found.
-     Probably caused a crash.
-kes  Inhibit missing encryption signature error messages for 
-     file types where no signature computed.
-kes  Correct inverted check on autochanger in reservation system.
-kes  Tweak debug code in autochanger reservation.
-18Jun07
-kes  Add some additional locking in the cats directory in subroutines
-     that modify packet variables called from batch insert.
-kes  Rework how dcrs are allocated. new_dcr() can now be called
-     with an existing pointer, and it will simply clean it up.
-     This allows the reservation system to test various different
-     devices, and will permit easy device changes.
-kes  A bunch of changes all over to handle new new_dcr() calling
-     sequence.
-kes  Work more on the Volume management in the SD. Remember Volumes
-     for tape drives and for autochangers (even virtual disk changers).
-kes  When looking at the Volume list to reserve a drive, handle 
-     autochanger names correctly by interating through the changer 
-     devices.  Also call the Director to see if a Volume is suitable
-     for the current job.
-kes  Fix some bugs in bscan. Make sure all media records are written.
-     Make sure that valid JobMedia records are written for disk files.
-     Previously they were completely wrong.
-kes  Move source tar files for depkgs-mingw32 to www.bacula.org so
-     that the URLs don't change and so that the developers will all
-     work off the same copy. Rebuild from scrach.
-kes  Upgrade Win32 SQLite3 from 3.3.8 to 3.3.17.
-
-Release: 2.1.18 beta
-16Jun07
-kes  Fix seg fault in FD from incorrect digest size. 
-kes  Fix argument to non-OpenSSL crypto.c subroutine.      
-
-Release: 2.1.16 beta
-16Jun07
-kes  Remove a few malloc()s from the encryption code.
-kes  Use the class calls to bsock in filed/backup.c and restore.c in
-     place of the old bnet_xxx code.
-kes  Implement code that does an on the fly calculation of the  
-     signing digest during restore of encrypted files.  It makes
-     a best guess at the algorithm, and if it is not correct, will
-     then revert to the old code which reads the file after it is
-     restored.
-kes  Implement at least one missing crypto stream in stream_to_ascii()
-kes  Apply patch from William <chowmeined@gmail.com> that fixes bug
-     #877 where a reload with bad syntax causes Dir to exit.
-
-Cut: 2.1.14 beta (not released)
-14Jun07
-kes  Do not free a volume on a tape drive until another volume is
-     mounted and read, or the autochanger unloads the volume.
-     This should help the SD re-use volumes that are already mounted,
-     and should fix bug #886.
-kes  Apply patch from user brettedgar that allows gnome2-console include
-     the OpenSSL libraries, and hence work with SSL.  Fixes bug #885.
-kes  Apply patch from Lucien Weller that fixes day of week calculation
-     because of DST flag problem. Fixes bug #887.
-10Jun07
-kes  Move find_next_appendable_volume() to after acquiring a valid device
-     in reserve.c.  This fixes bug #864 -- confirmed by reporter.
-09Jun07
-kes  Unable to reproduce bug 872. However added additional testing for
-     integer.
-kes  Bug #874 resolved by documenting SQLite limitations.
-kes  Bug #882 resolved by documenting mtx-changer script for new drive code.
-kes  Bug #881 resolved by removing typo in mtx-changer script.
-kes  Made Frank Sweetser's wiki the official Bacula wiki with his
-     approval. Added a link to the wiki on the web page, and implemented
-     a backup from http://paramount.ind.wpi.edu                                          
-08Jun07
-kes  Fix update allfrompool to pass pool name.
-07Jun07
-kes  Convert to pure GPL v2 license.
-kes  Fix sscanf problems reported by Peter Buschman that caused
-     a bus error on Solaris.
-kes  Rework (simplify) the select prompt in bat.
-kes  Move get_jobid_from_tid() into lib and create a 
-     get_jcr_from_tid().
-kes  Use get_jcr_from_tid() to conver all tls Emsg() to Jmsg().  This
-     should definitely fix the problem of lost error messages in the
-     encryption code.
-kes  Remove over zellous addition of FSFE copyright in a few eggxxx files.
-kes  Eliminate tcpd.h from the project. Enclose the #include from the
-     library with extern C ...
-kes  Add print of signal name when a signal is trapped.
-
-Release: 2.1.12 beta
-04Jun07
-kes  Fix a seg fault in the PostgreSQL driver dereferencing a NULL pointer.
-03Jun07
-kes  Implement SQLITE3_INIT_QUERY in version.h that can do an initial
-     query for SQLite3. Use it to set PRAGMA synchronous = OFF. This
-     makes SQLit3 run 30 times faster, though a bit less safe.
-kes  Implement --with-batch-insert in configure and detection of thread
-     safe libraries.  It is on by default, but turned off if no thread
-     safe library (e.g. SQLite 2) is available.
-02Jun07
-kes  Fix Bacula PostgreSQL buffer overruns.
-kes  Do better checking for NULL results returned from PostgreSQL;
-     implement retry for failed queries; clear results buffer after
-     failed query. Hopefully this will correct the PostgreSQL failures.
-01Jun07
-kes  Implement algorithm to handle only one appendable volume with
-     Prefer Mounted Volumes = no.
-kes  Fix a Bacula PostgreSQL bug dereferencing a NULL pointer      
-     returned from a query.
-kes  Make volume lock recursive.
-kes  Implement an additional volume reservation algorithm that
-     starts by considering all reserved volumes then uses the
-     old brute force algorithm of searching the resources to
-     find a suitable device.
-kes  Add new reservations debug code and refine the old code.
-kes  Update the win32/dll/bacula.defs file.
-29May07
-kes  Tweak reservations algorithm to permit a few more cases, i.e.
-     volume reserved, but on different drive, ...
-kes  Enhance SD status to include Pool and Media Type for drive in a
-     more readable format (a bit longer). 
-kes  Fix PostgreSQL double free.
-28May07
-kes  Minor refactoring of restore decryption code.
-kes  Add code to smartall.c to detect double free of a buffer.
-27May07
-kes  Add < > around %r in from field on mail command of bacula-dir.conf.in
-     so that bsmtp will create a correct email address (mailbox only).
-kes  Modify 'memory' command so that the buffers are listed as 'In use'
-     to avoid confusion with Orphaned buffers.
-kes  I reworked the OpenSSL include/lib flags to be handled in     
-     the standard Bacula way, which should fix bug #863 concerning
-     non-standard OpenSSL libraries.
-26May07
-kes  Implement Help Browser window for bat.
-kes  Fix reload bug that reset StorageId to zero.
-25May07
-kes  Fix TLS #ifdefing when TLS turned off.
-kes  Ensure that when labelling a tape with Slot=0 that InChanger
-     is not set.
-kes  Use DISTINCT to make MySQL and PostgreSQL uar_list_temp query        
-     the same.
-kes  Add StartTime to final uar_sel_jobid_temp query so that we can
-     add DISTINCT (required by PostgreSQL).
-kes  Implement BSOCK authenticate_director() method. Eventually will
-     authenicate all daemons.
-kes  Move several more functions into the BSOCK class.
-24May07
-kes  Add code to tell the OS that we no longer need a cached
-     file that we were reading. In findlib/bfile.c.  Also,
-     only cache files that we are reading. Thanks to
-     Tobias Oetiker <tobi@oetiker.ch> for the idea.
-kes  Tweak to bsmtp to eliminate compiler warnings on Win32.
-kes  Implement script to automatically generate cats and dll .def
-     files for Win32 dll.
-kes  Update README.mingw32 to include new .def file generation.
-kes  Correct typo in UTF-8 error message as reported by:
-     jhernandez <julianhernandez@gmail.com>
-kes  Add additional sm_check() code on debug level 1.
-kes  Set default debug level to 1.
-kes  Trap SIGABRT in attempt to get traceback.
-23May07
-kes  Reduce bat connect timeout from 30 to 15 seconds.
-kes  More restructuring and implementing BSOCK class in place of
-     old bnet.c code.
-kes  Remove a few unnecessary malloc() tests in crypto code.
-kes  Turn off crypto calls for > 128 bits in crypto.c if HAVE_SHA2
-     not defined. Bug reported by Allan Black <Allan.Black@btconnect.com>
-kes  Remove duplicate HAVE_CRYPTO definition in config.h.in
-22May07
-kes  Fix Verify InitCatalog mysql_escape_string() trashing memory.
-     Make buffer bigger.
-kes  Fix Verify InitCatalog. The attributes were not pointing to the
-     correct saved location.
-kes  Implement message callback so that GUI is sure to get all
-     daemon messages. Currently displayed in a dialog in bat.
-kes  Ignore SIGUSR2 (Bacula timer) in bat.
-kes  Apply regress patch from bug #859 to allow regress to work 
-     with Solaris compiler.
-21May07
-kes  Begin adding TLS support to bat.
-kes  Apply UTF-8/16 patch from Yves Orton <demerphq@gmail.com> to
-     clean up lex.c and make it more readable.
-20May07
-kes  Move more bnet functions into the BSOCK class.
-kes  Fix tray-monitor by not requiring a timer interval in bnet_connect()
-kes  Complete change of berrno strerror() method to bstrerror() 
-
-Release: 2.1.10 beta
-18May07
-kes  Cleanup incorrect email addresses in bsmtp.
-kes  Make bat display initial messages rather than discard them.
-16May07
-kes  First cut of adding .mod to the run command.    
-kes  Implement auto display of messages in bat.
-kes  Enhanced preferences to allow all Bacula output to be
-     displayed in bat.
-15May07
-kes  Try to make bsmtp date routines more generic.
-kes  Fixed bug #856 autochanger documentation.
-kes  Rework bsmtp date editing for Win32. This fixes bug #854.
-kes  Add new cats entry point so Win32 builds.
-14May07 
-kes  Attempt to fix bsmtp date editing on OSes without %z editing. 
-     Fixes bug #854.
-kes  Do better checking for the MySQL 64 bit libraries looking for both
-     .a and .so libraries.
-kes  Add a kludge for Ubuntu's non-standard locations for MySQL -- allow
-     /usr/include/mysql/mysql.h AND /usr/lib/... rather than /usr/lib/mysql/...
-kes  Require the thread safe version of MySQL during configure. Thanks
-     to Andre Noll for pointing this out.
-kes  Ensure that calls to find_jobids_from_mediaid_list() check count before
-     continuing in migration code.
-kes  Apply implementation of tray-monitor font derived from gnome-console
-     submitted by Andreas Piesk <a.piesk@gmx.net>
-13May07
-kes  Eliminate important memory loss in SQLite
-kes  Fixed the batch insert MySQL thread specific data that was not
-     being freed. See cats/mysql.c:db_thread_cleanup().
-kes  Fix restore before command.
-kes  Convert old hdr.name to name() in a few places.
-kes  Implement update jobid command.
-kes  Return all time_t dates in db_get_job_record()
-kes  Stop watchdog in SD earlier.
-kes  Put Pool just after Storage in please mount message.
-kes  Fix pointer usage bugs in Verify InitCatalog pointed out by
-     Eric.
-12May07
-kes  Update the po files.
-kes  Fix Verify InitCatalog by making it cache attributes.
-11May07
-kes  Change name bacula-bat to bat for man 1 page to correspond to
-     Makefile.
-kes  Check for client and store NULL pointers in status command.  This
-     fixes bug #845.
-kes  Fix non-ssl build so that it works (add JCR *jcr to crypto structures).
-kes  Fix sign extended editing of %p.
-kes  Clean out a little old #ifdefing in cats/mysql.c
-10May07
-kes  If time diff between DIR and FD is more than 600 seconds convert
-     INFO message to WARNING.
-kes  Implement heap size display in status for all daemons.
-kes  Attempt to fix MySQL db open memory loss (not successfull).
-kes  Don't set SIGKILL and SIGSTOP neither can be trapped.
-kes  Eliminate memory loss in MySQL (possibly other SQLs) during
-     Query. This looks like a MySQL but but by doing extra releases,
-     the memory goes away.  This should fix bug #847.
-09May07 
-kes  When backup fails, cancel SD before waiting for sd termination.
-kes  If SD is waiting for FD to connect during cancel, wake up the 
-     thread.
-kes  Fix fsf code so that errno is correctly reported.
-kes  Apply migration patch (with changes) from Sergey Svishchev <svs@ropnet.ru>
-08May07
-kes  Make lack of Pool directive in Job an ERROR_TERM rather than FATAL
-     so that Bacula doesn't later stumble into a seg fault.
-kes  Use the term Restore Client in the restore Job report.
-kes  Merge patch from Sergey Svishchev <svs@ropnet.ru> that preserves 
-     the original job's FileSetId.
-kes  Merge patch from Sergey Svishchev <svs@ropnet.ru> that implements
-     spooling in migration jobs.  Not yet tested.
-kes  Merge patch from Jorj Bauer <jorj@seas.upenn.edu> that implements
-     reading conf file from a pipe.  However, do it with open_bpipe()
-     rather than popen.  Not yet tested.
-07May07 
-kes  Fix an ugly bug where the VolCatBytes were getting updated
-     during a restore.
-kes  Implement bconsole memory command that prints current memory
-     usage, plus smartalloc dump.
-kes  Clarify some error messages in backup, admin, and migrate.
-kes  Shrink label dialog to smaller size.
-kes  Invert Cancel OK buttons on restore to be OK Cancel.
-kes  More strerror() to bstrerror() conversions.
-06May07 
-kes  Start implementing bstrerror() in place of strerror().
-kes  Stripping path -- seems to work.
-04May07
-kes  Prevent door and port files from being restored (mostly
-     Solaris stuff).
-kes  Free an unreleased buffer in compat code.
-kes  Change console Job name from *Console* to -Console- to eliminate
-     Win32 filename problems.  Put Win32 path separator when creating
-     Console file.  This fixes bug #846.
-kes  Change berrno::strerror() to berrno::bstrerror().  Not yet full
-     implemented.
-kes  Pass jcr to crypt_sign_decode because it creates a new SIGNATURE
-     structure.
-kes  Define b_errno_win32 on Linux to be zero so that it can be or'ed in
-     to force Win32 error message.
-03May07
-kes  First cut strip path. The data should be passed to the FD,
-     but nothing is done with it yet.
-kes  Enhance the digest and signature routines in the crypto
-     library to accept a JCR and to use it to print error messages
-     so that they will go in the Job report rather than the daemon's
-     messages.
-kes  Simplify some of the verify signature code.
-kes  Simplify a few of the alternative returns in the signature 
-     code.
-02May07
-ebl  Use only POSIX regex instead of GNU regex in breg.c for
-     File relocation. It fix broken freebsd compilation.
-kes  Convert all other Dir files to use new ua class message 
-     routines for bat.
-kes  Tentative fix for missing digest signature in bug 807.
-kes  Correct handle problem in new win32_ftruncate routine.
-kes  Convert ua_purge.c and ua_update.c to use new ua class
-     message routines for bat.
-29Apr07 
-kes  Correct incorrect installation of LICENSE in Win32 installer.
-kes  Display LICENSE at the beginning of the Win32 install.
-kes  Attempt to correct the need for the png files to be installed 
-     for bat.
-kes  Reapply my bat.conf install script in qt-console. I think I 
-     editted bat.pro instead of bat.pro.in and it was lost.
-kes  Apply CentOS patches someone sent me. Checks for /var/run/subsys,
-     the /var/lock/subsys for subsysdir.  Also corrects typos in the
-     doc.
-28Apr07
-kes  First cut update job.
-kes  Correct configure to include qmake of src/qt-console directory.
-26Apr07
-kes  Make restore job yes/mod/no print in one command so GUI works.
-kes  First cut implementing backup and restore client.
-kes  Correct editing in Verify output that caused a seg fault.
-25Apr07
-kes  Insure that bat.conf is not overwritten during installation.
-kes  Fix important bug in db_sql_query() in mysql.c.  It was introduced
-     while I was implementing migration in March 2006 !
-24Apr07
-ebl  Cleanup file relocation, using char *RegexWhere instead of
-     char *where + bool where_use_regexp
-kes  Update some manpages and add bat manpage.
-kes  Make a first cut at converting bacula.spec.in for bwx-console
-     and bgnome-console.
-kes  Apply patch from John Goerzen to add hostname as fourth argument
-     to make_catalog_backup script.
-kes  Fix typos I introduced into bsmtp.c
-kes  Make pm_strxxx() routines handle input of NULL pointer. This
-     is to protect from NULL pointers returned from SQL databases.
-kes  Correct typo in bacula-sd manpage as pointed out by John Goerzen.
-kes  Add more debug to FIFO code -- fix fifo regression test.
-23Apr07
-kes  Implement posix_fadvise in FD, and for reading spool files in SD.
-kes  Add thread timer to bnet_connect() to break from OS if wait time
-     expires.
-22Apr07
-kes  Update Win32 build to include new files, new symbols, and    
-     renamed files.
-kes  Implement socket level heartbeat (tcp_keepidle)
-ebl  Commit File relocation patch
-kes  Make bat have 'make install' target.
-kes  Warn during install if old gnome-console binary found.
-kes  Warn during install if old wx-console binary found.
-kes  Add -8 option to bsmtp command line to add content type utf-8. 
-     Fixes bug #809. (Character coding problem in bsmtp).
-kes  If < is found in target (from, to, cc) then do not enclose the
-     target in < >  in bsmtp. Fixes bug #772  (malformed address).
-kes  When printing certain items in dbcheck, stop after 300000.
-     Fixes bug #822. (dbcheck loops).
-kes  Incorrect status in Dir after waiting for mount with poll set.
-     Fixes bug #825.
-21Apr07 
-kes  Extend idea of Prefer Mounted Volumes to mean a volume about
-     to be mounted.
-kes  Print waiting to reserve a device every 5 mins.           
-20Apr07
-kes  Don't call close_part in label.c if tape and relabel.
-kes  Don't free volume if busy in close() -- should help with
-     bug 801.
-ebl  Fix #824 RunScript bug (After script could be execute twice)
-     Now, Before Script can use RunsOnSuccess and RunsOnFailure options
-     By default (like before) RunsOnSuccess=true and RunsOnFailure=false
-     Add a regression script to test RunScript
-19Apr07
-kes  Correct usage of MTIOCLRERR ioctl for clearing persistant errors
-     on Solaris.
-18Apr07
-kes  The bgnome-console (gnome-console) and bwx-console (wx-console) are
-     deprecated. No additional bugs will be fixed, and they will be dropped
-     in a future release (probably 2.4.0).
-kes  Change name of wx-console to bwx-console to make it more Bacula
-     unique.
-kes  Change the name of gnome-console to bgnome-console to make it
-     more Bacula unique.
-14Apr07
-kes  Some time in March, a Feature Request with patch from Jorj Bauer
-     <jorj@seas.upenn.edu> was committed by Landon (with my approval).
-     It implements:
-     The ability for the director to validate a Client (FD) CN against
-     an arbitrary set of patterns rather than the hostname, with
-     A new 'TLS Allowed CN' set of directives which are implemented
-     in the Client resource.  Then pattern matching is used in place
-     of hostname matching against the Certificate's CN. As an example, we
-     have certificates which (a) use a local CA, and (b) have a CN of the
-     form client_123.
-kes  Add new/changed entry points to Win32 build
-kes  Create unaccepted-projects for projects that are not accepted.
-kes  Simplify locking in the reservations system.
-kes  Add more debug code in reservations.
-kes  Make sure error condition on reserving a volume is handled correctly.
-kes  Correct handling of volume_in_use.
-kes  Correct handling of initializing a device.
-kes  Move handling of broadcasting releasing a device into release_device().
-kes  Correct attaching dcr to dev so that it is only done if device
-     is properly initiated.
-12Apr07
-kes  Locking debug level tweaks in SD.
-kes  Tweak new Volume code.
-11Apr07
-kes  Add exec external-command [wait-seconds] to bconsole. This
-     executes the external-command.  Note! normally external-command
-     should be enclosed in double quotes.
-kes  Turn the .die command on only if DEVELOPER is defined -- i.e.
-     it should normally be off in a production system.
-10Apr07
-kes  Implement die command for SD so that we can force it to dump.
-kes  Implement SD lock debug code.
-kes  Implement new algorithm for keeping Volume list in SD.  It
-     is now owned by the device.
-04Apr07
-kes  Implement new code for freeing in use volumes that should 
-     resolve if not all, some of the problems of multiple drive
-     tape conflicts described in bug 801.
-03Apr07
-kes  Fix gui/bacula-web/images files in svn.
-kes  Turn on FreeBSD/OpenBSD code to set EOT model on tape.
-02Apr07
-ebl  Fix a bug in batch mode (in string escape)
-kes  Correct migration prune SQL typo that crept in in a    
-     recent 2.1.x change.
-01Apr07
-kes  Move bnet_despool() into class in bsock.c
-kes  Modify job report to include director name and Build OS.
-kes  Move drop root privilege and check_catalog() before fork.
-kes  Add update database scripts (version 9 to 10) to updatedb directory.
-31Mar07
-ebl  Check size and age of each file after its backup to see if
-     it has changed during backup, if 'checkfilechanges' is set.
-     The FD will do an extra check (stat(2)) after
-     each file backup. mtime, ctime and size are compared with
-     'before backup' information. If time or size mismatch, an
-     error message will be generated. You must upgrade FD to use it.
-30Mar07
-kes  Make database name and user configurable
-     --with-db-name=xxx --with-db-user=xxx
-kes  Add back database type to message.c for debugging.
-29Mar07
-kes  Implement dir_sql() which issues an SQL query.
-kes  Modify bat medialist to use dir_sql() and do some minor C++
-     formatting as well as eliminating a number of pointers, simplifing
-     the code.
-28Mar07
-kes  Fix some of the mtx-changer grep commands for tape label readers.
-kes  Convert a number of bsendmsg into the appropriate send/warning/error
-     message class calls.
-kes  Suppress the using database message in the .sql command.
-kes  Correct an incorrect bnet_tls_client prototype -- patch from Martin.
-27Mar07
-kes  Add context menu for floating a window.
-kes  Some minor cleanup and name changes in qt-console
-kes  Add doing mt setblk 0 in Win32 mtx-changer.
-kes  Apply Martin's bug fix to move definition of ENODATA for 
-     FreeBSD to bsock.c
-ebl  Add a BUSY handler to sqlite to be able to use multi_db = 1 with
-     sqlite2 and sqlite3.
-26Mar07
-kes  More pruning cleanup.
-kes  Turn on wait_for_drive by default in mtx-changer.
-kes  Turn on Batch insert code by default as it now passes regression.
-kes  Add ./configure --enable-bat to enable building of Bat.   
-     No install yet though.
-25Mar07
-kes  Implement a new .sql command for bat.
-kes  Implement code to turn off pruning in obtaining the next volume.
-     Pruning is turned off for the status dir command, but turned on
-     for SD requests and for the list nextvolume command.
-24Mar07
-kes  Correct Qmsg() that was not updated correctly when committing a
-     previous change (probably the recent TLS patch).
-23Mar07
-kes  Write new subroutine is_volume_purged() that explicitly checks
-     if the Volume is purged, and if so marks it as such. This should
-     resolve problems reported about needing to mount twice to recycle
-     volumes.
-kes  Rewrite pruning algorithm to do more work in the SQL engine, and
-     to pass a list of JobIds to be deleted to SQL.  Also, minimize the
-     amount of duplicated code.     
-kes  Do volume pruning only for the Media Type desired (reduces pruning time
-     if multiple Media Types are in the same pool).
-kes  Implement more detailed info in the Job report for the Bacula version
-     and architecture.
-kes  Switch from POOLMEM to POOL_MEM (a real class) in ua_prune.c and
-     ua_purge.c.
-ebl  Add bbatch tool to bench database and insert mode.
-     Fix sql quote stuff in batch mode
-     Fix sql stuff for mysql
-22Mar07
-kes  Correct problems with am/pm scheduling. Fixes bug #808.
-kes  Implement new prunning code that prunes up to 1000 jobs at
-     the same time.  The same technique can be applied to a number
-     of other prune/purge subroutines.
-kes  Add an insanity check when starting a new tape job to ensure
-     that the tape position has not been changed. If so fail the
-     job.
-kes  Fix Win32 build for dlls to add the folllowing:
-     src/lib/bsock.c -- new file with new entry points
-     src/lib/dlist.c  -- new entry points
-     src/cats/sql_create.c -- new entry point
-     src/cats/sql_cmds.c -- new DATA item exported
-21Mar07
-ebl  batch mode cleanup bscan-test is ok now.
-kes  Implement SD code to check length of disk volume before appending.
-18Mar07
-kes  Correct return status on db_batch... routines.
-kes  Add call to db_write_batch_file_records() to migration code.
-ebl  Fix AfterJob timing
-kes  Move the checking of the database in initializion of the Director
-     to after we drop privileges.  This avoids the need for both root
-     and bacula access to the DB.
-kes  Correct a misplaced variable definition in src/filed/backup.c
-kes  Correct how the new batch insert db_create_attributes_record()
-     uses the arguments.  Caused a seg fault in bscan.
-kes  Implement lock() and unlock() methods in DEVICE class.
-     Implement block() and set_block(xx) methods in DEVICE class.
-kes  Modify bnet_connect() so that it uses time() to check for the
-     wait time expiring (on some OSes, some system calls may not
-     return immediately).
-kes  Modify Verify to obtain the previous JobId when it is actually
-     running rather than at schedule time (as it was in 1.38.x).     
-kes  Fix src/job.c to handle MaxWaitTime correctly.  This should
-     fix bug #802.
-kes  When checking pid in pid file, continue running if the pid is
-     the same as ours. This occurs on IRIX after a system crash.
-     Fixes bug #797.
-10Mar07
-kes  Extend new GUI API.
-kes  Make the ua structure a class, and implement send_msg(),
-     error_msg(), warning_msg(), and info_msg().
-08Mar07
-kes  Apply fix from for building wx-console on the Mac from
-     bug #798.
-kes  Implement new select mechanism for GUI programs.
-kes  Reorganize initialization of stackedWidgets in bat.
-07Mar07
-kes  Add updated nagios plugin supplied by Christian Masopust.
-05Mar07
-kes  More bat implementation.
-kes  File migrate bug with Pool Occupancy using mediaid instead
-     of jobids.  Fixes bug #795.
-kes  Fix orphaned buffers in filed backup and verify due to
-     crypto buffers not freed during errors.  Fixes bug #789.
-kes  Extend new GUI api code to tree commands.
-kes  Ensure that tree and dot commands check console ACLs.
-kes  Permit marking directory with trailing slash.
-kes  Allow 20 console connections (instead of only 10).
-04Mar07
-kes  Add smartctl call to bacula-sd.conf as an example of getting
-     tape alert info.
-02Mar07
-kes  Modify jobq.c to let simultaneous restore jobs run. This may 
-     cause them to fail if they cannot get a drive.
-kes  Add Client Connect Wait to Storage daemon to permit users to
-     modify the time the SD waits for a FD connection.
-29Feb07
-kes  Correct virtual changer check which was backwards. This caused
-     volumes to be unloaded into slots already occupied.
-28Feb07
-kes  Apply Command ACL filter to JobId list in restore command.
-kes  Correct typeo in var.c patch.
-27Feb07
-kes  Don't let Bacula prune File or Job records for the current Job.
-kes  Fix variable substitution pad + inc bug reported (with patch)
-     in bug #791.
-26Feb07
-kes  Correct SQLite log table index as reported by Luca Berra.
-24Feb07
-ebl  fix fifo stuff, bacula tries to rewind the fifo... Thanks to Andreas
-22Feb07
-kes  Begin implementing new comm signals for API.
-kes  Fix a few places in lib/message.c where the open fd may 
-     not be zeroed.
-kes  Continue implementing lib/bsock.c (real class).  Make jcr,
-     who, host, and port private. There are new methods to access
-     them for non-class use. This required touching a number of files.
-21Feb07
-kes  Add LANG=C to autoconf/randpass so it works with languages other
-     than English.  Fixes bug #788.
-20Feb07
-ebl  Revert ClientRunBeforeJob to old position as in 1.38.X.
-     This fixes bug #780
-     You will not be able to generate Include/Exclude list any more.
-     It will be fixed soon.
-     If you want to use this, you can apply
-     trunk/bacula/patches/testing/clientrunbeforejob_can_generate_include_exclude_list.patch
-19Feb07
-kes  Restore of sockets created false error messages because Bacula
-     no longer restores sockets, but the code was still trying to
-     set the attributes on a non-existent file. Reported by a user.
-ebl  finish RecyclePool feature
-     Media will takes Pool.RecyclePool
-     when moving from Scratch to a Pool or when user will do
-     update volume=xxx frompool
-     To use it, add RecyclePool = aPool to your Pool resource
-        Pool {
-                Name = Default
-                RecyclePool = Scratch
-                ...
-        }
-     TODO: update manual
-kes  Expand new BSOCK class adding signal() and new BNET signals.
-kes  Begin enhancing the dot commands adding a new API function
-     that returns more information and will make it easier
-     to interface to the Director from a program.
-18Feb07
-kes  Make DEVICE fd private. Its new name is m_fd, and can be
-     obtained with dev->fd() outside the class.  This is the
-     first of many DEVICE members to be made private.
-kes  Implement Michael Renner's idea on having a virtual disk
-     changer. I made some minor modifications (e.g. I did not
-     implement the Virtual Changer directive, but simply set
-     the Changer Command to an empty string.
-17Feb07
-kes  Implement a BSOCK send() method that writes the whole record
-     in a single write() request rather than in two.
-ebl  add update volume=xxx recyclepool=yyyy
-     volume takes recyclepool from pool when using update volume=xxx from pool
-16Feb07
-kes  Fix encryption deblocking bug, which caused some restored files
-     to be truncated. This fixes bug #763.
-kes  Add FD event sequence order prepared by Eric -- for RunScripts.
-kes  Fix 12am/pm bug as reported in bug #782 -- scheduler problem.
-13Feb07
-kes  Apply Eric's ClientRunScriptAfter patch to 2.0 and 2.1.
-ebl  Use btime_t instead of uint64_t in media patch.
-11Feb07
-kes  Optimize the use of the database a bit in the Status dir command.
-     Only open it when needed, ensure that if any previous database
-     was opened, it is closed.
-10Feb07
-kes  Correct VolCatBytes bug from media patch.
-kes  Apply patch from bug #612 by Rudolf Cejka to speedup pruning
-     in the case of orphaned records.
-kes  Modify dbcheck to handle orphaned JobMedia, Path, Filename,
-     and File records in 300K chunks to be more efficient. This
-     idea came from Juan Luis Frances (if I remember right).
-kes  Apply Eric's scratch patch that moves a purged Volume to
-     the RecyclePool.  Question: how is RecyclePool set? what
-     happens to the ScratchPool?
-kes  Apply Eric's media patch that collects read/write media
-     times as well as byte counts.  This patch requires a
-     simultaneous upgrade of the DIR and SD.  Note, there
-     should be some way to turn off timing. I'm not sure
-     times are in Bacula units.
-kes  Apply Eric's batch-insert patch.
-09Feb07
-kes  Update projects list.
-08Feb07
-kes  Implement Include/Exclude file lists in FD as dlists using
-     the new dlistString class. This permits efficiently having
-     large include/exclude lists and completes project Item 25.
-kes  Fix dird/ua_cmds.c so that a cancel command checks if the
-     console is authorized to cancel the job.  This fixes bug 
-     #767.
-kes  Modify SD so that the VolCatJobs medium record is updated
-     at the beginning of a Job rather than the end.  This
-     fixes bug #775 where exceeding MaxVolJobs caused jobs
-     to fail.
-kes  Added a mutex around getting and setting Volume information
-     so that multiple simultaneous jobs will single thread.
-07Feb07
-     Switch to using Subversion
-kes  Remove src/pygtk-console/ from configure
-06Feb07
-kes  Delete src/lib/btree.c from win32 build, then add rblist.c
-     plus the entrypoints.
-kes  Apply patch supplied that corrects debug print
-     in canceling jobs for max run time.  Supplied as
-     part of bug #621, which was previously fixed.
-05Feb07
-kes  Test on job_canceled() and sd_msg_thread_done inside
-     loop starting the message thread to avoid a race condition.
-     Fixes bug #771.
-kes  Remove rl_catch_signal from console.c as it conflicted
-     with the header definition. Fixes bug #765.
-ebl  Fixes bug #766 about RunsOnClient = Yes (case sensitive)
-04Feb07
-kes  Clarify some stored/acquire messages to indicate if the
-     problem is with read or append.
-02Feb07
-kes  Fix memory leak with storage ids in cats/sql_get.c
-kes  Terminate watchdog earlier to avoid reference to released
-     memory -- reported by Jason Austin.
-kes  Move closing the database from jobq.c to the director daemon
-     termination routine. This fixes memory leaks for shadow jobs
-     (i.e. migration jobs).
-kes  Free up the unique jobid chain items in migrate.c.  This fixes
-     a memory leak problem.
-kes  Convert some ugly looking for statements to use foreach_alist
-     in findlib/find.c.  This will facilitate converting the structures
-     to use dlist (for large include/exclude lists).
-kes  Fix a bug in the btree.c and btree.h routines, then rename them
-     rblist and add them to be built in src/lib.  Include some new
-     methods written by Rudolf Cejka that make the code more readable
-     (hides some of the ugly casting).
-kes  Add set_next() and set_prev() methods which make the code much more 
-     readable. Also add a new dlistString class that facilitates storing
-     strings in dlists.  To be used in the large include/exclude lists.
-kes  Make some trivial modifications to lib/tree.h that use rblist
-     rather than dlist for storing the tree links. This was suggested
-     by Rudolf Cejka.  The result of this is that the restore tree now
-     uses red-black binary trees rather than simple linked lists. This
-     should give rather dramatic speed improvements for directories
-     contining large numbers of directories/files (more than 10000).
-28Jan07 
-kes  Fix maxruntime bug #621.
-26Jan07
-ebl  Implement the include JobID in spool file name project.
-kes  Reorder projects file in order determined by Jan 2007 vote.
-kes  Implement item #12 on project list -- quick release of FD by
-     the SD.
-kes  Fix open of SQLite3 db where user does not have write permission
-     so that DIR does not crash. Fixes bug #761.
-25Jan07
-kes  Add back missing @ in Win32 Makefile.
-kes  Change 'Device not configured to autolabel' from INFO
-     to WARNING.
-kes  Fix jobq.c to restart failed jobs when Reschedule Times = 0 
-     which should restart an indefinite # of times.
-kes  Fix configure --help to print --with-mysql[=DIR]. Same for
-     other DIR specifications.
-23Jan07
-rn   Fix msvc build problems. Fix bacula.dll exports for msvc build.
-     Fix path quoting in SQLite scripts.
-     Fix problems with SHGetFolderPath.
-19Jan07
-kes  Create patches/2.0.1-restart.patch. Fixes bug #755.
-18Jan07
-kes  Fix Job restart on error bug that promotes an Inc to a Full
-     backup.  This should fix bug #755.
-kes  Add qt-console and first cut of code.
-
-Version 2.0.1
-12Jan07
-kes  Fix Bacula->Documentation link on Win32 to point to index.html
-     instead of bacula.html. Fixed bug #750.
-kes  Return JobId in db_get_job_record() when JobId==0. This should
-     fix bug #741.
-kes  Do not release source pointers when restarting a failed job.
-11Jan07
-kes  Add dynamic dll entry point for SHGetFolderPath to Win32 code.
-     This *should* fix bug #747.
-kes  Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix
-     bug #742.
-09Jan07
-kes  Modify USTORE constructor to set an empty store_source string, 
-     and don't copy the store_source string in a cancel.  Hopefully
-     this will fix Arno's seg fault, bug #744.
-kes  Add back code to disable conio in configure. Fixes bug #743.
-kes  Correct the Options scanner in the FD to correctly handle  
-     SHA1 option, which was eating the next option.  Reported by    
-     Sebastien Guilbaud.
-kes  Add code to indicate when the SD is spooling, spool wait, and 
-     despooling as requested by Alan Brown.
-
-Version 2.0.0 released: 4 January 2007
index 00d106eee68990ae78b04819f86b7b06f4d158b6..dbfc77d7e05b46bf9cd22590d9b428fb83abff83 100644 (file)
@@ -1,6 +1,9 @@
               Technical notes on version 2.3
 
 General:
+01Sep07
+kes  Implement savecwd.h and savecwd.c. Remove FSF versions.
+
 Release Version 2.2.1
 30Aug07
 kes  Update POTFILES.in