Provided by: fhist_1.18-2.1_amd64 bug

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

Reference Manual                                      FHist                                             fcomp(1)