]> git.sur5r.net Git - bacula/docs/commitdiff
Update notes
authorKern Sibbald <kern@sibbald.com>
Fri, 5 Jan 2007 16:30:43 +0000 (16:30 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 5 Jan 2007 16:30:43 +0000 (16:30 +0000)
docs/techlogs/2006/ChangeLog [new file with mode: 0644]
docs/techlogs/ChangeLog [deleted file]
docs/techlogs/RN-2.0.0 [new file with mode: 0644]
docs/techlogs/technotes-1.39 [new file with mode: 0644]

diff --git a/docs/techlogs/2006/ChangeLog b/docs/techlogs/2006/ChangeLog
new file mode 100644 (file)
index 0000000..7ce9931
--- /dev/null
@@ -0,0 +1,1799 @@
+              Technical notes on version 1.39  
+
+General:
+Version 2.0.0 released: 4 January 2007
+03Jan07
+kes  Apply Eric's fix for client name editing on RunScripts.
+kes  Fix an incorrect dbcheck reference to Id.
+
+Version 1.39.34 Released:
+28Dec06
+kes  Convert dbcheck to use 64 bit DB IDs.
+kes  Update projects
+kes  Make rescue work.      
+kes  Clarify Volume migration error message.
+kes  Look for Job keyword when opening DB in console.
+23Dec06
+kes  Add code in catreq.c to reject volumes not marked Enabled.
+kes  Add a few more ACL access checks.
+kes  Add \n in gnome2-console restore command so that output prints 
+     nicer -- i.e. lines do not run together.
+kes  Fix autolabeling so that it will not mark a volume in error
+     if the volume was not actually opened. This should fix bugs
+     #737 and 738.
+kes  Require tape drive to be open before autolabeling.
+kes  Require explicit mount command on non-tapes before autolabeling.
+kes  Implement an open_client_db() that searches the keywords for
+     either a catolg or client, and opens the appropriate catalog.
+     This makes Bacula adjust better to multiple catalogs.
+kes  Use more name() methods for resources rather than hdr.name.
+22Dec06
+kes  Fix code to check for two resources of same name. It forgot
+     to check the last entry.  Fixes bug #734.
+kes  Apply scanvolume patch from Richard Mortimer that fixes bug
+     #738.
+kes  Apply Eric's patch for recycling the Scratch pool.
+kes  Note, for the tray-monitor (or almost any restricted console_
+     to work, in version 1.39.x you must add CatalogACL = catalog-name
+kes  Add appropriate new #undefs to autoconf/acconfig.h so that 
+     configure works correctly.
+kes  Implement configure code to allow the user to disable IPv6 with
+     --disable-ipv6 
+kes  Apply Richard Mortimer's patch to prevent seg fault if mount point
+     not specified -- SD refuses to start.
+kes  Add magic.bacula from bug #715 to the scripts directory along with
+     Arno's explanation of how to install it.
+kes  Convert a bunch of hdr.name into name() method calls.
+kes  Fix the code to remove .bsr files.  Fixes bug #736 -- Martin.
+
+Version 1.39.32 released: 
+20Dec06
+kes  Take first catalog if gui is set, or if using dotcmd.
+kes  Fix a couple of compiler warnings in wx-console
+kes  Apply the immutable patch for FreeBSD hardlinked files supplied
+     by Olivier Lehmann.
+kes  Add Volume name to Forward spacing message.
+kes  Update migration job start time (so it is not zero) to prevent
+     immediate recycling of the job.  This *should* fix bug #733.
+19Dec06
+ebl  Fix runscript configuration parsing bug.
+17Dec06
+kes  Add ENABLE_NLS (as suggested by Eric) to correct NLS problems.
+     Remove NLS kludge from baconfig.h.  This fixes bug #729.
+kes  Allow seeking on DVD.
+kes  Add additional messages when Job canceled automatically for
+     max run time or max start wait exceeded.  This fixes bug #621.
+kes  Update maxruntime-test in regression script to properly test
+     max run time -- from info given in bug #621.
+kes  Simplify automatic cancel code.
+kes  Add check for job_canceled() in FD when contacting SD so that if
+     job is canceled from max runtime, it terminates faster.
+16Dec06
+kes  Save and restore volume name in stored/mount.c fixed bug #712
+     where wrong tape was requested in a mount.
+kes  Implement cleaner orphan buffer dumping with buf address.
+kes  Fix orphaned buffer when canceling job waiting on op intervention.
+kes  Update projects file for next vote.
+kes  Implement a fix (more could be done) for bug #728 where a double
+     EOF is writing on the Volume when spooling is enabled and the    
+     connection with the FD fails (FD crash, comm error).
+kes  Disable attempting to autolabel when polling and device is not
+     a tape. This fixes bug #730 where polling with a removable disk
+     not mounted caused lots of new Volumes to be created then marked
+     in error.
+15Dec06
+kes  Enable VSS by default.
+
+Version 1.39.30 released: 
+14Dec06
+kes  Complete hopefully the last of the copyright transfer changes.
+kes  Separate NumVolumes in SD to NumReadVolumes and NumWrite volumes so
+     that migration writing to multiple volumes doesn't mess up reading
+     Volumes. This should fix bug #720 -- multivol migration fails.
+kes  Make migration SQL look only for Type='B' jobs to migrate.  This should
+     fix bug #724 jobs getting migrated twice.
+kes  Convert remaining dev_cap(dev, ...) to use dev->has_cap().
+kes  Implement dev->clear_cap() and dev->set_cap() methods.
+kes  Turn off disk seeking on restore for DVDs since I am not 100%
+     sure it works.
+13Dec06
+kes  Implement code that should properly set that a job was migrated,    
+     if the migration was successful even if there were no file to
+     migrate.
+kes  Apply Richard's patch to fix building or filed/restore.c without
+     OpenSSL support.
+kes  Ensure that at least one block is written by the SD even if the
+     FD dies or fails -- should fix bug #728.
+kes  Convert stored/record.c ASSERT into a soft fail if the length of   
+     a record is too insanely long. This should fix bug #???
+12Dec06
+kes  Fix automatic labeling of File volumes, which was broken by new
+     removable device code.
+10Dec06
+kes  Remove typedef uLong for HP in baconfig.h.  It broke things.
+lf   Fix job byte reporting -- the digest code runs in verify.c and
+     increases this value.  The better solution is to digest the
+     stream as we receive it, thus removing the need to re-read
+     from disk at all, but that requires more extensive and
+     potentially destabilizing changes.
+lf   This commit fixes backup and restore of HFS+ resource forks.
+lf   Add a long-missing 'break' statement in HFS+ attribute
+     handling that resulted in restore failures.
+09Dec06
+ebl  Fix runscript to always execute command after all job type.
+
+Version 1.39.30 released: 
+08Dec06
+kes  Mark build-depkgs-mingw3 executable in configure process.
+kes  Update autoconf/config.h.in to include LOCALEDIR
+kes  Undefine NLS settings for wxWidgets as there is a conflict with
+     their way of doing things.
+kes  Implement a rpool and rpool_source in jcr.h for Migration jobs.
+kes  Change a bunch of ->hdr.name to ->name()
+kes  Straighten out handling of read and write pools for Migration, including
+     getting the code in the proper order.
+kes  Improve migration error messages and debug output.
+kes  Shorten code path in migration if nothing found to do.
+kes  Implement read/write pool in migration job report.
+kes  Move ua_run.c select_job_level code into a subroutine (readability).
+kes  Move ua_run.c display_job_parameters into a subroutine.
+kes  Do not bash dcr->VolumeName in get_volume_info() because it makes
+     restore dependent on a valid catalog containing the Volume name.
+06Dec06
+kes  Put make_catalog_backup SQL_BINDIR in an environment variable to
+     make it easier for the user to change.
+kes  Fail any backup job that tries to use encryption and sparse options.
+     Hopefully this is a temporary change.
+kes  Correct the EndJob return string for non-backup jobs.
+kes  Review the encryption restore code.
+kes  Implement a new encryption regression test with compression.
+kes  Modify migrate not to fail if nothing found to migrate. 
+kes  Add #undef HAVE_OPENSSL, HAVE_TLS, HAVE_CYRPTO to autoconf/config.h.in
+     because they were not always set correctly.
+05Dec06
+kes  Update configure.in to include python 2.5 search.
+kes  Back out unwanted migration change reported by Richard Mortimer.
+04Dec06
+kes  Make migration with no files to migrate set normal termination.
+kes  Change message when job manually started to say Job queued. ... 
+kes  Add job report indication of whether or not VSS and Encryption were
+     used by the FD.
+kes  Modify sparseBlock variable name to make the code clearer.
+kes  Add more sparse tests to regress using gigaslam sparse file
+     generator.
+kes  Enable data encryption code.
+kes  Add gigaslam.c to src/tools. It creates a 1GB file that contains
+     only two blocks -- i.e. it is a real sparse file.
+03Dec06
+kes  Enable disk seeking on restore.
+kes  Implement the SD 'Block Positioning = yes|no' directive. This
+     allows the user to turn off block level seeking, but restores
+     will be much slower.
+kes  Change the word illegal to read invalid in a few places.
+kes  Fix Win32 build, which broke when I added parse_args_only in
+     lib. I'm not sure I got the entry point right for msvc.
+kes  Turn off data encryption. It can be enabled by defining
+     DATA_ENCRYPTION in src/version.h and recompiling.
+kes  Implement flag to turn off data encryption feature.
+kes  Move unserial code in restore.c to a subroutine. Add a bit of debug
+     code.
+kes  Rework a bit of code in backup.c to handle sparse blocks correctly.
+     The main problem was that signatures were being generated on blocks
+     of zeros, which is unnecessary.
+02Dec06
+kes  Fix scanner (next_arg) to handle leading double quote correctly.     
+kes  Modify cd command in restore tree to look at full argument without
+     keywords.  This fixes bug #716.
+01Dec06
+kes  Do not update Migrated Job type if migration does not terminate
+     normally. This fixes bug #719.
+kes  Update ReleaseNotes
+kes  Purge Job records from the catalog for Migration. This was
+     not properly done previously. This fixes bug #718.
+28Nov06
+kes  Initialize msg_type to M_INFO in migration. Pointed out by
+     Robert Nelson.
+kes  Add some fflush() statements for debug output. This should not
+     really be necessary and defeats buffering but users continue
+     to complain.
+27Nov06
+kes  More copyright changes.
+kes  Make sure we don't detach from the despool read device since it
+     is a temporary structure where the condition variables are not
+     initialized.  Bug #711.
+26Nov06
+kes  Add Bacula version+date to Client record. This is a very minor
+     security problem in that passing the version facilitates a hacker's
+     life, but it will make support easier.
+kes  Implement fixes to make disk seeking work.  Currently turned
+     off in version.h pending reserch on what problems it will cause
+     because of the previous bsnprinf() sign extension bug.
+25Nov06
+kes  Add Landon's refactor of restore Feature request to the
+     projects file.
+kes  Tweak debug levels and messages for examining the disk
+     seek problem.
+22Nov06
+kes  Cleanup some of the error termination code in migration.
+kes  Separate read/write source strings to keep track of where
+     storage devices are used in a job.
+kes  Implement a new method of keeping track of which storage 
+     device is used in a Job.  USTORE keeps both a pointer to the
+     resource and to the source string.
+kes  Modify all code to use new storage set subroutines in job.c
+kes  Modify migrate.c so that the definitive selection of the storage
+     resource is done in the do_migration_init() routine prior to
+     the job going into the job queue.  This permits accurate 
+     deadlock detection (same read and write storage resource).
+kes  Remove bfill from btape (I think it was a left over stub).
+22Nov06
+kes  Make sure that the storage for a job is pulled first from
+     the Pool and if not from the Job.  
+kes  Ensure that either the Pool or the Job specifies a Storage
+     resource.
+21Nov06 
+kes  Start applying new FSFE copyright.
+20Nov06
+kes  Add additional error messages in acquiring a drive for read.   
+kes  Make WritePartAfterJob the default so that the last DVD part 
+     always gets written to the DVD by default.
+kes  Add additional error messages in migration. 
+kes  Suppress redundant error messages in migration (possibly more to do).
+kes  Apply Martin's fix (updated to 1.39) that takes into account
+     run storage overrides in the Director status display.
+kes  Implement, but turn off the submitted code that sets the EOT
+     model on FreeBSD machines. Turning on this code is too risky at
+     this point in the development.
+19Nov06
+kes  Implement unique dbid routine for migration to prevent the same
+     JobId from being migrated twice. This should fix bug #709.
+18Nov06
+kes  Apply Jaime Ventura's 'mail on success' patch.
+kes  Add a SMALLOC_SANITY_CHECK for Arno, which aborts Bacula
+     if memory usage gets too big.
+kes  Tweak migration to ensure that read/write devices are different.
+17Nov06
+kes  Create an AUTHORS file to list Bacula contributors.
+kes  Add Richard Stallman's four GPL freedoms to LICENSE 
+kes  Require the conf file to have a valid NextPool for writing the
+     migration output.
+16Nov06
+ebl  Enable RecycleCount in catalog.
+ebl  Fix "echo python | bconsole" segfault
+14Nov06
+kes  Implement code to pass the MediaId to the SD. The SD then uses
+     this MediaId when creating JobMedia records. This fixes a bug
+     with Migration where the MediaId got set to the second Volume
+     read rather than the write Volume.  Possibly (unlikely) fixes
+     bug #709.
+kes  Remove NextPool from Job resource.
+kes  Edit a few numbers in the restore dialog with commas.
+kes  Note, the DIR<->SD protocol has changed.
+13Nov06
+kes  Replace () by {} in configure.in for proper HP configuration.
+kes  Shorten some lines over 80 characters in filed/backup.c
+kes  Cast sizeof() in filed/backup.c to avoid compiler warning.
+
+Version 1.39.28 released: 
+12Nov06
+kes  Change error message 'illegal' to 'invalid' -- bug #707
+kes  Add rather primitive device resource deadlock detection in
+     the job queue handler. It detects the same read and write device
+     for migration and cancels the job. 
+kes  Start adding a unique_dbid_hander() routine in migration to avoid
+     duplicate mediaids and duplicate jobids.
+kes  Add patch from bug #708 to permit relative paths such as ../xxx
+     in the restore tree routine.
+kes  Add Eric Bollengier's patch to reduce locking time in the SD after
+     despooling, and thus many jobs finish faster.
+kes  Correct locking order of reservations lock and device mutex in
+     reserve.c -- this should correct Arno's deadlock that occurred
+     when doing mount/unmount at the same time a job is reserving a
+     drive.
+05Nov06
+rbn  Fixed problems with encryption when combined with compression 
+     or sparse files.  Unfortunately this means that all previous 
+     encrypted backups can't be restored.
+rbn  Fixed problem in bfgets with Windows and Mac end of lines.
+rbn  Fixed bug in Windows version of close_bpipe() that cause programs
+     like bsmtp() to hang waiting for the pipe to be closed.  Fixed 
+     binary file type problems in open_bpipe().
+rbn  Fixed a number of bugs in the mysql DB scripts.
+03Nov06
+ebl  Fix broken runscript on director. (RunBefore, RunAfter)
+ebl  Use M_ERROR instead of M_FATAL in runscript.c
+31Oct06
+ebl  Small fix src/dird/job.c to add JobErrors count to catalog.
+rbn  Ignore UTF-8 marker at the start of .conf files.
+rbn  Add stab2cv to 3rd party dependencies.  This is a utility I 
+     wrote that is licensed under the GPL and available on SourceForge.  
+     It converts the stab debugging info generated by gcc into Codeview 
+     format.  Currently it just translates function names to global 
+     symbols.  This is sufficient to get reasonable stack traces from 
+     Dr Watson and to look at minidumps.
+rbn  Fix bug # 699 - winbacula client crashes whilerunning bat scripts.
+rbn  Enable Windows XP look and feel for the tray icons and wx-console.
+rbn  Add Windows specific FileSet example to bacula-dir.conf.
+rbn  Reorganize Start menu so that documentation and configuration are 
+     in subfolders.
+21Oct06
+rbn  Change daemons and utilities so that if -c is omitted from the 
+     command line AND there is no configuration file in the current 
+     directory then the 'standard' configuration file (eg 
+     /etc/bacula/bacula-*.conf) will be used.  If the argument to -c 
+     doesn't contain any path separators AND there is no configuration 
+     file by that name in the current directory then the 'standard' 
+     configuration file directory will be searched for a file by that 
+     name.
+rbn  Fixed restore on Windows so that backslashes as path separators works.
+rbn  Add missing query.sql file to Windows installer.
+rbn  Fixed Windows versions of catalog backup scripts.
+20Oct06
+kes  Fix optional files in Makefile.in of src/filed that caused
+     a syntax error when using no optional files.
+15Oct06
+lf   Fix a cosmetic bug in filed.c that caused spurious OpenSSL error
+     messages; there is no reason to attempt to load a private key.
+     from master key files.  
+
+Version 1.39.26 released: 
+12Oct06
+kes  Apply the three patches from Richard Mortimer. 
+     bacula-reposition.patch, bacula-tape-reopen.patch, and
+     bacula-eod.patch. This corrects tape positioning on older devices,
+     and also a problem with btape.
+kes  Apply fix from bug report #696 where writing to a FIFO does not
+     work due to a dumb typo.
+kes  Unlock the tape door before the file descriptor is released. This
+     should fix lots of somewhat subtle failures when using an autochanger.
+11Oct06
+kes  Correct mtx-changer bug that I introduced in a recent commit, and
+     pointed out by Robert Nelson -- thanks.
+rbn  Fix Windows' daemons so that messages print to stdout if not 
+     running as a service.
+rbn  Add daemon name to trace file name (eg bacula-dir.trace).
+rbn  Fix environment variable expansion in directory names on Windows.
+rbn  Fix autochanger support in fill command.
+rbn  Update SQL scripts to match Unix versions.
+rbn  Fix daemon usage displays.
+rbn  Cleanup bacula-dir.conf template.
+rbn  Install openssl.cnf so that the openssl.exe installed in the
+     Bacula\bin directory can be used to generate keys and 
+     certificates for TLS and encryption.
+rbn  Fix cleanup of spool files on Windows.
+rbn  Remove /silent option from daemons on Windows.  The new default 
+     is the same as the old /silent.  To enable the message boxes that 
+     previously were suppressed by /silent you must add /debug instead.
+     NOTE: As a result of this change, the first time you upgrade from 
+           a previous version of 1.39.x you will receive the message 
+           boxes when the remove of the old services succeeds.  This 
+           is the same behaviour as when migrating from a version prior 
+           to 1.39.0.
+     However, going forward, these message boxes will not appear on 
+     upgrades or new installs.
+rbn  Add new /debug option. This option enables the message boxes that 
+     previously were suppressed by the /silent option.  In addition the 
+     daemons running as services will open a console window if this 
+     option is used.
+rbn  Fix bug with service not being removed on migrated installs.  This 
+     should correct those cases where the file daemon install was failing
+     when upgrading from versions prior to 1.39.x.
+
+08Oct06
+kes  Turn on heap reporting in Dir with zero debug level.
+kes  Send a message to the sys log when Bacula forces a SEG FAULT, and
+     send the same message to stdout.
+07Oct06
+kes  Begin work on new GUI "console".
+kes  Make configure look in non-standard MySQL library directory 
+     for Solaris.
+kes  Make mtx-changer automatically configure the autochanger wait
+     procedure for Solaris, FreeBSD, and Linux.  Previously, only Linux
+     was implemented.
+kes  Correct drop_sqlite_tables.in script to not delete the database.
+kes  When writing to a log file, close and reopen the file descriptor
+     if there is an error writing the file.
+kes  Modify the autochanger loaded?, load, and unload commands to print
+     the full text of any mtx output if there is an error.  Helps to
+     ease diagnosis of autochanger problems.
+kes  Correct a few Win32 errno returns in the VSS code so that hopefully
+     a resonable Win32 error message will be printed.
+kes  Convert a few strcat()... to bstrncat() in the Win32 code.
+06Oct06
+rbn  Added Windows version of bsmtp.
+rbn  Fixed path search for Windows so that Bacula\bin is automatically 
+     searched for programs and scripts.
+rbn  Fixed bugs in mtx-changer.cmd and made template bacula-sd.conf
+     Windows specific.
+
+Version 1.39.24 beta released:
+02Oct06
+rbn  Fix restore problem with c:\ prefix bug #676.
+rbn  Verify that drive letter is valid on restore.
+rbn  Fix re-open() options for tape.
+kes  Apply dvd find volume patch from Richard Mortimer.
+kes  Eliminate the dvd specific mount routines using only the
+     dev->mount/unmount.
+kes  Make update_free_space a method of DEVICE and rename 
+     update_freespace.
+01Oct06
+kes  Require a messages command acl to be able to receive messages
+     in a console.
+kes  Add console, system, and scan job types in util.c.
+28Sep06
+kes  Print the Volume purged message only for real jobs to keep
+     from cluttering up the daemon messages.
+kes  Lock the tape drive door while Bacula is using the device.
+kes  Add back the 'No Jobs running' message to FD and SD status because
+     my regression script depends on it, and I'm too lazy to change the
+     scripts.
+kes  Start using structure assignments (not too happy about it ...).
+kes  Fix a bug in the tools Makefile that broke on Solaris.
+kes  Unload any autochanger drive during a 'release' command.
+26Sep06
+kes  Enhance error message when restoring without bootstrap file.
+kes  Check restored size only for regular files.
+kes  Store Python job level in job record in Dir.
+kes  Add back code to open tape device nonblocking, but if rewind fails
+     release file descriptor.
+kes  Modify acquire.c to first try autoloading the device. Also, ask operator
+     to mount tape if drive cannot be opened.
+rbn  Made Windows service tray status windows resizable.
+rbn  Fixed horizontal scrolling of text in status window.
+rbn  Preserve horizontal and vertical scroll position while 
+     updating.  This prevents the display being reset to the
+     top line every 5 seconds.
+rbn  Fix Windows cross-compile compatibilty problems with 
+     *nix variants such as OS X without the zic command.
+rbn  Eliminate dependency on man2html.
+25Sep06
+kes  Update src/win32/dll/bacula.def for change in BPIPE definition for
+     Win32 build.                 
+kes  Fix a compiler warning in compat.cpp
+kes  Change strcpy to bstrncpy in compat.cpp
+kes  Remove some broken code in bdb_list.c
+kes  Fix, hopefully the last, ACL problem in the restore command.
+kes  Update the README.mingw32
+kes  Add new version of upgrade-win32-client.txt to examples directory.
+     Submitted by Michel Meyers.
+kes  Print an INFO message in the job report when a Volume is marked Purged.
+rbn  Fixed handling of external program and script execution
+     so that the format of the command line is more flexible.
+     Now executable path names containing spaces are translated
+     to the equivalent short name automatically.  The result is
+     passed to cmd.exe with the quotes removed.
+24Sep06
+kes  Apply the recycle patch from Richard Mortimer.
+kes  Convert a few if statements in dev.c to switch statements.
+kes  Start using print_errmsg instead of bstrerror().
+kes  Print a job message in SD when a job is marked to be canceled.
+23Sep06
+kes  All code added back. Fixed block.c read/write to loop only 3
+     times. This apparently keeps the OS from crashing (at least     
+     most of the time).
+kes  The kernel bug still persists. Backup something then immediately
+     do a bscan on the same tape, and the kernel will crash.     
+kes  Simplifed tape open().  It no longer uses nonblocking mode, which 
+     means that opening with no tape loaded will probably take at least
+     6 minutes before an error is reported.
+kes  Do not use MTSETDRVBUFFER if not running as root.  Do a MTRESET
+     when doing set_os_device_parameters.
+kes  Report open error in mount.c
+kes  Remove all .exe files from the installer directory on make clean.
+20Sep06
+kes  Start adding back removed code.
+kes  Back out a number of changes because backups to tape crash my
+     system.
+kes  Remove the inetd code from the File daemon.
+18Sep06
+kes  Add -c option to pg_dump so that it initializes tables when   
+     restored.
+kes  Fix FirstWritten time on Volume to be obtained from SD so that
+     it is the actual time the volume was first written.
+kes  Minor Makefile changes.
+kes  Handle EBUSY during read(). Improve how EBUSY is handled in write().
+ebl  Add yes keyword to prune/purge command
+16Sep06
+kes  Correct a test in block.c that prevented restore of a DVD from
+     looking at the last part in the spool directory.
+kes  Make some error messages clearer mostly by using the word DVD
+     in the message. Improve infor message in read_record for DVDs.
+kes  Remove DVD kludges in dircmd.c label/relabel.
+kes  Move the dvd relabel code from dircmd.c into      
+     write_new_volume_label_to_dvd() adding a relabel argument.
+kes  Rewrite the truncate_dvd() code to be much simpler and
+     more logical. First blow away any spool part, then create a
+     new empty part and write to the DVD.
+kes  Rewrite the can_write_on_non_blank_dvd() code making it
+     only ensure that no valid data is on the DVD -- i.e. it
+     can be overwritten.
+15Sep06
+kes  Minor Makefile fixes.
+kes  Put attach_dcr_to_dev in a subroutine.
+kes  Make attaching/detaching to/from a device use a flag and 
+     only detach if actually attached.
+kes  Add dvd-simulator.in to scripts directory and add to configure.
+kes  Fix code in acquire.c that checks fd != 0 to use dev->is_open().  
+     This could be a cause of a number of drive reservation problems.
+     Note, this code is now in attach_dcr_to_dev().
+kes  Suppress doing Volume updates if it is a system job.  This should
+     prevent the DVD label blocking.
+kes  Clear the freespace ok flag in a couple of strategic places.
+14Sep06
+kes  Put removing zero sized spool part file in subroutine and
+     call from release_device().
+kes  Add Richard's patch for relabel to dircmd.c, but save and restore
+     dev Volume name.
+kes  Rework a lot of subroutines in dev.c to take dcr as an
+     argument. This is done to eliminate the usage of attached_dcrs
+     in lseek().
+kes  Change truncated_dvd to blank_dvd, which seems more suitable.
+kes  Apply most of Richard Mortimer's truncate patch.
+kes  Create lseek() method for DEVICE that takes dcr as an
+     argument. This is to eliminate the use of attached_dcrs in
+     lseek().  The calls to lseek_dev() must still be changed.
+13Sep06
+kes  Apply Richard Mortimer's patches for printing an error 
+     message in btape when a DVD is used, and to initialize traceback.
+kes  Added error message to btape when trying to access a file.
+kes  Move prototype of update_slots() to protos.h.
+12Sep06
+kes  Add JobErrors, JobFiles, SDJobFiles, SDJobErrors, SDJobStatus,
+     and FDJobStatus to the Director Python variables.
+kes  Make sure valid argument passed to str_to_utime() where Arno
+     had a seg fault.
+kes  Apply Richard Mortimer's patch for bcopy, bextract, and bscan.
+     I.e. part of two different patches.
+11Sep06
+kes  Modify disk changer to simulate some of the error conditions
+     of mtx-changer.
+kes  Make sure the close() call in the SD tools is just before the
+     getchar() call.
+kes  Implement dir_get_volume_info() in bls using the patch from
+     Richard Mortimer but call find_num_dvd_parts().
+kes  Implement find_num_dvd_parts() that mounts and scans a DVD
+     and counts the parts. 
+kes  Move the omode code in open_dvd() up so that the cannot
+     write on blank disk can check can be bypassed for read mode.
+     Not yet implemented.
+10Sep06
+kes  Disable normal data spooling for DVD writing which uses  
+     a different spooling mechanism.
+kes  Apply patch from Richard Mortimer to ensure that the number
+     of DVD parts is correctly updated.
+rbn  Save installer details log in the Bacula directory as 
+     install.log.
+rbn  Add installer generation of client and storage templates
+     suitable for @inclusion on the director.
+rbn  Mark previously installed components for Win32 read-only since 
+     deselection doesn't do anything.
+
+Version 1.39.22 beta released:
+08Sep06
+kes  Fix logic error in handling error return from mtx-changer 
+     script.
+kes  Make status from SD aware of -1 (unknown) Slot status.
+kes  At Eric's suggestion make both the 'slots' and 'drive' commands
+     to the Storage daemon work even if the drive is busy.
+kes  Make two separate Win32 menu links for starting bconsole and
+     wx-console in winbacula.nsi
+kes  Apply DVD part_spooled patch from Richard Mortimer 
+     richm@oldelvet.org.uk 
+kes  Put installer/Readme.txt into Win32 EOL format for Notebook.
+rbn  Fixed problems migrating settings from previous releases in
+     Win32 installer. Add Readme.txt with an option to show it on 
+     the installer Finish page.
+07Sep06
+kes  Use get_catalog_resource() to open catalog database
+     to ensure that ACLs are respected and that user is
+     correctly prompted for database.
+kes  Integrate multiple console/director patch from 
+     Carsten Paeth calle@calle.in-berlin.de
+ebl  Add character substitution in Job/JobDefs WriteBootStrap.
+     You can use now 'WriteBootStrap = '/path/%c_%n.bsr''
+kes  Apply patch supplied in bug #656 to pass priority field
+     in the run dialog to the Director in gnome console
+kes  Restore DCR after VOL_NAME_ERROR in mount.c.  Hopefully
+     this will fix bug #627 where Bacula eventually gets 
+     confused about what Volume it wants.
+kes  Add a new close_part() class in the SD to save the device
+     state around open/close_part/open for DVD writing.  This
+     should fix the num_dvd_parts getting zeroed as reported by
+     Richard Mortimer.
+kes  Apply patch from Richard Mortimer that correct edit code
+     for debug output of st_size.
+ebl  Add support of encrypted data stream to bscan.
+     display data_len instead of data content (may be binary)
+06Sep06
+kes  Add dev->close() in dir_ask_sysop_to_mount_volume() in
+     bcopy. Fixes bug #669 reported by Eric.
+kes  Fix incorrect number of arguments in SQL statement in
+     sql_get.c as reported by Eric.
+kes  Manual updates.
+kes  Update examples directory.
+kes  Remove unused variable in winservice.cpp
+kes  Make Win32 make command build installer.
+rbn  Add new Install Type page, used to select between Automatic
+     and Custom installs.  Automatic installs only prompt for
+     configuration items that can't be reasonably defaulted.
+rbn  Added Bacula logo to page headers.
+rbn  Added Upgrade support
+     - Configuration and component selection are migrated from
+       pre-1.39 installs.
+     - Configuration of upgraded components is preserved and 
+       not prompted for
+     - Configuration of new components is handled according to
+       the Automatic / Custom selection.
+     - Component selection is defaulted to previously selected 
+       components.
+rbn  Installation of Server components is disabled on 
+     Windows 95, 98 and ME.
+rbn  Added URLs for support, info and upgrades to Bacula entry
+     in Add/Remove Programs.
+rbn  Added Version info to Bacula entry in Add/Remove Programs.
+04Sep06
+kes  Correct dvd code that breaks tape labeling.      
+kes  Implement Enabled on update slots.
+02Sep06
+kes  When doing a label, pass the VolBytes back to the Director,
+     which puts it in the catalog.
+kes  Print an error message if the user attempts to prune an
+     archived Volume.
+kes  Need to start using %ld when sscanfing 32 bit values.
+kes  Update the free
+kes  Correct the counting of VolCatBytes for DVDs. 
+kes  Add code to mount.c to require that VolCatBytes corresponds to
+     what is actually found when doing an append.
+kes  Update freespace only after writing on the DVD.
+kes  Remove code that blows away the current part in the spool file.
+01Sep06
+kes  Apply new dvd-handler patch from Richard Mortimer.
+kes  Tweak so that debug level 20 shows only DVD commands.
+kes  Correct spooled_part flag in dev.c close() so that it is cleared
+     when the spool file is deleted or does not exist.
+kes  Print part number in read_records when eof hit (restore).
+rbn  Installer default changed to start services on new install.
+31Aug06
+kes  Make find with no args in tree restore return error rather than
+     stopping the selection. Fixes bug #665
+kes  Rework DVD writing to ensure that the last part is written
+     on open_next_part when dealing with a spool file.
+kes  Correct the lseek_dev() routine to handle end point correctly
+     (bug introduced by me).
+kes  Allow part number to exceed num_dvd_parts in lseek_dev().
+rbn  Change make_session_key on Windows to use WIN32 APIs to produce 
+     a better seed.
+rbn  Add new tool scsilist.exe which displays the changer, tape and 
+     CD/DVD (1394, SCSI, SATA, ATAPI) devices and the information required 
+     to add them to bacula-sd.conf.
+30Aug06
+kes  Apply dvd-handler patch from Richard Mortimer.
+kes  Apply dvd error check patch from Richard Mortimer.
+kes  Apply bpipe race patch from Richard Mortimer.
+kes  Rework how DVD labels are handled and set append only
+     when part > num_dvd_parts.
+27Aug06
+kes  Rework many features of DVD writing and reading. Added many error
+     messages.  Most importantly changed part to represent the current
+     part number base zero. This makes current DVD writing incompatible
+     with previous version.
+26Aug06
+kes  Add host:port to connect failure messages to FD and SD from Dir.
+kes  Add WhereACL to console ACL list.  If nothing is specified, only
+     the default is permitted for restore. Otherwise, *all* allows any
+     path, or you can specify permitted paths. This should allow control
+     over where users can restore files. This is untested.
+kes  Modified message to add a ? (as in loaded?) when querying the autochanger
+     for what Slot is loaded.  
+kes  Fixed the use of Slot, so that is more correctly maintained, thus
+     eliminating unneeded duplicate calls to determine what Slot is loaded.
+25Aug06
+kes  Install man pages with 'make install'
+kes  wx-console crashes because of differences between Bacula and wxWidgets
+     malloc()/free().  Tweak wx-console to use bmalloc()/bfree() for Bacula
+     calls.     
+kes  correct improper indenting in wx-console/console_conf.c
+kes  update wx-console header copyrights
+kes  Fix bug #658 where wx-console mangles file/directory names containing
+     commas.
+24Aug06
+kes  Add Media.Enabled flag to client backups for dotcmds.c
+kes  Enforce Media.Enabled=1 for a current restore to work.
+kes  Require restore case 3 to have sqlquery permission to work.
+kes  Remove obsolete del_MAC sql command.
+kes  Ensure that bscan creates Volumes with Enabled=1.
+
+Version 1.39.20 beta released:
+22Aug06
+kes  Correct missing Client table reference in SQL pointed out by
+     Marc.
+21Aug06
+kes  Fix Win32 build (new entrypoint, start baculafd).
+20Aug06
+kes  Add -n option to bconsole to turn off conio.
+kes  Print JobIds to be migrated in Job Report.
+kes  Add additional user supplied notes to the messages part of 
+     bacula-dir.conf concerning multiple email addresses.
+kes  Fix an incorrect comment pointed out by a user in dvd_handler.in
+kes  Add more recent Feature requests to Projects file.
+19Aug06
+kes  Apply Maritn's fix to src/win32/Makefile.
+kes  Apply Martin's fix to configure.in for pthreads on FreeBSD 4.x
+kes  Implement pruning for Migration and migrated jobs.
+kes  Implement PoolOccupancy migration.
+kes  Implement PoolTime migration.
+16Aug06
+kes  If doing a mount, look for a slot, and if specified pass it to
+     the SD so that it can load the autochanger.
+kes  Return DVD=1 flag if a label command is done to a DVD. This
+     permits setting VolParts to 1.
+kes  Apply DVD patch from Richard Mortimer <richm@oldelvet.org.uk>, but
+     rework ua_label code based on DVD media type to use DVD flag returned.
+15Aug06
+kes  Eliminate some compile warnings in dird_conf.c
+kes  Format the bytes field in the terminated jobs part of the status
+     command for the three daemons with suffixes to reduce print size 
+     of backup bytes.  Suggested by a user.
+kes  When not descending into a directory, print the File= name that
+     triggered it -- makes why not descending a bit clearer.
+kes  Do not unload autochanger when doing a list command -- basic code
+     from Eric Bollengier.
+12Aug06
+rbn  Reworked the MinGW32 build-dependencies script, it has been renamed
+     to build-depkgs-mingw32.  It now handles two options -h to display
+     help and -C to reextract the source and apply the patches.  The -C
+     option is useful for updating the source after new patches are 
+     released.
+rbn  Moved the 3rd party package URLs to a separate file External-mingw32.
+     This allows updating to new versions without having to modify the
+     script and makes it easier to figure out which packages and which
+     versions are used.
+rbn  Added a new script build-depkgs-msvc.cmd which does the same thing
+     as build-depkgs-mingw32 except they are built using Microsoft Visual C
+     and placed in the depkgs-msvc directory.  There is also an 
+     External-msvc file to describe the packages.
+08Aug06
+rbn  Fix Windows cross-compile compatibilty problems with FreeBSD.
+07Aug06
+kes  Fix bug #462 incorrect error message printed when client script called
+     from File= was not found.
+kes  Fix bug #558 (waiting for feedback) where Bacula needs too much time to
+     do a rewind on Solaris when no tape is in the drive (Solaris does not
+     have the detailed errno found on Linux).  Added Solaris specific code.
+     Note, this may apply to other OSes as well.
+06Aug06
+kes  Defined BUILDING_CATS in src/cats/cats.h so that *nix builds.
+dsb  Updated rpm spec for 1.39 - updatedb 9 to 10, add new man pages,
+     fix bug 648 - update sqlite script patches, lock out gnome2console
+     builds for platforms with gtk+ < 2.4.
+     Updated build_rpm.sh - add remote source directory, add switch for 
+     signing, refine file names.
+     Updated spec file again for Mandriva build as they have this curious
+     custom of silently converting all manpages to bzip2 format just before
+     the final packaging step.
+05Aug06
+rbn  Fixed the Windows Makefiles so that they won't accidentally try and
+     pickup binaries for the Unix build.  This allows both the Unix
+     build and the Windows build to be built in the same tree without
+     interfering with each other.
+rbn  Fixed error handling and cleaned up mtx-changer.cmd.
+rbn  Added the rest of the database scripts.  These are installed but are
+     not yet edited for variable replacement.
+rbn  Broke out the cats functionality from bacula.dll and put into new
+     separate dlls for each database type.  At installation time the
+     correct one is copied to bacula_cats.dll.
+rbn  Eliminate the need to install the mysql.dll on client only builds.
+rbn  Moved dird/sql_cmds.c into the cats directory so all the database
+     specific #ifdefs were in the cats directory.
+rbn  Added a new sql_cmds.h with all the declarations for the variables
+     exported from sql_cmds.c.
+rbn  Moved catalog_db[] from lib/message.c to a new routine db_get_type()
+     which is implemented in bdb.c, mysql.c, postgresql.c and sqlite.c in
+     src/cats.
+kes  Correct improperly formatted list command output reported by Dan.
+04Aug06
+kes  Correct despool time calculation.
+03Aug06
+kes  Remove previous changes to compat.cpp as they create problems.
+kes  Use old style MD5 for FileSets to avoid Full saves on every Job.
+kes  Attempt to fix problems with the msg_queue crashing on Solaris
+     when Bacula is terminating, but problems remain.
+kes  Add WIN32_VSS to HAVES in src/Makefile.inc.in to correct VSS
+     name editing problems with too many \\?\es.
+kes  Fix some Bacula source code style problems in compat.cpp.
+kes  Add debug code to compat.cpp and convert non-Bacula debug code
+     to Bacula style.
+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 descend 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
+kes  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).
+kes  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 ones head is not easy.
+
+Version 1.39.17
+28Jul06
+eb   Tweak new runscript feature to work with 1.38.x FDs. 
+eb   Correct crypto.c to fix segfault when restoring an encrypted stream 
+     on fd which don't use rsa keys.
+eb   Add yes/no English keywords on localized yes/no questions.
+27Jul06
+kes  Several important commits from Robert Nelson for code cleanup and
+     Win32 build.
+kes  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
+kes  Change cats/sql.c to eliminate %-*s format, which I think is turned
+     off in bsnprintf.
+kes  Add Comment field to llist of a volume.
+kes  Allow true/false in some yes/no questions.
+kes  Implement update volume enable=(on|off|true|false|archived|0|1|2)
+kes  Remove a few /n's when scanning commands from another daemon. This
+     permits adding additional fields later.
+kes  Modify dbcheck to handle ctl-d and to delete Log table entries.
+kes  Update README.mingw
+22Jul06
+kes  Tweak authentication to work with 1.38.x FDs. 
+kes  Tweak catalog make scripts.
+kes  Fix catalog upgrade scripts so that they work.
+kes  Correct despooling debug code to eliminate race condition.
+19Jul06
+kes  Add additional fields as specified by Arno to LocationLog.
+kes  Add comment field to the Media record.
+kes  Add Time field to the Log record.
+kes  Correct migration SQL (thanks to Bill Moran) so that it
+     runs with PostgreSQL also.
+kes  Add spooling/despooling info in status output of SD.
+17Jul06
+kes  Spend a lot of time integrating mkcdrec with the rescue disk.
+kes  Add VOLMGMT message class for volume management messages (none yet).
+kes  Add CATALOG as a destination.     It goes into the LOG table.
+kes  Implement the Log table in the DB.
+kes  Implement the Location Log table in the DB (for user use).
+kes  At Eric's request add a run_scripts() just after blast_data in
+     src/filed/job.c
+10Jul06
+kes  Add Enabled column to Location, correct some typos in DB schemas.
+kes  Correct bug I introduced into RunScripts enum.
+kes  Add log table to Catalog
+kes  Purge original job migrated if the migration terminates normally.
+kes  Cleanup purging of files/jobs so that it is done only in a 
+     single subroutine.
+kes  Add new VOLMGMT message class.
+kes  Add Catalog message destination (user conf code remains to be written).
+09Jul06
+kes  Modify read_record and friends to properly deal with migration         
+     needs.
+kes  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.
+     ==========================================================
+
+kes  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.
+kes  Add name() methods to all the resource classes.
+kes  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.
+     ==========================================================
+
+kes  Add more detail (Storage, Device) to list of volumes printed
+     for restore.
+kes  More code in migrate. In particular start multiple jobs if
+     migrating a volume.
+kes  Probably overkill, but ensure that the bsr is unique even within a 
+     job in FD and SD.
+kes  Rework bsys.c drop() so that it now should work as expected.
+kes  Update a bunch of old copyrights -kes  particularly in .h files.
+kes  Remove src/lib/bshm.c/h
+05Jul06
+kes  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
+     ===========================================================
+
+kes  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.
+kes  Rename the cram_md5 routine names to be slightly more appropriate
+     to what they are doing (challenge and respond).
+kes  Robert committed his #ifdef and header cleanup.
+30Jun06
+kes  Fix a compiler warning in files/backup.c
+kes  Cleanup NOT NULL vs DEFAULT 0 in database creation.
+kes  Tweak btape.
+kes  Robert committed his low impact changes.
+kes  I removed a size_t from the jcr.h definition.
+kes  Update the tape regression scripts (still to be tested).
+kes  Add gcc and gcc-c++ requires to srm as suggested by a user.
+kes  Require done or quit to exit from in memory tree restore.
+26Jun06
+kes  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.
+     ==========================================================
+
+kes  Add complete text of GPL to LICENSE.
+kes  Implement job report that indicates where Storage and Pool
+     came from -kes  with overrides and Pool storage and NextPool,
+     it is all very complicated.
+kes  Create a few common subroutines for backup.c and migrate.c
+kes  Eliminate warning messages from tray-monitor.c
+25Jun06
+kes  Apply fix for scheduler for missing unlock_jobs().
+kes  Clean out autoconf caches before rebuilding configure
+kes  Fix the FreeBSD pthreads lib define updated by Dan.
+kes  Add missing semicolon in src/console/console.c
+kes  Add Robert's enhanced version of build-win32-cross-tools
+     as well as his patch file.
+kes  Note, the new gcc options are likely to break building of
+     wx-console or the tray-monitor ...
+24Jun06
+kes  Implement Robert's suggestion to suppress printing compile lines.
+kes  Detect GCC correctly (I hope)
+kes  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.
+     ===========================================================
+
+kes  Fix crypto when not using openssl. I previously overlooked this.
+kes  Eliminate crypto type punning problems by eliminating void * and
+     using uint8_t * instead.
+kes  Harden authentication failure in FD by single threading errors
+     and forcing a 6 second wait.
+
+     ===================== Warning =============================
+          Removed  'Accept Any Volume' directive.
+     ===========================================================
+
+kes  Major cleanup and simplification of regress using shell functions
+     (more tests to be converted to new format)   
+kes  Add detection of 64 bit Irix as indicated by user.
+kes  Increment catalog database id from 9 to 10.
+kes  Add a few of the new database fields to the various C++
+     structures.
+kes  Implement code to fill in the most important new fields (e.g.
+     Media Enable).
+kes  Ensure that most of the new fields are in create/get/insert/update.
+     More work to be done.
+22Jun06
+kes  Update some very old licenses in src/cats.
+kes  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.
+kes  Delete mac_record subroutines.
+kes  Add new table values to create/update/get routines as appropriate.
+kes  Update the update_tables and make_tables scripts.
+kes  Make a first cut in using a union where multiple pointers (actually
+     pointers to pointers) are stored.
+kes  Make some changes to base64.c suggested by Robert and others and add
+     a small amount of documentation.
+kes  Add some changes suggested by Peter for Solaris (bregex...)
+kes  Make runscript.h always built because it needs to be pulled into
+     more places.  In particular its RES was left out of a union.
+kes  Renumber the enum{} list in runscript.h to avoid starting from zero.
+     This makes it slightly easier to detect uninitialized variables.
+14Jun06
+kes  Remove xpg4 lib from FreeBSD build as it is no longer needed and
+     sometimes creates install problems.
+kes  Change a couple of %T in strftime to %H:%M:%S as seen in Robert
+     Nelson's code.  More to do.
+kes  Convert a few store_bit to store_bool in filed_conf.c.       
+kes  DVD tweak to block.c as supplied by Uwe Muessel.
+04Jun06
+kes  Modify configure.in to check for typeof().
+kes  In findlib/attribs.c use typeof instead of templates if possible.
+01Jun06
+kes  Implement partial error messages for src/filed/acl.c
+kes  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.
+kes  Small updates to projects.
+27May06
+kes  Add Eric Bollengier patch for new RunScript directive. It breaks
+     compatibility between dird and fd.
+26May06
+kes  Prevent DVD code from rewriting label if the device cannot be
+     opened read/write.
+kes  Used __GNUC__ to detect GNU g++ as suggested by John Goerzen to
+     fix Debian build bug.
+kes  Fix Dir/SD run race in migrate.c, verify.c, and restore.c
+kes  Integrate manpages contributed by Jose Luis.
+kes  Update projects file.
+kes  Add manpages Makefile.in to configure.in
+kes  Remove installation of bacula.8 in scripts directory.
+24May06
+kes  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.
+kes  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).
+kes  Fixed bug #619 where Bacula would not restart jobs with MaxRestartTimes
+     set to zero. 
+kes  Apply patch from John Goerzen bug #611 to fix bad manual links in the code.
+kes  Apply patch from Rudolf Cejka bug #614 to removed trailing
+     colons in query.sql file.
+kes  Apply patch from Rudolf Cejka bug #613 to correct prunning of files
+     not to create orphans.
+kes  Apply patch from Rudolf Cejka bug #617 to use mtime instead of ctime
+     in restore long listing.
+kes  Apply patch from Rudolf Cejka bug #609 to use MarkId in verify.c instead
+     of incorrect MarkedId.
+kes  Apply patch from adioso bug #616 to correct text in manual (replace
+     Director with File daemon).
+kes  Rework a few of the zlib changes so that they build properly.
+
+21May06
+kes  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.
+kes  Modify LICENSE to correct some problems pointed out by Debian.
+05May06
+kes  Correct EOF with no \n lex.c problem.
+kes  Tweak compat.h compat.cpp and merge with apcupsd
+kes  Add additional INFO messages if autochanger cannot be used.
+
+02May06
+kes  Simplify Win32 Makefile
+kes  Correct count of buffers/bytes used by smartall.c
+kes  Updated compat.h after porting apcupsd to MinGW.
+01May06
+kes  Work on getting wx-console building on MinGW. wxWidgets now builds
+     started adding Makefile ...
+kes  Moved MinGW library objects to src/win32/lib to reduce clutter.
+30Apr06
+kes  Reloading a bad configuration file doesn't kill director any more.
+     Thanks to fix from Eric Bollengier.
+29Apr06
+kes  Fix problem of accents with new Win32 code.
+kes  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 -kes  i.e. there is
+     some mapping problem with wide characters.
+kes  The code no longer compiles with Microsoft VC++.
+28Apr06
+kes  Start implementing Christopher's St.Bernard code.
+kes  Add Christopher's mods for opening files.
+kes  Strip \r \n from Win32 error messages (Christopher)
+kes  Add more info about Win32 system if unknown (Christopher)
+kes  Use bstrn(cpy, cat) routines to avoid overrun in compat.cpp
+kes  Fix a number of incorrect strings marked for translation, when
+     they should not be (e.g. commands).
+kes  Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob
+     Patches supplied by user in bugs #608 and #599.
+kes  Use most recent of st_ctime and st_mtime in restore tree DIR
+     listing. This fixes some problems with Win32 printing incorrect
+     values.
+kes  Correct the clock shift comm time calculation between the DIR
+     and the FD. It was added rather than subtracted.
+kes  Strip all backslashes in filenames to be restored on Win32
+     machines -kes  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.
+kes  Remove lib/regex.c (replaced by bregex.c).
+kes  Delete src/win32/License.txt
+kes  Modify installer to install LICENSE
+26Apr06
+kes  Fix bug in build-win32-cross-tools script reported by Howard
+kes  Implement cross compiled bconsole
+25Apr06
+kes  Fix barcode test, eliminate BOOL (doesn't exist on Linux).
+kes  Write first cut of README.mingw32
+kes  Add back ua_label barcode fix from Rufolf Cejka.
+kes  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
+kes  Add 'Dir Status' button to the gnome console.
+kes  More work on migration.
+kes  Restore non-compatible base64 coding to permit compatibility.
+kes  Display heap stats in Storage daemon without debug level.
+22Apr06
+kes  Integrate most of the MinGW changes -kes  more to do.
+21Apr06
+kes  Implement using pg_config for finding PostgreSQL files.
+     Fixes bug #600. Patch supplied by user.
+kes  Remove -t option from mktemp in mtx_changer.in and use
+     working directory. Fixes bug #578.
+kes  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.
+kes  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.
+kes  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.
+kes  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
+kes  Ensure that DB signature is never NULL.
+kes  Ensure that DB table names are not translated.
+kes  Fix scheduler to handle time skew (eg daylight savings).
+kes  Fix scheduler to use lock_jobs() to avoid most problems
+     with reload. Window is now milliseconds.
+19Apr06
+kes  Apply patch from Christopher Hull
+     kes  Allow multiple connections to database with different
+       parameters.
+     kes  Invalidate the scheduler when doing a reload. Fixes seg
+       fault, but still 60 second window.
+     kes  Additional info in Reschedule message.
+     kes  Use set_jcr_job_status() everywhere to prevent loss of
+       cancel, error.
+     kes  Display peer IP in FD if error from connecting DIR.
+     kes  Don't increment file count for DIRBEGIN.
+     kes  Replace illegal characters in Win32 filename by _.
+     kes  Add SE_CREATE_PERMANENT_NAME privilege in Win32.
+     kes  Hash hard link filenames rather than linked list.
+     kes  Fix for security failure in chdir on Win32.
+     kes  Add CreateDirectoryA/W win32 API entry points.
+kes  Add /silent option to Win32 FD for Install/Remove service.
+kes  Always print Heap statistics in FD.
+18Apr06
+kes  Remove the -f option from the chown in Makefile.in for more
+     portability.
+kes  Change setting the group in Makefile.in to use chgrp for
+     more portability.
+kes  Implement a write_store and read_store to replace
+     dirstore in reserve.c
+kes  Implement a Bacula read/write lock for Python rather
+     than using the Python lock to avoid recursive problems.
+kes  Correct the uninstall directory names in filed/Makefile.in
+     as reported by a user.
+17Apr06
+kes  Correct some problems with database creation (new tables).
+kes  Replace a bunch of old 0x%x by %p.
+kes  Get first cut of Migration with Job selection working.
+16Apr06
+kes  Change store_bit() to store_bool() for the Spooling in 
+     dird_conf.c -kes  bug reported by Robert Nelson.
+15Apr06
+kes  Correct Makefile bug found by Dan Langille.
+14Apr06
+kes  Correct Makefile for Solaris /bin/sh
+kes  Correct mtx-changer.in for Solaris /bin/sh
+kes  Abort if a conf resource does not have a Name =
+12Apr06
+kes  Change the name of the regex program to bregex.
+kes  Add the bwild program to the tools directory. It is similar
+     to the bregex program.
+kes  Implement create bregex.h and bregex.c in src/lib from the
+     Python regexp program.  
+kes  Use the new bregex.c to implement Regex expressions on Win32.
+11Apr06
+kes  More work on migration.
+kes  Implement wild program in tools directory for testing
+     wild-cards. Almost identical to the regex program.
+kes  Up port VSS single thread locking code.
+kes  Replace N_(..) by NT_(...) to inhibit translation of
+     commands.
+kes  Modify Makefile to change the permissions on Working Directory
+     to 770 if the directory is created.
+kes  Do not fail the Makefile if changing the permissions or 
+     owner/group on WorkingDir fails.
+kes  Remove early selection of Scratch Volumes in the recycling
+     algorithm.
+kes  Correct the old recycling algorithm so that Scratch Volumes
+     are selected when looking for a Volume in the changer.
+kes  Correct a typo in the Verify SQL reported by Joe Park.
+10Apr06
+kes  Remove automatic case folding on Windows FDs. You must
+     explictly use the 'Ignore Case = yes' option.
+kes  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
+kes  Make weof() and clrerror() methods of class DEVICE.
+08Apr06
+kes  Tweak license to include Microsoft restrictions.
+kes  Move mysql.reconnect to after real_connect().     Thanks to
+     Frank Sweetser for the patch.
+kes  Disallow a backslash in a File = directive (Windows junk)
+     unless the string is quoted.                     
+kes  Apply Eric's patch to ua_label.c so that daemon protocol
+     is not translated.
+kes  Add NT_ definition for strings that should not be translated.
+kes  Apply NT_() to ua_label.c
+kes  Remove timed wait for VSS on Win2K3 as it is not yet
+     implemented.
+kes  Correct bacula.in script to reference bacula-ctl-xx in the
+     sysconfig directory rather than the bin directory.
+26Mar06
+kes  Fix a long standing bug in the bacula start/stop scripts.
+kes  Attempt to add the new bacula-ctl-* files to the rpm.
+kes  Switch to using typeof() for list traversing to avoid
+     as many FC5 g++ compiler warnings as possible.
+25Mar06
+kes  Split the bacula start/start script into four files:
+      bacula         -kes  starts and stops calling other scripts
+      bacula-ctl-dir -kes  starts/stops the director
+      bacula-ctl-fd  -kes  starts/stops the File daemon
+      bacula-ctl-sd  -kes  starts/stops the Storage daemon
+24Mar06
+kes  Create datestyle fix for PostgreSQL. Fixes bug #574.
+kes  Correct editing of JobId from int to int64 in fd_cmds.c
+kes  Eliminate FileSet name race with bash_spaces() and multiple
+     threads by bashing in a local.
+kes  Fix error return from 'use storage' to print a correct error
+     message rather than nothing.
+kes  Correct false re-read last block error message when two jobs 
+     are simultaneously writing at the end of a tape.
+kes  Simplify exit conditions in the reserve.c code to avoid     
+     possible non-release of reservation_lock().
+kes  Suffle lock order in reserve to avoid deadlock between
+     reservation lock and device mutex.
+21Mar06
+kes  Initialize jcr mutex before first use. Thanks to Thorsten for
+     tracking this down for me !!!! as it broke the Win32 build.
+20Mar06
+kes  Integrate addition of line count limitation to bsmtp -l from
+     Sebastian Stark <stark at tuebingen.mpg.de>
+17Mar06
+kes  Implement regex test program in tools directory.
+kes  Attempt to fix time problem with bsmtp with foreign langs.
+kes  Add strip_trailing_newline() submitted by user.
+kes  Implement regex matching in migrate.c
+16Mar06
+kes  Fix bug #537 to allow arbitrary time to mount a volume for
+     restore, if polling is turned on.     
+kes  If dir_user or dir-group is specified in ./configure apply it to
+     the working-dir. Fixes bug #533.
+kes  If rescheduling a job cancel the previous incarnation with the SD.
+     Fixes bugs #566 and 557.
+kes  Fix bug #567 do_message() definition type conflict.
+
+14Mar06
+kes  Add more jcr methods and make mutex and use_count private.
+kes  Create lock/unlock methods for jcr.
+kes  Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading
+     records to get to seek position.
+kes  Integrate patch from bug #561 to correct conio.c signal definitions.
+kes  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.
+kes  Fix obsolete usage of foreach_dlist() to use foreach_jcr() in
+     lib/jcr.c -kes  prevents locking the jcr chaing.
+kes  Apply patch from bug #564, which corrects listing volumes with
+     multiple autochangers. Apply same fix to next volume list.
+kes  Fix bug #562 where restore bootstrap file is not unique.
+kes  More details in implementing David's migration syntax proposal.
+kes  Save and restore dcr when swapping drives so that if we have
+     a write dcr it is not lost.
+kes  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.
+kes  Stop SD command loop if job is canceled.
+
+08Mar06
+kes  Remove old code from findlib/create_file.c
+kes  Rename mac.c migrate.c
+kes  Add user friendly display of VolBytes in job report.
+kes  Rename target... to previous... to make it a bit easier to
+     understand.
+kes  Add selection type and selection pattern to Migration (idea
+     given by David Boyes). 
+
+04Mar06
+kes  The po files should now be current.
+kes  Fix new sql_use_result() code to properly release the
+     buffers in all cases.
+kes  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.
+kes  Allow listing by any of the above.
+kes  Add the user friendly job report code for reporting job elapsed time
+     and rates with suffexes from John Kodis <kodis at comcast.net>.
+kes  Add Priority and JobLevel as Python settable items.
+kes  Use TEMPORARY table creation where the table is created by
+     Bacula.
+kes  Add new code submitted by Eric for waiting on specific jobid.
+kes  Add ACL checking for the dot commands.
+kes  Fix restore of writable FIFOs.
+kes  Fix a bug in bpipe where the string was freed too early.
+27Feb06
+kes  Modify the Python class examples to inherit object -kes  new way
+     of defining classes. Patch from Felix Schwarz.
+kes  Implement jobuid to replace old usage of job in keywords as
+     suggested by Eric Bollengier.
+kes  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
+kes  Implement write variables for Python to set Priority (anytime), and
+     Job Level, only during JobInit event.
+26Feb06
+kes  Fix the block listing bug pointed out by Arno.
+kes  Update the po files at Eric's request.
+24Feb06
+kes  Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to 
+     accept time qualifiers.
+kes  Make catalog respect ACL.
+kes  Add recycle count to Media record.
+
+Changes to 1.39.6-beta1 24Feb04
+23Feb06
+kes  Add Rudolf Cejka's new rc-chio-changer.
+kes  Implement pulling Volume from Scratch Pool if the
+     Volume is in the autochanger.
+kes  Implement additional command arguments for update Volume.
+
+Changes to 1.39.5 
+22Feb06
+kes  Back port changes to 1.38.5
+kes  Fix recycle SQL for StorageId.
+kes  Fix misplaced quote in mtx-changer script.
+20Feb06
+kes  Note. Your database must be updated, or you must create 
+     a new database. I have not yet incremented the database level.
+kes  Add Location table. 
+kes  Add LocationId, DeviceId, and MediaTypeId to Media record.
+18Feb06
+kes  Implement create/get mac record in database for adding extended
+     Migration data to the job record.
+kes  Add new MAC table to update/make database scripts.
+kes  Return Storage name used when getting VolumeNames for a job.
+kes  Change bsr file keyword Storage to Device, which is more accurate.
+kes  Ensure that Mac records are pruned/purged.
+kes  Tweak SD tools to deal with changing media type.
+kes  Integrate more dev.c subroutines as methods (e.g. strerror, bsr, ...)
+kes  Pass pointer to dcr pointer to acquire_device_for_read() so
+     that the subroutine can switch devices, and hence dcrs.
+kes  Modify the multiple MediaType read code to re-use the same
+     dcr when switching devices. This makes the code much more
+     robust.
+kes  Integrate patch from Karl Hakimian that reads JobIds, FileIndexes
+     from a table for restore.
+kes  Add Storage name to VolParams, but it really should be Device.
+14Feb06
+kes  Add disk-changer to scripts directory + configure/Makefile
+kes  Eliminate PoolId from jcr -kes  it is in jcr->jr.PoolId
+kes  Implement store_bit scanner to replace store_yesno.     Mostly done.
+kes  Implement new store_bool that stores in a bool. 
+kes  Add true/false to yes/no conf directives.
+kes  Make first cut at changing appropriate store_yesno to store_bool.
+kes  Complete implementation of Pool storage devices.
+kes  Move starting clones to job.c
+kes  Move create_restore_bootstrap_file() to job.c
+kes  Make copy_storage() more general to be able to handle
+     Pool storage.
+kes  Cleanup a lot of migration code for manual running, including
+     using Pool storage.
+kes  Move getting a scratch Volume into a subroutine.
+kes  Make all places a Volume that is added to a pool to 
+     respect max vols.
+kes  Fix bug in autochanger recycle code (improper edit 64 bit).
+kes  Fix segfault in restore command when no value specified.
+kes  Start adding code to handle multiple MediaTypes in restore.
+kes  Eliminate race condition in getting Volume name for
+     two drive autochanger.
+kes  More debug code in autochanger.
+kes  Add storage keyword to bootstrap file, add parsing.
+kes  Move slot in bsr file into Volume record as there will be
+     a different slot for each Volume.
+kes  Create reserve.h
+07Feb06
+kes  Implement Pool storage overrides.
+06Feb06
+kes  Implement first cut of Migration.
+kes  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.
+kes  Implement StorageId patch supplied by user (reggie) in bug
+     #536.  This should permit Bacula to work correctly with two
+     autochangers.
+kes  Implement Job listing variations suggested by a user.
+kes  Move updating bootstrap code in backup.c to subroutine
+     update_bootstrap_file().
+kes  Add new job status elapsed time and bytes written user
+     friendly job report output patch sent by John Kodis
+     <kodis at comcast.ne>.
+kes  Implement a storage list in Pools.
+kes  Separate out setup_job() code from run_job().
+kes  Get migration working -kes  lots of changes in mac.c in both
+     DIR and SD.
+kes  Apply patch from user (Eric Bollengier I think) that fixes a     
+     DIR crash when no arguments are supplied to a dot command.
+kes  Fix typo (strcpy->strcmp) in ua_prune.c as reported by Martin.
+kes  Fix command arg name->volume in label command of gnome-console.
+kes  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
+kes  Apply user supplied patch for more readable rate output
+     in job report.
+kes  Continue implementing migration.
+kes  Implement support for removable filesystems in SD.
+kes  Ensure that btraceback scripts can be read by anyone.
+kes  Replace dvd-freespace and dvd-writepart by dvd-handler.
+kes  Correct bug where canceling restore before the FD contacts
+     the SD causes the drive to be left in read mode.
+kes  Move ofline_or_rewind into DEVICE::close().
+kes  Eliminate close_device.
+kes  Convert several dev subroutines to methods (e.g. bsf,
+     eod, ...)
+kes  Eliminate force_close_device().
+kes  Implement Device Type directive in Device resource that
+     can have values File, Tape, Fifo, DVD, or Prog.
+kes  Add has_cap() method to Device.
+Changes to 1.39.4
+17Jan06
+kes  Add patch from bug #527 to allow RedHat user to specify
+     options/user/group for starting each daemon in      
+     /etc/sysconf/bacula.
+16Jan06
+kes  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
+kes  Add periodic (every 24 hours) garbage collection of memory 
+     pool by releasing free buffers.
+14Jan06
+kes  Correct bug counting sized (for display only) in smartall.c
+kes  Print FD mempool stats if debug > 0 rather than 5.
+12Jan06
+kes  Make db_lock() mutex error fail the job rather than abort
+     Bacula.  Canceling the job caused the mutex to fail.
+kes  Correct bug in alist.c that re-allocated the list if the
+     number of items goes to zero.
+kes  Move the reservation system thread locking to the top level
+     so that one job at a time tries all possible drives before
+     waiting.
+kes  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
+kes  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.
+kes  During 'update slots' clear all InChanger flags where the
+     StorageId is zero (old Media records).
+
+Beta release 1.38.4:
+09Jan06
+kes  Fix autochanger code to strip leading spaces from returned
+     slots number. Remove bc from chio-changer.
+kes  Back port a bit of 1.39 crypto code to reduce diffs.
+kes  Fix first call to autochanger that missed close()ing the
+     drive. Put close() just before each run_program().  Fixes
+     Arno's changer bug.
+07Jan06
+kes  Add PoolId to Job record when updating it at job start time.
+06Jan06
+kes  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.
+kes  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
+kes  Start implementing Verify list output.
+kes  Move the suitable_drive flag to a better place to prevent
+     premature termination of the reservation if all drives
+     are busy -kes  should fix Arno's diff/inc pool failures.
+26Dec05
+kes  Add mutex to single thread VSS code in Win32.
+22Dec05
+kes  Simplify code in askdir.c that waits for creating an appendable
+     volume so that it can handle multiple returns from the wait
+     code.
+kes  Modify the wait code to permit multiple returns.
+kes  Return a zero when 'autochanger drives' is called and
+     it is not an autochanger.
+kes  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.
+kes  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.
+kes  Return error if reserve cannot find at least one suitable device.
+kes  Make wait_for_sysop() return correct state information.
+kes  Fix Win32 state file problem. write was not using compat
+     code. This should fix bug #500.
+21Dec05
+kes  Modify gui on command to set only GUI mode and not batch.
+kes  Modify .messages command to always print messages regardless
+     of the mode.
+kes  If GUI mode is on, suppress automatic printing of 
+     You have messages. 
+kes  Delete old bnet packet code.
+kes  Ignore new BNET_START_SELECT and BNET_END_SELECT signals in
+     wx-console. -kes  not implemented because bconsole must be updated.
+kes  Modify restore command in wx-console to set gui on and to use
+     only .messages instead of messages.  Hopefully this fixes bug
+     #514.
+kes  Fix seg fault in exit of acquire when canceling a job --
+     reported by Wolfgang Denk
+kes  Pull in latest reservation system changes from 1.38
+kes  Make .messages command always print messages regardless
+     of the automessages flag.
+17Dec05
+kes  Fix seg fault if user labels a drive directory bug #513
+kes  Remove quotes around Version as it breaks things.
+16Dec05
+kes  Merge in Aleksandar Milivojevic's mods to the spec file.
+kes  Apply sparse code fix for raw drives and fifos. Bug 506
+kes  Thorsten fixed Unicode cd problem with wx-console bug 505.
+14Dec05
+kes  Correct reservation system to do a last ditch try
+     for any mounted volume, then anyone anywhere.
+kes  Add quotes around table Version because of
+     error in MySQL 4.1.15 -kes  bug report submitted.
+kes  Correct some minor problems with btape in the fill
+     command.
+kes  Updates to ssh-tunnel from Joshua Kugler.
+kes  Added a report.pl program from Jonas Bjorklund.               
+kes  Simplify the O_NONBLOCK open() code for tape drives,
+     and always open nonblocking.
+kes  Do not wait for open() if EIO returned (shouldn't happen).
+kes  Eliminate 3 argument to tape open().
+kes  Correct the slot # edited in the 3995 Bad autochanger unload
+     message.
+kes  With -S on bscan (show progress) do not divide by zero.
+13Dec05
+kes  Make cancel pthread_cond_signal() pthread_cond_broadcast().
+kes  When dcr is freed, also broadcast dev->wait_next_vol signal.
+kes  Remove unused code in wait_for_device.     
+kes  Make wait_for_device() always return after 60 seconds of wait.
+
+Changes to 1.39.2:
+13Dec05
+kes  Add stubs for non-crypto build.
+12Dec05
+kes  Use localhost if no network configured
+11Dec05
+kes  Eliminated duplicate MaxVolBytes in cat update -kes  bug 509.
+kes  Remove debug print.
+kes  Add bail_out in error during state file reading.
+10Dec05
+kes  Merge changes made to 1.38.3 into HEAD
+kes  Add stubs for pygtk-console code
+kes  Create Makefile.in for pygtk-console code
+09Dec05
+kes  Merge updates into 1.38 branch
+kes  Update specs to include mysql4 define.
+kes  Fix when attributes are sent, must be after binit().
+kes  Stop read_record() if status not ok in second loop.
+kes  Return rec->FileIndex in dcr->VolLastIndex for normal
+     and partial records in read_record().  This allows bscan
+     to get FileIndex at EOT correct.
+kes  Fix butil.c to correctly set dcr -kes  fixes seg fault in bls.
+08Dec05
+kes  Fix Win32 built to work with new crypto code.
+kes  Apply patch supplied by user (slightly modified) to fix
+     correct detection of holes in block devices and FIFOs. 
+     Bug # 506.
+kes  Apply patch supplied by user (slightly modified) 
+     to fix SD hang with multiple pools and bad client
+     IP. Fixes bug # 508.
+07Dec05
+kes  Add nagios plugin to the examples directory. Submitted by
+     Christian Masopust.
+kes  Remove warning message about multiple saves of hardlinked files
+     from find_one.c as it can generate too many warning messages.
+kes  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
+kes  Reset timeout values before select() per patch from 
+     Frank Sweetser for problems with non-blocking sockets.
+kes  Unlink the state file if either reading or writing it gets
+     errors.  Hopefully this will fix Win32 exit problems.
+kes  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
+kes  Get next volume from Scratch pool before creating a volume.
+kes  Set new Pool defaults in Vol when moved from Scratch Pool.
+kes  Remove argument from create_bacula_database for SQLite as it
+     caused an error.
+kes  Add back index code so that two drive autochangers can get
+     a second tape.
+kes  Change a bunch of debug levels to aid debugging autochangers.
+kes  Fix reservation so that mutexes are properly applied.
+kes  Rework reservation algorithm so that two drives can be used
+     at the same time.
+04Dec05
+kes  Landon merged his data encription changes into the HEAD
+kes  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
+kes  Fix font code in gnome2 console user patch. Fixes bug #501.
+kes  Fix malformatted bnet error message that caused seg fault
+     fixes bug 502
+kes  Applied user patch to improve README.vc8 in src/win32.
+29Nov05
+kes  Add Migrate, Copy, Archive Job types (some where there)
+kes  Correct some more editing of JobId's (for 64 bit compatibility).
+kes  Ensure that StorageId is stored in Media record when ever possible.
+kes  Add Migration Job to Job.
+kes  Add Migration Time, Migration High Bytes, Migration Low Bytes
+     Next Pool to Pool resource.
+kes  Add more code to mac.c (migration archive copy).
+kes  Change Start Storage daemon job to require read and write storage
+     pointers.
+kes  Pass read storage data to SD as well as write storage data.
+kes  Remove old code from winservice.cpp
+kes  Break on error in scan.
+kes  Fix typo in signal.c
+kes  Separate read/write DCR in SD.     Add jcr->read_dcr.
+kes  Cleanup how find_device() works.
+kes  Add read output to Status in SD.
+Changes to 1.39.0:
+23Nov05
+kes  Add red-black btree routines
+21Nov05
+kes  Remove abs() in bfile.c so that it compiles on Solaris. 
+     Bug #491.
+20Nov05
+kes  Fix crash in tray-monitor when daemon disconnects. Bug #479.
+kes  Fix bnet-server bug found on OpenBSD. Bug #486
+kes  Fix cancel failure bug. Bug #481
+kes  Fix failure when Pool name has spaces. Bug #487      
+kes  Fix SD crash in autochanger code. Mutex failure. Bug #488
+kes  Fix a couple of free()s in src/filed/acl.c
+kes  Fix memory overrun in bfile.c in building OS X resource
+     fork filename. Bug #489 
+kes  Add Pool name to SD status output.
+14Nov05
+kes  Apply SunOS patch for ACLs submitted by David Duchscher.                     
+kes  Make sure to set storage before trying to set drive.
+kes  Add bacula_mail_summary.sh to examples directory. It makes
+     a single email summary of any number of jobs. Submitted
+     by Adrew J. Millar.
+kes  Make sure when we do a mount to unblock the device even
+     if the drive could not be opened.  
+13Nov05
+kes  Remove the USE_WIN32STREAMEXTRACTION #defines (always on)
+     and correct a few minor problems to make it build on Linux.
+10Nov05
+kes  Remove delete of CVS from all Makefiles
+kes  Fix seg fault when clicking on Add button in wx-console
+     restore panel.  Bug #470.
+kes  Fix copyright date and URL typo -kes  bug #468.
+kes  Change autostart install for FreeBSD to look for rc.conf     
+     rather than rc.local as suggested fix for bug #466.
+kes  Apply patch supplied by Eric Bollengier to fix PostgreSQL       
+     grant on status. Bug #465
+kes  Apply patch supplied by Eric Bollengier to fix PostgreSQL
+     update script. Bug #464
+kes  Tweak #ifdefing a bit in new Win32 stream code.
+kes  Fix #ifdeffing for FD_NO_SEND_TEST.
+kes  Add documentation of performance #defines
diff --git a/docs/techlogs/ChangeLog b/docs/techlogs/ChangeLog
deleted file mode 100644 (file)
index c6de0d5..0000000
+++ /dev/null
@@ -1,5590 +0,0 @@
-Changes to 1.37.36 released 22 Aug 05
-20Aug05
-- Landon's fix for NLS detection
-- Eliminate incorrect compiler warning on FreeBSD. 
-- Move Win32 errno message build into berrno constructor.
-- Minor Win32 tweaks
-19Aug05
-- A number of minor Win32 fixes.
-- Remove a PostQuitMessage() as suggested by Thorsten so that
-  BartPE restore can work correctly.
-- Fix for create JobMedia so that VolIndex remains valid even
-  during a delete Job or pruning -- bug 402.
-- Minor tweak for Win32 build.
-18Aug05
-- Win32 fix -- remove debug O_NONBLOCK code.
-- Fix bug 399 -- make_catalog_backup does not work for sqlite3
-- Implement unloading a volume in a different drive if it
-  is needed in the current drive.
-- Implement search for unused autochanger drive.
-- Implement search for exact Volume in reservation before
-  other searches.
-- Fix picking up drive in Dir so that it is not done in
-  the status command.
-- Eliminate double check on "loaded" for autochanger.
-17Aug05
-- Start coding better reservation algorithm
-- Always look for slot for label command.
-- Add more debug code for autochangers.
-- Apply fix from Stephan Leemburg <sleemburg@jvc.nl> for
-  improper scanning of schedule resource:
-  Run = Level=Full Pool=Catalog daily at 1:20
-- Apply patch from Chris Lee <labmonkey42@gmail.com> for 
-  adding --enable-build-dird --enable-build-stored.
-- Tweak datadir definition in configure.in
-16Aug05
-- Fix bug that missed drive=nn specification.
-- Eliminate nonblocking kludge in heartbeat of FD as
-  it caused high CPU usage.
-- Pickup loaded slot when doing open() of tape drive.
-- Make autochanger reservation code go through full list
-  first pass until exact match found.
-15Aug05
-- Fix how FileSet is saved in job record to correct continual  
-  Full save.
-- Make datadir print on config.out listing.
-- Move get FileSet record up in backup init to eliminate continual
-  Full save seen by Peter Sjoberg.
-- Add VolumeName to read-only Python variables.
-- Add VolumePurged event for Python.
-- Suppress /dev/ Filesystem change prohibited INFO messages.
-- Do not delete FT_RAW files before restore (allows FIFOs
-  to be used for restore).
-13Aug05
-- Add drive specification to mount, unmount, release, label,
-  and relabel for Autochangers.  Note Dir<->SD protocol has
-  changed.
-
-Changes to 1.37.35:
-12Aug05
-- Disable parts of NLS as the configure does not work here.
-- In job backup init (backup.c) define definitive Job level and
-  since time, *then* apply Job Pool override selection if any.  
-11Aug05
-- Modified bconsole script so that it is improperly
-  installed, it will refuse to execute.  This avoids
-  recursive call loops.
-
-Changes to 1.37.34:
-06Aug05
-- Apply David's ACL fix to src/filed/acl.c
-05Aug05
-- Apply patches sent by David Duchscher <kreios@gmail.com> for
-  making ACLs work on MacOS X and FreeBSD.
-04Aug05
-- Apply patch in bug#397 that improved configure
-  - find readline under $with_readline/include/readline
-  - no libutil under Solaris
-  - no need for -ldl under Solaris 
-- Make reservation system single threaded during the
-  search to avoid two threads competing for the same
-  resource.
-- Correct a return code in find_suitable_device_for_job()
-  Possibly cause of "busy writing to another volume".
-03Aug05
-- Modify open() for tape so nonblocking really works.  
-- Use fcntl() to reset blocking status rather than close()
-  and reopen the drive.
-- Make sure dev->open() is always called so that any change
-  in read/write permissions will occur.
-- Open drives initially in daemon in read-only mode.
-- Ensure that each time the VolHdr.VolumeName is zapped
-  or changed that free_volume() is called on the old name.
-
-Changes to 1.37.33:
-03Aug05
-- Require 5 arguments to mtx-changer except list and slots
-- Turn -EPIPE status returns from bpipe to ETIME
-- Include Slot in SD status output 
-- Do not term_dev() during initialization in SD if the device
-  could not be opened.  In the case of a tape drive, there may
-  be no tape in the drive.
-
-Changes to 1.32.32:
-02Aug05
-- Correct PostgreSQL database scripts as suggested by a user.
-- Add additional info to FATAL message generated when a device
-  is busy writing to another volume.
-- Suppress an inappropriate NULL Volume name message after a cancel.
-- Correct a warning message in reserve.c
-29Jul05
-- Apply user's patch to make mutiple modifiers for times
-  work correctly.
-- Make read_dev_volume_label() handle ANSI/IBM labels
-  correctly -- ie space over any label at the beginning
-  of the tape.
-28Jul05
-- Make ANSI/IBM writing of HDR1/2 labels ignore any
-  errors if at end of tape.
-- Apply Martin's patch to improve Python detection in
-  configure.in
-- Temporarily turn off disk seeking until I find the
-  cause of the problem.
-27Jul05
-- Add OSF1 patch supplied by user.
-- Use number of files selected from write_bsr() only
-  if it is not defined.
-- Explicitly seek to end of file when getting size for
-  restore test.
-- Correctly set EndBlock position in JobMedia record
-  for files.
-- Remove unnecessary set StartBlock in bscan. Caused bscan
-  regression error.
-26Jul05
-- Modify mtx-changer to wait a maximum of 300 seconds.
-- Do restart of failed jobs only for Backups job types.
-- A number of DVD updates from Nicolas.
-24Jul05
-- Turn off old service helper code in Win32.
-- Correct Messages bug found by Phil in stored.
-23Jul05
-- Complete (almost) documentation of 1.38.
-- Add error messages for error conditions with VSS.
-- Fix additional problems with VSS backup that I introduced.
-Changes to 1.37.31:
-22Jul05
-- Correct compiler complaints in wx-console and tray-monitor.
-- Correct VSS problems recognizing c:
-- Add VSS before job status
-- Fix output of status from being one big line.
-- Change cd xx; make to cd xx && make as suggested by Phil.
-- Cleanup projects file
-- Remove unnecessary casting of FF_PKT in filed.
-- Apply Thorsten's bugfix for vss_generic.cpp
-- Add check for df path for dvd_freespace
-- Use df to get space used on DVD.
-- Change sense of flag indicating erase DVD or not before writing.
-- Fix bpipe so that it never modifies the result pointer.
-- Replace more dev_name by print_name().
-- Rewrite edit_device_codes_dev() so it does not overwrite the
-  supplied buffer.
-- Update printing of labels (for bls) so that critical information
-  is printed (Job name and timestamp).
-- Cleanup old spool files when starting the SD.
-- Modify vss.cpp to allow C: as a path name.  Otherwise VSS
-  doesn't work when only a drive name is given.
-- Modify vss.c to eliminate double / in filenames.
-- Update doc -- particularly the restore chapter.
-18Jul05
-- Make all files in working directory have .xxx at end.
-- Work on DVD writing.
-- Fix keepatime bug (bugs database).
-- Move Python variables from Job to Bacula. They are
-  DirName, Version, ConfigFile, and WorkingDir
-- Fix delete of bootstrap to only occur on Bacula created
-  filenames.
-- Allow cancelling a Job name that is not active. It is
-  sent to the daemons.
-17Jul05
-- Fix name space pollution by OpenSSL 0.9.8 reported by
-  Matthias Kurz -- applied his patch.
-- Fix bpipe.c so that it does not modify results pointer.
-  ***FIXME*** calling sequence should be changed.
-- Remove some remaining references to dev_name.
-- Fix calls to mount_dev() and unmount_dev() to
-  correspond to returned value (bool instead of int).
-- Try without success to make DVD writing work.
-== Nicolas
-15Aug05
- - Convert dvd-writepart to Python.
- - Increase delay from 3 seconds to 5 seconds between SIGTERM and SIGKILL when
-   killing external programs.
-13Aug05
- - Add gettext macros in autoconf/gettext-macros.
- - Modify how localedir is set in configure.in.
- - Remove setlocale check (useless).
-10Aug05
- - Mark translatable strings in all source files.
-08Aug05
- - Create French and Italian translation files (fr.po, it.po).
- - Add support for translation in configure and Makefiles.
- - Update autoconf/aclocal.m4 so it is automatically created with aclocal
-   (Note: autoconf/gnome-macros is not used anymore, it may be removed).
-30Jul05
- - Fix src/lib/bpipe.c:run_program and run_program_full_output to detect if the watchdog
-   killed the program, and return an error if it is the case.
-26Apr05
- - Modify parse_config to get a LEX_ERROR_HANDLER as a parameter 
- - lex_open_file now returns NULL if the file can't be opened. All calling functions have
-   been adapted.
- - Remove set_exit_on_error function
-07Apr05
- - Fix "unknown device type" problem with DVD devices.
- - Fix crash when there is no media in the DVD drive.
-09Jan05
- - Update the documentation and ReleaseNotes.
-05Jan05
- - Add FreeSpaceCommand in Device (SD configuration file) and implement it.
- - Some modifications (again) on how guessed volume names are handled (now it should work).
- - Part files on the hard disk are removed if they are empty.
-04Jan05
- - Major fixes on how guessed volume names are handled.
- - Minor fix in src/stored/append.c.
- - Replace, when possible, POOLMEM by POOL_MEM in the new code of src/stored/dev.c.
- - New script, scripts/dvd-freespace, which gets the free space available on a writable DVD.
-03Jan05
- - Add WritePartAfterJob directive in Job resource (Director)
- - Add WritePartAfterJob directive in Schedule Resource (Director)
- - Implement these new directives
-02Jan05
- - New function, open_guess_name_dev in src/stored/dev.c, which tries to guess the volume
-   name of a mounted device, so the label can be read.  
- - New script, scripts/dvd-writepart, which write parts to DVD+/-R(W).
- - Removed WriteFirstPartCommand directive in Device (SD configuration file).
- - Use readdir_r instead of readdir (src/stored/dev.c:open_guess_name_dev).
-01Jan05
- - Add RequiresMount, MountPoint, MountCommand, UnmountCommand directives in Device (SD configuration file).
- - Implement these directives (volumes can now be restored from a manually written DVD). 
- - Add WriteFirstPartCommand, WritePartCommand directives in Device (SD configuration file).
- - Implement these directives (DVD writing now works).
- - New function run_program_full_output in src/lib/bpipe.c.
- - Lots of bugfixes and cleanups in the new code.
-29Dec04
- - Add VolParts field in Media table
- - Add MaximumPartSize directive in Device (SD configuration file)
- - File Volumes can now be splitted in multiple files ("parts")
- - Fix SQL error in sql_list while doing "llist jobmedia"
-
-Changes to 1.37.30 released 16 July 2005:
-14Jul05
-- Fix "dir" command scanning field misalignment in
-  wx-console.
-- Switch to using the wxWidgets Unicode library.
-- Include msvcr71.dll in distribution.
-- Add VSS to status line in Win32 FD if enabled.
-- Get VSS build scripts working with Thorsten's help.
-- Unlink the bootstrap file after sending it to
-  the FD.
-- Remove sending include/exclude lists to the FD during
-  a restore -- deprecated code.
-- Cleanup the bootstrap files in the FD.
-
-Changes to 1.37.29:
-14Jul05
-- Remove old commented out code from configure.in
-- Add baculavssfd.mak file for building VSS version of
-  Win32 FD.
-- Correct date (year) in vss.cpp and vss_generic.cpp
-13Jul05
-- I finally found and squashed the elusive SD crash.        
-  I needed to initialize the used volume list before
-  firing off the device initialization thread.
-Changes to 1.37.28:
-11Jul05
-- Make sure that bpipe results are zapped even on
-  error return.
-- Lots of documentation.
-- Do not prune volume marked as append when needing a
-  new Volume.
-- Print a warning message in SD if a non-used Volume
-  is specified and autolabel not turned on.
-- Correct a bug in chksum.c concerning SHA1 signatures 
-  (an * should have been & when checking for a bit flag).
-- Print File:Block for all label records in label.c -- concerns
-  primarily bls when doing Job listings (-j).
-- Correct is_volume_in_use() to return false if testing
-  on the same device where the Volume is already mounted.
-- Define a init_done flag in the SD that is set when the
-  devices are initialized and make users connecting wait.
-  This prevents useless connect failure warning messages.
-- Do additional device locking in ask_op_to_mount_volume()
-  to prevent race conditions with a user labeling a Volume
-  or autolabeling.
-09Jul05
-- Add a test for error return from bnet_wait... in heartbeat.c
-  in FD to avoid CPU loop.
-- Implement TLS in gnome console and wx-console.
-
-Changes to 1.37.28:
-08Jul05
-- Correct a NULL pointer reference in the mount command.
-- Correct typo in Copyright
-- Add detection of EOM for IBM drives (i.e. errno == ENOSPC)
-07Jul05
-- Remove temp file created in mtx-changer script.
-- Make fsf_dev() into a class method.
-06Jul05
-- Modify mtx-changer.in script to return slot:barcode for
-  Volumes that are loaded in the drives.
-- Correct some more places where dev->is_blocked() needs
-  to be checked in dircmd.c in SD.
-- Update doc.
-05Jul05
-- Add code to ensure that reserved but unused volumes
-  are freed. 
-- Correct how Volumes are mounted and handled so that the SD
-  does not get stuck if multiple volumes are used (recycling,
-  relabling, ...)
-- Correct bug where you could relabel a volume while it
-  was being acquired -- created chaos.
-04Jul05
-- Correct seg fault caused by open() calling sequence change.
-03Jul05
-- Add new rc-chio-changer script by Rudolf Cejka to 
-  examples/autochangers
-- Apply Rudolf's changes to bacula.in
-- Expand the space from 8 to 10 characters in editing
-  file sizes for restore and dir of catalog, otherwise
-  GB sizes are truncated -- fixes bug report.
-- Modify wx-console to know about 10 character widths.
-- Allow decending into top level directory if "recurse=no"
-  is set.  Fixes a bug report.
-- Install pthreadVCE.dll when installing console or wx-console
-  on Win32 systems. Fixes bug report.
-02Jul05
-- Tweak dvd-writepart script to prevent door from opening/closing
-  so much.
-- Remove GROUP BY in several PostgreSQL commands to prevent error.
-  Resolves bug report.
-- Ensure that < as first character of filename list is not treated
-  as a directory for restore.
-- Add debug to heartbeat in FD as it seems to go into an
-  infinite loop from time to time during SD failure in DVD writing.
-- Add more debug code to dvd writing.
-- Attempt not to destroy existing fs on DVD. 
-30Jun05
-- Detect device mounted for DVD and suppress be sure to 
-  mount message after label.
-- Set Cleaning tape status to "Cleaning" and force no
-  MediaType.
-- Get DVD writing working with new standard Bacula open()
-  code.
-- Rename get_filename() to make more sense.
-- Detect "is already mounted on" on mount command so to avoid
-  error if device is already mounted.
-- Eliminated guess_name() code. It may be necessary to
-  add it back later.
-- Eliminate seg fault from printing invalid results.
-- Make dvd_write_part() bool.
-
-29Jun05
-- Attempt to fix DVD writing by eliminating a number of the 
-  DVD subroutines to simplify.
-- Modify DEVICE::open() to take dcr as first argument. This
-  will permit providing more info to DVD opening.
-- Fix scanning for time/size items which in some cases
-  ate the next line.
-- Eliminate read_dvd_volume_label().  New code (not yet written)
-  *must* open dvd appropriately before calling 
-  read_dev_volume_label.
-- Modify open_first_part() open_next_part() to take DCR as 
-  argument.
-- Make label command from console work on DVDs.
-- Make mount command from console work on DVDs.
-  Unmount does not work yet.
-
-Changes to 1.37.27:
-27Jun05
-- Add Database vendor to CatalogRes tuple for Python.
-- Update doc
-- Implement DoesVolumeExist(Vol) for Python.
-- Prevent python command from seg faulting if no arg given.
-
-Changes to 1.37.26:
-26Jun05
-- Add set_mode method in DEVICE.
-- Correct set_mode method in DEVICE
-- Add more DVD debug info 
-23Jun05
-- Check for incorrect duration and size modifiers in conf files.
-22Jun05:
-- Make Version a tuple (version, build-date)
-- Add CatalogRes tuple (DBName, Address, User, Password,
-    Socket, Port)
-- Add Version, ConfigFile, and WorkingDir as Python attributes
-  in the Director.
-- Implement code (principally for Win32) that on failure to
-  create a file, it will cd into the directory and attempt
-  to create the file using a relative path. This avoids creating
-  files with paths which fail on Win32.
-- Fix parsing of times and sizes with decimal numbers.
-- Make free_volume_list() in SD work if vol list is not
-  initialized (./bacula-sd -t).
-21Jun05:
-- Add debug error printout when open() fails.
-- If open() of DVD fails in mount.c, return false.
-- Split open() code for DVD into separate subroutine in dev.c
-
-Changes to 1.37.25 released on 20 Jun 05:
-20Jun05:
-- Fix bug where Storage daemon gets confused about what
-  tape is mounted. (one line of code was inadvertently 
-  deleted).
-
-Changes to 1.37.24:
-18Jun05
-- DVD writing/reading seems to be mostly working.
-- Set execute bits on dvd-freespace and dvd-writepart
-- Make dvd-freespace use existing dummy file.
-- Modify dvd-freespace to pickup size from Track Size:
-16Jun05
-- Add Date, Job, level to updates to .bsr file in 
-  dird/backup.c
-- Add debug info to dvd-freespace.in
-- Fix hard coded bacula.sql in make_catalog_backup reported
-  by a user.
-- Make sure a verify volume to catalog never reports an error
-  if there are zero files to verify.
-- Remove confusing debug info in filed/backup.c on network
-  error.
-- Make sure output from console is not sent to system log.
-- Convert open_dev() into a class method.
-- Change VolHdr.VolName to VolHdr.VolumeName.
-- Add a flag in the device state word to indicate that
-  we found Media in the drive (DVD). 
-- Make mount_dev() and unmount_dev() return bool.
-
-Changes from Nicolas Boichat:
-26Apr05
- - Modify parse_config to get a LEX_ERROR_HANDLER as a parameter 
- - lex_open_file now returns NULL if the file can't be opened. All calling functions have
-   been adapted.
- - Remove set_exit_on_error function
-07Apr05
- - Fix "unknown device type" problem with DVD devices.
- - Fix crash when there is no media in the DVD drive.
-09Jan05
- - Update the documentation and ReleaseNotes.
-05Jan05
- - Add FreeSpaceCommand in Device (SD configuration file) and implement it.
- - Some modifications (again) on how guessed volume names are handled (now it should work).
- - Part files on the hard disk are removed if they are empty.
-04Jan05
- - Major fixes on how guessed volume names are handled.
- - Minor fix in src/stored/append.c.
- - Replace, when possible, POOLMEM by POOL_MEM in the new code of src/stored/dev.c.
- - New script, scripts/dvd-freespace, which gets the free space available on a writable DVD.
-03Jan05
- - Add WritePartAfterJob directive in Job resource (Director)
- - Add WritePartAfterJob directive in Schedule Resource (Director)
- - Implement these new directives
-02Jan05
- - New function, open_guess_name_dev in src/stored/dev.c, which tries to guess the volume
-   name of a mounted device, so the label can be read.  
- - New script, scripts/dvd-writepart, which write parts to DVD+/-R(W).
- - Removed WriteFirstPartCommand directive in Device (SD configuration file).
- - Use readdir_r instead of readdir (src/stored/dev.c:open_guess_name_dev).
-01Jan05
- - Add RequiresMount, MountPoint, MountCommand, UnmountCommand directives in Device (SD configuration file).
- - Implement these directives (volumes can now be restored from a manually written DVD). 
- - Add WriteFirstPartCommand, WritePartCommand directives in Device (SD configuration file).
- - Implement these directives (DVD writing now works).
- - New function run_program_full_output in src/lib/bpipe.c.
- - Lots of bugfixes and cleanups in the new code.
-29Dec04
- - Add VolParts field in Media table
- - Add MaximumPartSize directive in Device (SD configuration file)
- - File Volumes can now be splitted in multiple files ("parts")
- - Fix SQL error in sql_list while doing "llist jobmedia"
-
-Changes to 1.37.23:
-- Renamed to make unique version for open_next_part()
-  changes.
-
-Changes to 1.37.23:
-- Renamed to make unique version for open_next_part()
-  changes.
-
-Changes to 1.37.22:
-14Jun05
-- Fix the same state variable problem in open_next_part().
-- C++ify the SD code a bit more.
-13Jun05
-- Add more debug code and clarify debug code for DVDs.
-- Do not save and restore state in open_first_part() 
-  since state should be properly set after open_dev().
-- Make default mandir /usr/share/man
-- Install Bacula man page.
-- Implement passing of FileSet Enable VSS to FD.
-- Move main body of reserve drive code into subroutine
-  so that it can be called multiple times.
-12Jun05
-- Eliminate getpass() for Win32 builds in console as the
-  function does not exist.
-10Jun05
-- Correct some reservation problems in SD when no devices
-  are available.
-- Start removing #ifdef HAVE_TLS by sneaky tricks.
-- Begin implementation of TLS in wx-console
-- Remove ignoring SIGCHLD from console.
-- Rework the dlist binary search routines for implemenation
-  of the Volume reservation code -- make it more general.
-- Strip double slashes // from Win32 filenames in an attempt
-  to resolve restore problems on some systems.
-- Fix a minor bugs in the trace code that caused the first
-  line output to be lost.
-- Implement a good first cut at adding Volume reservation code
-  to the storage daemon (in file reserve.c).
-- Remove old unused code from the tree.c routines.
-
-Changes to 1.37.21:
-06Jun05
-- Fix compile problems on Win32
-- Start writing Volume reservation list (already exists, but
-  is not really very good).
-- Implement attribute caching to put Signature into database     
-  at the same time as the file attributes thus eliminating a
-  number of database accesses.
-- Correct a reservation problem.
-- Implement full Dir Storage use.
-- Reduce a bit of TLS #ifdeffing.
-
-Changes to 1.37.20:
-04Jun05
-- Minor changes
-01Jun05
-- Add more documentation to mtx-changer.in
-- Correct link to manual in authenticate.c in various
-  directories.
-- Create a new src/stored/reserve.c file where the 
-  Use Storage command is processed and drives are
-  reserved.
-- Modify src/stored/autochanger.c to keep track of each
-  Slot that is loaded for each device.
-- Ensure that changer_command and changer_name are picked
-  up from Autochanger resource if not specified, and if
-  neither is specified, err.
-30May05
-- Fix bextract.c compile problem
-- Create bacula.man 
-- Make make distclean clean a bit better
-29May05
-- Remove old code in jcr.c
-- Make testls release jcr chain when terminating.
-27May05
-- Implement Maximum Job Spool Size (actually DCR based)
-26May05
-- Use light weight non-recursive locking on jcr chain.
-- Make JCR a class and implement inc_use_count() and
-  dec_use_count() methods that ensure that the jcr is
-  locked when inc/dec the use count.
-- Remove the global jcr lock when traversing the jcr
-  chain.   
-- Use dlist to implement the jcr chain rather than hand
-  crafted next and prev links.
-- Lock the jcr chain inside each function that modifies
-  the chain.
-
-Changes to 1.37.19:
-26May05
-- Fix compile problem of ua_restore.c on broken compilers.
-- Apply patch from bug 326 to permit bacula status by any user.
-- Fix bug 325 -- conversion of 12:30pm to 24hour time.
-25May05
-- Put Dmsg() on inside if() to avoid calling subroutine.
-- Make restore.bsr have unique name.
-- Allow user to define bsr filename on restore command line
-  with bootstrap=xxx.bsr
-- Add limit=nnn to "list jobs" command.
-- Remove old restore code that did not use .bsr file.
-- unlink automatically generated bsr file.
-- Cleanup heartbeat code so that duped fd is almost sure
-  to be released. Previously under certain conditions, the
-  memory was not released due to race conditions.
-- Shorten copyright.
-20May05
-- Unify the reserve_device() for a single device into one subroutine.
-18May05
-- Modify wait during use_device to happen only after all devices
-  have been examined rather than in the reserve_device code.  
-- Correct updating count of number of Volumes in a pool.
-
-Changes to 1.37.18:
-16May05
-- Add more debug to SD for Autochangers + status output.
-- Add Scratch to PoolType in PostgreSQL make...tables and do not
-  permit NULL PoolTypes. Fix for bug 319 reported by Eric.
-- Update LICENSE.
-- Add quotes around filename in parse_config error message. Bug
-  reported by Eric.
-15May05
-- Change nested \include to \input so that sections are properly
-  included in the pdf manual -- update the Web site.
-- Set reconnect flag in MySQL packet to 1 to ensure that connection
-  is re-established.  MySQL 5 changed default to 0. Fixes bug report.
-- Fix Scratch pool handling as reported in a bug by Eric Bollengier
-  by applying his patch.
-- Remove delete job in favor of delete jobid.
-- Add = NULL to configfile definitions as reported by Eric in a bug
-  report.
-- Update winbacula.nsi.in to reflect new manual file structure.
-10May05
-- Correct a minor build problem with wx-console.
-- Add cancel() to Dir Python scripting.
-- Re-correct bug in parse-config error handling.
-- Reorganization of use_command in SD to permit
-  waiting and multiple drive autochanger support.
-09May05
-- Correct bug in parse_config error handling.
-- Where ever possible mark a volume in error or not   
-  InChanger in mount.c
-- Fix bug in changing tape pools after first backup. Reported
-  by Peter Sjoberg.
-- Enhance mtx-changer to use Working Directory as temp.
-- Remove all but initial setup locking of Res in SD.
-08May05
-- Add Client OS type to Job report.
-- Add version to manual 
-- Update the Web site to have a single page for
-  the documentation links.
-
-Changes to 1.37.18 release 08May05:
-08May05
-- Correct attribute definition compile error in 1.37.17
-- Correct inverted order of CreateTime and MD5 pointed out
-  by a user in a bug report in FileSet db routine causing
-  the MD5 to print in the output instead of the time/date.
-
-Changes to 1.37.17:
-07May05
-- Implement cstrlen() in sql list routines.
-- Implement caching of attributes to add the        
-  signature so that only one DB call will be made
-  per file. Not yet turned on.
-- Fix Win32 build for TLS.
-- Optimize File pruning to eliminate one database call. 
-- Fix bug that prevented File pruning from working.
-- Implement a cstrlen() which returns the character
-  length of a UTF-8 string.
-06May05
-- Move test for MaxStartDelay as suggested by Peter.
-- Implement Python methods (I had to read the Python source
-  code).
-- Implement run() method in Director.
-- Add Priority and Scheduled time to Job report.
-- Add JobInit and JobRun events.
-- Add Priority as Python read/write attribute to Job.
-- Correct typo in bsmtp reported by Jo.
-
-Changes to 1.37.16 (07May05): released 07May05
-07May05
-- Implement cstrlen() in sql list routines.
-- Implement caching of attributes to add the        
-  signature so that only one DB call will be made
-  per file. Not yet turned on.
-- Fix Win32 build for TLS.
-- Optimize File pruning to eliminate one database call. 
-- Fix bug that prevented File pruning from working.
-- Implement a cstrlen() which returns the character
-  length of a UTF-8 string.
-06May05
-- Move test for MaxStartDelay as suggested by Peter.
-- Implement Python methods (I had to read the Python source
-  code).
-- Implement run() method in Director.
-- Add Priority and Scheduled time to Job report.
-- Add JobInit and JobRun events.
-- Add Priority as Python read/write attribute to Job.
-- Correct typo in bsmtp reported by Jo.
-
-Changes to 1.37.16 (03May05): released 05May05
-03May05
-- Make a few tls ifdef tweaks.
-- Fix create_file.c Win32 problem pointed out by
-  Peter Sjoberg.
-- Fix really ugly bstrncpy() but found by Thorsten.
-- Move winapi.h/c from findlib to lib for inclusion in 
-  multiple places.
-02May05
-- Thorsten Engel finished his work on Win32 Unicode. We
-  now have a single executable that runs on all Win32 machines.
-- Move job initialization code after job scheduling so that
-  Verify jobs check for the prior JobId after they are really
-  started rather than before.
-- Fix lib/fnmatch.c so that it does proper testing before folding.
-- More documentation -- at tls and ansi labels chapters.
-- Fix fileset_convert.pl to handle empty Exclude statements.
-- Turn regex back off in Win32
-01May05
-- Fix sign extension problem in lex.c that reads UTF-8 
-  with Chinese characters incorrectly.
-
-Changes to 1.37.14:
-30Apr05
-- Remove a few HAVE_TLS #ifdefs
-- Implement final Python style interface. More implemention to
-  be done, but the interface should change little if at all.
-28Apr05
-- Make default no tls support. You must add 
-  --with-openssl to get tls support.
-27Apr05
-- Update Web header to include google search in the search
-  box -- thanks to input from Michel Meyers.
-- Fix md5sum so that it builds with the new openssl stuff.
-- Take some enhancements to the md5sum test program proposed
-  by a user.
-26Apr05
-- Apply Tru64 patch supplied by Pascal Pederiva <freebsd@paped.com>
-- Apply Unicode fixes for Win32 from "Thorsten Engel" 
-  <thorsten.engel@matrix-computer.com>
-- More work on Python read feature in FD.
-22Apr05
-- Fix (hopefully) the ftello() overflow reported by Peter.
-- Landon Fuller committed his TLS patch.
-- Fixed two minor warnings in console.c with TLS turned off.
-- Updated the Makefile.in for wx-windows and tray-monitor
-  to handle TLS. I can only build the tray-monitor.
-- Fix bscan to open tape in read-only mode (actually fix
-  it so that it doesn't use the standard open routine).
-- Correct what appears to be an error in setting the
-  return value in dvd.c
-21Apr05
-- Get FD Python running -- design Python backup interface.
-- Fix seg fault in SD when referencing Alert Command.
-- More documentation.
-- Fix one more thing in Win32 build.
-20Apr05
-- Doc updates
-- Fix Win32 build
-- Put in production here
-
-Changes to 1.37.13:
-19Apr05
-- Fix SQLite and PostgreSQL table creation script syntax
-  problems.
-- Fix new Python code to work for Director.
-- Move lib/python.c to lib/pythonlib.c so that debug output
-  is easier to read (can distinguish lib from dird, ...).
-- Cleanup Python build so that Python is not dragged
-  into programs that don't use it.
-
-Changes to 1.37.12:
-02Apr05
-- Reset NumVols in Pool record from database on every update
-  Pool.
-- Modify DB to support multiple simultaneous copies and
-  RAIT stiping.
-- Pass copy and stripe between DIR and SD and put into
-  the JobMedia DB record.
-- Update and test SQLite and MySQL datebase creation and
-  update scripts.
-- Implement version 9 of the DB.
-31Mar05
-- Convert more atoi to str_to_int64() for DB.
-- Implement filling in NumVols by querying DB rather
-  than trying to keep track of it.
-- Add storage name to string passed to in use storage=
-- Fix newVolume() so that the Python script is always
-  called.
-- Fix handling of pool,PoolId, and storage in ua_output.
-- Same fix in ua_status.c
-- Remove required locking of resources
-- Replace pthread_cond_signal() by pthread_cond_broadcast()
-  hoping to fix the /lib/tls hang problems (lost signal).
-- Move resource locking seaching from parse_conf.c to res.c
-  in src/lib.
-- Modify end of volume handling so that fixup_... does not
-  redo what block.c has already done -- writing Vol info to
-  DIR. This fixes a bug with bad numbers of files on a tape
-  when it filled as reported by Peter.
-- In release_device() do not update the DIR on the Volume
-  info if the the information was already written at the
-  end of the tape.
-28Mar05
-- NOTE!!!! This version has a new DIR <--> SD protocol. Both 
-  must be updated at the same time.
-- Begin implementation of passing all the Storage and Device
-  possibilities to the SD for examination during the reserve 
-  phase.
-- Modify the reserve and acquire code in the SD to make a 
-  job wait if the device is not available.
-- Implement New Volume Each Job in DIR and pass to SD, not yet
-  used.
-- Remove init/update of the Device resource in DIR
-- Remove passing PoolId to SD and back.
-26Mar05
-- Remove \a and -e from error echos in most Makefiles.
-- Add more debug code when there are errors on the tape 
-  to try to find Peter's tape problem.
-- Add wait.c (oops forgot previously).
-- Move all the reserve/acquire_device_for_read/append to have
-  only a DCR as the argument.
-- Rework the reserve_device_for_append() in stored to wait
-  if the drive is not available.  Note! This is a short
-  term solution.
-25Mar05
-- Comment out Multiple Connections in the document.
-- Move the P() and V() to subroutines so that they can be accessed
-  from class methods. The reference to strerror() caused problems.
-- Implement new DEVICE class methods block() and unblock() that
-  do what was previously done in 3 lines of code.
-- Implement wait_for_device(), which will wait for any device
-  to be released then return. This requires a new global mutex
-  and condition variable, and is implemented in src/stored/wait.c
-- Change the code in reserve_device_for_read(), which previously
-  failed the job to use the new device wait code.
-22Mar05
-- Apply reschedule patch to 1.37 code.
-- Add copyright to title page of manual so it is clear.
-- Create patch for rescheduling problem found by Ludovic. Storage
-  pointers were lost during rescheduling.
-- Attempt to fix 2.6 rescue disk -- failed!
-- Start working on adding a wait routine in the SD.
-- Cleanup some old invalid doc in watchdog.
-- Convert a number of references to dev->dev_name to dev->print_name().
-- Add new wait.c file to SD.
-- Add a few more methods to DEVICE in SD to cleanup code a
-  bit -- implement a few of the methods.
-18Mar05
-- Fix more print_name()s for printing device name.
-- Modify open_dev to try 10 times every 6 seconds to
-  open the device if it gets an I/O error (meaning no
-  volume mounted). This gives a bit of settling in time
-  for an autochanger and avoids spurious messages.
-- Change all yes/no to yes|no in the manual.
-- Fix win32 create_file.c typo.
-- Fix a typo in an error message.
-17Mar05
-- Detect if fseeko exists with autoconf. If so, use it 
-  and ftello.
-- Remove old bacula-*.conf from examples directory (out
-  of date).
-- Remove latex-fr index files from CVS.
-- Rewrite code that stops reading the tape so that the
-  tape is marked at EOT, then once the work is done,
-  the EOT flag is removed.
-- Flush output to file after every send in console.
-- Make setting VolFiles to smaller number fatal.
-- Disable Multiple Connections code.
-- Add patch from user for NetBSD statvsfs() fix to
-  fstype.c
-- Take more care with errors in acquire.c
-- Don't run through dvd code in append.c if bad status
-  returned.
-- Modify code so that an autochanger fault is fatal.
-- Use dev->print_name() in more places.
-- Implement dev->can_steal_lock() to simplify code.
-- Make btape re-read first 10000 records on fill command.
-- Check error return and fail job from fseeko and ftello
-  in spool.c.  Don't let a -1 slip in as size.
-
-Changes to 1.37.7:
-15Mar05
-- Apply NetBSD patch from kardel in bug 258.
-14Mar05
-- Add a second job and a second client to the default
-  bacula-dir.conf file.
-- Remove old style Include/Excludes.
-- Fix ANSI labels to put EOF1 and EOF2 after each file mark.
-- Add Python to SD and FD.
-12Mar05
-- Implement IBM labels
-- Implement EOF and EOV labels at the end of a volume.
-- Fix a rather ugly problem with the PoolId not getting
-  passed correctly. Now the DIR passes the Pool name and
-  Media Type to the SD, who passes them back when requesting
-  the next Volume. The DIR then looks up the correct PoolId.
-  This takes more time, but always works, AND allows wild
-  card Media Types (i.e. the SD can decide).
-- The DIR <==> SD protocol has changed.
-
-Changes to 1.37.6:
-11Mar05
-- Fix scanf of PoolId in catreq to handle 64 bit Ids.
-10Mar05
-- Add new ua_update.c file and move update_cmd there.
-- Modify "update slots" to obtain actual number of slots.
-- Tweak autochanger code to handle new slots request.
-- Modify autochanger code to lock/unlock around slots and
-  update slots code.
-09Mar05
-- Patch the FD so that it does not issue an error message if
-  it attempts to restore the permissions on a Win32 drive.
-- Edit "Resource-name" (physical-name) for the device name
-  everywhere in the SD.
-- Remove .linked.tex files in preparation for cutover to
-  using .tex in place of .wml.
-08Mar05
-- Copy latest config.sub and config.guess from autoconf.
-- Try new way of identifying drives with:
-   "resource-name" (physical-name)
-  More work need to a complete conversion.
-07Mar05
-- Rework some of the autochanger data so that the DIR has   
-  the number of drives.
-- Modify the way the Device info is returned so that it comes
-  back as a special message type and can be sent anytime the
-  Device status changes.
-- Copy the change name and changer command into the device
-  record if none is specified.
-- Require the change command and changer name to be specified in
-  and AutoChanger resource.
-- Force all the Media Type records of all devices in an Autochanger
-  to be the same.
-06Mar05
-- Add new "run" command to Job resource in DIR. This permits
-  cloning a job as many times as you want.
-- Pass PoolId to SD on Query request. It is now used in the
-  Find_media catalog request.
-- Reworked the Device resource in the DIR. Eliminated num_waiting
-  and use_count, but added max_writers, reserved, and PoolId.
-- This DIR is nolonger compatible with previous SDs.
-- Add since and cloned keywords to the Console run command
-  to support cloning.
-- Implemented store_alist_str() to allow multiple string items
-  to be specified in a .conf file.
-- Added %s (since time) to Job code editing.
-- Reworked reserving drives in the SD. It now does it much simpler
-  and correctly. 
-05Mar05
-- Integrate HP-UX patch from  Olivier Mehani <olivier.mehani@linbox.com>
-- Fix FD job.c to test correctly for no level.
-
-Changes to 1.37.4:
-04Mar05
-- Change Developers to Developer's Guide as requested by Michael.
-- Fix developers link in manual
-- Add additional dcr changes in SD to allow multiple dcrs.
-02Mar05
-- Fix a few problems with the MySQL table create in 1.37.
-- Delete the new tables in the table delete files.
-- Increase the number of items permitted in a conf table.
-- Make Director loop over alternative Devices specified in the
-  Storage resource until one is reserved by SD.
-- Fix storing of StorageId in Media records.
-- Add AutoSelect = yes|no in bacula-sd.conf
-- Add Autochanger support to Label command.
-- Do not autoselect devices with autoselect set false 
-01Mar05
-- Implement setting DIR Storage device to Autochanger
-  name. 
-- Select first available device in Autochanger.
-- Pass back actual device name used.
-- Allow Query of AutoChanger.
-- Modify Query to include name of AutoChanger if 
-  Device belongs to one.
-- Remove old Pool code in jobq.c
-- Add Autoselect flag to query and DEVICE class (still
-  need Directive).
-28Feb05
-- Lock autochanger script when running.
-- Mark Volume not InChanger if correct volume is not     
-  autoloaded.
-- Corrected some typos in the make_xxx_tables.in files.
-- Made preliminary split of pre-run and run code for each
-  job type. This will permit early opening of SD for reserving
-  drives.
-- Add offline and autochanger fields to Device Query record.
-- Correct pthread_mutex_init() for autochanger in SD.
-- Tweak Makefile for LaTeX manual, plus add nav buttons.
-26Feb05
-- Clean up drive reservation system. Add more sanity checks.
-- Implement a few more methods for the DEVICE class in SD.
-- Add latex directories to make clean
-- move DEV_BSIZE to B_DEV_BSIZE to avoid conflicts with
-  certain header files (FreeBSD).
-24Feb05
-- Fix an ASSERT that was triggering in stored/acquire.c
-  attempt to fix a bug report.
-23Feb05
-- Corrected SunOs to SunOS in btraceback (user submitted).
-- Applied patch from Roger HÃ¥kansson <hson@ludd.luth.se>
-  to warn the user of defective AWKs during ./configure.
-20Feb05
-- Add some changes submitted by a user for HP client build.
-  Not all changes accepted.
-- Rework code in filed/backup.c to ease #ifdefing and make
-  program flow more obvious.
-- Split DVD code out of dev.c into dvd.c
-- Tweak #ifdefing to add back all the performance measurement
-  #defines in version.h
-- Put most of MTIOCGET code in a subroutine to simplify the
-  mainline code.
-- Make clean remove old CVS files
-- Remove unnecessary image files from Latex directory
-- Implement remaining parts of Storage DB record and
-  its use in the Director.
-- Implement
-  FullMaxWaitTime, Differential Max Wait Time, and               
-  Incremental Max Wait time in Job resource.
-- Start work on SD Autochanger code.
-19Feb05
-- Add back JobId index for MySQL as default -- speeds up 
-  pruning.
-- Add more database fields and fix the update scripts to
-  include the new items.
-- Pass actual level to FD so that ClientRun editing can reflect
-  correct level -- ditto for job status. This makes the DIR
-  incompatible with older clients!
-- Move jobq.c acquire resources to static subroutine so that
-  the code logic becomes clearer. This is in preparation for
-  actually using the new Device resources.
-- Fix some lower case problems in sql_cmds.c reported by
-  Debian.
-- Correct a seg fault in the SD reported by a user. Occurred
-  only when a high debug level was set.
-- Modify init_dev() in dev.c to take JCR as first arg so that
-  proper error messages can be reported in next item.
-- Modify the query and use device SD commands to attempt to
-  open the device if it could not previously be opened.
-- Correct error message for Could not reserve device.
-- Correct some minor details with Autochanger resource in SD.
-18Feb05
-- Fix seg fault if debug level 900 set in SD.
-- Truncate Win32 child return code to 8 bits.
-- Remove some old lld's.
-
-Changes to 1.37.3:
-16Feb05
-- Make another attempt at fixing the ClientRunXXX return code 
-  bug on Win32 machines.
-- Apply ua_status patch from Carsten Paeth <calle@calle.in-berlin.de>
-  which enforces console ACLs in the status command for Jobs.
-15Feb05
-- Fix Media LabelDate and FirstWritten to be correctly set.
-- Fix deadlock in multiple simultaneous jobs.
-- Fix tape "truncation"/"number of files" after restore bug.
-10Feb05
-- Ensure that correct error messages are returned when
-  reading an ANSI label.
-09Feb05
-- Modified ANSI label code to preserve any ANSI label 
-  already found by skipping over it rather than rewriting
-  it.
-- Split the ANSI label code into ansi_label.c
-- Do not let user relabel an ANSI labeled tape.
-- Applied a patch for the console help command supplied
-  in a bug report. 
-- Added some new dev methods. Most notably was
-  set_eof(), which handles setting all the dev variables
-  when an EOF is just read. This is now used most everywhere
-  in the code.
-07Feb05
-- Added code to detect that no files were inserted into the 
-  tree for a restore. If a specific JobId was specified, the
-  user has the option of restoring everything.
-- More progress in implementing 64 bit DB Ids.
-- Modified the daemon start messages for RH.
-- Implement update scripts for all database types.
-- First cut at implementing restore directory (it will not
-  recurse).
-04Feb05
-- OK, I think ANSI labels work.
-- Added Label Type = ANSI|IBM|Bacula to Device resource in SD.
-  If this is set, it will force writing of the appropriate
-  label type.
-- Added Check Labels = yes|no to Device resource in SD. If this
-  is set, Bacula will check for ANSI labels and accept them,      
-  otherwise, ANSI labels will not be accepted when the tape
-  is first mounted.
-02Feb05
-- Second cut ANSI labels.
-01Feb05
-- Merge Preben's patch for ACLs and for Mac OS X resource forks.
-- Some doc updates.
-- Display more informative message when a device was not
-  found or could not be opened.
-- Add the sqlite3 database scripts. 
-- Add some patches for 1.36.1 (note, I have now prepared
-  a 1.36.2 with all the patches and some new features --
-  to be documented).
-- Some minor doc updates.
-- Add Arno's baculareport.pl script to the examples directory.
-29Jan05 -- after vacation
-- Add support for SQLite3 (it seems to run at 1/2 the speed
-  of SQLite2).  Use --with-sqlite3 instead of --with-sqlite
-  to get SQLite3.
-- Add target for running qemu to boot Rescue CDROM
-- Add code to support kernel 2.6 in Rescue CDROM -- does NOT yet
-  boot correctly.
-- Implement ANSI labels -- not yet tested.
-  This required changes to DB format. No upgrade script yet.
-  Note, more work needed to modify "update" command to handle
-  changing label types, also must restrict volume name lengths
-  to 6 characters.
-- Add new Device, Storage, and MediaType records to DB. No
-  upgrade script yet.
-- Add MediaType to bsr file record types. Not yet used in SD.
-- Permit multiple device specifications in Storage resource in 
-  Dir conf file.
-- Implement Device resources. Director requests Device resource
-  info from SD on startup. 
-- Note!!!! DIR->SD incompatible with previous versions.
-- Remove multiple Storage definitions in Job resource.  One can
-  still specify multiple Storage resources, but they all go into
-  a single alist, and imply sending data to each Storage daemon 
-  simultaneously.
-- Implement Device query command between DIR and SD.
-- Allow DIR to "reserve" a Device. It will then be acquired
-  when the FD connects to the SD.
-- Turn all DIR resources into classes, and implement a few class
-  methods -- more to come.
-- Turn DEVICE in SD into a class, and implement a number of inline
-  class methods -- more to come.
-- I had serious problems with ACL errors on my Laptop, and so had
-  to add the following patch:
-  @@ -181,7 +181,7 @@
-      }
-      /***** Do we really want to silently ignore errors from acl_get_file
-        and acl_to_text?  *****/
-  -   return -1;
-  +   return 0;
-   }
-- Added edit_int64()
-- Reworked and tested a bit the htable routines.
-- Major changes to SD acquire.c -- DIR can now reserve devices. Needs
-  lots of testing!!!!
-- Made a special state code for DVD -- this simplifies the logic
-  of the code, but I probably broke it. Testing needed!!!!
-- Add AutoChanger resource to SD, but not yet used.
-
-Changes to 1.37.2:
-12Jan05
-- Integrate Preben 'Peppe' Guldberg <peppe@wielders.org>'s
-  acl patch. Fix case where configured but no ACL exists.
-  Rework calling arguments to be shorter and positioned
-  more typically in Bacula usage.
-11Jan05
-- Fix scripts/bacula.in to have awk on an environment variable
-  and add comments for Solaris users.
-- Turn off inet_aton in src/lib/address_conf.c for Win32
-- Add new files to win32 build and eliminate a compiler warning.
-- Add sample DVD Device resource to bacula-sd.conf
-08Jan05
-- Integrate Nicolas' patch for direct DVD support.        
-07Jan05
-- Fix fstype error returns.
-- Apply Preben's cleanup.patch which puts back much of the
-  cleanup code in src/filed/restore.c
-06Jan05
-- Apply all of Preben's patches, but revert to old backup.c
-  and old restore.c in filed. Also turn off code in new
-  acl.c because of errors.  The new code, when fully implemented
-  moves platform specific code into acl.c.
-  One of the patches also implements WildFile and WildDir -- thanks.
-01Jan05
-- Implement Python in the SD (no events yet though).
-- Fix some typos in the previous commit.
-30Dec04
-- Enhance CDROM boot to include some documentation at boot time.
-- NOTE!!!!! The CDROM will not boot 2.6 kernels because the
-    boot sequence has changed significantly. Updates to come
-    later.
-- Add memtest option to CDROM boot.
-- Include Nicolas' changes to fix llist JobMedia records.
-- Make sure that ClientRunBefore/After messages from the program
-  are terminated with a newline. Add strerror to output error
-  messages.
-- Return program exit status code in Win32.
-29Dec04
-- Add memtest86 to Bacula Rescue disk
-- Enhance Rescue disk startup screen
-24Dec04
-- Move some variables to eliminate Solaris 2.6 compiler warnings.
-- Fix the seg fault at the end of a job in the FD when using
-  old style include/excludes.
-22Dec04
-- Apply Preben's ACL patch.
-- Integrate Preben's restore patch.
-- Integrate Preben's verify teaks.
-- Fix doc/latex/Makefile to copy/remove .eps files when building
-  html and web outputs.
-21Dec04
-- Fix Bacula so that it does not exit if there is a syntax error
-  in its conf file during a reload command. Bug 182.
-- Apply fixes suggested for old Solaris networking.
-  Fixes bug 190.
-- Apply Preben 'Peppe' Guldberg <peppe@wielders.org>
-  three patches that clean up white space:
-  ws.patch.02.strings:
-    Breaks strings that span lines into concatenated strings. I am not sure
-    if you like this one. Other code works with concatenated strings, though.
-  ws.patch.03.trailing:
-    This removes trailing whitespace. No changes resulted from this for
-    my setup.
-  ws.patch.04.leading:
-    This replaces space runs at the start of line with tabs. No changes
-    again.
-- Fix overriding storage specification to be done
-  through a subroutine.
-- Fix autoconf so it runs with FC3. 
-- Add Python4.3 to configure search paths.
-- Always copy and delete storage definitions into jcr.
-- Check that VolumeName supplied by Python is valid. 
-  Return 0 if not.
-19Dec04
-- Fix undefined in non-Python build.
-- Update rescue disk to include mkinitrd
-- Fix umount_drives in rescue disk (only one arg to umount)
-- Ensure that if SD is manually set in Console, it is used.
-- Put generate_event on pointer and plug it in init. This
-  permits using it in /lib
-- Correct despooling size reported to be Job specific rather
-  than for the whole drive.
-18Dec04
-- Fix bug 207. jcr use count off by one when manually
-  scheduling jobs.
-- Remove FNMATCH test in configure.in and always use
-  the one in our library to get the FN_CASEFOLD GNU
-  extensions on all platforms.
-- While using the rescue CDROM after my computer would not
-  boot, I realized that it would be very useful to have
-  a umount_disks. So, it is not implemented, along with
-  updates to the READMEs and some minor tweaks.
-- Moved mounting the CDROM in the rescue boot from /cdrom
-  to /mnt/cdrom (more standard location).
-- Reboot in CDROM rescue should now work -- requires -d
-  option (no write) to work.
-- Hopefully fixed all the IPV6/4 problems and buffer
-  problems with networking in lib. Bugs 190 and 204.
-  Cleaned up a lot of #ifdefing problems by using routines
-  in address_conf.c
-17Dec04
-- Apply Preben 'Peppe' Guldberg <peppe@wielders.org>
-  alist fix patch.
-- Remove duplicate code from chksum.h (mentioned by Preben).
-13Dec04
-- Integrate Tim Oberfoell <oberfoell@web.de> patch to ACLs
-  to handle both the "standard" and "default" ACLs.
-12Dec04
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  three cleanup patches (btest, verify, find).
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  three cleanup patches (backup, chksum, and verify)
-09Dec04
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  patch to avoid doing MTIOCGET on OSes that do not support
-  it such as OpenBSD.
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  patch to add filesystem type matching to FileSets in the
-  Options resource.
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  patch to add Mac OSX resource fork support (save/restore)
-  to Bacula -- HFS Plus support.
-- Add FileSet to client Job listing query.
-06Dec04
-- Integrated Preben 'Peppe' Guldberg <peppe@wielders.org>
-  patch to backup directories skipped (due to no file system
-  changes or no recursion), and to add a slash to the end
-  of the directory name during the match process.
-- Implement Jamie ffolliott <jamieff@inline.net>
-  patch to dird_conf.c that enables Multiple Connections and
-  fixes a typo in show. The rest of his patch awaits my suggested
-  changes.
-05Dec04 
-- Implement run command in Python
-04Dec04 
-- Implement conversion of the manual, and some minor
-  tweaks to the script tags.
-- Apply a patch supplied by Preben 'Peppe' Guldberg that implements
-  ignore case in wild cards and regexes.
-- Fix a truncated line in the above patch due to my cut and paste.
-03Dec04
-- Fix it so that the InChanger flag is only changed for Volumes
-  in the same Pool.
-- Add PIDOF configuration path and apply to bacula.in
-- Add user supplied patch to add inet_aton() of old Solaris
-  systems.
-- Require pools to match before allowing multiple simultaneous
-  accesses to same storage resource.
-- Add patch supplied by Martin to correct buffer overrun in
-  bsnprintf() with no library snprintf().
-02Dec04
-- Apply user supplied patch that implements No Hard Links.
-- Document Python interface
-- Add hardlink keyword patch supplied by David R Bosso <dbosso@lsit.ucsb.edu>
-01Dec04
-- Fix non-python prototypes in dummy routines.
-- Add python 2.3 to config search list (user submitted patch)
-- Add JobStatus to Python variables.
-28Nov04
-- Add "python restart" command in Console.
-- Make built-in variables table driven.
-- First cut of Python Events for Bacula. Director only.
-  StartJob, EndJob, NewVolume events.
-
-Version 1.36.1 released 26Nov04:
-24Nov04
-- Take Dan's fix to the fix_postgresql_tables (thanks Dan)
-- Increase Maximum Concurrent Jobs to 20 in SD and FD!
-- Fix improper handling of autochanger Volumes that are not
-  marked InChanger.
-22Nov04
-- Update authentication failure message to indicate possible
-  problem with Maximum Concurrent Jobs. Add to doc too.
-- Commit PostgreSQL BIGINT fix -- apparently some people didn't
-  get it.
-- Do not use a slot unless it is InChanger in the autochanger
-  code, otherwise autochanger gets upset not finding the Volume.
-21Nov04
-- Make authentication timeout compile time configurable.
-  The value is set in src/baconfig.h
-- Fix removing items from watchdog queue, which apparently
-  screwed up if there was more than one item.
-- Rework mediaformat part of manual to separate out old
-  tape format for easier reading.
-- Add a lot of debug code to the authentication code.
-- Add seconds to the start/end times printed in the job report.
-19Nov04
-- Fix mutex deadlock in dequeue of messages.
-- Add debug code to FD authorization.
-18Nov04
-- Increase authentication timeouts to 10 minutes.  
-15Nov04
-- Fix cancel bug in FD on /lib/tls with zero pid in 
-  pthread_kill.
-- Add date/time to all messages.
-- Make Qmsg use time message was queued rather than time
-  printed.
-- Indent job output two spaces.
-13Nov04
-- Fix web page links for new manual.
-- Grant postgresql permission to cdimages.
-- Correct crash after "list nextvol" "list media" bug 160
-12Nov04
-- Fix scripts/Makefile.in missing ;\  -- thanks Martin
-- A bit of work on btape to keep if from going into infinite
-  loops when things do not work well, and to print a bit
-  better info.
-11Nov04
-- JobDefs Storage resource completely overrode anything
-  specified in Job resource -- bug 159 -- fixed.
-- Fix syntax of renaming postgresql per Dan.
-- Add working_directory to be /tmp for wx_console.
-10Nov04
-- Allow both a JobId and a filename or list of files to be
-  specified on a restore command line.
-- Save old mtx-changer before installing new one: bug 156
-- Fix errors in CDROM file pointed out by Scott.
-09Nov04
-- Fix exepath when Bacula executed without path.
-- Move test for socket libraries for Solaris in configure.in
-  before tcp wrapper tests so that linking works.
-- Add "make copy-static-fd" to makefile in CDROM file to
-  copy existing static fd to CDROM rather than building it.
-08Nov04
-- More doc updates
-- Fix ps command for OpenBSD
-- Rework the creation of indexes for SQL -- fall back
-  to the old code, but document what can be added.
-06Nov04
-- Add new Daemon message handler in default DIR conf.
-05Nov04
-- Fix Seg Fault with -D100 in bpipe.c.    
-- Fix Seg Fault in run specifying a JobId.
-- Make mail from daemon with a Messages Resource use
-  the MailCommand with editing rather than the default
-  sendmail.
-- Replace Jmsg in dispatch_message() with Qmsg.
-- Make edit_job_codes handle NULL jcr.
-04Nov04
-- Add M_ALERT class and put tape alerts into it.
-- Fix Verify count vs found by not double counting files
-  that are split across files/Volumes.
-30Oct04
-- Fix count returned from write_bsr_file() to handle multiple
-  volumes. This fixes most cases of the Verify VolumeToCatalog.
-- Cleanup a bit the make clean for the rescue cdrom and remove
-  unneeded files from the CVS.
-28Oct04
-- Fixed acquiring a tape so that it does not block all acquires
-  when operator intervention is needed.
-- Platform build script updates from Scott
-- Doc updates
-- Add patch to force Linux LD_ASSUME_KERNEL to avoid using the
-  new /lib/tls. This is done in the startup scripts.
-- Modify mtx-changer so that it checks for ONLINE while
-  waiting.
-- Modify make_postgresql_tables.in so that EndBlock is stored
-  as a bigint. Prevents job failures when a disk volume is
-  larger than 2GB.
-24Oct04
-- Add grep ONLINE to wait_for_drive() in mtx-changer.in
-- More doc.
-- Rebuild Scott's new configure
-
-Version 1.36.0 released 21Oct04:
-Changes to 1.35.9:
-19Oct04
-- Modify install of make_catalog_backup and delete_catalog_backup so
-  that it will not overwrite any existing file.
-- Additional documentation.
-- Modified detection of largefiles to always set all flags regardless
-  of the machine.
-- Modify autostart scripts to start Bacula late in the process and
-  terminate it early.
-- Drop CDImages table in drop database tables scripts.
-- Alter casting of (void *) in gnome2-console/restore.c to pass
-  by a (long int) so that it works with 64 bit machines.
-- Add more debug to heartbeat.c in FD for problem of dropped connections.
-18Oct04
-- Adjust priorities for starting/stopping daemons to be
-  started late and stopped early as suggested by Marc Williams.
-18Oct04
-- Adjust priorities for starting/stopping daemons to be
-  started late and stopped early as suggested by Marc Williams.
-18Oct04
-- Fix crash on exit with -t option in FD on 2.6 kernels -- 
-  uninitialized thread id variable.
-- Add additional SD and FD debug info to detect network hang.
-- Fix bnet_strerror() routine not to return stack pointer.
-- Put latest update routines in updatedb.
-16Oct04
-- Fix error during restore error reported by Christopher Hull when
-  no tape in the drive (open fails).
-- Add more precise error reporting to FD when a network error
-  occurs.
-15Oct04
-- Fix empty files reported by Marin (zero file_size in dev.c).
-- Update all the db update scripts to include the new multiple
-  key index on File proposed by Martin, and to fix up a few
-  minor things with PostgreSQL.
-- Apply Christopher Hull's patch for getting the catalog correct
-  during a restore.
-- Created a patch for 1.34.6 (and code in 1.35) to detect passing
-  the A option to the FD, which means enable ACL processing.
-  Submitted by Ben Vitale.
-13Oct04
-- Fix syntax error in make_mysql_tables.in pointed out by Scott.
-12Oct04
-- Add a kludge to detect bad date/times, which cause a seg fault in
-  Microsoft's version of localtime_r().  So, now we know that Microsoft
-  programmers do not check return codes!
-- Minor update to web site (new projects page).
-- Remove bigint for filenameid from postgresql table -- as demonstrated
-  by Martin, it has negative performance repercussions.
-- Rework getuser() and getgroup() to avoid any possible race condition 
-  by returning the value in a buffer rather than from the cached table.
-- Add a bit more debug code to the FD status output.
-
-Changes to 1.35.8:
-09Oct04
-- Documentation.
-- Integrate Peter Ericksson's dbx traceback scripts into Bacula
-08Oct04
-- Fix segfault in lsmark command in restore tree.
-- Fix segfault in editing numbers in count command of restore tree.
-- Add missing #define for IPV6 found by Martin in address_conf.c
-- Use strcasecmp() instead of strcmp() in address_conf.c
-07Oct04
-- Fix bug where SD crashes on label if drive is not open
-  (i.e. Always Open = no).
-- Added "Rerun Failed Levels = yes/no"
-- Made calling offline_or_rewind() non-fatal if the
-  device is not open.
-- Added Martin's suggestion to have multiple level index on
-  the file table.
-- Update doc
-- Fix misspelled #define in mysql.c for threading pointed out
-  by a user. 
-- Fix incorrect prototype.
-- Attempt to fix Solaris crash in SD during status command. 
-04Oct04
-- Fix backspace to first character in conio.c
-- Add umount command for Phil. :-)
-- Fix update volume volfrompool.
-- Modify restore to print an error message if the size of a
-  restored file does not correspond to the saved stat packet.
-- Fix count of files to be restored *not* to include 
-  top level created directories.
-
-Changes to 1.35.7:
-03Oct04
-- Apply Martin's patch that puts back the run pool override
-  code -- dumb me for removing it.
-
-Changes to 1.35.6:
-02Oct04
-- Create patches/README and the patch summary file.
-- Use different share mode when opening files on WinMe/98/95 since
-  SHARE_DELETE is not implemented on those systems.
-- In new syntax Includes, pass *all* files through the acceptance
-  filter so that no error messages will be printed for files that
-  cannot be opened if they are excluded.
-01Oct04
-- Fix bug 126 (Martin) -- prevent failed console label request from 
-  going into fixup code and thus trying to update the catalog.
-- Always fold case in fnmatch() on Win32 systems
-30Sep04
-- Create patches directory
-- Apply Martin's patch for fixing console modifications to Verify Jobs.
-- Fix Win32 so that it can backup files that are opened by programs
-  such as Word (certain open system files cannot be backed up).
-
-Changes to 1.35.5:
-29Sep04
-- Fix Storage overrides in Run directive
-- Fix seg fault in AlertCommand
-- Fix btape "test" and "fill" commands to work with new SD
-  data structures.  There are still problems ...
-26Sep04
-- Correct buffer length passed to inet_ntop() in address_conf.c
-- Increase the debug level of a lot of messages to reduce the
-  debugging "noise".
-- Modify how ST_APPEND is handled so that nothing is written
-  to the Volume if it is not set. It is now set only when
-  the Volume label is verified, and released when the volume
-  is released. This required a number of minor but rather
-  critical and fundamental changes.
-- Improve quickly terminating a job in the SD when it errs.
-  More status checking and a few additional checks on
-  job_canceled() and check more error return statuses.
-- Added a number of debug statements (to be removed later) that
-  check the VolCatName for a name.
-- Create a single subroutine that handles terminating writing
-  on a Volume at the end of the volume (or after an error).
-- Continued to add use of the berrno classs for strerror().
-25Sep04
-- Apply conio patches supplied by Peter Eriksson for configure.in
-  conio.h and conio.c to make it work better on Solaris.
-- Make run_grub print manual procedure for installing grub
-- Add extra setsockopt keepalive.
-- Add code to set as many options as possible in the system
-  tape driver for different OSes.
-24Sep04
-- Apply Peter Eriksson's patch to configure.in fixes finding
-  correct libs on Solaris to link conio -- bug 121
-- Add expected number of files to Verify VolumeToCatalog, and
-  if it does not equal the examined files, fail the job.
-  Fixes bug -- 114
-- Modify the depend section of each Makefile.in to reference $(CXX)
-  instead of $(CC) -- bug 118
-- Remove the word "restore" from the Volumes needed message in
-  dird/bsr.c since the message is used for Restore and Verify.
-- Fix initialization and copying of the storage resource when
-  starting jobs (and in jobq.c when restarting). In some cases
-  jcr->store was not set causing a segfault -- bug 116
-23Sep04
-- More doc.
-- Pass EndFile and EndBlock to SD.  
-22Sep04
-- Fixed bscan to close() drive between tapes.
-- Turn on transactions for SQLite and PostgreSQL if
-  multiple connections are turned on.
-- Removed stripping of filename in ua_tree insertion routine.
-- Fix split_path_and_filename() routines to return zero length
-  path and files.
-- Modify update_tables scripts to convert a single blank filename
-  into an empty filename.
-- Incremented the release number because this version requires
-  an update to the database.
-  Use:
-    cd src/cats
-    ./update_bacula_tables  
-  to update an existing database.
-- Implemented EndFile and EndBlock in the Media record. This will
-  allow Bacula to know exactly when to stop reading a tape if the
-  stupid tape driver does not give a logical end of tape indication 
-  and Bacula writes to the end of the tape getting an I/O error.
-- Added new routines to update the database, and there are
-  new database creation routines to add the two new Media columns.
-- The Media record is updated each time a JobMedia record is created.
-  This keeps the Media record up to date.
-- Undid the code to use automatic type converions to char * in
-  POOL_MEM. This is due to the ugly consequences of essentially
-  destroying the class type nature of the class.
-- Removed all the old mp_char() #define code.
-
-Changes to 1.35.4:
-22Sep04
-- Add additional doc.
-- Implement automatic POOL_MEM type conversion to char *. Thanks
-  to Martin Simmons for the suggestion.
-- Remove some unneeded function overloading -- need removed by
-  automatic type conversion.
-21Sep04
-- Correct segfault in message.c with debug=200 (new code).
-- Fix bug 109 verify with no options prints garbage.
-- Add ioctl(MTIOCGET) call to clrerror_dev() in dev.c. As reported
-  by Frank Kardel, this should clear error conditions on NetBSD.
-20Sep04
-- Modify the rescue script to create mount_drives with
-  the order specified by Philip Nash (mkdir, mount).
-- Tweak install chapter of French manual to add new paragraph
-  from English.
-- Tweak restore tree message to be a bit clearer.
-- Modify watchdog to wakeup after 60 seconds, or wakeup if
-  there is work to do.
-- Modify watchdog stop routine to "ping" watchdog so that it
-  stops immediately rather than after sleep time.
-- Fix btape to use new dcr blocks rather than its own.
-- Fix butil.c to correctly handle Volume names for the
-  utility routines (broke when updating to dcrs).
-11-19Sep04 (vacation)
-- Implement multiple Storage specifications in the Job resource
-  (AND) each containing multiple specifications (OR). Not yet functional.
-  Note, this needs more work as most things now use
-  job->storage[0]->first() rather than looping through devices.
-- Implement "Multiple connections = yes/no" in Catalog record for
-  allowing multiple simultaneous connections to the database.
-- Add new mac.c (Migrate, Archive, Copy) to dird -- not yet implemented.
-- Implement a new POOL_MEM class that automatically allocates
-  and deallocates a pool buffer.
-- Overload a number of utility routines to permit using both
-  POOLMEM and POOL_MEM.
-- Start converting to using POOL_MEM.
-- There were a number of Bacula console ACL checks missing in
-  ua_run.c. It allowed users to run jobs they really should not.
-- Correct a number of dates on the Copyright.
-- Overload pm_strcpy() and pm_strcat() to handle new POOL_MEM
-  class.
-- Overload bash/unbash_spaces to handle new POOL_MEM class.
-- Make a *MASSIVE* pass through the Storage daemon eliminating
-  all use of jcr->VolumeName and jcr->VolCatInfo in favor of
-  dcr->...  
-- Eliminate all all redundant arguments from calling sequences
-  in SD. This poses a number of problems due to the old way blocks
-  and records were allocated and released all the time. They are
-  now contained in the dcr. The problem is that old habits die hard
-  and there are still places where everything is not right.
-- Implement "Block positioning = yes/no" in Device resource in SD.
-
-Changes to 1.35.3:
-09Sep04
-- Add "Multiple Connections = yes/no" in catalog record. Only
-  the variable is implemented, no code yet.
-- Close *all* FD unless debug on. 
-08Sep04
-- Add first cut of UTF-8 support to conio. It "seems" to be working
-  pretty well. Moving by words will definitely not work though.
-- Improve detection and setting of gateway in the 
-  network_start script.
-07Sep04
-- Modify scan code so that in most places scanning will
-  continue across the end of a line.
-05Sep04
-- Begin major phase of 1.35 documentation.
-- All outstanding bugs are fixed.
-- Implement changes and improvements to rescue scripts as
-  proposed by Gaurav.
-05Sep04
-- Add correction to Phil's previous patch.
-- Send all queued messages in SD and FD prior to closing down    
-  the job.
-- Send queued messages in Jobs before terminating the job 
-  so that the messages print before the job report.
-- Add a destructor so that the Console ACLs are properly
-  freed.
-04Sep04
-- Implement isolinux boot disk.
-- Integrate Phil Stracchino's code (thanks for Matt's help).
-  It permits lists and ranges of jobids on the delete as in:
-  delete job jobid=1,3,5,11-16
-03Sep04
-- Apply Mike Acar's suggestion when looking for the next volume
-  to check purged volumes for recycling before doing a purge.
-- Make some improvements to CDROM disk.
-- Take another crack at ignoring drive open() errors during
-  polling.
-02Sep04
-- Add eliminate orphaned job records; eliminate admin records,
-  and eliminate restore records to dbcheck.
-- replace sprintf by bsnprintf() in dbcheck.
-- Added scan target to makefile in rescue cd to print scsi
-  devices.
-- Added argument to berrno::strerror() to pass errno.
-- Cleaned up a few more old strerror() calls and eliminated a
-  few of the now unnecessary set_errno() calls.
-- Fixed a bug in the polling code that prevented more than 100
-  label reads (insanity check disabled if polling).
-- Ignore bad return from open_device() if polling.
-- Short circuit code if fatal error return from read_label() in
-  mount.c
-01Sep04
-- Add index file to JobId field of File records for PostgreSQL.
-- Correct several bugs in the job queue scheduler concerning   
-  rescheduled jobs: 1. The SD status was not cleared causing a
-  wrong status to be displayed by Dir after rescheduling. 2. All
-  rescheduled jobs became zombies because the jcr use_count was
-  not decremented properly.
-- Make the Catalog resource required in Client records.
-- Order the listing of where a file is (item 2 on the restore
-  menu) by StartTime.
-- Clarify when a filename only and a full path + filename must
-  be entered in items 2 and 8 of the restore menu.
-- Fix logic error in resolution of names on IPv4 systems.
-
-Changes to 1.35.2 released 01Sep04:
-30Aug04
-- Inhibit printing of FileSet for a restore as it is misleading.
-- Cleaned up a number of minor scripting problems with the CDROM
-  creation.
-- Fixed a race condition causing a Director crash on termination,
-  if a large number of SIGHUPs were sent during a multiple concurrent
-  set of backups.
-28Aug04
-- Completed integration of Rescue CD scripts with Bacula source.
-28Aug04
-- Added Ignore FileSet Changes = yes
-- Added more error checking to the spooling code.
-24Aug04
-- Applied a patch from Peter Eriksson that removes a dynamic stack
-  allocation (replaced by alloca) and fixes some const problems.
-- Fixed a free() of a static variable in the new IP code bnet.c
-- Got the new Bacula Rescue CDROM booting.
-- Replaced a dynamic template by a simple store when using the
-  native C compiler.
-- Reworked some of the block.c error handling.
-- Changed a Dmsgx(000, to Dmsgx(100 in dev.c that was dumping
-  debug output on a user.
-- Integrated patch from 1.34.6 block.c to 1.35
-17Aug04
-- Fix conio.c problem on Solaris.
-- Add debug code to lock_jcr_chain().
-- Lock jcr chain around less code.
-- Implement call by reference for Mmsg() and pm_strxxx() to
-  simplify calls.
-- New IP address specification is used as follows:
-    [sdaddresses|diraddresses|fdaddresses] = { [[ip|ipv4|ipv6] = { 
-           [[addr|port] = [^ ]+[\n;]+] }] }
-
-  so it could look for example like this:
-     SDaddresses  = { ip = {
-            addr = 1.2.3.4; port = 1205; }
-        ipv4 = {
-            addr = 1.2.3.4; port = http; }
-        ipv6 = {
-            addr = 1.2.3.4;
-            port = 1205;
-        }
-        ip = {
-            addr = 1.2.3.4
-            port = 1205
-        }
-        ip = {
-            addr = 1.2.3.4
-        }
-        ip = {
-            addr = 2001:220:222::2
-        }
-        ip = {
-            addr = bluedot.thun.net
-        }
-     }
-  as a consequence, you can now specify multiple IP addresses and
-  ports to be used. In the case of a server, it will listen on
-  all those that you specify. In the case of connecting to the server,
-  Bacula will attempt connecting to one at a time until it succeeds.
-  And, in a few other special cases, Bacula will use only the first
-  address specified.
-
-  The default port numbers are still the same and the services and hosts 
-  are also resolved by name. So now  you could use the real names for the 
-  port numbers.
-
-Changes to 1.35.1:
-14Aug04
-- Print error message if Alert Command fails in bpipe_open().
-- Doc Alert command.
-- Eliminate unnecessary class in findlib/attribs.c
-- Add necessary empty files to new tray-monitor directory.
-13Aug04
-- Implement Class with template in findlib/attribs.c to do casting
-  of uint64_t into stat packet types to avoid compiler warnings.
-  Thanks to Meno for this idea.
-- Make some modifications to satisfy VC++.
-- Apply Martin Simmons' second patch to compat.cpp to fix the line
-  I previously missed.
-- Apply Meno's fix to bnet that corrects use of ipaddr after free_addresses,
-  back out my kludges, and it works.
-- Modified configure.in to by default add -Wall.
-12Aug04
-- Found some problems with printing IP addresses -- will notify Meno.
-- Added printing Pool to Job report.
-- Fixed several places where dlists were not being released 
-  (term_job_server, ...)
-- Started implementing New() for dlists. Spent a lot of time,
-  but could not get it to work.
-- Fixed a mutex deadlock between the job queue scheduler and the
-  watchdog.
-- Made add_address() static.
-- Added bsnprintf to address_conf.c
-10Aug04
-- Apply Marin Simmons patch to inet_aton() in compat.
-06Aug04
-- Build on Win32 -- required a few changes because of new IP code.
-- Implement program reader code in Dir and FD -- not tested, and
-  a few corrections for writer code are needed in FD.
-- Rework SQL for pruning. Add Admin pruning. Prune failed
-  jobs in Verify and Restore.
-- Don't put commas in listing produced in restore so that users
-  can cut and past JobIds without having commas in the way.
-- Change size_t to socklen_t in filed.c -- reindent a bit.
-- Remove addr_list->size from buf size definition in bnet.c
-- Create a Developer's document.
-- Add prompt for Update volume from pool and update all 
-  Volumes from pool.
-05Aug04
-- Implement user friendly time duration input editing.
-- Add buf len argument to edit_utime().
-- Added eliminate orphaned Client records to dbcheck.
-04Aug04
-- Implement Alert Command in SD Device conf. 
-- Fix updating a Volume from the pool record -- it never changed
-  anything.
-- Implement updating all Volumes from pool record.
-- Add patch by Denis Shaposhnikov that fixes excludes of directories
-  in new style FileSets.
-03Aug04
-- Merge Meno's IPv6-1 code.
-- Update License to terminate rights of anyone suing a GPL licensor.
-- Add Pruning doc sent by Bryce Denney
-- Correct inconsistencies in restore command doc pointed out by user.
-- Don't edit commas in SQL intergers if they are not stricly integer.
-30Jul04
-- Update all pools in all DBs when starting the Director.
-28Jul04
-- Implement final cut of berrno and update Win32 code.
-- Update copyright to include a termination clause. Add copyright to
-  binaries.
-- Implement .backups client=xxx for Nicolas.
-27Jul04
-- Make first cut at implementing berrno class to handle Unix, Win32
-  and bpipe errors. Bpipe still needs to be implemented.
-  This fixes (not yet tested) the Win32 errno problems in the compat lib.
-- Fix btape compile problem reported by Martin Simmons -- thanks.
-- Add ./configure detection of sys/tape.h
-26Jul04
-- Apply two fixes to recent changes to dev.c submitted by
-  Martin Simmons.
-24Jul04
-- Add checks in btape for correct size of off_t, and correct editing
-  of 32 and 64 bit values.
-- Move supported OS/hardware into a chapter by itself.
-- Fix bscan, which did not handle walking dcr list.
-- Remove old attach_jcr_to_device() code.
-- Fix config from Andy Wettstein's patch to use bitypes.h and detect
-  uint32_t, ... definitions.
-- Fix a few compiler warnings because of casting pointers to int and
-  vise versa.
-- Do some minor cosmetics to query.sql. nothing changed.
-- Don't call stop_thread_timer() in backup.c if timer not started.
-- Fix bug with out of order JobIds on restore.
-- Make watchdog examine queues once every 10 seconds instead of once
-  a second.
-22Jul04
-- Add more bools to dev.c
-- Fix walking attached DCRs in bscan.c
-21Jul04
-- Doc updates
-- Start work on rescue files. Integrated RAID changes. 
-- Print a message when query.sql moved to query.sql.old during install.
-- Move setting of FreeBSD chflags() to after utime() to avoid error
-  messages is immutable bit is set.
-18Jul04
-- Turn off heartbeat in FD when -s is given so that we can 
-  debug without a flood of signals.
-- Close and reopen the device during an append test in
-  btape. This better tests appending as if Bacula stops/restarts.
-- Remove old attach/detach_jcr_to_device() code
-- Add new attached_dcrs code.
-- Remove unnecessary subroutine for bsnprintf.
-- Replace sprintf() by home-grown code in edit_uint64 ...
-- Begin implementation of dev->attached_dcrs. 
-17Jul04
-- Remove scripts/fd.in from configure.in
-- Add printing of JobId when a Job is started from the console.
-16Jul04
-- Remove fd/fd.in from scripts directory.
-- Fix a number of bugs in dbcheck concerning the -c option
-  (i.e. with a config file).
-- Made RH start scripts use -u and -g options.
-- Many more DCR changes.
-- Add job message indicating that the job has been rescheduled
-  and when.
-- Fix job end time so that it is always updated. Previously it
-  was not updated when a job was rescheduled.
-- Correct SQL for restoring job by path/name. It could sometimes
-  pickup the wrong JobId -- submitted by a user.
-- Add a number of "%s" in editing database errors -- security issue.
-- Ensure that the NumVols is incremented and decremented in the
-  pool record when Volumes are created or deleted.
-- Cleanup error handling when labeling a tape. If vol was read-only,
-  the device would still be marked as having found a label.
-09Jul04
-- Put ftCreationTime into st_ctime of stat packet. Hopefully
-  this will fix the problem of noticing files have been moved
-  into the save path after a Full save.
-- Fix bug in "status dir" where not all entries are listed.
-- Cleanup some improper result printing in configure.
-- Optimize a couple of insertions in binary_insert of dlists.
-
-Release 1.35.0 08 July 2004:
-08Jul04
-- Apply Christopher Hull's const patch for PostgreSQL
-- Add code to block.c to detect if block header is destroyed.
-- Add debug code for memset checking for zeroing 1900-3000 bytes
-  which is what happened to the block headers.
-- If block header is destroyed, read the next block. Probably
-  should return with new status similar to the SHORT block 
-  return.
-- Add more debug info to bls for bad blocks.
-- More implementation of DCRs.
-07Jul04
-- Eliminate argument passing in SD by using dcr.
-- More int->bool conversions.
-- Add file:block to a number of read/write error messages.
-04Jul04
-- More int -> bool conversions.
-- Modify the SD piece by piece to use DCRs everywhere.
-- Cleanup some printout for query command. 
-- Fix typo in cats/mysql.c
-- Work on cleaning up tape driver a bit (use bools, better calling
-  sequences).
-- Attempt to fix multi-Volume disk backup. Needs to be tested.
-01Jul04
-- Add Regular expressions to FileSet options.
-- Correct configure.in to use ${MAKE} for doing the dependencies.
-- Make MySQL and PostgreSQL try for 30 seconds to connect before
-  giving up.  
-- Correct Gnome 1.4 Makefile to build without cats library.
-- Correct a crash reported (with patch) by Jonathan Soong 
-  when attempting to backup an ACL on a symlinked file.
-27Jun04
-- Fixed an off by one bug in the new resources pointer code.      
-  res_head array was one too small.
-- Added Errors to last_job list. This allows detecting jobs
-  that terminated in a warning.
-- Implement setting the Win32 icon to yellow instead of red
-  when the job terminated OK but with warnings.
-- Fix the Win32 makefile and VC project file. The links were
-  not including the Win32 dlls.      
-- Delete some old Win32 code that was turned off.
-- Eliminate a few more Win32 compiler warnings.
-- Reduce the output produced by NIS (Win32 install builder).
-- Simplify some of the #ifdefing in compat.h
-26Jun04
-- Rewrite spooling error handling when I/O error occurs. It is
-  a bit tricky, requiring to truncate the file so that a despooling
-  will work correctly. Needs to be tested.
-- Make better subroutines for setting up for a new job.
-- Start putting all DB ids on #defines (going to 64 bits).
-- Fix gnome-console Makefile.in to work again.
-- All "level=Incremental/Decremental" to the estimate command. This
-  required some re-arrangement of subroutines at a fairly low level.
-25Jun04
-- Apply Piotr Jaworski's patch (patch-r-status.diff) to update the
-  catalog status when a backup job starts running.
-24Jun04
-- Add (char*) cast to readline call in console.c for old readlines.
-- Copy Makefile.in from gnome2-console to gnome-console (to eliminate
-  need for cats library).
-- Modify spooling code to handle write error (e.g. spooling disk full)
-  more gracefully. Previously despooling would fail.
-22Jun04 
-- Reduce casting in smartall.c a bit and add counters for 
-  bytes, max_bytes, buffers and max_buffers.
-- Fixed reload algorithm to stack both job end callback and the
-  table id.
-- Fixed the orphaned buffer after reload (job_end_push had to be
-  destroyed.
-- Destroy cond var (jcr->term_wait) only if initialized.
-21Jun04
-- Sort the Scheduled Jobs list by start-time, priority.
-- Implement resources on a pointer.
-- Fix Gnome console crash on up/down arrow with no history.
-19Jun04
-- Finish first cut of SIGHUP code. To make really work need res
-  on a single pointer rather than in fixed memory.
-- Fix a number of places in query.sql where multiple JobIds are
-  printed (due to JobMedia records).
-- Add new query: List jobs on Volume given Volume name.   
-- Correct socket close on Win32 in bnet.c (in addition to compat.cpp).
-  Caused fd leak in Win32 for each connection.
-- Remove vol labeled test in askdir update_volume_info so that non-labeled
-  Volume in catalog can be marked in error.
-- Close socket in SD when connection rejected. Caused fd leaks.
-- Initialize job_start_wait cond variable after every new_jcr() otherwise
-  NetBSD gets error in library when trying to delete it without being inited.
-- Fix typo (9 instead of 0) return status in write_new_volume_label.
-- Fix mount.c to call routine that correctly marks a volume in error.
-- Move code to rewrite volume label to subroutine -- a bit cleaner.
-18Jun04
-- Finish implementation and testing of new restore tree code.
-- Implement feedback while tree is loading.
-- Eliminate printing INFO message in UpdateDB (cats) -- it generates
-  "false" error messages.
-- Eliminate some GTK error messages when running the Gnome2 console.
-16Jun04
-- Begin restructuring tree.c for inclusion of the binary_insert()
-  routine.         
-- Apply Peter Eriksson's lib file order changes in linking for IRIX.
-- Abort configure if Internal is  selected as the database.
-- Add testimonials to the Web page
-- Add the bugs list to the Web page "lists".
-- Clarify the English in SuSE and Slackware when SD not running.
-15Jun04
-- Applied another extern "C" patch from Peter Eriksson.
-- Fixed a bunch of VC warning messages.
-- Applied the patches sent by Andreas Jellinghaus: build Gnome and  
-  wx-console in client-only build if configured; add ./configure option
-  to permit setting of sbin modes -- default is 0745 as before; remove
-  cats library from Gnome console build; remove old version from Gnome
-  About box. Thanks Andreas.
-14Jun04
-- Applied Peter Eriksson's const changes to the source code. Thanks Peter.
-- Implemented a binary_insert() method for dlists -- intended to be used
-  in the restore tree routines.
-- Turned on my bsscanf() code, which replaces sscanf() by my routines, which
-  are a subset of sscanf() used by Bacula, but which have known 32/64 bit
-  behavior rather than vendor dependent !@#$%*.
-
-2004-07-30 Version 1.34.6 28Jul04 Release
-28Jul04
-- Fix a restore bug where the backups could be
-  applied out of proper order possibly restoring an old version
-  of a modified file.
-- Fix for restore selection of a file by name, where it was
-  possible to select a file from the wrong Client.
-- Fix segmentation fault during backup of a symbolic link
-  with ACLs turned on.
-- Fix a minor compile error in wx-console.
-- Fix a bug in despooling when the spooling disk partition becomes
-  totally filed or gets I/O errors.
-- Fix a memory leak in PostgreSQL, and make Bacula retry 5 times if
-  connecting to the DB fails.
-- Retry 5 times if connect to MySQL failes.
-- Fix linking the gnome-console
-                                                                                      
-2004-06-22 Version 1.34.5 21Jun04 Release
-21Jun04
-- Fixed Gnome crash on up/down arrow with no history.
-- Fixed btape "fill" crash with multiple tape option.
-19Jun04
-- Fix a number of places in query.sql where multiple JobIds are
-  printed (due to JobMedia records).
-- Add new query: List jobs on Volume given Volume name.   
-- Correct socket close on Win32 in bnet.c (in addition to compat.cpp).
-  Caused fd leak in Win32 for each connection.
-- Remove vol labeled test in askdir update_volume_info so that non-labeled
-  Volume in catalog can be marked in error.
-- Close socket in SD when connection rejected. Caused fd leaks.
-- Initialize job_start_wait cond variable after every new_jcr() otherwise
-  NetBSD gets error in library when trying to delete it without being inited.
-- Fix typo (9 instead of 0) return status in write_new_volume_label.
-- Fix mount.c to call routine that correctly marks a volume in error.
-18Jun04
-- Eliminate printing INFO message in UpdateDB (cats) -- it generates
-  "false" error messages.
-- Eliminate some GTK error messages when running the Gnome2 console.
-16Jun04
-- Apply Peter Eriksson's lib file order changes in linking for IRIX.
-- Abort configure if Internal is  selected as the database.
-- Add testimonials to the Web page
-- Add the bugs list to the Web page "lists".
-- Clarify the English in SuSE and Slackware when SD not running.
-15Jun04
-- Applied the patches sent by Andreas Jellinghaus: build Gnome and  
-  wx-console in client-only build if configured; add ./configure option
-  to permit setting of sbin modes -- default is 0745 as before; remove
-  cats library from Gnome console build; remove old version from Gnome
-  About box. Thanks Andreas.
-
-2004-06-09 Version 1.34.3 09Jun04 Release
-12Jun04
-- Enhance regression scripts.
-- Apply Tim Oberfoell's ACL patch.
-11Jun04
-- Implement bsscanf() because sscanf on FreeBSD amd64 stores
-  in 64 bit words for %ld. Turned on for the moment only for
-  FreeBSD amd64.
-- Fix all conversions of ptr to int to use (long unsigned) this
-  works on i386 and amd64.
-- Add mtimeonly and keepatime to new Options list -- omitted before.
-- Add a bit more authentication debug code.
-- Start variable name/overload cleanup in SD
-- Fix sscanf() in askdir.c scanning into bool to use local int.
-- Make max_spool_size int to allow proper arithmetic.
-- Remove trailing junk on sscanf() of "Hello Start Job" in SD.
-- Make ask_sysop_to_mount_volume() always ask sysop.
-- In SD mount.c, if get I/O error or read label error on non-removable
-  Volume, mark the volume in error and retry. 
-- In SD mount.c, if non-removable volume, never ask sysop to mount. We
-  ask sysop if there are no appendable Volumes though.
-- The above 3 items fix the looping error Bacula would get if the
-  Volume was in the catalog but didn't exist -- or was zero bytes 
-  long.
-10Jun04
-- Implement | and < in FD for new FileSet files.
-- Implement simplistic attribute spooling statistics in status.
-- Make storage=xxx on restore override the restore default.
-- Fix an uninitialized stack variable in append.c that caused data
-  corruption on amd64 machines and *could* cause the same on other
-  machines.
-- Fix a seg fault in automatic tape labeling.
-- Eliminate a PoolId=nn when zeroing the InChanger flag for a Volume.
-- Add a bit more debug info to bls.c
-- Clear InChanger flag during "update barcodes" if no VolName present,
-  i.e. no Volume in Changer.
-- An update pulled in Christopher Hull's fixes to the client program          
-  execution on Win32 to search the path and use COMSPEC.  New rules
-  apply!
-- Fix UpdateDB to complain if mum_rows < 1 rather than != 1.
-
-
-2004-06-09 Version 1.34.3 09Jun04 Release
-09Jun04
-- Add missing FT codes in new FileSet callback, which caused error
-  return on unchanged directories.
-08Jun04
-- Fix "update volumes" move from one pool to another.
-- Change default search location for PostgreSQL -- thanks
-  to Hans-Ulrich Schaefer.
-06Jun04
-- Zero Slot if not autochanger in stored/mount.c
-- As a last ditch effort to mount the next tape in mount.c, zero slot
-  and ask sysop.                 
-- Win32 status was picking up the first status in the list job terminated
-  jobs instead of the last.
-05Jun04
-- Add additional fields to llist pools
-- Correct some minor label scan problems with update slots
-- Ensure correct Pool is used with tape cleaning prefixes.
-- Eliminate false error message in update slots (slots taken as
-  Storage device).
-02Jun04
-- Print "Unimplemented" message if user does reload command in Console.
-- Add DISTINCT to Volumes for restore in query message (user supplied fix).
-- Fix crash in btape during read after fill -- important bug.
-- Turn config parse ABORTs into ERROR_TERM in Storage daemon.
-- Add dbcheck enhancements submitted by Mano Abels and
-  Jose Luis Tallon.
-- Update autoconf files to latest version.
-01Jun04
-- Modify jobq scheduler to require exclusive use of the Storage device
-  before starting it.
-31May04
-- Eliminate a few compiler warnings on Win32
-- Change Win32 to use btimers instead of timers.
-- Remove two returns in void subroutines in wxbconfigpanel.cpp
-30May04
-- Apply Christopher Hull's check for error return from open_bpipe()
-  in filed/job.c
-- Be sure to clear *all* bits in hourly when an hour is given.
-- Apply a user fix to query.sql
-- Check status code returned from _open_osfhandle in compat
-28May04
-- Apply Peter Eriksson's bug fixes.
-- Add Alpha (tru64) submitted by Scott Bailey.
-- Update manual
-- Add new Autochanger to list supported
-- Cleanup src dir better after glade trashes it with junk
-- Make another attempt to get hourly, daily, ... keywords working
-  intuitively and correctly.
-- Prevent seg fault when no job name specified on "status job"
-- Rename timers.h/.c in lib to prevent conflict on some machines
-- Trap NULL DCR in block.c
-- Add additional info to failed btape test pointing user to manual.
-- Undefine DCR, which is defined on some stupid systems.
-- Fix stored/dircmd.c not to quote Volume name on label query so that
-  "update slots scan" works right (the quotes confused it).
-- Fix autochanger.c not to attempt to unload a slot if the prior loaded
-  request returned -1.
-01May04
-- In testing for Mike Acar's problem. I *finally* found and nailed
-  the mount command that did not release a waiting job. The return
-  of a stolen lock forgot to broadcast.
-- In examining Mike Acar's problems, it appears that the Bacula                      
-  block size is not always set to a multiple of 1024. I've modified
-  block.c to do so.
-30Apr04
-- Add Excludes to new FileSet handling.
-- Fix bsmtp.c to correspond to RFC-2821 by removing extra spaces.
-29Apr04
-- Implement new style FileSets in both the Director and in the
-  File daemon. No filters yet. Both old and new styles work.
-28Apr04
-- Apply the fixes Chris Hanson sent for mtx-changer and for detecting
-  PostgreSQL on debian.
-- Rework File Options document
-- Re-begin work on File Options.
-- Add define for nl_langinfo in configure
-- Add additional tape drives sent by Jesse.
-27Apr04
-- Modify syslog in win32/compat to throw up a MessageBox().
-- Inhibit sending daemon messages to stdout if Win32 is set.
-- PostgreSQL performance updates from Volker Goetz
-- DB script updates suggested by Dan
-- Doc updates
-
-
-2004-04-26 Version 1.34.2 24Apr04 Release
-24Apr04
-- Get production build on Win32 of wx-console working -- mostly a problem
-  of getting the paths right and installing and building wxWidgets.
-23Apr04
-- Make SD utility programs accept device name as well as archive device
-  on command line.
-- Update docs
-22Apr04
-- Fix one off bug in StartBlock in bscan -- thanks to Gregory Brauer for
-  reporting this.
-- Remove old debug code from Win32 FD.
-
-2004-04-20 Version 1.34.1 20Apr04 Release
-18Apr04
-- Found and fixed SD crash during restore.
-- Added FreeBSD Bare Metal Recovery documentation by Alex Torres 
-  Molina and others.
-- Added nice graphics produced by Aristedes Maniatis giving an
-  overall view of Bacula.
-- Changed textdomain to be "bacula" in all progs.
-- Fixed a major race condition in the job scheduler when multiple
-  simultaneous jobs is enabled. This occurred only when on job had
-  blocked another because of resource usage. This caused a deadlock
-  and CPU usage. Reported by Michel Meyers.
-- Changed the backup report to indicate "Backup OK -- with warnings
-  if any warning messages were generated.
-- Change output of restore report to indicate:
-  "Restore OK -- warning file count mismatch"
-- Make backup report say "Backup OK with warnings" if either FD or SD
-  report any non-fatal errors.
-- Modify bscan to print some elementary statistics (#Jobs, #Files, ...)
-  added to catalog.
-16Apr04
-- Modify bscan to print some elementary statistics (#Jobs, #Files, ...)
-  added to catalog.
-15Apr04
-- Added --enable-wx-console and updated Makefile.in
-- Fix mtx-changer so that the calling sequence is compatible
-  with the previous version (the new one required arguments that
-  were not necessarily used).
-- Document how to use stunnel with Bacula.
-13Apr04
-- Fix crash in query command.
-- Remove schedule from the default restore job.
-- Fix data spooler to use min/max tape blocking factors.
-- Automatically turn of conio if library not found instead of bombing.
-- Cleaned up a lot of copyright dates.
-- Try to keep spool statistics from going negative.
-- Integrated wx-console code from Nicolas Boichat.
-09Apr04
-- Added new Pools chapter. Doc about using two disks.
-- Attempt to keep the spool file statistics size from going 
-  negative.
--8Apr04
-- Fix the Director's Scheduled Jobs: list to have a ===
-  termination.
-- Fixed ./configure to disable readline rather than stop if 
-  readline.h is not found
-- Fixed a typo in the SQLite database update script as reported
-  by Robert J. Clark - thanks.
-07Apr04
-- Removed src/win32/pthreads and src/win32/zlib from the source
-  tree.
-- Created a new depkgs-win32 that has the pthreads and zlib source
-  code.
-- Removed the JobDefs from the default Restore job as it has a
-  schedule. Thanks to Matt Howard for this.
-
-
-2004-04-06 Version 1.34.0 06Apr04 Release
-06Apr04
-- Turn off SIGQUIT in console.
-05Apr04
-- A good number of document updates.
-- Fixed the order which multiple files are accepted for 
-  inclusion in the restore tree due to the fact that PostgreSQL
-  returns files in a different order from their insertion.
-02Apr04
-- Fix autochanger test in btape. It used old editing routines.
-- Fix run_program to return 0 if program runs and no output.
-- Add more debug to run_program.
-- Make signal debug print signal string.
-01Apr04
-- Build console with client-only build.
-- Add better error messages to some of the db_xxx routines.
-- Apply Christopher Hull's patches for proper Win32 shutdown.
-- Eliminate True and False in favor of true and false.
-- Put correct thread id in jcr once the correct thread is running.
-- Zap head and tail pointers in dlist when everything is removed.
-- Rework sm_dump() so that it won't overrun a buffer when editing
-  and error message.
-- Fix watchdog to properly remove entries while walking the
-  dlist chain.
-- Fix termination of last_jobs list by removing broken code.
-31Mar04
-- Update dbcheck to fix Paths without a trailing slash and Filenames
-  with a trailing slash.
-30Mar04
-- Add -p option to all SD programs including bacula-sd. It causes
-  Bacula to proceed or forge on in case of I/O errors. It is unlikely
-  this will help, and it is strongly recommended against running
-  the daemon with this option in production.
-- Tweaked the Makefile not to create the gnome directories except
-  when doing a gnome install.
-28Mar04
-- Implement Qmsg() queuing of messages to prevent recursion especially
-  for bnet.c where recursion is fatal.
-- Add detection of ncurses if the termcap lib is not found.
-- Tweak winabout -- start cleanup.
-- Fix dlist again, when list is destroyed, be sure to null head and
-  tail pointers.
-27Mar04
-- Make the default for restore to have nothing marked.
-- The "all" keyword on the restore command marks everything by
-  default.
-- The "done" keyword on the restore command prevents user interaction
-  with the tree routines -- used mainly for scripting (regression ...).
-- Correct a bug in the last_sibling code.
-- Add alphabetic sorting of siblings so the "dir" and "ls" commands
-  during restore show files in alphabetic order.
-25Mar04
-- Based on Mike Acar's suggestions rework tree insert routines. Improve
-  performance by using a last_sibling link for inserts.
-24Mar04
-- Apply corrected SQL to sql_get.c supplied by Dan Langille.
-- Implement "delete job jobid=xxx jobid=yyy ..."
-- Implement "purge volume=xxx volume=yyy ..."
-- Fix buffer overrun in query string substitution.
-22Mar04
-- Fix bad format %s instead of %d for editing new slot in update volume.
-  Reported by Vadim Zotov.
-- Better error diagnostics in ./configure for detecting termcap library.
-20Mar04
-- Restore old sql.c split_path and file name since it seems to have
-  broken the Verify stuff.
-19Mar04
-- Hunt down missing free_locked_jcr() in SD that caused zombies.
-- Modify status outputs to be more consistent for zombie checking.
-- Add tests to regression script for zombie jobs.
-- Set EIO in dev_errno for all error returns when bad data found. This
-  fixes ERR=Success messages.
-- Make error messages all contain ERROR for easy regression testing.
-- Add sanity check in DIR for VolFiles becoming smaller.
-18Mar04
-- Second cut GTK+ restore GUI. Ready for testing but much more to do.
-- Phil reported an sql path length=0 message. This broke saves of 
-  /  -- fixed in scan.c
-- Fixed seg fault in btape "test" due to missing allocation of dcr.
-- Tweaked some btape messages.
-- Sort Volume names in Job report according to the order they were
-  written -- user request.
-17Mar04
-- First cut GTK+ restore GUI.
-- Applied bsmtp patch supplied by a user. Thanks.
-- Made a new split_path_and_filename() subroutine -- in lib/scan.c
-15Mar04
-- Fix "typos" in RedHat install-autostart Makefile.in
-13Mar04
-- Added two tar files that Phil sent for adding slackware support.
-  Thanks Phil and Matt Howard.
-- Fix relabel command -- || should have been &&.
-- Correct once more the scheduling algorithm -- this time it should
-  be much better.
-12Mar04
-- Implement simple spool statistics printed by "status sd".
-- Cleanup/add spool error messages.
-- On multiple ctl-c, exit from console quickly.
-- Implement code to select a different Volume in the SD if the
-  current Volume is busy -- requested by Patrick Cole.
-- Change postgreSQL make tables to use bigint instead of integer 
-  for StartBlock and EndBlock because
-  there is no unsigned integer in postgreSQL and these fields use 32 bits.
-- Implement multiple drive autochanger support -- prompted by email of
-  Patrick Cole.
-11Mar04
-- Update version and date in Win32 build.
-- Fix bug in run_conf with month range zapping wday and wom.
-- Correct editing of port for PQsetdbLogin in postgresql.c as reported
-  by J. Conroy, and do a second try.
-10Mar04
-- Integrate Phil's Makefile patch.
-- Add SpoolDirectory to SD Device resource.
-- Add MaximumJobSpoolSize to SD Device resource.
-- Add MaximumSpoolSize to SD Device resource.
-- Implement the above.
-- Make despooling lock the device so only it writes
-  to the device during despooling.
-09Mar04
-- Data spooling now passes the regression tests.
-- Added "Files Expected" to the restore job report.
-- Implemented SpoolData = yes/no in the Job resource
-- Implemented SpoolData = yes/no in the Run overrides.
-- Note, you must have a 1.33.4-09Mar05 SD or later with the Director since
-  the DIR->SD protocol has changed to support data spooling.
-- Remove the confusing "Which DBMS do you want to use (please select only one):"
-  messages from ./configure.
-- Fix broken Jmsg with missing argument in find_one.c
-08Mar04
-- Second cut data spooling code.
-- Fix missing piece of yesterday's patch.
-07Mar04
-- Integrate patches supplied by Jason Conroy that fix Slot numbers 
-  getting lost.
-06Mar04
-- This version contains a *major* addition to the SD structures.
-  Many variables have been moved out of the JCR into a new DCR
-  (Device Context Record). This required quite a few changes, and 
-  introduced a bit of instability. In the end, after a few more
-  rounds of changes, the DCR will replace virtually all arguments
-  to the low level SD read/write routines. This change permits
-  (with a bit more code) the SD to write to multiple devices at
-  the same time for a single Job. It also facilitates adding the
-  data spooling code.
-- Added a patch that fixed the port specification for postgresql.
-- Fixed findlib/find_one.c so that it will complain about backing
-  up a hard linked file twice, which makes a restore impossible.
-- Tighten up permissions on pid file.  
-- Attempt to avoid warnings when casting 64 bit pointers to an
-  integer.
-- Added skeleton code for data spooling.
-- Make sure spooled attributes are discarded on error.
-03Mar04
-- Updated getdiskinfo in rescue/linux to handle the fact that the
-  sfdisk -s option now includes info on partitions. Also, before 
-  creating the diskinfo files, clean out the old ones.
-02Mar04
-- Add debug and error output to jobq.c
-- Fix some minor errors in debug output of scheduler.c
-- Add "trace on/off" command and modify trace code in message.c
-  to work off trace flag rather than #defines.
-01Mar04
-- If console is found during install warn user (new name is bconsole).
-- On install copy console.conf to bconsole.conf if it exists.
-- Make RunAfterJob error non-fatal.
-- Rework minor details in status output.
-- Attempt to define all values for "consoles" in JCR to avoid
-  confusion.
-28Feb04
-- Use net start bacula to start Bacula on WinXP/NT/2K 
-  systems after installation. 
-- Change a few strcpy()s to bstrncpy()s in signal.
-- Add "gui on/off" command to console to turn on gui mode,
-  which will adapt Bacula better to batch or gui programs.
-  Currently, it prevents commas from being inserted into
-  numbers in the list command.
-- Tweak some of the Makefiles so that the install is done with
-  the right program (nothing really changed).
-- Install logrotate in the "make autostart" of Bacula on RedHat.
-- Implement SIGHUP while jobs are running. It *seems* to work but is
-  a bit fragile and still crashes if you push it. More work needed.
-- Applied Phil's GNOME 1.4 patch. Very clean. Thanks Phil.
-- Major updates to the native Win32 installer.
-27Feb04
-- Restructure free of conf resources to handle job_end_push()
-  and SIGHUP.  Lots of changes little substance.
-26Feb04
-- Add mtimeonly=yes/no and keepatime=yes/no to Include list           
-  1.33 style.
-- Allow no modifier in time and size specifications.
-- Attempt to implement disk seeking. More work needed.
-- Implement more in win32 installer and test it.
-25Feb04
-- Implement kb, mb, and gb modifiers for size, which mean
-  1,000 bytes, 1,000,000, ... bytes.
-- Add Makefile to src/win32 to allow building the full 
-  release -- it calls nmake where appropriate.
-- Remove the rsi directory from win32 as suggested by Christopher
-- Add Michel Meyers' nsi file to win32 and integrate it with
-  the build.
-24Feb04
-- Add the frigging _O_BINARY to the right variable. Win32 works!
-- Add debug code to state file. There is a problem with Win32 read
-  returning one byte less than it should.
-- Implement a number of new functions for alist so that it has
-  equivalent functionality to dlist.  It will be used for
-  job_end_push().
-- More work on state file. 
-- Added a popup message box on Windows if Bacula Aborts.
-- Attempt to shutdown the FD server, but doesn't work on Windows. This
-  would have given a cleaner shutdown, no problem.
-23Feb04
-- Update projects
-- Attempt to fix state file on Win32 -- no luck.
-- Add HPUX tweaks to configure.in 
-- Update quickstart and install.wml of doc.
-- Eliminate extern int h_errno from bnet.c by including netdb.h
-- Eliminate NumJobs from last_job structure so that FD and SD
-  correctly report what is in the state file.
-22Feb04
-- Implement daemon state file, and save/restore last_jobs list.
-- Fix time routines in win32 compat.cpp
-- Fix a bug of not checking the bpipe_open() status in do_shell_expansion().
-21Feb04
-- Add Volker's bacula script to the SuSE directory and convert it
-  to bacula.in
-- Make LockRes() and UnlockRes() use read/write locks and have
-  debug info to trace locking and unlocking.
-- Begin work of implementing SIGHUP. It is now enabled for
-  the Director and works only if there are no jobs running,
-  in addition, if the new conf file is incorrect, it will
-  terminate Bacula. Much more work to be done.  I've figured
-  out a scheme to implement it with running jobs without
-  adding individual semaphores or use counts.  
-- Sort "list jobs" by StartTime rather than JobId, which can
-  be random.
-16Feb04
-- Add a lot of "const" to char * arguments to keep the native
-  Sun compiler happy.
-- Added first cut of message queuing to prevent recursion in
-  low level routines. This code is not yet working.
-- Spent a *huge* amount of time looking at the tape driver
-  code in the wake of several reports of tape labels getting
-  trashed. The code looks fine.
-- Created a tape with an error (by writing a block at the
-  beginning of a tape that had valid data), and found that
-  Under Linux there is no way to read past an I/O error.
-  I tried mt; I tried my own program (btape); and I tried
-  using scsitape, which talks directly to the scsi driver.
-  This is *VERY BAD* news.
-- I spent an *enormous* amount of time enhancing the btape
-  test program as well as making the fill command work with
-  both one and two tapes and the autochanger if configured.
-  The multiple tape fill test is now quite comprehensive.
-  It checks the last block on the first tape, the first block
-  on the second tape, and the last block (11) on the second
-  tape.
-- Teaked the tape driver for several functions to use the 
-  OS driver's notion of mt_file if there is an error.
-13Feb04
-- Add DB update scripts retrieved by Scott to a new updatedb
-  directory at the top level.
-- Add -p option to bcopy to allow ignoring errors on input.
-- COALESCE(xx,0) does not work on PostgreSQL because the 0 is not a 
-  correct time. Replaced by adding LastWritten IS NULL to the sort
-  line as was first suggested by JML.
-12Feb04
-- Use COALESCE(LastWritten, 0) in sql_find.c to get NULLs to sort last.
-  See note above.
-- Add write/read and positioning test to btape "test" program.
-10Feb04
-- Fix bad printf of InChanger flag reported by Pascal Pederiva.
-- Fix bad indexing off stack in authenticate.c reported by
-  Pascal Pederiva.
-09Feb04
-- Add \n to hosts.access reject message.
-- Implement security message class and make hosts.access message use
-  that class.
-08Feb04
-- Fix check_memory bug in ua_query.c, which gives a bus error on Solaris.
-  This affected only the query command.
-07Feb04
-- Added backup to cdwriter script to examples provided by Johan Decock.
-- Fixed a bug where ls really did lsmark (just invert command table
-  entries).
-- Fix bug where a soft linked file and a directory had the same name
-  by treating the soft link as a directory and putting the entries under
-  it. This fixes the bug reported by Alexander Mueller.
-- Fix a deadlock situation in the new watchdog code where the 
-  watchdog locks its semaphore, and attempts to lock the jcr_chain,
-  but another thread has locked the jcr_chain and wants to free a
-  watchdog, which tries to lock the watchdog semaphore -- deadlock!
-  Used read/write locks to solve the problem. 
-- Improved the error messages when I/O errors or buffer id errors
-  are detected, and prevent non-sense errors from being printed.
-- Fix some incorrect messages in restore if no name is supplied
-  on the command line (e.g. pool= ).
-- Add the third digit to the release version number.
-04Feb04
-- Add -l option to bls that causes it to ignore tape label errors.
-03Feb04
-- Correct problems with jobs scheduled at a later time by hand.
-  Missing unlock(), backward test on pthread_create status.
-- Fix setip crash reported by Alan Brown.
-- Create bacula.spec.in in SuSE directory from Scott.
-- Fix missing unlock() in ua_status on access denial.
-- Lots of little cleanups, improving jcr use_count debug printing.
-- Add EMSG to mem_pool utilization statistics.
-01Feb04
-- New bacula.spec.in file from Scott
-- Add Scott's spec file to the platforms/suse directory
-- Modify configure.in to make platforms/suse/bacula.spec
-- Do not allow a resource name to be specified twice.
-
-2004-01-30 Version 1.33-30Jan04 Release
-30Jan04
-- Apply Jess Guardiani's second fix to list autochanger volumes without
-  opening the drive (necessary on FreeBSD if no tape is in the drive).
-- Added Postgresql configure search libraries recommended by Alan Brown.
-29Jan04
-- Reworked the command line handler in restore to walk through the
-  arguments one at a time. This makes the file= entries work correctly.
-  Also reworked the code that takes the MediaType and finds a 
-  storage device.
-26Jan04
-- I've noticed that the backups of Rufus, my development machine, can be
-  "stuck" for about 12 hours, then suddenly they run. In running the 
-  debugger, I see that it was stuck on the select() statement waiting
-  for the Hello.  Why this happens I am not sure. I re-organized the code
-  a bit because it didn't seem to be as robust as it could, but I cannot
-  explain the problem. 
-- As a consequence of the above, I have implemented a new bsock timer that
-  can be started and stopped. This is based on Nic Bellamy's new watchdog 
-  code. The timer is set with start_bsock_timer(bsock, timeout); If the
-  timeout expires, the bsock will be marked as timed_out and interrupted
-  with a pthread_kill() on the current thread.
-- Added 5 minute bsock timers to all the opening Hello/authentication 
-  exchanges between the various daemons.               
-24Jan04
-- New spec file from Scott.
-- New patch file from Scott for create_sqlite_database
-- Fix crash in run command if invalid pool specified on the command line
-  and then the user cancels the Pool prompt.
-- Separate Console and ConsoleFont resources in gnome2 conf files.
-- Remove possibly bad ASSERTs from bnet.c
-- Remove open() of device in dircmd.c, which fails on FreeBSD with
-  an autoloader -- thanks to Jesse Guardiani for this fix.
-20Jan04
-- Remove all "hostname -s" from configure except for RedHat. Use uname -n instead.
-- Implement SetIP command.
-- Implement Close On Poll in Device resource on SD.
-- Implement Full, Inc, and Diff Pools.
-- Implement Access control lists for Consoles.
-18Jan04
-- Define default working_dir as /var/bacula/working.
-- Implement setip console command to set new IP address for a Client.
-17Jan04
-- Implement maximum network buffer size directives.
-- Good first cut at access control lists for the console.
-- Optimize restore to select only latest Differential backup after
-  the Full, and then all following Incremental backups. Previously
-  everything after Full was selected.
-16Jan04
-- Organize kernstodo a bit (more to be done).
-- Add client IP address to BSOCK structure.
-- Use bit fields where appropriate in BSOCK structure.
-- Pass UAContext to ua authenticate in Director, and make it
-  set the appropriate console (or NULL for none).
-- Tweak restore "run" argument handling and add "files" keyword.
-- Add device name or Volume name to some SD messages.
-15Jan04
-- First cut multiple consoles.
-14Jan04
-- Update kernstodo
-- Add quit command to restore tree handler.
-- Make restore tree handler remember if a hard link is present, and
-  in doing a mark, only get database entry if there is a hard link.
-  mark commands thus run at least 2 orders of magnitude faster.
-- Add files=xxx field to run command submitted for restore.   
-- Add yes to restore run command if either yes or run is command line
-  argument.
-- Make "yes" on command line argument skip prompt for modification of
-  run job.
-- Add markdir and unmarkdir -- both affect only the directory in
-  question and do not do a recursive descent.
-- Make tree command automatically mark all higher level directories to
-  be restored when a directory or a file is selected.  Such directories
-  are indicated by preceding the name with a + to indicate that only
-  the directory entry is selected and not the whole directory tree.
-- Modify a few tree commands to walk through all arguments rather than
-  just taking the first one.
-13Jan04
-- Update copyright date on changed files.
-- Make mark command in restore tree run *much* faster by accessing database only
-  if the file actually is hard linked -- determined at time tree it built by
-  keeping a has_link bit in the tree entry.
-12Jan04 
-- Modify findlib/makepath.c to create all parent directories with full permissions.
-  This should solve the access problems on restoring files on Win32 systems.
-- Modify restore to report **** Restore Error **** if any error are found.
-  I.e. a file could not be created.
-- Change a few errors into warnings -- e.g. if permissions could not be set, but
-  the file is actually restored.
-11Jan04
-- Replace bsd_queue with dlist in lib/watchdog.c
-- Add Date: header to bsmtp.  Thanks to Meno Abels (abels) on SourceForge
-  for reporting this.
-- Remove ap==NULL check in src/lib/var.c as suggested by Christoph Barbian
-  because ap (va_list) is a struct on the Alpha, so the code does not
-  compile.
-10Jan04
-- Implement first cut of polling for a Volume.  New Device directive
-   "Volume Poll Interval = xxx" where xxx is a time specification      
-   (e.g. 5min). Default is off.
-- Call pthread_cancel on SD msgchan only if the threadid is non-zero.
-07Jan04
-- Change RH autostart scripts to start in Dan's order.
-
-2004-01-06 Version 1.33-06Jan04 Release
-06Jan04
-- Correct calculation of week of month in scheduler and in scheduled
-  listing.
-04Jan04
-- Fix cancel of job waiting on mount to be a bit cleaner.
-03Jan04
-- Fix seg fault -- don't close db in db_open_database(). It must explicitly
-  be called.
-- Doc updates
-- Allow purge of a single JobId from a Volume (code untested)
-- Implement fix to keep SD from looping complaining about the wrong volume
-  at the end of a tape -- reported by Phil, and fix confirmed by him. I cannot
-  seem to reproduce the bug here.
-- Clean up a few more strcpy()s.
-01Jan04
-- Fix configure.in FD User print per Lars.
-- Doc update.
-- New bacula.spec.in from Scott. Nice!
-- Make RunAfterJob non-fatal if it errs since the Job has really  
-  already completed the save.
-- Replace sprintf with bsnprintf in message.c
-31Dec03
-- Note, this change affects only the Win32 FD.
-- Fixed Win32 FD crash due to missing argument in status command. It
-  always crashed if there was a job that had previously run.  Thanks to
-  Christopher Hull for finding and diagnosing this problem.
-29Dec03
-- Fix SELECT as indicated by Dan in sql_get.c for returning Volume names.
-- Fix last_jobs list crash for utility programs (btape, ...).
-- Correct editing of FileSet name into SQL command.
-- Allow calling watchdog stop without initialization for utility programs.
-- Enhance btape test by attempting to forward space past the end of the tape.
-- Detect CAP_FASTFSF in btape test as possible reason for failure.
-- Attempt to prevent infinite loops in fsf_dev() if device not properly
-  configured.
-- Attempt to get correct file number on tape after backspacing at EOM. The    
-  correction should resolve differences in OS tape driver implementations.
-- Add ctl-c detection to bconsole. When reading from tty, interrupts any
-  output from Bacula, when reading from a file, it terminates the reading
-  and returns possibly exiting if it is a batch job.
-- Create devel_bacula.in script and make it configure itself. Very similar
-  to the new bacula.in.  
-- Modify bacula.in to have separate file locations for each daemon -- makes
-  it easier to make a new devel_bacula.in when there are changes.
-- Remove old config files when rebuilding configure to avoid error msgs.
-- Fix btape "test" to respect TWO EOF.
-- Fix fsf_dev() to use system notion of file if it is valid after bsf_dev().
-- Move btraceback.gdb to scripts directory on installl.
-- Add new mandrake bacula.spec.in
-28Dec03
-- Find commonset of c_iflags that work with FreeBSD tcsetattr on terminals.
-- Remove comments from string concatenation -- doesn't work on FreeBSD
-  compiler.
-- Moderately improve bpipe_close() errors. Must rethink status return.
-- Eliminate some Emsgs in favor of Jmsgs.
-27Dec03
-- Add optional Pool keyword on restore command line. If specified, the pool
-  used will be restricted to the specified pool.
-- "Finish" implementation of JobDefs.
-- Fix directory for chmod of cats scripts.
-26Dec03
-- Implement foreach_res() #define and start replacing old code.
-- Work some more on jobdefs -- more to be done.
-- Implement bstrftime_nc() bstrftime with no century.
-- Fix static console problem in gnome2 and gnome directories reported by Alan 
-  Brown.
-- Add code to test for valid Resource Names. Permitted characters are now
-  alpha, numeric, colon, period, minus, underscore, space.
-- Turnoff some unused code in timers.c
-- Start adding code to dev.c to prevent infinite loops if fast forward space
-  file (MTFSF) is configured on but not properly supported by OS.
-24Nov03
-- Sort FileSet selection list by CreateTime.
-- Add "lsmark", and "estimate" to tree routines.
-- Doing a mark or unmark now prints how many entries were changed.
-- Add command argument parsing to btape.c
-- Enhance EOT to print file:block on message.
-- Add repeat counts on btape bsf, fsf, bsr, fsr, and weof commands.
-- Enhance btape's fill command to be much clearer and more reliable.
-- Add state file to btape so that unfill command can be done any time
-  after a fill command.
-- Use reposition_dev() to position for read back of last block.
-22Nov03
-- Zap InChanger flag only if setting Slot to non-zero.
-- Added new SD directive TwoEOF, default off, that tells Bacula whether
-  to write one or two EOFs for EOM.  For the OnStream driver it must
-  be off, otherwise an empty file will be created.
-- Cleaned up the btape "fill" command to compare the last block written
-  and read rather than just printing them.
-21Nov03
-- Implement btape test for autochanger.
-- Implement btape test for Fast Forward Space File.
-- Moved up to cygwin 1.5.5-1
-- Implemented Fast Forward Space File
-20Nov03
-- Add support for selecting volumes from InChanger list first, then
-  selecting from all available volumes.
-- Ensure that Volumes are selected from oldest LastWritten data/time.
-- A couple of bug fixes ensuring the proper ordering of volumes.
-19Nov03
-- Return oldest LastWritten for find_next_volume.
-- Remove ASSERT from stored/acquire.c that could trip when it shouldn't.
-- Enhance SD status if debug_level > 1 to show details of dev status.
-18Nov03
-- Create update_bacula_tables, ... scripts and modify configure and Makefiles
-- Eliminate is_num() and use is_an_integer().
-- Add user slot selection code "slots=1,2-3,5,10, ..."
-- Start daemons at level 90 rather than 20 so that MySQL will already
-  be started.
-- Write alter_mysql_tables.in and alter_sqlite_tables.in
-- Add Drive and InChanger to Media record.
-- Update database level to 7.
-- Add db_make_inchanger_unique() and call it when creating and updating
-  the Media record.
-- Add Drive and InChanger to database code for Media record.
-- Allow changing InChanger flag in update command.
-- First cut at allowing the user to specify slots for updating autochanger.
-- Add scan to "update slots scan".
-- Add command in SD to readlabel.
-15Nov03
-- In the bacula start/stop script, ordered the stop: FD SD Dir to
-  give the SD the best chances of updating the catalog before dying.
-- Add Drive and InChanger to MEDIA_DBR record and to Volume update
-  from the SD.
-- Reorganize the Volume info update from SD so that the Dir sends back the
-  current information in case the Volume status has changed by expiring.
-  The DIR-SD protocol is not backward compatible (must update).
-- Fixed the signal handler to pass the signal to the exit_handler() 
-  previously it passed 1.
-- Modified SD so that on normal shutdown, it walks through all jcrs and
-  cancels them so that the Volume status will be updated in the catalog.
-- Found and fixed a bug where ST_LABEL was not set in append mode
-  (when a different tape was accepted other than the original one
-  proposed by the DIR.
-- Update the catalog Volume info after dev->file is incremented rather
-  than waiting for end of job.
-12Nov03
-- Change getdomainname() prototype for Darwin.
-- Add gethost_strerror() to create correct error message for
-  gethostbyname().
-- After doing a kill() of a stalled connection in watchdog, turn off
-  the timer to prevent an infinite loop.
-- Allow Bacula to rewrite the label on a disk volume.
-- Correct usage report printed by bsmtp.
-11Nov03
-- Complete changing references to bsmtp from smtp.
-- Add L_NONE for Admin and Restore jobs and update level_to_str()
-- Fix segfault from double free of RestoreBootstrap in job.c
-10Nov03
-- Change console to bconsole
-- Change console.conf to bconsole.conf
-- Change smtp to bsmtp
-- Implement .bconsolerc
-- Check if volume has expired when doing an update media for the SD
-09Nov03
-- Implement new code that assures that a non-zero Slot is unique within
-  a given Pool. When setting a non-zero Slot, the Slot of all other
-  Volumes with the same Slot is set to zero.  Redone later to add
-  InChanger flag
-07Nov03
-- Fix bug reported by Lars where an incorrect Volume name was printed
-  by the "status dir" command.
-06Nov03
-- Pretty up a few error messages printed by smtp.
-- Make btime_t int64_t so that one can do arithmetic.
-- Implement since as utime (64 bit UTC). 
-- Compute clock diff between Dir and FD, and adjust since time.
-- Apply SQL fix from Nic Bellamy (thanks).
-- Apply John's zlib #ifdefing fix.
-05Nov03
-- Add Dan's with-sd-user, ... to configure.in.
-- Add Dan's userid and group modifications to bacula.in
-- Lots of documentation updates.
-- Make console print "Enter a period to cancel a command" when starting.
-- Fix the "list nextvol" command so that it doesn't try to close the
-  database twice, giving a segfault.
-- Fix (hopefully) to dircmd.c so that a mount request does a pthread_cond_signal.
-  There was one path were the signal was not sent. This should fix the bug
-  that requires you to do two "mount" commands to free a job waiting on a mount.
-- Make dir_ask_sysop_to_mount_next_volume() return immediately if a slot is
-  specified.
-- Correct some of the messages in testfind.c (pointed out by Dan -- thanks).
-- Alias fd to client, sd to storage.
-- Changed order of Console commands so that short commands such as q (quit) 
-  are more logical.
-
-2003-11-03 Version 1.32d 02Nov03 Release
-02Nov03
-- Mainly a bug fix release.
-- Do a clean of both Gnome directories.
-- Require that FileSet id match when finding an Incremental
-  previous job. This was already the case for a Full.
-- Print message if no status returned from FD.
-- Correct "Do not forget to mount the drive" message. Test was
-  backward.
-- "status dir" stopped scanning the run records on the first
-  one that matched giving an incomplete listing.
-- Edit commas in Bytes on "estimate" command output.
-
-2003-10-30 Version 1.32c 30Oct03 Release
-29Oct03
-- Add %v to job edit codes. It edits in the VolumeName(s).
-- Add code to ensure that fds 0,1, and 2 are defined by dup'ing them
-  to /dev/null if necessary.  Mostly for Windows that does not have them.
-- Error check dir_create_jobmedia_record() 2 places in acquire.c
-26Oct03
-- More doc fixes.
-- Make message buffer longer for a status message that was    
-  truncated.        
-- Put termination on varargs calls in gnome2-console.
-- Scroll only if text sent and not for status update.
-- Add all possible Status codes the jobstatus_to_ascii()
-25Oct03
-- Add new spec file and cats patch from Scott.
-- Optimize tree.c a bit -- turn off debug code, keep node fname
-  length for fast rejection, add some statistics, allocate
-  in 100K and 1Meg chunks, use bool, uint16_t and uint8_t to
-  reduce node packet size.
-24Oct03
-- Eliminate ua_retention.c that was not used.
-- Improve error message when closing brace missing in conf file.
-- More doc updates.
-- Eliminate Don't forget to mount if it is a disk file.
-- Fix Gnome2 scrolling and blank screen problems.
-- Eliminate multiple JobIds in restore selection list.
-- Fix non-portable varargs code in var.c
-- Make doc fixes/changes suggested by Dan Languille
-23Oct03
-- Document new features.
-- Implement mod of Verify Job at the run prompt.
-- Correct SQL table definitions so that MySQL and SQLite
-  have all the values in the same position.
-- Correct a typo in configure.in when configuring GNOME.
-- In doing a "status dir" make it loop over all the run
-  commands in the Schedule rather than doing on the first one.
-- Close all unused file descriptors in bpipe.c otherwise if
-  a daemon is started, it will keep our TCP/IP port open.
-22Oct03
-- Print block read error (checksum, I/O, BB01, ...) once then
-  the number found at the end of the reading.
-- Implement RunAfterFailedJob
-- Change db_find_job_start_time() to require a Full save before
-  running an Incremental or Differential job.
-- Remove has_volume_expired from code that updates vol info
-21Oct03
-- Implement "delete job"
-20Oct03
-- More documentation, add Marc Brueckner's tips to manual.
-- Tweak gnome2-console scroll window.
-- Turn off some debug info.
-18Oct03
-- Modify Verify to accept VerifyJob = xx, where the last backup job
-  of job xxx will be verified.
-- Add changing the Pool name for a Volume to "update volume"
-- Write most of the code for Verify Disk to Catalog.
-- Recreate the src/gnome2-console directory.
-- Change all the text handling code to the Gnome 2.0 way.
-- Correct the way verify filenames are returned to the Director so
-  that directories are in canonical form (i.e. trailing /).
-- Handle casting bug in glade-2 by sed'ing support.c in gnome2-console.
-
-2003-10-15 Version 1.32b 14Oct03 Release
-14Oct03
-- Modify configure so that if threaded MySQL client library
-  is not present, Bacula will link with the non-threaded 
-  version.
-- Updates to the Web pages and to the manual.
-- Remove trademark symbol from title. Phil pointed out that it
-  does not display correctly in a title.
-11Oct03
-- Implement restore by file before date. 
-- Change restore arguments a bit so that you can feed it
-  multiple jobid= specifications or multiple file= specifications.
-- Pass restore with run option on to run_cmd.
-- Make run-cmd not prompt if it has a "run" on the command line.
-10Oct03
-- When pruning, select only old orphanned jobs to delete so that
-  the current job is not pruned too.
-09Oct03
-- Corrected return status for bsf_dev and bsr_dev in block.c and btape.c
-- dev.c used incorrect ruturn status for bsf_dev in the BSF at EOM
-  code. This caused all appends on FreeBSD to fail.
-- Turn on fast block rejection code.
-08Oct03
-- Optimize file index searches by adding a count to the bootstrap.
-- Write single files/blocks to bootstrap without the second part.
-- Add current Volume status to the cannot use this Volume message.
-- Zero the rx->bsr in ua_restore when freeing so it doesn't get
-  freed twice.
-- Lots of testing on the restore
-- I noticed that SD and FD bootstrap files were not always
-  deleted, so delete them as soon as possible.
-- Restore by file (or by selecting files) created some
-  horrible looking bsr files that defeated the forward
-  spacing code, so fix write_findex to work right.
-- Add zlib_strerror() routine in filed/restore in case
-  of zlib errors.
-- In filed/restore.c make sure all error returns cleanup
-  and close the open file descriptor.
-- Make sure to set *non* over filename in attr packet
-  after file is found, so error messages that print the
-  filename don't print an old, incorrect name.
-- Allow bclose() to be called after closing the file.
-- Fix a number of unclear help messages, ... reported by
-  Phil in btape.
-- Retweak stored/read_record.c so that it does forward
-  spacing at the beginning of every tape, not just the
-  first one.
-- Print repositioning message if verbose is set.
-
-2003-10-01 Version 1.32a 03Oct03 Release
-04Oct03
-- Combine the code in ua_output and ua_status that searches
-  the run records.
-03Oct03
-- Fixed "list nextvol" to search for the correct pool in the
-  Schedule Run records.
-- Correct an error in is_block_zero. It found a false
-  match if the first 1016 bytes of a 32K buffer and     
-  the last 248 bytes are zero.  Broke the sparse option.
-01Oct03
-- More documentation.
-- Test if multiple mail addresses works. Yes.
-- Add debug Jmsg() to trigger if the file I/O packet is
-  not closed in the FD, i.e file descriptor leaks.
-- When error occurs reading label in mount.c, start from
-  the very top so that the retry count is in effect.
-- Zap the mode in soft links in testls.c for regression
-  testing.
-
-2003-10-01 Version 1.32 30Sep03 Release
-28Sep03
-- Enhance manual faq, regression ...
-- Make FreeBSD read sizes always be a multiple of 512. Needed
-  to read raw disks.
-- Make FreeBSD accept block AND character devices for raw
-  disk reads.  On FreeBSD there are no block devices.
-27Sep03
-- Fix printing of EndTime on job report after rescheduling.
-- Fix jobq.c error returns to clean up before returning.
-- Make Cleaning tape aware of "unlabeled" volumes.
-- If a job is rescheduled, ensure that old job is
-  removed from SD's jcr queue -- i.e. it is still waiting
-  for FD connection.
-- Test rescheduling code.
-- Change ./configure to detect Cygwin enviornments.
-
-2003-09-26 Version 1.32 26Sep03 Beta
-- Add regression and GUI-interface chapters to the manual.
-- Fix "label" of a volume that is already in the catalog,
-  but not yet labeled.
-- Correct the test for spooling attributes which was backward.
-  This caused the creation of a spool file in the working
-  directory for every job run.
-- Print to the job output stream when block checksum errors
-  occur, but continue processing. If more than one occurs,
-  print number at end of job.
-- Remove a few unneeded tests from configure.in
-- Modify configure to use -pthread on FreeBSD 4.8,
-  but nothing on FreeBSD 5.1
-- Clarify that bmicrosleep() takes sec and microsecs
-- Apply Franc Carter's code to specify a DB host in 
-  bscan.
-- Fix sanity login length test in stored/dircmd.c
-- remove old code fro stored/job.c
-- Lots of work on regress so that it works on FreeBSD
-  and Solaris.
-- Make the default gnome-console wider (console.c)
-- Add \r to the items that terminate a token.
-
-2003-09-20 Version 1.32 20Sep03 Beta
-- Replace a number strcpy() calls with bstrncpy().
-- Added code to ensure that the names for each resource
-  type are unique. Two resources of different types can
-  have the same name.
-- More documentation
-- Added new full length modifiers for time intervals.
-  Compatible with previous method EXCEPT a modifier is now
-  manditory.
-- Completely restructured recycling. It should work now, but
-  in any case, the logic is much cleaner. A lot of new
-  code in next_vol.c
-- Added a few pthread_xx_destroy() for items inited.
-- Nic Bellamy pointed out that it wasn't necessary to do 
-  destroy() of static initialized pthread variables -- fixed
-  watchdog.
-- update VolStatus asked for the media and volume twice.
-- Changed a few more strcpy() to bstrncpy().
-- Made VolBytes=1 as indicator that the Volume is labeled.
-- Modified creation of Media record to include VolBytes,
-  same for sql_update - also set LabelDate if VolBytes = 1.
-- Copy any statically linked programs to install directory.
-- Change relabel flag to label in Update_media protocol Dir<->SD.
-- Change a few strcpy to bstrncpy ...
-- Update Media record after an automatic tape label.  
-- Added more debug code to bnet_server and bnet.c to attempt to
-  track down Alex's SD segfault (BSOCK==0)
-- Add additional debug cod for authentication errors in cram-md5.     
-- Implement "list nextvol job=xx" and add Volume to Dir status.
-- Retry waitpid if interrupted -- needed for FreeBSD!
-- Move lex.c debug level to 900
-- Add new aliases SDAddress, ...
-- Final changes for variable expansion
-- Possible fix to Alex's SD crashes
-- Correct incrementing counters not in catalog -- reported by
-  Chris Allen.
-- Correct memory leak in core var.c code -- reported by 
-  Chris Allen.
-- Make documentation of variable substitution a bit clearer.
-- Apply Nic Bellamy's patch to dbcheck.c to fix SQL to work
-  on both MySQL and SQLite.
-- Finally fixed the .messages that was sent during prompts
-  in the console with no readline.
-- Implement new Include/Exclude semantics.
-- Fix a good number of segfaults reported by Chris Allen in
-  the variable expansion code. 
-- Print warning message if a job is blocked by user unmount.
-- Fix additional variable expansion problem reported by Chris Allen.
-- Fix pathconf() error status bug that caused a segfault on
-  a FreeBSD system -- reported by Gernot Hueber.
-- Make sure the console sends ".messages" only when at the
-  command line prompt.
-- Apply a patch from Nic Bellamy that corrects a file descriptor
-  leak in the Storage deamon when a job is canceled. (Thanks)
-- Implement < and | in File daemon.
-- Implement ClientRunBeforeJob and ClientRunAfterJob.
-- Corrected BSRatEOF to be BSFatEOF in btape --
-  reported by Lars Koller.
-- Documented BSFatEof
-- Eliminated save_level in FD replaced by JobLevel.
-- Increased MAX_RES_ITEMS from 35 to 50 to handle
-  new ClientRunBeforeJob ...
-- Add line number in error message for restore from file.
-- Correct editing of jobids (misplaced comma).
-- Implement restore files.
-- Quickie patch to allow Purged Volumes to be mounted.   
-  Must review algorithm.
-- Eliminate a duplicated query from query.sql
-- Restructure ua_restore.c so that I can add restore files.
-- Correct positioning problem at beginning of a second volume 
-  introduced with the new forward spacing code.
-- Eliminated a sprintf() in the tree routines.
-- Doc updates
-- Added HOST_OS, DISTNAME, and DISTVER to the status output.
-- Eliminated a few stray Dmsgn(000, messages making them either
-  debug_level 100, or Pmsg().
-- Made the default "Maximum File Size" 1Gbyte in SD.
-- Cache path in tree.c to reduce calls to make_tree_path 
-- Documentation updates
-- Implement forward space file and block when reading a bsr.
-- Fixed a bug in db_find_next_volume() where the VolStatus was
-  not being returned.
-- Rework some of the query.sql records that were incomplete.
-- Fixed an ambigous SQL statement in restore.
-- Fix proper sorting order in restore display last 20 jobs.
-- Remove duplicate JobId's in feeding the directory tree.
-- Fix an orphaned ua buffer due to a return that should have been 
-  break so that cleanup code executed.
-- Changed some strcats and sprintfs int bstrncat() ... to prevent
-  possible buffer overflows.
-- Fix max file size code on tape so that after writing EOF, 
-  an appropriate jobmedia record is created.
-- Fix error messages in dev.c, which were copied into lots of
-  different subroutines without updating the text.
-- Add reposition_dev(), and make more of the return statuses of
-  dev routine standard.
-- Eliminate old semaphore and workq code. Keep only new jobq code.
-- Try to get a better default size for the gnome-console
-- Add code to avoid race conditions in starting/stoping the
-  heartbeat thread.
-- Correct potential race condition in heartbeat_stop().
-- Correct segmentation fault in mysql.c if no password given.
-- make pm_strcat and pm_strcpy return the string length
-- Use Phil's code to get the unadorned job name.
-- Move the MTIOCERRSTAT from just after a write() failure to
-  after writing the EOF marks on FreeBSD systems.
-- Enhance packet too big error in bnet.c and add some
-  ASSERTs in the send code.
-- Set heartbeat interval to zero by default.
-- Add Recycle to list of Update Volume parameters.
-- Use bget_dirmsg() wherever possible in Director.
-- Split next_volume code from catreq.c to next_vol.c
-- Consolidate editing job codes into a single routine.
-- Add Job resource name
-- Remove check for Win32 attributes in bls.  It doesn't
-  need to read them, only print ls -l.
-- Add SDConnectTimeout in FD.
-- Add Scott's perlgui directory
-- Upgrade from RH7.3 to RH9.  New autoconf.
-- Eliminate gnome2-console directory.
-- Correct English in status command.
-- Eliminate old shell expansion code and use BPIPE to call shell      
-  with echo command.
-- Documentation as usual.
-- Add a new bacula.spec for Mandrake
-- Add ownership to alist items. Default the list owns the items.
-- Make record_cb return a status (preparation for internal use).
-- Remove all clearing of remainder in read_record.c -- not necessary
-- Write a tapetest program for FreeBSD end of tape testing.
-- Modify read.c in Bacula to use read_record.c
-- Implement multiple records in read_record.c. One for each session that
-  is open.  Free the record with the EOS_LABEL is found (or at the
-  end of the scan).
-
-2003-08-02 Version 1.31a 02Aug03 Released
-- Yifang Dai reported a case where he stress tested Bacula and
-  backed up to four volumes, but only two were selected for the
-  restore. This is because I forgot that the selection could
-  span a volume entirely.
-- Added a missing CLIENT_FOUND_ROWS to the second attempt to open
-  the MySQL database -- this prevents UPDATE errors if nothing
-  actually changed.
-- Applied corrections to the manual supplied by Bob Collins.  Many thanks!
-
-2003-07-30 Version 1.31 Beta 30Jul03
-- Integrated Robert Mathews improved description of Priorities into
-  the manual.
-- Chased down the "The data is not valid" bug on WinMe/98/95.
-- Found an orphaned buffer in the set_attributs part of WinMe/98/95.
-- Add sleep(1) to console when it gets a SIGTSTP signal 
-  to prevent it from using 100% of the CPU.
-- Improve description of Priorities.
-- Add a bit more documentation to jobq.c
-- Complete hash table routine htable.c htable.h
-- Change M_INFO to M_ERROR in attribs.c for Windows errors.
-
-2003-07-23 Version 1.31 Beta 22Jul03
-- Apply a patch from Nic Bellamy that clarifies the error messages 
-  during recycling volumes.
-- Documentation.
-- Clear VolCatInfo in askdir.c so that readbytes is zeroed.
-- Add SD statistics to backup report.
-- Removed old workq code.
-- Fixed rescheduling after error.
-- Fixed delayed starts which were not working.
-- Added priority to values that can change when starting
-  a job.
-- Complete implementation of new job scheduler. jobq.h jobq.c
-  This code is turned off unless specifically enabled in src/version.h
-- Integrate code from Nic Bellamy to check for recycled volume in
-  mount.c in SD.
-- Fix a couple of bugs in dlist.c
-- Begin implementation of new job scheduler.
-- Take serial.h provided by David Craigon, which corrects differences in 
-  prototypes between serial.h and serial.c.
-- Make db_get_media_ids() return Media Ids only for the current pool.
-- Add new jobq.h and jobq.c drived from workq.
-- Add JobPriority to jcr, and Priority to Job resource as well as
-  to the run line in a Schedule.
-- Remove unused pool record from autoprune.c.
-- Implement Nic Bellamy's RecycleCurrentVolume.     
-- Implement RecycleOldestVolume.
-- Begin adding new JOB_QUEUE code to the Director.
-- Create a single routine recycle_volume().
-- Retry accept(), bind() and socket() if EINTR occurs.
-- Implement insert_before(), insert_after(), and empty() for dlist class.
-  Also require offset to be given by giving item and link address.
-- Make error some messages in smtp.c a bit more explicit.
-
-2003-07-12 Version 1.31 Beta 14Jul03
-- Marc Brueckner reported a crash during restore (a missing tree->)
-- Moved host.h.in file from filed to src.
-- Update btraceback to include host os, distname, distver in output.
-- Split list (in lib) into alist and dlist both with .h and .c.
-- Update home page to include Project status page.
-
-2003-07-12 Version 1.31 Beta 10Jul03
-- Manual updates.
-- Clean up some unused variables detected by the IRIX compiler.
-- Test two directories on Win32 -- caused a crash. I forgot
-  to NULL the uid cache pointer after releasing it.
-- Use bstrncpy() instead of strcpy() in find_files.
-- Clear a few linked lists in the temp directory packed in find_one.c
-- Eliminate an unnecessary variable in attr.c
-- Clear the cache pointer after release in idcache.c
-- Implement a new C++ doubly linked list class.
-
-2003-07-08 Version 1.31 Beta 08Jul03
-- Update document for Win32 stuff.
-- Ensure VolStatus value for update is permitted.
-- Fix cached_path so that it is local to the jcr, otherwise, there
-  are problems from job to job.
-- Fixed idcache.c which was not thread safe and didn't release memory,
-  and didn't always edit the userid correctly.
-- Correct missing pool memory allocation in update voluseduration.
-- Release mutex in pool_mem.c before triggering ASSERT.
-- Lock database while recycling.
-- Fix a bug in editing since where I forgot to update to the new size.  
-- Implement all the command line update arguments.
-- Modify label to use volume=xxx for the new volume and oldvolume=yyy
-  if doing a relable.
-- Added yes to run command line arguments.
-- Clear errno in editing a string to utime.
-- In restore print only volumes that will actually be used.
-- Fix bextract -- add appropriate breaks in new case code.
-- Add a new test -- bsr-opt-test for testing bsr optimization. As usual,
-  it pointed out a bug where the directory tree handling code destroyed
-  the restore arg list.
-- Many updates to the manual.
-- Pass prefix links flag to FD.
-- Sort list of commands for Console
-- Set default FD and SD concurrent jobs to 10.
-- Rework the find next volume code in catreq.c to correct some minor
-  but subtle logic errors and to eliminate a goto.
-- Did spell check on manual.
-- Removed bindtextdomain() as it conflicted with RH8.0 headers
-- Fixed parse_args to pass address of POOLMEM struct.
-- Constrain FileIndexes written to BSR to be within range of Volume.
-- Suppress writing volumes to BSR if they are not actually referenced.
-- Make FOPTS use alist for match and base entries.
-- Pass prefix_links to SD.
-- Add command line interface to most items in "update volume=xxx"
-- Add command line interface to restore "jobid", "current", "before", "all".
-- Add command line "yes" to run command to supress prompt.
-- In new alist code, free only if allocated.
-- Overload [] with get() code for alist.
-- Fixed the code that wrote FirstIndex and LastIndex to the database. It
-  was not correct at the end of a volume (basically included indexes in
-  the second volume).
-- Fixed bscan to work with the new code and to properly build JobMedia
-  records.
-- Added code to the read end of block.c to properly track Volume bytes,
-  blocks, and files. I thought this was not necessary, but it is critical
-  for bscan to work correctly.
-- Modified read_record to properly track First/LastIndex -- needed by
-  bscan.
-- Eliminated some old Volume write code.
-- Changed RecycleOldestVolume to PurgeOldestVolume
-- Added what I hope are the "final" touches for Win32 stuff.  There
-  are still a lot of annoying little problems.
-- Added the "portable=yes/no" option to Include. If set, it disables
-  use of BackupRead/Write for Win32, so in principle, the data should
-  be portable.
-- Pulled in more recent config.sub and config.guess from /usr/share/libtool
-- Replaced the system fgets() by a Bacula version that ignores
-  interrupts (i.e. signals).  This truncated output from child processes.
-- Make file_index int32_t everywhere.
-- Moved LinkFI into ATTR structure.  Also integrated data_stream there too.
-- Moved code that sets the stream for writing into create_file.
-- Removed a signal(SIG_IGN, SIGCHLD) from dird.c that prevented getting
-  the status of child processes.  This allowed removing the FreeBSD 
-  kludge to bpipe.c -- the status is now obtained correctly.
-- Hand scan the stream header that arrives in append.c to avoid machine
-  dependencies of sscanf().
-- Implemented code to put Data stream in Attributes record. 
-- Check if data stream is supported, if not, ignore.
-- Fix crash when multiple Includes are given (missing parens).
-- Clear WroteVol in askdir.c when JobMedia record is created.
-- Implement simple array list class for use in Bacula.  New files
-  are lib/list.c lib/list.h. Probably will not use until version 1.32.
-
-2003-06-24 Version 1.31 Beta 22Jun03
-- Change Purging Oldest Volume message to Recycling Oldest Volume.
-- Limit results from find_oldest_volume to one.
-- Fix possible buffer overrun in the restore tree handling routines.
-- Fixed a crash in VerifyToVolume because I moved the close_db()
-  down into the free_ua_context() and should not have done so.
-- At a "var" command in the Console that does variable expansion and
-  prints it.
-- Implement first cut of estimate command.
-- Change find_next_volume() for oldest to use LastWritten instead of
-  FirstWritten -- also add Append to volumes slected.
-- Do normal recycling before checking for RecycleOldestVolume.
-- Implemented block rejection on read. This should make restores run
-  much faster. Next release will have block positioning -- even faster.
-- Very preliminary support for Gnome-2.0.  Text does not yet work.
-- Correct buffer corruption in find_one.c with long directory names (Win32).
-- Make setting owner on directories M_ERROR rather than M_WARNING.
-- Fix printing of JobId in run listing for restore job.
-- Reduce heartbeat read check interval to every 10 seconds on Cygwin because
-  there is no working pthread_kill().
-- I finally designed a test for multiple simultaneous jobs,
-  and sure enough it broke when the jobs are split over multiple
-  volumes.  Now fixed and working!
-- Eliminated a few "duplicate" error messages by testing for canceled.
-- Add ASSERT for device use count going negative.
-- Fix BlockNumber checking in stored/read.c (got first one wrong).
-- If socket is timed out, do a shutdown(fd,2) instead of close().
-- Fixed return status from SD to FD by setting JobStatus in append_end() 
-- Add arrays to Environment variables. Elements separated by |.
-- Implement Reschedule On Error, Reschedule Interval, Reschedule Times.
-- Add a new pool PM_NAME -- gets a name length buffer.
-- Implement fast cancel of FD blocked on writing to SD by using
-  pthread_cancel(). Turned off on Cygwin due to bug.
-- Add code to handle EAGAIN in writing (probably not necessary). Use
-  select().
-- Eliminate size_t from pool control buffers.
-- Complete Counter resource.
-- Complete LabelFormat (except for WrapCounter) plus counter
-  inrementation.
-- This needs a database change to eliminate PoolId from counters.
-- Made a more compact format for the document index.
-- Add Phil's checkhost to examples directory (thanks Phil).
-- Implement generalized LabelFormat (documentation to come).
-- Implement Counter resource.
-- Cleanup examples/kernsconfig
-- Implement restore to a specific date.
-- Fixed a but in automatic labeling (and use durations expiring) analysed
-  and reported by Rob Proffitt (thanks!).
-- Cleaned up a few Cygwin compile problems.
-- Made a 10Jun03 release (it is in production here)
-- Finally took the big plunge and fixed restoration of links and other
-  files that have been changed between the backup and restore. Basically
-  if the file exists, it is deleted, then re-created.
-- Purge only Volumes marked Append, Full, Used, or Error.
-- Allow pruning of volumes marked Append, in addition to Full and Used.
-
-
-2003-06-10 Version 1.31 Beta 10Jun03
-- Eliminated all plain email addresses and replaced them with " at " in
-  place of @ to reduce havesting by spammers.  Doc + Web Site.
-- Started working on making POOLMEM a struct rather than a char. Lots of
-  work to do.
-- Fixed bscan to handle -V option.
-- Fixed bscan to handle two File volumes.
-- Corrected a misplaced comma it get_fileset() in cats pointed out by bscan.
-- Added two Volume bscan test to regression scripts -- write two volumes,
-  purge and delete everything, bscan the tapes, and do a restore. It works!
-- Reorganized the backup/restore code to move the attribute information into
-  an ATTR packet, which is passed in place of tons of arguments.  Moved some
-  code into lib/attr.c and lib/attr.h.  Then eliminated all the duplicate
-  attribute code.
-- Moved FT_ types into baconfig.h.
-- Defined FT_ types to use only 16 bits. The upper half of the word is
-  reserved for adding optional fields in the attributes packet.
-- Moved jcr->where into common part of jcr and have it deleted in lib/jcr.c
-- Put all attribute reading code on switch() with cases instead of a big
-  if (restore.c, bls.c, bextract.c, bscan.c, ...)
-- set_attributes() now takes ATTR packet, and thus has much fewer args.
-- moved print_ls_output() into lib/attr.c  
-- implemented is_stream_supported().
-- create_file() now takes ATTR packet so has many fewer args.
-- add mtime_only code.
-- Rewrote bnet.c read and write routines to quit if bsock->terminated is
-  set.  This will allow setting non-blocking writes and then receiving
-  a termination message and terminating the Job immediately rather than
-  waiting 2 hours for the line to timeout.
-- Put catalog db name in some error messages.
-- Code for restore is now much cleaner, with much of it in lib/attr.c,
-  and it is now common for all readers.
-- Add first cut of proper support for Win32 Backup code.
-- Fix bug in restore Win95/98/Me.
-- Pass mtime_only flag to FD. Needs config record.
-
-2003-06-04 Version 1.31 Beta 04Jun03
-- Fix block.c to check errno only in case of return status -1 as 
-  suggested by Justin Gibbs (FreeBSD).
-- Implemented qfill command in btape for quick testing write/read of a tape.
-- Discovered that FreeBSD pthreads re-use the same thread id, which causes
-  the SD to fail when a user leaves a device unmounted (old pid is reused
-  and lock_device() thinks the same thread is calling again leading to
-  inconsistent state). Set id to zero after blocking the device during
-  unmount.
-- A lot of clean up, moving subroutines around for TermCode.
-- Free ua->prompt when Job terminates.
-- Add AutoPrune and Recycle to values copied from Pool resource
-  into Pool record on create/updated.
-- Implemented bsr for Verify VolumeToCatalog. 
-- Improved the Verify Job report using SD and FD term codes.
-- Split tree handling routines from ua_restore.c to ua_tree.c
-- Split bsr routines from ua_restore.c to bsr.c and bsr.h 
-- Fixed clash between FD and SD returned job values. Report now contains
-  values from FD.  Maybe I should change? or give both.
-- Attempt to fix negative use_count for dev packet in SD by adding
-  a couple of open_dev().   This may be cause of Dan's crash.
-- Clear no_wait_id when device is unblocked. This may be cause of Dan's crash.
-- Eliminate old "new lock code".
-- Add configure of mtx-changer for mtx path.
-- Always rewind tape before releasing it (for FreeBSD).
-- StartBlock was one too large for second volume.
-- Fixed restore to display status from both SD and FD.
-- Unified return status message for backup and restore.
-- Corrected segmentation fault reported by Dan when doing "label barcodes"
-  on a File.
-- Corrected a segmentation fault when attempting to send a JobMedia record
-  to the Console -- reported by Dan.
-- Added MySQL documentation for using the threaded libraries.
-- Added new columns and tables to Catalog database.
-- Wrote alter scripts and tested them (thanks to Dan for the help) on
-  MySQL and SQLite.
-- Started using enums where ever possible when passing flags to 
-  subroutines. This helps make the source much more readable.
-- Corrected a bug where a vertical database listing was being used in
-  the query command.
-- Added new argument to parse_args() to prevent command arg overflow.
-- Renamed ua_db_query.c ua_query.c.
-- Split scan.c out of lib/util.c
-- Perhaps I have *finally* fixed the command line history in gnome-console.
-- Added support for smartalloc for any global new or delete command
-  by overloading the global operators.
-- Made the default time with no qualifier day rather than seconds.
-- Fixed a bug in the store_size() routine that improperly converted from
-  double to uint32_t.
-- Started using "bool" where possible.
-- Zap SD session key once it is used.
-- Added *lots* more checking for strcpy -- bstrncpy(), ... 
-- Added CreateTime field to FileSet record and print it to distinguish
-  FileSets. 
-- Print an information message when a new FileSet is created.
-- Include the FileSet date/time in the Job report.
-- Indicate if a Job is upgraded in the Job report and from what previous level.
-- Incremented the database version.
-- Ensure that any DB error message is printed if the start_time of a previous
-  save is not found.
-- Free orphaned buffer in ua_restore.c in case of database error.
-- Implement enum for response DISPLAY_ERROR and NO_DISPLAY
-- Implement enum for create_pool (POOL_OP_CREATE, POOL_OP_UPDATE).
-- Make sure FileSets printed in restore are in order.
-- Add a number of bstrncat, and other protected string operations.
-- Clean up old structs in dird_conf.h
-- Remove all Slot invalidation code.
-- Add Automatic choice message to all do_prompt() calls.
-- Eliminate JobId from restore if not used.
-- Clean up a few error messages.
-- Make fill/unfill commands work correctly in btape.
-- Enhance btape fill and unfill commands.
-- Implement real Pmsg() code so that negative levels work in Dmsg()
-- Implement block number check -- had to turn it off because it doesn't
-  work.  Need to verify that it is the correct block and that block
-  numbers are properly written.
-- Moved readline from depkgs1 to depkgs.
-- Reworked the configure code to handle readline correctly. This was broken
-  mostly due to the fact that the readline routines are nested down one
-  directory.  Also, I missed one header file that was needed (possibly added
-  in a later version).
-- Put correct include on the dependencies make for Console readline.
-- Remove JobMediaId from VOL_PARAMS (no longer needed).
-- Sort VOL_PARAMS by JobMediaId using SQL in cats.
-- Add jcr as argument to block.c read_block... routines so that error
-  messages are immediately displayed.
-- Make bsr_dev() edit an error message if it is turned off and return 0.
-- Add checking for the BlockNumber in the read routines -- lots of
-  false matches are found -- much check writing end.
-- Now sort bsr volumes by JobMediaId -- produces better results.
-- It turns out that under certain circumstances, when doing a restore, the
-  Volumes will not be written to the BSR in the correct order.  I don't
-  know exactly why, but many thanks to Dan Langille for reporting this.
-  The solution is to sort the Vol_Params within each bsr (done), and to
-  sort the bsr chain (not yet implemented). Note, the bsr chain should
-  always be in order unless the user explicitly specifies the JobIds in
-  a different order.          
-- Began implementing C++ structs rather than typedef structs as in C.
-- Added volatile to a lot of variables that are used in two threads at
-  the same time. This should prevent improper optimization.   
-- Fixed a missing space in the "run job=xxx where=" the where was
-  glued to the end of the previous stuff (bootstrap filename). 
-- I *finally* found the cause of the mysterious failure of shell expansion.
-  It was due to the read() getting interrupted!  That's what opening up
-  SIGCHLD will do!
-- Remove unused default tape drive names.
-- Create a new status.c file in stored and split the status code out of dircmd.c
-
-2003-05-22 Version 1.31 Beta 22May03
-- I discovered that C++ permits "prototyping" structures e.g. struct A; is
-  a valid statement. This permitted me to eliminate all the void *jcr, in
-  favor of JCR *jcr, which pointed out a number of bugs in block.c.
-- Change lib/bmisc.c to bsys.c (system routines).
-- Add set_working_directory() to lib/util.c
-- Remove some unneeded setjcr_job_status() since Jmsg(jcr, M_FATAL,...)
-  already sets it.  
-- Do not increment jcr->Errors for Fatal errors -- they represent non-fatal
-  errors.
-- Fix a few more places in FD where Errors was not incremented.
-- Print unexpected (or incorrect) termination message returned from FD.
-- Use switch() instead of giant if statement in verify_vol.c
-- Protect overrun from do_shell_expansion() by passing max length.
-
-2003-05-20 Version 1.31 Beta 20May03
-- Add mandrake to platforms
-- Suppress error messages if no bytes written to tape.
-- Suck up bootstrap file even on error so that Dir sees our error message.
-- Pretty much finish off the Win32 backup code.
-- Add DESTDIR code to autostart for creating non-root rpms
-- Echo input read from a script in Console.
-- Clarify error message for VerifyToCatalog
-- Add error counts in restore for M_NOTSAVED.
-- Adapt bfile.c to handle both Win95 files as well as WinXP files.
-- Add MTIOCERRSTAT for FreeBSD (clear error status).
-- Correct double jobmedia record when cancel at EOM reported by Phil.
-- Correct possible write at beginning of tape during cancel at EOM
-  as reported by Phil.
-- Document in detail how Incremental and Differential jobs work.
-- Add non-fatal error count on backup and restore Job reports.
-- Remove a couple uses of lld -- now prefer to edit and use %s.
-- Fix directory could not be accessed on Win32.
-- Improve message indicating that last Full backup not found. 
-- Fix free() too early in directory traversal code.
-- Prune Jobs with no JobFiles or that have JobStatus!='T'
-- Add a few more command line scans for prune/purge.
-- Restrict valid characters in a Volume name, and document it.
-- Make new Win32 save/restore work. Still a bit more to do.
-- Use reentrant version of mysqlclient library.
-- Use more machine independent way of finding gcc version.
-- Fix race condition in sql_list where messages edited before locking.
-- Lots of testing saving/restoring 6GB files.
-- Add where to restore where=/tmp
-- Complete implementation of Win32 streams in FD. Must test. Also,
-  must implement new streams in SD.
-- Make termination of daemons more "error" tolerant.  
-- Make default "duration" days rather than seconds if there is no modifier.
-- Install bcopy.
-- Add detection of available Win API's so that a single binary will
-  work on all Windows systems.  Reference those APIs through a pointer.
-- Remove use_win_backup_api and enable it in bfile.c if system supports it.
-- Modify dev.c so that it works if MTEOM is not defined (BSDI).
-- Change MT_xxx to BMT_xxx to prevent conflicts with BSDI.
-- Detect strtoll() in configure.
-- Implement replacement for strtoll() for BSDI.
-- Add platform files for BSDI.
-- Use Jmsg() instead of Jmsg1() in acquire because File:line prefixed in dev.c
-- Use Jmsg() in write_block_to_dev() so that no messages are lost.
-- Rework autochanger code in restore to handle case of cassette not in magazine.
-- Implement Windows BackupRead/Write(). I now have permissions right!!!!
-- Additions to the manual (Purging, Autopruning).
-- Add doc to code in autoprune.
-- Begin adding Level = Base.
-- Make Jmsg recognize console and direct messages directly back to it.
-- Hopefully fix mess in mount.c when a tape expires.  
-- Fix restore bug recently introduced due to Unix backwards status convention.
-- New bacula.spec from Scott
-- Add globals for database name and version and print them in traceback.
-- Eliminate SubSysDirectory in each daemon conf file.
-- Implement get_yesno() and get_pint() in UA.
-- Make Jmsg aware of console. Messages now sent directly to Console.
-- Created a single bacula.spec.in for by the MySQL and SQLite builds.
-- Added proper configuration to console.in and gconsole.in
-- Start adding textdomain() code for translating.
-- A number of minor code cleanups.
-- Rework shell expansion just a bit.
-- Add rewind() when releasing a tape before acquiring the next one.
-- Implement addition of Description in Service entry for Win32.
-- Update manual to eliminate unclear autochanger points as mentioned
-  by Dan Langille.
-- Implement DESTDIR everywhere.
-- Rework spec files for 1.31 and combine the main spec and the client
-  only spec making a client package. At the same time, rename the packages
-  so it is a bit clearer to the user. Also fix the build to work
-  as non-root (scriptdir was not prefixed with $RPM_BUILD_ROOT).
-- Correct Auto Changers and all other forms to Autochangers in the
-  manual.
-- John reported needing to do two "mount" requests, and indeed that
-  was the case. It turns out that pthread_cond_timedwait() does not
-  always return zero when awaken by a pthread_cond_signal().
-- Include RunBeforeJob and RunAfterJob output in job output report.
-- Implement a "real" Admin job that prints a mini-job report.
-- Clean up a few error messages in findlib and filed.
-- Recent changes to gnome-console caused initial output to be
-  lost -- now fixed.
-- The Win32 version crashed after each job. After hours, it turns out
-  that when running with LocalSystem privilege (and not as a user), when
-  Cygwin does pthread_kill(id, SIGUSR2), it gets a memory fault.
-- Moved stored/fdmsg.c to lib/bget_msg.c, and moved SD messages to
-  stored.c.  So now bget_msg() can be used by both the SD and FD.
-- Changed Director's bget_msg() to be called bget_dirmsg() to avoid
-  any possible confusion.
-- Implemented bget_msg() in general everywhere in the FD except for
-  job.c where the Dir and FD are communicating.
-- Implemented a Director only heartbeat in the FD for the cases where
-  there is either no connection to the SD or the FD is already reading
-  from the SD.  start_dir_heartbeat() ...
-- Add heartbeat to restore and verify volume.
-- Add "Heartbeat Interval" to Storage resource, which sets interval the
-  SD sends heartbeats to the FD and DIR, 0 disables heartbeats.
-- Add "Heartbeat Interval" to FileDaemon resource, which sets the interval
-  the FD sends heartbeats to the DIR, 0 disables heartbeats. 
-- Added heartbeat from FD to Dir every HB_TIME rather than forwarding
-  SD heartbeats.
-- First cut label dialog.
-- Turn on new semaphore code for simultaneous Jobs.
-- Fix cancel trying to release semaphore's not acquired.
-- Implement get_pint() and get_yesno() for UA.
-- Implement find_arg_with_value() for UA.
-- All command line "slot" to be specified for label command.
-- Rework heartbeat code in FD to correctly terminate.
-- Fix btraceback to use smtp and to eliminate double //
-- Fix "storage" command to include ssl for verify and restores.
-- Add Heartbeat code when SD is waiting on a tape -- heartbeat every 20 mins
-  to keep stateful firewalls from timing out the connections.
-- Fix src/stored/Makefile.in typo causing problems in statically linking
-  btape.  Thanks to Lutz for reporting this.
-- Create an is_client_alive script for checking if a client is alive.
-  Using this script prevents generating error messages.
-- Added corrections and updates to manual provided by Phil -- thanks.
-- Added RequireSSL to each program/daemon configuration.
-- Added EnableSSL to each correspondent for each program.
-- Added the Console resource to the Director (need to
-  implement individual Console authorization).
-
-2003-04-28 Version 1.30 released
-- Fix command history for gnome-console (must malloc).
-- Add two cancel points in acquire_resources(). The job will not
-  be immediately terminated in all cases.
-- The new AutoMount code broke File archives -- fixed.
-- Correct watchdog mutex race introduced yesterday.
-- Add JobLevel to Admin run started by UA.
-- Add -v to daemon startup scripts
-- Implement bmicrosleep(sec, msec);
-- Implement When for "run" command.
-- Remove unsigned from socklen_t definition in hopes it will work better
-  with older systems.
-- Remove code that attempts to set PID dir and SUBSYS dir if they
-  do not exist because it set them to sbindir!
-- Modify mount to initially attempt to read the volume if Bacula
-  wants a tape, none is mounted, and "Automatic Mount = yes" is set.
-- Prohibit setting --sbindir and --with-subsys-dir the same.
-- Fix missing argument that cause Kaboom in update slots.
-- Fix orphaned bsock when UA gets error contacting FD or SD
-- Nearly full implementation of Win Backup API, but it does not
-  work due to lack of permission! Arggg!
-- Implemented restoring directory permissions as they should be.
-- Implemented reasonable regression script.  It found a number of
-  restore errors.
-- Implemented the following @ commands in the console that work directly
-  in the console rather than in the Director.
-    input - read input from a file
-    output - write output to file
-    tee    - tee output to file and terminal
-    time   - print current time
-    version - print current version
-    exit    - quit
-    quit    - quit
-- Implemented new bfile io routines that will permit implementation of
-  Windows native APIs for reading/writing files.
-- By default always update hard links with the prefix, but do
-  not update soft links.  It seems inconsistent, but it is what
-  cp does.
-- Implement wait command in Console that waits until no jobs are running. 
-- Fixed the < code in Include/Excludes, which forgot to skip over the <.
-- Do NOT attempt to chmod() a soft link as it will change the file behind
-  the link!
-- OOPS! Lutz ran into a problem. In attempting to prevent string overflows,
-  I used bstrncpy() on a variable that was malloc'ed thus truncating 
-  Volume names!  Arrrggggg!
-- Lots of documentation of new features.
-- Rework Volume name scanning in console, made much more logical
-  and corrected a bug (confusion in calling sequence).
-- Cleaned up a few error messages in cats adding more info.
-- Add the IP address to error messages due to bad connects to servers.
-- Implement default File output in config files so user can start
-  saving right away without a tape drive.
-- Protect inet_ntoa() with mutex in case it is not thread safe.
-- Eliminate termcap from use in gnome console.
-- Remove unused SD maximum volume files and maximum volume jobs. They
-  are implemented in the Director.
-- Make the default for Incremental and Differential saves to compare
-  against both st_mtime and st_ctime rather than just st_mtime.
-  This includes files moved or copied.
-  Thanks to Matthias Wamser for bringing this fix to our attention.
-- On Win32 clients, make a pass through the include/exclude patterns
-  and change any back slashes to foward slashes. Prevents creating
-  unusable directory names containing both conventions.
-- Move ls -l output on restored files to M_RESTORED class.
-- Make gnome-console compile correctly on RH8.0
-- label barcodes now works.
-- Implemented "update slots".
-- Tweak btape "test" to always print suggestion for re-read last block.
-- Implemented "Cleaning Prefix"
-- Update alter_mysql_tables.in
-- More work on barcodes.
-- Zap VolHdr in SD when attempting to label a tape that is not
-  there.  Prevents false tape names the next label command.
-- First cut of bar code reading is implemented. It doesn't do
-  anything but return the list to the Director.
-- Implemented relabel command that relabels "Purged" Volumes.
-- Check exit code in RunBeforeJob and err the job if it is non-zero.
-- Remove old testsuite -- too complicated
-- Print length when Authorization fails because of bad length.
-- Fix problem of NumVols in Pool getting reset on startup.
-- Implement full listing of DB records by listing them vertically
-  instead of horizontally.
-- Make changes to mysql scripts as suggested by Lutz Kittler
-- Fixed code to write Uname to Client record.
-- Fixed a problem (in btape) where Pmsg() was not printing.
-- Moved re-read last block test to last in "test" command of btape.
-- Lots of new documentation.
-- Fixed newvol.c to handle retrying 10 times if the volume name already exists.
-- Removed int_least16_t from sha1.h because it does not exist on some systems.
-- Release job in SD if canceled and waiting on a mount (better cancellation).
-- Prompt for Client in restore if not specified.
-- Print "Selection is empty!" if no selection list found.
-- Add new spec files and bacula.desktop from Scott.
-- Update client every time a job is run.
-- Add verbose option to daemons for printing more user error info.
-- Test if console works with readline 4.3 (yes, it is OK).
-- Release new depkgs
-- Release new winbacula.
-- Add Uname info to Client DB record.
-- Improve error messages and make them more consistent when a non-existent
-  Device is requested.
-- Separated the -mwindows option so that only Windows programs
-  are built with it (bacula-fd, ...) the tty tools such as console
-  dbcheck, smtp, testfind, ... are now able to be run in a standard
-  Windows DOS box.
-- Add | and < options to Exclude the same as in Include.  
-- Add typed in input to the text window in the gnome-console.
-- Change function that gets the entry text (previously had orphaned buffer).
-- Fix multiple Director problem in gnome-console (thanks to Lutz Kittler).
-- Thanks to Renato, I was able to test Bacula on a FreeBSD tape drive.
-  There are a number of significant differences: 1. reading less than
-  the number of bytes in a record returns an I/O error.  2. ioctl(MTEOM)
-  looses the file position. 3. Reading two two EOF marks (or ioctl(MTEOM))
-  leave you positioned after the second EOF, so you must backspace file
-  to be able to append.
-- Added BSF at EOM = yes/no to Device resource to allow proper positioning
-  at the end of a FreeBSD tape.
-- Made btape "test" do much better testing of error conditions (i.e.
-  it now ensures that the append went well). It will automatically
-  detect problems and apply fixes and then retry the test, if it
-  finally succeeds, it clearly says what directives need changing.
-- Add Scott Barninger's rpm changes to the build environment
-- Add changes to mtx-changer so users can add eject and sleep for
-  certain autochangers.
-- Implemented FreeBSD chflags (user defined flags).
-- Turn restore errors during setting of owner and modes into
-  warning messages -- for restoring files as non-root.
-- Fix how prefixes are handled in restoring soft links.
-- Modified btape "test" command to do only those things that
-  Bacula actually does. There is much more explanation, ...
-- Update manual.
-- Finally had to back up to gcc version 2 from version 3 to avoid version
-  3 nightmares.   
-- Final cygwin tweaks.
-- Move start time to *after* the resource locks are acquired.
-- Unable to duplicate Phil's disabling of Bacula with nmap, but
-  did make the authentication code a bit more conservative for
-  dealing with bad input.
-- Added code to the query command to escape all strings input
-  before substitution and sending to the SQL engine.
-- Escape user entered filenames for restore command.              
-- Cleaned up the waiting code a bit -- using broadcast instead
-  of signal and counting the waiters.
-- Implement new pthreads semaphore code.
-- #define new semaphore code rather than workq on USE_SEMAPHORE.
-- Lots of improvements to the document to address recent support requests.
-- Implement cycle through a set of tapes suggested by Eugeny
-  Fisher with the "RecycleOldestVolume=yes" record in the
-  Pool resource.  Basically this record causes Bacula to purge
-  to oldest tape when no more tapes are found.
-- Correct a number of small incorrect interactions between limit
-  variables during recycling.
-- Corrected a bug in db_create_media_record() where VolMaxFiles and
-  VolMaxJobs was not written to the database.
-- When the Director starts, the Pool record is updated in the
-  database with the current contents of the Pool resource.
-- Corrected bnet_connect() to immediately stop (rather than looping
-  for the timeout period) if there is a fatal error (socket, or
-  hostname to ip).
-- Reworked "purge" code to make purging Volumes easier.
-- Made "list volumes" list the volumes in all pools -- also
-  "list volumes pool=Default" does not produce and error message.
-- List Pool record after doing "update pool".
-- Remove pid file code from Win32 -- not really necessary.
-- Make bnet handle null jcr during cancel rather than crash.
-- Add CygwinInstall.bat and CygwinUnInstall.bat
-- Add db_lock() around newvol.c code to prevent race condition if multiple
-  callers want a new Volume name.
-- Lots of cleanup to Win32 code, with additional error messages.
-- Make Bacula work on Win95 (test for GetAttributesEx).
-- Add better error messages when end of media is reached or volume
-  capacity execed.
-- Turned off signal catching in readline(), necessary to keep console
-  from crashing on ctl-Z with RedHat 8.0.  Thanks to David Craigon for
-  testing this.
-- Make the 3rd and hopefully final change to the Finclude structures.
-  This new version permits multiple sets of options (more code to be
-  written) to be applied against the same set of files. Thus one can
-  have options that with match of *.gz and a different set of options
-  for *.c, ...
-- Integrated GNOME Console font resource code supplied by Phil Stracchino.
-- Check for job_cancelled() in bnet_connect() code to stop wait loop if
-  client not available.
-- Fix early end of file scanning conf file in lex.c, which previously
-  caused ABORT -- now reports error.  This could happen with an unterminated
-  string for example.
-- Move Maximum File Size code before write and detect error on writing EOF.
-- Additional fix for Solaris 2.6 and a bdb.c fix submitted by Armin Buehler.
-- Added detection for Solaris 2.6, which uses older setsockopt() calls.
-- Defined sockopt_val_t for setsockopt() calls.
-- Added fixes sent by Bevan Anderson that fix multiple connects to FD
-  (I zap keys for security, so must put back dummy key).  Also a fix
-  to the Internal database that wrote garbage after the filename in
-  the database.
-- Back out the __SVR4 changes.
-- Add automatic configuration of socklen_t
-- Attempt to fix problems reported by Lutz with multiple simultaneous
-  open file Volumes (experimental code). Serialized acquire. This may
-  fix the problem, but more thought and testing is necessary.
-- Add table of "supported" autochanger models.
-- Add Solaris 2.6 (__SRV4) changes sent by Peter Schmitz.
-- Correct tape selection code in SD (|| => &&). Thanks to Chuck Hemker
-  for the patch.
-- Eliminate FileOptions. Implement new Finclude and Fexclude that
-  have file options contained in it.  New structure must be transmitted
-  to FD.
-- Split Include/Exclude into new inc_conf.c file.
-- Cleanup new Include/Exclude and FileOptions.  Structures in Director
-  now correct.  Must transmit FileOptions to FD.
-- WARNING:  With the adddress and port code in the Catalog you MUST
-  remove old address= and dport= records!!!!!
-- Added code to remove cancelled jobs from the workq -- needs testing.
-- Added first cut AIX from output James MacLean sent me.
-- Second cut of FileOptions.
-- First cut of parsing FileOptions and Counters.
-- Added address:port for MySQL as well as socket for local access.
-- Fixed job.c in filed to properly handle excluded files. Apparently
-  I changed the daemon protocol but forgot to update the code.
-- Enhance testfind to handle include and exclude files
-- Fix getdomainname() prototype for Darwin
-- Added new -u and -g options for specifying userid and groupid to
-  use when running, so that Bacula can reduce its privileges.
-- When Bacula was hanging due to an NFS volume being down, I 
-  fixed a few places in the File daemon where is should have immediately
-  terminated the connection instead of waiting for the Director to do so.
-- Added first cut support for Darwin.
-- Temporarily comment out the O_NOFOLLOW to avoid possible subtle problems.
-- Implemented O_NOFOLLOW in creating files in create_file.c to prevent
-  creating a file at the end of a symbolic link.
-- Use chown() if lchown() does not exist (e.g. Darwin).
-- Always close stdin on startup to avoid having /dev/console attached.
-- Change all DATE occurrences to BDATE because it is used by Cygwin headers.
-- Add printing of Volume names in SD status output.
-- Display all open devices in device chain in SD status output.
-- All changing Pool in console run command.
-- Thanks to Eric Bollengier for pointing out that the run_program()
-  return status was not correctly generated. Now fixed (I hope).
-- Corrected crash in Internal Database getting Volumes.
-- Flush all daemon messages at the end of every job.
-- Fix Install.bat script so that Bacula restarts after reboot on WinNT/2K systems.
-- Minor changes in the gnome-console directory.
-- Integrated in my old Tcl/Tk code into src/tconsole and moved it up
-  from C to C++.  Pretty crude, but it is a beginning.
-- Close syslog() %n exploit in message.c
-- Edit space before each line in gconsole.
-- Added INCEXE structure so we can have FileOptions.
-- Added support for multiple simultaneous open file volumes.
-- Fix hard linked files so that the one saved is always restored.
-- Add * to restore "dir" listing to indicate marked files.
-- Add ability to make md5sum and sha1sum in lib directory.
-- Work a bit more on the new daemon protocol.
-- Use unmask of 022 or more restive
-- Create File volumes with 0640 permissions
-- Added support for SHA1 signature. Need to modify DB to have type.
-- Document SHA1.
-- Work a bit on getting proper child status from bpipe calls.
-- Added Ludwig's mtx-changer to the examples/devices directory.
-- Added a Warning not to use the Internal Database when it is initialized.
-- Compiled and tested SHA1, and added it to the library.
-- Added code to print the "load slot" status after autoloading.
-
-=============================================================================
-2003-01-24 Version 1.29 released
-23Jan03
-- Tightened up permissions on all .conf files to be 640 so they are not
-  world readable.
-22Jan03
-- Added prefixlinks=yes/no Job record to specify applying the Where
-  prefix to absolute soft links.  Code is not yet passed to FD, because
-  FD would then be incompatible with version 1.28.
-- Added skeleton of installation for Gentoo release for Patrick Naubert.
-- Add timer on open() for reading or writing a FIFO file.
-- Put btraceback and btraceback.gdb in sysbin dir (a bit of polution,
-  but at least dumps will work).
-20Jan03
-- Added "append" all messages to a log to default bacula-dir.conf
-- Added WriteBootstrap to default bacula-dir.conf
-- Made smartall.c print "Out of memory" if malloc() fails.
-- Added pthread btimer routines.
-- Added timer to FIFO open statement
-- George was still having problems with VolUseDuration failing.
-  On looking into it, one line of code subtracting 1900 was
-  mysteriously missing from the source -- bizarre.
-18Jan03
-- Yesterday's version corrects all the problems I was
-  previously having, and my production jobs are now completing
-  properly.
-- Added a #define dev_cap() to test the capabilities bits. I just
-  makes the code a bit shorter and a bit simpler.
-- Added phase 1 support for an output fifo device. The big 
-  difference here is that it is a STREAM device, which means that
-  Bacula will only write to it and not read. Thus, Bacula assumes
-  that the correct "Volume" is mounted and will construct a valid
-  label (without needing the Volume to be prelabeled), and write
-  to the device.
-- Added phase 1 support for input from fifo device (suppress re-read,
-  add empty buffer flag).
-17Jan03
-- Improve printout of dbcheck with # files/path fixing.
-- Zap SD authorization code after use.
-- Added <> back to smtp (think about this some)
-- Doc
-16Jan03
-- Massive change to add jcr as the first argument to nearly
-  every db_ call. This is because I was storing the jcr in the
-  db structure, which will not work because everyone shares
-  exactly the same structure.
-- More cleanups of error termination status in filed.
-- Found another bug in message.c where %s was missing in JmsgN. A lot
-  of cleanup in message.c
-- Found places where filename listing was made (restore, verify
-  vol) where the buffer could possibly overrun.
-- Chain include files on the end of the list so that the
-  order will be correct.
-- Rewrote mtx-changer to output one slot per line terminated by
-  a colon followed by an optional Volume Tag for the "list" command.
-  Preparation for handling Volume Tags.
-- My production crash remains elusive. Adding debug code or running
-  under the debugger eliminates the problem. I found a case in
-  message.c where I was extending the message string by two 
-  characters to send it to the console. VERY BAD. Rewritten.
-- Started implementing fifo and program handlers (i.e. streams)
-  in the Storage daemon. Lots to do.
-- Added a trace capability where trace statements are written
-  to a file. Tmsg(). Hopefully this won't be used much.
-- Running lots of "production" saved by scheduling a few minutes
-  after the current time -- slow process ...
-15Jan03
-- Removed <> on From and To in smtp.c as suggested by James MacLean.
-- Added code to suppress spurious error messages during cancel,
-  but I was unable to eliminate all errors -- to be worked
-  on later.
-- Up size of print buffer from 2000 to 5000.
-- My production run failed again. I'm beginnig to suspect 
-  hardware problems because running by hand or under the
-  debugger always works -- we will see.
-- Added Update Volume VolFiles to reset correct tape files 
-  a bit dangerous.
-- Use the mysql_escape_string() rather than internal version.
-14Jan03
-- Cleanup handling of JobStatus by creating a subroutine.
-- Fix a number of minor things with JobStatus.
-- Print FD and SD JobStatus on backup report.
-- Add JCR to findlib -- so now FD stops normally when cancelled.
-- My production Director segment faulted during the second Job.
-  I haven't been able to track it down. After rebuilding, all
-  jobs finished correctly.
-- In investigating the duplicated Paths, I found that there
-  were 10,552 of them -- only Path records. After checking the
-  code, I do not see the reason, but I've enhanced the code to
-  print the full path name.
-- I made a few improvements to tools/dbcheck. Mostly it provides
-  a bit more feedback with verbose mode on when eliminating
-  duplicate filenames or paths.
-13Jan03
-- During four simultaneous backups, the File daemon started
-  detecting buffer corruptions. It turns out to be due to the
-  fact that the smartall.c routines were not thread safe. They
-  are now.
-- Based on input from James MacLean and team, I eliminated a number
-  of places where printf could be recursively called by using "%s".
-- It turns out that because of an error of my understanding of
-  mysql_escape_string(), the last argument was taken as the length
-  of the string to be escaped rather than the maximum length.  I've
-  now corrected all my code -- Thanks James.
-12Jan03
-- George Motter reported problems with UseDurations, and it seems 
-  that there were a number of inconsistencies and problems with
-  FirstWritten and LastWritten.  Hopefully for the most part they
-  are now corrected.  Also fixed LabelDate if done through Console.
-- Try to chase down reasons why there would be buffer overruns.
-  Added P & V around referencing last_fname for status.
-  Rewrote find_one.c with MEMPOOL, but not yet tested enough
-  to commit.
-10Jan03
-- Give extra margin to converting filenames from Unix to Windows
-  in attribs.c of findlib -- dumb cygwin API doesn't provide for
-  a length.
-- Added file:line traceback to size_of_pool_memory, check... and 
-  realloc  in an attept to get closer to the memory overrun reported
-  by James MacLean.
-09Jan03
-- Made yet another fix to quoted string -- paths!  Thanks to
-  Scott Medlock for reporting this.
-- Made | and < work.
-- Implemented FIFO reading/writing. To do so, simply explicitly mention
-  the fifo file (named pipe) in the Include AND add the new option
-  readfifo=yes
-08Jan03
-- Started implementing | and < on Include names.
-- Changed source to . in cats directory as requested by Andrew Kokarev.
-
-=============================================================================
-2003-01-05 Version 1.28b released
-- Corrected a typo of working_directory in bacula-dir.conf
-  reported by James MacLean.
-- Fixed the fact that path and filenames in some cases were not
-  being quoted before going into the database. Many thanks to
-  James MacLean for reporting this.
-
-=============================================================================
-2003-01-05 Version 1.28a released
-- Corrected a missing quote in bacula-dir.conf reported by James MacLean
-
-=============================================================================
-2003-01-05 Version 1.28 released
-General:
-- Implemented Bare Metal Recovery for Linux and manual procedures for Solaris
-- Now using only a single technotes file kes-1.28 and will add to
-  it as the development goes on.
-- Wrote a general purpose bi-directional pipe command. This replaces
-  previous use of pipes as well as the run_program previously used.
-- Make BSRs stop if no more matches are possible.
-- Allow unliminted number of devices in Storage daemon.
-- Allow connections to Storage daemon before all devices are initialized.
-- Better documentation (and btape test command) on using fixed block
-  tape drivers.
-
-Changes submitted this submission:
-04Jan03
-- Add cygreadline5.dll to Win32 release -- needed for console
-03Jan03
-- Add scripts make_catalog_backup and delete_catalog_backup that makes and
-  deletes an ASCII copy of the catalog for backup. An example of how
-  to use it is in the <bacula-src/src/dird/bacula-dir.conf file.
-- Made a nicer column oriented listing of scheduled jobs for "status dir".
-02Jan03
-- Added backup/restore of raw partitions.
-- Corrected restoration of files in root directory (problem with
-  splitting path from file).
-01Jan03
-- Finally decided to cleanup handling of splitting path and filenames
-  in the cats directory. Now the code is in one place sql.c and it
-  is done using Pool memory, so there are no length restrictions.
-31Dec02
-- Add start of Solaris bare metal recovery
-- Add Site Visit usage statistics to Web page
-- Got Bacula listed on www.backupcentral.com
-30Dec02
-- Retest bare metal recovery on Linux 2 times with verify
-- Cleanup printout of verify differences using proper casting to
-  handle shorts and long longs.
-29Dec02
-- Added --enable-client-only to ./configure
-- Modified --enable-static-sd to work better and documented it.
-- Fixed Restore options (never,ifnewer, ...). They now work.
-- Moved the stored.c Resource lock into the allocation thread so
-  that the same thread sets/clears it. This created a problem on
-  FreeBSD.
-28Dec02
-- Added more rescue documentation.
-- Did a spell check of the Bacula doc.
-- Modified bscan to use the working directory as specified in the
-  configuration file as the default.
-25Dec02
-- Fixed an important bug reported by George Motter that caused only
-  the last option on an Include record to be used (all previous options
-  were lost).
-24Dec02
-- Chase down some inconsistencies in creating Media records from
-  the Pool defaults, and in updating/creating the Pool from the
-  resource. Also fixed the cats DB routines to include all
-  fileds (VolUseDuration was missing for example).
-21Dec02
-- Added building static versions of daemon static-bacula-dir, ...
-- Fine tuned the rescue (bare metal) code including support for grub.
-- Added skeleton freebsd rescue
-- Corrected SQL syntax error in autoprune code (JobType => Type).
-- Added error messages for SQL errors in autopruning.
-19Dec02
-- Documented Bare Metal Recovery
-- Create new "rescue" directory containg the Bare Metal Recovery code.
-- Fiddle with SQL a bit for pruning as apparently the last InitCatalog
-  was pruned after the expiration date eventhough it was the ONLY copy!
-  I'm not sure this is fixed yet.
-18Dec02
-- Allow Director to pass a NUL where string to FD (fix in FD).
-- Fix installation mv of query.sql.
-- Make sure btraceback.gdb is not wiped on "make distclean"
-- Corrected a bug in mod of replace options pointed out by Dave Anderson.
-16Dec02
-- Started adding FileOptions ...
-- Fixed  and incorrect print out of the number of files restored (Jarif).
-- Finally fixed EndBlock (and file address for Files) in catalog!
-- Added hostname to tape header as always planned.
-- Removed Level code (will not implement unless strong demand exists).
-- Tweaked bscan to print number of errors ignored before first SOS.
-- Enhanced btape "fill" to permit using one tape and to dump last
-  block before writing and upon read back.
-- Make fsf_dev() return 0 on fail and 1 on success.
-- Use new db_get_job_volume_parameters() to enhance Write Bootstrap to
-  contain more info (start/end file/block, file indexes).
-- Added --enable-static-fd, sd, and dir to configuration to enable making
-  static versions of the daemons.
-13Dec02
-- The btape test program was indicating errors on Adrian's machine
-  using the ATAPI (ide-scsi) tape drive. It turns out that this
-  is a fixed block driver as a consequence, Bacula must be setup
-  to write fixed blocks. btape was not always using the fixed
-  blocks defined in the Bacula config, so that has been updated.
-  It now works fine. A lot of tips added to the Bacula test command 
-  to help guide the user.
-- Documentation of the above significantly improved in the manual.
-12Dec02
-- Added code in watchdog to permit setting and clearing child timers. If
-  the timer expires, the child process is killed.
-- Modified restore to handle differential jobs.
-- Added a new test to the btape "test" command
-09Dec02
-- More documentation of new features (week position in scheduler, bsr).
-- Re-read last block written on full tape to verify it.
-- Fix segmentation fault with btape fill command due to missing FileSet MD5.
-07Dec02
-- Created better SQL input editing routines str_to_int64 and str_to_uint64()
-- Pull Client from database in Console restore command.
-- Create a Unique list of Volumes to be mounted (previously had repeats).
-- Made many of the SQL searches better by using the ClientId rather than the name 
-  in the restore Console command.
-- Modified reading of a tape to include the VolFile info. Once the
-  tape is past the specified file, reading stops.  The BSR now includes
-  both the VolFile and VolBlock. Currently VolBlock is not used.  
-- Handle multiple volumes better by creating a real volume list with all
-  parameters in it.
-- Display "At prompt waiting for input" in gnome console when at subcommand   
-  prompt.
-- Broke ascii to internal and internal to string editing routines out into
-  new lib/edit.c file.
-02Dec02
-- Added a readme and an afs-bacula script to the examples directory
-  that permits Bacula to backup an AFS filesystem. Thanks to
-  Lucas Mingarro for the submission.
-- Added A Sun-desktop autoloader script and Device definition to the
-  examples/devices subdirectory.  Thanks to Lucas Mingarro for the
-  submission.
-- If the WriteBootStrap fails, the job will now be marked in error.
-- Added a week position to the scheduler syntax that allows you to
-  specify 1st, 2nd, 3rd, 4th, or 4th, or first, ... fifth as a week
-  position specification in front of a day. So if you say
-
-    1st sun ...
-
-  the scheduler will start only on the first sunday of the month.  The
-  day specification can also be a day range e.g. sun-fri.
-  This code is untested.
-- Implemented bpipe.h and bpipe.c in src/lib, which defines a bi-directional
-  pipe.  This allows executing other programs and sending them information
-  as well as getting info from them.   
-- Replaced the previous pipe usage with bpipes in RunBeforeJob and   
-  RunAfterJob.
-- The mail program now uses bpipes rather than pipes, which means that any
-  error output will appear in the job output (truly bi-directional).
-- Modified BSR to handle counts and to stop when no more matches are possible.
-  This is untested.
-- Improved error messages in smtp.
-
-=============================================================================
-2002-12-12 Version 1.27d
-- This is a minor update that fixes a segmentation fault in btape
-  as well as reduces non-important error messages in bscan.
-
-2002-11-29 Version 1.27c
-- Yet another silly error duplicating a column name in the SQLite
-  make tables.  No code change, just a make file.
-
-2002-11-29 Version 1.27b
-- Set DB version to 5 in DB make files.
-
-2002-11-28 Version 1.27a
-- Use g++ instead of gcc for testfind in tools 
-
-2002-11-27 Version 1.27 (26Nov02) released 28 November 2002
-
-General: from kes25Nov02
-- Mostly Cygwin changes
-
-Changes submitted this submission:
-- Updated bdb_find.c to have new calling sequence for db_find_job_start_time
-- dird/catreq.c edit in Volume name in error messages to SD
-- attribs.c switch to using the cygwin API to convert from POSIX paths
-  to Win32 paths. This now permits Win32 path specifications in Include
-  statements (all combinations not yet tested).  It also avoids the large
-  number of errors seen by Lutz if a Win32 path is specified in the Dir.
-- Update testfind help and remove set_attribsEx debug code.      
-- Build testfind as default.
-- Turn off debug message in stored/askdir.c
-
-General: from kes21Nov02
-- Another change in the database. You MUST either re-initialize
-  your database or use the appropriate ./alter_xxx_tables in
-  the src/cats directory.
-
-Changes submitted this submission:
-- Additional documentation.
-- Added MaxVolFiles to the database (not yet implemented in code).
-- Increased the database version from 3 to 4.
-- Change VolMaxBytes to MaxVolBytes, which is much more descriptive.
-- Compressed unnecessary spaces out of a lot of SQL statements.
-- Changed many %d to %u where unsigned integers are used.
-- Added the Bacula version and build date to each backup output.
-  This will help knowing what version of Bacula was used.
-- Implemented VolUseDuration MaxVolBytes, MaxVolFiles, and MaxVolJobs
-  based on maximums set in the Volume (Media) record rather than in the
-  resource. This means the values can be individually set on a Volume basis.
-- Allow commas separating Include options (this was a subtle bug).
-- Added maximum string length argments to a number of subroutines to
-  prevent buffer overflows. Most notably was do_prompt().
-- Replaced MANY occurrences of strcpy() with bstrncpy(), which guarantees
-  both that the length is not exceeded and that the string is properly terminated.
-  This has a risk of a certain destabilization -- as does the changes to
-  the SQL noted above.
-- In cram-md5 routine use my_name if gethostname() returns an error.
-- Increase timeout from 2 minutes to 3 minutes in authorization code.
-- Check the full string including \n in authorization.
-- Throw away any response longer than MAXSTRING.
-- Added a number of additional error checks on subroutine return statuses.
-- Replaced as many lld's with edit_uint64 as I could find.
-22Nov02:
-- Added MaxVolBytes to Pool record - had forgotten it. Updated DB version.
-23Nov02
-- Update manual to document new Pool/Volume attributes
-- Correct make_sqlite_tables (typo, plus missing value in Pool)
-- Fix bizarre behavior in gnome-console and console when auth fails.
-- Add Pool attribute query
-- Add a few more error messages in askdir.c
-- More strcpy() conversions to bstrncpy().
-
-General: from kes18Nov02
-- Did a number of cleanups of string copying to limit the length
-  and prevent buffer overflows.
-
-Changes submitted this submission:
-- Added a mutex arount the gethostbyname() so that multiple simultaneous
-  jobs get the correct address.
-- Added the MaxVolJobs to the Media alter tables script for MySQL (forgot it).
-- Changed arg to db_find_job_start_time to be POOLMEM for returning the string.
-- Add the new VolUseDuration and MaxVolJobs to all the db_ routines.
-- Use bstrncpy() in most places in the db_ routines to prevent a bad 
-  database from crashing Bacula (self protection).
-
-General: from kes13Nov02
-- You MUST either re-initialize your databases or use the 
-    ./alter_mysql_tables
-  or  
-    ./alter_sqlite_tables
-  in the <bacula-src>/src/cats directory to modify your database tables.
-- Major improvements to dbcheck including an interactive mode.
-
-Changes submitted this submission:
-- Implemented VolumeUseDuration and MaximumVolumeJobs which control
-  when a tape can be marked Used.
-- New tape status "Used" means it was used and cannot be used any more.
-- Defined utime_t which is 64 bit epoch time in seconds.  btime_t is
-  64 bit epoch time in microseconds.
-- Created alter_xxx_tables to add new columns (VolUseDuration, MaxVolJobs) to
-  database. Incremented db version.
-- Changed a few subroutine names concerning dates to be more descriptive.
-- Fixed several places where the last filename was not stored in JCR in
-  FD verify_vol.c and restore.c
-- Major update to dbcheck.  Unfortunately I used subselects, which work
-  perfectly fine in SQLite, but not at all in MySQL.  I must now rework
-  it for MySQL. What a pain!
-- Removed "Database found" from configure output. It was no longer used or valid.
-- Corrected doc --working-dir => --with-working-dir  Thanks to Tuck for 
-  reporting this.
-- Added the database name to the error message for mismatched DB version.
-- Commented out GMP and CWEB from configure as they are not currently used.
-
-General: from kes09Nov02
-- Converted the manual over to a new format written in wml. This
-  gives navigation buttons on the top and bottom of each page
-  as well as a standard page size.
-- Updated the main Web site, providing a menu bar to the left
-  and much better organization and presentation of the information.
-- Added code to recognize a Volume written with a larger block
-  size than specified. The code automatically adjusts. 
-
-Changes submitted this submission:
-- Created a new scripts directory and moved most of the scripts
-  previously in the main directory there. This cleans things up
-  quite a bit.
-- Moved the randpass stuff into autoconf.
-- ensure that the generic make_bacula_tables and drop_bacula_tables
-  are installed.
-- Added code to filed to allow it to be run from inetd.  Just add the
-  -i option.  I have not tested it.
-
-General: from kes30Oct02
-- Alex found a problem with GZIP compression -- fixed.
-- bacula stript fixes.
-- Segment fault in Director fixed.
-- Added openbsd to platforms
-
-Changes submitted this submission:
-- GZIP compression was broken for large files due to a variable that
-  is changed during the compression. This was relatively easy to fix.
-  However, there were a number of fixes required to make GZIP and SPARSE
-  files work together. Found one more place in bextract where SPARSE_GZIP
-  testing was missing.
-- During testing of the above, I ran into the restore problem of multiple
-  FileSet records. Fixed by including the FileSetId and the MD5 on the
-  selection string, then always using the FileSetId. It is a bit
-  confusing for the user, but ...
-- Francis found a problem with bacula.in (fixed - thanks)
-- I found another problem with bacula.in, so now it REALLY should work
-  on most systems.
-- Added the Replace options code for restores. Not tested.
-- Fixed an ugly stack overrun bug in reading the config file
-  that has been in for a long time.  I found this in testing on FreeBSD
-  where the Director seg faulted.
-
-General: from kes29Oct02
-- Major change to the bnet communications routines.
-
-Changes submitted this submission:
-- Modified the bacula script to use pid files, so this script should
-  now work on more platforms.  Updated devel_bacula as well.
-- Added the full GNU hostname on the configuration print output.
-- Added gettimeofday() to configure, and tweaked a few variables for
-  OpenBSD.
-- Added a chapter to the manual on Porting Bacula to other platforms.
-- Documented in Tips how to use the WriteBootstrap record.
-- Modified bc_types.h to error if 64 bit types are not found.
-- Pass replace option for restore to the FD (no code to use it yet).
-- Modify the FD to pass back the GNU OS string as well as the DISTNAME
-  and DISTVER. This needs to be put in the Client record in the catalog.
-- Major reworking of the bnet routines to eliminate the zero length which
-  previously indicated a signal. This risks to create some subtle communications
-  bugs.  The changes now permit blank lines to be sent from the user to the
-  Director.
-- Found and corrected a few more places where the Win32 attributes were not
-  being recognized.
-- Permit spaces in the Where string (restore) by bashing/unbashing them.
-- Handle quotes correctly in the Console program (actually Dir ua code).
-  Previously they were not handled in the middle of a string.
-- Corrected two error message (error reading file), which previously stated
-  it was a network error.
-- Reworked the files in the binary Windows release. Removed unused programs 
-  and added a README with the copyright as suggested by John. Also added
-  console.exe to the release.
-- Found and corrected an autoloader mount problem where the wrong tape
-  was specified.  Previously it looped, then gave up.  Now it correctly
-  detects the volume is not correct and zaps the Slot in the catalog.
-
-General: from kes23Oct02
-- I have mainly worked on getting all the details of a Restore
-  to work correctly (new tape format, support for Win32 
-  attributes, ...)
-- Trademarked name Bacula.
-- Implement Bacula tape format 11 (1.0 Immortal). This format
-  will be maintained forever.
-- Accept Any Volume is yes by default. This modifies Bacula's behavior
-  when writing tapes.
-
-Changes submitted this submission:
-- Corrected a bug on FreeBSD where CFLAGS would get a "yes". I was
-  unable to reproduce this, but a user confirmed the correction.
-  It was a problem with detection of largefile support, which FreeBSD 
-  has by default.
-- Added a new "license" chapter in the manual. Re-licensed a number of
-  library routines (bnet.c, hmac.c md5.c, cram-md5, ...) with LGPL so that they
-  can be used in proprietary software to access Bacula if so desired.
-- Move Director's AutoChanger doc to correct location (in Storage      
-  resource). 
-- Document why trademark (to protect compatibility).
-- Implement and turned on Bacula tape format 11 (also BB02). This
-  format moves the VolSessionId and VolSessionTime from each record 
-  header into the Block header. This is MUCH more efficient when reading
-  records as now whole blocks can be skipped.   
-  Also added JobStatus in End Of Session record, and added MD5 for
-  FileSet, which is necessary to insure uniqueness.
-- Implement a new Bacula time format for btime_t. It is Epoch time
-  in microseconds (i.e. base 1 Jan 1970 in microseconds).
-  This replaces previous floating point times.
-- Added Win32 extended attributes. In doing so, I moved all attribute
-  handling from src/lib into src/findlib.  Added new streams for 
-  Win32 attributes and for GZIP Win32 attributes.
-- Modified "Accept Any Volume" so that it really permits any volume
-  in the pool to be mounted.  
-- Removed "Mount Anonymous Volumes" from Storage daemon config.
-- Implemented sparse files. You must add "sparse=yes" on the include line
-  for it to be enabled.
-- Print "None" in backup summary rather than 0.0% if there is no compression
-  enabled.
-- Improved error checking in daemon connection/authentication code to prevent
-  garbage data from harming a Bacula daemon.
-- All daemon tools MUST have a config file.
-- Completely strip drive specification on Win32 if a Where prefix is specified.
-- Corrected DB info for writing to files. Now the File Address is stored
-  in File-Block variables in the catalog.
-- All Storage daemon tools now use common code for acquiring/reading
-  Volumes.
-- If a device is unmounted, report it even if the device is not open. This
-  will help inform users who have BLOCKED Bacula by unmounting a drive.
-
-
-=============================================================================
-2002-10-12 Version 1.26 (10Oct02)
-General: from kes10Oct02
-- Changed Job name conventions to avoid : which is an illegal
-  character on Windows.
-
-Changes submitted this submission:
-- Added check for inet_pton to configure.in. If it does not
-  exist (e.g. Windows) use inet_aton
-- Documentation on GZIP.
-- Another restore doc example.
-- Documented btape fill command.
-- Set default restore directory from /tmp to /tmp/bacula-restores
-- Add additional no find error messages to sql_get.c
-- Creating a bootstrap file on Windows failed because the Job name
-  contained colons which are illegal on Windows. Replaced the
-  colons with periods.  This corrects the Windows restore problem.
-- Print number of files to be restored in "restore" command.
-- On Windows systems, if there is a prefix, completely eliminate
-  any drive: at the beginning of a path.
-- Minor corrections to the tree routines to handle Windows
-  files such as c:/ better. Previously it insisted on /c:/, which
-  would then not be found in the catalog for a "dir" command.
-- Modified cd command in restore to try /c: if c: fails.
-- Add a new S_ISWIN32 bit to the st_mode word so that low level
-  routines that create files do not print error messages.
-- More work must be done to restore all Windows files correctly.
-  Currently the following bits are not handled:
-    Archive
-    Hidden
-    System 
-  Also, all the dates are not properly restored.
-
-General: from kes09Oct02
-- More documentation.
-- Implemented new fill command in btape that permits filling
-  a tape and then reading it back to ensure that it works
-  with Bacula.
-
-Changes submitted this submission:
-- Added ReadBytes to JCR, which contains Job bytes read by
-  FD, JobBytes contains compressed output of FD.
-- Modified FD to pass back JobStatus, ReadBytes, JobBytes, ...
-  for backup jobs.  This is upward compatible.
-- Modified backup termination status report to contain the
-  compression ratio 100 * (1 - compressed-bytes/uncompressed-bytes)
-  This will always be zero if no software compression was
-  done, or if you are using a version 1.25 or older FD.
-- Pickup Job termination status of FD in backup, so now
-  the termination status represents the state of all three
-  daemons.
-- Implemented new fill command in btape that permits filling
-  a tape and then reading it back to ensure that it works
-  with Bacula.
-
-General: From kes06Oct02
-- Implemented first major cut of bscan -- program to scan a tape
-  and recreate a Bacula catalog.
-- Fixed lseek() relative negative seek that prevented writing multiple
-  jobs to a File volume.
-- Implemented BB02 tape format -- currently turned off for writing.
-
-Changes submitted this submission:
-- Updated README
-- Implemented new BB02 tape format, which moves the VolSessionId and
-  VolSessionTime from the record headers into the Block header.  It
-  is currently turned off.
-- Implemented new btime time/date format on the tape. This is currently
-  turned off.
-- Added JobStatus to EOS tape label. This is currently turned off.
-- Changed start_block, ... to StartBlock in JCR for uniformity.
-- Print a message telling which tables were dropped/made with  
-  ./drop_bacula_tables.
-- Return JobType and JobLevel in db_get_job_record().
-- Implemented get_current_btime(), which returns btime_t.
-- Bump debug message max size to 2000 bytes.
-- Add btime_t serial/unserial routines.
-- Rework all tape label routines to integrate btime and other
-  label format changes (currently turned off -- for writing).
-- Fix lseek() to always be positive -- block.c
-- Consolidate record, block, and label major #defines in block.h.
-- Major implementation of bscan. Some more minor tweaking will be
-  necessary.  E.g. add multiple records for multiple simultaneous
-  Jobs.
-- Cleanup lseek() to always use off_t as second argument.
-- Add new "created" tape label (EOT_LABEL). This generates a callback
-  to the read_records() routine when the final end of all tapes is
-  reached allowing proper termination and updating of the media records.
-
-General: From kes25Sep02
-- Added means to bind servers to specific address.
-- Documentation
-
-Changes submitted this submission:
-- Added DirAddress, FDAddress, and SDAddress records to the corresponding
-  resources that allow the server to bind to a specific address 
-  rather than any address.  This security improvement was suggested by
-  a user -- thank you.
-- Eliminated deprecated "Address" record from all sample Storage resources.
-- Made quite a lot of improvements to the bscan program. Much more
-  to do. Aside from details, it is able to recreate a database
-  from which you can do a restore.
-- The s option is not accepted on all versions of ar, so replaced it
-  by an explicit ranlib call.
-- Fixed a bug that caused the Director to crash if you rudely bring
-  down the console program in the middle of an SQL command.
-- Fixed a bug (missing break) that caused scheduled Admin jobs to
-  be listed as "Unknown type".
-- Removed old code from Storage daemon that used a separate FD port.
-
-General:  From kes14Sep02
-- Better key generation on non OpenSSL systems.
-- 64 bit file address support if available.
-- Implement autochanger for reading
-- Lots of cleanup of tape reading code.
-- Automatically create all Pool resources when Bacula starts.
-- Implement bscan.c
-- Implement autochanger use via the Console commands "add" and "label"
-- Begin implementation of a regression script 
-- Write bootstrap after ever job
-
-Changes submitted this submission:
-- After noticing that the non OpenSSL random key generator was
-  not good on Solaris, John wrote a very nice randpass generator.
-- Integrated John's makeSessionKey for generating the FD->SD
-  authorization.
-- Statically link tools (doesn't work on Solaris).
-- Document how to debug Bacula (new chapter in the manual)
-- Remove unneeded printing of error message in sql_get.c
-- Free SD description config record (previous oversight)
-- Bash spaces when sending Director names, and unbash them when 
-  received.
-- Ensure no divide by zero in rate computation in backup.c
-- Implement WriteBootstrap in backup.c
-- Allow tape reading to request volume information for any
-  volume.
-- Create all Pool resources at startup.
-- Show only Backup jobs in Restore listing of last 20 Jobs.
-- Handle 64 bit stat packets in restore.
-- Don't do shell expansion on store_dir in config if string 
-  starts with |.  This is used for piping the program for the
-  WriteBootstrap.
-- Ignore SIGHUP -- DéjàGnu was triggering this. 
-- Implement autochanger for reading, many changes to 
-  acquire_device_for_read()
-- Implement callback for reading Volume. Implement in bextract,
-  bls, and bscan.
-- Implement bscan
-- Add count to bsr.
-- Fix Volume in bsr.
-- Move autochanger code to new subroutine in mount.c
-
-=============================================================================
-2002-09-05 Version 1.25a (05Sep02) Released
-- Fix unitialized stack variable in bextract so it
-  will always read the currently mounted tape.
-
-=============================================================================
-2002-09-04 Version 1.25 (01Sep02) Released
-  General:
-- Added .cvsignore files in each directory to cut down on the
-  CVS output when scanning directories and finding Makefiles
-  and such which are not part of the CVS tree.
-
-  Changes submitted this submission:
-- Cleaned up a lot of the error messages in Verify, including
-  indenting.
-- Had to remove some of the "automatic" error message printing
-  in the DB because they are in fact things that come up 
-  for Verify but not really errors.
-
-
-  2002-08-30 Version 1.25 (30Aug02) Beta
-  From kes30Aug02
-- Fixed a bug where only the first file was restored if
-  it is hard linked. The other links were lost.
-- In some cases of restoring to alternate directories, softlinks
-  were not properly restored.
-
-  From kes28Aug02
-  General:
-- Bacula backups now run up to 12 times faster than version 1.24
-- Bacula can run multiple simultaneous Jobs.
-- Had to turn off TRANSACTIONS in SQLite because it doesn't work
-  with multiple simultaneous jobs (I'm working on this).
-- Added a better Job printout for Restore Jobs.
-- Added a save/restore Rate to backup and restore jobs. This
-  does not yet subtract out operator wait time so it will be
-  underestimated it the Job waits on the tape (mount/label).
-- Fixed a major bug caused by free()ing a buffer twice in
-  the Restore code. This made the SD more or less useless after
-  any restore Job. Arrggg!
-- DIR - SD protocol changed, both must be updated at the same time.
-- DIR - FD protocol changed in upward compatible way. Upgrade of   
-  FD not required, but recommended.
-
-  Changes submitted this submission:
-- Added bell to "make" when errors are detected.
-- Changed default compile option from -g to -g -O2
-- Additional documentation as usual -- much based on questions or
-  feedback from users. Thanks.
-- Fixed example config files to use new syntax and to have a 
-  Restore Job.
-- Define ETIME to ETIMEOUT for Irix
-- Added JCR filed to DB structure permitting direct printing error
-  messages from within the Database subroutines.
-  Some error messages may be printed twice as a consequence.
-  When I see them or someone reports them, I will remove the double.
-- Added JCR to the bsock structure. This allows direct printing
-  of network errors from within the network code.
-- Made most "trivial" debug messages have level 100 or greater. This
-  allows for easier debugging of new code using the range below 100.
-- Began replacing all Emsg() with Jmsg() using a NULL as the JCR in    
-  Jmsg() is the same as Emsg().
-- Fixed several crashes in the Director because of malformed config files.
-- Added SpoolAttributes to Job resource.
-- Pass CatalogFiles to SD. If set to no, the attributes are dropped 
-  within the SD rather than being sent to the DIR.
-- Cleaned up a number of information/error messages in user interface.
-  This includes eliminating the "pretty please" response in favor of
-  "yes/no" to delete volumes and pools.
-- Cleaned up quite a number of uninitialized variables reported when going
-  to -O2, most were harmless, but a couple could cause problems.
-- The cd command in restore was not working correctly (it didn't allow some
-  legal cds).
-- Fixed a segmentation violation in the directory tree handling code in 
-  the restore command.
-- Handle a few error conditions in the restore command better.
-- Permit "Where" to be set to nul in modification of a run command.
-- Clarified the error message for Verify if an InitCatalog has not previously
-  been done -- thanks Chuck.
-- Add MaximumConcurrentJobs to FD.
-- Added code to mem_pool to die if a buffer is released twice.
-- Lots of work done on SD for multiple simultaneous jobs. Split device.c
-  into device.c, mount.c and acquire.c
-- Started writing new lock code for SD, but may back it out -- needs more
-  thought. Current code works, but is too complicated. Maybe can simplify it.
-- Cleaned up the SD tools code quite a bit. Added bootstrap to all tools.
-- Ensure that tape session labels are not split across two blocks. This makes
-  reading them back much easier.
-- Fixed another restore bug concerning tape labels on multi-volume saves.
-
-=============================================================================
-2002-08-14 Version 1.24
-  From kes12Aug02
-- Made a new tools directory.
-- Moved smtp into the tools directory.
-- Created a dbcheck program in the tools directory that
-  checks for certain database errors and if requested fixes them.
-- Put the database link flags on DB_LIBS so that it now only is
-  on binaries that actually need it.
-- Document dbcheck and testfind programs.
-- Move testfind to tools directory.
-- Check for FileSet after getting Client name in Restore command.
-  Modify all necessary SQL commands to accept FileSetId.
-- Add a db_get_fileset_record in cats directory.
-- Correct list last 20 files concatenation to be MySQL 
-  dependent. They aren't SQL standard. Use SQL standard || for
-  other SQL programs.
-- Modify dir command in file selection to produce a long form
-  listing of the file/directory name.
-- Add platforms/irix/*.in files to CVS
-- Make Console command scanner accept quoted value fields.
-- If after selecting Client to restore, there are multiple
-  FileSets, ask user to select one.
-- After obtaining JobIds for restore, ensure that there is only
-  one MediaType, and select a Storage resource to be used.
-
-  From kes11Aug02
-- Made restore actually work.
-- Made console and gconsole be configured (requested by Chuck)
-- Updated kernstodo
-- changed fs in Job record to fileset for clarity
-- The console run command was not properly picking up the command
-  line arguments.  Fixed!
-- Changed add/remove/rm to mark/unmark
-- Volume keyword VolumeName was wrong, changed to Volume (in restore bsr).
-- Pass jcr to parse_bsr, and if non-NULL, it will output error messages
-  to Job stream rather than Emsg.
-- Modified lexical scanner to include caller context so that jcr can
-  be stored in lex context allowing error messages to be properly 
-  routed.
-- Renamed the Job message chain to be jcr_msgs. This eliminated the      
-  previous confusion with the default value, now named jcr->messages.
-- Implemented multi-volume bsr records.    
-- Implemented pm_strcat() and pm_strcpy() to cat/add to memory pool
-  buffers in same way as strcat/strcpy, but expanding buffer.
-- Modified db_get_volume_names to handle arbitrarily long Volume list.
-
-  From kes07Aug02
-- If the Console program terminated during the printing of messages,
-  the message file was left locked. This was corrected by using the
-  new read-write lock code.  
-- Implemented Pw() and Vw() for obtaining and releasing a write lock
-  using the rwl_xxx routines.
-- Deleted some old pthread_mutex code from mysql.c
-- In making the Irix port, I previously corrected the base64 routine so 
-  they were not sensitive to the machine definition of char. This made
-  them incompatible with previous versions invalidating MD5 signatures
-  which are in base64 format. I have now corrected this, making the
-  routines compatible with the previous version but also insensitive
-  to the default definition of char.
-- Removed some unnecessary NPRT() usage in signal.c (pointed out by
-  the Irix compiler).
-- Add back BNET_NONO for compatibility with older File daemons.
-- Implement runing a restore Job in the restore command.
-- Make installation of query.sql unconditional. To prevent you own file
-  from being overwritten, give it a different name.
-- Made parse_command_args() in ua take command from ua->cmd, this
-  simplifies it and allows usage in other places -- e.g. building
-  arguments for created run command in restore.
-- Cleaned the naming of s_full_ctx to be s_jobids.
-- Write the bsr created in restore to "working-directory"/restore.bsr
-- Fix bugs in command line scanner in run command -- also some misplaced
-  breaks!
-- Eliminate static cmd in ua_server.c
-- Eliminate segmentation fault when using the Run command in the
-  Console -- forgot to init_msgs().
-
-  From kes06Aug02
-- Did a good amount of documentation.
-- Added sql_cmds.c to CVS, forgot, pointed out by Chuck.
-- Added new platforms/irix directory to CVS
-- Turn off transaction debug code in sql.c
-- Reworked the scheduler so that it handles the same Job starting
-  twice in the same hour. Previously it took one or the other.
-- Tightened up the "slop" in the timings that I programmed to ensure
-  that the same job isn't run twice or that no job was missed.
-- Increase the sleep time.
-- Used job_type_to_str() in status so that Admin jobs are correctly reported.
-- Add internationalization message chars to a number of routines
-  in util.c
-- Make the watchdog timer clear the mutex when it exits.
-- Some tweaks to the Restore command. It needs fixing when a Job spans
-  two or more volumes.
-
-  From kes05Aug02
-- Initial cut at adding Irix File daemon support.
-- Lots of work on the restore command.
-- Take a stab at eliminating the "broken pipe message"
-  when the console program prematurely terminates.
-- Reimplemented transactions for SQLite by keeping
-  them all in the same thread.
-- quit in the Console program now waits for Bacula to
-  quit. To immediately quit, you must enter .quit
-- Eliminated BNET_EOF -- this COULD have some negative consequences
-  on interdaemon communications.
-- Define Job termination status for Admin jobs.
-- Write new bstrncpy() function that guarantees that strcpy is
-  properly terminated.
-- Fixed command input in ua_input.c to accept quoted items as a
-  single field. 
-
-  From kes01Aug02
-- The changes that added indexes to the SQLite database were
-  lost -- thanks to Chuck for pointing this out. Redone.
-- Fixed a problem quoting strings in SQLite. This showed up
-  as database errors with files containing ' or " in the filename.
-- Implemente restore command -- still in progress.
-- Added indexes to all fields in SQLite that exist in MySQL.
-- Moved unused immortal files from src/lib to src/immortal.
-  This will permit splitting depkgs.
-- Started work on adding embedded MySQL. Cannot get the tables
-  to work for the moment. Please don't try to use this option.
-- Convert to using single quotes for enclosing all strings.
-- Implement correct quoting algorithm for SQLite strings.
-  Is dequoting needed?
-- Started centralizing SQL statments in the Director in sql_cmds.c
-- Changed a number of M_ABORTs to M_ERROR_TERM so that program terminates
-  but does not produce a dump.
-- Allow wild-card matches in bsr for Client name, and Job.
-- Change OflineOnUnmount=no as default.
-- Fixed improper printing of filenames containing a space in bls.c
-  Thanks to Carlos for reporting this.
-
-===========================================================================
-2002-07-26 Release 1.23a
-- Fix segmentation fault is FD status.
-- Turn off TRANSACTIONs for SQLite.                        
-
-===========================================================================
-2002-07-23 Release 1.23
-  From kes22Jul02
-- Updated Bacula to handle some minor differences in MySQL 4.0.2
-  (still works with older MySQLs).
-- Updated MySQL documentation to correct some minor errors.
-- Added kernstodo to CVS
-- Fixed create_mysql_database, which I recently accidently broke.
-- Disallow zero length volume names in Console program.
-- Create alter_mysql_tables and alter_sqlite_tables for conversion
-  from 1.22 table format to 1.23 table format.
-
-  From kes20Jul02
-- Investigation of SQLite performace problems reported by Chuck.
-- Updated ChangeLog
-- Updated README
-- made root@localhost the default email address because many smtp
-  servers reject root but accept root@localhost
-- Added an autochangers chapter to the manual.
-- Documented most of the new features in 1.23
-- Modified the SQLite interface code to start a transaction at the
-  beginning of a job and commit it at the end of the job. It
-  also commits it after 10000 changes. Hopefully this will
-  improve performance.
-- Set the default cache pages from 2000 to 10000 for SQLite (i.e.
-  about 15Megs of memory) hoping to improve performance.
-- Terminate last filename referenced in FD prior to copy to
-  avoid race problem with multiple threads and no locking.
-- Enhanced the status output to include the JobType                
-- Print an error message if the email program terminates in error.
-- If your machine has an MTUNLOCK, do it before doing an OFFLINE to
-  ensure that the door is unlocked.
-- Added code to stored/append.c to spool attributes. This is in
-  a testing stage and must be explicitly enabled.
-- Added a no_attributes variable to stored/append.c that prevents
-  the attributes from being sent to the Director. As yet, no way
-  to turn it on.
-- Modified SQLite code so that after 10000 updates any transaction
-  is committed, then restarted. This keeps it from using too much
-  memory.
-- Set the default cache size to 10000 pages (previously 2000).
-- Fixed a segmentation fault on Sun due to no default value for
-  the JobStatus.
-- Added the same indexes to SQLite that I exist in MySQL. This
-  VASTLY reduces CPU usage for lots of inserts.
-- Added spooling to bnet_send().
-
-  From kes18Jul02
-- The following two changes were prompted by questions/suggestions
-  from A Morgan.
-- If you have "AlwaysOpen = no" in your SD Device
-  resource, Bacula will free() the drive when it
-  is finished with the Job.
-- If you have "Offline On Unmount = yes", in your
-  SD Device resource, Bacula will offline (or eject)
-  the tape prior to freeing it.
-- Added Maximum Open Wait to allow open() to wait if drive is busy.
-- Added RunBeforeJob and RunAfterJob records to Job records.
-  This permits running an external program with the following editing
-  codes:
-    %% = %
-    %c = Client's name
-    %d = Director's name
-    %i = JobId
-    %e = Job Exit
-    %j = Job
-    %l = Job Level
-    %n = Job name
-    %t = Job type
-
-  From kes17Jul02
-- Added autochanger support to devices.c
-- Allow user to change Slot in the Volume record.
-- Implemented code in lib to run an external program
-  (tape changer)
-- Implemented a changer script for mtx.
-- Currently the changer commands used are:  
-    loaded -- returns number of slot loaded or 0
-    load   -- loads a specified slot
-    unload -- unloads the device (returns casette to slot)
-- Other changer commands defined but not yet used:
-    list   -- returns list of slots containing a cassette
-    slots  -- returns total number of slots 
-- Implemented ChangerCommand, specified in the SD Device
-  resource, permits editing of:
-      %% = %
-      %a = archive device name
-      %c = changer device name
-      %f = Client's name
-      %j = Job name
-      %o = command
-      %s = Slot base 0
-      %S = Slot base 1
-      %v = Volume name
-- Implemented MaximumChangerWait default 120 seconds. It is 
-  specified in the SD Device resource.
-
-  From kes15Jul02
-- Moved techlogs from main directory to be subdirectory of doc
-- Added code for strerror_r, and detection of gethostbyname_r().
-- The protocol between the Director and the SD has changed.
-- Major rework of SD tape mounting to prepare for Changer commands.
-- Separated Update Media record and Create JobMedia record. These
-  are done from the SD by calling the Director. Need separate Create
-  JobMedia so that when a Job spans a volume, all other Jobs writing
-  the same volume will also have JobMedia records created.
-- Added message to user indicating selection aborted if he enters .
-  to a Console selection request.
-- Create a jobstatus_to_ascii() routine for use in status commands.
-  This makes a single routine from three separate pieces of code.
-  Updated the code to properly handle more (all) termination statuses.
-- Tried to fix the gnome-console to handle history a bit better. There
-  are still some problems with focus not being properly set to the edit
-  box after history replacement.
-- Removed the shutdown() from bnet_close() hoping to fix Console termination
-  errors that are occassionally seen -- no luck.
-- Moved add_str() to lib/util and renamed it add_str_to_pool_mem() so that
-  it can be used to edit Job termination codes and Changer command codes.
-- Reworked how the SD mounts tapes (in device.c) so that control passes through
-  only a single routine. The logic is much simpler than previously, and now
-  adding AutoChanger code is straight forward.
-- Made SD tape mounting much more fault tolerant -- more cases retry instead
-  of terminating the Job.
-- Wrote code to edit_device_codes() for Changer commands. Not yet fully     
-  implemented.
-- Added a ChangerDevice directive to the Device resource. Still need to add
-  ChangerCommand.
-
-  From kes07Jul02
-- This documents what I did while on vacation. 
-- A fair amount of documentation.
-- Implemented Verify Volume to Catalog (needs renaming)
-- Modified the database to include new MarkId field as
-  well as Counters. Database level is incremented from 1 to  2.
-- Added first cut of managing autochangers by implementing Slot in DB.
-- Fixed a good number of M_ERROR messages to be M_FATAL where appropriate.
-  Also converted a number of Emsg() to Jmsg() permitting better Job error
-  messages.
-- First cut at implementing a general packet passing mechanism for bsock
-  to replace printf and sscanf for passing data.     
-- Made make_xxx_tables and drop_xxx_tables and create_xxx_database
-  for bdb as well as sqlite. With this each database has the
-  same set of scripts (with the exception that MySQL has grant_privileges).
-- Modified Makefile to only install the database scripts for the
-  database that you are using.
-- Updated the pdf script to include all the html files.
-- Did quite a lot of documentation.
-- Made Bacula compile correctly with DEBUG turned off.
-- Implemented Pmsg() macros that permit using the debug print
-  routines even with DEBUG off.
-- Updated job_cancelled() macro to handle JS_FatalError.
-- Changed db_find_last_full_verify() to db_find_last_jobid(). This
-  permits working with Verify Volume to Catalog.
-- Removed TRANSACTION code from incrementing NextId for SQLite. 
-- Implemented quick and dirty (not fully functional code) so that
-  console program does not die if ctl-Z is entered. 
-- Cleaned up backup.c a bit adding a bail_out goto to ensure proper
-  handling of errors with minimum code.
-- Added passing Slot back and forth to Storage daemon with Volume info.
-- Implemented Slot in Media record in DB.
-- Implemented first cut of Counter resource in dird_conf.c. A counter
-  resource is part of the Pool resource.
-- Implemented necessary database record. However, the resource doesn't
-  yet create a DB record.
-- Implemented onefs (One File System) and recurse options on Include
-  resource.
-- Implemented autopruning of Verify and Restore Jobs.
-- Did a better job of calculating thread_concurrency() for Sun systems.
-  This permits better multi-threading allowing all the threads to run
-  at the same time.
-- Implemented a wait_for_storage_daemon_termination(), which is used by
-  backup and verify volume.
-- Clarified a number of UA prompts, and add feedback where certain commands
-  completed but printed nothing. (More work to be done here).
-- Added a pile of new code to implement Verify Volume to Catalog. It is sort
-  of a hybrid of "restore" and "verify" in that it actually reads the tape,
-  then compares it to the catalog.  Need Verify Volume to Client.
-- Added a good number of checks for job_cancelled() this should permit
-  quicker and more reliable cancelling of jobs.
-- Fixed one bug in restore where I used ofile instead of lname, which means
-  that if the lname was too long, the memory was not properly reallocated.
-- Cleaned up find_one.c in findlib quite a bit.
-- Link smtp static so that it works even if the libraries are messed up.
-- If mail host is not found, retry with local host in smtp.
-- Added slot and stream to the bootstrap record processing.
-- Do offline on tape cartrige for unmount command. This can be turned off
-  by the user in the config file. OffLineOnUnmount in Device resource.
-- Implemented AutoChanger = yes/no in Device resource.
-
-===========================================================================
-2002-07-07 Release 1.22
-- All the basic Restore code to handle the boostrap file is
-  now implemented with the exception of the Console Restore command.
-- Retained compatibility with previous Restore providing no 
-  bootstrap file is specified. However, the old code (JobId based)
-  will go away in a future release.
-- Fixed a number of segmentation faults in the Console program due
-  to printing of NULL pointers -- thanks to Chuck and his Sun for
-  finding and reporting them -- mostly in ua_output.c.
-
-  From kes25Jun02
-- Null pointers now are printed as *None* if NPRT() is used.
-- At the request of Phil, all resources are now chained in in the
-  order they appear in the config file.
-- Implement Bootstrap record in the Director's config file, which
-  allows you to specify a predefined bootstrap file for Restore Jobs.
-- Allow Bootstrap on the Restore record. This is deprecated.
-- Implemented code to pass the Bootstrap file, if defined, to the
-  File daemon, then from the File daemon to the Storage daemon.
-- Added ability to set Bootstrap file in the Console when running a Restore.
-- Allow scan_error() routine to be passed to lex_open_file(). This permits
-  using lex in the Storage daemon without worrying that it will ABORT on
-  a syntax error.  More work is needed to direct the error messages correctly.
-- Improved error messages a bit when config syntax errors are found.
-- Tested and corrected some errors in match_bsr.c
-- Removed askdir.c from bls and bextract by defining dummy entry points.
-- bextract now has bootstrap pretty well integrated.
-- Changed bextract ABORTs into FATAL and exit(1) or ERROR_TERMINATE.
-  More user friendly.
-- Eliminated at least one lld and replaced it by edit_uint64() 
-- Eliminated a few more _PROTO()s.
-- Corrected a problem with the SQL for in query.sql for 
-  Listing Volumes to Restore All Files
-
-  From kes22Jun02
-- Additional documentation.
-- Reduce the time the jcr mutex is locked in lib/jcr.c
-- More null pointer printing fixes in lib/parse_conf.c (debug output only).
-- Added daemon filename to Kaboom message so I know what daemon died.
-- Fix big bad bug introduced in watchdog.c last update that caused
-  a segmentation violation (forgot to check for NULL pointer).
-- Add a bit more info to bad returns from Stored when starting
-  a job fails.
-
-  From kes21Jun02
-- Fixed scan_to_eol
-- Fixed backup scanning forgot one T_STRING -> T_UNQUOTED_STRING
-- changed all rwlock_t to brwlock_t to avoid conflicts with
-  Solaris library.
-- Added NPRT() macro to allow printing of NULL pointers, which
-  segment fault on Solaris.
-- Cast printing of pid_t to int for Solaris compiler.
-
-  From kes20Jun02
-- Added expect argment to lex_get_token().
-- Added tree.c and tree.h to lib directory.
-
-  From kes19Jun02
-- Improvements to the bootstrap compiler
-- Implemented first cut of bootstrap code in the Storage daemon
-- Modified the authentication code to be more explicit during 
-  failures.
-- Added a few more debug message numbers with more arguments (Dmsg10, ...)
-- Added more and more precise error messages when authentication fails.
-- Implemented new "expect" codes in the lexical scanner that allows
-  the caller to specify what he wants.                   
-- Added integer, positive integer, 64 bit integer, and integer ranges,
-  and name scanning to lex.
-- Implemented new lex code in parse_conf.c, this reduces significantly
-  the code.
-- Hopefully fixed a watchdog race bug that caused the watchdog to time
-  out a line after 1 hour rather than 6 days.
-
-  From kes15Jun02
-- Implemented a Bootstrap file parser and matcher.
-- Implemented first cut of bootstrap code in bextract  
-- Started clarifying different termination codes.
-- Added M_ERROR_TERM to immediately terminate the daemon -- no dump.
-  Also changed a few termination codes as appropriate.
-- Fixed create_jobmedia_record() to include all the fields such as
-  StartFile/EndFile, StartBlock/EndBlock.
-- Print user friendly message when query mode ends.
-- Fixed ls style print routines (bextract, bls, restore) to check
-  buffer size, to print the link if any, and to used edit_uint64()
-  instead of %lld.
-- Moved scan_to_eol() and s_err() to lex.c to avoid dragging in 
-  parse_conf.c for new bsr scanning code.
-- New files: bsr.h, parse_bsr.c and match_bsr.c. parse_bsr.c parses
-  a Bootstrap file, and match_bsr.c matches a bsr against a tape.
-- use strcasecmp() in several places instead of lcase().
-- Add first cut of bootstrap to bextract.
-- Added File Size limit -- writes EOF after limit exeeded.
-
-===========================================================================
-2002-06-12 Release 1.21
-- Fixed several problems with filenames being truncated if
-  they contain spaces. Thanks to the user that reported this.
-- N.B. To get the new queries, after the "make" and 
-  "make install" you must explicitly replace the
-  existing query.sql by query.sql.new.  query.sql is a
-  user configuration file, so it is not overwritten.
-- Added GZIP compression of Included files.  
-- Added additional fields to tape SOS record permitting better
-  recovery with no database.
-- Be sure to remove any !terminate statements you may have
-  in your config files.
-- MUST UPDATE ALL DAEMONS due to protocol change to handle new
-  tape format.
-
-  From kes11Jun02:
-- Updated examples directory with my most recent config files.
-- Modified the M_TERM meaning to mean that Bacula has
-  terminated in error without producing a dump. Previously,
-  it meant that Bacula terminate (with or without error).
-  You should remove any !terminate from your messages
-  resources.
-- Changed the order of the libraries in the link so that
-  tcp wrappers link properly. Thanks Phil for reporting this.
-- A user reported that filenames containing spaces were truncated
-  in bextract. This was indeed the case. They were also truncated
-  in Restore as well as in Verify. They are, hopefully, all fixed
-  now.
-- Made a few error conditions in Verify non-fatal.
-- Modified the Console "query" command to permit multiple SQL
-  statements per command. 
-- Implemented three new "query" options: 
-    List last 10 Full Backups for a Client
-    List Volumes used by selected JobId
-    List Volumes to Restore All Files
-  To use them, simply type "query" to the Console program, and
-  select the one you want.
-- Modified bextract to default to extracting all files (i.e. /).
-- Cleaned up the code in bextract a bit.
-
-  From kes03Jun02:
-- Improve Verify command to include files examined.
-- Eliminate fcntl() locking of the console file and replaced
-  it with a pthreads mutex.
-- Note Director - SD protocol is changed to handle new tape
-  information (Fileset, JobType, JobLevel).
-- Create config.out that contains a summary of ./configure
-  to see what you previously configured: "cat config.out"
-- Implemented GZIP compression.  Added addition syntax to
-  Include { } resource to permit setting of any GZIP compression
-  level:
-     compression=GZIP
-     compression=GZIP1
-     ...
-     compression=GZIP9
-
-  Level 1 is minimum compression and level 9 is maximum. Using just
-  GZIP gives the default (level 6).
-- Enhanced the tape format to include the unique Job name, FileSetName,
-  JobType, and JobLevel in the Start/End of Session records. The code
-  detects that tape level difference and acts accordingly. You can 
-  add data in the new format to old tapes.
-- Fixed an incorrect display message in the prune command.
-- Began implementation of Verify Volume and Verify Data.
-- Cleaned up File daemon restore.c a bit ensuring that termination 
-  cleanup is done and all possible Emsgs are converted to Jmsgs.
-- Modify bls.c to use common setup routines. This reduced the big
-  code duplication that creeped in when I added different listing
-  options. Also, changing tapes is now handled uniformily in a subroutine.
-
-===========================================================================
-2002-05-27 Release 1.20
-- Started documenting Catalog Pruning and Recycling.
-  Added catmaintenance.html and recycling.html
-- Fixed the query command bug.
-- Implemented PID files to prevent two copies of Bacula
-  from running at the same time. Be sure you --with-pid-dir
-  points to a working directory.
-- Modified ASSERT() to cause a segmentation violation. This
-  permits a core dump.
-- Worked on gnome-console. It paints better, it tells you if it
-  is ready to accept a command or processing one, and it is
-  almost entirely GTK+ (rather than GNOME, I'm removing GNOME
-  a bit at a time).
-- Limit to 100 the number of tape labeling errors in a single Job.
-- Add some additional ASSERT()s to the database routines. I don't
-  like ASSERTs but they do catch bugs.
-- Tested and debugged recycling of Volumes.  Needed to change
-  the Director-SD protocol slightly.
-- Removed the experimental SIGHUP in the Director as it is a
-  potential source of errors.
-- Added Level, Pool, Messages, and Storage keyword/value scanning
-  to the Schedule Run record.
-- Improved printing of Schedule resources with "show schedules"
-- Do not autoprune Jobs/Files if the Job errs.
-- Updated newvol() to pass back the updated Media record.   
-- Fixed the "update pool" command, which was broken during a much
-  earlier code reorganization.
-- Improved a few of the pruning messages.
-- Removed readline inclusions from gnome-console (hang over from console).
-- Make Jmsg use daemon message handler if no message handler is defined.
-  This is always the case in the SD and FD.
-- Started removing __PROTO(). With C++ prototypes are manditory, so why
-  keep around legacy code.
-- Added a good deal of message internationalization -- more to be done.
-- Move cached Path into mdb structure and use POOLMEM.
-- Fix verify bug introduced last update causing incorrect diffs 
-  by turning off autopruning.
-- Started adding code to distinguish Errors from Fatal Errors.
-- Errors are now counted in message.c for a Job.
-- More POOLMEM cleanups.
-- Implemented Automatic pruning.
-- Implemented Automatic recycling of Volumes.
-- Added PruneJobs/Files/Volumes=yes or no to Job resource. If set,
-  it forces the specified pruning.
-- Modified rwlock to accept multiple nested write lock
-  requests.
-- Modified the cats directory to use the new rwlock mechanism
-  in place of P() and V(). 
-- Defined db_lock(mdb) and db_unlock(mdb). They are in effect
-  transaction locks. 
-- Add CVS Id's to most files.
-- Made first cut at AutoPrune
-- Added new autoprune file that is called at the end of
-  each Job. It then decides when and what to prune and
-  calls the UA prune routines.
-- Modified Run (in Schedule resource) to permit overrides of
-  Level, Pool, Storage, and Messages. (not tested).
-- Added more POOLMEM in place of char.
-- Implemented daemon pid files. This prevents multiple 
-  daemons from running simultaneously. You can run multiple
-  daemons if they listen on different ports.
-- Documented the Schedule resource a bit better.
-- Began gently adding a POOLMEM type (perviously void).
-  For the moment it is a #define to char, but long term
-  it should be its own typedef.
-- Corrected a bit of spacing on the status bar of gnome-console
-- Added Admin and Archive Job types.
-- Implemented multiple Messages resources. Each daemon has
-  its own message resource, which defaults if not defined.
-  Jobs may now have different message handlers.
-- Cleaned up a bit of duplicate code in backup, verify, and
-  restore by creating appropriate subroutines in job.c
-- Added Type, Client, FileSet, and Level resource record
-  definitions to the Director. These can be used in place
-  of the Backup = ..., Verify = ..., ... commands.  This needs
-  documenting.
-- Corrected an incorrect message in the prune code and added
-  the number of Files pruned in the message.
-- Corrected several paint problems with gnome-console.
-- Added a bit of printout in signal handler during traceback.
-- Cleaned up most of sm_check() to be turned on/off by define
-  in version.h
-
-===========================================================================
-2002-05-10 Release 1.19
-- Allow the user to select a new period for pruning.
-- Lots of additions to the manual -- prune and purge
-  commands documented.
-- Applied Phil's configure.in fix for --prefix, ...
-- Fixed bug found by Phil (patch supplied) in updating
-  MD5 signatures (revert to 32 bit FileId, move "static"
-  variables into JCR) (catreq.c fd-cmds.c).
-- Reverted to using INTEGER for FileId in make_sql_tables
-  due to a bug in MySQL.
-- Change editing code to %d for FileId.
-- Remove sqlite in make distclean in cats directory.
-- Remove console.conf in console during make distclean.
-- Remove gnome-console.conf during make distclean.
-- Remove bacula-dir.conf during make distclean.
-- Set default level when using Console if none specified.
-  Bug reported by Phil.
-- A simple . command from Console is ignored.   
-- Change program named from filed to bacual-fd in winmain.cpp
-- Change default config file for Win32 in winmain.cpp
-- Free namebuf on early return from find_one.c. Bug reported by Phil.
-- Modify testfind.c to dump orphaned buffers.
-- Removed terabytes from parse_conf.c because of problems with
-  older gcc compilers.
-- Turn off gnome options in gnome-console by constructing empty argv.
-- Fixes to Verify when only MD5 differs.
-- Insert 0 for MD5 as default rather than space.
-- Allow .messages "transparent" command while reading input
-  in UserAgent server.
-- In dird/verify.c ensure that correct filename is printed if only
-  the MD5 differs. Minor reindenting caused large diff.
-- Delete unused code from backup.c
-- In filed/verify.c ensure that same algorithm as backup.c is used
-  to pass back MD5 signatures -- especially for directories and files
-  that cannot be read. Change dummy filename from X to *MD5-id*.
-  This dummy value should never be printed.
-- Make gnome-console poll Director every 5 seconds for output.
-  This means that queued up messages are displayed at reasonable
-  intervals. Delete some unused code hanging around from the tty
-  console program.
-- Begin implementation of prune commands.
-- Add command line history to gnome-console. Not yet saved across sessions.
-- Fixed some broken URLs in the manual.
-- Added JobId type.
-- Wrote first cut of "prune files" and "prune jobs".
-- Added command line history to gnome-console 2500 lines max.
-- Widened store_time() and associated variables to 64 bits using
-  new btime_t definition.
-- Removed GNOME about box and replaced it with 
-  a somewhat crude Gtk+ about box in the gnome-console.
-- Widened StartDay in the Job DB record to be 64 bits.
-- Changed edit_uint_ to edit_uint64_ everywhere. Much more
-  descriptive of what is done.
-- Removed most llds and replaced them with %s and edit_uint64.
-  This makes the code a bit easier to read for beginners.
-- Added a btime_t typedef which is 64 bits wide.
-- Added most of the code needed to do Purge and Prune of
-  database. Not yet tested. Please do not use.
-- Additional config options for Console.
-- Started adding code for Automatic Recycling of Volumes.
-- Allow arbitrary length filenames in Verify code.
-- Fix incorrect filename in Verify code.
-- Significant enhancement to number scanning in config parser.
-- Requires initializing MySQL tables, or applying cats/alter.sql
-  to modify Media table.
-- Modified Makefile to printer a much more visible
-  message if the make ends in error.
-- Added the Purge value to the VolStatus in the Media table.
-  This value is set if the Volume is purged.
-- Enhanced the db_delete_media_record() routine to delete
-  all associated records in the database.
-- Modified Console to always write to the variable "output"       
-  rather than stdout. This will permit directing output to a file.
-- Enhanced the Console configuration file to have a Console 
-  resource. This will allow us to add an rcfile and history file.
-- Modified Find_next_vol in catreq.c to search for "Recycle"
-  volumes if there are none marked Append. Also made Get_Vol_info
-  return the VolStatus to the Storage daemon.
-- Allow upper/lower case match on job level names.
-- Added another warning message to the Console "delete media" command.
-- Corrected a number of FileId types from uint64_t to FileId_t in
-  ua_retention.c.
-- In ua server close database before freeing JCR (because pointer is
-  kept in ua and jcr structures).
-- parse all numbers as doubles. Do lots of checking for valid number
-  formats. Allow numbers in scientific form (e.g. 1.5e+10).
-- Remove terabyte modifier as it doesn't work in some compilers.
-- Fix bug in handling some modifiers.
-- Added all necessary code for Recycle to Storage daemon. A Volume
-  marked Recycle will now be overwritten.
-- Filled out the prune command a bit and did some testing.
-- Make console accept redirected input.
-- Altered the Table definitions to include Recycle,
-  FileRetention, JobRetention, and AutoPrune.
-- Widened StartDay to 64 bits.
-- Use JobId_t in more places. 
-- Added the new table fields to the database record definitions.
-- Changed Recycle from string to a binary quantity.
-- Added a Version table with a VersionId to detect.
-  future changes in the database. This should prevent
-  a Bacula from working with a database that is not in sync.
-- Modify Console to accept input from a file. This will permit
-  the .read command and allow reading a .rc file.
-- Added new retention and recycle variables to the Director's configuration.
-- The UA subroutines or commands can now be called from core
-  code because the output routines detect the absence of a 
-  UA socket and direct output to the Job.
-- Added a verbose flage to the ua packet to permit reduction of
-  output while running a UA command (prune) from a Job.
-- Did a fair amount of work on the prune command. Prune Volume now works.
-- Purge Volume now works.
-- Made last changes for integrating prune and purge commands.
-- Add -ltermcap to CONS_LIBS when readline is configured.
-  More work to be done to search for termcap.
-- Added cats/drop_sqlite_tables.in, which will delete the SQLite database.
-- Got CWEB working so that we can compile filesys.w and immortal.w
-- Modified depkgs to include cweb.             
-- Note, CWEB is not yet used by the core Bacula code.
-- Made cats/alter.sql, which alters an old database to bring it
-  up to the new format. This only works with MySQL since SQLite does
-  not have the ALTER SQL command.
-- Changed the old StartDay field in the db to be JobTDate, which is
-  the latest time/date in widened Unix time format that the Job ran.
-  This value is used when doing pruning.
-- Added code in cats/sql.c to verify that the database internal version
-  corresponds to the db version compiled in Bacula. It is set to 1 currently.
-- Lots of changes to cats to bring the SQL up to date with the new 
-  retention period changes.
-- Added Console command code to permit changing a Volume's retention period.
-- Removed old code that used date_encode() and replaced it with widened
-  Unix time().
-- Started modifying Message resource scanner so that we can have multiple
-  message resources. Much more work to be done.
-- Moved scanning for time into new library routine string_to_btime().
-
-===========================================================================
-2002-04-22 Release 1.18
-- Applied Phil's configure.in fix for --prefix, ...
-- Fixed bug found by Phil (patch supplied) in updating
-  MD5 signatures (revert to 32 bit FileId, move "static"
-  variables into JCR) (catreq.c fd-cmds.c).
-- Reverted to using INTEGER for FileId in make_sql_tables
-  due to a bug in MySQL.
-- Change editing code to %d for FileId.
-- Remove sqlite in make distclean in cats directory.
-- Remove console.conf in console during make distclean
-- Remove gnome-console.conf during make distclean
-- Remove bacula-dir.conf during make distclean
-- Set default level when using Console if none specified.
-  Bug reported by Phil.
-- A simple . command from Console is ignored.   
-- Change program named from filed to bacual-fd in winmain.cpp
-- Change default config file for Win32 in winmain.cpp
-- Free namebuf on early return from find_one.c. Bug reported by
-  Phil.
-- Modify testfind.c to dump orphaned buffers.
-- Removed terabytes from parse_conf.c because of problems with
-  older gcc compilers.
-- Turn off gnome options in gnome-console by constructing empty
-  argv.
-
-===========================================================================
-2002-04-18 Release 1.17 Kern Sibbald
-- Ensure that platforms Makefiles are called for clean  
-  and distclean.
-- Hide a lot of Makefile messages with @
-- Applied Phil's configure.in patch. Thanks.
-- Doc updates, many to clarify points brought up by Phil.
-- Applied Phil's make_mysql_tables.in patch. Thanks.
-- Made authenticate.c in dird test bnet_send status.
-- Make label a bit more friendly with extra info message.
-- Add level 200 to debug info in run command.
-- Remove old code from findlib/testfind.c so that it compiles.
-- Add two minute max wait to cram-md5 authentication. Hopefully,
-  this will catch non-responding WinNT daemons.
-- Allow time and size modifiers to be upper or lower case.
-- Turn off old CYGWIN patch for pthread_cond_timedwait() bug that
-  now causes File daemon hangs on WinNT.
-- Fix mount messages for restore. Previous updates to save
-  broke the restore code.
-- By default write fixed block sizes rather than variable block
-  sizes.  My Sony DAT simply does not work (reread failures) with
-  variable block sizes.
-- Data split across tapes was not being correctly restored
-  (at least on DAT tapes). 
-- Implement MaximumBlockSize and MinumBlockSize statements in
-  Storage daemon so user can specify variable block sizes if
-  desired.
-- Return error if block checksum error on read (previously 
-  ignored).
-- Fixed some error messages in bls, and in some cases exit(1)
-  rather than ABORT. There remain ABORTs to be examined.
-- Made a local copy of tcpd.h and corrected the function 
-  prototype problem for C++.
-
-===========================================================================
-2002-04-14 First public release 1.16 Kern Sibbald
- - Many intervening changes/updates.
-
-2001-09-29 Release 1.0 Kern Sibbald
- - Fixes to problems found at John's installation.
- - See techlogs/kes25Sep01 for details
-
-2001-09-25 Release 1.0 Kern Sibbald
- - Helped John install at his site.
-   He is backing up one Linux machine and
-   one Win2000 machine.
-
-2001-mm-dd Many releases
- - Released internally.
-  
-2000-04-09 Release 0.4 Kern Sibbald
- - Added a lot of Director configuration code. In      
-   part (a small part), the Director now uses the
-   bacula.conf file to know what to do. There still
-   remains a lot to do.
- - The file search code is now integrated into the
-   MySQL database routines, and Bacula is now hooked
-   into the MySQL database (if so configured). Thus
-   all the database records are being created, though
-   there still remains some work in getting all the
-   details into the records (such as the Storage 
-   coordinates).
- - I've defined how Volume pools work (see manual).
- - I've defined error message handling though no code
-   is yet written.
- - The following resources and records are implemented
-   in the Director configuration file (bacula.conf):
-    
-   Director
-     Name (passed to Storage daemon)
-   Client
-     Name, Address, Port
-     Password (not yet used)
-   Storage    
-     Name, Address, Port, Password, MediaType
-   Job
-     Name    
-     Type (not yet used)
-     Backup (only one permitted) 
-       Client, FileSet
-     Storage
-     Schedule, Messages, Pool (not used)
-   FileSet
-     Name  
-     Include (options ignored)
-     Exclude (no options)
-   Schedule (not used)
-     Name
-   Messages (not used)
-     Name       
-     Debug, syslog, mail, append (not used)
-   Catalog
-     Name
-     Address, Port, Password (not used)
-   Pool (not used)
-     Name
-     PoolType, MediaType (not used)
-
- - Added Storage configuration routines.
-   Director
-     Name, password (verified against those sent by Director)
-   Storage
-     Name, Address, Port (address, port must correspond to Director's values)
-     Password, MediaType
-   Device
-     Name, MediaType (must correspond to those sent by Director)
-     Archive Device (defines device name)
-
-
-2000-03-10 Release 0.3 Kern Sibbald
- - Implemented new base64 encoding for attributes.
-   This eliminates some of the error messages in the
-   sprintfs on the Solaris due to different stat() sizes.
- - Implemented  the first cut of the file search routines for
-   the File daemon.  The exclusion lists work including wild
-   cards.   There is a lot of work to be done, but the basic
-   structure is now in place (wild cards do not yet work for
-   the include).
- - Completed writing the memory pool code.  Now I must
-   implement it in the daemons.
- - Modified the bacula start/stop script so that it has a
-   better chance of working on SGI and Solaris.
- - The catalog code has not been converted to the new file
-   search code.
-
-2000-03-06 Release 0.2 Kern Sibbald
- - Integrated John's fixes.
- - Made Makefiles self configuring when Makefile.in is changed.
- - Added a runit script in the top level that runs bacula
- - Added a "bacula" script in the top level directory that
-   starts and stops the File daemon and the Storage daemon.
-
-2000-03-03 Release 0.1 Kern Sibbald
- - Basic Director, File, and Storage daemons.
-   Standalone Catalog services using MySQL
-
-2000-01-22 Kern Sibbald
-   * Setup basic file structure with ./configure
diff --git a/docs/techlogs/RN-2.0.0 b/docs/techlogs/RN-2.0.0
new file mode 100644 (file)
index 0000000..706ae20
--- /dev/null
@@ -0,0 +1,392 @@
+
+          Release Notes for Bacula 2.0.0
+
+  Bacula code: Total files = 438 Total lines = 154,329 (*.h *.c *.in)
+
+==== IMPORTANT Catalog update required =====
+- The database format has been updated from what was used in    
+  Bacula 1.38.x.  You must manually update your database before 
+  running Bacula 1.39.x or higher.  If you are using Bacula supplied
+  RPMs this is not necessary as the RPM does it automatically.
+  Please backup your previous version of the database before
+  running the update.  The update script will be automatically
+  installed in your scripts directory, or can also be found in
+  <bacula-source>/src/cats.  It is called:
+
+     ./update_bacula_tables
+
+  It is necessary to run it only once the first time you move to
+  a 2.0.0.  Upgrading the Bacula version thereafter does not
+  require updating the database again.  Depending on the size of
+  your database the script make take a bit of time, to run, but
+  in general, it should be very fast.
+
+==== IMPORTANT new Win32 install procedure =====
+  For Win32 migrations from versions prior to 1.39.0 nothing special
+  needs to be done to upgrade.  Everything should be taken care of
+  automatically.  The only thing not done is to delete the old C:\bacula
+  directory mostly out of paranoia.
+
+==== IMPORTANT miscellaneous ====
+- The Gnome console program (gconsole) no longer functions as it
+  should.More importantly, in restore mode, the restore tree is
+  no longer shown in the left pane.  I suspect this is due to
+  incompatible changes in the GTK+ API, and hence have given up
+  on gnome and gtk+, as this has already happened several times
+  previously.  At some point there will be a new GUI console.
+- The bacula-dir.conf directive Accept Any Volume has been
+  removed because it was never implemented. You must delete all
+  occurrence of this directive for the Director to run. The Storage
+  daemon will automatically accept any valid Volume that you mount.
+- 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.
+- You *should* be able to use 1.38.x FDs with version 2.0.0 Director
+  and SD providing you do not use any of the new features (runscript,   
+  data encryption). It seems to work here, but we do not guarantee it.
+- Your Director and SD must be simultaneously upgraded.
+- The restore command no longer uses the MediaType as the primary method
+  of finding a suitable Storage device. Normally it will select the last
+  device used to write a Volume. If no storage device is defined, it
+  will use the old algorithm which selects the first Storage resource  
+  with the correct MediaType.
+- The MD5/SHA1 hash codes kept in the database are now kept in a binary
+  format compatible with the rest of the world. If you are running verify 
+  jobs, you *must* do an InitCatalog or all files will show an MD5   
+  difference.  Also, authentication uses the new algorithm by
+  default, but *should* accept connections from older components (FD) using
+  the old non-compatible algorithm. This has been tested, but more
+  more testing is still needed.  
+- A stock SuSE 10.1 kernel may crash when Bacula runs and accesses
+  the tape drive. Workaround, load the SuSE 10.1 version 2.6.16.21-0.25
+  kernel or later. The SuSE 10.2 Alpha 5 or later kernel also works.
+  This problem may also be present in certain Fedora FC5 kernels.
+- If you have been using the data encryption feature of 1.39.x, please
+  be aware that certain combinations of encryption and other options
+  with version 1.39.0 through 1.39.26 created Volume data that cannot
+  be restored. We strongly recommend that anyone using encryption 
+  carefully review his/her backups and at a minium do a Full backup
+  with 1.39.28 of all encrypted data.  Robert Nelson has identified 
+  and fixed it as follows:
+     As of 1.39.27:
+        No filters = Works fine
+        Sparse = Works fine
+        Compression = Works fine
+        Encryption = Works fine
+        Sparse + Compression = Works fine
+
+        Sparse + Encryption = Restore broken
+        Sparse + Compression + Encryption = Restore broken
+        Compression + Encryption = Restore broken
+
+     As of 1.39.28:
+        Most combinations work, but some encrypted files are
+        not properly restored.
+
+     As of 1.39.30:
+        All combinations work fine except Sparse+Encryption.
+
+  Bottom line, if you are using data encryption, please test restoring
+  data to be sure it all works correctly.
+- The current Volume format written by 1.39.22 is different from
+  the format written by previous versions. The two formats
+  are not compatible. Thus any DVDs written prior to 1.39.22 will
+  be unreadable by version 1.39.22.
+- If you previously run a Bacula version prior to 1.39.30, the JobMedia
+  data may not be correct for disk Volumes. This can cause incorrect
+  seeking in versions after 1.39.30. If you experience what appears to
+  be data I/O or integrity errors during restores, please add the
+  following directive to your disk DEVICE resource in the Storage
+  daemon conf file:
+
+    Block Positioning = no
+
+  This will turn off all seek requests during restores and avoid
+  this problem.
+- VSS for Windows clients is now enabled by default.
+- Do not unload autochanger when doing "update slots"
+- Implement mount command for autochanger, see manual.
+
+New Features in 2.0.0:
+- Turn on disk seek code for restores.
+- There is a partial but reasonable translation of the Bacula
+  messages for French.  To install it, first configure and build
+  Bacula, then as root run:
+
+    cd <bacula-source>/po
+    make install
+
+  If you have your locale set properly you will get the translated
+  messages.
+- Bacula now support Migration jobs that are documented in a new
+  Migration chapter in the manual
+  http://www.bacula.org/dev-manual/Migration.html
+- Data encryption is now implemented and is documented in
+  a new chapter of the manual at:
+  http://www.bacula.org/dev-manual/Bacula_Data_Encryption.html
+- Additional support for removable devices.  See the 
+  Requires Mount, Mount Point, Mount Command, and Unmount
+  Commands in the Storage daemon configuration chapter:
+  http://www.bacula.org/dev-manual/Storage_Daemon_Configuratio.html
+  Also see the Edit Codes for Mount and Unmount Directives in the
+  same chapter.
+- Switch the Win32 build from using Microsoft C++ to using mingw32
+  cross-compiling.  The initial work was done by Howard Thomson,
+  then tweaked by me.  Robert Nelson then totally reworked the
+  cross-compiling code so that it not only cross-compiles, but
+  also compiles on Visual Studio, and at the same time, he added
+  all the current Unix features to the FD, such as selection on
+  drives, encryption support, building *all* the tools, ...
+- The Director and Storage daemon have now been ported to Win32.
+  This code is working but should still be tested carefully
+  before putting into production.
+- Bacula restore and bextract can now extract non-portable Win32 data to
+  any client (including Unix/Linux clients). Of course, in doing so,
+  the Microsoft specific permissions and ACLs will be lost.  Thanks
+  to Thorsten Engel for this code.
+- The 260 character limitation for Win32 paths name lengths is now 
+  eliminated thanks to Thorsten Engel. However, if you are using
+  Volume Shadow Copy, please be careful to specify all the paths
+  in the bacula-fd.conf file using a full path notation including
+  the drive letter.
+- Eric Bollengier wrote new RunScript directives that includes
+  the old RunBefore/AfterJob and ClientRunBefore/AfterJob features
+  plus a *lot* more, allowing you to control just about every aspect
+  of running scripts.  See the manual for detailed documentation.
+  http://www.bacula.org/dev-manual/Configuring_Director.html#5227
+- SunOS ACLs should now work thanks to a patch from David Duchscher.
+- 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"
+  This can be used to preview the next scheduled job (and the
+  next tape to be used) on Fridays if there are no scheduled jobs during
+  the weekend.
+- From Eric Bollengier. One can now using the bconsole wait command do:
+   wait  (wait for all jobs to stop)
+   wait jobid=nn
+   wait jobuid=unique id
+   wait job=job-name
+- Volumes can now be set to Enable, Disable, or Archive. If they
+  are not enabled, Volumes will not be mounted.             
+  Implement update volume enable=(on|off|true|false|archived|0|1|2)
+- Add Catalog message destination in Messages resource that puts the
+  job report in the Log database table.
+- Writing/reading DVD Volumes is much more stable -- to the point
+  of being useful. Thanks to Richard Mortimer.
+- 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.
+- The database Id records should be 32/64 bit independent now. 64 bits
+  can be enabled by changing one define and changing the appropriate
+  table variable. Normally, you need 64 bits only for FileId.
+- Relative path specifications (i.e. ../xxx) are now permitted in
+  the restore cd command.
+- When running multiple simultaneous jobs, most jobs that use spooling
+  will now finish faster due to a mutex optimization made by Eric
+  Bollengier.
+- Conf files containing UTF-8 marker at the head of the file as well as
+  conf files containing Window cr/lf and Mac cr line termination characters 
+  are now accepted thanks to Robert Nelson.
+- Windows tray status windows are scrollable and resizable.
+- Win32 external script execution is much more flexible -- handles
+  spaces in names better, ...
+- Lots of DVD fixes -- writing DVDs is now reported to work.
+- Fix opening of database in a restricted console to respect     
+  any Catalog ACL.
+- Much better automatic handling of multiple database catalogs in
+  the restore command.
+- Permit multiple console/director resources in bconsole.conf.
+  patch from Carsten Paeth calle@calle.in-berlin.de
+- Character substitution in Job/JobDefs WriteBootStrap.
+  from Eric Bollengier.
+- Apply patch supplied in bug #656 to pass priority field
+  in the run dialog to the Director in gnome console.
+- Add support of encrypted data stream to bscan from Eric.
+  display data_len instead of data content (may be binary).
+- Add Enabled=xxx on update slots command.
+- Add host:port to connect failure messages to FD and SD from Dir/
+- Add WhereACL to console ACL list.  If nothing is specified, only
+  the default is permitted for restore. Otherwise, *all* allows any
+  path, or you can specify permitted paths. This should allow control
+  over where users can restore files. This is untested.
+- Install man pages with 'make install'.
+- Add Media.Enabled flag to client backups for dotcmds.c
+- Enforce Media.Enabled=1 for a current restore to work
+- Require restore case 3 to have sqlquery permission to work.
+- Add -n option to bconsole to turn off conio -- used in bweb.
+- The bytes field in the terminated jobs part of the status
+  command now reports in KB, MB, ... units.
+- When not descending into a directory, print the File= name that
+  triggered it -- makes why not descending a bit clearer
+- Do not unload autochanger when doing "update slots"
+- Implement mount command for autochanger
+- Fix bug #462 incorrect error message printed when client script called
+  from File= was not found.
+- Fix bug #558 (waiting for feedback) where Bacula needs too much time to
+  do a rewind on Solaris when no tape is in the drive (Solaris does not
+  have the detailed errno found on Linux).  Added Solaris specific code.
+  Note, this may apply to other OSes as well.
+- The examples directory has a new bacula_mail_summary.sh file that
+  creates a single email summary of any number of jobs. Submitted by
+  Andrew J. Millar.
+- Add nagios plugin to the examples directory. Submitted by
+  Christian Masopust.
+- Modify most restore error messages to be queued so that they
+  appear at the end of the job rather than mixed with the restore
+  listing where they could be "lost".
+- Apply patch supplied by user (slightly modified) to fix
+  correct detection of holes in block devices and FIFOs.
+  Bug # 506.
+- Added a report.pl program to the examples directory from Jonas Bjorklund.
+- 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, ...).
+- Implement new code for changing userid and group at startup. This
+  should get Bacula into the correct groups.
+- Implement support for removable filesystems -- device type directive
+  and mount, unmount directives.
+- Transfer rates are now presented in a more readable format thanks
+  to a user submission.
+- SD is now aware of what volumes are mounted. More information is printed
+  in the Status report. You must take much more care now to unmount
+  devices prior to removing tapes that Bacula has open or prior to
+  changing a magazine. Don't forget to do a mount afterwards or the
+  device will be blocked.
+- The Pool Maximum Volumes directive is now respected in all places.
+- A Storage device can now be specified in a Pool resource. It will override
+  all other Storage specifications.
+- Most but not all directives accept true/false in place of yes/no.
+- A patch from Karl Hakimian that reads JobIds, FileIndexes
+  from a database table for restore.
+- There are a number of new tables. Some such as the Location table are
+  designed for user use in doing Volume Management software.
+- Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to
+  accept time qualifiers.
+- Implement jobuid to replace old usage of job in keywords as
+  suggested by Eric Bollengier.
+- Implement write variables for Python to set Priority (anytime), and
+  Job Level, only during JobInit event.
+- 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 the SD to use multiple drives during a backup/restore (only
+  one at a time).
+- Integrate addition of line count limitation to bsmtp -l from
+  Sebastian Stark <stark at tuebingen.mpg.de>
+- 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
+- Remove automatic case folding on Windows FDs. You must
+  explicitly use the 'Ignore Case = yes' option.
+- Implement wild program in tools directory for testing
+  wild-cards. Almost identical to the regex program.
+- Use the new bregex.c to implement Regex expressions on Win32.
+- 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 (performance).
+  - Fix for security failure in chdir on Win32.
+  - Add CreateDirectoryA/W win32 API entry points.
+- programs to duplicate Bacula's base64 algorithm using standard
+  routines. This fixes bugs #296, and 565. Patch submitted by
+  author of bug #565.
+- Fixes to reloading the Dir conf file from Eric Bollengier and Christopher
+  Hull.
+- Modify LICENSE to correct some problems pointed out by Debian.
+- Apply a 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).                                                    
+  You enable it in the Bacula FileSet Options resource by setting:
+     noatime = yes
+  The effect of this option is similar to the keepatime option except
+  it is more efficient and avoids modifying ctime.
+- Implement a pile of new man pages contributed by Jose Tallon.
+- 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.
+   Enabled to Media table and Location table.
+- Security: harden authentication failure in FD by single threading errors
+  and forcing a 6 second wait.
+- If using GCC (actually g++) add the following compiler flags
+  -fno-strict-aliasing -fno-exceptions -fno-rtti
+- Turn on new bsnprintf() code.  The reason for this code is to
+  eliminate the security problems associated with using the
+  system libraries print routines.
+- Implement job report that indicates where Storage and Pool
+  came from -- with overrides and Pool storage and NextPool,
+  it is all very complicated.
+- Add more detail (Storage, Device) to list of volumes printed
+  for restore.
+- Add new VOLMGMT message class. No messages are yet sent with this 
+  class.
+- Improved Bacula rescue procedures -- see the Disaster Recovery
+  chapter of the manual
+- Add spooling/despooling info in status output of SD.
+- Add Comment field to llist of a volume.
+- Allow true/false in many but not all yes/no directives.
+- The Bacula source code is now copyrighted by the Free Software 
+  Foundation Europe. The Developer's Guide documents the new procedures,
+  and the LICENSE file has been updated.
+- Apply Jaime Ventura's patch that implements the Messages resource
+  Mail On Success directive.
+- The Client returns its Version string, which is printed in the Job
+  report.
+- The Client returns whether or not VSS and Encryption are used, which
+  are printed in the Job report.
+
+Additional Features Added for Win32:
+- Added DriveType directive to the Director's Include Option FileSet
+  resource.  Allowed values are: fixed, removable, cdrom, and remote.  There
+  is only an implementation for Windows because it is the only platform that
+  has the concept of drives.
+- Adds EnhancedWild directive to the Director's Include Option FileSet
+  resource.  Allowed values are: yes and no.
+  When EnhancedWild is enabled then the processing of the
+  Wild, WildDir and WildFile is changed in the following ways.
+  Patterns conform to Posix
+      \ is not a special character in character classification []
+      To match a - it must be the first or last character
+      To match a ] it must be the first character
+      fnmatch option FNM_FILE_NAME is specified * doesn't match a / 
+      so it won't match multiple directory levels in a path
+- Relative WildFile patterns (ones without a leading /) match
+  against the filename portion.  This in combination with the
+  FNM_FILE_NAME fnmatch() flag makes directives such as WildFile =
+  abc*.def work as expected.
+- Adds support for the shell's feature of brace expansion.
+
+  Here is an example where braces allow 24 lines to be expressed in 5.
+
+  # Exclude directories full of lots and lots of useless little files
+  WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Cookies"
+  WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Recent"
+  WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/History"
+  WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temp"
+  WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
diff --git a/docs/techlogs/technotes-1.39 b/docs/techlogs/technotes-1.39
new file mode 100644 (file)
index 0000000..484fe7a
--- /dev/null
@@ -0,0 +1,1795 @@
+              Technical notes on version 1.39  
+
+General:
+Version 2.0.0 released: 4 January 2007
+03Jan07
+kes  Apply Eric's fix for client name editing on RunScripts.
+kes  Fix an incorrect dbcheck reference to Id.
+
+Version 1.39.34 released:
+28Dec06
+kes  Convert dbcheck to use 64 bit DB IDs.
+kes  Update projects
+kes  Make rescue work.      
+kes  Clarify Volume migration error message.
+kes  Look for Job keyword when opening DB in console.
+23Dec06
+kes  Add code in catreq.c to reject volumes not marked Enabled.
+kes  Add a few more ACL access checks.
+kes  Add \n in gnome2-console restore command so that output prints 
+     nicer -- i.e. lines do not run together.
+kes  Fix autolabeling so that it will not mark a volume in error
+     if the volume was not actually opened. This should fix bugs
+     #737 and 738.
+kes  Require tape drive to be open before autolabeling.
+kes  Require explicit mount command on non-tapes before autolabeling.
+kes  Implement an open_client_db() that searches the keywords for
+     either a catolg or client, and opens the appropriate catalog.
+     This makes Bacula adjust better to multiple catalogs.
+kes  Use more name() methods for resources rather than hdr.name.
+22Dec06
+kes  Fix code to check for two resources of same name. It forgot
+     to check the last entry.  Fixes bug #734.
+kes  Apply scanvolume patch from Richard Mortimer that fixes bug
+     #738.
+kes  Apply Eric's patch for recycling the Scratch pool.
+kes  Note, for the tray-monitor (or almost any restricted console_
+     to work, in version 1.39.x you must add CatalogACL = catalog-name
+kes  Add appropriate new #undefs to autoconf/acconfig.h so that 
+     configure works correctly.
+kes  Implement configure code to allow the user to disable IPv6 with
+     --disable-ipv6 
+kes  Apply Richard Mortimer's patch to prevent seg fault if mount point
+     not specified -- SD refuses to start.
+kes  Add magic.bacula from bug #715 to the scripts directory along with
+     Arno's explanation of how to install it.
+kes  Convert a bunch of hdr.name into name() method calls.
+kes  Fix the code to remove .bsr files.  Fixes bug #736 -- Martin.
+
+Version 1.39.32 released: 
+20Dec06
+kes  Take first catalog if gui is set, or if using dotcmd.
+kes  Fix a couple of compiler warnings in wx-console
+kes  Apply the immutable patch for FreeBSD hardlinked files supplied
+     by Olivier Lehmann.
+kes  Add Volume name to Forward spacing message.
+kes  Update migration job start time (so it is not zero) to prevent
+     immediate recycling of the job.  This *should* fix bug #733.
+19Dec06
+ebl  Fix runscript configuration parsing bug.
+17Dec06
+kes  Add ENABLE_NLS (as suggested by Eric) to correct NLS problems.
+     Remove NLS kludge from baconfig.h.  This fixes bug #729.
+kes  Allow seeking on DVD.
+kes  Add additional messages when Job canceled automatically for
+     max run time or max start wait exceeded.  This fixes bug #621.
+kes  Update maxruntime-test in regression script to properly test
+     max run time -- from info given in bug #621.
+kes  Simplify automatic cancel code.
+kes  Add check for job_canceled() in FD when contacting SD so that if
+     job is canceled from max runtime, it terminates faster.
+16Dec06
+kes  Save and restore volume name in stored/mount.c fixed bug #712
+     where wrong tape was requested in a mount.
+kes  Implement cleaner orphan buffer dumping with buf address.
+kes  Fix orphaned buffer when canceling job waiting on op intervention.
+kes  Update projects file for next vote.
+kes  Implement a fix (more could be done) for bug #728 where a double
+     EOF is writing on the Volume when spooling is enabled and the    
+     connection with the FD fails (FD crash, comm error).
+kes  Disable attempting to autolabel when polling and device is not
+     a tape. This fixes bug #730 where polling with a removable disk
+     not mounted caused lots of new Volumes to be created then marked
+     in error.
+15Dec06
+kes  Enable VSS by default.
+
+Version 1.39.30 released: 
+14Dec06
+kes  Complete hopefully the last of the copyright transfer changes.
+kes  Separate NumVolumes in SD to NumReadVolumes and NumWrite volumes so
+     that migration writing to multiple volumes doesn't mess up reading
+     Volumes. This should fix bug #720 -- multivol migration fails.
+kes  Make migration SQL look only for Type='B' jobs to migrate.  This should
+     fix bug #724 jobs getting migrated twice.
+kes  Convert remaining dev_cap(dev, ...) to use dev->has_cap().
+kes  Implement dev->clear_cap() and dev->set_cap() methods.
+kes  Turn off disk seeking on restore for DVDs since I am not 100%
+     sure it works.
+13Dec06
+kes  Implement code that should properly set that a job was migrated,    
+     if the migration was successful even if there were no file to
+     migrate.
+kes  Apply Richard's patch to fix building or filed/restore.c without
+     OpenSSL support.
+kes  Ensure that at least one block is written by the SD even if the
+     FD dies or fails -- should fix bug #728.
+kes  Convert stored/record.c ASSERT into a soft fail if the length of   
+     a record is too insanely long. This should fix bug #???
+12Dec06
+kes  Fix automatic labeling of File volumes, which was broken by new
+     removable device code.
+10Dec06
+kes  Remove typedef uLong for HP in baconfig.h.  It broke things.
+lf   Fix job byte reporting -- the digest code runs in verify.c and
+     increases this value.  The better solution is to digest the
+     stream as we receive it, thus removing the need to re-read
+     from disk at all, but that requires more extensive and
+     potentially destabilizing changes.
+lf   This commit fixes backup and restore of HFS+ resource forks.
+lf   Add a long-missing 'break' statement in HFS+ attribute
+     handling that resulted in restore failures.
+09Dec06
+ebl  Fix runscript to always execute command after all job type.
+
+Version 1.39.30 released: 
+08Dec06
+kes  Mark build-depkgs-mingw3 executable in configure process.
+kes  Update autoconf/config.h.in to include LOCALEDIR
+kes  Undefine NLS settings for wxWidgets as there is a conflict with
+     their way of doing things.
+kes  Implement a rpool and rpool_source in jcr.h for Migration jobs.
+kes  Change a bunch of ->hdr.name to ->name()
+kes  Straighten out handling of read and write pools for Migration, including
+     getting the code in the proper order.
+kes  Improve migration error messages and debug output.
+kes  Shorten code path in migration if nothing found to do.
+kes  Implement read/write pool in migration job report.
+kes  Move ua_run.c select_job_level code into a subroutine (readability).
+kes  Move ua_run.c display_job_parameters into a subroutine.
+kes  Do not bash dcr->VolumeName in get_volume_info() because it makes
+     restore dependent on a valid catalog containing the Volume name.
+06Dec06
+kes  Put make_catalog_backup SQL_BINDIR in an environment variable to
+     make it easier for the user to change.
+kes  Fail any backup job that tries to use encryption and sparse options.
+     Hopefully this is a temporary change.
+kes  Correct the EndJob return string for non-backup jobs.
+kes  Review the encryption restore code.
+kes  Implement a new encryption regression test with compression.
+kes  Modify migrate not to fail if nothing found to migrate. 
+kes  Add #undef HAVE_OPENSSL, HAVE_TLS, HAVE_CYRPTO to autoconf/config.h.in
+     because they were not always set correctly.
+05Dec06
+kes  Update configure.in to include python 2.5 search.
+kes  Back out unwanted migration change reported by Richard Mortimer.
+04Dec06
+kes  Make migration with no files to migrate set normal termination.
+kes  Change message when job manually started to say Job queued. ... 
+kes  Add job report indication of whether or not VSS and Encryption were
+     used by the FD.
+kes  Modify sparseBlock variable name to make the code clearer.
+kes  Add more sparse tests to regress using gigaslam sparse file
+     generator.
+kes  Enable data encryption code.
+kes  Add gigaslam.c to src/tools. It creates a 1GB file that contains
+     only two blocks -- i.e. it is a real sparse file.
+03Dec06
+kes  Enable disk seeking on restore.
+kes  Implement the SD 'Block Positioning = yes|no' directive. This
+     allows the user to turn off block level seeking, but restores
+     will be much slower.
+kes  Change the word illegal to read invalid in a few places.
+kes  Fix Win32 build, which broke when I added parse_args_only in
+     lib. I'm not sure I got the entry point right for msvc.
+kes  Turn off data encryption. It can be enabled by defining
+     DATA_ENCRYPTION in src/version.h and recompiling.
+kes  Implement flag to turn off data encryption feature.
+kes  Move unserial code in restore.c to a subroutine. Add a bit of debug
+     code.
+kes  Rework a bit of code in backup.c to handle sparse blocks correctly.
+     The main problem was that signatures were being generated on blocks
+     of zeros, which is unnecessary.
+02Dec06
+kes  Fix scanner (next_arg) to handle leading double quote correctly.     
+kes  Modify cd command in restore tree to look at full argument without
+     keywords.  This fixes bug #716.
+01Dec06
+kes  Do not update Migrated Job type if migration does not terminate
+     normally. This fixes bug #719.
+kes  Update ReleaseNotes
+kes  Purge Job records from the catalog for Migration. This was
+     not properly done previously. This fixes bug #718.
+28Nov06
+kes  Initialize msg_type to M_INFO in migration. Pointed out by
+     Robert Nelson.
+kes  Add some fflush() statements for debug output. This should not
+     really be necessary and defeats buffering but users continue
+     to complain.
+27Nov06
+kes  More copyright changes.
+kes  Make sure we don't detach from the despool read device since it
+     is a temporary structure where the condition variables are not
+     initialized.  Bug #711.
+26Nov06
+kes  Add Bacula version+date to Client record. This is a very minor
+     security problem in that passing the version facilitates a hacker's
+     life, but it will make support easier.
+kes  Implement fixes to make disk seeking work.  Currently turned
+     off in version.h pending reserch on what problems it will cause
+     because of the previous bsnprinf() sign extension bug.
+25Nov06
+kes  Add Landon's refactor of restore Feature request to the
+     projects file.
+kes  Tweak debug levels and messages for examining the disk
+     seek problem.
+22Nov06
+kes  Cleanup some of the error termination code in migration.
+kes  Separate read/write source strings to keep track of where
+     storage devices are used in a job.
+kes  Implement a new method of keeping track of which storage 
+     device is used in a Job.  USTORE keeps both a pointer to the
+     resource and to the source string.
+kes  Modify all code to use new storage set subroutines in job.c
+kes  Modify migrate.c so that the definitive selection of the storage
+     resource is done in the do_migration_init() routine prior to
+     the job going into the job queue.  This permits accurate 
+     deadlock detection (same read and write storage resource).
+kes  Remove bfill from btape (I think it was a left over stub).
+22Nov06
+kes  Make sure that the storage for a job is pulled first from
+     the Pool and if not from the Job.  
+kes  Ensure that either the Pool or the Job specifies a Storage
+     resource.
+21Nov06 
+kes  Start applying new FSFE copyright.
+20Nov06
+kes  Add additional error messages in acquiring a drive for read.   
+kes  Make WritePartAfterJob the default so that the last DVD part 
+     always gets written to the DVD by default.
+kes  Add additional error messages in migration. 
+kes  Suppress redundant error messages in migration (possibly more to do).
+kes  Apply Martin's fix (updated to 1.39) that takes into account
+     run storage overrides in the Director status display.
+kes  Implement, but turn off the submitted code that sets the EOT
+     model on FreeBSD machines. Turning on this code is too risky at
+     this point in the development.
+19Nov06
+kes  Implement unique dbid routine for migration to prevent the same
+     JobId from being migrated twice. This should fix bug #709.
+18Nov06
+kes  Apply Jaime Ventura's 'mail on success' patch.
+kes  Add a SMALLOC_SANITY_CHECK for Arno, which aborts Bacula
+     if memory usage gets too big.
+kes  Tweak migration to ensure that read/write devices are different.
+17Nov06
+kes  Create an AUTHORS file to list Bacula contributors.
+kes  Add Richard Stallman's four GPL freedoms to LICENSE 
+kes  Require the conf file to have a valid NextPool for writing the
+     migration output.
+16Nov06
+ebl  Enable RecycleCount in catalog.
+ebl  Fix "echo python | bconsole" segfault
+14Nov06
+kes  Implement code to pass the MediaId to the SD. The SD then uses
+     this MediaId when creating JobMedia records. This fixes a bug
+     with Migration where the MediaId got set to the second Volume
+     read rather than the write Volume.  Possibly (unlikely) fixes
+     bug #709.
+kes  Remove NextPool from Job resource.
+kes  Edit a few numbers in the restore dialog with commas.
+kes  Note, the DIR<->SD protocol has changed.
+13Nov06
+kes  Replace () by {} in configure.in for proper HP configuration.
+kes  Shorten some lines over 80 characters in filed/backup.c
+kes  Cast sizeof() in filed/backup.c to avoid compiler warning.
+
+Version 1.39.28 released: 
+12Nov06
+kes  Change error message 'illegal' to 'invalid' -- bug #707
+kes  Add rather primitive device resource deadlock detection in
+     the job queue handler. It detects the same read and write device
+     for migration and cancels the job. 
+kes  Start adding a unique_dbid_hander() routine in migration to avoid
+     duplicate mediaids and duplicate jobids.
+kes  Add patch from bug #708 to permit relative paths such as ../xxx
+     in the restore tree routine.
+kes  Add Eric Bollengier's patch to reduce locking time in the SD after
+     despooling, and thus many jobs finish faster.
+kes  Correct locking order of reservations lock and device mutex in
+     reserve.c -- this should correct Arno's deadlock that occurred
+     when doing mount/unmount at the same time a job is reserving a
+     drive.
+05Nov06
+rbn  Fixed problems with encryption when combined with compression 
+     or sparse files.  Unfortunately this means that all previous 
+     encrypted backups can't be restored.
+rbn  Fixed problem in bfgets with Windows and Mac end of lines.
+rbn  Fixed bug in Windows version of close_bpipe() that cause programs
+     like bsmtp() to hang waiting for the pipe to be closed.  Fixed 
+     binary file type problems in open_bpipe().
+rbn  Fixed a number of bugs in the mysql DB scripts.
+03Nov06
+ebl  Fix broken runscript on director. (RunBefore, RunAfter)
+ebl  Use M_ERROR instead of M_FATAL in runscript.c
+31Oct06
+ebl  Small fix src/dird/job.c to add JobErrors count to catalog.
+rbn  Ignore UTF-8 marker at the start of .conf files.
+rbn  Add stab2cv to 3rd party dependencies.  This is a utility I 
+     wrote that is licensed under the GPL and available on SourceForge.  
+     It converts the stab debugging info generated by gcc into Codeview 
+     format.  Currently it just translates function names to global 
+     symbols.  This is sufficient to get reasonable stack traces from 
+     Dr Watson and to look at minidumps.
+rbn  Fix bug # 699 - winbacula client crashes whilerunning bat scripts.
+rbn  Enable Windows XP look and feel for the tray icons and wx-console.
+rbn  Add Windows specific FileSet example to bacula-dir.conf.
+rbn  Reorganize Start menu so that documentation and configuration are 
+     in subfolders.
+21Oct06
+rbn  Change daemons and utilities so that if -c is omitted from the 
+     command line AND there is no configuration file in the current 
+     directory then the 'standard' configuration file (eg 
+     /etc/bacula/bacula-*.conf) will be used.  If the argument to -c 
+     doesn't contain any path separators AND there is no configuration 
+     file by that name in the current directory then the 'standard' 
+     configuration file directory will be searched for a file by that 
+     name.
+rbn  Fixed restore on Windows so that backslashes as path separators works.
+rbn  Add missing query.sql file to Windows installer.
+rbn  Fixed Windows versions of catalog backup scripts.
+20Oct06
+kes  Fix optional files in Makefile.in of src/filed that caused
+     a syntax error when using no optional files.
+15Oct06
+lf   Fix a cosmetic bug in filed.c that caused spurious OpenSSL error
+     messages; there is no reason to attempt to load a private key.
+     from master key files.  
+
+Version 1.39.26 released: 
+12Oct06 
+kes  Apply the three patches from Richard Mortimer.
+     bacula-reposition.patch, bacula-tape-reopen.patch, and
+     bacula-eod.patch. This corrects tape positioning on older devices,
+     and also a problem with btape.
+kes  Apply fix from bug report #696 where writing to a FIFO does not
+     work due to a dumb typo.
+kes  Unlock the tape door before the file descriptor is released. This
+     should fix lots of somewhat subtle failures when using an autochanger.
+11Oct06
+kes  Correct mtx-changer bug that I introduced in a recent commit, and
+     pointed out by Robert Nelson -- thanks.
+rbn  Fix Windows' daemons so that messages print to stdout if not 
+     running as a service.
+rbn  Add daemon name to trace file name (eg bacula-dir.trace).
+rbn  Fix environment variable expansion in directory names on Windows.
+rbn  Fix autochanger support in fill command.
+rbn  Update SQL scripts to match Unix versions.
+rbn  Fix daemon usage displays.
+rbn  Cleanup bacula-dir.conf template.
+rbn  Install openssl.cnf so that the openssl.exe installed in the
+     Bacula\bin directory can be used to generate keys and 
+     certificates for TLS and encryption.
+rbn  Fix cleanup of spool files on Windows.
+rbn  Remove /silent option from daemons on Windows.  The new default 
+     is the same as the old /silent.  To enable the message boxes that 
+     previously were suppressed by /silent you must add /debug instead.
+     NOTE: As a result of this change, the first time you upgrade from 
+           a previous version of 1.39.x you will receive the message 
+           boxes when the remove of the old services succeeds.  This 
+           is the same behaviour as when migrating from a version prior 
+           to 1.39.0.
+     However, going forward, these message boxes will not appear on 
+     upgrades or new installs.
+rbn  Add new /debug option. This option enables the message boxes that 
+     previously were suppressed by the /silent option.  In addition the 
+     daemons running as services will open a console window if this 
+     option is used.
+rbn  Fix bug with service not being removed on migrated installs.  This 
+     should correct those cases where the file daemon install was failing
+     when upgrading from versions prior to 1.39.x.
+08Oct06
+kes  Turn on heap reporting in Dir with zero debug level.
+kes  Send a message to the sys log when Bacula forces a SEG FAULT, and
+     send the same message to stdout.
+07Oct06
+kes  Begin work on new GUI 'console'.
+kes  Make configure look in non-standard MySQL library directory 
+     for Solaris.
+kes  Make mtx-changer automatically configure the autochanger wait
+     procedure for Solaris, FreeBSD, and Linux.  Previously, only Linux
+     was implemented.
+kes  Correct drop_sqlite_tables.in script to not delete the database.
+kes  When writing to a log file, close and reopen the file descriptor
+     if there is an error writing the file.
+kes  Modify the autochanger loaded?, load, and unload commands to print
+     the full text of any mtx output if there is an error.  Helps to
+     ease diagnosis of autochanger problems.
+kes  Correct a few Win32 errno returns in the VSS code so that hopefully
+     a resonable Win32 error message will be printed.
+kes  Convert a few strcat()... to bstrncat() in the Win32 code.
+06Oct06
+rbn  Added Windows version of bsmtp.
+rbn  Fixed path search for Windows so that Bacula\bin is automatically 
+     searched for programs and scripts.
+rbn  Fixed bugs in mtx-changer.cmd and made template bacula-sd.conf
+     Windows specific.
+
+Version 1.39.24 released:
+02Oct06
+kes  Apply dvd find volume patch from Richard Mortimer.
+kes  Eliminate the dvd specific mount routines using only the
+     dev->mount/unmount.
+kes  Make update_free_space a method of DEVICE and rename 
+     update_freespace.
+01Oct06
+kes  Require a messages command acl to be able to receive messages
+     in a console.
+kes  Add console, system, and scan job types in util.c.
+28Sep06
+kes  Print the Volume purged message only for real jobs to keep
+     from cluttering up the daemon messages.
+kes  Lock the tape drive door while Bacula is using the device.
+kes  Add back the 'No Jobs running' message to FD and SD status because
+     my regression script depends on it, and I'm too lazy to change the
+     scripts.
+kes  Start using structure assignments (not too happy about it ...).
+kes  Fix a bug in the tools Makefile that broke on Solaris.
+kes  Unload any autochanger drive during a 'release' command.
+26Sep06
+kes  Enhance error message when restoring without bootstrap file.
+kes  Check restored size only for regular files.
+kes  Store Python job level in job record in Dir.
+kes  Add back code to open tape device nonblocking, but if rewind fails
+     release file descriptor.
+kes  Modify acquire.c to first try autoloading the device. Also, ask operator
+     to mount tape if drive cannot be opened.
+rbn  Made Windows service tray status windows resizable.
+rbn  Fixed horizontal scrolling of text in status window.
+rbn  Preserve horizontal and vertical scroll position while 
+     updating.  This prevents the display being reset to the
+     top line every 5 seconds.
+rbn  Fix Windows cross-compile compatibilty problems with 
+     *nix variants such as OS X without the zic command.
+rbn  Eliminate dependency on man2html.
+25Sep06
+kes  Update src/win32/dll/bacula.def for change in BPIPE definition for
+     Win32 build.                 
+kes  Fix a compiler warning in compat.cpp
+kes  Change strcpy to bstrncpy in compat.cpp
+kes  Remove some broken code in bdb_list.c
+kes  Fix, hopefully the last, ACL problem in the restore command.
+kes  Update the README.mingw32
+kes  Add new version of upgrade-win32-client.txt to examples directory.
+     Submitted by Michel Meyers.
+kes  Print an INFO message in the job report when a Volume is marked Purged.
+rbn  Fixed handling of external program and script execution
+     so that the format of the command line is more flexible.
+     Now executable path names containing spaces are translated
+     to the equivalent short name automatically.  The result is
+     passed to cmd.exe with the quotes removed.
+24Sep06
+kes  Apply the recycle patch from Richard Mortimer.
+kes  Convert a few if statements in dev.c to switch statements.
+kes  Start using print_errmsg instead of bstrerror().
+kes  Print a job message in SD when a job is marked to be canceled.
+23Sep06
+kes  All code added back. Fixed block.c read/write to loop only 3
+     times. This apparently keeps the OS from crashing (at least     
+     most of the time).
+kes  The kernel bug still persists. Backup something then immediately
+     do a bscan on the same tape, and the kernel will crash.     
+kes  Simplifed tape open().  It no longer uses nonblocking mode, which 
+     means that opening with no tape loaded will probably take at least
+     6 minutes before an error is reported.
+kes  Do not use MTSETDRVBUFFER if not running as root.  Do a MTRESET
+     when doing set_os_device_parameters.
+kes  Report open error in mount.c
+kes  Remove all .exe files from the installer directory on make clean.
+20Sep06
+kes  Start adding back removed code.
+kes  Back out a number of changes because backups to tape crash my
+     system.
+kes  Remove the inetd code from the File daemon.
+18Sep06
+kes  Add -c option to pg_dump so that it initializes tables when   
+     restored.
+kes  Fix FirstWritten time on Volume to be obtained from SD so that
+     it is the actual time the volume was first written.
+kes  Minor Makefile changes.
+kes  Handle EBUSY during read(). Improve how EBUSY is handled in write().
+ebl  Add yes keyword to prune/purge command
+16Sep06
+kes  Correct a test in block.c that prevented restore of a DVD from
+     looking at the last part in the spool directory.
+kes  Make some error messages clearer mostly by using the word DVD
+     in the message. Improve infor message in read_record for DVDs.
+kes  Remove DVD kludges in dircmd.c label/relabel.
+kes  Move the dvd relabel code from dircmd.c into      
+     write_new_volume_label_to_dvd() adding a relabel argument.
+kes  Rewrite the truncate_dvd() code to be much simpler and
+     more logical. First blow away any spool part, then create a
+     new empty part and write to the DVD.
+kes  Rewrite the can_write_on_non_blank_dvd() code making it
+     only ensure that no valid data is on the DVD -- i.e. it
+     can be overwritten.
+15Sep06
+kes  Minor Makefile fixes.
+kes  Put attach_dcr_to_dev in a subroutine.
+kes  Make attaching/detaching to/from a device use a flag and 
+     only detach if actually attached.
+kes  Add dvd-simulator.in to scripts directory and add to configure.
+kes  Fix code in acquire.c that checks fd != 0 to use dev->is_open().  
+     This could be a cause of a number of drive reservation problems.
+     Note, this code is now in attach_dcr_to_dev().
+kes  Suppress doing Volume updates if it is a system job.  This should
+     prevent the DVD label blocking.
+kes  Clear the freespace ok flag in a couple of strategic places.
+14Sep06
+kes  Put removing zero sized spool part file in subroutine and
+     call from release_device().
+kes  Add Richard's patch for relabel to dircmd.c, but save and restore
+     dev Volume name.
+kes  Rework a lot of subroutines in dev.c to take dcr as an
+     argument. This is done to eliminate the usage of attached_dcrs
+     in lseek().
+kes  Change truncated_dvd to blank_dvd, which seems more suitable.
+kes  Apply most of Richard Mortimer's truncate patch.
+kes  Create lseek() method for DEVICE that takes dcr as an
+     argument. This is to eliminate the use of attached_dcrs in
+     lseek().  The calls to lseek_dev() must still be changed.
+13Sep06
+kes  Apply Richard Mortimer's patches for printing an error 
+     message in btape when a DVD is used, and to initialize traceback.
+kes  Added error message to btape when trying to access a file.
+kes  Move prototype of update_slots() to protos.h.
+12Sep06
+kes  Add JobErrors, JobFiles, SDJobFiles, SDJobErrors, SDJobStatus,
+     and FDJobStatus to the Director Python variables.
+kes  Make sure valid argument passed to str_to_utime() where Arno
+     had a seg fault.
+kes  Apply Richard Mortimer's patch for bcopy, bextract, and bscan.
+     I.e. part of two different patches.
+11Sep06
+kes  Modify disk changer to simulate some of the error conditions
+     of mtx-changer.
+kes  Make sure the close() call in the SD tools is just before the
+     getchar() call.
+kes  Implement dir_get_volume_info() in bls using the patch from
+     Richard Mortimer but call find_num_dvd_parts().
+kes  Implement find_num_dvd_parts() that mounts and scans a DVD
+     and counts the parts. 
+kes  Move the omode code in open_dvd() up so that the cannot
+     write on blank disk can check can be bypassed for read mode.
+     Not yet implemented.
+10Sep06
+kes  Disable normal data spooling for DVD writing which uses  
+     a different spooling mechanism.
+kes  Apply patch from Richard Mortimer to ensure that the number
+     of DVD parts is correctly updated.
+rbn  Save installer details log in the Bacula directory as 
+     install.log.
+rbn  Add installer generation of client and storage templates
+     suitable for @inclusion on the director.
+rbn  Mark previously installed Win32 components read-only since 
+     deselection doesn't do anything.
+
+Version 1.39.22 beta released:
+08Sep06
+kes  Fix logic error in handling error return from mtx-changer 
+     script.
+kes  Make status from SD aware of -1 (unknown) Slot status.
+kes  At Eric's suggestion make both the 'slots' and 'drive' commands
+     to the Storage daemon work even if the drive is busy.
+kes  Make two separate Win32 menu links for starting bconsole and
+     wx-console in winbacula.nsi
+kes  Apply DVD part_spooled patch from Richard Mortimer 
+     richm@oldelvet.org.uk 
+kes  Put installer/Readme.txt into Win32 EOL format for Notebook.
+rbn  Fixed problems migrating settings from previous releases in
+     Win32 installer. Add Readme.txt with an option to show it on 
+     the installer Finish page.
+07Sep06
+kes  Use get_catalog_resource() to open catalog database
+     to ensure that ACLs are respected and that user is
+     correctly prompted for database.
+kes  Integrate multiple console/director patch from 
+     Carsten Paeth calle@calle.in-berlin.de
+ebl  Add character substitution in Job/JobDefs WriteBootStrap.
+     You can use now 'WriteBootStrap = '/path/%c_%n.bsr''
+kes  Apply patch supplied in bug #656 to pass priority field
+     in the run dialog to the Director in gnome console
+kes  Restore DCR after VOL_NAME_ERROR in mount.c.  Hopefully
+     this will fix bug #627 where Bacula eventually gets 
+     confused about what Volume it wants.
+kes  Add a new close_part() class in the SD to save the device
+     state around open/close_part/open for DVD writing.  This
+     should fix the num_dvd_parts getting zeroed as reported by
+     Richard Mortimer.
+kes  Apply patch from Richard Mortimer that correct edit code
+     for debug output of st_size.
+ebl  Add support of encrypted data stream to bscan.
+     display data_len instead of data content (may be binary)
+06Sep06
+kes  Add dev->close() in dir_ask_sysop_to_mount_volume() in
+     bcopy. Fixes bug #669 reported by Eric.
+kes  Fix incorrect number of arguments in SQL statement in
+     sql_get.c as reported by Eric.
+kes  Manual updates.
+kes  Update examples directory.
+kes  Remove unused variable in winservice.cpp
+kes  Make Win32 make command build installer.
+rbn  Add new Install Type page, used to select between Automatic
+     and Custom installs.  Automatic installs only prompt for
+     configuration items that can't be reasonably defaulted.
+rbn  Added Bacula logo to page headers.
+rbn  Added Upgrade support
+     - Configuration and component selection are migrated from
+       pre-1.39 installs.
+     - Configuration of upgraded components is preserved and 
+       not prompted for
+     - Configuration of new components is handled according to
+       the Automatic / Custom selection.
+     - Component selection is defaulted to previously selected 
+       components.
+rbn  Installation of Server components is disabled on 
+     Windows 95, 98 and ME.
+rbn  Added URLs for support, info and upgrades to Bacula entry
+     in Add/Remove Programs.
+rbn  Added Version info to Bacula entry in Add/Remove Programs.
+04Sep06
+kes  Correct dvd code that breaks tape labeling.      
+kes  Implement Enabled on update slots.
+02Sep06
+kes  When doing a label, pass the VolBytes back to the Director,
+     which puts it in the catalog.
+kes  Print an error message if the user attempts to prune an
+     archived Volume.
+kes  Need to start using %ld when sscanfing 32 bit values.
+kes  Update the free
+kes  Correct the counting of VolCatBytes for DVDs. 
+kes  Add code to mount.c to require that VolCatBytes corresponds to
+     what is actually found when doing an append.
+kes  Update freespace only after writing on the DVD.
+kes  Remove code that blows away the current part in the spool file.
+01Sep06
+kes  Apply new dvd-handler patch from Richard Mortimer.
+kes  Tweak so that debug level 20 shows only DVD commands.
+kes  Correct spooled_part flag in dev.c close() so that it is cleared
+     when the spool file is deleted or does not exist.
+kes  Print part number in read_records when eof hit (restore).
+rbn  Installer default changed to start services on new install.
+31Aug06
+kes  Make find with no args in tree restore return error rather than
+     stopping the selection. Fixes bug #665
+kes  Rework DVD writing to ensure that the last part is written
+     on open_next_part when dealing with a spool file.
+kes  Correct the lseek_dev() routine to handle end point correctly
+     (bug introduced by me).
+kes  Allow part number to exceed num_dvd_parts in lseek_dev().
+rbn  Change make_session_key on Windows to use WIN32 APIs to produce 
+     a better seed.
+rbn  Add new tool scsilist.exe which displays the changer, tape and 
+     CD/DVD (1394, SCSI, SATA, ATAPI) devices and the information required 
+     to add them to bacula-sd.conf.
+30Aug06
+kes  Apply dvd-handler patch from Richard Mortimer.
+kes  Apply dvd error check patch from Richard Mortimer.
+kes  Apply bpipe race patch from Richard Mortimer.
+kes  Rework how DVD labels are handled and set append only
+     when part > num_dvd_parts.
+27Aug06
+kes  Rework many features of DVD writing and reading. Added many error
+     messages.  Most importantly changed part to represent the current
+     part number base zero. This makes current DVD writing incompatible
+     with previous version.
+26Aug06
+kes  Add host:port to connect failure messages to FD and SD from Dir.
+kes  Add WhereACL to console ACL list.  If nothing is specified, only
+     the default is permitted for restore. Otherwise, *all* allows any
+     path, or you can specify permitted paths. This should allow control
+     over where users can restore files. This is untested.
+kes  Modified message to add a ? (as in loaded?) when querying the autochanger
+     for what Slot is loaded.  
+kes  Fixed the use of Slot, so that is more correctly maintained, thus
+     eliminating unneeded duplicate calls to determine what Slot is loaded.
+25Aug06
+kes  Install man pages with 'make install'
+kes  wx-console crashes because of differences between Bacula and wxWidgets
+     malloc()/free().  Tweak wx-console to use bmalloc()/bfree() for Bacula
+     calls.     
+kes  correct improper indenting in wx-console/console_conf.c
+kes  update wx-console header copyrights
+kes  Fix bug #658 where wx-console mangles file/directory names containing
+     commas.
+24Aug06
+kes  Add Media.Enabled flag to client backups for dotcmds.c
+kes  Enforce Media.Enabled=1 for a current restore to work.
+kes  Require restore case 3 to have sqlquery permission to work.
+kes  Remove obsolete del_MAC sql command.
+kes  Ensure that bscan creates Volumes with Enabled=1.
+
+Version 1.39.20 beta released:
+22Aug06
+kes  Correct missing Client table reference in SQL pointed out by
+     Marc.
+21Aug06
+kes  Fix Win32 build (new entrypoint, start baculafd).
+20Aug06
+kes  Add -n option to bconsole to turn off conio.
+kes  Print JobIds to be migrated in Job Report.
+kes  Add additional user supplied notes to the messages part of 
+     bacula-dir.conf concerning multiple email addresses.
+kes  Fix an incorrect comment pointed out by a user in dvd_handler.in
+kes  Add more recent Feature requests to Projects file.
+19Aug06
+kes  Apply Maritn's fix to src/win32/Makefile.
+kes  Apply Martin's fix to configure.in for pthreads on FreeBSD 4.x
+kes  Implement pruning for Migration and migrated jobs.
+kes  Implement PoolOccupancy migration.
+kes  Implement PoolTime migration.
+16Aug06
+kes  If doing a mount, look for a slot, and if specified pass it to
+     the SD so that it can load the autochanger.
+kes  Return DVD=1 flag if a label command is done to a DVD. This
+     permits setting VolParts to 1.
+kes  Apply DVD patch from Richard Mortimer <richm@oldelvet.org.uk>, but
+     rework ua_label code based on DVD media type to use DVD flag returned.
+15Aug06
+kes  Eliminate some compile warnings in dird_conf.c
+kes  Format the bytes field in the terminated jobs part of the status
+     command for the three daemons with suffixes to reduce print size 
+     of backup bytes.  Suggested by a user.
+kes  When not descending into a directory, print the File= name that
+     triggered it -- makes why not descending a bit clearer.
+kes  Do not unload autochanger when doing a list command -- basic code
+     from Eric Bollengier.
+12Aug06
+rbn  Reworked the MinGW32 build-dependencies script, it has been renamed
+     to build-depkgs-mingw32.  It now handles two options -h to display
+     help and -C to reextract the source and apply the patches.  The -C
+     option is useful for updating the source after new patches are 
+     released.
+rbn  Moved the 3rd party package URLs to a separate file External-mingw32.
+     This allows updating to new versions without having to modify the
+     script and makes it easier to figure out which packages and which
+     versions are used.
+rbn  Added a new script build-depkgs-msvc.cmd which does the same thing
+     as build-depkgs-mingw32 except they are built using Microsoft Visual C
+     and placed in the depkgs-msvc directory.  There is also an 
+     External-msvc file to describe the packages.
+08Aug06
+rbn  Fix Windows cross-compile compatibilty problems with FreeBSD.
+07Aug06
+kes  Fix bug #462 incorrect error message printed when client script called
+     from File= was not found.
+kes  Fix bug #558 (waiting for feedback) where Bacula needs too much time to
+     do a rewind on Solaris when no tape is in the drive (Solaris does not
+     have the detailed errno found on Linux).  Added Solaris specific code.
+     Note, this may apply to other OSes as well.
+06Aug06
+kes  Defined BUILDING_CATS in src/cats/cats.h so that *nix builds.
+dsb  Updated rpm spec for 1.39 - updatedb 9 to 10, add new man pages,
+     fix bug 648 - update sqlite script patches, lock out gnome2console
+     builds for platforms with gtk+ < 2.4.
+     Updated build_rpm.sh - add remote source directory, add switch for 
+     signing, refine file names.
+     Updated spec file again for Mandriva build as they have this curious
+     custom of silently converting all manpages to bzip2 format just before
+     the final packaging step.
+05Aug06
+rbn  Fixed the Windows Makefiles so that they won't accidentally try and
+     pickup binaries for the Unix build.  This allows both the Unix
+     build and the Windows build to be built in the same tree without
+     interfering with each other.
+rbn  Fixed error handling and cleaned up mtx-changer.cmd.
+rbn  Added the rest of the database scripts.  These are installed but are
+     not yet edited for variable replacement.
+rbn  Broke out the cats functionality from bacula.dll and put into new
+     separate dlls for each database type.  At installation time the
+     correct one is copied to bacula_cats.dll.
+rbn  Eliminate the need to install the mysql.dll on client only builds.
+rbn  Moved dird/sql_cmds.c into the cats directory so all the database
+     specific #ifdefs were in the cats directory.
+rbn  Added a new sql_cmds.h with all the declarations for the variables
+     exported from sql_cmds.c.
+rbn  Moved catalog_db[] from lib/message.c to a new routine db_get_type()
+     which is implemented in bdb.c, mysql.c, postgresql.c and sqlite.c in
+     src/cats.
+kes  Correct improperly formatted list command output reported by Dan.
+04Aug06
+kes  Correct despool time calculation.
+03Aug06
+kes  Remove previous changes to compat.cpp as they create problems.
+kes  Use old style MD5 for FileSets to avoid Full saves on every Job.
+kes  Attempt to fix problems with the msg_queue crashing on Solaris
+     when Bacula is terminating, but problems remain.
+kes  Add WIN32_VSS to HAVES in src/Makefile.inc.in to correct VSS
+     name editing problems with too many \\?\es.
+kes  Fix some Bacula source code style problems in compat.cpp.
+kes  Add debug code to compat.cpp and convert non-Bacula debug code
+     to Bacula style.
+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 descend 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
+kes  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).
+kes  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 ones head is not easy.
+
+Version 1.39.17
+28Jul06
+eb   Tweak new runscript feature to work with 1.38.x FDs. 
+eb   Correct crypto.c to fix segfault when restoring an encrypted stream 
+     on fd which don't use rsa keys.
+eb   Add yes/no English keywords on localized yes/no questions.
+27Jul06
+kes  Several important commits from Robert Nelson for code cleanup and
+     Win32 build.
+kes  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
+kes  Change cats/sql.c to eliminate %-*s format, which I think is turned
+     off in bsnprintf.
+kes  Add Comment field to llist of a volume.
+kes  Allow true/false in some yes/no questions.
+kes  Implement update volume enable=(on|off|true|false|archived|0|1|2)
+kes  Remove a few /n's when scanning commands from another daemon. This
+     permits adding additional fields later.
+kes  Modify dbcheck to handle ctl-d and to delete Log table entries.
+kes  Update README.mingw
+22Jul06
+kes  Tweak authentication to work with 1.38.x FDs. 
+kes  Tweak catalog make scripts.
+kes  Fix catalog upgrade scripts so that they work.
+kes  Correct despooling debug code to eliminate race condition.
+19Jul06
+kes  Add additional fields as specified by Arno to LocationLog.
+kes  Add comment field to the Media record.
+kes  Add Time field to the Log record.
+kes  Correct migration SQL (thanks to Bill Moran) so that it
+     runs with PostgreSQL also.
+kes  Add spooling/despooling info in status output of SD.
+17Jul06
+kes  Spend a lot of time integrating mkcdrec with the rescue disk.
+kes  Add VOLMGMT message class for volume management messages (none yet).
+kes  Add CATALOG as a destination.     It goes into the LOG table.
+kes  Implement the Log table in the DB.
+kes  Implement the Location Log table in the DB (for user use).
+kes  At Eric's request add a run_scripts() just after blast_data in
+     src/filed/job.c
+10Jul06
+kes  Add Enabled column to Location, correct some typos in DB schemas.
+kes  Correct bug I introduced into RunScripts enum.
+kes  Add log table to Catalog
+kes  Purge original job migrated if the migration terminates normally.
+kes  Cleanup purging of files/jobs so that it is done only in a 
+     single subroutine.
+kes  Add new VOLMGMT message class.
+kes  Add Catalog message destination (user conf code remains to be written).
+09Jul06
+kes  Modify read_record and friends to properly deal with migration         
+     needs.
+kes  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.
+     ==========================================================
+
+kes  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.
+kes  Add name() methods to all the resource classes.
+kes  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.
+     ==========================================================
+
+kes  Add more detail (Storage, Device) to list of volumes printed
+     for restore.
+kes  More code in migrate. In particular start multiple jobs if
+     migrating a volume.
+kes  Probably overkill, but ensure that the bsr is unique even within a 
+     job in FD and SD.
+kes  Rework bsys.c drop() so that it now should work as expected.
+kes  Update a bunch of old copyrights -kes  particularly in .h files.
+kes  Remove src/lib/bshm.c/h
+05Jul06
+kes  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
+     ===========================================================
+
+kes  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.
+kes  Rename the cram_md5 routine names to be slightly more appropriate
+     to what they are doing (challenge and respond).
+kes  Robert committed his #ifdef and header cleanup.
+30Jun06
+kes  Fix a compiler warning in files/backup.c
+kes  Cleanup NOT NULL vs DEFAULT 0 in database creation.
+kes  Tweak btape.
+kes  Robert committed his low impact changes.
+kes  I removed a size_t from the jcr.h definition.
+kes  Update the tape regression scripts (still to be tested).
+kes  Add gcc and gcc-c++ requires to srm as suggested by a user.
+kes  Require done or quit to exit from in memory tree restore.
+26Jun06
+kes  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.
+     ==========================================================
+
+kes  Add complete text of GPL to LICENSE.
+kes  Implement job report that indicates where Storage and Pool
+     came from -kes  with overrides and Pool storage and NextPool,
+     it is all very complicated.
+kes  Create a few common subroutines for backup.c and migrate.c
+kes  Eliminate warning messages from tray-monitor.c
+25Jun06
+kes  Apply fix for scheduler for missing unlock_jobs().
+kes  Clean out autoconf caches before rebuilding configure
+kes  Fix the FreeBSD pthreads lib define updated by Dan.
+kes  Add missing semicolon in src/console/console.c
+kes  Add Robert's enhanced version of build-win32-cross-tools
+     as well as his patch file.
+kes  Note, the new gcc options are likely to break building of
+     wx-console or the tray-monitor ...
+24Jun06
+kes  Implement Robert's suggestion to suppress printing compile lines.
+kes  Detect GCC correctly (I hope)
+kes  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.
+     ===========================================================
+
+kes  Fix crypto when not using openssl. I previously overlooked this.
+kes  Eliminate crypto type punning problems by eliminating void * and
+     using uint8_t * instead.
+kes  Harden authentication failure in FD by single threading errors
+     and forcing a 6 second wait.
+
+     ===================== Warning =============================
+          Removed  'Accept Any Volume' directive.
+     ===========================================================
+
+kes  Major cleanup and simplification of regress using shell functions
+     (more tests to be converted to new format)   
+kes  Add detection of 64 bit Irix as indicated by user.
+kes  Increment catalog database id from 9 to 10.
+kes  Add a few of the new database fields to the various C++
+     structures.
+kes  Implement code to fill in the most important new fields (e.g.
+     Media Enable).
+kes  Ensure that most of the new fields are in create/get/insert/update.
+     More work to be done.
+22Jun06
+kes  Update some very old licenses in src/cats.
+kes  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.
+kes  Delete mac_record subroutines.
+kes  Add new table values to create/update/get routines as appropriate.
+kes  Update the update_tables and make_tables scripts.
+kes  Make a first cut in using a union where multiple pointers (actually
+     pointers to pointers) are stored.
+kes  Make some changes to base64.c suggested by Robert and others and add
+     a small amount of documentation.
+kes  Add some changes suggested by Peter for Solaris (bregex...)
+kes  Make runscript.h always built because it needs to be pulled into
+     more places.  In particular its RES was left out of a union.
+kes  Renumber the enum{} list in runscript.h to avoid starting from zero.
+     This makes it slightly easier to detect uninitialized variables.
+14Jun06
+kes  Remove xpg4 lib from FreeBSD build as it is no longer needed and
+     sometimes creates install problems.
+kes  Change a couple of %T in strftime to %H:%M:%S as seen in Robert
+     Nelson's code.  More to do.
+kes  Convert a few store_bit to store_bool in filed_conf.c.       
+kes  DVD tweak to block.c as supplied by Uwe Muessel.
+04Jun06
+kes  Modify configure.in to check for typeof().
+kes  In findlib/attribs.c use typeof instead of templates if possible.
+01Jun06
+kes  Implement partial error messages for src/filed/acl.c
+kes  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.
+kes  Small updates to projects.
+27May06
+kes  Add Eric Bollengier patch for new RunScript directive. It breaks
+     compatibility between dird and fd.
+26May06
+kes  Prevent DVD code from rewriting label if the device cannot be
+     opened read/write.
+kes  Used __GNUC__ to detect GNU g++ as suggested by John Goerzen to
+     fix Debian build bug.
+kes  Fix Dir/SD run race in migrate.c, verify.c, and restore.c
+kes  Integrate manpages contributed by Jose Luis.
+kes  Update projects file.
+kes  Add manpages Makefile.in to configure.in
+kes  Remove installation of bacula.8 in scripts directory.
+24May06
+kes  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.
+kes  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).
+kes  Fixed bug #619 where Bacula would not restart jobs with MaxRestartTimes
+     set to zero. 
+kes  Apply patch from John Goerzen bug #611 to fix bad manual links in the code.
+kes  Apply patch from Rudolf Cejka bug #614 to removed trailing
+     colons in query.sql file.
+kes  Apply patch from Rudolf Cejka bug #613 to correct prunning of files
+     not to create orphans.
+kes  Apply patch from Rudolf Cejka bug #617 to use mtime instead of ctime
+     in restore long listing.
+kes  Apply patch from Rudolf Cejka bug #609 to use MarkId in verify.c instead
+     of incorrect MarkedId.
+kes  Apply patch from adioso bug #616 to correct text in manual (replace
+     Director with File daemon).
+kes  Rework a few of the zlib changes so that they build properly.
+
+21May06
+kes  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.
+kes  Modify LICENSE to correct some problems pointed out by Debian.
+05May06
+kes  Correct EOF with no \n lex.c problem.
+kes  Tweak compat.h compat.cpp and merge with apcupsd
+kes  Add additional INFO messages if autochanger cannot be used.
+
+02May06
+kes  Simplify Win32 Makefile
+kes  Correct count of buffers/bytes used by smartall.c
+kes  Updated compat.h after porting apcupsd to MinGW.
+01May06
+kes  Work on getting wx-console building on MinGW. wxWidgets now builds
+     started adding Makefile ...
+kes  Moved MinGW library objects to src/win32/lib to reduce clutter.
+30Apr06
+kes  Reloading a bad configuration file doesn't kill director any more.
+     Thanks to fix from Eric Bollengier.
+29Apr06
+kes  Fix problem of accents with new Win32 code.
+kes  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 -kes  i.e. there is
+     some mapping problem with wide characters.
+kes  The code no longer compiles with Microsoft VC++.
+28Apr06
+kes  Start implementing Christopher's St.Bernard code.
+kes  Add Christopher's mods for opening files.
+kes  Strip \r \n from Win32 error messages (Christopher)
+kes  Add more info about Win32 system if unknown (Christopher)
+kes  Use bstrn(cpy, cat) routines to avoid overrun in compat.cpp
+kes  Fix a number of incorrect strings marked for translation, when
+     they should not be (e.g. commands).
+kes  Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob
+     Patches supplied by user in bugs #608 and #599.
+kes  Use most recent of st_ctime and st_mtime in restore tree DIR
+     listing. This fixes some problems with Win32 printing incorrect
+     values.
+kes  Correct the clock shift comm time calculation between the DIR
+     and the FD. It was added rather than subtracted.
+kes  Strip all backslashes in filenames to be restored on Win32
+     machines -kes  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.
+kes  Remove lib/regex.c (replaced by bregex.c).
+kes  Delete src/win32/License.txt
+kes  Modify installer to install LICENSE
+26Apr06
+kes  Fix bug in build-win32-cross-tools script reported by Howard
+kes  Implement cross compiled bconsole
+25Apr06
+kes  Fix barcode test, eliminate BOOL (doesn't exist on Linux).
+kes  Write first cut of README.mingw32
+kes  Add back ua_label barcode fix from Rufolf Cejka.
+kes  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
+kes  Add 'Dir Status' button to the gnome console.
+kes  More work on migration.
+kes  Restore non-compatible base64 coding to permit compatibility.
+kes  Display heap stats in Storage daemon without debug level.
+22Apr06
+kes  Integrate most of the MinGW changes -kes  more to do.
+21Apr06
+kes  Implement using pg_config for finding PostgreSQL files.
+     Fixes bug #600. Patch supplied by user.
+kes  Remove -t option from mktemp in mtx_changer.in and use
+     working directory. Fixes bug #578.
+kes  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.
+kes  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.
+kes  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.
+kes  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
+kes  Ensure that DB signature is never NULL.
+kes  Ensure that DB table names are not translated.
+kes  Fix scheduler to handle time skew (eg daylight savings).
+kes  Fix scheduler to use lock_jobs() to avoid most problems
+     with reload. Window is now milliseconds.
+19Apr06
+kes  Apply patch from Christopher Hull
+     kes  Allow multiple connections to database with different
+       parameters.
+     kes  Invalidate the scheduler when doing a reload. Fixes seg
+       fault, but still 60 second window.
+     kes  Additional info in Reschedule message.
+     kes  Use set_jcr_job_status() everywhere to prevent loss of
+       cancel, error.
+     kes  Display peer IP in FD if error from connecting DIR.
+     kes  Don't increment file count for DIRBEGIN.
+     kes  Replace illegal characters in Win32 filename by _.
+     kes  Add SE_CREATE_PERMANENT_NAME privilege in Win32.
+     kes  Hash hard link filenames rather than linked list.
+     kes  Fix for security failure in chdir on Win32.
+     kes  Add CreateDirectoryA/W win32 API entry points.
+kes  Add /silent option to Win32 FD for Install/Remove service.
+kes  Always print Heap statistics in FD.
+18Apr06
+kes  Remove the -f option from the chown in Makefile.in for more
+     portability.
+kes  Change setting the group in Makefile.in to use chgrp for
+     more portability.
+kes  Implement a write_store and read_store to replace
+     dirstore in reserve.c
+kes  Implement a Bacula read/write lock for Python rather
+     than using the Python lock to avoid recursive problems.
+kes  Correct the uninstall directory names in filed/Makefile.in
+     as reported by a user.
+17Apr06
+kes  Correct some problems with database creation (new tables).
+kes  Replace a bunch of old 0x%x by %p.
+kes  Get first cut of Migration with Job selection working.
+16Apr06
+kes  Change store_bit() to store_bool() for the Spooling in 
+     dird_conf.c -kes  bug reported by Robert Nelson.
+15Apr06
+kes  Correct Makefile bug found by Dan Langille.
+14Apr06
+kes  Correct Makefile for Solaris /bin/sh
+kes  Correct mtx-changer.in for Solaris /bin/sh
+kes  Abort if a conf resource does not have a Name =
+12Apr06
+kes  Change the name of the regex program to bregex.
+kes  Add the bwild program to the tools directory. It is similar
+     to the bregex program.
+kes  Implement create bregex.h and bregex.c in src/lib from the
+     Python regexp program.  
+kes  Use the new bregex.c to implement Regex expressions on Win32.
+11Apr06
+kes  More work on migration.
+kes  Implement wild program in tools directory for testing
+     wild-cards. Almost identical to the regex program.
+kes  Up port VSS single thread locking code.
+kes  Replace N_(..) by NT_(...) to inhibit translation of
+     commands.
+kes  Modify Makefile to change the permissions on Working Directory
+     to 770 if the directory is created.
+kes  Do not fail the Makefile if changing the permissions or 
+     owner/group on WorkingDir fails.
+kes  Remove early selection of Scratch Volumes in the recycling
+     algorithm.
+kes  Correct the old recycling algorithm so that Scratch Volumes
+     are selected when looking for a Volume in the changer.
+kes  Correct a typo in the Verify SQL reported by Joe Park.
+10Apr06
+kes  Remove automatic case folding on Windows FDs. You must
+     explictly use the 'Ignore Case = yes' option.
+kes  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
+kes  Make weof() and clrerror() methods of class DEVICE.
+08Apr06
+kes  Tweak license to include Microsoft restrictions.
+kes  Move mysql.reconnect to after real_connect().     Thanks to
+     Frank Sweetser for the patch.
+kes  Disallow a backslash in a File = directive (Windows junk)
+     unless the string is quoted.                     
+kes  Apply Eric's patch to ua_label.c so that daemon protocol
+     is not translated.
+kes  Add NT_ definition for strings that should not be translated.
+kes  Apply NT_() to ua_label.c
+kes  Remove timed wait for VSS on Win2K3 as it is not yet
+     implemented.
+kes  Correct bacula.in script to reference bacula-ctl-xx in the
+     sysconfig directory rather than the bin directory.
+26Mar06
+kes  Fix a long standing bug in the bacula start/stop scripts.
+kes  Attempt to add the new bacula-ctl-* files to the rpm.
+kes  Switch to using typeof() for list traversing to avoid
+     as many FC5 g++ compiler warnings as possible.
+25Mar06
+kes  Split the bacula start/start script into four files:
+      bacula         -kes  starts and stops calling other scripts
+      bacula-ctl-dir -kes  starts/stops the director
+      bacula-ctl-fd  -kes  starts/stops the File daemon
+      bacula-ctl-sd  -kes  starts/stops the Storage daemon
+24Mar06
+kes  Create datestyle fix for PostgreSQL. Fixes bug #574.
+kes  Correct editing of JobId from int to int64 in fd_cmds.c
+kes  Eliminate FileSet name race with bash_spaces() and multiple
+     threads by bashing in a local.
+kes  Fix error return from 'use storage' to print a correct error
+     message rather than nothing.
+kes  Correct false re-read last block error message when two jobs 
+     are simultaneously writing at the end of a tape.
+kes  Simplify exit conditions in the reserve.c code to avoid     
+     possible non-release of reservation_lock().
+kes  Suffle lock order in reserve to avoid deadlock between
+     reservation lock and device mutex.
+21Mar06
+kes  Initialize jcr mutex before first use. Thanks to Thorsten for
+     tracking this down for me !!!! as it broke the Win32 build.
+20Mar06
+kes  Integrate addition of line count limitation to bsmtp -l from
+     Sebastian Stark <stark at tuebingen.mpg.de>
+17Mar06
+kes  Implement regex test program in tools directory.
+kes  Attempt to fix time problem with bsmtp with foreign langs.
+kes  Add strip_trailing_newline() submitted by user.
+kes  Implement regex matching in migrate.c
+16Mar06
+kes  Fix bug #537 to allow arbitrary time to mount a volume for
+     restore, if polling is turned on.     
+kes  If dir_user or dir-group is specified in ./configure apply it to
+     the working-dir. Fixes bug #533.
+kes  If rescheduling a job cancel the previous incarnation with the SD.
+     Fixes bugs #566 and 557.
+kes  Fix bug #567 do_message() definition type conflict.
+
+14Mar06
+kes  Add more jcr methods and make mutex and use_count private.
+kes  Create lock/unlock methods for jcr.
+kes  Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading
+     records to get to seek position.
+kes  Integrate patch from bug #561 to correct conio.c signal definitions.
+kes  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.
+kes  Fix obsolete usage of foreach_dlist() to use foreach_jcr() in
+     lib/jcr.c -kes  prevents locking the jcr chaing.
+kes  Apply patch from bug #564, which corrects listing volumes with
+     multiple autochangers. Apply same fix to next volume list.
+kes  Fix bug #562 where restore bootstrap file is not unique.
+kes  More details in implementing David's migration syntax proposal.
+kes  Save and restore dcr when swapping drives so that if we have
+     a write dcr it is not lost.
+kes  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.
+kes  Stop SD command loop if job is canceled.
+
+08Mar06
+kes  Remove old code from findlib/create_file.c
+kes  Rename mac.c migrate.c
+kes  Add user friendly display of VolBytes in job report.
+kes  Rename target... to previous... to make it a bit easier to
+     understand.
+kes  Add selection type and selection pattern to Migration (idea
+     given by David Boyes). 
+
+04Mar06
+kes  The po files should now be current.
+kes  Fix new sql_use_result() code to properly release the
+     buffers in all cases.
+kes  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.
+kes  Allow listing by any of the above.
+kes  Add the user friendly job report code for reporting job elapsed time
+     and rates with suffexes from John Kodis <kodis at comcast.net>.
+kes  Add Priority and JobLevel as Python settable items.
+kes  Use TEMPORARY table creation where the table is created by
+     Bacula.
+kes  Add new code submitted by Eric for waiting on specific jobid.
+kes  Add ACL checking for the dot commands.
+kes  Fix restore of writable FIFOs.
+kes  Fix a bug in bpipe where the string was freed too early.
+27Feb06
+kes  Modify the Python class examples to inherit object -kes  new way
+     of defining classes. Patch from Felix Schwarz.
+kes  Implement jobuid to replace old usage of job in keywords as
+     suggested by Eric Bollengier.
+kes  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
+kes  Implement write variables for Python to set Priority (anytime), and
+     Job Level, only during JobInit event.
+26Feb06
+kes  Fix the block listing bug pointed out by Arno.
+kes  Update the po files at Eric's request.
+24Feb06
+kes  Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to 
+     accept time qualifiers.
+kes  Make catalog respect ACL.
+kes  Add recycle count to Media record.
+
+Changes to 1.39.6-beta1 24Feb04
+23Feb06
+kes  Add Rudolf Cejka's new rc-chio-changer.
+kes  Implement pulling Volume from Scratch Pool if the
+     Volume is in the autochanger.
+kes  Implement additional command arguments for update Volume.
+
+Changes to 1.39.5 
+22Feb06
+kes  Back port changes to 1.38.5
+kes  Fix recycle SQL for StorageId.
+kes  Fix misplaced quote in mtx-changer script.
+20Feb06
+kes  Note. Your database must be updated, or you must create 
+     a new database. I have not yet incremented the database level.
+kes  Add Location table. 
+kes  Add LocationId, DeviceId, and MediaTypeId to Media record.
+18Feb06
+kes  Implement create/get mac record in database for adding extended
+     Migration data to the job record.
+kes  Add new MAC table to update/make database scripts.
+kes  Return Storage name used when getting VolumeNames for a job.
+kes  Change bsr file keyword Storage to Device, which is more accurate.
+kes  Ensure that Mac records are pruned/purged.
+kes  Tweak SD tools to deal with changing media type.
+kes  Integrate more dev.c subroutines as methods (e.g. strerror, bsr, ...)
+kes  Pass pointer to dcr pointer to acquire_device_for_read() so
+     that the subroutine can switch devices, and hence dcrs.
+kes  Modify the multiple MediaType read code to re-use the same
+     dcr when switching devices. This makes the code much more
+     robust.
+kes  Integrate patch from Karl Hakimian that reads JobIds, FileIndexes
+     from a table for restore.
+kes  Add Storage name to VolParams, but it really should be Device.
+14Feb06
+kes  Add disk-changer to scripts directory + configure/Makefile
+kes  Eliminate PoolId from jcr -kes  it is in jcr->jr.PoolId
+kes  Implement store_bit scanner to replace store_yesno.     Mostly done.
+kes  Implement new store_bool that stores in a bool. 
+kes  Add true/false to yes/no conf directives.
+kes  Make first cut at changing appropriate store_yesno to store_bool.
+kes  Complete implementation of Pool storage devices.
+kes  Move starting clones to job.c
+kes  Move create_restore_bootstrap_file() to job.c
+kes  Make copy_storage() more general to be able to handle
+     Pool storage.
+kes  Cleanup a lot of migration code for manual running, including
+     using Pool storage.
+kes  Move getting a scratch Volume into a subroutine.
+kes  Make all places a Volume that is added to a pool to 
+     respect max vols.
+kes  Fix bug in autochanger recycle code (improper edit 64 bit).
+kes  Fix segfault in restore command when no value specified.
+kes  Start adding code to handle multiple MediaTypes in restore.
+kes  Eliminate race condition in getting Volume name for
+     two drive autochanger.
+kes  More debug code in autochanger.
+kes  Add storage keyword to bootstrap file, add parsing.
+kes  Move slot in bsr file into Volume record as there will be
+     a different slot for each Volume.
+kes  Create reserve.h
+07Feb06
+kes  Implement Pool storage overrides.
+06Feb06
+kes  Implement first cut of Migration.
+kes  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.
+kes  Implement StorageId patch supplied by user (reggie) in bug
+     #536.  This should permit Bacula to work correctly with two
+     autochangers.
+kes  Implement Job listing variations suggested by a user.
+kes  Move updating bootstrap code in backup.c to subroutine
+     update_bootstrap_file().
+kes  Add new job status elapsed time and bytes written user
+     friendly job report output patch sent by John Kodis
+     <kodis at comcast.ne>.
+kes  Implement a storage list in Pools.
+kes  Separate out setup_job() code from run_job().
+kes  Get migration working -kes  lots of changes in mac.c in both
+     DIR and SD.
+kes  Apply patch from user (Eric Bollengier I think) that fixes a     
+     DIR crash when no arguments are supplied to a dot command.
+kes  Fix typo (strcpy->strcmp) in ua_prune.c as reported by Martin.
+kes  Fix command arg name->volume in label command of gnome-console.
+kes  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
+kes  Apply user supplied patch for more readable rate output
+     in job report.
+kes  Continue implementing migration.
+kes  Implement support for removable filesystems in SD.
+kes  Ensure that btraceback scripts can be read by anyone.
+kes  Replace dvd-freespace and dvd-writepart by dvd-handler.
+kes  Correct bug where canceling restore before the FD contacts
+     the SD causes the drive to be left in read mode.
+kes  Move ofline_or_rewind into DEVICE::close().
+kes  Eliminate close_device.
+kes  Convert several dev subroutines to methods (e.g. bsf,
+     eod, ...)
+kes  Eliminate force_close_device().
+kes  Implement Device Type directive in Device resource that
+     can have values File, Tape, Fifo, DVD, or Prog.
+kes  Add has_cap() method to Device.
+Changes to 1.39.4
+17Jan06
+kes  Add patch from bug #527 to allow RedHat user to specify
+     options/user/group for starting each daemon in      
+     /etc/sysconf/bacula.
+16Jan06
+kes  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
+kes  Add periodic (every 24 hours) garbage collection of memory 
+     pool by releasing free buffers.
+14Jan06
+kes  Correct bug counting sized (for display only) in smartall.c
+kes  Print FD mempool stats if debug > 0 rather than 5.
+12Jan06
+kes  Make db_lock() mutex error fail the job rather than abort
+     Bacula.  Canceling the job caused the mutex to fail.
+kes  Correct bug in alist.c that re-allocated the list if the
+     number of items goes to zero.
+kes  Move the reservation system thread locking to the top level
+     so that one job at a time tries all possible drives before
+     waiting.
+kes  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
+kes  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.
+kes  During 'update slots' clear all InChanger flags where the
+     StorageId is zero (old Media records).
+
+Beta release 1.38.4:
+09Jan06
+kes  Fix autochanger code to strip leading spaces from returned
+     slots number. Remove bc from chio-changer.
+kes  Back port a bit of 1.39 crypto code to reduce diffs.
+kes  Fix first call to autochanger that missed close()ing the
+     drive. Put close() just before each run_program().  Fixes
+     Arno's changer bug.
+07Jan06
+kes  Add PoolId to Job record when updating it at job start time.
+06Jan06
+kes  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.
+kes  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
+kes  Start implementing Verify list output.
+kes  Move the suitable_drive flag to a better place to prevent
+     premature termination of the reservation if all drives
+     are busy -kes  should fix Arno's diff/inc pool failures.
+26Dec05
+kes  Add mutex to single thread VSS code in Win32.
+22Dec05
+kes  Simplify code in askdir.c that waits for creating an appendable
+     volume so that it can handle multiple returns from the wait
+     code.
+kes  Modify the wait code to permit multiple returns.
+kes  Return a zero when 'autochanger drives' is called and
+     it is not an autochanger.
+kes  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.
+kes  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.
+kes  Return error if reserve cannot find at least one suitable device.
+kes  Make wait_for_sysop() return correct state information.
+kes  Fix Win32 state file problem. write was not using compat
+     code. This should fix bug #500.
+21Dec05
+kes  Modify gui on command to set only GUI mode and not batch.
+kes  Modify .messages command to always print messages regardless
+     of the mode.
+kes  If GUI mode is on, suppress automatic printing of 
+     You have messages. 
+kes  Delete old bnet packet code.
+kes  Ignore new BNET_START_SELECT and BNET_END_SELECT signals in
+     wx-console. -kes  not implemented because bconsole must be updated.
+kes  Modify restore command in wx-console to set gui on and to use
+     only .messages instead of messages.  Hopefully this fixes bug
+     #514.
+kes  Fix seg fault in exit of acquire when canceling a job --
+     reported by Wolfgang Denk
+kes  Pull in latest reservation system changes from 1.38
+kes  Make .messages command always print messages regardless
+     of the automessages flag.
+17Dec05
+kes  Fix seg fault if user labels a drive directory bug #513
+kes  Remove quotes around Version as it breaks things.
+16Dec05
+kes  Merge in Aleksandar Milivojevic's mods to the spec file.
+kes  Apply sparse code fix for raw drives and fifos. Bug 506
+kes  Thorsten fixed Unicode cd problem with wx-console bug 505.
+14Dec05
+kes  Correct reservation system to do a last ditch try
+     for any mounted volume, then anyone anywhere.
+kes  Add quotes around table Version because of
+     error in MySQL 4.1.15 -kes  bug report submitted.
+kes  Correct some minor problems with btape in the fill
+     command.
+kes  Updates to ssh-tunnel from Joshua Kugler.
+kes  Added a report.pl program from Jonas Bjorklund.               
+kes  Simplify the O_NONBLOCK open() code for tape drives,
+     and always open nonblocking.
+kes  Do not wait for open() if EIO returned (shouldn't happen).
+kes  Eliminate 3 argument to tape open().
+kes  Correct the slot # edited in the 3995 Bad autochanger unload
+     message.
+kes  With -S on bscan (show progress) do not divide by zero.
+13Dec05
+kes  Make cancel pthread_cond_signal() pthread_cond_broadcast().
+kes  When dcr is freed, also broadcast dev->wait_next_vol signal.
+kes  Remove unused code in wait_for_device.     
+kes  Make wait_for_device() always return after 60 seconds of wait.
+
+Changes to 1.39.2:
+13Dec05
+kes  Add stubs for non-crypto build.
+12Dec05
+kes  Use localhost if no network configured
+11Dec05
+kes  Eliminated duplicate MaxVolBytes in cat update -kes  bug 509.
+kes  Remove debug print.
+kes  Add bail_out in error during state file reading.
+10Dec05
+kes  Merge changes made to 1.38.3 into HEAD
+kes  Add stubs for pygtk-console code
+kes  Create Makefile.in for pygtk-console code
+09Dec05
+kes  Merge updates into 1.38 branch
+kes  Update specs to include mysql4 define.
+kes  Fix when attributes are sent, must be after binit().
+kes  Stop read_record() if status not ok in second loop.
+kes  Return rec->FileIndex in dcr->VolLastIndex for normal
+     and partial records in read_record().  This allows bscan
+     to get FileIndex at EOT correct.
+kes  Fix butil.c to correctly set dcr -kes  fixes seg fault in bls.
+08Dec05
+kes  Fix Win32 built to work with new crypto code.
+kes  Apply patch supplied by user (slightly modified) to fix
+     correct detection of holes in block devices and FIFOs. 
+     Bug # 506.
+kes  Apply patch supplied by user (slightly modified) 
+     to fix SD hang with multiple pools and bad client
+     IP. Fixes bug # 508.
+07Dec05
+kes  Add nagios plugin to the examples directory. Submitted by
+     Christian Masopust.
+kes  Remove warning message about multiple saves of hardlinked files
+     from find_one.c as it can generate too many warning messages.
+kes  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
+kes  Reset timeout values before select() per patch from 
+     Frank Sweetser for problems with non-blocking sockets.
+kes  Unlink the state file if either reading or writing it gets
+     errors.  Hopefully this will fix Win32 exit problems.
+kes  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
+kes  Get next volume from Scratch pool before creating a volume.
+kes  Set new Pool defaults in Vol when moved from Scratch Pool.
+kes  Remove argument from create_bacula_database for SQLite as it
+     caused an error.
+kes  Add back index code so that two drive autochangers can get
+     a second tape.
+kes  Change a bunch of debug levels to aid debugging autochangers.
+kes  Fix reservation so that mutexes are properly applied.
+kes  Rework reservation algorithm so that two drives can be used
+     at the same time.
+04Dec05
+kes  Landon merged his data encription changes into the HEAD
+kes  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
+kes  Fix font code in gnome2 console user patch. Fixes bug #501.
+kes  Fix malformatted bnet error message that caused seg fault
+     fixes bug 502
+kes  Applied user patch to improve README.vc8 in src/win32.
+29Nov05
+kes  Add Migrate, Copy, Archive Job types (some where there)
+kes  Correct some more editing of JobId's (for 64 bit compatibility).
+kes  Ensure that StorageId is stored in Media record when ever possible.
+kes  Add Migration Job to Job.
+kes  Add Migration Time, Migration High Bytes, Migration Low Bytes
+     Next Pool to Pool resource.
+kes  Add more code to mac.c (migration archive copy).
+kes  Change Start Storage daemon job to require read and write storage
+     pointers.
+kes  Pass read storage data to SD as well as write storage data.
+kes  Remove old code from winservice.cpp
+kes  Break on error in scan.
+kes  Fix typo in signal.c
+kes  Separate read/write DCR in SD.     Add jcr->read_dcr.
+kes  Cleanup how find_device() works.
+kes  Add read output to Status in SD.
+Changes to 1.39.0:
+23Nov05
+kes  Add red-black btree routines
+21Nov05
+kes  Remove abs() in bfile.c so that it compiles on Solaris. 
+     Bug #491.
+20Nov05
+kes  Fix crash in tray-monitor when daemon disconnects. Bug #479.
+kes  Fix bnet-server bug found on OpenBSD. Bug #486
+kes  Fix cancel failure bug. Bug #481
+kes  Fix failure when Pool name has spaces. Bug #487      
+kes  Fix SD crash in autochanger code. Mutex failure. Bug #488
+kes  Fix a couple of free()s in src/filed/acl.c
+kes  Fix memory overrun in bfile.c in building OS X resource
+     fork filename. Bug #489 
+kes  Add Pool name to SD status output.
+14Nov05
+kes  Apply SunOS patch for ACLs submitted by David Duchscher.                     
+kes  Make sure to set storage before trying to set drive.
+kes  Add bacula_mail_summary.sh to examples directory. It makes
+     a single email summary of any number of jobs. Submitted
+     by Adrew J. Millar.
+kes  Make sure when we do a mount to unblock the device even
+     if the drive could not be opened.  
+13Nov05
+kes  Remove the USE_WIN32STREAMEXTRACTION #defines (always on)
+     and correct a few minor problems to make it build on Linux.
+10Nov05
+kes  Remove delete of CVS from all Makefiles
+kes  Fix seg fault when clicking on Add button in wx-console
+     restore panel.  Bug #470.
+kes  Fix copyright date and URL typo -kes  bug #468.
+kes  Change autostart install for FreeBSD to look for rc.conf     
+     rather than rc.local as suggested fix for bug #466.
+kes  Apply patch supplied by Eric Bollengier to fix PostgreSQL       
+     grant on status. Bug #465
+kes  Apply patch supplied by Eric Bollengier to fix PostgreSQL
+     update script. Bug #464
+kes  Tweak #ifdefing a bit in new Win32 stream code.
+kes  Fix #ifdeffing for FD_NO_SEND_TEST.
+kes  Add documentation of performance #defines