dkopp Change Log
================

2013.03.30  v.6.3.1
+ Display online help file from menu Help > contents.

2012.11.01  v.6.3
+ Replaced deprecated GTK functions with new versions.
+ Improved clarity of some GUI and report texts.

2012.03.17  v.6.2
+ Bugfix: Some DVDs have a top directory with embedded blanks. These
  would not work because "\040" was being substituted. Fixed.

2012.02.01  v.6.1
+ Dkopp was converted to use GTK3 and Cairo. It will no longer
  build or install on older Linux distros lacking these libraries.
+ Bugfix: /etc/mtab is no longer reliable for DVD mount status.
  Using /proc/mounts has improved the reliability of DVD mounting.
+ RPM packages are built using Fedora and rpmbuild instead of alien.

2011.10.20  v.6.0
+ Code cleanup for compiler warnings from GCC 4.6 (Ubuntu 11.10).
+ Removed the use of GTK functions within threads.
+ DEB package is now made by dkpg and RPM is made from DEB via alien.

2011.08.17  v.5.9.2
+ Compensation added for hung DVD/BD drive after growisofs is done.
  The drive can become unresponsive (ignores mount commands), but 
  ejecting and reloading cures the problem and allows the verify
  operation to proceed. 

2011.08.08  v.5.9.1
+ The option was added to abort/retry/ignore errors from growisofs.
  Sometimes nothing is really wrong, or the error is temporary and 
  will not recurr if the last operation is repeated after a short 
  delay. Interference by Gnome auto-mount cannot always be stopped. 
  These error statuses vary with new releases of the kernel, Gnome, 
  and growisofs, and can also vary by DVD/BD hardware.

2011.08.01  v.5.9
+ Mount logic changed to deal better with automatically mounted media.
  Gnome will mount the DVD/BD even if dkopp issues the mount command.
  Dkopp gets "broken pipe" status. This wierdness is simply accepted. 

2011.05.01  v.5.8
+ Packages are now built with Ubuntu 10.04 instead of 8.10. 
  The default install location is now /usr/ instead of /usr/local/.
+ Growisofs always returns a bad status for Blue-Ray media, even though
  they are always OK (so far). The user message was changed to state that
  the media is likely OK and give the option to continue accordingly.
  The verify phase will determine the true media status afterwards.

2011.02.20  v.5.7
+ For full backups, do not mount BD/DVD (stop meaningless error messages).
+ For incremental backup or verify: if mount fails, eject and mount again
  (try to recover from Gnome mount contention, "broken pipe" etc.)

2010.12.05  v.5.6
+ Bugfix: quote DVD label to prevent failure from imbedded blanks.
+ Big backup job with multiple DVDs: add recovery from write or verify
  error: repeat a failed DVD in-sequence before starting the next one.
+ Workaround: "Unknown error 18446744073709551615" from the stat() 
  function turns out not to be a real error and can be ignored.
+ An elementary man page was added. Details are in the user guide.

2010.09.13  v.5.5
+ Bugfix: -script and -nogui failed to work if script is verify only.
+ Improved diagnostics and progress monitoring for -nogui option.

2010.08.21  v.5.4
+ A button [root] was added to the toolbar. This restarts the application
  with root privileges if the queried password (sudo) is correct.

2010.07.15  v.5.3
+ Dkopp was tested with Blue-Ray media, recordable (BD-R) and re-writeable
  (BD-RE). It works without modification (i.e. growisofs works). The job 
  size reasonableness check was raised to 50 GB. The menus and docs were 
  revised to indicate that BD as well as DVD media can be used.
+ Setting the DVD/BD mount point was removed from backup job edit and
  restore job edit. This is now done only in the dialog to select the 
  DVD/BD drive and override the default mount point.

2010.05.24  v.5.2
Output formats for several reports were slightly improved.

2010.03.01  v.5.1
+ Simplify how DVD labels and mount points are handled, in an attempt
  to play better with various DVD auto-mount environments. Ubuntu 9.10 
  auto-mounts DVDs that dkopp requests to mount, causing a small war. 
  Ubuntu 10.04 creates /media/xxxx when a DVD with label xxxx auto 
  mounts: the location is therefore variable. Dkopp now looks only for
  the DVD device and uses an existing mount point. If DVD auto-mounting 
  is enabled, start dkopp after the auto-mount completes. Mount points 
  in existing dkopp job files are now ignored and can be removed to 
  avoid an innocuous diagnostic. You can use gconf-editor to prevent 
  auto-mounting: keys are: /apps/nautilus/preferences/media_automount.
