home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / disk / Backup / Backup311b / BackUP.doc < prev    next >
Text File  |  1993-10-12  |  39KB  |  724 lines

  1. ----------------------------------------------------------------------------
  2. ******************************* Legal Stuff *********** September 16, 1993 *
  3. ----------------------------------------------------------------------------
  4.  
  5.                  BackUP V3.91 © 1992, 1993 Felix R. Jeske
  6.                             All Rights Reserved
  7.  
  8. BackUP is a shareware, freely distributable hard drive backup program for
  9. the Amiga under Workbench 2.x.  If you like BackUP and regularly use it, I
  10. would appreciate being sent a $20 contribution to the following address:
  11.  
  12.                               Felix R. Jeske
  13.                         3746 North Oleander Avenue
  14.                           Chicago, IL  60634-3210
  15.                                     USA
  16.  
  17.                      Usenet: fjeske@amiganet.chi.il.us
  18.  
  19. Contributors will receive the latest version of BackUP (I am already adding
  20. a few other goodies) plus a few other programs I've written but not
  21. published.
  22.  
  23. Suggestions, comments and criticisms (ouch) are also welcome at the above
  24. address or on Usenet.  I am quite proud of BackUP and gladly support
  25. registered users.  If any problems are encountered, PLEASE report them!
  26. The fastest way to get a problem report to me is by leaving e-mail at the
  27. above Usenet address.  I have sent out disks at my own expense to users who
  28. report problems to correct them.
  29.  
  30.                                 DISCLAIMER
  31.  
  32. FELIX R. JESKE MAKES NO WARRANTIES EITHER EXPRESSED OR IMPLIED, WITH
  33. RESPECT TO THIS SOFTWARE, ITS QUALITY, PERFORMANCE OR FITNESS FOR ANY
  34. PARTICULAR PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS."  THE ENTIRE RISK
  35. AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH THE USER.  IN NO
  36. EVENT WILL FELIX R. JESKE BE LIABLE FOR DIRECT, INDIRECT, INCIDENTAL OR
  37. CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT IN THE SOFTWARE.
  38.  
  39. ----------------------------------------------------------------------------
  40. ********************************* Credits **********************************
  41. ----------------------------------------------------------------------------
  42.  
  43. Many thanks go to the developers of ARP who have created an extremely
  44. useful collection of routines in one library and have made it easy to
  45. program with as well.
  46.  
  47. Thanks go to Holger P. Krekel and Olaf Barthel for use of their
  48. lh.library.  This is an excellent version of the LZH compression algorithm
  49. that, again, is very easy to program.
  50.  
  51. Thanks to Ludwig Kamphenkel for his translation of the text in
  52. BackUP into the German.
  53.  
  54. Finally, thanks to Urban D. Müller, et al. for XPK.  XPK is a great
  55. collection of packers and encrypters.
  56.  
  57. ----------------------------------------------------------------------------
  58. *************************** System Requirements ****************************
  59. ----------------------------------------------------------------------------
  60.  
  61. BackUP requires Workbench 2.x, 1MB of RAM, a hard drive (obviously) and as
  62. many floppy drives as you can afford.  BackUP requires lh.library V1
  63. (available on FF436, distributed with BackUP).
  64.  
  65. ----------------------------------------------------------------------------
  66. ***************************** Historical Info ******************************
  67. ----------------------------------------------------------------------------
  68.  
  69. BackUP was initially developed on an A500 under Aztec C 3.6a.  Workbench
  70. 2.x additions were made on an A3000 under Aztec C 5.2a.  Development has
  71. since shifted to an A4000/040 under SAS/C 6.3.
  72.  
  73.   V3.91  -  XPK support added, fixed sensing of new (3.0) disk formats
  74.  
  75.   V3.90  -  Add pseudo-localization in the form of a separate German
  76.             version of program.  Lots of other little fixes, tweaks and
  77.             twiddles.
  78.  
  79.   V3.89  -  Added alphabetization option to file requestor, worked around a
  80.             SAS/C 6.2 bug regarding inlined memcmp() and started internal
  81.             restucturing for a localized version
  82.  
  83.   V3.88  -  Added safe backups and alternate restore destination, fixed
  84.             recognition of RAD devices as backup partitions and modified the
  85.             backup log name
  86.  
  87.   V3.87  -  Fixed high-density floppy support (now that I got an A4000)
  88.  
  89.   V3.86ß -  Added ability to backup to another hard drive partition
  90.             (not fully supported yet so current off)
  91.  
  92.   V3.85  -  Added don't compress pattern and changed highlighting in file
  93.             requestor
  94.  
  95.   V3.84  -  Added recursive selection, fixed directory state bug and
  96.             removed 6.5 MB file limit
  97.  
  98.   V3.83  -  Fixed file scan array resizing bug
  99.  
  100.   V3.82  -  More optimizations and changed file requestor behavior
  101.  
  102.   V3.81  -  Removed internal sound generator for bell, used 2.1 DisplayBeep()
  103.  
  104.   V3.80  -  Discontinued use of arp.library
  105.  
  106.   V3.79  -  Changed manner in which disk drives are scanned for
  107.  
  108.   V3.78  -  Fixed color palette bug introduced during optimization frenzy
  109.  
  110.   V3.77  -  Converted array indexing to pointers to save code
  111.  
  112.   V3.76  -  Fixed maximum number of files (2000) on restore problem
  113.  
  114.   V3.75  -  Fixed internal tracking of bad tracks
  115.  
  116.   V3.74  -  Added support for hard file links
  117.  
  118.   V3.73  -  Added optional bell on message and disk change requestors
  119.  
  120.   V3.72  -  Fixed disk labeling bug
  121.  
  122.   V3.71  -  Fixed directory selection bug and improved selection overall
  123.  
  124.   V3.70  -  Improved input-blocking code for multiple requests
  125.  
  126.   V3.69  -  Added status (Reading..., Writing..., etc.) display
  127.  
  128.   V3.68  -  Rearranged menu system
  129.  
  130.   V3.67  -  Added two different types of backup logs
  131.  
  132.   V3.64  -  Squashed file protection bug
  133.  
  134.   V3.63  -  Squashed empty file bug
  135.  
  136.   V3.62  -  Squashed CrossDOS incompatibility
  137.  
  138.   V3.61  -  Squashed drive motor bug
  139.  
  140.   V3.6   -  Added color requestor and support for high density drives
  141.  
  142.   V3.5   -  First public release
  143.  
  144.   V3.4   -  Added compression using lh.library
  145.  
  146.   V3.0   -  Discontinued use of req.library and added custom gadgetry
  147.  
  148.   V2.0   -  Added gadgets using req.library
  149.  
  150.   V1.0   -  Added primitive interface using autorequestors and the console
  151.  
  152.   V0.9   -  Initial development of the backup and restore engines
  153.  
  154. I started developing BackUP after my purchase of a $700 (groan) 30MB Supra
  155. hard drive.  Not wanting to spend any more money than I had to, I started
  156. on BackUP after reading about programming the trackdisk.device in an issue
  157. of Transactor for the Amiga by Bob Rakosky (August '89:  Vol. 2, Issue 5).
  158. After figuring out how to do raw reads and writes to the floppy drive, I
  159. learned about parsing a partitions directory structure.  I heard about ARP
  160. in another issue of Transactor and finally got my hands on it.  I
  161. incorporated req.library after buying CygnusEd which uses it quite heavily.
  162. The current version of the code is almost identical to that under
  163. req.library except for cosmetics.  I borrowed the current gadgetry style
  164. from AVS (Application Visualization System), a scientific visualization
  165. package I program and use at work on UNIX workstations.  Finally, I found
  166. lh.library on Fred Fish Disk #436 and included compression as an option.
  167.  
  168. ----------------------------------------------------------------------------
  169. ******************************** Benchmarks ********************************
  170. ----------------------------------------------------------------------------
  171.  
  172. The target machine for BackUP is any Amiga with at least two (2) floppy
  173. drives.  Being restricted to one floppy drive eliminates the continuous
  174. write feature.  BackUP does not support tape drives since I don't have one
  175. (yet!).  Compression is only recommended for fast machines or if you really
  176. want to save disks (190% compression is typical) as the on-the-fly
  177. compression does slow down the backup substantially.  Compression actually
  178. speeds up the restore since the speed bottleneck is the floppy read/write
  179. time.  The decompression process is so fast that reading in less data,
  180. decompressing it in memory and writing it out to the hard drive is faster
  181. than reading and writing out the original uncompressed data which took
  182. longer to load from the floppy.
  183.  
  184. My only real comparison of the capabilities of BackUP to other hard drive
  185. backup programs is my experience with HDBackup (shipped with my A3000) and
  186. other PD backup programs I've uploaded.  Since most of the PD backup
  187. programs I've obtained are CLI based, I only compare BackUP and HDBackup
  188. since the CLI is not well suited to perform such an operation.  Therefore,
  189. the following is a comparison of BackUP and HDBackup working on 294 files
  190. comprising about 1.1MB of data with compression and verify on.  It shows
  191. the following:
  192.  
  193.                          BackUP                        HDBackup
  194.                          ------                        --------
  195.  
  196. Executable Size            40K                            81K
  197.  
  198. Memory Usage              430K                           475K
  199. While Backing
  200.  
  201. Time to Backup            2:56                           4:03
  202.  
  203. Number of Disks             1                              3
  204.  
  205. I could not figure out why HDBackup needed three (3) disks to backup 1.1MB
  206. of data, especially when full compression was enabled.  In uncompressed
  207. form, it should have only occupied two disks.
  208.  
  209. ----------------------------------------------------------------------------
  210. ******************************* User Docs **********************************
  211. ----------------------------------------------------------------------------
  212.  
  213.                                   BACKUP
  214.  
  215. The backup procedure consists of selecting the partition to backup, the
  216. specific directories and files to backup within the partition, selecting
  217. which floppy drives to use during the backup and finally the swapping of
  218. disks in and out of the floppy drives.
  219.  
  220. When BackUP boots up, it polls the machine for all hard drive partitions
  221. and all floppy drives.  A gadget for each is created on the main screen.
  222. The user need only press on one of the labeled partition buttons to start
  223. reading the complete directory contents into memory.  When done, a standard
  224. file requestor displays the entire directory structure.
  225.  
  226. A few methods are available to the user as to how files are selected to be
  227. included in the backup.  The order of the methods chosen is important.  For
  228. example, selecting a particular file in a directory and then deselecting
  229. the entire directory will deselect that file.  The following lists the
  230. order in which the selection process should proceed.
  231.  
  232.    1) The Incremental/Full button changes whether files with their archived
  233.       bits set are included in the selected file list.
  234.  
  235.    2) The Include and Exclude wildcard patterns are convenient ways to
  236.       include/exclude large groups of files.  A file is selected for backup
  237.       if it matches the Include pattern and does NOT match the Exclude
  238.       pattern.  An ARP compatible pattern matching system is used and
  239.       therefore asterisks (*) can be used in place of Commodore's global
  240.       wildcard (#?).  Also patterns can be ORed together via the pipe (|)
  241.       operator to form more complex pattern such as:
  242.  
  243.                                *.(c|h)|*.doc
  244.  
  245.       which would match all files ending with either a .c, .h or .doc
  246.       extension.
  247.  
  248.    3) Whole directories trees can be manually included or excluded by single
  249.       clicking on them in the file requestor with the recursive select option
  250.       on.  The immediate contents of a directory may be selected if this
  251.       option is off.  Directory names with a highlighted background indicate
  252.       that all the files in that directory are selected.  Double clicking on
  253.       a directory name changes to that directory.  All non-empty directories
  254.       have a much-greater-than sign (») appended to their name denoting that
  255.       they may be entered.
  256.  
  257.    4) Finally, individual files can be selected (unselected) by single
  258.       clicking on them in the file requestor.
  259.  
  260. After choosing the files to be backed up, the user can press the buttons for
  261. each of the floppy drives BackUP will use during the procedure.  It is
  262. recommended that as many drives be used as available.  BackUP automatically
  263. formats disks as it writes and also switches between drives without any user
  264. intervention (continuous write).  This speeds the process up by constantly
  265. writing to one drive while the user is changing the disk in another.
  266.  
  267. Finally, a number options may be set in the menu bar:  compression, verify,
  268. logs, beeping and the palette.  BackUP performs on-the-fly compression by
  269. reading in small (11K) blocks of files, compressing them and asynchronously
  270. writing them to disk.  The asynchronous part allows BackUP to read from the
  271. hard drive and write to the floppy drive simultaneously.  Compression can
  272. reduce the number of disks used by a factor of two (I have seen 2MB written
  273. to 1 disk).  Compression does, however, slow down the backup since the
  274. compression process takes time and degenerates the backup to a synchronous
  275. process (read, compress, write).
  276.  
  277. The compression option has been extended in BackUP to include XPK support.
  278. XPK is an external set of libraries that perform compression and data
  279. encryption.  Now, in addition to the LhLib compression scheme that was
  280. implemented in V3.4, the user has the choice using one of the XPK
  281. compressors instead.  This feature has been implemented in such a way that
  282. BackUP automatically detects the type of compression on restore and calls
  283. either LhLib or XPK appropiately.  Note that previous versions of BackUP
  284. cannot uncompress the XPK compressed backups.  See the "Compression"
  285. section below regarding benchmarks for the various compressors.
  286.  
  287. The verify option specifies whether a read pass of the tracks written to
  288. the floppy is made after the format/write pass.  The backup process is sped
  289. up considerably with verify off, however, it is not recommended since the
  290. integrity of the data is unknown.
  291.  
  292. Two types of backup logs are available: sortable and printable.  The
  293. sortable type simply lists the file, its path, creation date, size and
  294. backup status in tab separated columns that can be passed onto other codes
  295. to be sorted at will.  The second backup log type lists by directory the
  296. same information.  As the name suggests, it is more appropriate to be
  297. printed for future reference.  The name of the backup log file can be
  298. chosen when either type log file is selected.  The current backup partition
  299. name can be put into the log name by placing a "%n" somewhere in the name.
  300. The current date may be automatically put into the name (in DD-MM-YY
  301. format) by placing a "%d" somewhere in the name.  Note also that this name
  302. is only a root name and that either ".inc" or ".ful" is appended to the log
  303. name depending on the backup type.
  304.  
  305. The beep option allows the user to choose whether or not an audible beep
  306. is made when a pop up message and/or a disk request is made.  This is useful
  307. if the user walks away from the machine during the backup or restore
  308. process.
  309.  
  310. Finally, the color palette may be changed to suit the user's preferences.
  311. As mentioned above, the gadgetry style was modeled off of AVS.  The default
  312. color map was chosen to enhance the 3D feel of the interface.
  313.  
  314. All of the options (include/exclude wildcards, compression state, verify
  315. state, backup type, etc.) can be saved as the defaults by choosing the
  316. "Save Configuration" option in the Options menu.  Upon subsequent boot ups,
  317. BackUP will load the configuration file (S:BackUPDefaults) and
  318. automatically set the previously saved defaults.  The configuration file
  319. should be compatible between BackUP versions as it is always appended to.
  320. If, however, BackUP boots up with "funky" colors (as sign of configuration
  321. file incompatibility), just delete the file, reset your options and resave
  322. the configuration.
  323.  
  324. After all this is completed, the user need only press the "Start Backup"
  325. button and begin swapping disks.  During the backup, a fuel gauge bar fills
  326. representing the completion of the backup.  Also, the current file being
  327. backed-up as well as the current disk being written to and the total number
  328. of files and bytes backed-up are constantly updated.  The disks should be
  329. labeled by date and disk number since BackUP will request numbered disks
  330. during the restore procedure.  The user may halt the process at any time by
  331. pressing the "STOP" button.  Note that the process will not actually stop
  332. until the current file is completely written.
  333.  
  334. After the files are copied to floppy, BackUP writes out the directory
  335. structure.  Only the directories that contain backed-up files are written in
  336. order to save space.  This means that, on full backups, empty directories
  337. will not be saved, and, therefore, cannot be restored.
  338.  
  339. When backing-up, the "Safe Backup" feature can be enabled via the "Options"
  340. menu to protect the user from a corrupted or destroyed directory
  341. information disk.  This feature writes this information along with the
  342. backup data allowing all the disks to be rescanned in case the directory
  343. information is otherwise lost.  This feature has been implemented in a
  344. backward-compatible fashion and only costs 1-2% extra disk space.
  345.  
  346. ----------------------------------------------------------------------------
  347.  
  348.                                   RESTORE
  349.  
  350. The restore procedure is very similar to the backup procedure with the
  351. exception that the list of files is read from the floppy set instead of the
  352. hard drive.
  353.  
  354. When BackUP boots up, the user need only press the "Start Restore" button
  355. to have BackUP read a partition's directory structure off floppy.  BackUP
  356. will request that the last disk of a backup set be inserted into any
  357. available drive to start this process.  BackUP may ask that the previous
  358. disk be inserted depending if the directory structure write overlapped
  359. multiple disks.  When finished, the user can select and deselect files just
  360. as in the backup procedure with the exception that the Incremental/Full
  361. button is not available.
  362.  
  363. After choosing which files to restore the user should press the "Start
  364. Restore" button again.  The same window with fuel gauge bar will appear
  365. and BackUP will request particular numbered disks to be inserted in the
  366. available drives.  Files are restored to their previous location with date
  367. stamp, file note and protection bits restored as well.  Directories will be
  368. made if necessary.
  369.  
  370. Files may be restored to an alternate destination if one is specified via
  371. the "Options" menu.  This features strips off the leading volume name of the
  372. file's path and replaces it with specified alternate destination which must
  373. contain a volume name and optionally a path (e.g., vol:path1/path2 is OK but
  374. path1/path2 is insufficient).
  375.  
  376. ----------------------------------------------------------------------------
  377.  
  378.                               RECOVER BACKUP
  379.  
  380. The "Safe Backup" feature writes extra directory information along with the
  381. data that is backed-up.  This is in case the directory information written
  382. at the end of the backup set becomes corrupted which would previously
  383. render the entire backup set useless.  In case this occurs, the "Recover
  384. Backup" feature is used to rescan all the disks in order to obtain this
  385. critical directory information.
  386.  
  387. The process begins by selecting "Recover Backup" and sequentially swapping
  388. all the backup disks in the floppy drives of the particular backup set.
  389. This builds an internal directory structure similar to the restore process
  390. above.  The differences are limited to the fact that file comments and
  391. links are not kept track of and are therefore lost when recovering a
  392. backup.  All other information is preserved:  file name, path, size, date
  393. stamp and protection bits.  Once all the disks have been read, the file
  394. requestor is updated and a normal restore process can continue.
  395.  
  396. Note that once everything is restored it is HIGHLY recommended to perform
  397. another backup since recovering a backup is a very inefficient way to
  398. perform a restore.
  399.  
  400. ----------------------------------------------------------------------------
  401.  
  402.                                 COMPRESSION
  403.  
  404. With the addition of XPK support, the user now has quite a number of
  405. choices regarding the type of compression performed during the backup
  406. process.  Six compressors are now distributed with BackUP.  Other XPK
  407. compressors are available (e.g, RLEN), however, they are only demonstration
  408. compressors and are not useful in real applications.  Each of the
  409. compressors have different characteristics in terms of speed and
  410. compression ratio (defined as the ratio of original data to compressed
  411. data).
  412.  
  413. The following list some benchmarks I have made on various data.  The "Time"
  414. column lists the number of seconds to perform the backup on my A4000/040.
  415. The "Compression Ratio" column lists the compression ratio for the backup.
  416. The "Ratio" column lists the normalized (by None) ratio of "Compression
  417. Ratio" by "Time".  This gives an indication of the tradeoff of time and
  418. compression ratio.  In parentheses, next to each column, is the rank of the
  419. compressor in each of the three catagories with the sum being listed in the
  420. last column.  All this is done because it is interesting to know how
  421. compressors compare in terms of speed, compression ratio, the tradeoff of
  422. these and finally, all of three considered as a whole.  The point being the
  423. compressor with the lowest sum (highest ranks) is probably optimal.
  424.  
  425.         77 Files - 1483351 Bytes - Mixture of binaries, ascii, etc.
  426.  
  427.                     Time [s]      Compression       Ratio          Sum
  428.                                    Ratio [%]
  429.  
  430.       None           130 (7)        100 (8)        1.00 (8)       23 (7)
  431.       LhLib          131 (8)        224 (2)        2.22 (5)       15 (5)
  432.       BLZW            77 (2)        178 (5)        3.01 (2)        9 (2)
  433.       HUFF            87 (3)        153 (6)        2.29 (4)       13 (4)
  434.       IMPL           119 (5)        202 (4)        2.21 (6)       15 (5)
  435.       NUKE            72 (1)        203 (3)        3.67 (1)        5 (1)
  436.       RLEN            99 (4)        130 (7)        1.71 (7)       18 (6)
  437.       SHRI           123 (6)        232 (1)        2.45 (3)       10 (3)
  438.  
  439.         28 Files - 1686548 Bytes - DEM files from VistaPro
  440.  
  441.                     Time [s]      Compression       Ratio          Sum
  442.                                    Ratio [%]
  443.  
  444.       None           145 (7)        100 (8)        1.00 (8)       23 (8)
  445.       LhLib          122 (4)        159 (2)        1.89 (3)        9 (3)
  446.       BLZW           102 (1)        145 (3)        2.06 (1)        5 (1)
  447.       HUFF           103 (2)        143 (4)        2.01 (2)        8 (2)
  448.       IMPL           133 (5)        138 (6)        1.50 (6)       17 (6)
  449.       NUKE           111 (3)        141 (5)        1.84 (4)       12 (4)
  450.       RLEN           143 (6)        102 (7)        1.03 (7)       20 (7)
  451.       SHRI           152 (8)        162 (1)        1.55 (5)       14 (5)
  452.  
  453.        492 Files - 1491036 Bytes - Ascii texts files (#includes from SAS/C)
  454.  
  455.                     Time [s]      Compression       Ratio          Sum
  456.                                    Ratio [%]
  457.  
  458.       None           136 (6)        100 (8)        1.00 (8)       22 (6)
  459.       LhLib          138 (7)        252 (2)        2.48 (2)       11 (2)
  460.       BLZW           116 (2)        179 (5)        2.10 (5)       12 (3)
  461.       HUFF           118 (3)        130 (6)        1.50 (6)       15 (4)
  462.       IMPL           128 (4)        210 (4)        2.23 (4)       12 (3)
  463.       NUKE           111 (1)        225 (3)        2.76 (1)        5 (1)
  464.       RLEN           133 (5)        104 (7)        1.06 (7)       19 (5)
  465.       SHRI           149 (8)        257 (1)        2.35 (3)       12 (3)
  466.  
  467. From the above, it can be gleaned that SHRI is the best compressor (i.e.,
  468. highest mean compression ratio), NUKE and BLZW are the fastest compressors,
  469. NUKE has the best tradeoff in terms of compression ratio to speed and NUKE
  470. and BLZW are the best overall.  A future release of BackUP will offer two
  471. more compression options ("Minimum Disks" and "Minimum Time") that use
  472. statistical data such as above in order to create a backup using the
  473. minimum number of disks (without regard to time) or in the minimum amount
  474. of time (without regard to the number of disks used) by automatically
  475. sensing the file type (ascii, executable, data, etc.) and choosing an
  476. appropriate compressor.
  477.  
  478. ----------------------------------------------------------------------------
  479. ***************************** Known Problems *******************************
  480. ----------------------------------------------------------------------------
  481.  
  482. There are few known problems with the program.  The first is that although
  483. a "Cancel" button is included on a number of popup requestors, it is not
  484. always implemented and therefore pressing it just brings up the same
  485. requestor.  This is true only for requestors with red text (as opposed to
  486. white) that appear in the middle of screen that usually request that a disk
  487. be (re)placed in a drive (usually, truly canceling the request will destroy
  488. the backup or restore process).
  489.  
  490. This is not really a problem but a known bad interaction.  If BackUP is run
  491. with BlitzDisk (V2.00 © 1989 Microsmiths) caching a hard drive partition,
  492. the file scan of that partition is slowed down substantially (the other
  493. portions of the code don't seem to be affected).  I can only figure that
  494. both processes are contending for the CPU and therefore BackUP visibly
  495. slows down.  If anyone has any ideas as to a fix for this, I'd be happy to
  496. hear it.
  497.  
  498. A problem has cropped up between versions prior to 3.73 and those after.
  499. In order to support hard file links, the format of the backup on floppy
  500. changed.  This, of course, makes versions 3.74 and on completely
  501. incompatible with versions earlier than this.  Fortunately, not too many
  502. people have these versions.
  503.  
  504. Due to the increasing number of hard drive cache programs, a warning must
  505. be added about the use of them during a backup.  It is STRONGLY recommended
  506. that such programs be turned OFF prior to backing-up a partition.  These
  507. programs usually operate at the driver level (well below BackUP) which
  508. prevents any detection of their unseen operation.  BackUP expects tracks to
  509. have been written to or read from disk, however, with a cache, they are
  510. written to or read from cache buffers.  This can confuse BackUP and prevent
  511. its normal operation (as evident from "ERROR: Bad Disk! ..." requestors
  512. that pop up randomly on newly inserted disks).  BackUP rigorously invalidates
  513. buffers prior to all reads and flushs all buffers after a write, however,
  514. this may not be enough for some cache programs.  Hypercache Pro (V1.01B © 
  515. Dave Plummer), in particular, is known to be fully compatible with BackUP.
  516.  
  517. ----------------------------------------------------------------------------
  518. ***************************** Release Notes ********************************
  519. ----------------------------------------------------------------------------
  520.  
  521. Release                              Comments
  522.  
  523.  V3.91      This version adds support for XPK packers and encrypters.  This
  524.             version also fixes the problem with sensing the new (3.0) disk
  525.             formats (DOS2 - DOS5).  These include the new "International"
  526.             and "Directory Caching" formats.
  527.  
  528.  V3.90      This version is now available in German.  The internal changes
  529.             required for this include converting to the GadTools system of
  530.             menus as well as removing hard-coded text positions.  In
  531.             addition, quite a number of other little fixes, tweaks and
  532.             twiddles have been made.  For example, more strict buffer
  533.             invalidation and disk updating (to thrwart cache programs),
  534.             slight position changes to the main-screen buttons and other
  535.             small, internal changes.
  536.  
  537.  V3.89      This version includes a workaround for a SAS/C 6.2 bug in the
  538.             inline memcmp() routine.  The code compared one byte beyond the
  539.             length of the specified buffer and randomly caused "BAD DISK!"
  540.             requestors to pop up.  This version has a hand-coded memcmp()
  541.             routine optimized for the particular comparison made.  Also
  542.             included in this release is some internal restructuring made
  543.             necessary for localization of the menu and requestor text.
  544.             Version 3.90 should be available in German as well as English.
  545.  
  546.  V3.88      This version adds "safe backups" allowing disks to be rescanned
  547.             via the "Recover Backup" item in case the directory information
  548.             written at the end of the backup set becomes corrupted.  Also,
  549.             an "Alternate Destination" item has been added in the "Options"
  550.             menu allowing files to be restored to an alternate destination
  551.             instead of their original path.  In addition, RAD type devices
  552.             are no longer recognized a valid backup partitions.  Finally,
  553.             the backup log name accepts %d and %n specifications for date
  554.             and partition name, respectively.  Previously, just a %s was used
  555.             for the date and, if two or more partitions were backed-up on
  556.             the same day, the log files would get clobbered (oops!).
  557.  
  558.  V3.87      This version fixes the high-density floppy drive support in the
  559.             program.  As I figured, this feature was broken previously but
  560.             I could not fix it since I did not own a HD drive.  Now that I
  561.             am developing (and backing up) on an A4000, I fixed this.  The
  562.             fix was not simple because queries needed to be placed at
  563.             numerous points in the code to determine what type of disk was
  564.             in the drive at the time of the query.
  565.  
  566.  V3.86ß     This version adds the capability to backup to another harddrive
  567.             partition.  However, this capability has been hacked in so far
  568.             and therefore is not a fully supported feature.
  569.  
  570.  V3.85      This version adds a pattern against which files are compared to
  571.             see if they should be compressed.  This speeds up the backup
  572.             process since files that have been already compressed (with
  573.             *.lha, *.lzh, *.zoo, *.arc and *.dms extensions, for example)
  574.             usually do not compress any further and therefore only slow down
  575.             the backup process.  Also, files are now highlighted by changing
  576.             their background which is consistent with how directories are
  577.             highlighted.  File names are always blue (in the default color
  578.             scheme, anyway) and directories are always red.
  579.  
  580.  V3.84      This version adds optional recursive selection in the file
  581.             requestor.  This means that clicking on directories (de)selects
  582.             everything immediately in them and in any subdirectories and so
  583.             on.  Also, a bug with the proper highlighting of directories was
  584.             fixed.  Finally, an internal limit of 6.5 MB for a single file
  585.             that could be backed-up was removed.
  586.  
  587.  V3.83      This version fixes an "off by 1" bug that limited the number of
  588.             files that could be scanned in off a hard drive.  Similar to the
  589.             bug fix for V3.76, this time, however, the problem occured just
  590.             after the files were read in off the hard drive and initially
  591.             displayed in the requestor.  The "off by 1" comes in because
  592.             BackUP resized an array one element after it exceeded the size
  593.             of the array (not one element before) and this trashed some
  594.             random memory.
  595.  
  596.  V3.82      This version includes more optimizations that cut code size and
  597.             includes a requested change to the behavior of the file
  598.             requestor.  It now keeps track of where (i.e., position in the
  599.             file list) a user was when he enters a new directory and returns
  600.             him to the same place.  This eliminates the hassle of scrolling
  601.             back to where you were after pressing the "Parent" button.
  602.  
  603.  V3.81      This version removes internal sound generation code in favor of
  604.             DisplayBeep().  Prior to 2.1, DisplayBeep() only flashed the
  605.             screen.  Now, however, a user specified sound and/or a screen
  606.             flash can be generated at the user's preference.
  607.  
  608.  V3.80      This version discontinues the use of ARP completely.  All the
  609.             functions BackUP used from ARP were in AmigaDOS 2.x so they
  610.             were simply converted.  Also, ARP is stagnant to my knowledge
  611.             so the functions in AmigaDOS should be more up to date.
  612.  
  613.  V3.79      This version replaces the ARP calls that scan for disk drives
  614.             (hard and floppy) with AmigaDOS versions of the same.  The
  615.             routine should now be fool-proof (yeah right) against CrossDOS
  616.             devices calling up requestors.  Also the hard drive volume names
  617.             are used instead of their device equivalents which is more
  618.             consistent with other parts of the code.
  619.  
  620.  V3.78      This version fixes a small bug in the color palette requestor.
  621.             BackUP updated the numbers above the slider gadgets with the
  622.             values of color 0 instead of the appropriate color number.
  623.  
  624.  V3.77      This version includes some optimizations of array addressing that
  625.             were converted to pointers.  For example, tracks[numtracks++]
  626.             was converted to *tracks++.  This and other small tweeks led to
  627.             1100 bytes of code being saved.  
  628.  
  629.  V3.76      This version fixes a bug concerning the maximum number of files
  630.             that can be restored.  In order to save memory, BackUP dynamically
  631.             allocates buffers to some initial size, then, whenever they are
  632.             about to be exceeded, they are resized.  BackUP forgot to resize
  633.             the file buffer (currently set to 1000 files).  It was resized
  634.             correctly during the backup procedure so an unlimited number of
  635.             files can be backed up.
  636.  
  637.  V3.75      This version fixes a long-standing bug that screwed up internal
  638.             tracking of bad tracks on backup floppies.  If a track refuses
  639.             to verify, internal updates are necessary to reflect the new
  640.             track numbers to which file data has been moved to.  Due to
  641.             the asynchronous operation, this becomes complicated since data
  642.             is buffered and verification of data lags behind writing of data.
  643.             Put simply, BackUP would determine track n-1 is bad when it is
  644.             ready to write out track n so it would have to move track n-1
  645.             data to wherever and track n data to wherever+1.
  646.              
  647.  V3.74      This version adds support for hard file links.  The link is
  648.             examined to determine where it is pointing to and this
  649.             information is save.  On restore, the link is restored via
  650.             MakeLink().  This, however, requires that the destination file
  651.             be present to be successful.  BackUP, therefore, restores all
  652.             real files first and then restores file links.  If the user did
  653.             not restore the destination file or else intentionally deleted
  654.             it, the MakeLink() will fail and the user will be informed.
  655.             Soft links are not yet supported.  Directory links are ignored.
  656.  
  657.  V3.73      This versions adds an optional audible bell cue when either
  658.             messages pop up or a disk change is requested.
  659.  
  660.  V3.72      This version fixed a bug in the labeling of disks.  Proper error
  661.             checking was not performed to ensure that the disk label was
  662.             actually written.  If a user popped out a disk during the
  663.             labeling process, the label would not be written and this would
  664.             corrupt the backup set.
  665.  
  666.  V3.71      This version fixed the directory selection bug in which BackUP
  667.             lagged in noting when a directory was selected (i.e., all the
  668.             files in the directory were selected).  In addition, the
  669.             background color of a selected directory is changed to note its
  670.             state.
  671.  
  672.  V3.70      This version improves the manner in which input is blocked to
  673.             windows when they are superseded by another request.  Earlier
  674.             versions used a cumbersome system that failed to work on
  675.             multiple, overlapping user requests.
  676.  
  677.  V3.69      This version adds a flashing status display informing the user
  678.             of the exact operation being currently performed (Reading...,
  679.             Writing..., Compressing..., Decompressing... and Verifying...).
  680.             Note that some of the messages flicker so fast that they
  681.             sometimes cannot even be seen.
  682.  
  683.  V3.68      This version reorganizes the menu system by adding a second menu
  684.             that is just for the growing list of backup options.  The first
  685.             menu is a standard Project menu.
  686.  
  687.  V3.67      This version adds two types of backup log files: sortable and
  688.             printable.
  689.  
  690.  V3.64      This version removes a bug with read protection on a file.  A
  691.             proper check was not made that an error did not occur during
  692.             the read of a file (as opposed to opening it which was checked).
  693.             This failure to check the read status also caused a problem if
  694.             a file was removed during the backup procedure.
  695.  
  696.  V3.63      This version removes a serious bug with empty files.  Backups
  697.             made prior to this release cannot restore empty files as they
  698.             crash the machine (oops!).  As a work around, users should
  699.             remove empty files from the restore list prior to restoring.
  700.             I found this one restoring my 50MB Quantum onto my new 236MB
  701.             ST3283N.  I also removed a few potential divide-by-zeros if the
  702.             user backs up zero bytes of files.
  703.  
  704.  V3.62      This version removes an incompatibility with CrossDOS.  The DIx:
  705.             and PCx: devices where found by BackUP which called up a system
  706.             requestor.
  707.  
  708.  V3.61      This version actually squashes two bugs 1) the drive motor was
  709.             left running when the user was informed that the current disk
  710.             was write protected and 2) a tab creeped into one of the messages
  711.             which printed as a square block in BackUP.font.
  712.  
  713.  V3.6       This version contains two additional features as per Olaf
  714.             Barthel's request: a color requestor and support for high-
  715.             density drives.  I am uncertain of the latter since I do not
  716.             own such a drive and cannot, therefore, verify my implementation.
  717.             I would appreciate user feedback on this.  Questions I have
  718.             concern what happens when a user puts a low-density disk into
  719.             a high density drive?  I am not certain I handle this case
  720.             correctly since the code I inserted queries drive geometry not
  721.             disk geometry and I don't think a DD disk can be formatted as HD.
  722.  
  723.  V3.5       Original public release.
  724.