]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/ChangeLog
Change to enable_priv
[bacula/bacula] / bacula / ChangeLog
index e9c2a77e65d8e2d63d336649e906dc71d4a8dd5a..96b7fe95c2b6f5d6157475a66fc607c2bb41b70b 100644 (file)
@@ -1,4 +1,638 @@
+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
@@ -1422,8 +2056,7 @@ Changes submitted this submission:
  - Many intervening changes/updates.
 
 2001-09-29 Release 1.0 Kern Sibbald
- - Fixes to problems found at John's
-   installation.
+ - Fixes to problems found at John's installation.
  - See techlogs/kes25Sep01 for details
 
 2001-09-25 Release 1.0 Kern Sibbald