home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / zsus / z3help / d.lbr / DIFF.HZP / DIFF.HLP
Encoding:
Text File  |  1991-11-18  |  10.3 KB  |  232 lines

  1. ;
  2.                                   DIFF.COM                                     
  3.  
  4.              Size (recs) CRC   Version    Author/Latest Issue      Disk
  5. DIFF100.COM    4k (29)   1A97  3.0        Carson Wilson 2/89       Z3COM2
  6. DIFF6000.COM   4k (29)   BC87  3.0        Carson Wilson 2/89       Z3COM2
  7.  
  8.   1- Syntax/Options  2- Operation  3- Notes  4- Examples of Use                
  9.  
  10.    DIFF version 3.0 is  an  extensively modified and improved  version  of the
  11. original ZCPR 3.0 DIFF utility by Richard Conn.  The program's basic functions
  12. have  been  enhanced  to  take advantage  of ZCPR 3.3  and  3.4,  and  several 
  13. additional functions have been added.
  14.  
  15.    DIFF quickly compares two  files and reports the results  to the screen and 
  16. to  the ZCPR environment.   This is useful in verifying backup copies of files 
  17. or eliminating duplicate copies.   Because DIFF reports  its  findings to  the 
  18. ZCPR  environment,  it may  be  used with command  scripts for  automated file 
  19. maintanence.  
  20. :1
  21.  
  22.    Syntax:  DIFF [dir:]ufn [dir:][ufn] [/][options]
  23.  
  24.   Options:  D - test Datestamps only
  25.             I - Ignore datestamps  
  26.             M - perform Multiple comparison
  27.             Q - perform Quiet comparison
  28.             V - perform Verbose comparison
  29.  
  30.    DIFF's command line consists  of the command verb,  followed by  one or two 
  31. unambiguous file specs,  optionally followed by one or more option characters.
  32. A leading  slash must introduce options if  only one file  spec is  given,  to 
  33. prevent DIFF from confusing options with filespecs.
  34.  
  35.    It should be obvious that certain  option combinations  produce meaningless 
  36. or contradictory results.  For example, combining the /D and /I options causes 
  37. DIFF to do nothing  at all.   The /Q option contradicts the /V and /M options, 
  38. and for this  reason where /Q is used  it  takes  precedence  over  /M and /V, 
  39. forcing a single, non-verbose comparison.
  40.  
  41.  
  42. File Specifications:
  43.  
  44.    The first file spec is  given in the command and is referred  to as "Source 
  45. 1."  The second  file spec is  either given in the command or is filled in  by 
  46. DIFF and is referred to as "Source 2".
  47.  
  48.    If only one  file specification is  given,  Source 2 is assumed to have the 
  49. same name  as Source 1 and  to reside in the current directory.   For example, 
  50. the command
  51.  
  52.             WORK>diff root:myfile.txt
  53.  
  54. compares ROOT:MYFILE.TXT with WORK:MYFILE.TXT.   If only  a directory is given 
  55. for the second file, DIFF assumes a file of the same name as the first, but in 
  56. the specified directory.
  57.  
  58.  
  59. File Specifications (cont'd):
  60.  
  61.               WORK>diff myfile.txt root:
  62.  
  63. therefore compares WORK:MYFILE.TXT  with ROOT:MYFILE.TXT.   This is equivalent
  64. to the  previous example  with the exception  that Source 1  and  Source 2 are 
  65. reversed.   This is  an important  difference only  when  interpreting results 
  66. stored by DIFF in ZCPR register 0. 
  67.  
  68.    Since DIFF uses  ZCPR's command line  parser when interpreting drive,  user 
  69. and directory specifications, directory security is enforced to current system
  70. levels, and DIFF may safely be used with secure systems.
  71. :2
  72.  
  73. Operation:
  74.  
  75.    By default, DIFF determines file equivalence using the most efficient means 
  76. available.  It first checks for matching file names and datestamps and assumes 
  77. that files with the  same name which  were created or last modified during the 
  78. same minute are identical.   This is much faster in most cases than performing 
  79. a complete data test.   If file datestamps are not present, DIFF falls back to 
  80. a  normal data comparison,  stopping  at  the  first  difference,  user  abort 
  81. command,  or end of file.   If a data test is desired  regardless of datestamp 
  82. information, the /I option can  be used to tell  DIFF to ignore datestamps and 
  83. proceed directly to a data comparison.
  84.  
  85.    In  comparing  file  datestamps, DIFF  first  tries  to  compare  the "last 
  86. modified" stamps.  If  a file's "last modified" stamp is missing,  that file's 
  87. "create" stamp is used instead.   If either file is  missing  both  create and 
  88. modify stamps, DIFF falls back on file data to determine equivalence.
  89.  
  90.  
  91. Operation (cont'd):
  92.  
  93.    DIFF  communicates  its  results  both  to  the  screen  and  to  the  ZCPR 
  94. environment.   The program error  byte is set to true ("ERROR") by default for 
  95. each file compare, and is only reset to false when  a matching  pair  of files 
  96. is  found.   Thus all of  the following conditions will set the  program error 
  97. byte to "true:"
  98.  
  99.                    a. Either or both files missing
  100.                    b. User abort
  101.                    c. Files do not match
  102.  
  103.    ZCPR register zero is set to reflect the  results of filestamp comparisons.
  104. Register zero is set as follows:
  105.  
  106.  
  107.      Register
  108.      0 Value        Condition
  109.      -------        ---------------------------------------------
  110.           0         No stamp comparison was performed, either due 
  111.                     to the /I option or because one or both 
  112.                     stamps were not available.
  113.           1         Source 1 is more recent.
  114.           2         Source 2 is more recent.
  115.           3         Sources 1 and 2 have matching stamps.
  116.  
  117.    Unless the /V Verbose  option is given,  DIFF simply reports the results of 
  118. file  stamp comparisons (if any) and  data comparisons to the screen,  telling 
  119. which file was more recent and whether files match or not.   The /V option may 
  120. be used to generate a more detailed report of file data differences. 
  121. :3
  122.  
  123. DIFF Notes:  System Requirements
  124.  
  125.    DIFF now requires  ZCPR versions 3.3  and  above  to  operate.   Additional 
  126. features are  available if DIFF is used under ZSDOS,  Z3PLUS,  and/or DosDisk, 
  127. but these system enhancements are not required by DIFF.   DIFF100.COM loads at 
  128. 100 hex  and  requires memory from 100 hex  to  about 3200 hex.   DIFF6000.COM 
  129. loads  at  6000  hex  and  requires  memory  from 100 hex  to  about 9100 hex.  
  130. Insufficient memory causes DIFF to abort with an error message.
  131.  
  132.  
  133. Diff Notes:  Customization
  134.  
  135.    As distributed,  DIFF's Datestamp,  Ignore,  Multiple,  Quiet,  and Verbose 
  136. options are "off" by default,  and  are turned on when the option character is
  137. given in  the  command line.   The sense of  any or  all  of the  command line 
  138. options may be reversed by altering the  five  bytes following the ASCII label 
  139. "[DIMQV>" at address 10d hex in the program itself.
  140.  
  141.    As distributed,  the five  bytes  at 112 hex  are 0,0,0,0,0.  To  change an 
  142. option  to "on" by default,  set the corresponding byte following the label to 
  143. 0FF hex.   For example,  to make DIFF perform  Verbose comparisons by default, 
  144. change the  byte  at 116  hex from 00  to 0FFh.   Now DIFF  will  display  all 
  145. differences between files UNLESS the /V option is given on the command line.
  146.  
  147.  
  148. Diff Notes:  Error Handling
  149.  
  150.    If ZCPR 3.3 or above is not present or if available memory is insufficient,
  151. DIFF aborts to the command line with an error message.
  152.  
  153.    If an  ambiguous file name  was used  in the command or if  an illegal ZCPR 
  154. directory or  drive/user combination was given,  DIFF chains to the ZCPR error 
  155. handler if present, or aborts to the command line.
  156.  
  157.    Missing files simply cause DIFF to  set the program  error byte rather than 
  158. chaining to the error handler.   This allows command scripts to retain control 
  159. in the event of missing files.
  160. :4
  161.  
  162. Examples of Use:
  163.  
  164.    a. Where DIFF really excels  is  in  its ability  to  pass  file comparison 
  165.       information to the ZCPR environment.   This capability  can  be  used in 
  166.       conjunction  with  ZCPR's Flow Control feature  and  other  programs  to 
  167.       automate file maintenance in various ways.
  168.  
  169.       The Flow Control Package (FCP) can be configured to detect the status of 
  170.       ZCPR's program error byte and register byte  zero and set the flow state 
  171.       accordingly.  Here is a simple example using DIFF, FCP, and ERA commands
  172.       to erase file1 only if file1 equals file2:
  173.  
  174.       WORK>diff file1 file2;if ~er;era file1;fi
  175.  
  176.    b. The following example  uses DIFF, FCP, CP, and ECHO commands to copy the 
  177.       most recent of file1 and file2 to the other file:
  178.  
  179.       WORK>diff file1 file2 /d;if 0 1;cp file1 file2;else;if 0 2;<<
  180.       cp file2 file1;else;echo error;fi;fi
  181.  
  182.  
  183. Examples of Use (cont'd):
  184.  
  185.       This is equivalent to the following pseudo-code:
  186.  
  187.       run DIFF
  188.       if file1 was created/modified after file2
  189.          copy file1 to file2
  190.          else
  191.          if file2 was created/modified after file1  
  192.             copy file2 to file1
  193.             else
  194.             echo error (files or datestamps missing, or files equal)
  195.          fi
  196.       fi
  197.  
  198.       If one  or  both files  are  missing  or have  missing stamps, or if the 
  199.       filestamps are equal, the word "ERROR" appears on the screen and no copy
  200.       operation is performed.
  201.  
  202.  
  203. Examples of Use (cont'd):
  204.  
  205.    c. Many more complicated scripts are possible.   The two  preceding samples 
  206.       were issued from  the command line,  but command scripts are most useful 
  207.       when issued from a  script processing program,  such  as ZEX  or ZFILER.  
  208.       For example,  the  following command script can  be used under ZFILER to 
  209.       update all non-archived files  at the  current directory to  the current 
  210.       user  area  of  drive C:.   To use  the macro,  I press G-T (group tag), 
  211.       followed by G-A (group archive) and finally G-ESC-A (group macro A):
  212.  
  213.       A $d$u:;$!diff c:$f /q;if er;copy $f c: /ae;else;fa $f a;fi
  214.  
  215.       If DIFF does  not  find  a  matching  backup  on drive C, the ZSDOS COPY 
  216.       program makes a  fresh archive  from the current drive.   If  a matching 
  217.       backup was found,  the ZSDOS FA  command simply sets  the file's archive 
  218.       attribute.
  219.  
  220.  
  221. Examples of Use (cont'd):
  222.  
  223.    d. Finally, DIFF can be used to  select files by their temporal relation to 
  224.       another file and process them accordingly.   For instance, to append all 
  225.       files created before  a particular file  to an archive file, I  use  the 
  226.       following ZFILER macro, invoked by pressing GT, then G-ESC-N:
  227.  
  228.       N $d$u:;diff $p $"Newer file: " /dq;if 0 2;<<
  229.       append $f $"File to append to:";era $f;fi
  230.  
  231.  
  232.