]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Change the name of the technical notes file from kes-1.39 to
authorKern Sibbald <kern@sibbald.com>
Wed, 2 Aug 2006 15:42:45 +0000 (15:42 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 2 Aug 2006 15:42:45 +0000 (15:42 +0000)
     technotes-1.39.  Prefix my messages with 'kes  '.
kes  Allow dequeue_messages() to be called twice. Should fix bug
     # 649.
kes  Add Job type to bscan Job information output.

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

bacula/kernstodo
bacula/kes-1.39 [deleted file]
bacula/src/lib/message.c
bacula/src/stored/bscan.c
bacula/src/version.h
bacula/technotes-1.39 [new file with mode: 0644]

index 9379461ad5c0997d9fb0cc351a6a2e6d45eec97c..cfc50cb97995c28e43f5414caa4b38aad40a1d55 100644 (file)
@@ -24,11 +24,14 @@ Document:
 - Add example of proper index output to doc.
    show index from File;
 - Correct the Include syntax in the m4.xxx files in examples/conf
+- Document JobStatus and Termination codes.
 
 Priority:
 
 For 1.39:
+- Try turning on disk seek code.
 - Possibly turn on St. Bernard code.
+- Fix bscan to report the JobType when restoring a job.
 - Fix bextract to restore ACLs, or better yet, use common
   routines.
 - Do we migrate appendable Volumes?
@@ -38,7 +41,6 @@ For 1.39:
 - Fix re-read of last block to check if job has actually written
   a block, and check if block was written by a different job
   (i.e. multiple simultaneous jobs writing).
-- JobStatus and Termination codes.
 - Some users claim that they must do two prune commands to get a
   Volume marked as purged.
 - Print warning message if LANG environment variable does not specify
@@ -61,7 +63,6 @@ For 1.39:
 
 Low priority:
 - Get Perl replacement for bregex.c
-
 - Given all the problems with FIFOs, I think the solution is to do something a
   little different, though I will look at the code and see if there is not some
   simple solution (i.e. some bug that was introduced).  What might be a better
diff --git a/bacula/kes-1.39 b/bacula/kes-1.39
deleted file mode 100644 (file)
index 39f2b98..0000000
+++ /dev/null
@@ -1,992 +0,0 @@
-              Technical notes on version 1.39  
-                        Kern Sibbald
-
-General:
-01Aug06
-kes  Update copyright date in program files, and for the most part
-     put it on a #define.
-kes  Implement %q in bsnprintf.c apparently I forgot it.
-31Jul06
-kes  Make disk-changer sed command compatible with FreeBSD.
-kes  Make a first cut at a ReleaseNotes and ChangeLog for a 
-     beta release.
-kes  Make make clean decend into the src/win32 directory.
-kes  Fix some #ifdefing so that Solaris and FreeBSD compile 
-     sys/stat.h was turned off.
-kes  Use suffix editing for new transfer rate messages.
-kes  Attempt to come up with a workaround which seems to be an OS
-     bug where write() returns EBUSY.  IMO this should not happen.
-     It triggered in truncatebug test. The workaround retries using
-     a 100 ms wait.
-kes  Eliminate a strerror() call in a class method that failed with
-     older C++ compilers.
-kes  Use rm -rf rather than rmdir to delete the src/win32/release
-     directory during make clean.
-30Jul06
-kes  Make bscan ignore ACL streams.
-kes  Update projects files with new Feature Requests.
-kes  Generate current English and French manuals and upload
-     them to the site.
-kes  Update the home page to include the new British/French flags to
-     switch between translations. Work done by Alexandre Baron.
-kes  Make disk-changer script print an error message if the changer
-     directory is not defined.
-kes  Create a generic DB routine for getting an int (32/64 bit) from
-     the DB.
-kes  Add more migration code.
-kes  Add a few more files to .cvsignore here and there.
-kes  Minor fixes for SD write rate and despooling rate.
-kes  Turn off new test code in src/console.c
-
-Version 1.39.18
-29Jul06
-- Incremented the version number to signify that all of Robert's code
-  for Win32 that was in the branch is now integrated into the HEAD,
-  and that Eric has submitted code that we hope will provide limited
-  backward compatibility with 1.38 file daemons (more testing to be
-  done).
-- I rationalized a few of the names of the variables (mainly jcr names)
-  that are used during migration as keeping three different jcrs at the
-  same time clear in one's head is not easy.
-
-Version 1.39.17
-28Jul06
-- Tweak new runscript feature to work with 1.38.x FDs. 
-- Correct crypto.c to fix segfault when restoring an encrypted stream 
-  on fd which don't use rsa keys.
-- Add yes/no english keywords on localised yes/no questions.
-27Jul06
-- Several important commits from Robert Nelson for code cleanup and
-  Win32 build.
-- Modify console.c so that when conio is enabled, it converts \n to
-  \n\r before outputting to the console.  Hopefully this will fix
-  the problems with expect in Perl that Eric saw.
-24Jul06
-- Change cats/sql.c to elimate %-*s format, which I think is turned
-  off in bsnprintf.
-- Add Comment field to llist of a volume.
-- Allow true/false in some yes/no questions.
-- Implement update volume enable=(on|off|true|false|archived|0|1|2)
-- Remove a few /n's when scanning commands from another daemon. This
-  permits adding additional fields later.
-- Modify dbcheck to handle ctl-d and to delete Log table entries.
-- Update README.mingw
-22Jul06
-- Tweak authentication to work with 1.38.x FDs. 
-- Tweak catalog make scripts.
-- Fix catalog upgrade scripts so that they work.
-- Correct despooling debug code to eliminate race condition.
-19Jul06
-- Add additional fields as specified by Arno to LocationLog.
-- Add comment field to the Media record.
-- Add Time field to the Log record.
-- Correct migration SQL (thanks to Bill Moran) so that it
-  runs with PostgreSQL also.
-- Add spooling/despooling info in status output of SD.
-17Jul06
-- Spend a lot of time integrating mkcdrec with the rescue disk.
-- Add VOLMGMT message class for volume management messages (none yet).
-- Add CATALOG as a destination.  It goes into the LOG table.
-- Implement the Log table in the DB.
-- Implement the Location Log table in the DB (for user use).
-- At Eric's request add a run_scripts() just after blast_data in
-  src/filed/job.c
-10Jul06
-- Add Enabled column to Location, correct some typos in DB schemas.
-- Correct bug I introduced into RunScripts enum.
-- Add log table to Catalog
-- Purge original job migrated if the migration terminates normally.
-- Cleanup purging of files/jobs so that it is done only in a 
-  single subroutine.
-- Add new VOLMGMT message class.
-- Add Catalog message destination (user conf code remains to be written).
-09Jul06
-- Modify read_record and friends to properly deal with migration      
-  needs.
-- Update debug code in read_record.    
-08Jul06
-  ======================= Warning ==========================
-  Separate read and write storage in Jobs in the Director. This
-  is a major rewrite of some of the low level code and hence has
-  a high probability of introducing bugs.
-  ==========================================================
-
-- Move the job init code up to *before* the job is put into
-  the job queue (resource allocation queue). This permits the
-  job to establish whether it will read or write or do both.
-- Add name() methods to all the resource classes.
-- Implement separate read and write storage resource 
-  allocation/deallocation in jobq.c
-
-  ======================= Warning ==========================
-  Implemented new method of getting the default Storage from the Media
-  record rather than from the MediaType for restore.  As a fall
-  back, if no Storage is defined, use the MediaType.  This
-  eliminates most all prompts if there are multiple MediaTypes
-  used. This is an important and fundamental change.
-  ==========================================================
-
-- Add more detail (Storage, Device) to list of volumes printed
-  for restore.
-- More code in migrate. In particular start multiple jobs if
-  migrating a volume.
-- Probably overkill, but ensure that the bsr is unique even within a 
-  job in FD and SD.
-- Rework bsys.c drop() so that it now should work as expected.
-- Update a bunch of old copyrights -- particularly in .h files.
-- Remove src/lib/bshm.c/h
-05Jul06
-- Migration fixes
-04Jul06
-  ======================= Warning ==========================
-     All hash codes in the database are now kept in world
-     compatible base64 format (no = filling). This means that
-     all FileSets will be updated and if you are running
-     verify jobs, you must do an InitCatalog.
-     Authentication uses the new algorithm, but should be
-     backward compatible with 1.38.x
-  ===========================================================
-
-- Modify the authentication routines so that the 1.39.15 Director
-  always runs with the compatible binary to base64 code (same as
-  the rest of the world).  It will however detect if an SD or
-  FD is running the old code and if that is the case, will use
-  the old algorithm for authentication.  However, all consoles must
-  use the compatible algorithm, and all data entered into the database
-  (all hash signatures, MD5, SHA1, ..., and all FileSet hashes) will
-  use the compatible algorithm.
-- Rename the cram_md5 routine names to be slightly more appropriate
-  to what they are doing (challenge and respond).
-- Robert committed his #ifdef and header cleanup.
-30Jun06
-- Fix a complier warning in files/backup.c
-- Cleanup NOT NULL vs DEFALT 0 in database creation.
-- Tweak btape.
-- Robert committed his low impact changes.
-- I removed a size_t from the jcr.h definition.
-- Update the tape regression scripts (still to be tested).
-- Add gcc and gcc-c++ requires to srm as suggested by a user.
-- Require done or quit to exit from in memory tree restore.
-26Jun06
-- Write install/uninstall of new manpages. There are now a
-  pile of man pages. Some of which need a lot of work.
-
-  ======================= Warning ==========================
-     The --mandir ./configure option now points to the top level
-     man directory.  The man files will be installed under
-     mandir/man8 and mandir/man1 as appropriate.
-  ==========================================================
-
-- Add complete text of GPL to LICENSE.
-- Implement job report that indicates where Storage and Pool
-  came from -- with overrides and Pool storage and NextPool,
-  it is all very complicated.
-- Create a few common subroutines for backup.c and migrate.c
-- Eliminate warning messages from tray-monitor.c
-25Jun06
-- Apply fix for scheduler for missing unlock_jobs().
-- Clean out autoconf caches before rebuilding configure
-- Fix the FreeBSD pthreads lib define updated by Dan.
-- Add missing semicolon in src/console/console.c
-- Add Robert's enhanced version of build-win32-cross-tools
-  as well as his patch file.
-- Note, the new gcc options are likely to break building of
-  wx-console or the tray-monitor ...
-24Jun06
-- Implement Robert's suggestion to suppress printing compile lines.
-- Detect GCC correctly (I hope)
-- If using GCC (actually g++) add the following compiler flags
-  -fno-strict-aliasing -fno-exceptions -fno-rtti
-
-  ===================== Warning =============================
-  Turn on new bsnprintf() code.  This could cause print output
-  to look different.
-  ===========================================================
-
-- Fix crypto when not using openssl. I previously overlooked this.
-- Eliminate crypto type punning problems by eliminating void * and
-  using uint8_t * instead.
-- Harden authentication failure in FD by single threading errors
-  and forcing a 6 second wait.
-
-  ===================== Warning =============================
-       Removed  "Accept Any Volume" directive.
-  ===========================================================
-
-- Major cleanup and simplification of regress using shell functions
-  (more tests to be converted to new format)   
-- Add detection of 64 bit Irix as indicated by user.
-- Increment catalog database id from 9 to 10.
-- Add a few of the new database fields to the various C++
-  structures.
-- Implement code to fill in the most important new fields (e.g.
-  Media Enable).
-- Ensure that most of the new fields are in create/get/insert/update.
-  More work to be done.
-22Jun06
-- Update some very old licenses in src/cats.
-- Modify the database format for handling Migration jobs:
-   Add PriorJobId, RealEndTime to Job table
-   Delete MAC table
-   Remove Stripe from JobMedia record (not used, wasting space)
-   Add ScratchPoolId, RecyclePoolId, Enabled to Media record
-   Add Cost to Location table.
-- Delete mac_record subroutines.
-- Add new table values to create/update/get routines as appropriate.
-- Update the update_tables and make_tables scripts.
-- Make a first cut in using a union where multiple pointers (actually
-  pointers to pointers) are stored.
-- Make some changes to base64.c suggested by Robert and others and add
-  a small amount of documentation.
-- Add some changes suggested by Peter for Solaris (bregex...)
-- Make runscript.h always built because it needs to be pulled into
-  more places.  In particular its RES was left out of a union.
-- Renumber the enum{} list in runscript.h to avoid starting from zero.
-  This makes it slightly easier to detect uninitialized variables.
-14Jun06
-- Remove xpg4 lib from FreeBSD build as it is no longer needed and
-  sometimes creates install problems.
-- Change a couple of %T in strftime to %H:%M:%S as seen in Robert
-  Nelson's code.  More to do.
-- Convert a few store_bit to store_bool in filed_conf.c.    
-- DVD tweak to block.c as supplied by Uwe Muessel.
-04Jun06
-- Modify configure.in to check for typeof().
-- In findlib/attribs.c use typeof instead of templates if possible.
-01Jun06
-- Implement partial error messages for src/filed/acl.c
-- Fix return code to fail when doing update barcodes and
-  Pool resource is not found. This previously caused Volumes
-  to be labeled as cleaning tapes.
-- Small updates to projects.
-27May06
-- Add Eric Bollengier patch for new RunScript directive. It breaks
-  compatibility between dird and fd.
-26May06
-- Prevent DVD code from rewriting label if the device cannot be
-  opened read/write.
-- Used __GNUC__ to detect GNU g++ as suggested by John Goerzen to
-  fix Debian build bug.
-- Fix Dir/SD run race in migrate.c, verify.c, and restore.c
-- Integrate manpages contributed by Jose Luis.
-- Update projects file.
-- Add manpages Makefile.in to configure.in
-- Remove installation of bacula.8 in scripts directory.
-24May06
-- Implement patch submitted by cesarb in bug #606 to implement O_NOATIME
-  support.
-    O_NOATIME is a open() flag which makes it possible to read a file without
-    updating the inode atime (and also without the inode ctime update which
-    happens if you try to set the atime back to its previous value). It also
-    prevents a race condition when two programs are reading the same file, but
-    only one does not want to change the atime. It's most useful for backup
-    programs and file integrity checkers (and bacula can fit on both
-    categories).
-
-    Recent versions of the Linux kernel and glibc have support for it (the
-    glibc support being mostly copying the O_NOATIME definition to
-    bits/fcntl.h). If there's no support for it on the kernel, trying to use
-    it does nothing (since the kernel ignores unknown flags).
-
-    If the kernel has support for it, trying to use it either works, fails
-    silently (mostly in remote filesystems), or returns errno=EPERM (if you
-    are not either the owner of the file or root). A simple way to prevent the
-    failure is to open the file without the flag and set it later with
-    fcntl(F_SETFL), ignoring any EPERM errors.
-- Applied patch posted by Jaime Ventura to bug #570 to correct failure
-  of restarted jobs to complete (due to a destroyed pthreads conditional
-  variable used by the message thread).
-- Fixed bug #619 where Bacula would not restart jobs with MaxRestartTimes
-  set to zero. 
-- Apply patch from John Goerzen bug #611 to fix bad manual links in the code.
-- Apply patch from Rudolf Cejka bug #614 to removed trailing
-  colons in query.sql file.
-- Apply patch from Rudolf Cejka bug #613 to correct prunning of files
-  not to create orphans.
-- Apply patch from Rudolf Cejka bug #617 to use mtime instead of ctime
-  in restore long listing.
-- Apply patch from Rudolf Cejka bug #609 to use MarkId in verify.c instead
-  of incorrect MarkedId.
-- Apply patch from adioso bug #616 to correct text in manual (replace
-  Director with File daemon).
-- Rework a few of the zlib changes so that they build properly.
-
-21May06
-- Move DIR "run" command to SD before starting the message thread
-  as suggested by Cristopher Hull to avoid a race deadlock from
-  two threads using the bsock structure.
-- Modify LICENSE to correct some problems pointed out by Debian.
-05May06
-- Correct EOF with no \n lex.c problem.
-- Tweak compat.h compat.cpp and merge with apcupsd
-- Add additional INFO messages if autochanger cannot be used.
-
-02May06
-- Simplify Win32 Makefile
-- Correct count of buffers/bytes used by smartall.c
-- Updated compat.h after porting apcupsd to MinGW.
-01May06
-- Work on getting wx-console building on MinGW. wxWidgets now builds
-  started adding Makefile ...
-- Moved MinGW library objects to src/win32/lib to reduce clutter.
-30Apr06
-- Reloading a bad configuration file doesn't kill director any more.
-  Thanks to fix from Eric Bollengier.
-29Apr06
-- Fix problem of accents with new Win32 code.
-- Integrate Howard's VSS patch. Tweak it a bit. VSS now
-  works in the MinGW build with the exception that there
-  is a problem with accented characters -- i.e. there is
-  some mapping problem with wide characters.
-- The code no longer compiles with Microsoft VC++.
-28Apr06
-- Start implementing Christopher's St.Bernard code.
-- Add Christopher's mods for opening files.
-- Strip \r \n from Win32 error messages (Christopher)
-- Add more info about Win32 system if unknown (Christopher)
-- Use bstrn(cpy, cat) routines to avoid overrun in compat.cpp
-- Fix a number of incorrect strings marked for translation, when
-  they should not be (e.g. commands).
-- Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob
-  Patches supplied by user in bugs #608 and #599.
-- Use most recent of st_ctime and st_mtime in restore tree DIR
-  listing. This fixes some problems with Win32 printing incorrect
-  values.
-- Correct the clock shift comm time calculation between the DIR
-  and the FD. It was added rather than subtracted.
-- Strip all backslashes in filenames to be restored on Win32
-  machines -- the names should all be in Unix format, and if
-  there are any backslashes it is most likely due to an improper
-  FileSet definition, and the files will not otherwise be 
-  restorable.
-- Remove lib/regex.c (replaced by bregex.c).
-- Delete src/win32/License.txt
-- Modify installer to install LICENSE
-26Apr06
-- Fix bug in build-win32-cross-tools script reported by Howard
-- Implement cross compiled bconsole
-25Apr06
-- Fix barcode test, eliminate BOOL (doesn't exist on Linux).
-- Write first cut of README.mingw32
-- Add back ua_label barcode fix from Rufolf Cejka.
-- Integrate the majority of the Mingw cross-tools submission
-  made by Howard Thomson. Everything compiles, with zlib, openssl,
-  and VSS turned off. Linking needs a pthreads library ...
-23Apr06
-- Add 'Dir Status' button to the gnome console.
-- More work on migration.
-- Restore non-compatible base64 coding to permit compatibility.
-- Display heap stats in Storage daemon without debug level.
-22Apr06
-- Integrate most of the MinGW changes -- more to do.
-21Apr06
-- Implement using pg_config for finding PostgreSQL files.
-  Fixes bug #600. Patch supplied by user.
-- Remove -t option from mktemp in mtx_changer.in and use
-  working directory. Fixes bug #578.
-- Update job start time after the any run before job so that
-  files created by the script are only backed up once. Fixes
-  bug #599.
-- Strip trailing newline only from filenames entered in
-  the restore command when reading a file. This permits
-  the user to enter filenames with trailing spaces. Fixes
-  bug #549. The user supplied a patch that I modified slightly.
-- Use the most recent time (st_mtime, st_ctime) in the dir
-  command in restore. This gives the user a better idea of what
-  the newest file really is. This fixes bug #574. The fix
-  was suggested by the user.
-- Implement a compatible version of base64. This permits external
-  programs to duplicate Bacula's base64 algorithm using standard
-  routines. This fixes bugs #296, and 565. Patch submitted by   
-  author of bug #565.  
-  ================= Note ========================
-  Previous Signatures stored in the database are no longer
-  compatible with this. The main downside is for Verify jobs,
-  and doing an InitCatalog run will fix the problem. Also, the
-  authentication between the deamons is changed, so all daemons
-  must be simultaneously upgraded.
-  ==============================================
-  If you don't like this fix, set:
-    const bool compatible = true;
-  to
-    const bool compatible = false;
-  in src/lib/base64.c
-20Apr06
-- Ensure that DB signature is never NULL.
-- Ensure that DB table names are not translated.
-- Fix scheduler to handle time skew (eg daylight savings).
-- Fix scheduler to use lock_jobs() to avoid most problems
-  with reload. Window is now milliseconds.
-19Apr06
-- Apply patch from Christopher Hull
-  - Allow multiple connections to database with different
-    parameters.
-  - Invalidate the scheduler when doing a reload. Fixes seg
-    fault, but still 60 second window.
-  - Additional info in Reschedule message.
-  - Use set_jcr_job_status() everywhere to prevent loss of
-    cancel, error.
-  - Display peer IP in FD if error from connecting DIR.
-  - Don't increment file count for DIRBEGIN.
-  - Replace illegal characters in Win32 filename by _.
-  - Add SE_CREATE_PERMANENT_NAME privilege in Win32.
-  - Hash hard link filenames rather than linked list.
-  - Fix for security failure in chdir on Win32.
-  - Add CreateDirectoryA/W win32 API entry points.
-- Add /silent option to Win32 FD for Install/Remove service.
-- Always print Heap statistics in FD.
-18Apr06
-- Remove the -f option from the chown in Makefile.in for more
-  portability.
-- Change setting the group in Makefile.in to use chgrp for
-  more portability.
-- Implement a write_store and read_store to replace
-  dirstore in reserve.c
-- Implement a Bacula read/write lock for Python rather
-  than using the Python lock to avoid recursive problems.
-- Correct the uninstall directory names in filed/Makefile.in
-  as reported by a user.
-17Apr06
-- Correct some problems with database creation (new tables).
-- Replace a bunch of old 0x%x by %p.
-- Get first cut of Migration with Job selection working.
-16Apr06
-- Change store_bit() to store_bool() for the Spooling in 
-  dird_conf.c -- bug reported by Robert Nelson.
-15Apr06
-- Correct Makefile bug found by Dan Langille.
-14Apr06
-- Correct Makefile for Solaris /bin/sh
-- Correct mtx-changer.in for Solaris /bin/sh
-- Abort if a conf resource does not have a Name =
-12Apr06
-- Change the name of the regex program to bregex.
-- Add the bwild program to the tools directory. It is similar
-  to the bregex program.
-- Implement create bregex.h and bregex.c in src/lib from the
-  Python regexp program.  
-- Use the new bregex.c to implement Regex expressions on Win32.
-11Apr06
-- More work on migration.
-- Implement wild program in tools directory for testing
-  wild-cards. Almost identical to the regex program.
-- Up port VSS single thread locking code.
-- Replace N_(..) by NT_(...) to inhibit translation of
-  commands.
-- Modify Makefile to change the permissions on Working Directory
-  to 770 if the directory is created.
-- Do not fail the Makefile if changing the permissions or 
-  owner/group on WorkingDir fails.
-- Remove early selection of Scratch Volumes in the recycling
-  algorithm.
-- Correct the old recycling algorithm so that Scratch Volumes
-  are selected when looking for a Volume in the changer.
-- Correct a typo in the Verify SQL reported by Joe Park.
-10Apr06
-- Remove automatic case folding on Windows FDs. You must
-  explictly use the 'Ignore Case = yes' option.
-- Remove the code added to 1.38.6 and 1.38.7 that pulls a
-  scratch volume in an Autochanger early in the 'recycling'
-  algorithm.  
-09Apr06
-- Make weof() and clrerror() methods of class DEVICE.
-08Apr06
-- Tweak license to include Microsoft restrictions.
-- Move mysql.reconnect to after real_connect().  Thanks to
-  Frank Sweetser for the patch.
-- Disallow a backslash in a File = directive (Windows junk)
-  unless the string is quoted.                     
-- Apply Eric's patch to ua_label.c so that daemon protocol
-  is not translated.
-- Add NT_ definition for strings that should not be translated.
-- Apply NT_() to ua_label.c
-- Remove timed wait for VSS on Win2K3 as it is not yet
-  implemented.
-- Correct bacula.in script to reference bacula-ctl-xx in the
-  sysconfig directory rather than the bin directory.
-26Mar06
-- Fix a long standing bug in the bacula start/stop scripts.
-- Attempt to add the new bacula-ctl-* files to the rpm.
-- Switch to using typeof() for list traversing to avoid
-  as many FC5 g++ compiler warnings as possible.
-25Mar06
-- Split the bacula start/start script into four files:
-   bacula         -- starts and stops calling other scripts
-   bacula-ctl-dir -- starts/stops the director
-   bacula-ctl-fd  -- starts/stops the File daemon
-   bacula-ctl-sd  -- starts/stops the Storage daemon
-24Mar06
-- Create datestyle fix for PostgreSQL. Fixes bug #574.
-- Correct editing of JobId from int to int64 in fd_cmds.c
-- Eliminate FileSet name race with bash_spaces() and multiple
-  threads by bashing in a local.
-- Fix error return from 'use storage' to print a correct error
-  message rather than nothing.
-- Correct false re-read last block error message when two jobs 
-  are simultaneously writing at the end of a tape.
-- Simplify exit conditions in the reserve.c code to avoid  
-  possible non-release of reservation_lock().
-- Suffle lock order in reserve to avoid deadlock between
-  reservation lock and device mutex.
-21Mar06
-- Initialize jcr mutex before first use. Thanks to Thorsten for
-  tracking this down for me !!!! as it broke the Win32 build.
-20Mar06
-- Integrate addition of line count limitation to bsmtp -l from
-  Sebastian Stark <stark at tuebingen.mpg.de>
-17Mar06
-- Implement regex test program in tools directory.
-- Attempt to fix time problem with bsmtp with foreign langs.
-- Add strip_trailing_newline() submitted by user.
-- Implement regex matching in migrate.c
-16Mar06
-- Fix bug #537 to allow arbitrary time to mount a volume for
-  restore, if polling is turned on.     
-- If dir_user or dir-group is specified in ./configure apply it to
-  the working-dir. Fixes bug #533.
-- If rescheduling a job cancel the previous incarnation with the SD.
-  Fixes bugs #566 and 557.
-- Fix bug #567 do_message() definition type conflict.
-
-14Mar06
-- Add more jcr methods and make mutex and use_count private.
-- Create lock/unlock methods for jcr.
-- Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading
-  records to get to seek position.
-- Integrate patch from bug #561 to correct conio.c signal definitions.
-- Fix Rescheduling failed Jobs. Ensure that SD message thread 
-  terminates correctly by doing pthread_kill(). Do not destroy
-  SD cond wait variable between executions of the job. Use local
-  mutex for cond variable to avoid blocking jcr chain. Fix poor 
-  use of jcr use count in jobq.c for restarted jobs.
-- Fix obsolete usage of foreach_dlist() to use foreach_jcr() in
-  lib/jcr.c -- prevents locking the jcr chaing.
-- Apply patch from bug #564, which corrects listing volumes with
-  multiple autochangers. Apply same fix to next volume list.
-- Fix bug #562 where restore bootstrap file is not unique.
-- More details in implementing David's migration syntax proposal.
-- Save and restore dcr when swapping drives so that if we have
-  a write dcr it is not lost.
-- Use new routine lock_reservations() to lock the reservations
-  system, and call it while looking for a volume in askdir.c.
-  This could possibly fix bug #543.
-- Stop SD command loop if job is canceled.
-
-08Mar06
-- Remove old code from findlib/create_file.c
-- Rename mac.c migrate.c
-- Add user friendly display of VolBytes in job report.
-- Rename target... to previous... to make it a bit easier to
-  understand.
-- Add selection type and selection pattern to Migration (idea
-  given by David Boyes). 
-
-04Mar06
-- The po files should now be current.
-- Fix new sql_use_result() code to properly release the
-  buffers in all cases.
-- Use the keyword ujobid to mean the unique job id; job or jobname
-  to mean the Job name given on the Name directive, and jobid to
-  be the numeric (non-unique) job id.
-- Allow listing by any of the above.
-- Add the user friendly job report code for reporting job elapsed time
-  and rates with suffexes from John Kodis <kodis at comcast.net>.
-- Add Priority and JobLevel as Python settable items.
-- Use TEMPORARY table creation where the table is created by
-  Bacula.
-- Add new code submitted by Eric for waiting on specific jobid.
-- Add ACL checking for the dot commands.
-- Fix restore of writable FIFOs.
-- Fix a bug in bpipe where the string was freed too early.
-27Feb06
-- Modify the Python class examples to inherit object -- new way
-  of defining classes. Patch from Felix Schwarz.
-- Implement jobuid to replace old usage of job in keywords as
-  suggested by Eric Bollengier.
-- Apply patch for enhancing wait from Eric Bollengier. On can now:
-   wait  (wait for all jobs to stop)
-   wait jobid=nn
-   wait jobuid=unique id
-   wait job=job-name
-- Implement write variables for Python to set Priority (anytime), and
-  Job Level, only during JobInit event.
-26Feb06
-- Fix the block listing bug pointed out by Arno.
-- Update the po files at Eric's request.
-24Feb06
-- Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to 
-  accept time qualifiers.
-- Make catalog respect ACL.
-- Add recycle count to Media record.
-
-Changes to 1.39.6-beta1 24Feb04
-23Feb06
-- Add Rudolf Cejka's new rc-chio-changer.
-- Implement pulling Volume from Scratch Pool if the
-  Volume is in the autochanger.
-- Implement additional command arguments for update Volume.
-
-Changes to 1.39.5 
-22Feb06
-- Back port changes to 1.38.5
-- Fix recycle SQL for StorageId.
-- Fix misplaced quote in mtx-changer script.
-20Feb06
-- Note. Your database must be updated, or you must create 
-  a new database. I have not yet incremented the database level.
-- Add Location table. 
-- Add LocationId, DeviceId, and MediaTypeId to Media record.
-18Feb06
-- Implement create/get mac record in database for adding extended
-  Migration data to the job record.
-- Add new MAC table to update/make database scripts.
-- Return Storage name used when getting VolumeNames for a job.
-- Change bsr file keyword Storage to Device, which is more accurate.
-- Ensure that Mac records are pruned/purged.
-- Tweak SD tools to deal with changing media type.
-- Integrate more dev.c subroutines as methods (e.g. strerror, bsr, ...)
-- Pass pointer to dcr pointer to acquire_device_for_read() so
-  that the subroutine can switch devices, and hence dcrs.
-- Modify the multiple MediaType read code to re-use the same
-  dcr when switching devices. This makes the code much more
-  robust.
-- Integrate patch from Karl Hakimian that reads JobIds, FileIndexes
-  from a table for restore.
-- Add Storage name to VolParams, but it really should be Device.
-14Feb06
-- Add disk-changer to scripts directory + configure/Makefile
-- Eliminate PoolId from jcr -- it is in jcr->jr.PoolId
-- Implement store_bit scanner to replace store_yesno.  Mostly done.
-- Implement new store_bool that stores in a bool. 
-- Add true/false to yes/no conf directives.
-- Make first cut at changing appropriate store_yesno to store_bool.
-- Complete implementation of Pool storage devices.
-- Move starting clones to job.c
-- Move create_restore_bootstrap_file() to job.c
-- Make copy_storage() more general to be able to handle
-  Pool storage.
-- Cleanup a lot of migration code for manual running, including
-  using Pool storage.
-- Move getting a scratch Volume into a subroutine.
-- Make all places a Volume that is added to a pool to 
-  respect max vols.
-- Fix bug in autochanger recycle code (improper edit 64 bit).
-- Fix segfault in restore command when no value specified.
-- Start adding code to handle multiple MediaTypes in restore.
-- Eliminate race condition in getting Volume name for
-  two drive autochanger.
-- More debug code in autochanger.
-- Add storage keyword to bootstrap file, add parsing.
-- Move slot in bsr file into Volume record as there will be
-  a different slot for each Volume.
-- Create reserve.h
-07Feb06
-- Implement Pool storage overrides.
-06Feb06
-- Implement first cut of Migration.
-- Implement mysql_use_result() from patch by Karl Hakimian.
-  This reduces significantly the memory consumption during
-  the restore tree building, and hence runs faster too.
-- Implement StorageId patch supplied by user (reggie) in bug
-  #536.  This should permit Bacula to work correctly with two
-  autochangers.
-- Implement Job listing variations suggested by a user.
-- Move updating bootstrap code in backup.c to subroutine
-  update_bootstrap_file().
-- Add new job status elapsed time and bytes written user
-  friendly job report output patch sent by John Kodis
-  <kodis at comcast.ne>.
-- Implement a storage list in Pools.
-- Separate out setup_job() code from run_job().
-- Get migration working -- lots of changes in mac.c in both
-  DIR and SD.
-- Apply patch from user (Eric Bollengier I think) that fixes a  
-  DIR crash when no arguments are supplied to a dot command.
-- Fix typo (strcpy->strcmp) in ua_prune.c as reported by Martin.
-- Fix command arg name->volume in label command of gnome-console.
-- Fix SD acquire.c to release correct DCR by explicitly testing
-  on the dcr address rather than trying to devine if it is a read
-  or write dcr.  This failed in error conditions when the device was
-  not fully setup.
-30Jan06
-- Apply user supplied patch for more readable rate output
-  in job report.
-- Continue implementing migration.
-- Implement support for removable filesystems in SD.
-- Ensure that btraceback scripts can be read by anyone.
-- Replace dvd-freespace and dvd-writepart by dvd-handler.
-- Correct bug where canceling restore before the FD contacts
-  the SD causes the drive to be left in read mode.
-- Move ofline_or_rewind into DEVICE::close().
-- Eliminate close_device.
-- Convert several dev subroutines to methods (e.g. bsf,
-  eod, ...)
-- Eliminate force_close_device().
-- Implement Device Type directive in Device resource that
-  can have values File, Tape, Fifo, DVD, or Prog.
-- Add has_cap() method to Device.
-Changes to 1.39.4
-17Jan06
-- Add patch from bug #527 to allow RedHat user to specify
-  options/user/group for starting each daemon in      
-  /etc/sysconf/bacula.
-16Jan06
-- Add two new queries to query.sql provided by Arno. One
-  list volumes known to the Storage device, and the other
-  lists volumes possibly needing replacement (error, ...).
-15Jan06
-- Add periodic (every 24 hours) garbage collection of memory 
-  pool by releasing free buffers.
-14Jan06
-- Correct bug counting sized (for display only) in smartall.c
-- Print FD mempool stats if debug > 0 rather than 5.
-12Jan06
-- Make db_lock() mutex error fail the job rather than abort
-  Bacula.  Canceling the job caused the mutex to fail.
-- Correct bug in alist.c that re-allocated the list if the
-  number of items goes to zero.
-- Move the reservation system thread locking to the top level
-  so that one job at a time tries all possible drives before
-  waiting.
-- Implement a reservation 'fail' message queue that is built         
-  and destroyed on each pass through the reservation system.
-  These messages are displayed in a 'Jobs waiting to reserve
-  a drive' list during a 'status storage='.  Note, multiple
-  messages will generally print for each JobId because they
-  represent the different problems with either the same drive
-  or different drives.  If this output proves too confusing
-  of voluminous, I will display it only when debug level 1
-  or greater is enabled in the SD.
-11Jan06
-- Add enable/disable job=<job-name>.  This command prevents
-  the specified job from being scheduled. Even when disabled,
-  the job can be manually started from the console.
-- During 'update slots' clear all InChanger flags where the
-  StorageId is zero (old Media records).
-
-Beta release 1.38.4:
-09Jan06
-- Fix autochanger code to strip leading spaces from returned
-  slots number. Remove bc from chio-changer.
-- Back port a bit of 1.39 crypto code to reduce diffs.
-- Fix first call to autochanger that missed close()ing the
-  drive. Put close() just before each run_program().  Fixes
-  Arno's changer bug.
-07Jan06
-- Add PoolId to Job record when updating it at job start time.
-06Jan06
-- Pull in more code from 1.39 so that there are fewer file
-  differences (the new ua_dotcmds.c, base64.h, crypto.h
-  hmac.c jcr.c (dird and lib) lib.h md5.h parse_conf.c 
-  util.c. Aside from ua_dotcmds.c these are mostly crypto
-  upgrades.
-- Implement new method of walking the jcr chain. The
-  incr/dec of the use_count is done within the walking
-  routines.  This should prevent a jcr from being freed
-  from under the walk routines.
-
-
-Changes to 1.39.3:
-04Jan06
-- Start implementing Verify list output.
-- Move the suitable_drive flag to a better place to prevent
-  premature termination of the reservation if all drives
-  are busy -- should fix Arno's diff/inc pool failures.
-26Dec05
-- Add mutex to single thread VSS code in Win32.
-22Dec05
-- Simplify code in askdir.c that waits for creating an appendable
-  volume so that it can handle multiple returns from the wait
-  code.
-- Modify the wait code to permit multiple returns.
-- Return a zero when "autochanger drives" is called and
-  it is not an autochanger.
-- Make rewind_dev() a method taking a DCR as an argument.
-  This permits closing and reopening the drive if the
-  rewind fails as happens if the drive was loaded while the
-  file descriptor was open. This refreshes the file descriptor.
-- Remove the ST_OPENED flag and always rely on fd < 0 for knowing
-  if the device is open or not.  This should eliminate
-  Arnos problem.
-- Return error if reserve cannot find at least one suitable device.
-- Make wait_for_sysop() return correct state information.
-- Fix Win32 state file problem. write was not using compat
-  code. This should fix bug #500.
-21Dec05
-- Modify gui on command to set only GUI mode and not batch.
-- Modify .messages command to always print messages regardless
-  of the mode.
-- If GUI mode is on, suppress automatic printing of 
-  You have messages. 
-- Delete old bnet packet code.
-- Ignore new BNET_START_SELECT and BNET_END_SELECT signals in
-  wx-console. -- not implemented because bconsole must be updated.
-- Modify restore command in wx-console to set gui on and to use
-  only .messages instead of messages.  Hopefully this fixes bug
-  #514.
-- Fix seg fault in exit of acquire when canceling a job --
-  reported by Wolfgang Denk
-- Pull in latest reservation system changes from 1.38
-- Make .messages command always print messages regardless
-  of the automessages flag.
-17Dec05
-- Fix seg fault if user labels a drive directory bug #513
-- Remove quotes around Version as it breaks things.
-16Dec05
-- Merge in Aleksandar Milivojevic's mods to the spec file.
-- Apply sparse code fix for raw drives and fifos. Bug 506
-- Thorsten fixed Unicode cd problem with wx-console bug 505.
-14Dec05
-- Correct reservation system to do a last ditch try
-  for any mounted volume, then anyone anywhere.
-- Add quotes around table Version because of
-  error in MySQL 4.1.15 -- bug report submitted.
-- Correct some minor problems with btape in the fill
-  command.
-- Updates to ssh-tunnel from Joshua Kugler.
-- Added a report.pl program from Jonas Bjorklund.            
-- Simplify the O_NONBLOCK open() code for tape drives,
-  and always open nonblocking.
-- Do not wait for open() if EIO returned (shouldn't happen).
-- Eliminate 3 argument to tape open().
-- Correct the slot # edited in the 3995 Bad autochanger unload
-  message.
-- With -S on bscan (show progress) do not divide by zero.
-13Dec05
-- Make cancel pthread_cond_signal() pthread_cond_broadcast().
-- When dcr is freed, also broadcast dev->wait_next_vol signal.
-- Remove unused code in wait_for_device.  
-- Make wait_for_device() always return after 60 seconds of wait.
-
-Changes to 1.39.2:
-13Dec05
-- Add stubs for non-crypto build.
-12Dec05
-- Use localhost if no network configured
-11Dec05
-- Eliminated duplicate MaxVolBytes in cat update -- bug 509.
-- Remove debug print.
-- Add bail_out in error during state file reading.
-10Dec05
-- Merge changes made to 1.38.3 into HEAD
-- Add stubs for pygtk-console code
-- Create Makefile.in for pygtk-console code
-09Dec05
-- Merge updates into 1.38 branch
-- Update specs to include mysql4 define.
-- Fix when attributes are sent, must be after binit().
-- Stop read_record() if status not ok in second loop.
-- Return rec->FileIndex in dcr->VolLastIndex for normal
-  and partial records in read_record().  This allows bscan
-  to get FileIndex at EOT correct.
-- Fix butil.c to correctly set dcr -- fixes seg fault in bls.
-08Dec05
-- Fix Win32 built to work with new crypto code.
-- Apply patch supplied by user (slightly modified) to fix
-  correct detection of holes in block devices and FIFOs. 
-  Bug # 506.
-- Apply patch supplied by user (slightly modified) 
-  to fix SD hang with multiple pools and bad client
-  IP. Fixes bug # 508.
-07Dec05
-- Add nagios plugin to the examples directory. Submitted by
-  Christian Masopust.
-- Remove warning message about multiple saves of hardlinked files
-  from find_one.c as it can generate too many warning messages.
-- Modify most restore error messages to be queued so that they
-  appear at the end of the job rather than mixted with the restore
-  listing where they could be "lost".
-06Dec05
-- Reset timeout values before select() per patch from 
-  Frank Sweetser for problems with non-blocking sockets.
-- Unlink the state file if either reading or writing it gets
-  errors.  Hopefully this will fix Win32 exit problems.
-- Add sanity check in append.c to ensure that dcr is not NULL.
-  This can happen if multiple drive autochanger SCSI control
-  channel and drive indicies do not correspond.
-05Dec05
-- Get next volume from Scratch pool before creating a volume.
-- Set new Pool defaults in Vol when moved from Scratch Pool.
-- Remove argument from create_bacula_database for SQLite as it
-  caused an error.
-- Add back index code so that two drive autochangers can get
-  a second tape.
-- Change a bunch of debug levels to aid debugging autochangers.
-- Fix reservation so that mutexes are properly applied.
-- Rework reservation algorithm so that two drives can be used
-  at the same time.
-04Dec05
-- Landon merged his data encription changes into the HEAD
-- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at 
-  If this patch is applied, the number of days can be specified with
-  "list nextvol days=xx"
-  or
-  "status dir days=xx"
-  My use case is to be able to preview the next scheduled job (and the 
-  next tape to be used) on fridays if there are no scheduled jobs during 
-  the weekend.
-Changes to 1.39.1:
-03Dec05
-- Fix font code in gnome2 console user patch. Fixes bug #501.
-- Fix malformatted bnet error message that caused seg fault
-  fixes bug 502
-- Applied user patch to improve README.vc8 in src/win32.
-29Nov05
-- Add Migrate, Copy, Archive Job types (some where there)
-- Correct some more editing of JobId's (for 64 bit compatibility).
-- Ensure that StorageId is stored in Media record when ever possible.
-- Add Migration Job to Job.
-- Add Migration Time, Migration High Bytes, Migration Low Bytes
-  Next Pool to Pool resource.
-- Add more code to mac.c (migration archive copy).
-- Change Start Storage daemon job to require read and write storage
-  pointers.
-- Pass read storage data to SD as well as write storage data.
-- Remove old code from winservice.cpp
-- Break on error in scan.
-- Fix typo in signal.c
-- Separate read/write DCR in SD.  Add jcr->read_dcr.
-- Cleanup how find_device() works.
-- Add read output to Status in SD.
-Changes to 1.39.0:
-23Nov05
-- Add red-black btree routines
-21Nov05
-- Remove abs() in bfile.c so that it compiles on Solaris. 
-  Bug #491.
-20Nov05
-- Fix crash in tray-monitor when daemon disconnects. Bug #479.
-- Fix bnet-server bug found on OpenBSD. Bug #486
-- Fix cancel failure bug. Bug #481
-- Fix failure when Pool name has spaces. Bug #487   
-- Fix SD crash in autochanger code. Mutex failure. Bug #488
-- Fix a couple of free()s in src/filed/acl.c
-- Fix memory overrun in bfile.c in building OS X resource
-  fork filename. Bug #489 
-- Add Pool name to SD status output.
-14Nov05
-- Apply SunOS patch for ACLs submitted by David Duchscher.                  
-- Make sure to set storage before trying to set drive.
-- Add bacula_mail_summary.sh to examples directory. It makes
-  a single email summary of any number of jobs. Submitted
-  by Adrew J. Millar.
-- Make sure when we do a mount to unblock the device even
-  if the drive could not be opened.  
-13Nov05
-- Remove the USE_WIN32STREAMEXTRACTION #defines (always on)
-  and correct a few minor problems to make it build on Linux.
-10Nov05
-- Remove delete of CVS from all Makefiles
-- Fix seg fault when clicking on Add button in wx-console
-  restore panel.  Bug #470.
-- Fix copyright date and URL typo -- bug #468.
-- Change autostart install for FreeBSD to look for rc.conf  
-  rather than rc.local as suggested fix for bug #466.
-- Apply patch supplied by Eric Bollengier to fix PostgreSQL    
-  grant on status. Bug #465
-- Apply patch supplied by Eric Bollengier to fix PostgreSQL
-  update script. Bug #464
-- Tweak #ifdefing a bit in new Win32 stream code.
-- Fix #ifdeffing for FD_NO_SEND_TEST.
-- Add documentation of performance #defines
index ca15715c638800ba6f4d30021890e7ba670d68c4..6188e54edf9c3497c8c7ef7b7870c3aac9c50033 100755 (executable)
@@ -1289,12 +1289,18 @@ void dequeue_messages(JCR *jcr)
 {
    MQUEUE_ITEM *item;
    P(msg_queue_mutex);
+   if (!jcr->msg_queue) {
+      goto bail_out;
+   }
    jcr->dequeuing = true;
    foreach_dlist(item, jcr->msg_queue) {
       Jmsg(jcr, item->type, item->mtime, "%s", item->msg);
    }
    jcr->msg_queue->destroy();
+   jcr->msg_queue = NULL;
    jcr->dequeuing = false;
+
+bail_out:
    V(msg_queue_mutex);
 }
 
index 16b17d291d46400ef9273d629f2d45862b0777a1..eb7856fdcca8c866d131c9968a774fef0677ff6f 100644 (file)
@@ -1072,8 +1072,8 @@ static int update_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *elabel,
       return 0;
    }
    if (verbose) {
-      Pmsg2(000, _("Updated Job termination record for JobId=%u TermStat=%c\n"), jr->JobId,
-         jr->JobStatus);
+      Pmsg3(000, _("Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"), 
+         jr->JobId, job_level_to_str(mjcr->JobLevel), jr->JobStatus);
    }
    if (verbose > 1) {
       const char *term_msg;
index 4d3b26caf85b9e5dc790749d4a16c663b0ef1fda..a27fae9f71b37d42bd79c01a9e5bb67b8f4a24ac 100644 (file)
@@ -30,7 +30,7 @@
 /* #define DEBUG_MUTEX 1 */
 
 /* Check if header of tape block is zero before writing */
-#define DEBUG_BLOCK_ZEROING 1
+/* #define DEBUG_BLOCK_ZEROING 1 */
 
 /* #define FULL_DEBUG 1 */   /* normally on for testing only */
 
diff --git a/bacula/technotes-1.39 b/bacula/technotes-1.39
new file mode 100644 (file)
index 0000000..8781e0d
--- /dev/null
@@ -0,0 +1,997 @@
+              Technical notes on version 1.39  
+
+General:
+02Aug06
+kes  Change the name of the technical notes file from kes-1.39 to
+     technotes-1.39.  Prefix my messages with 'kes  '.
+kes  Allow dequeue_messages() to be called twice. Should fix bug  
+     # 649.
+kes  Add Job type to bscan Job information output.
+01Aug06
+kes  Update copyright date in program files, and for the most part
+     put it on a #define.
+kes  Implement %q in bsnprintf.c apparently I forgot it.
+31Jul06
+kes  Make disk-changer sed command compatible with FreeBSD.
+kes  Make a first cut at a ReleaseNotes and ChangeLog for a 
+     beta release.
+kes  Make make clean decend into the src/win32 directory.
+kes  Fix some #ifdefing so that Solaris and FreeBSD compile 
+     sys/stat.h was turned off.
+kes  Use suffix editing for new transfer rate messages.
+kes  Attempt to come up with a workaround which seems to be an OS
+     bug where write() returns EBUSY.  IMO this should not happen.
+     It triggered in truncatebug test. The workaround retries using
+     a 100 ms wait.
+kes  Eliminate a strerror() call in a class method that failed with
+     older C++ compilers.
+kes  Use rm -rf rather than rmdir to delete the src/win32/release
+     directory during make clean.
+30Jul06
+kes  Make bscan ignore ACL streams.
+kes  Update projects files with new Feature Requests.
+kes  Generate current English and French manuals and upload
+     them to the site.
+kes  Update the home page to include the new British/French flags to
+     switch between translations. Work done by Alexandre Baron.
+kes  Make disk-changer script print an error message if the changer
+     directory is not defined.
+kes  Create a generic DB routine for getting an int (32/64 bit) from
+     the DB.
+kes  Add more migration code.
+kes  Add a few more files to .cvsignore here and there.
+kes  Minor fixes for SD write rate and despooling rate.
+kes  Turn off new test code in src/console.c
+
+Version 1.39.18
+29Jul06
+- Incremented the version number to signify that all of Robert's code
+  for Win32 that was in the branch is now integrated into the HEAD,
+  and that Eric has submitted code that we hope will provide limited
+  backward compatibility with 1.38 file daemons (more testing to be
+  done).
+- I rationalized a few of the names of the variables (mainly jcr names)
+  that are used during migration as keeping three different jcrs at the
+  same time clear in one's head is not easy.
+
+Version 1.39.17
+28Jul06
+- Tweak new runscript feature to work with 1.38.x FDs. 
+- Correct crypto.c to fix segfault when restoring an encrypted stream 
+  on fd which don't use rsa keys.
+- Add yes/no english keywords on localised yes/no questions.
+27Jul06
+- Several important commits from Robert Nelson for code cleanup and
+  Win32 build.
+- Modify console.c so that when conio is enabled, it converts \n to
+  \n\r before outputting to the console.  Hopefully this will fix
+  the problems with expect in Perl that Eric saw.
+24Jul06
+- Change cats/sql.c to elimate %-*s format, which I think is turned
+  off in bsnprintf.
+- Add Comment field to llist of a volume.
+- Allow true/false in some yes/no questions.
+- Implement update volume enable=(on|off|true|false|archived|0|1|2)
+- Remove a few /n's when scanning commands from another daemon. This
+  permits adding additional fields later.
+- Modify dbcheck to handle ctl-d and to delete Log table entries.
+- Update README.mingw
+22Jul06
+- Tweak authentication to work with 1.38.x FDs. 
+- Tweak catalog make scripts.
+- Fix catalog upgrade scripts so that they work.
+- Correct despooling debug code to eliminate race condition.
+19Jul06
+- Add additional fields as specified by Arno to LocationLog.
+- Add comment field to the Media record.
+- Add Time field to the Log record.
+- Correct migration SQL (thanks to Bill Moran) so that it
+  runs with PostgreSQL also.
+- Add spooling/despooling info in status output of SD.
+17Jul06
+- Spend a lot of time integrating mkcdrec with the rescue disk.
+- Add VOLMGMT message class for volume management messages (none yet).
+- Add CATALOG as a destination.  It goes into the LOG table.
+- Implement the Log table in the DB.
+- Implement the Location Log table in the DB (for user use).
+- At Eric's request add a run_scripts() just after blast_data in
+  src/filed/job.c
+10Jul06
+- Add Enabled column to Location, correct some typos in DB schemas.
+- Correct bug I introduced into RunScripts enum.
+- Add log table to Catalog
+- Purge original job migrated if the migration terminates normally.
+- Cleanup purging of files/jobs so that it is done only in a 
+  single subroutine.
+- Add new VOLMGMT message class.
+- Add Catalog message destination (user conf code remains to be written).
+09Jul06
+- Modify read_record and friends to properly deal with migration      
+  needs.
+- Update debug code in read_record.    
+08Jul06
+  ======================= Warning ==========================
+  Separate read and write storage in Jobs in the Director. This
+  is a major rewrite of some of the low level code and hence has
+  a high probability of introducing bugs.
+  ==========================================================
+
+- Move the job init code up to *before* the job is put into
+  the job queue (resource allocation queue). This permits the
+  job to establish whether it will read or write or do both.
+- Add name() methods to all the resource classes.
+- Implement separate read and write storage resource 
+  allocation/deallocation in jobq.c
+
+  ======================= Warning ==========================
+  Implemented new method of getting the default Storage from the Media
+  record rather than from the MediaType for restore.  As a fall
+  back, if no Storage is defined, use the MediaType.  This
+  eliminates most all prompts if there are multiple MediaTypes
+  used. This is an important and fundamental change.
+  ==========================================================
+
+- Add more detail (Storage, Device) to list of volumes printed
+  for restore.
+- More code in migrate. In particular start multiple jobs if
+  migrating a volume.
+- Probably overkill, but ensure that the bsr is unique even within a 
+  job in FD and SD.
+- Rework bsys.c drop() so that it now should work as expected.
+- Update a bunch of old copyrights -- particularly in .h files.
+- Remove src/lib/bshm.c/h
+05Jul06
+- Migration fixes
+04Jul06
+  ======================= Warning ==========================
+     All hash codes in the database are now kept in world
+     compatible base64 format (no = filling). This means that
+     all FileSets will be updated and if you are running
+     verify jobs, you must do an InitCatalog.
+     Authentication uses the new algorithm, but should be
+     backward compatible with 1.38.x
+  ===========================================================
+
+- Modify the authentication routines so that the 1.39.15 Director
+  always runs with the compatible binary to base64 code (same as
+  the rest of the world).  It will however detect if an SD or
+  FD is running the old code and if that is the case, will use
+  the old algorithm for authentication.  However, all consoles must
+  use the compatible algorithm, and all data entered into the database
+  (all hash signatures, MD5, SHA1, ..., and all FileSet hashes) will
+  use the compatible algorithm.
+- Rename the cram_md5 routine names to be slightly more appropriate
+  to what they are doing (challenge and respond).
+- Robert committed his #ifdef and header cleanup.
+30Jun06
+- Fix a complier warning in files/backup.c
+- Cleanup NOT NULL vs DEFALT 0 in database creation.
+- Tweak btape.
+- Robert committed his low impact changes.
+- I removed a size_t from the jcr.h definition.
+- Update the tape regression scripts (still to be tested).
+- Add gcc and gcc-c++ requires to srm as suggested by a user.
+- Require done or quit to exit from in memory tree restore.
+26Jun06
+- Write install/uninstall of new manpages. There are now a
+  pile of man pages. Some of which need a lot of work.
+
+  ======================= Warning ==========================
+     The --mandir ./configure option now points to the top level
+     man directory.  The man files will be installed under
+     mandir/man8 and mandir/man1 as appropriate.
+  ==========================================================
+
+- Add complete text of GPL to LICENSE.
+- Implement job report that indicates where Storage and Pool
+  came from -- with overrides and Pool storage and NextPool,
+  it is all very complicated.
+- Create a few common subroutines for backup.c and migrate.c
+- Eliminate warning messages from tray-monitor.c
+25Jun06
+- Apply fix for scheduler for missing unlock_jobs().
+- Clean out autoconf caches before rebuilding configure
+- Fix the FreeBSD pthreads lib define updated by Dan.
+- Add missing semicolon in src/console/console.c
+- Add Robert's enhanced version of build-win32-cross-tools
+  as well as his patch file.
+- Note, the new gcc options are likely to break building of
+  wx-console or the tray-monitor ...
+24Jun06
+- Implement Robert's suggestion to suppress printing compile lines.
+- Detect GCC correctly (I hope)
+- If using GCC (actually g++) add the following compiler flags
+  -fno-strict-aliasing -fno-exceptions -fno-rtti
+
+  ===================== Warning =============================
+  Turn on new bsnprintf() code.  This could cause print output
+  to look different.
+  ===========================================================
+
+- Fix crypto when not using openssl. I previously overlooked this.
+- Eliminate crypto type punning problems by eliminating void * and
+  using uint8_t * instead.
+- Harden authentication failure in FD by single threading errors
+  and forcing a 6 second wait.
+
+  ===================== Warning =============================
+       Removed  "Accept Any Volume" directive.
+  ===========================================================
+
+- Major cleanup and simplification of regress using shell functions
+  (more tests to be converted to new format)   
+- Add detection of 64 bit Irix as indicated by user.
+- Increment catalog database id from 9 to 10.
+- Add a few of the new database fields to the various C++
+  structures.
+- Implement code to fill in the most important new fields (e.g.
+  Media Enable).
+- Ensure that most of the new fields are in create/get/insert/update.
+  More work to be done.
+22Jun06
+- Update some very old licenses in src/cats.
+- Modify the database format for handling Migration jobs:
+   Add PriorJobId, RealEndTime to Job table
+   Delete MAC table
+   Remove Stripe from JobMedia record (not used, wasting space)
+   Add ScratchPoolId, RecyclePoolId, Enabled to Media record
+   Add Cost to Location table.
+- Delete mac_record subroutines.
+- Add new table values to create/update/get routines as appropriate.
+- Update the update_tables and make_tables scripts.
+- Make a first cut in using a union where multiple pointers (actually
+  pointers to pointers) are stored.
+- Make some changes to base64.c suggested by Robert and others and add
+  a small amount of documentation.
+- Add some changes suggested by Peter for Solaris (bregex...)
+- Make runscript.h always built because it needs to be pulled into
+  more places.  In particular its RES was left out of a union.
+- Renumber the enum{} list in runscript.h to avoid starting from zero.
+  This makes it slightly easier to detect uninitialized variables.
+14Jun06
+- Remove xpg4 lib from FreeBSD build as it is no longer needed and
+  sometimes creates install problems.
+- Change a couple of %T in strftime to %H:%M:%S as seen in Robert
+  Nelson's code.  More to do.
+- Convert a few store_bit to store_bool in filed_conf.c.    
+- DVD tweak to block.c as supplied by Uwe Muessel.
+04Jun06
+- Modify configure.in to check for typeof().
+- In findlib/attribs.c use typeof instead of templates if possible.
+01Jun06
+- Implement partial error messages for src/filed/acl.c
+- Fix return code to fail when doing update barcodes and
+  Pool resource is not found. This previously caused Volumes
+  to be labeled as cleaning tapes.
+- Small updates to projects.
+27May06
+- Add Eric Bollengier patch for new RunScript directive. It breaks
+  compatibility between dird and fd.
+26May06
+- Prevent DVD code from rewriting label if the device cannot be
+  opened read/write.
+- Used __GNUC__ to detect GNU g++ as suggested by John Goerzen to
+  fix Debian build bug.
+- Fix Dir/SD run race in migrate.c, verify.c, and restore.c
+- Integrate manpages contributed by Jose Luis.
+- Update projects file.
+- Add manpages Makefile.in to configure.in
+- Remove installation of bacula.8 in scripts directory.
+24May06
+- Implement patch submitted by cesarb in bug #606 to implement O_NOATIME
+  support.
+    O_NOATIME is a open() flag which makes it possible to read a file without
+    updating the inode atime (and also without the inode ctime update which
+    happens if you try to set the atime back to its previous value). It also
+    prevents a race condition when two programs are reading the same file, but
+    only one does not want to change the atime. It's most useful for backup
+    programs and file integrity checkers (and bacula can fit on both
+    categories).
+
+    Recent versions of the Linux kernel and glibc have support for it (the
+    glibc support being mostly copying the O_NOATIME definition to
+    bits/fcntl.h). If there's no support for it on the kernel, trying to use
+    it does nothing (since the kernel ignores unknown flags).
+
+    If the kernel has support for it, trying to use it either works, fails
+    silently (mostly in remote filesystems), or returns errno=EPERM (if you
+    are not either the owner of the file or root). A simple way to prevent the
+    failure is to open the file without the flag and set it later with
+    fcntl(F_SETFL), ignoring any EPERM errors.
+- Applied patch posted by Jaime Ventura to bug #570 to correct failure
+  of restarted jobs to complete (due to a destroyed pthreads conditional
+  variable used by the message thread).
+- Fixed bug #619 where Bacula would not restart jobs with MaxRestartTimes
+  set to zero. 
+- Apply patch from John Goerzen bug #611 to fix bad manual links in the code.
+- Apply patch from Rudolf Cejka bug #614 to removed trailing
+  colons in query.sql file.
+- Apply patch from Rudolf Cejka bug #613 to correct prunning of files
+  not to create orphans.
+- Apply patch from Rudolf Cejka bug #617 to use mtime instead of ctime
+  in restore long listing.
+- Apply patch from Rudolf Cejka bug #609 to use MarkId in verify.c instead
+  of incorrect MarkedId.
+- Apply patch from adioso bug #616 to correct text in manual (replace
+  Director with File daemon).
+- Rework a few of the zlib changes so that they build properly.
+
+21May06
+- Move DIR "run" command to SD before starting the message thread
+  as suggested by Cristopher Hull to avoid a race deadlock from
+  two threads using the bsock structure.
+- Modify LICENSE to correct some problems pointed out by Debian.
+05May06
+- Correct EOF with no \n lex.c problem.
+- Tweak compat.h compat.cpp and merge with apcupsd
+- Add additional INFO messages if autochanger cannot be used.
+
+02May06
+- Simplify Win32 Makefile
+- Correct count of buffers/bytes used by smartall.c
+- Updated compat.h after porting apcupsd to MinGW.
+01May06
+- Work on getting wx-console building on MinGW. wxWidgets now builds
+  started adding Makefile ...
+- Moved MinGW library objects to src/win32/lib to reduce clutter.
+30Apr06
+- Reloading a bad configuration file doesn't kill director any more.
+  Thanks to fix from Eric Bollengier.
+29Apr06
+- Fix problem of accents with new Win32 code.
+- Integrate Howard's VSS patch. Tweak it a bit. VSS now
+  works in the MinGW build with the exception that there
+  is a problem with accented characters -- i.e. there is
+  some mapping problem with wide characters.
+- The code no longer compiles with Microsoft VC++.
+28Apr06
+- Start implementing Christopher's St.Bernard code.
+- Add Christopher's mods for opening files.
+- Strip \r \n from Win32 error messages (Christopher)
+- Add more info about Win32 system if unknown (Christopher)
+- Use bstrn(cpy, cat) routines to avoid overrun in compat.cpp
+- Fix a number of incorrect strings marked for translation, when
+  they should not be (e.g. commands).
+- Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob
+  Patches supplied by user in bugs #608 and #599.
+- Use most recent of st_ctime and st_mtime in restore tree DIR
+  listing. This fixes some problems with Win32 printing incorrect
+  values.
+- Correct the clock shift comm time calculation between the DIR
+  and the FD. It was added rather than subtracted.
+- Strip all backslashes in filenames to be restored on Win32
+  machines -- the names should all be in Unix format, and if
+  there are any backslashes it is most likely due to an improper
+  FileSet definition, and the files will not otherwise be 
+  restorable.
+- Remove lib/regex.c (replaced by bregex.c).
+- Delete src/win32/License.txt
+- Modify installer to install LICENSE
+26Apr06
+- Fix bug in build-win32-cross-tools script reported by Howard
+- Implement cross compiled bconsole
+25Apr06
+- Fix barcode test, eliminate BOOL (doesn't exist on Linux).
+- Write first cut of README.mingw32
+- Add back ua_label barcode fix from Rufolf Cejka.
+- Integrate the majority of the Mingw cross-tools submission
+  made by Howard Thomson. Everything compiles, with zlib, openssl,
+  and VSS turned off. Linking needs a pthreads library ...
+23Apr06
+- Add 'Dir Status' button to the gnome console.
+- More work on migration.
+- Restore non-compatible base64 coding to permit compatibility.
+- Display heap stats in Storage daemon without debug level.
+22Apr06
+- Integrate most of the MinGW changes -- more to do.
+21Apr06
+- Implement using pg_config for finding PostgreSQL files.
+  Fixes bug #600. Patch supplied by user.
+- Remove -t option from mktemp in mtx_changer.in and use
+  working directory. Fixes bug #578.
+- Update job start time after the any run before job so that
+  files created by the script are only backed up once. Fixes
+  bug #599.
+- Strip trailing newline only from filenames entered in
+  the restore command when reading a file. This permits
+  the user to enter filenames with trailing spaces. Fixes
+  bug #549. The user supplied a patch that I modified slightly.
+- Use the most recent time (st_mtime, st_ctime) in the dir
+  command in restore. This gives the user a better idea of what
+  the newest file really is. This fixes bug #574. The fix
+  was suggested by the user.
+- Implement a compatible version of base64. This permits external
+  programs to duplicate Bacula's base64 algorithm using standard
+  routines. This fixes bugs #296, and 565. Patch submitted by   
+  author of bug #565.  
+  ================= Note ========================
+  Previous Signatures stored in the database are no longer
+  compatible with this. The main downside is for Verify jobs,
+  and doing an InitCatalog run will fix the problem. Also, the
+  authentication between the deamons is changed, so all daemons
+  must be simultaneously upgraded.
+  ==============================================
+  If you don't like this fix, set:
+    const bool compatible = true;
+  to
+    const bool compatible = false;
+  in src/lib/base64.c
+20Apr06
+- Ensure that DB signature is never NULL.
+- Ensure that DB table names are not translated.
+- Fix scheduler to handle time skew (eg daylight savings).
+- Fix scheduler to use lock_jobs() to avoid most problems
+  with reload. Window is now milliseconds.
+19Apr06
+- Apply patch from Christopher Hull
+  - Allow multiple connections to database with different
+    parameters.
+  - Invalidate the scheduler when doing a reload. Fixes seg
+    fault, but still 60 second window.
+  - Additional info in Reschedule message.
+  - Use set_jcr_job_status() everywhere to prevent loss of
+    cancel, error.
+  - Display peer IP in FD if error from connecting DIR.
+  - Don't increment file count for DIRBEGIN.
+  - Replace illegal characters in Win32 filename by _.
+  - Add SE_CREATE_PERMANENT_NAME privilege in Win32.
+  - Hash hard link filenames rather than linked list.
+  - Fix for security failure in chdir on Win32.
+  - Add CreateDirectoryA/W win32 API entry points.
+- Add /silent option to Win32 FD for Install/Remove service.
+- Always print Heap statistics in FD.
+18Apr06
+- Remove the -f option from the chown in Makefile.in for more
+  portability.
+- Change setting the group in Makefile.in to use chgrp for
+  more portability.
+- Implement a write_store and read_store to replace
+  dirstore in reserve.c
+- Implement a Bacula read/write lock for Python rather
+  than using the Python lock to avoid recursive problems.
+- Correct the uninstall directory names in filed/Makefile.in
+  as reported by a user.
+17Apr06
+- Correct some problems with database creation (new tables).
+- Replace a bunch of old 0x%x by %p.
+- Get first cut of Migration with Job selection working.
+16Apr06
+- Change store_bit() to store_bool() for the Spooling in 
+  dird_conf.c -- bug reported by Robert Nelson.
+15Apr06
+- Correct Makefile bug found by Dan Langille.
+14Apr06
+- Correct Makefile for Solaris /bin/sh
+- Correct mtx-changer.in for Solaris /bin/sh
+- Abort if a conf resource does not have a Name =
+12Apr06
+- Change the name of the regex program to bregex.
+- Add the bwild program to the tools directory. It is similar
+  to the bregex program.
+- Implement create bregex.h and bregex.c in src/lib from the
+  Python regexp program.  
+- Use the new bregex.c to implement Regex expressions on Win32.
+11Apr06
+- More work on migration.
+- Implement wild program in tools directory for testing
+  wild-cards. Almost identical to the regex program.
+- Up port VSS single thread locking code.
+- Replace N_(..) by NT_(...) to inhibit translation of
+  commands.
+- Modify Makefile to change the permissions on Working Directory
+  to 770 if the directory is created.
+- Do not fail the Makefile if changing the permissions or 
+  owner/group on WorkingDir fails.
+- Remove early selection of Scratch Volumes in the recycling
+  algorithm.
+- Correct the old recycling algorithm so that Scratch Volumes
+  are selected when looking for a Volume in the changer.
+- Correct a typo in the Verify SQL reported by Joe Park.
+10Apr06
+- Remove automatic case folding on Windows FDs. You must
+  explictly use the 'Ignore Case = yes' option.
+- Remove the code added to 1.38.6 and 1.38.7 that pulls a
+  scratch volume in an Autochanger early in the 'recycling'
+  algorithm.  
+09Apr06
+- Make weof() and clrerror() methods of class DEVICE.
+08Apr06
+- Tweak license to include Microsoft restrictions.
+- Move mysql.reconnect to after real_connect().  Thanks to
+  Frank Sweetser for the patch.
+- Disallow a backslash in a File = directive (Windows junk)
+  unless the string is quoted.                     
+- Apply Eric's patch to ua_label.c so that daemon protocol
+  is not translated.
+- Add NT_ definition for strings that should not be translated.
+- Apply NT_() to ua_label.c
+- Remove timed wait for VSS on Win2K3 as it is not yet
+  implemented.
+- Correct bacula.in script to reference bacula-ctl-xx in the
+  sysconfig directory rather than the bin directory.
+26Mar06
+- Fix a long standing bug in the bacula start/stop scripts.
+- Attempt to add the new bacula-ctl-* files to the rpm.
+- Switch to using typeof() for list traversing to avoid
+  as many FC5 g++ compiler warnings as possible.
+25Mar06
+- Split the bacula start/start script into four files:
+   bacula         -- starts and stops calling other scripts
+   bacula-ctl-dir -- starts/stops the director
+   bacula-ctl-fd  -- starts/stops the File daemon
+   bacula-ctl-sd  -- starts/stops the Storage daemon
+24Mar06
+- Create datestyle fix for PostgreSQL. Fixes bug #574.
+- Correct editing of JobId from int to int64 in fd_cmds.c
+- Eliminate FileSet name race with bash_spaces() and multiple
+  threads by bashing in a local.
+- Fix error return from 'use storage' to print a correct error
+  message rather than nothing.
+- Correct false re-read last block error message when two jobs 
+  are simultaneously writing at the end of a tape.
+- Simplify exit conditions in the reserve.c code to avoid  
+  possible non-release of reservation_lock().
+- Suffle lock order in reserve to avoid deadlock between
+  reservation lock and device mutex.
+21Mar06
+- Initialize jcr mutex before first use. Thanks to Thorsten for
+  tracking this down for me !!!! as it broke the Win32 build.
+20Mar06
+- Integrate addition of line count limitation to bsmtp -l from
+  Sebastian Stark <stark at tuebingen.mpg.de>
+17Mar06
+- Implement regex test program in tools directory.
+- Attempt to fix time problem with bsmtp with foreign langs.
+- Add strip_trailing_newline() submitted by user.
+- Implement regex matching in migrate.c
+16Mar06
+- Fix bug #537 to allow arbitrary time to mount a volume for
+  restore, if polling is turned on.     
+- If dir_user or dir-group is specified in ./configure apply it to
+  the working-dir. Fixes bug #533.
+- If rescheduling a job cancel the previous incarnation with the SD.
+  Fixes bugs #566 and 557.
+- Fix bug #567 do_message() definition type conflict.
+
+14Mar06
+- Add more jcr methods and make mutex and use_count private.
+- Create lock/unlock methods for jcr.
+- Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading
+  records to get to seek position.
+- Integrate patch from bug #561 to correct conio.c signal definitions.
+- Fix Rescheduling failed Jobs. Ensure that SD message thread 
+  terminates correctly by doing pthread_kill(). Do not destroy
+  SD cond wait variable between executions of the job. Use local
+  mutex for cond variable to avoid blocking jcr chain. Fix poor 
+  use of jcr use count in jobq.c for restarted jobs.
+- Fix obsolete usage of foreach_dlist() to use foreach_jcr() in
+  lib/jcr.c -- prevents locking the jcr chaing.
+- Apply patch from bug #564, which corrects listing volumes with
+  multiple autochangers. Apply same fix to next volume list.
+- Fix bug #562 where restore bootstrap file is not unique.
+- More details in implementing David's migration syntax proposal.
+- Save and restore dcr when swapping drives so that if we have
+  a write dcr it is not lost.
+- Use new routine lock_reservations() to lock the reservations
+  system, and call it while looking for a volume in askdir.c.
+  This could possibly fix bug #543.
+- Stop SD command loop if job is canceled.
+
+08Mar06
+- Remove old code from findlib/create_file.c
+- Rename mac.c migrate.c
+- Add user friendly display of VolBytes in job report.
+- Rename target... to previous... to make it a bit easier to
+  understand.
+- Add selection type and selection pattern to Migration (idea
+  given by David Boyes). 
+
+04Mar06
+- The po files should now be current.
+- Fix new sql_use_result() code to properly release the
+  buffers in all cases.
+- Use the keyword ujobid to mean the unique job id; job or jobname
+  to mean the Job name given on the Name directive, and jobid to
+  be the numeric (non-unique) job id.
+- Allow listing by any of the above.
+- Add the user friendly job report code for reporting job elapsed time
+  and rates with suffexes from John Kodis <kodis at comcast.net>.
+- Add Priority and JobLevel as Python settable items.
+- Use TEMPORARY table creation where the table is created by
+  Bacula.
+- Add new code submitted by Eric for waiting on specific jobid.
+- Add ACL checking for the dot commands.
+- Fix restore of writable FIFOs.
+- Fix a bug in bpipe where the string was freed too early.
+27Feb06
+- Modify the Python class examples to inherit object -- new way
+  of defining classes. Patch from Felix Schwarz.
+- Implement jobuid to replace old usage of job in keywords as
+  suggested by Eric Bollengier.
+- Apply patch for enhancing wait from Eric Bollengier. On can now:
+   wait  (wait for all jobs to stop)
+   wait jobid=nn
+   wait jobuid=unique id
+   wait job=job-name
+- Implement write variables for Python to set Priority (anytime), and
+  Job Level, only during JobInit event.
+26Feb06
+- Fix the block listing bug pointed out by Arno.
+- Update the po files at Eric's request.
+24Feb06
+- Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to 
+  accept time qualifiers.
+- Make catalog respect ACL.
+- Add recycle count to Media record.
+
+Changes to 1.39.6-beta1 24Feb04
+23Feb06
+- Add Rudolf Cejka's new rc-chio-changer.
+- Implement pulling Volume from Scratch Pool if the
+  Volume is in the autochanger.
+- Implement additional command arguments for update Volume.
+
+Changes to 1.39.5 
+22Feb06
+- Back port changes to 1.38.5
+- Fix recycle SQL for StorageId.
+- Fix misplaced quote in mtx-changer script.
+20Feb06
+- Note. Your database must be updated, or you must create 
+  a new database. I have not yet incremented the database level.
+- Add Location table. 
+- Add LocationId, DeviceId, and MediaTypeId to Media record.
+18Feb06
+- Implement create/get mac record in database for adding extended
+  Migration data to the job record.
+- Add new MAC table to update/make database scripts.
+- Return Storage name used when getting VolumeNames for a job.
+- Change bsr file keyword Storage to Device, which is more accurate.
+- Ensure that Mac records are pruned/purged.
+- Tweak SD tools to deal with changing media type.
+- Integrate more dev.c subroutines as methods (e.g. strerror, bsr, ...)
+- Pass pointer to dcr pointer to acquire_device_for_read() so
+  that the subroutine can switch devices, and hence dcrs.
+- Modify the multiple MediaType read code to re-use the same
+  dcr when switching devices. This makes the code much more
+  robust.
+- Integrate patch from Karl Hakimian that reads JobIds, FileIndexes
+  from a table for restore.
+- Add Storage name to VolParams, but it really should be Device.
+14Feb06
+- Add disk-changer to scripts directory + configure/Makefile
+- Eliminate PoolId from jcr -- it is in jcr->jr.PoolId
+- Implement store_bit scanner to replace store_yesno.  Mostly done.
+- Implement new store_bool that stores in a bool. 
+- Add true/false to yes/no conf directives.
+- Make first cut at changing appropriate store_yesno to store_bool.
+- Complete implementation of Pool storage devices.
+- Move starting clones to job.c
+- Move create_restore_bootstrap_file() to job.c
+- Make copy_storage() more general to be able to handle
+  Pool storage.
+- Cleanup a lot of migration code for manual running, including
+  using Pool storage.
+- Move getting a scratch Volume into a subroutine.
+- Make all places a Volume that is added to a pool to 
+  respect max vols.
+- Fix bug in autochanger recycle code (improper edit 64 bit).
+- Fix segfault in restore command when no value specified.
+- Start adding code to handle multiple MediaTypes in restore.
+- Eliminate race condition in getting Volume name for
+  two drive autochanger.
+- More debug code in autochanger.
+- Add storage keyword to bootstrap file, add parsing.
+- Move slot in bsr file into Volume record as there will be
+  a different slot for each Volume.
+- Create reserve.h
+07Feb06
+- Implement Pool storage overrides.
+06Feb06
+- Implement first cut of Migration.
+- Implement mysql_use_result() from patch by Karl Hakimian.
+  This reduces significantly the memory consumption during
+  the restore tree building, and hence runs faster too.
+- Implement StorageId patch supplied by user (reggie) in bug
+  #536.  This should permit Bacula to work correctly with two
+  autochangers.
+- Implement Job listing variations suggested by a user.
+- Move updating bootstrap code in backup.c to subroutine
+  update_bootstrap_file().
+- Add new job status elapsed time and bytes written user
+  friendly job report output patch sent by John Kodis
+  <kodis at comcast.ne>.
+- Implement a storage list in Pools.
+- Separate out setup_job() code from run_job().
+- Get migration working -- lots of changes in mac.c in both
+  DIR and SD.
+- Apply patch from user (Eric Bollengier I think) that fixes a  
+  DIR crash when no arguments are supplied to a dot command.
+- Fix typo (strcpy->strcmp) in ua_prune.c as reported by Martin.
+- Fix command arg name->volume in label command of gnome-console.
+- Fix SD acquire.c to release correct DCR by explicitly testing
+  on the dcr address rather than trying to devine if it is a read
+  or write dcr.  This failed in error conditions when the device was
+  not fully setup.
+30Jan06
+- Apply user supplied patch for more readable rate output
+  in job report.
+- Continue implementing migration.
+- Implement support for removable filesystems in SD.
+- Ensure that btraceback scripts can be read by anyone.
+- Replace dvd-freespace and dvd-writepart by dvd-handler.
+- Correct bug where canceling restore before the FD contacts
+  the SD causes the drive to be left in read mode.
+- Move ofline_or_rewind into DEVICE::close().
+- Eliminate close_device.
+- Convert several dev subroutines to methods (e.g. bsf,
+  eod, ...)
+- Eliminate force_close_device().
+- Implement Device Type directive in Device resource that
+  can have values File, Tape, Fifo, DVD, or Prog.
+- Add has_cap() method to Device.
+Changes to 1.39.4
+17Jan06
+- Add patch from bug #527 to allow RedHat user to specify
+  options/user/group for starting each daemon in      
+  /etc/sysconf/bacula.
+16Jan06
+- Add two new queries to query.sql provided by Arno. One
+  list volumes known to the Storage device, and the other
+  lists volumes possibly needing replacement (error, ...).
+15Jan06
+- Add periodic (every 24 hours) garbage collection of memory 
+  pool by releasing free buffers.
+14Jan06
+- Correct bug counting sized (for display only) in smartall.c
+- Print FD mempool stats if debug > 0 rather than 5.
+12Jan06
+- Make db_lock() mutex error fail the job rather than abort
+  Bacula.  Canceling the job caused the mutex to fail.
+- Correct bug in alist.c that re-allocated the list if the
+  number of items goes to zero.
+- Move the reservation system thread locking to the top level
+  so that one job at a time tries all possible drives before
+  waiting.
+- Implement a reservation 'fail' message queue that is built         
+  and destroyed on each pass through the reservation system.
+  These messages are displayed in a 'Jobs waiting to reserve
+  a drive' list during a 'status storage='.  Note, multiple
+  messages will generally print for each JobId because they
+  represent the different problems with either the same drive
+  or different drives.  If this output proves too confusing
+  of voluminous, I will display it only when debug level 1
+  or greater is enabled in the SD.
+11Jan06
+- Add enable/disable job=<job-name>.  This command prevents
+  the specified job from being scheduled. Even when disabled,
+  the job can be manually started from the console.
+- During 'update slots' clear all InChanger flags where the
+  StorageId is zero (old Media records).
+
+Beta release 1.38.4:
+09Jan06
+- Fix autochanger code to strip leading spaces from returned
+  slots number. Remove bc from chio-changer.
+- Back port a bit of 1.39 crypto code to reduce diffs.
+- Fix first call to autochanger that missed close()ing the
+  drive. Put close() just before each run_program().  Fixes
+  Arno's changer bug.
+07Jan06
+- Add PoolId to Job record when updating it at job start time.
+06Jan06
+- Pull in more code from 1.39 so that there are fewer file
+  differences (the new ua_dotcmds.c, base64.h, crypto.h
+  hmac.c jcr.c (dird and lib) lib.h md5.h parse_conf.c 
+  util.c. Aside from ua_dotcmds.c these are mostly crypto
+  upgrades.
+- Implement new method of walking the jcr chain. The
+  incr/dec of the use_count is done within the walking
+  routines.  This should prevent a jcr from being freed
+  from under the walk routines.
+
+
+Changes to 1.39.3:
+04Jan06
+- Start implementing Verify list output.
+- Move the suitable_drive flag to a better place to prevent
+  premature termination of the reservation if all drives
+  are busy -- should fix Arno's diff/inc pool failures.
+26Dec05
+- Add mutex to single thread VSS code in Win32.
+22Dec05
+- Simplify code in askdir.c that waits for creating an appendable
+  volume so that it can handle multiple returns from the wait
+  code.
+- Modify the wait code to permit multiple returns.
+- Return a zero when "autochanger drives" is called and
+  it is not an autochanger.
+- Make rewind_dev() a method taking a DCR as an argument.
+  This permits closing and reopening the drive if the
+  rewind fails as happens if the drive was loaded while the
+  file descriptor was open. This refreshes the file descriptor.
+- Remove the ST_OPENED flag and always rely on fd < 0 for knowing
+  if the device is open or not.  This should eliminate
+  Arnos problem.
+- Return error if reserve cannot find at least one suitable device.
+- Make wait_for_sysop() return correct state information.
+- Fix Win32 state file problem. write was not using compat
+  code. This should fix bug #500.
+21Dec05
+- Modify gui on command to set only GUI mode and not batch.
+- Modify .messages command to always print messages regardless
+  of the mode.
+- If GUI mode is on, suppress automatic printing of 
+  You have messages. 
+- Delete old bnet packet code.
+- Ignore new BNET_START_SELECT and BNET_END_SELECT signals in
+  wx-console. -- not implemented because bconsole must be updated.
+- Modify restore command in wx-console to set gui on and to use
+  only .messages instead of messages.  Hopefully this fixes bug
+  #514.
+- Fix seg fault in exit of acquire when canceling a job --
+  reported by Wolfgang Denk
+- Pull in latest reservation system changes from 1.38
+- Make .messages command always print messages regardless
+  of the automessages flag.
+17Dec05
+- Fix seg fault if user labels a drive directory bug #513
+- Remove quotes around Version as it breaks things.
+16Dec05
+- Merge in Aleksandar Milivojevic's mods to the spec file.
+- Apply sparse code fix for raw drives and fifos. Bug 506
+- Thorsten fixed Unicode cd problem with wx-console bug 505.
+14Dec05
+- Correct reservation system to do a last ditch try
+  for any mounted volume, then anyone anywhere.
+- Add quotes around table Version because of
+  error in MySQL 4.1.15 -- bug report submitted.
+- Correct some minor problems with btape in the fill
+  command.
+- Updates to ssh-tunnel from Joshua Kugler.
+- Added a report.pl program from Jonas Bjorklund.            
+- Simplify the O_NONBLOCK open() code for tape drives,
+  and always open nonblocking.
+- Do not wait for open() if EIO returned (shouldn't happen).
+- Eliminate 3 argument to tape open().
+- Correct the slot # edited in the 3995 Bad autochanger unload
+  message.
+- With -S on bscan (show progress) do not divide by zero.
+13Dec05
+- Make cancel pthread_cond_signal() pthread_cond_broadcast().
+- When dcr is freed, also broadcast dev->wait_next_vol signal.
+- Remove unused code in wait_for_device.  
+- Make wait_for_device() always return after 60 seconds of wait.
+
+Changes to 1.39.2:
+13Dec05
+- Add stubs for non-crypto build.
+12Dec05
+- Use localhost if no network configured
+11Dec05
+- Eliminated duplicate MaxVolBytes in cat update -- bug 509.
+- Remove debug print.
+- Add bail_out in error during state file reading.
+10Dec05
+- Merge changes made to 1.38.3 into HEAD
+- Add stubs for pygtk-console code
+- Create Makefile.in for pygtk-console code
+09Dec05
+- Merge updates into 1.38 branch
+- Update specs to include mysql4 define.
+- Fix when attributes are sent, must be after binit().
+- Stop read_record() if status not ok in second loop.
+- Return rec->FileIndex in dcr->VolLastIndex for normal
+  and partial records in read_record().  This allows bscan
+  to get FileIndex at EOT correct.
+- Fix butil.c to correctly set dcr -- fixes seg fault in bls.
+08Dec05
+- Fix Win32 built to work with new crypto code.
+- Apply patch supplied by user (slightly modified) to fix
+  correct detection of holes in block devices and FIFOs. 
+  Bug # 506.
+- Apply patch supplied by user (slightly modified) 
+  to fix SD hang with multiple pools and bad client
+  IP. Fixes bug # 508.
+07Dec05
+- Add nagios plugin to the examples directory. Submitted by
+  Christian Masopust.
+- Remove warning message about multiple saves of hardlinked files
+  from find_one.c as it can generate too many warning messages.
+- Modify most restore error messages to be queued so that they
+  appear at the end of the job rather than mixted with the restore
+  listing where they could be "lost".
+06Dec05
+- Reset timeout values before select() per patch from 
+  Frank Sweetser for problems with non-blocking sockets.
+- Unlink the state file if either reading or writing it gets
+  errors.  Hopefully this will fix Win32 exit problems.
+- Add sanity check in append.c to ensure that dcr is not NULL.
+  This can happen if multiple drive autochanger SCSI control
+  channel and drive indicies do not correspond.
+05Dec05
+- Get next volume from Scratch pool before creating a volume.
+- Set new Pool defaults in Vol when moved from Scratch Pool.
+- Remove argument from create_bacula_database for SQLite as it
+  caused an error.
+- Add back index code so that two drive autochangers can get
+  a second tape.
+- Change a bunch of debug levels to aid debugging autochangers.
+- Fix reservation so that mutexes are properly applied.
+- Rework reservation algorithm so that two drives can be used
+  at the same time.
+04Dec05
+- Landon merged his data encription changes into the HEAD
+- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at 
+  If this patch is applied, the number of days can be specified with
+  "list nextvol days=xx"
+  or
+  "status dir days=xx"
+  My use case is to be able to preview the next scheduled job (and the 
+  next tape to be used) on fridays if there are no scheduled jobs during 
+  the weekend.
+Changes to 1.39.1:
+03Dec05
+- Fix font code in gnome2 console user patch. Fixes bug #501.
+- Fix malformatted bnet error message that caused seg fault
+  fixes bug 502
+- Applied user patch to improve README.vc8 in src/win32.
+29Nov05
+- Add Migrate, Copy, Archive Job types (some where there)
+- Correct some more editing of JobId's (for 64 bit compatibility).
+- Ensure that StorageId is stored in Media record when ever possible.
+- Add Migration Job to Job.
+- Add Migration Time, Migration High Bytes, Migration Low Bytes
+  Next Pool to Pool resource.
+- Add more code to mac.c (migration archive copy).
+- Change Start Storage daemon job to require read and write storage
+  pointers.
+- Pass read storage data to SD as well as write storage data.
+- Remove old code from winservice.cpp
+- Break on error in scan.
+- Fix typo in signal.c
+- Separate read/write DCR in SD.  Add jcr->read_dcr.
+- Cleanup how find_device() works.
+- Add read output to Status in SD.
+Changes to 1.39.0:
+23Nov05
+- Add red-black btree routines
+21Nov05
+- Remove abs() in bfile.c so that it compiles on Solaris. 
+  Bug #491.
+20Nov05
+- Fix crash in tray-monitor when daemon disconnects. Bug #479.
+- Fix bnet-server bug found on OpenBSD. Bug #486
+- Fix cancel failure bug. Bug #481
+- Fix failure when Pool name has spaces. Bug #487   
+- Fix SD crash in autochanger code. Mutex failure. Bug #488
+- Fix a couple of free()s in src/filed/acl.c
+- Fix memory overrun in bfile.c in building OS X resource
+  fork filename. Bug #489 
+- Add Pool name to SD status output.
+14Nov05
+- Apply SunOS patch for ACLs submitted by David Duchscher.                  
+- Make sure to set storage before trying to set drive.
+- Add bacula_mail_summary.sh to examples directory. It makes
+  a single email summary of any number of jobs. Submitted
+  by Adrew J. Millar.
+- Make sure when we do a mount to unblock the device even
+  if the drive could not be opened.  
+13Nov05
+- Remove the USE_WIN32STREAMEXTRACTION #defines (always on)
+  and correct a few minor problems to make it build on Linux.
+10Nov05
+- Remove delete of CVS from all Makefiles
+- Fix seg fault when clicking on Add button in wx-console
+  restore panel.  Bug #470.
+- Fix copyright date and URL typo -- bug #468.
+- Change autostart install for FreeBSD to look for rc.conf  
+  rather than rc.local as suggested fix for bug #466.
+- Apply patch supplied by Eric Bollengier to fix PostgreSQL    
+  grant on status. Bug #465
+- Apply patch supplied by Eric Bollengier to fix PostgreSQL
+  update script. Bug #464
+- Tweak #ifdefing a bit in new Win32 stream code.
+- Fix #ifdeffing for FD_NO_SEND_TEST.
+- Add documentation of performance #defines