Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ diff(1) — GENIX 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cmp(1)

cc(1)

comm(1)

ed(1)

diff3(1)



      DIFF(1)                 GENIX Programmer's Manual                 DIFF(1)



      NAME
           diff - differential file and directory comparator

      SYNOPSIS
           diff [ -l ] [ -r ] [ -s ] [ -cefh ] [ -b ] dir1 dir2
           diff [ -cefh ] [ -b ] file1 file2
           diff [ -Dstring ] [ -b ] file1 file2

      DESCRIPTION
           If both arguments are directories, diff sorts the  contents  of  the
           directories  by  name, and then runs the regular file diff algorithm
           (described below) on text files which are different.   Binary  files
           which  differ, common subdirectories, and files which appear in only
           one directory are listed.  Options when comparing directories are:

           -l   long output format; each text file diff is piped through  pr(1)
                to paginate it, other differences are remembered and summarized
                after all text file differences are reported.

           -r   causes application of diff recursively to common subdirectories
                encountered.

           -s   causes diff to report files which are the same, which are  oth-
                erwise not mentioned.

           -Sname
                starts a directory diff in the middle beginning with file name.

           When run on regular files,  and  when  comparing  text  files  which
           differ  during  directory  comparison, diff tells what lines must be
           changed in the files to bring them into agreement.  Except  in  rare
           circumstances,  diff finds a smallest sufficient set of file differ-
           ences.  If neither file1 nor file2 is a directory, then  either  may
           be given as `-', in which case the standard input is used.  If file1
           is a directory, then a file in that directory whose file-name is the
           same as the file-name of file2 is used (and vice versa).

           There are several options for output format; the default output for-
           mat contains lines of these forms:

                n1 a n3,n4
                n1,n2 d n3
                n1,n2 c n3,n4

           These lines resemble ed commands to convert file1 into  file2.   The
           numbers  after the letters pertain to file2.  In fact, by exchanging
           `a' for `d' and reading backward one may ascertain  equally  how  to
           convert  file2  into file1.  As in ed, identical pairs where n1 = n2
           or n3 = n4 are abbreviated as a single number.

           Following each of these lines come all the lines that  are  affected
           in  the  first  file  flagged  by  `<',  then all the lines that are



      Printed 11/16/83                                                        1





      DIFF(1)                 GENIX Programmer's Manual                 DIFF(1)



           affected in the second file flagged by `>'.

           Except for -b, which may be given with any of the others,  the  fol-
           lowing options are mutually exclusive:

           -e       producing a script of a, c and d commands  for  the  editor
                    ed,  which  will  recreate file2 from file1.  In connection
                    with -e, the following shell program may help maintain mul-
                    tiple  versions of a file.  Only an ancestral file ($1) and
                    a chain of version-to-version ed scripts  ($2,$3,...)  made
                    by diff need be on hand.  A `latest version' appears on the
                    standard output.

                            (shift; cat $*; echo '1,$p') | ed - $1

                    Extra commands are  added  to  the  output  when  comparing
                    directories  with  -e, so that the result is a sh(1) script
                    for converting text files  which  are  common  to  the  two
                    directories  from  their  state  in  dir1 to their state in
                    dir2.

           -f       produces a script similar to that of -e,  not  useful  with
                    ed, and in the opposite order.

           -c       produces a diff with lines of context.  The default  is  to
                    present  3  lines of context and may be changed, e.g to 10,
                    by -c10.  With -c the output format is  modified  slightly:
                    the  output  beginning  with  identification  of  the files
                    involved and their creation dates and then each  change  is
                    separated  by  a  line with a dozen *'s.  The lines removed
                    from file1 are marked with `-'; those added  to  file2  are
                    marked  `+'.   Lines which are changed from one file to the
                    other are marked in both files with `!'.

           -h       does a fast, half-hearted job.  It works only when  changed
                    stretches  are  short  and well separated, but does work on
                    files of unlimited length.

           -Dstring causes diff to create a merged version of file1  and  file2
                    on  the  standard  output,  with  C  preprocessor  controls
                    included so that a compilation of the result without defin-
                    ing string is equivalent to compiling file1, while defining
                    string will yield file2.

           -b       causes trailing blanks (spaces and tabs) to be ignored, and
                    other strings of blanks to compare equal.

      FILES
           /tmp/d?????
           /usr/lib/diffh for -h
           /usr/bin/pr




      Printed 11/16/83                                                        2





      DIFF(1)                 GENIX Programmer's Manual                 DIFF(1)



      SEE ALSO
           cmp(1), cc(1), comm(1), ed(1), diff3(1)

      DIAGNOSTICS
           Exit status is 0 for no differences, 1 for some, 2 for trouble.

      BUGS
           Editing scripts produced under the -e or -f option are  naive  about
           creating lines consisting of a single `.'.

           When comparing directories with the -b option specified, diff  first
           compares  the  files ala cmp, and then decides to run the diff algo-
           rithm if they are not equal.  This  may  cause  a  small  amount  of
           spurious  output  if the files then turn out to be identical because
           the only differences are insignificant blank string differences.








































      Printed 11/16/83                                                        3



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026