+ The mod time resolution on DVD files has recently changed from 0.001
  to 1.0 seconds, and apparently only for hidden files (genisoimage?). 
  Dkopp now regards mod time differences under 1 second as equivalent.

2009.12.26  v.5.0
+ Support non-GUI mode for command-line / deferred execution (cron).
   (e.g. $ dkopp -nogui -run /.../my-dkopp.job)

2009.10.30  v.4.8
+ Set file exclusion date to 1970.01.01 by default
  (older files cannot be date compared with disk files).
+ Avoid dialog to request DVD mount if a script file is running
  and verify that the DVD is present before continuing.
+ If DVD mount point is missing, create it and continue.
+ Unmount DVD: use mount point instead of device in umount command.

2009.07.13  v.4.7.1
fix compile errors introduced by gcc 4.4

2009.04.25  v.4.7
Another change in DVD mounting to get around newest Linux issue: DVD mount 
command can lock-up (hang) if a DVD is blank or newly formatted. Therefore, 
in the case of a full backup, a mount attempt is no longer made (this was 
done to show the label and any prior backup usage data). For incremental 
backups the mount is still required, so do not try an incremental backup 
with a blank DVD (which makes no sense anyway).

2009.04.12  v.4.6
+ An additional file selection method is provided: include only files
  having a creation or modification date on or after a given date.
+ Inconsistencies in the handling of symlinks have been cleaned up
  (see the technical note in the user guide).
+ Bugfix: an excluded file that is also inaccessible or exceeds 4 GB
  in size caused a segment fault.

2009.03.30  v.4.5
+ DVD speed factor was added to the job edit. The user may elect a lower
  speed than the default for the DVD medium, to increase DVD reliability
  and longevity. Leave blank or zero to use the default speed.
+ The Linux program "udevinfo" has recently become "udevadm info". 
  Dkopp was modified to use whichever variant works.

2008.11.03  v.4.4
Detect if the DVD is already mounted and use as-is (set backup directory 
to match mount point). The dkopp backup job should use the same device 
name that Gnome (or other desktop) uses, e.g. /dev/scdo instead of 
/dev/sr0. Otherwise dkopp will try to redundantly mount the device. 
It is best to let the auto-mount complete before starting a backup job, 
to avoid a tug-of-war as dkopp tries to mount the device in parallel.

2008.06.01  v 4.3
+ change from build script to conventional makefile
+ name change from dkop to dkopp

2008.04.20  v.42
+ code changes for compatibility with recent gcc, c-lib, and GTK2
+ changes to DVD mount logic to get around the latest driver 
  flakeyness and mount interference from Gnome

2008.03.11  v.41
+ added DVD eject and re-mount when DVD mount fails after growisofs
  - growisofs can leave the DVD totally unresponsive, causing verify
    after backup to fail. The backup is usually OK and verify will work
    normally after the DVD has been ejected and reloaded.
  - happens with DVD+R and -R, but not with DVD+RW (on my 2 computers)
  - this workaround works for my desktop but not for my notebook
    (but it does work if the DVD tray is manually pushed back in)

2008.02.04  v.40
+ replace DVD eject between backup and verify with sleep(3) + mount.

2008.01.29  v.39
+ separate build scripts for downloaders and package builders
+ code changes to get application directories from build script

2008.01.20  v.38
+ ignore mount error if full backup (likely a blank DVD)
+ ignore failed eject command - some systems cannot do software eject

2008.01.01  v.37
+ made several changes for 64-bit architecture compatibility, including 
  sequence sensitivity of #include statements leading to runtime crash in 
  gtk_dialog_new_with_buttons()
+ build script allows user choice of install location and desktop launcher

2007.12.11  v.36
+ workaround for defective lib function strerror_r() and BSD compatibility

2007.12.10  v.35
+ fix compile errors for 64-bit architecture
+ code cleanup for newest gcc compiler warnings
+ changed logic of verify thorough - now works independently of backup job
+ error messages to stderr are now captured and put on the screen

2007.11.20  v.34
+ trap mkisofs / genisoimage errors not reported in growisofs status 
  (can make a bad DVD look good)

2007.11.15  v.33
+ new GTK requirement: if (! g_thread_supported()) g_thread_init(0);

2007.11.12  v.32
+ stop propagation of DVD label suffix (dkop:A:A:A...) 
  if same DVD is re-used for multiple full backups
