]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/ChangeLog
Fix setip crash + missing unlocks()+cleanups
[bacula/bacula] / bacula / ChangeLog
index 523c0c0ae177761f366b06c29d2e946d911c40ba..42f8e45ae19fafd41fee7e907d3e528d9f35aa83 100644 (file)
@@ -1,3 +1,991 @@
+
+
+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.