home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / source / cp.lha / cp.doc < prev    next >
Text File  |  1988-03-03  |  4KB  |  89 lines

  1. Here is a replacement for AmigaDog "copy" program that I have
  2. been working on for quite a while.  It implements the AmigaDos
  3. pattern matching algorithm, the "all" command, and has the
  4. added bonus that it retains the date of copied file.
  5.  
  6. It's my first posting to the net, and I have my fingers crossed
  7. that all goes well...
  8.  
  9. Contents:
  10. cp.doc     - documentation
  11. cp.c       - the main program
  12. PatMatch.c - supporting routines to implement the pattern matching.
  13. setDate.c  - gets and sets the file date.
  14. wb_parse.c - Aztec allows you to skip the workbench parms parse.
  15. makefile   - to compile and link the whole thing.
  16. cp.uue     - uuencoded cp
  17.  
  18. ============
  19. cat <cp.doc>
  20. ============
  21.       Cp - a replacement for AmigaDos Copy that retains the date.
  22.  
  23.                 by Jeff Lydiatt
  24.                 Vancouver, Canada
  25.                 Release 1.0, May 17, 1987
  26.  
  27.       Cp and the c source is freely redistributable for personal
  28.       non-commercial use.  Commercial rights are reserved by the
  29.       author.  Feel free to make any modifications or use any
  30.       of the modules in other programs.  I encourage you to do so
  31.       and hope you will release the code so others can learn by it.
  32.  
  33. Cp has most of the features of the AmigaDos copy command:
  34. --------------------------------------------------------
  35.  
  36.    o Cp supports the AmigaDos style pattern matching in the "from" name.
  37.    o Cp supports the All option.
  38.    o Cp supports the optional "from" and "to" qualifiers for file names.
  39.    o Cp will copy directories
  40.  
  41. Cp has a number of features not found in AmigaDos copy:
  42. -------------------------------------------------------
  43.  
  44.    o Cp will retain the date of the copied file.
  45.    o Cp uses a 32000 byte buffer, which speeds copies when the from and
  46.      to file is on the same disk.
  47.    o You may specify the current directory by a "to" name of ".".  For
  48.      example if your current directory is "Df0:",
  49.             "cp ram:x ."
  50.      will copy the file called x in your ram: disk to "df0:x".
  51.    o Cp will also create the "to" file for you if you use the "All"
  52.      option.  For example if "x" is a directory,
  53.             "cp from x to y"
  54.      will create a directory called "y", and will copy all the files in
  55.      x to the newly created "y" directory.
  56.  
  57. About the AmigaDos-style pattern matching.
  58. -----------------------------------------
  59.  
  60.    Cp uses a compact function for regular expression pattern matching.
  61. The algorithm was taken from a paper by Martin Richards, that was
  62. published in the September 1979 issue of "Software, Practice and
  63. Experience".  Professor Richards published his example in BCPL, and
  64. I have (sucessfully I think) translated it to C.  It's interesting to
  65. note that I translated it verbatim, with no special modifications to
  66. adapt it to AmigaDos conventions.
  67.  
  68.   Cp recognises a number of special characters with special meanings,
  69. which can be used to recognise any other charcaters that match them.
  70.  
  71.   ?     Matches any single character.
  72.   %     Matches the null character.
  73.   #<p>  Matches zero or more occurrences of the pattern <p>
  74.   <p1>|<p2> Matches either pattern <p1> or <p2>.
  75.   ()    Can be used to group expressions together.
  76.   '#    Can be used to turn off the special meaning of the special
  77.         characters #, ?, %, |, (, ), or '.
  78.  
  79.   Some examples will help to make this clearer.
  80.  
  81.   cp a|b .      copies a or b to the current directory.
  82.   cp a#bc .     copies ac abc abbc.
  83.   cp a#(b|c)d . copies ad abd abcd.
  84.   cp a?b .      copies axb ayb aab.
  85.   cp a#?b       copies ab axxb ax.ab.
  86.   cp '?#?'# .   copies ?# ?ab# ??##.
  87.   cp a(b|%)#c . copies a abc accc.
  88.  
  89.