+ locale related library changes

2007.10.15  v.31
+ fix significant bug in thorough verify: files not compared 100%
+ list include and exclude records at the start of the history log file
+ don't lose comment records in job file
+ eliminate "end" record in job file (end is EOF)

2007.08.29  v.30
+ move DVD label setting from job edit to separate menu item 
+ DVD mount no longer overwrites a previously set backup job label

2007.08.23  v.29
+ stop exotic files names with special characters like \r from trashing 
  output formats
+ optional user input of DVD label
+ provide searchable backup log file (time/date, label, list of files)
+ query to find all backup DVDs containing desired files, using wildcards

2007.07.13  v.28
+ accept job file on command line (without -job) (per Linux convention)
+ allow retry of a failed DVD within a multiple-DVD backup job
+ correct progress tracking for multiple-DVD jobs

2007.07.04  v.27 .27b
+ back to using bash for DVD mount (undocumented black magic works better)
+ follow Linux convention for application files in /home/user/.dkop/ 
  or /root/.dkop/ (move your job files here for convenience)
+ improve clarity of command outputs and reports
+ allow show / hide of hidden files in job edit file chooser dialog

2007.05.28  v.26
+ add file load and save convenience buttons to job edit dialog
+ increase file limit from 100K to 200K files (memory usage +15 MB)

2007.05.13  v.25
+ replace menu and toolbar macros with new zfuncs functions

2007.04.25  v.24 
+ minor report improvements
+ add report: disk:DVD differences by directory
+ allow file size exceeding 2 GB

