xenial (1) fcomp.1.gz

Provided by: fhist_1.18-2_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.

       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