Man Linux: Main Page and Category List

NAME

       fcomp - file compare

SYNOPSIS

       fcomp [ option...  ] filename1 filename2

       fcomp -Help

       fcomp -VERSion

DESCRIPTION

       The fcomp program is used to compare text files, similar to the diff(1)
       program.  Its advantage is that it always produces minimal differences,
       and  so  will never mis‐sync when comparing files.  Its disadvantage is
       that it runs slower due to the extra work required to  produce  optimal
       differences.   However, for files differing by less than a few thousand
       lines, its performance  is  adequate.   The  algorithms  used  by  this
       utility  are  also used by the fhist(1) program in order to produce the
       edit history.

       To compare file old to file new, the command:
              fcomp old new
       would be used.  This gives the differences involved in converting  from
       file  old  to  file  new.   This  is  analogous to the use of the cp(1)
       command.  Either the old or new file may be a directory, in which  case
       the  comparison is done to the file in the directory with the same name
       as the other file.   An  error  is  given  if  old  and  new  are  both
       directories.

OPTIONS

       The following options are understood:

       -BINary This   option  may  be  used  to  compare  binary  files  on  a
               byte‐for‐byte basis.  (Each byte is treated as a “line” by  the
               algorithm.)   Byte  values are displayed in hexadecimal, as are
               the addresses.   Note:  this  is  different  behaviour  to  the
               fhist(1) option of the same name.

       -No_BINary
               This  option  may  be  used to avoid comparing binary files.  A
               warnign will be prointed on the standard error, but the program
               will report success without printing andy other output.

       -Blank
               Ignore blank lines in the input files.

       -Context number
               This  specifies  the  number  of  lines  of  "context" which is
               displayed.  This shows the specified number of lines before and
               after the actual lines being changed.  This is useful to locate
               and identify the line which is  actually  being  changed,  when
               there are many identical copies of the line in the file.

       -Edit
               Output an edit script which is machine readable.

       -Failures number
               This  stops the comparison if the number of changes exceeds the
               specified number.  Each change is  a  delete  or  insert  of  a
               single line.  This is useful when you are not interested in the
               results when the files are totally different.  Another use is a
               quick check to see if two files are identical, by using a value
               of zero.

       -Help
               Give some help on how to use the fcomp program.

       -Join number
               This merges together lines which  have  changed,  if  they  are
               separated  by  up  to  the specified number of unchanged lines.
               This makes a change look bigger, but reduces  the  "choppiness"
               of  the output by showing fewer regions being changed.  This is
               particularly  effective  to  suppress  worthless  matchings  of
               single  blank  lines  or comment beginning and ending lines.  A
               useful value for this option is 3 or so.

       -Matching
               Output matching lines, rather then changed lines.

       -Number
               This outputs the line numbers at the left edge of  the  output.
               This   isn’t  normally  needed,  since  the  line  numbers  are
               displayed  in  the  comment  line  preceding  the  lines  being
               displayed.   Not  outputting  the  line  numbers  prevents  the
               terminal from needlessly scrolling for long lines.

       -Output filename
               Send the output to this file, rather than the standard  output.

       -Quiet
               Output only a quick summary of changes needed.

       -Spaces
               This  option ignores differences in the number of spaces in the
               two lines.  That is, two or more adjacent spaces are handled as
               a  single  space.  Spaces at the beginning or end of a line are
               totally ignored.

       -Upcase
               Uppercase lines before comparing.

       -VERSion
               Show what version of fcomp is running.

       -What
               This outputs all of both files together, showing what  happened
               to  each  line of the first file in order to change to the line
               in the second file.  This output is  in  "change  bar"  format,
               where  inserted  lines  begin with |+, deleted lines begin with
               |−, and unchanged lines begin with spaces.  The presence of the
               vertical bar makes it easy to search for the changed lines.

       All  options  may be abbreviated; the abbreviation is documented as the
       upper case letters, all lower case  letters  and  underscores  (_)  are
       optional.  You must use consecutive sequences of optional letters.

       All  options  are  case insensitive, you may type them in upper case or
       lower case or a combination of both, case is not important.

       For example: the arguments "-help, "-HELP" and "-h" are all interpreted
       to  mean the -Help option.  The argument "-hlp" will not be understood,
       because consecutive optional characters were not supplied.

       Options and other command line arguments may be  mixed  arbitrarily  on
       the command line.

       The  GNU  long option names are understood.  Since all option names for
       fcomp are long,  this  means  ignoring  the  extra  leading  ’-’.   The
       "-option=value" convention is also understood.

FILE NAME EXPANSION

       As  a convenience, if a pathname begins with a period and a environment
       variable exists with that name,  then  the  value  of  the  environment
       variable  will  be  used  as  the  actual  pathname.  For example, if a
       environment variable of .FOO has the  value  this.is.a.long.name,  then
       the command
              fcomp -o .FOO
       is actually equivilant to the command
              fcomp -o this.is.a.long.name
       If  you want to prevent the expansion of a pathname which begins with a
       period, then you can use an alternate form for the pathname, as in:
              fcomp -o ./.FOO

BINARY FILES

       In general, fcomp can handle all text  files  you  throw  at  it,  even
       international text with unusual encodings.  However, fcomp is unable to
       cope elegantly with files which contain the NUL character.

       The fcomp(1) program simply prints a warning, and continues,  you  need
       to  know  that  it  converts  NUL  characters into an 0x80 value before
       performing the comparison.

       The fmerge(1) program also converts the NUL character to an 0x80  value
       before  merging, after a warning, and any output file will contain this
       value, rather than the original NUL character.

       The fhist(1) program, however, generates a fatal  error  if  any  input
       file  contains NUL characters.  This is intended to protect your source
       files for  unintentional  corruption.   Use  -BINary  for  files  which
       absolutely must contain NUL characters.

EXIT STATUS

       The fcomp program will exit with a status of 1 on any error.  The fcomp
       program will only exit with a status of 0 if there are no errors.

REFERENCES

       This program is based on the algorithm in
              An O(ND) Difference Algorithm  and  Its  Variations,  Eugene  W.
              Myers,  TR  85‐6, 10‐April‐1985, Department of Computer Science,
              The University of Arizona, Tuscon, Arizona 85721.
       See also:
              A File Comparison Program, Webb  Miller  and  Eugene  W.  Myers,
              Software  Practice  and  Experience, Volume 15, No. 11, November
              1985.

COPYRIGHT

       fcomp version 1.18.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995,  1996,  1997,  1998,  1999,
       2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 Peter Miller;

       This program is derived from a work
       Copyright (C) 1990 David I. Bell.

       This program is free software; you can redistribute it and/or modify it
       under the terms of the GNU General Public License as published  by  the
       Free  Software Foundation; either version 3 of the License, or (at your
       option) any later version.

       This program is distributed in the hope that it  will  be  useful,  but
       WITHOUT   ANY   WARRANTY;   without   even   the  implied  warranty  of
       MERCHANTABILITY or FITNESS FOR  A  PARTICULAR  PURPOSE.   See  the  GNU
       General Public License for more details.

       You should have received a copy of the GNU General Public License along
       with this program. If not, see <http://www.gnu.org/licenses/>.

AUTHORS

       Peter Miller       Web:   http://miller.emu.id.au/pmiller/
       /\/\*           E‐Mail:   pmiller@opensource.org.au

       David I. Bell      Web:   http://www.canb.auug.org.au/~dbell
                       E‐Mail:   dbell@canb.auug.org.au