2007.04.08  v.23
+ fix bug: thorough verify was checking files created after last DVD update
+ progress monitoring: backup displays file names being written to DVD
+ set margin for comparing file mod times to 1 ms instead of 1 sec.
+ remove new owner option from restore (don't duplicate Linux capability)
+ use c-lib functions for file restores instead of shell commands

2007.03.26  v.22
+ detect mount EROFS status (read-only file system) and call it success

2007.03.26  v.21
+ unmount DVD before eject (avoid drive hung busy with some Linux kernels)
+ use $ wodim -abort to reset hung-up DVD drives (newer Linux systems only)

2007.03.19  v.20
+ clarify output from menu: DVD and mount point
+ use mount() function for DVD instead of shell - better status information

2007.02.02  v.19
+ job editor: select DVD and mount point from list (instead of typing in)
+ incremental backup: eliminate duplicate differences report

2007.01.10  v.18
+ use generic monospace font instead of Courier 10 (not always available)
+ rationalized menus and toolbar buttons for more conventional interface
+ removed Joliet file system from DVD: Windows XP can read standard DVD
+ converted dialogs to zdialog functions
+ added icons to toolbar buttons

2006.11.30  v.17
+ added tool tips to buttons

2006.11.28  v.16
+ added 3 sec. delay between backup and verify and between mount retries
  (DVD drive may still be busy after growisofs completes, causing 
  following mount command to fail) (why is the driver so flakey?)
+ reorganized library functions into zfuncs.cpp and zfuncs.h
+ added "edit" button for faster access to backup job editor
+ corrected bug causing verify error for file names with trailing blanks

2006.11.01  v.15
+ added menu: set DVD device and mount point independently of job file.
+ bug fix: report of disk-DVD differences was ignoring a manual DVD change.
+ GTK 2.6.10 issue: hidden files not shown in the file-chooser dialog. 
  Button was added to allow user to view these files if desired. 

2006.09.26  v.14
+ added support for large backup jobs using multiple DVDs
+ corrected GTK coding error that was slowing down report output
+ added button to clear window in backup job editor
+ added command to set DVD device independently of backup job file
+ verify (thorough) reports files modified during run (not a compare error)
+ default backup job changed to: include /home/username/* 
+ made minor improvements in output formats and user guide

2006.09.12  v.13
+ exit script file if a command fails
+ fix bug in thorough verify: DVD file compared to itself (ouch)
+ detect growisofs failure from its log messages (may not emit bad status)

2006.09.05  v.12
+ reorganize menu names and groups
+ add menu command for quick-formatting DVDs
+ add menu command for drive hardware reset (may unlock hung drive)
+ do not retry failed mount for full backup (likely a blank DVD)
+ add growisofs undocumented parameters to improve robustness
  (avoid rejecting DVD already having ISO-9660 file system)
+ improve disk-DVD differences report: report file names by category:
  unmatched disk files, unmatched DVD files, files with different content

2006.08.23  v.11
+ improve error reporting (DVD mount failures)
+ DVD mount status 8192: meaning? insert extra eject and mount retry
+ build script: check that GCC compiler and GTK+ library are installed 
+ workaround for GTK multi-thread seg. faults
+ fix bug: restore owner failure for filenames containing single quote
+ additions to user guide, technical notes

2006.08.09  v.10
+ correct zlock() thread problems (add mutex lock for global variables)
+ suppress error messages (e.g. broken links) for excluded files
+ ignore status from shell "find" command (bad status can be OK)
+ errors are now visible in terminal window, e.g. "permission denied"
+ minor additions to user guide

2006.08.08  v.09
+ added script file capability: all menu commands can be scripted 
+ improved robustness in the use of GTK within threads
+ command line parameters revised as follows:
    -backup command   -job filename   -script filename
+ exclude statements pertain to ALL prior include statements
+ improve diagnostics for problem files (stat() function returns error)

2006.07.13  v.08
+ minor improvements to user guide / help file
+ added an option to change ownership for files restored from DVD
+ removed option to restore directory permissions and made this automatic
  (revising permissions is outside dkop scope - see user guide)
+ eject is now unmount + eject (eject alone sometimes does not work)
+ made restore more impervious to special chars in file names [ $ " = ]
+ /tmp/dkop-xxxx files now have PID in name, allowing parallel use
+ /tmp/dkop-xxxx files are now deleted automatically when dkop exits

2006.07.10  v.07
+ add index and hyperlinks to help file, dkop-guide.pdf
+ make help function run as subprocess (view help and run dkop in parallel)
+ use acroread | gpdf | evince (first one available) to display help file
+ speed up include files processing (use find instead of readdir)
+ report byte counts for included and excluded files
+ if command line job file is relative, make absolute /pathname/filename
  (gtk_file_chooser_set_filename() does not apply cwd)
+ fix bug: restore of files having '$' in pathname failed 
  (use cp 'path' instead of "path")
+ detect duplicate files (overlapping includes) (avoid growisofs failure)
+ better formatting for  report > in/ex file counts 
+ added verification of DVD device and mount point

2006.07.01  v.06
+ added toolbar with buttons for clear, kill, pause, resume
+ minor tightening of job verify logic after loading or editing
+ added menu function: show job file
+ removed auto mount of DVD (confusing)
+ avoid redundant remounts of DVD (detect when no change, avoid time waste)

2006.06.24  v.05
+ new menus: full backup + verify, incremental backup + verify, 
  accumulate backup + verify
+ remove autoload of file default.job - unnecessary and confusing
+ skip special files - pipes, sockets, devices
+ fix bug: restore directory owner & permissions omitted some directories
+ symlinks are backed-up and restored, not target files (see user guide)
+ fix SearchWild() bug: search for file without wildcards failed 
  (should find 0 or 1 file)

2006.06.15  v.04
+ save on DVD: backup job file, backup date-time, DVD usage counter
+ new feature: run backup job file stored on DVD itself
+ detect broken symlink files, diagnose and ignore 
  (message was "error: success")
+ revised GTK menu macros to use "string" instead of #string

2006.06.10  v.03
+ finished escaping of '=' in file names (mkisofs requirement)
+ disk and DVD file names are equal if disk with '=' matches DVD with "\="
+ file restore function replaces "\=" with '='
+ user sees "\=" in restore function file-chooser dialog
+ file restore bug: invalid copy_from diagnostic naming copy_to location
+ auto locate help file in same directory as dkop executable
+ fixed bug in zmainloop(): menu lockup from use of pause function
+ simplified lock and pause/resume logic to make more robust

2006.06.01  v.02
+ added file restore capability
+ added directory owner and permissions recovery
+ corrected bug in byte count calculation (1 file and 0 bytes to restore)
+ eliminated trailing blanks in filespecs (caused failures)
+ corrected bad detection of open() error (fid < 0)
+ replace '=' in file names with "\\=" (mkisofs requirement) 
  (caused failures with strange gnome file names)
+ stopped use of fprintf() for writes to scratch files 
  ('%' in filename interpreted as format)
+ bug: open of /tmp files fails if they do not exist beforehand

2006.05.01  v.01  initial release
+ backup job: open, edit, save
+ backup: full, incremental, accumulate
+ verify: full, incremental, thorough
+ disk / DVD differences reports


