
  *********************************************************************
                               FBack  V1.8
                            By Chris De Maeyer
                            For  AmigaDOS  68k
  *********************************************************************


  0. Contents
    ----------

     1. Introduction
        1.1. Legal
        1.2. What it does...
        1.3. Requirements
        1.4. Contact address
        1.5. Development info
        1.6. Versions

     2. Using it
        2.1. Command line options
        2.2. Examples

     3. Appendix
        3.1. Common problems
        3.2. Error messages
        3.3. Language support
        3.4. The future
        3.5. About me


  1. Introduction
    --------------

     If you have used this program before try to make the effort to read this doc
     again. Some useful info is updated, not listed in previous versions.

     Read also 'fmirr18.doc' for changes !
          
     1.1. Legal
         -------
          Type  : - MAILWARE (as of V1.5 only send email for bug reports)

          Terms : - no modifications to any file in this archive
                  - add no additional files to this archive
                  - use this program longer than 30 days, then you should
                    reward the author with a postcard/letter/email, hence the term
                    mailware
                  - author can not be held responsible for data loss, the program
                    has been tested and the behaviour has been described below
                  - any commercial distribution is prohibited.


     1.2. What it does
         --------------
          'FBack' is a file copy tool. It will check the archive bit of files
          and copy them if the archive bit is not set. After copying it will
          add the archive bit. It can be used to perform a 'Daily' backup of
          changed files.
          
          As an option you can run the program in GUI mode, this will open up
          a window which keeps up with the process. When processing has
          finished the window will remain open until you close it with the close
          gadget. Unless you specify NOWAIT, then the window is closed immediately
          after processing. In GUI mode the 'Current' gadget displays the files it
          is scanning.
          In CLI mode it merely reports the directories it is scanning, but the files
          being backed up are listed.
          
          On request of some users a CLONE option has been added, meaning the
          date/time is preserved on the backup.

          The filenotes are copied by default, specifying the NOCOMMENT option
          will suppress this.

          The program includes a batch mode, paths and options are then specified
          with a configuration file. Several entries are allowed.

          Some extra statistics, the estimated processor time (for now only in
          second(s)) are displayed.

          Additional features:
          
                - PRI option (also in batch mode)
                - report on Kilobytes processed 
                - report on packed bytes gained/lost
                - language support
                - executable for 68020/060                
                - smart packing (if bytes lost, leave unpacked)
                - progress report on packing (CLI)          

          New features (as of V1.7):
          
                - bugfixes (see version info for details)
                
                                                     
          'FMirror' is included. Its purpose is to delete files which no longer
          exist in the original directory, thus creating a mirror. It also
          deletes empty (obsolete) directories from the backup, cleaning up etc.

          There has been a remark concerning the mirror concept in combination
          with the pack mode, if you take it word for word, issuing PACK is no
          EXACT mirror (jeezes!). Mirroring is portrayed in this implementation as
          following concept: you have a copy (normal or packed) on the backup volume
          of what is on your source path (Comprendo!).


     1.3. Requirements
         --------------
          Properly installed Amiga ROM 2.1+.
          Needs XPK library (pref. V40.33) when using PACK option.
          GUI window uses standard GADTOOLS library.
          
          May need Argue (V1.3+) to use FBackGUI, FMirrorGUI.
          [Can be found in the "CyberQT" archive on Aminet]


     1.4. Contact address
         -----------------
          For mail/information/problems/gifts/bugs etc. write to the address
          below, state version & add postage for reply:

                 Visionary Software
                 tav. Chris De Maeyer

                 Norbertijnenstraat 4
                 B-2040       BELGIUM
                 EUROPE

                 Internet :ceppe@pandora.be
                 Alternate:ceppe@geocities.com
                 Homepage :http://www.geocities.com/siliconValley/peaks/8452   
                           http://users.pandora.be/ceppe
                           

     1.5. Development info
         ------------------
          Sources were written in C and compiled using SAS/C V6.58.

          All file I/O has been coded using standard system library
          functions (V38+).
          
          XPK SDK V40.33 was used.


     1.6. Versions
         ----------
        
          The actual version can be determined by typing 'version fback' in a
          CLI window.
          It is recommended to always upgrade to the latest version.

          V0.9  TEST RELEASE 
                - first internal test version.

          V1.0  FIRST PUBLIC RELEASE 
                - cleaned up code
                - adapt stack size + compile with stackextend, optimize
                - first public release.
                 
          V1.1  MAJOR UPDATE 
                - added file report after processing
                - shortened output strings + reformat
                - changed ExamineDir() flow, performs better with patterns
                - message to indicate NOCOPY mode
                - fixed error in document (FROM/A & TO/A examples).

          V1.1a MINOR UPDATE 
                - changed some buffer sizes for speed, copybuffer = 16Kb.
          
          V1.2  MAJOR UPDATE
                - added packing mode
                - added XPK packer/unpacker
                - added date in version string.
          
          V1.2a MINOR UPDATE
                - updated some internal values
                - added Argue GUI
                - added BUF option.        
                
          V1.2b MINOR UPDATE
                - added FORCE option
                - changed some displayed strings.
                
          V1.2c MINOR UPDATE
                - replaced SAS pattern match function with 'dos.library'
                  function MatchPatternNoCase()
                - fixed pattern matching.
                                      
          V1.3  MAJOR UPDATE
                - archive bits are also set on destination (Oops!)
                - added GUI window option 
                - added NOWAIT option
                - added CLONE option, to keep date on destination.

          V1.3a MINOR UPDATE
                - filenotes of files are copied now
                - added NOCOMMENT option
                - code generation with SAS/C 6.58.
                
          V1.4  MAJOR UPDATE
                - fixed traversing the directory tree
                - HandleIDCMP() uses Wait() now
                - added estimated processor time (and total time) report
                - changed output attributes of some strings
                - FROM, TO paths are checked now
                - filenotes of directories are copied now
                - added configuration file mode (batch).
                
          V1.4a MINOR UPDATE
                - added BEFORE/ASOF date possibility (+ support in batch mode)
                  (CFG)
                
          V1.4b MINOR UPDATE
                - default copy buffer size 32Kb
                
          V1.4c MINOR UPDATE
                - bugfix in file arrays (FIX)
                - aborts on CTRL_C in CLI mode      
                          
          V1.5  MAJOR UPDATE
                - added PRI option (+ supported in batch mode) (CFG)
                - BUF option can now also be specified in batch mode (CFG)
                - reports Kilobytes backed up/examined (CLI)
                - reports bytes gained/lost in PACK mode (CLI)
                - some reformatting of strings
                - added language support
                - executable for 68020/060
                           
          V1.6  MAJOR UPDATE
                - changed "number of files" limit to hold more entries,
                  (uses AllocMem() now), but had to disable SAS/C's code
                  optimization to get it working (FIX)
                - implemented smart pack mode
                - progress report while packing
                - added NOSMART option (+ supported in batch mode) (CFG)  
                - temporary file used for packing is removed when user
                  abort/errors (FIX - Unable to find output file msg)
                - on abort/errors the path is restored in the CLI window
                  (FIX)
                - changed SrcPath, DstPath tags in config file (USER)    
                           
          V1.7  MINOR UPDATE
                - fixed temporary file handling during packing (FIX)
                
          V1.8  MAJOR UPDATE
                - version number was wrong in GUI window (FIX)
                - break error (XPKErr -19 = user abort) while packing resolved (FIX)
                - parm BUF in config file gave wrong result (FIX)
                - changed output strings (USR)
                - on error exit console remained in bold (FIX)
                - default buffer 32Kb size (32x1024 iso 32x1000) (FIX)       
             
                                                                   
  2. Using it
    ----------
     2.1. Command line options
         ----------------------
          The program uses standard AmigaDOS command templates, so
          typing 'FBack ?' will list all the options available.

           Detail explanation of options:

             FROM/A       - the source (origine) path, a AmigaDOS file pattern may be
                            given.
                            
                                fe.   BOOT:
                                      BOOT:Prefs/
                                      BOOT:S/#?.keyfile
                                      
                            As you can see, a volume needs no '/'. However, a 
                            directory always needs a '/'.
                            If a volume\directory is entered, only that part will
                            be checked, to include all subdirectories include the
                            'ALL' switch.
                            
                                fe.   FBack BOOT: TO BACKUP: ALL
                                      FBack WORK:data/ TO BACKUP:Sys/ PACK=HUFF ALL
                                      Fback WORK:data/calc/#?.wk1 TO BACKUP:Wks/ ALL
                                               
             TO/A         - the destination (backup) path.
             
                                fe.  BACKUP:
                                     SQ0:Backup/Workbench/
                                     
                            Same rules as above, a volume needs no '/'. A directory
                            always needs an ending '/'. 
                            As you might expect, the 'ALL' switch will create any
                            missing subdirectories in the destination path.
                                     
             NOCOPY/S     - this does exactly what it says, when a file has
                            been modified it is normally copied to the backup
                            location. Adding this parameter prevents this and the
                            program will merely report the file. Call it a SIMULATE
                            mode.

             ALL/S        - include subdirectories.
             
             QUIET/S      - no output messages (shut it up).

             PRI=/K/N     - set priority (-100 to 5), in the old days you could
                            use a task manager to do this, now you can simply add
                            it as an option either to speed-up or let it creep in
                            the background.
             
                            A test result:
                            
                                Fback sys: to backup: all clone          289s
                                Fback sys: to backup: all clone pri=5    206s

                            (Do not pin me on these times, they are dep. on
                            various parameters...)

                            Q: Why I've put in a min. and max. ?
                            A: To avoid problems. As a Amiga guy you should know that
                               setting priorities wrong can give strange results. Fe.
                               program keeps running and doesn't react to input anymore.
                               Eg. console.device runs at priority 5 etc.
                            
             PACK=/K      - enables packer mode, supply preferred packer. In this
                            mode make sure your recovery disk includes the XPK library
                            + some XPK unpacker (fe. xpk [included]) to restore files.
                            
                                fe. PACK=nuke
                                
             BUF=/K/N     - choose the buffer size used for copying, default is 32 Kb.
                            Size limited only by your available RAM (but do not try to
                            use TOO big sizes, 32 Kb will do fine for most users).
                            
                            *********** READ THIS HERE !!! ***************
                               The buffer size is specified in bytes.
                            **********************************************   

                            This table states a test result (on my system!):
                            
                                Mb    Buffer          Time To Backup
                                ------------------------------------
                                24    16 Kb            84 seconds (big files)
                                24    64 Kb            47 seconds   "    "
                                24    128Kb            32 seconds   "    "

                                1.5   16 Kb            29 seconds (small files)
                                1.5   64 Kb            28 seconds    "     "
                                1.5   128Kb            28 seconds    "     "
                                
                            Obviously, the speed increase is optimal while backing
                            up large files and vanishes if little files are processed.
                            
             FORCE/S      - specifying this option will ignore the archive bit, thus
                            copying every file (= full backup).
        
             GUI/S        - opens GUI showing some statistics, no more CLI output.
    
             NOWAIT/S     - when using GUI mode, closes the window immediately after
                            processing finishes, otherwise window remains open until you
                            click the close gadget.
                            
             CLONE/S      - clones file date/time to destination.

             NOCOMMENT/S  - specifying this option will instruct FBack NOT to copy
                            the filenotes.

             CONFIG=/K    - run in batch mode, this parameter contains the filename
                            of the configuration file to process. 
                            
                            Syntax configuration file (text file):
                            
                            ----------------- cut ----------------------
                                [FBack]
                                NumberOfPaths = <N>
                                
                                [Paths]
                                OrgPath1 = <source path 1>
                                BckPath1 = <destination path 1>
                                ...
                                OrgPathN = <source path N>
                                BckPathN = <destination path N>
                                
                                [Options]
                                BOptions1 = <fback options for entry 1>
                                MOptions1 = <fmirror options for entry 1>
                                ...
                                BOptionsN = <fback options for entry N>
                                MOptionsN = <fmirror options for entry N>
                            ----------------- cut ----------------------
                                 
                            Example: study "MYBACK.CFG" included in the archive.
                                
                            To start batch mode use a command line like:
                            
                                fback "" "" cfg=myback.cfg
                                
                                            or
                                
                                fback "" "" config=whatever
                                    
                                    
                            NOTE: To detect in which mode (CLI or GUI) FBack
                                  will run the first option entry is taken.
                                  
                                  Thus, specifying GUI in the 1st option entry
                                  will trigger GUI mode for all subsequent batch
                                  entries.
                                  Leaving GUI out of the 1st option entry will 
                                  run all subsequent entries in CLI mode.    

                                  NOWAIT is also only interpreted in the 1st
                                  option entry.
                                  
                                  When running batch mode with GUI, the current
                                  gadget will display the batch entry it is going
                                  to process for a couple of seconds. After the
                                  batch entry is done the "Estimated processor
                                  time" is displayed. When all batch entries are
                                  finished the "Total processor time" will be
                                  shown.
                                  
                                  ********* BATCH MODE CHANGES **************
                                         TAGS FOR PATHS HAVE CHANGED:
                                  
                                            SrcPath ---> OrgPath
                                            DstPath ---> BckPath
                                        
                                        THIS WAS A USER REQUEST !!!!!
                                  *******************************************
                                  
            BEFORE=/K     This triggers the date selection. Enter the date in DOS
                           format (dd-mmm-yy) meaning this is also localized.
                           
                           For example: 15-okt-97    for Belgian/Dutch users.
                           
            ASOF=/K       Opposite of the previous, will backup files as of the
                           the date given and after it.
                           So,the date given is included in the selection.
          
            NOSMART/S     When pack mode is enabled FBack will now act smart if
                           the file after packing is bigger than the original.
                           This option turns off being smart and packs all files
                           even the ones which are bigger. 
        
                                                             
           The return code is either RETURN_OK (0) or RETURN_WARN (5) in all
           other cases.
           For some examples look at next section "2.2. Examples".

           While in CLI mode the program can be interrupted by pressing CTRL-C.
           Tip: for GUI mode you could send a break with a task manager !

           If you have Argue V1.3a you can use the GUI (FBackGUI) version to
           specify options.

           NOTE: the logical sequence to run FBack/FMirror is run FBack first,
                 then run FMirror (as you see in the first example below).
                 Some users do it the other way round (the logic escapes me!).
                 
     2.2. Examples
         ----------
          This section lists some examples of usage.

          - Backup changed prefs files:

               ; Startup-sequence
               ...
               FBack sys:prefs/env-archive/ to work:backup/prefs/ ALL FORCE QUIET
               FMirror work:backup/prefs/ to sys:prefs/env-archive/ ALL QUIET
               ...

          - Mirror a disk at startup & create logfile:

               ; Startup-sequence
               ...
               FBack sys: to mirror:boot/ ALL >T:FBack.log
               FMirror mirror:boot/ to sys: ALL >T:FMirror.log
               ...
               

          - Mirror files before shutdown:
          
               .key FLAG
               .bra {
               .ket }
               ; Shutdown script
               echo "Just a moment, valuable files are checked..."
               ;
               if {FLAG} EQ "GFX"
                    FBack work:data/gfx/ to backup:data/gfx/ ALL GUI NOWAIT
                    echo "Gfx data has been saved."
               endif
               if {FLAG} EQ "ALL"
                    FBack work:data/ to mirror:data/ ALL GUI NOWAIT
                    FMirror mirror:data/ work:data/ ALL GUI
                    echo "All data has been mirrored."
               endif
               ;
               FBack sys:prefs/ to mirror:prefs/ ALL PACK=BZLW QUIET
               echo "System preferences have been saved."
               ; 
               if exists C:Halt
                    echo "It now safe to switch me OFF !"
                    Halt 
               endif

          - Backup certain files in a range of dates:
          
               fback data:texts/ backup: all clone asof=01-feb-97 before=10-feb-97
               
            Will backup the files from 01 february 1997 till 09 february 1997.
               
  3. Appendix
    ----------
     3.1. Common problems
         -----------------

          Q: It doesn't find its source/backup files ?
          
          A: Enter the correct path: see section 2.1 (FROM,TO option).



          Q: Fback picks up not any file ?
          
          A: Did you end the source path with a '/' ? Leaving it out
             will traverse the entire source drive without touching
             any file. Call it a side-effect !           

          
          Q: When I backup to a JAZ/ZIP drive it takes a long time !
          
          A: Add a large number of disk buffers, eg. 'AddBuffers JAZ5: 2000'.
             This is not caused by FBack, but due to the way JAZ/ZIP works.          
                    
     3.2. Error messages
         ----------------

          'Source/Destination not found'

             The entered path could not be located. Correct your paths !

          'File not found'

             The file you typed could not be found.

          'Invalid date'
          
             Enter the date in ADOS format, thus dd-mmm-yyy. Example: 01-jan-97.
          
          'No xxxxx date'
          
             Supply a date with the BEFORE/ASOF keywords.
             
             
          AmigaDOS errors are in format :

             'FBack: nnn - message'
                                                              

     3.3. Language support
         ------------------
         
         From V1.5 onwards the program supports different languages.I suppose
         there are users around willing to make translations of their own.
         For this purpose a catalog translation source file has been included.
         Make one and send it to me, then I will generate it and release it as
         a seperate archive.
         If you know how to generate a catalog yourself then use the supplied
         description file, then use the command line:
         
                   catcomp languages/fback.cd fback.ct catalog fback.catalog
                   copy fback.catalog locale:catalogs/<language>
         
         Here is the path to the files in the distribution:
         
                   Catalog description file -> languages/fback.cd
                   Catalog translation file -> languages/fback.ct
         
         
         Available catalogs
         ------------------
         
         Language     FBack   FMirror
         ----------------------------
         nederlands    x         x
         swedish       x
         
         
         Catalogs send to me are released on : http://users.pandora.be/ceppe
         Or, included in a new release if they arrive on time...
         
         
     3.4. The future
         ------------

          Any suggestions/motivations/gifts from you are welcome !
          
          Thanks to all guys & dolls sending me real SNAIL-MAIL.

          It is because of YOU this program keeps getting better and better...


     3.5. About me
         ----------
         
         Well, I'm working as a "Technical Analist" for a multinational company.
         My main responsibilities are "Automating and supporting the WINDOWS NT
         LAN/WAN environment" (shame on me !). It's only for the money... give me
         a break ?? (If my bosses read this -> I'm only sucking up the great Amiga   
         community !).
         
         At home I have a Amiga 4000T (68060/50/PPC, 80Mb Fast, 1GB SCSI HD, 2GB
         IDE HD, a JAZ (my backup device!), VLab digitizer, Cybervision 64, Y/C genlock,
         2 VCR's, etc).
         Which I primarily use for desktop video, animations, LightWaving,
         programming [and making backups (I detect a bit of sarcasm here !)].

         I started my Amiga carrier on a A500, upgraded to A2000 and later a 68020
         accelerator card (somewhere in the cellar now). 
         Gosh, I've got a PPC 604e (200Mhz) now !

         Anyway, hope you can use the program (I do !).
         
         Other programs available from Aminet or author:
         
                BCompress       -> Huffman compressor
                BCrypt          -> encrypt data files with key
                LCount          -> count lines/records in ASCII/bin file

    NEW V1.3!!! CExt            -> change/delete/(re)number extentions of files,
                                   PPC version included.

                DispIFF         -> appicon on WB to display IFF images
                R3Version       -> version of Real 3D data files + IFF chunk scanner
                BruVol          -> estimates no. volumes in BRU backup
                MyLists         -> link lib for data structures
                UCDoor          -> link lib for MAX's BBS doors
                LevelMan        -> MAX's door for access requests
                SysValues       -> MAX's door displays system values
                CtdlBull        -> STDIO door for BBS bulletins
                IsamMake        -> make db defs for Redwood's engine
                MidiTrack       -> monitor for MIDI packets
                SetMouse        -> switch mouse port
                Cedee           -> GUI CDDA sound player
                
   NEW V1.0!!!  EZQuake         -> Quake launcher
                
                ...
                
         See yo.
