.














                              FHist




                        Reference Manual







                          Peter Miller

                    _m_i_l_l_e_r_p_@_c_a_n_b_._a_u_u_g_._o_r_g_._a_u



































.












This document describes FHist version 1.8
and was prepared 30 October 2001.






This document describing the FHist package, and the FHist package
itself, are
Copyright (C) 1991, 1992, 1993, 1994,  1995,  1996,  1997,  1998,
1999, 2000, 2001 Peter Miller; All rights reserved.

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 2 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, write to the Free Software Foun-
dation,  Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
























                                                                0





ReadMe(FHist)                                       ReadMe(FHist)


RNNeAAaMMdEEMe(FHist)                                       ReadMe(FHist)
       fhist - file history and comparison tools
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       Portions of this program are
       Copyright (C) 1990 David I. Bell.

       The _f_h_i_s_t package is distributed under the terms of the
       GNU General Public License, see the _L_I_C_E_N_S_E section,
       below, for more information.

DDEESSCCRRIIPPTTIIOONN
       The FHist package contains 3 utilities, a file history
       tool ``_f_h_i_s_t'', a file comparison tool ``_f_c_o_m_p'', and a
       file merging tool ``_f_m_e_r_g_e'.  All three are bundled
       together, because they all use the same minimal-difference
       algorithm.

       fhist
               Keeps track of versions of a file.  It works
               correctly when given binary files as input.  See
               _f_h_i_s_t(1) for more information.

       fcomp
               Compares two versions of a file, usually line-for-
               line textual comparison.  It is capable of
               comparing two binary files byte-for-byte.  See
               _f_c_o_m_p(1) for more information.

       fmerge
               Merges together edits from two descendants of a
               file.  See _f_m_e_r_g_e(1) for more information.

       The history tool presented here, fhist, is a _m_i_n_i_m_a_l
       history tool.  It provides no locking or branching.  This
       can be useful in contexts where the configuration
       management or change control be being provided by some
       other tool.

RREEFFEERREENNCCEESS
       This program is based on the algorithm in
              _A_n _O_(_N_D_) _D_i_f_f_e_r_e_n_c_e _A_l_g_o_r_i_t_h_m _a_n_d _I_t_s _V_a_r_i_a_t_i_o_n_s,
              Eugene W. Myers, TR 85-6, 10-April-1985, Department
              of Computer Science, The University of Arizona,
              Tuscon, Arizona 85721.
       See also:
              _A _F_i_l_e _C_o_m_p_a_r_i_s_o_n _P_r_o_g_r_a_m, Webb Miller and Eugene
              W. Myers, Software Practice and Experience, Volume
              15, No. 11, November 1985.











BBUUIILLDDIINNGG
       For complete instructions for host to build these
       programs, see the _B_U_I_L_D_I_N_G file included in this
       distribution.

AARRCCHHIIVVEE SSIITTEE
       The latest version of _f_h_i_s_t is available on the Web from:
          URL:    http://www.canb.auug.org.au/~millerp/
          File:   fhist.html         # The FHist page.
          File:   fhist-1.8.README   # Description, from the tar file
          File:   fhist-1.8.lsm      # Description, in LSM format
          File:   fhist-1.8.spec     # RedHat package spec
          File:   fhist-1.8.tar.Z    # The complete source.
       FHist is also carried by sunsite.unc.edu in its Linux
       archives.  You will be able to find FHist on any of its
       mirrors.
          URL:    ftp://sunsite.unc.edu/pub/Linux/devel/vc/
          File:   fhist-1.8.README   # Description, from the tar file
          File:   fhist-1.8.lsm      # Description, in LSM format
          File:   fhist-1.8.spec     # RedHat package spec
          File:   fhist-1.8.tar.Z    # The complete source.
       This site is extensively mirrored around the world, so
       look for a copy near you (you will get much better
       response).

CCOOPPYYRRIIGGHHTT
       fhist version 1.8.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       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 2 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, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330,
       Boston, MA 02111, USA.

AAUUTTHHOORRSS
       Peter Miller       Web:   http://www.canb.auug.org.au/~millerp
       /\/\*           E-Mail:   millerp@canb.auug.org.au

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










RREELLEEAASSEE NNOOTTEESS
       For excruciating detail, and also acknowledgements of
       those who generously sent me feedback, please see the
       _e_t_c_/_C_H_A_N_G_E_S_._1_._8 file included in this distribution.

       A number of features and bug fixes have been added to
       _f_h_i_s_t with this release.  A few of them are detailed here:

   VVeerrssiioonn 11..88
       * There is a new --BBIINNaarryy option for the _f_c_o_m_p(1) program,
       which compares binary files a byte at time, printing the
       results in hexadecimal.

       * The _f_c_o_m_p(1) program now silently copes with CRLF line
       terminations.

   VVeerrssiioonn 11..77
       * The _f_h_i_s_t_(_1_) _c_o_m_m_a_n_d _n_o_w _h_a_s _a ----bbiinnaarryy _o_p_t_i_o_n_, _w_h_i_c_h
       _m_a_y _b_e _u_s_e_d _t_o _s_t_o_r_e _t_h_e _h_i_s_t_o_r_y _o_f _b_i_n_a_r_y _f_i_l_e_s_.

       * The _f_h_i_s_t(1) command has a new ----mmaakkee--ppaatthh option, which
       requests that the history directory be created if
       necessary.

       * A bug in _f_h_i_s_t(1) wich caused a SEGFAULT when you used
       the --tt option (extract to terminal) has been fixed.

   VVeerrssiioonn 11..66
       * An RPM spec file has been added to the distribution.

       * The code is now more robust about what various UNIX
       systems return from pathconf().

       * A bug with the ``_f_c_o_m_p _-_b_l_a_n_k'' option has been fixed.

   VVeerrssiioonn 11..55
       * Binary files are now detected on input, and the
       utilities file gracefully with a warning or error message,
       as appropriate.

       * Some buffer over-run bugs have been fixed.

       * Several improvements have been made to the portability.

   VVeerrssiioonn 11..44
       * The install and build procedures have been made more
       robust, and they take note of more of the information
       provided by GNU Autoconf.

       * The error messages have been internationalized, so it is
       now possible to obtain error messages in your native
       language.  (If you would like to contribute with error
       message translations, please contact the author.)

       * An LSM description has been added, along with a HTML
       page to present it all nicely at the archive site.

       * A RedHat Package Manager spec file has been added, so
       that a RedHat package can be created.  The spec file is in
       the standard distribution.

   VVeerrssiioonn 11..33
       This version was not distributed  at all.



   VVeerrssiioonn 11..22
       This version was not distributed very widely.

       * The non-standard isblank function is no longer used, it
       cause too many portability problems.

       * The use of pathconf is not more robust for more
       operating systems.

   VVeerrssiioonn 11..11
       * The _f_h_i_s_t package now uses a shell script called
       _c_o_n_f_i_g_u_r_e to configure itself.  This script is generated
       using the _G_N_U _A_u_t_o_c_o_n_f utility.  This should make _f_h_i_s_t
       significantly easier to configure, and significantly more
       portable.

       * A bug has been fixed in the conflict reporting of the
       _f_m_e_r_g_e program.  It now correctly opens the conflicts
       file.

       * The _f_h_i_s_t program now uses _p_a_t_h_c_o_n_f(2) to determine file
       name length limits.








































Reference Manual              FHist                             4





Building(FHist)                                   Building(FHist)


BNNuAAiMMlEEding(FHist)                                   Building(FHist)
       fhist - file history and comparison tools
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       Portions of this program are
       Copyright (C) 1990 David I. Bell.

       The _f_h_i_s_t package is distrributed under the terms of the
       GNU General Public License, see the _L_I_C_E_N_S_E section,
       below, for more information.

SSPPAACCEE RREEQQUUIIRREEMMEENNTTSS
       You will need about 600K to unpack and build the _f_h_i_s_t
       package.  (This is the worst case seen so far, most
       systems have binaries about 60% as big as this, 400K is
       more typical.)  Your mileage may vary.

BBEEFFOORREE YYOOUU SSTTAARRTT
       There are a few pieces of software you may want to fetch
       and install before you proceed with your installation of
       cook.

       GNU Gettext
               The _f_h_i_s_t package has been internationalized.  It
               can now print error messages in any of the
               supported languages.  In order to do this, the GNU
               Gettext package must be installed _b_e_f_o_r_e you run
               the configure script as detailed in the next
               section.  This is because the configure script
               looks for it.  On systems which use the GNU C
               library, version 2.0 or later, there is no need to
               explictly do this as GNU Gettext is included.
               Remember to use the GNU Gettext configure _-_-_w_i_t_h_-
               _g_n_u_-_g_e_t_t_e_x_t option if your system has native
               gettext tools.

       GNU Groff
               The documentation for the _f_h_i_s_t package was
               prepared using the GNU Groff package.  This
               distribution includes full documentation, which
               may be processed into PostScript or DVI files at
               install time - if GNU Groff has been installed.

       GNU Groff patch
               There is a patch for GNU Groff available, which
               gives _g_r_o_f_f(1) and _g_s_o_e_l_i_m(1) a --BB_p_a_t_h option.
               This adds an include file search path, similar to
               _c_p_p(1).  The Makefile assumes this is available.
               The patch is at
               http://www.canb.auug.org.au/~millerp/groff-1.11a.patch
               or its mirrors.

       Bison   If your operating system does not have a native
               _y_a_c_c(1) you will need to fetch and install GNU
               Bison in order to build the _f_h_i_s_t package.

       GCC     You may also want to consider fetching and
               installing the GNU C Compiler if you have not done
               so already.  This is not essential.

       The GNU FTP archives may be found at prep.ai.mit.edu, and
       are mirrored around the world.

SSIITTEE CCOONNFFIIGGUURRAATTIIOONN
       The ffhhiisstt package is configured using the _c_o_n_f_i_g_u_r_e shell
       script included in this distribution.

       The _c_o_n_f_i_g_u_r_e shell script attempts to guess correct
       values for various system-dependent variables used during
       compilation, and creates the _M_a_k_e_f_i_l_e and _c_o_m_m_o_n_/_c_o_n_f_i_g_._h
       files.  It also creates a shell script _c_o_n_f_i_g_._s_t_a_t_u_s that
       you can run in the future to recreate the current
       configuration.

       Normally, you just _c_d to the directory containing _f_h_i_s_t's
       source code and type
              % ..//ccoonnffiigguurree
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       If you're using _c_s_h on an old version of System V, you
       might need to type
              % sshh ccoonnffiigguurree
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       instead to prevent _c_s_h from trying to execute _c_o_n_f_i_g_u_r_e
       itself.

       Running _c_o_n_f_i_g_u_r_e takes a minute or two.  While it is
       running, it prints some messages that tell what it is
       doing.  If you don't want to see the messages, run
       _c_o_n_f_i_g_u_r_e with its standard output redirected to
       _/_d_e_v_/_n_u_l_l; for example,
              % ./configure > /dev/null
              %

       By default, _c_o_n_f_i_g_u_r_e will arrange for the _m_a_k_e _i_n_s_t_a_l_l
       command to install the ffhhiisstt package's files in
       _/_u_s_r_/_l_o_c_a_l_/_b_i_n and _/_u_s_r_/_l_o_c_a_l_/_m_a_n.  You can specify an
       installation prefix other than _/_u_s_r_/_l_o_c_a_l by giving
       _c_o_n_f_i_g_u_r_e the option --prefix=_P_A_T_H.

       You can specify separate installation prefixes for
       architecture-specific files and architecture-independent
       files.  If you give _c_o_n_f_i_g_u_r_e the option --exec-
       prefix=_P_A_T_H the ffhhiisstt package will use _P_A_T_H as the prefix
       for installing programs and libraries.  Data files and
       documentation will still use the regular prefix.
       Normally, all files are installed using the same prefix.

       _c_o_n_f_i_g_u_r_e ignores any other arguments that you give it.

       On systems that require unusual options for compilation or
       linking that the _f_h_i_s_t package's _c_o_n_f_i_g_u_r_e script does not
       know about, you can give _c_o_n_f_i_g_u_r_e initial values for
       variables by setting them in the environment.  In Bourne-
       compatible shells, you can do that on the command line
       like this:
              $ CCCC==''ggcccc --ttrraaddiittiioonnaall'' LLIIBBSS==--llppoossiixx ..//ccoonnffiigguurree
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              $
       Here are the _m_a_k_e variables that you might want to
       override with environment variables when running
       _c_o_n_f_i_g_u_r_e.


       Variable: CC
               C compiler program.  The default is _c_c.

       Variable: INSTALL
               Program to use to install files.  The default is
               _i_n_s_t_a_l_l if you have it, _c_p otherwise.

       Variable: LIBS
               Libraries to link with, in the form -l_f_o_o -l_b_a_r.
               The _c_o_n_f_i_g_u_r_e script will append to this, rather
               than replace it.

       If you need to do unusual things to compile the package,
       the author encourages you to figure out how _c_o_n_f_i_g_u_r_e
       could check whether to do them, and mail diffs or
       instructions to the author so that they can be included in
       the next release.

BBUUIILLDDIINNGG FFHHIISSTT
       All you should need to do is use the
              % mmaakkee
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       command and wait.  When this finishes you should see a
       directory called _b_i_n containing four files: _f_c_o_m_p, _f_h_i_s_t,
       _f_m_e_r_g_e and _t_x_t_2_c.

       ffccoommpp   The _f_c_o_m_p program is user to compare two text
               files.

       ffhhiisstt   The _f_h_i_s_t program is used to maintain and edit
               history of a text file.

       ffmmeerrggee  The _f_m_e_r_g_e program is used to merge together edits
               from two descendants of a file.

       ttxxtt22cc   The _t_x_t_2_c program is a utility used to build the
               _f_h_i_s_t package; it is not intended for general use
               and should not be installed.

       You can remove the program binaries and object files from
       the source directory by using the
              % mmaakkee cclleeaann
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       command.  To remove all of the above files, and also
       remove the _M_a_k_e_f_i_l_e and _c_o_m_m_o_n_/_c_o_n_f_i_g_._h and _c_o_n_f_i_g_._s_t_a_t_u_s
       files, use the
              % mmaakkee ddiissttcclleeaann
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       command.

       The file _e_t_c_/_c_o_n_f_i_g_u_r_e_._i_n is used to create _c_o_n_f_i_g_u_r_e by a
       GNU program called _a_u_t_o_c_o_n_f.  You only need to know this
       if you want to regenerate _c_o_n_f_i_g_u_r_e using a newer version
       of _a_u_t_o_c_o_n_f.










TTEESSTTIINNGG FFHHIISSTT
       The _f_h_i_s_t package is accompanied by a test suite.  To run
       this test suite, use the following command:
              % mmaakkee ssuurree
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %

       This is successful if the last line of the test output
       reads "Passed All Tests".

       Please let the author know if any of the tests fail, and
       why if you can work that out.

IINNSSTTAALLLLIINNGG FFHHIISSTT
       As explained in the _S_I_T_E _C_O_N_F_I_G_U_R_A_T_I_O_N section, above, the
       _f_h_i_s_t package is installed under the _/_u_s_r_/_l_o_c_a_l tree by
       default.  Use the --prefix=_P_A_T_H option to _c_o_n_f_i_g_u_r_e if you
       want some other path.

       All that is required to install the _f_h_i_s_t package is to
       use the
              % mmaakkee iinnssttaallll
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %
       command.  Control of the directories used may be found in
       the first few lines of the _M_a_k_e_f_i_l_e file if you want to
       bypass the _c_o_n_f_i_g_u_r_e script.

       The above procedure assumes that the _s_o_e_l_i_m(1) command is
       somewhere in the command search _P_A_T_H.  The _s_o_e_l_i_m(1)
       command is available as part of the _G_N_U _R_o_f_f package,
       mentioned previously in the _P_R_I_N_T_E_D _M_A_N_U_A_L_S section.  If
       you don't have it, but you do have the _c_o_o_k package, then
       a link from _r_o_f_f_p_p to _s_o_e_l_i_m will also work.

       The above procedure also assumes that the
       _$_(_p_r_e_f_i_x_)_/_m_a_n_/_m_a_n_1 and _$_(_p_r_e_f_i_x_)_/_m_a_n_/_m_a_n_5 directories
       already exist.  If they do not, you will need to _m_k_d_i_r
       them manually.

PPRRIINNTTEEDD MMAANNUUAALLSS
       The easiest way to get copies of the manuals is to get the
       _f_h_i_s_t_._1_._8_._p_d_f file from the archive site.  This is an
       Adobe AcroRead file containing the Reference Manual, which
       contains the README file, the BUILDING file and
       internationalization notes, as well as all of the manual
       pages for all of the commands.

       This distribution contains the sources to all of the
       documentation for _f_h_i_s_t.  The author used the GNU groff
       package and a postscript printer to prepare the
       documentation.  If you do not have this software, you will
       need to substitute commands appropriate to your site.

       If you have the GNU Groff package installed _b_e_f_o_r_e you run
       the _c_o_n_f_i_g_u_r_e script, the _M_a_k_e_f_i_l_e will contain
       instructions for constructing the documentation.  If you
       already used the _m_a_k_e command, above, this has already
       been done.  The following command
              %% make doc
              _._._._l_o_t_s _o_f _o_u_t_p_u_t_._._.
              %%
       can be used to do this explicitly, if you managed to get
       to this point without doing it.  Please note that there
       may be some warnings from groff, particularly about
       missing fonts, particularly for the .txt files; this is
       normal.

       Once the documents have been formatted, you only need to
       print them.  The following command
              %% lpr lib/en/reference.ps
              %%
       will print the English PostScript version of the Reference
       Manual.  Watch the _m_a_k_e output to see what other versions
       are available.

CCOOPPYYRRIIGGHHTT
       fhist version 1.8.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       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 2 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, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330,
       Boston, MA 02111, USA.

AAUUTTHHOORRSS
       Peter Miller       Web:   http://www.canb.auug.org.au/~millerp
       /\/\*           E-Mail:   millerp@canb.auug.org.au

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





















Reference Manual              FHist                             9





Internationalization(FHist)           Internationalization(FHist)


INNnAAtMMeEErnationalization(FHist)           Internationalization(FHist)
       Internationalization

DDEESSCCRRIIPPTTIIOONN
       The FHist package has gone international; it can now speak
       many languages.  This is accomplished by using the GNU
       Gettext library and utilities.  In order to do this, is is
       necessary to install GNU Gettext prior to configuring,
       making and installing the FHist package, as described in
       the _B_U_I_L_D_I_N_G file.

   IInntteerrnnaattiioonnaalliizzaattiioonn
       This is the process of identifying all of the error
       messages in the source code, and providing error message
       catalogues in a variety of languages.  The error message
       identification was performed by the FHist package's
       author, and the various GNU translation teams provided the
       translations.  Users of the FHist package do not need to
       do anything to internationalize it, this has already been
       done.

   LLooccaalliizzaattiioonn
       The programs in the FHist package are "localizable" when
       properly installed; the programs they contain can be made
       to speak your own native language.

       By default, the FHist package will be installed to allow
       translation of messages.  It will automatically detect
       whether the system provides a usable `gettext' function.

IINNSSTTRRUUCCTTIIOONNSS FFOORR UUSSEERRSS
       As a user, if your language has been installed for this
       package, you only have to set the `LANG' environment
       variable to the appropriate ISO 639 two-letter code prior
       to using the programs in the package.  For example, let's
       suppose that you speak German.  At the shell prompt,
       merely execute
              setenv LANG de
       (in `csh'), or
              LANG=de; export LANG
       (in `sh').  This can be done from your _._c_s_h_r_c or _._p_r_o_f_i_l_e
       file, setting this automatically each time you login.

       An operating system might already offer message
       localization for many of its programs, while other
       programs have been installed locally with the full
       capabilities of GNU Gettext.  Using the GNU Gettext
       extended syntax for the `LANG' environment variable may
       break the localization of already available through the
       operating system.  In this case, users should set both the
       `LANGUAGE' and `LANG' environment variables, as programs
       using GNU Gettext give preference to the `LANGUAGE'
       environment variable.

       For example, some Swedish users would rather read
       translations in German when Swedish is not available.
       This is easily accomplished by setting `LANGUAGE' to
       `sv:de' while leaving `LANG' set to `sv'.



DDIIRREECCTTOORRYY SSTTRRUUCCTTUURREE
       All files which may require translation are located below
       the _l_i_b directory of the source distribution.  It is
       organized as one directory below _l_i_b for each
       localization.  Localizations include all documentation as
       well as the error messages.

   LLooccaalliizzaattiioonn DDiirreeccttoorryy NNaammeess
       Each localization is contained in a sub-directory of the
       _l_i_b directory, with a unique name.  Each localization sub-
       directory has a name of the form:
localization +--------+
------------+_l-_a-_n-_g-_u-_a-_g-_e-+-------------------------------------------------
                        +   --  +-------+  +    +    + -+------+   +
                         --------_t+_e-_r-_r-_i-_t-_o-_r-_y+--       --+. --+_c-_o-_d-_e-_s-_e-_t+--


       _l_a_n_g_u_a_g_e  is one of the 2-letter names from the ISO 639
                 standard.  See _h_t_t_p_:_/_/_w_w_w_._i_c_s_._u_c_i_._e_d_u_/_p_u_b_/_i_e_t_f_/_-
                 _h_t_t_p_/_r_e_l_a_t_e_d_/_i_s_o_6_3_9_._t_x_t for a list.

       _t_e_r_r_i_t_o_r_y is one of the 2-letter country codes from the
                 ISO 3166 standard.  See _f_t_p_:_/_/_r_s_._i_n_t_e_r_n_i_c_._n_e_t_/_-
                 _n_e_t_i_n_f_o_/_i_s_o_3_1_6_6_-_c_o_u_n_t_r_y_c_o_d_e_s for a list.

       _c_o_d_e_s_e_t   is one of the codeset names defined in RFC 1345.
                 This simplifies the task of moving localizations
                 between charsets, because GNU Recode understands
                 them.  See _h_t_t_p_:_/_/_i_n_f_o_._i_n_t_e_r_n_e_t_._i_s_i_._e_d_u_/_1_s_/_-
                 _i_n_-_n_o_t_e_s_/_r_f_c_/_f_i_l_e_s_/_r_f_c_1_3_4_5_._t_x_t for a list.

       Here are some examples of localization names:
                +---------------------------------------+
                |   Name             Description        |
                +---------------------------------------+
                |en.ascii      English, ASCII encoding  |
                |en_us.ascii   English with US spelling |
                |de.latin1     German, Latin-1 encoding |
                +---------------------------------------+
   LLooccaalliizzaattiioonn DDiirreeccttoorryy CCoonntteennttss
       Each localization sub-directory in turn contains sub-
       directories.  These are:
              +-------------------------------------------+
              | Directory              Contents           |
              +-------------------------------------------+
              |LC_MESSAGES   The error message (PO) files |
              |building      The BUILDING file            |
              |man1          The section 1 manual entries |
              |readme        The README file              |
              |building      The BUILDING file            |
              |reference     The Reference Manual         |
              +-------------------------------------------+
       The structure is identical below each of the localization
       directories.  The sub-directories of all localizations
       will have the same names.











IINNSSTTRRUUCCTTIIOONNSS FFOORR TTRRAANNSSLLAATTOORRSS
       When translating the error messages, all of the
       substitutions described in _c_o_o_k___s_u_b(5) are also available.
       Substitution variable names and function names may be
       abbreviated, in the same way that command line options are
       abbreviated, but abbreviation should probably be avoided.
       Substitution names will _n_e_v_e_r be internationalized,
       otherwise the substitutions will stop working, Catch-22.

       While FHist was written by an English speaker, the English
       localization is necessary, to translate the ``terse
       programmer'' style error messages into something more user
       friendly.

       Messages which include command line options need to leave
       the command line options untranslated, because they are
       not yet internationalized, though they may be one day.

       Each LC_MESSAGES directory within each localization
       contains a number of PO files.  There is one for each
       program in the FHist package, plus one called common.po
       containing messages common to all of them.  The MO file
       for each program is generated by naming the program
       specific PO file and also the common PO file.






































Reference Manual              FHist                            12





fcomp(1)                                                 fcomp(1)


fNNcAAoMMmEEp(1)                                                 fcomp(1)
       fcomp - file compare

SSYYNNOOPPSSIISS
       ffccoommpp [ _o_p_t_i_o_n...  ] _f_i_l_e_n_a_m_e_1 _f_i_l_e_n_a_m_e_2

       ffccoommpp --HHeellpp

       ffccoommpp --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
       The _f_c_o_m_p program is used to compare text files, similar
       to the _d_i_f_f(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
       _f_h_i_s_t(1) program in order to produce the edit history.

       To compare file _o_l_d to file _n_e_w, the command:
              fcomp old new
       would be used.  This gives the differences involved in
       converting ffrroomm file _o_l_d ttoo file _n_e_w.  This is analogous
       to the use of the _c_p(1) command.  Either the _o_l_d or _n_e_w
       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 _o_l_d and _n_e_w are both
       directories.

OOPPTTIIOONNSS
       The following options are understood:

       --BBIINNaarryy 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 _f_h_i_s_t(1)
               option of the same name.

       --BBllaannkk
               Ignore blank lines in the input files.

       --CCoonntteexxtt _n_u_m_b_e_r
               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.

       --EEddiitt
               Output an edit script which is machine readable.

       --FFaaiilluurreess _n_u_m_b_e_r
               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.

       --HHeellpp
               Give some help on how to use the _f_c_o_m_p program.

       --JJooiinn _n_u_m_b_e_r
               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.

       --MMaattcchhiinngg
               Output matching lines, rather then changed lines.

       --NNuummbbeerr
               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.

       --OOuuttppuutt _f_i_l_e_n_a_m_e
               Send the output to this file, rather than the
               standard output.

       --QQuuiieett
               Output only a quick summary of changes needed.

       --SSppaacceess
               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.

       --UUppccaassee
               Uppercase lines before comparing.

       --VVEERRSSiioonn
               Show what version of _f_c_o_m_p is running.

       --WWhhaatt
               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 --HHeellpp 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 _f_c_o_m_p are long, this means ignoring the
       extra leading '-'.  The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is
       also understood.

FFIILLEE NNAAMMEE EEXXPPAANNSSIIOONN
       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 _._F_O_O
       has the value _t_h_i_s_._i_s_._a_._l_o_n_g_._n_a_m_e, 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

BBIINNAARRYY FFIILLEESS
       In general, fcomp can handle all text files you throw at
       it, even international text with unusual encodings.
       However, fcomp is _u_n_a_b_l_e to cope elegantly with files
       which contain the NUL character.

       The _f_c_o_m_p(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 _f_m_e_r_g_e(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 _f_h_i_s_t(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 ----BBIINNaarryy for files which absolutely must contain NUL
       characters.

EEXXIITT SSTTAATTUUSS
       The _f_c_o_m_p program will exit with a status of 1 on any
       error.  The _f_c_o_m_p program will only exit with a status of
       0 if there are no errors.

RREEFFEERREENNCCEESS
       This program is based on the algorithm in
              _A_n _O_(_N_D_) _D_i_f_f_e_r_e_n_c_e _A_l_g_o_r_i_t_h_m _a_n_d _I_t_s _V_a_r_i_a_t_i_o_n_s,
              Eugene W. Myers, TR 85-6, 10-April-1985, Department
              of Computer Science, The University of Arizona,
              Tuscon, Arizona 85721.
       See also:
              _A _F_i_l_e _C_o_m_p_a_r_i_s_o_n _P_r_o_g_r_a_m, Webb Miller and Eugene
              W. Myers, Software Practice and Experience, Volume
              15, No. 11, November 1985.

CCOOPPYYRRIIGGHHTT
       fcomp version 1.8.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       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 2 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, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330,
       Boston, MA 02111, USA.

AAUUTTHHOORRSS
       Peter Miller       Web:   http://www.canb.auug.org.au/~millerp
       /\/\*           E-Mail:   millerp@canb.auug.org.au

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






























Reference Manual              FHist                            16





fhist(1)                                                 fhist(1)


fNNhAAiMMsEEt(1)                                                 fhist(1)
       fhist - file history

SSYYNNOOPPSSIISS
       ffhhiisstt _f_i_l_e_n_a_m_e...  _o_p_t_i_o_n...

       ffhhiisstt --HHeellpp

       ffhhiisstt --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
       The _f_h_i_s_t program is used to keep track of the successive
       versions of a file.  Using this program, you can remember
       all of your changes to a file, and get back any one of the
       old versions.  The uses of this ability are:

       1.  You can make a series of tentative edits to the file,
           and if necessary back up to the last "good" edit.

       2.  You can delete old subroutines and code from your file
           which are obsolete, but still be able to get them back
           in the future in case a need for them arises.

       3.  You can compare two versions of the file to see how
           you fixed some old problem, so that you can check up
           on the correctness of the fix at a later date.

       4.  You get a record of your remarks for each version, so
           that you can quickly know what bugs were fixed, and
           what features were implemented.

       5.  The date the file was last edited can be automatically
           stored in the file.

       The _f_h_i_s_t program manipulates modules.  A module is simply
       any text file that you are interested in keeping versions
       of.  For example, a source file _d_o_i_t_._c is a module, and so
       is a documentation file _h_o_w_t_o_._d_o_c.  The module name
       includes the suffix of the file (as in the above
       examples).  However, pathnames are not part of a module
       name, so that _/_u_s_r_/_d_b_e_l_l_/_b_a_r_._c cannot be a legal module
       name.  A module name is limited to 12 characters since the
       _f_h_i_s_t program needs two extra characters for its own
       purpose.

OOPPTTIIOONNSS
       The following options are understood:

       --PPaatthh _p_a_t_h_n_a_m_e
               Modules are stored in a directory, called the
               module storage directory.  The default directory
               is _F_H_I_S_T, and therefore is located relative to
               your current directory.  This is convenient when
               you are in a directory containing many modules,
               and you want a local storage directory to contain
               just those modules.  If you use the --pp option,
               then you can locate the storage directory anywhere
               you choose.  This is useful if you choose to have
               a common storage directory for all of your files,
               independent of where they actually are used.

               The files inside of the storage directory should
               not be changed by you.  Doing so will probably
               corrupt your edit history, causing errors when you
               extract old revisions.  For your information,
               though, each module is stored as two files in the
               directory.  The one with the _._s suffix is a copy
               of the newest version of the module, with one
               extra line at the beginning.  The one with the _._e
               suffix is the edit history of the module, and
               contains the information needed to extract
               previous revisions of the module.  Thus if the
               edit history is ever corrupted, you will at least
               have the most recent version of the module.

       --MMaaKKee__PPaatthh
               This option may be used to request that the path
               directory be created automatically if it does not
               yet exist.  This works for both the directory
               specified by the -Path option, and for the
               default.  Intermediate directories will also be
               created if necessary.

       --BBIINNaarryy This option may be used to specify that the file
               is binary, that it may contain NUL characters.  It
               is essential that you have consistent presence or
               absence of the --BBIINNaarryy option for each file when
               combined with the --CCRReeaattee, --UUppddaattee,
               --CCoonnddiittiioonnaall__UUppddaattee and --EExxttrraacctt options.  Failure
               to do so will produce inconsistent results.  Note:
               this is different behaviour to the _f_c_o_m_p(1) option
               of the same name.

       --CCRReeaattee
               To use the _f_h_i_s_t program for the first time, you
               need to create your storage directory.  Therefore,
               _c_d to the directory where you want it to be, which
               is probably the directory containing the modules
               you want to save the revisions of.  Then create
               the directory _F_H_I_S_T (or some other name if you
               don't want to use the default name).

               To start using a module under _f_h_i_s_t, you must
               first use the --CCRReeaattee option.  This creates the
               initial edit for that module in the storage
               directory, with the contents of the specified
               module as the initial edit.  Thus, if you have a
               source file _p_r_o_g_._c, then the command:
                      fhist prog.c -create
               creates the initial edit of the module.  As part
               of this process, you are asked to provide remarks
               about the file.  These remarks can be seen later
               using the --LLiisstt option (described below).  After
               the remarks have been typed, the contents of the
               file are then saved.  You can then delete the file
               _p_r_o_g_._c if desired, and _f_h_i_s_t would be able to
               recreate it later.  Or you can leave it there as
               the working copy of the module.

               The --CCRReeaattee option may be combined with the
               --UUppddaattee or --CCoonnddiittiioonnaall__UUppddaattee options to create
               the file if required.

       --UUppddaattee
               To save another revision of the module, you use
               the --UUppddaattee option.  This updates the files in the
               storage directory to include the latest changes.
               Remarks are again asked for so that you can
               document why you made this edit.  Thus, to
               continue the example, after editing _p_r_o_g_._c, the
               command:
                      fhist prog.c -u
               will save the changes as a new edit.  This command
               compares the newest version of the module to the
               previous version, saves the differences in the _._e
               file, and copies the new source to the _._s file.
               At this point, you can once again delete the
               _p_r_o_g_._c file if desired, and later get back either
               of the two versions of the program.

               The _f_h_i_s_t program handles quota or disk full
               problems during a create or update operation
               without damage occurring to the edit history
               files.  If an edit cannot be completed because of
               such problems, the edit is backed out completely,
               and you will get an error message about the disk
               problem.  There is no need for any error recovery
               in this case, other than retrying the update when
               more disk space is available.  The _f_h_i_s_t program
               also disables signals during the critical file
               operations, so you do not have to worry about
               damaging the edit history files because of
               attempts to quit out of the program.

               The --CCRReeaattee option may be combined with the
               --UUppddaattee or --CCoonnddiittiioonnaall__UUppddaattee options to create
               the file if required.

       --IInnppuutt _f_i_l_e_n_a_m_e
               In either the --CCRReeaattee or --UUppddaattee options, the file
               containing the new version of the module defaults
               to the same name as the module.  In the example,
               the module _p_r_o_g_._c was created and updated from the
               data in the file _p_r_o_g_._c.  When you wish the data
               to come from some other file, you can use the
               --IInnppuutt option, which specifies the input file to
               use for the data.  For example, if you wanted to
               update _p_r_o_g_._c, but from a filename called
               _n_e_w_p_r_o_g_._c, then the command:
                      fhist prog.c -u -i newprog.c
               would save a new revision of module _p_r_o_g_._c, but
               with the data that was in the file _n_e_w_p_r_o_g_._c.  In
               this case, the file _p_r_o_g_._c does not have to exist,
               and isn't referenced even if it did exist.  Again,
               once the update is complete, you could delete the
               _n_e_w_p_r_o_g_._c file if desired and then later you can
               retrieve its contents.

       --RReemmaarrkkss
               Remarks can be read from a file instead of from
               the terminal.  The --RReemmaarrkkss option can be used to
               specify a file name containing the remarks.  If
               there is no file name following the --RReemmaarrkkss
               option, then no remarks at all are used.  The
               command:
                      fhist prog.c -u -r
               would create a new revision of _p_r_o_g_._c without
               asking for or saving any remarks about the edit.

       --EExxttrraacctt [ _e_d_i_t ]
               To retrieve a previous revision of a module, you
               specify the name of the module and use the
               --EExxttrraacctt option to specify the edit number you
               want retrieved.  Edit numbers are assigned
               sequentially starting with 1.  Thus the initial
               version of the module has edit number 1, the first
               revision has edit number 2, and so on until the
               latest revision.  If the --EExxttrraacctt option is not
               used, or if no edit number is supplied for it,
               then the latest edit number is extracted.
               Therefore, this is the default action if no
               options at all are specified.

               Edit numbers can also be zero, negative, or be a
               name with an optional offset.  The number zero
               represents the latest edit number, and negative
               numbers indicate edit numbers backwards from the
               latest edit number.  Edit names represent edit
               numbers whose name had been set by using the --NNaammee
               option.  For example, if edit number 10 was
               associated with the name _f_o_o, then the edit name
               _f_o_o represents 10, _f_o_o_-_4 represents edit number6,
               and _f_o_o_+_2 represents edit number 12.  The special
               reserved names _o_l_d_e_s_t and _n_e_w_e_s_t refer to the
               oldest and newest versions of the module in the
               edit history.

               As an example of retrievals, assume that you have
               saved ten versions of the module _p_r_o_g_._c.  The
               following commands will then extract the versions
               of the file with the specified edit numbers:

               fhist prog.c
                       version 10 (the latest)

               fhist prog.c -e 9
                       version 9 (the version just prior)

               fhist prog.c -e oldest
                       version 1 (the oldest version)

               fhist prog.c -e -2
                       version 8 (latest version - 2)

               The output filename is again defaulted to the
               module name.  So when the module _p_r_o_g_._c is
               extracted, the specified version of the module is
               written to the _p_r_o_g_._c file.

               In order to prevent accidental overwriting of a
               file, the _f_h_i_s_t program will by default ask you if
               overwriting is permitted if that would occur.  A
               common mistake is to edit _p_r_o_g_._c, and then try to
               update the module, but forget to specify the --uu
               option.  Then the _f_h_i_s_t program would try to
               extract the newest version of the module, and thus
               overwrite the file with the new changes.  Asking
               the question allows you to notice your mistake,
               and prevent the overwriting.

       --OOuuttppuutt _f_i_l_e_n_a_m_e
               You can change the output filename using the
               --OOuuttppuutt option.  Thus, the command:
                      fhist prog.c -o newprog.c
               will extract the latest version of the module
               _p_r_o_g_._c, and put it into the file _n_e_w_p_r_o_g_._c.  Once
               again, the file "prog.c" is ignored, whether or
               not it existed.

       --FFoorrccee__WWrriittee
               This option will force overwriting of the file,
               thus never asking you if overwriting is permitted.
               This is often useful in shell scripts, or when you
               are _s_u_r_e that you want to overwrite any existing
               file.

       --NNoo__WWrriittee
               This option is the no-overwrite option, and will
               cause any existing files to _n_o_t be overwritten,
               again without asking you.  This is useful if you
               already have some of the modules in your
               directory, and you want to extract the rest of the
               modules without overwriting the ones you already
               have.  Specifying both --FFoorree__WWrriittee and --NNoo__WWrriittee
               is an error.

       --TTeerrmmiinnaall [ _e_d_i_t ]
               This option is used to output an extracted module
               to the standard output, instead of writing it to a
               file.  This is useful in order to view the
               beginning of a version of the file.  This can be
               interrupted if you do not want to see the whole
               file.

       --MMooddiiffyy _n_u_m_b_e_r
               When extracting a file, the _f_h_i_s_t program looks
               for and updates special character sequences in the
               first few lines of the file.  These special
               sequences are used for documentation purposes,
               such as describing the edit number the file is
               from.  For speed of extraction and updating, these
               sequences are usually limited to the first 25
               lines of the file, since the _f_h_i_s_t program then
               does not have to examine the entire file.  The
               --MMooddiiffyy option can be used to change the number of
               lines to be modified from the default value of 25.
               Specifying zero totally disables the special
               character sequences, whereas specifying a very
               large number will cause the sequences to be
               checked for each line of the file (and thus slow
               the _f_h_i_s_t program down).

               Each special sequence is of the form [[## kkeeyywwoorrdd
               vvaalluuee,, kkeeyywwoorrdd vvaalluuee,, ......,, kkeeyywwoorrdd vvaalluuee ##]] ,,
               where each _k_e_y_w_o_r_d describes an item, and each
               _v_a_l_u_e is the value for the preceding keyword.  The
               keywords can be in upper or lower case, or both.
               The single space following the [[##, following each
               comma, and preceding the ##]] must be present.  If
               the sequence is wrong, an unknown keyword is used,
               the line is longer than 200 characters, or more
               than four keywords are used, then the whole line
               will not be changed.  The current keywords which
               can be used are the following:

               edit    The edit number

               date    The date that the edit was created

               user    The user name of the user who created the
                       edit

               module  The module name

               In order to use this special character sequence,
               you simply insert it into your module inside of a
               comment (within the first few lines).  When this
               is done, the value parts of the sequence can be
               null.  For example, if you want to put a special
               sequence into a program called _d_e_l_e_t_e_._c, then you
               could edit the first few lines as follows:
                      /*
                       * Delete - program to delete files
                       * [# Edit, Date #]
                       */
               When an extract is done, the proper edit number
               and date are automatically inserted as the new
               values.  Thus, if you extract edit 23 of the
               module _d_e_l_e_t_e_._c which had been created on 8 August
               89, then the resulting file would begin:
                      /*
                       * Delete - program to delete files
                       * [# Edit 23, Date 8-Aug-89 #]
                       */

               When updating a module, it is never necessary to
               edit these sequences, as any old values will be
               removed and replaced with the new ones.  Also,
               when using the --dd or --dduu options (described
               below), lines with these sequences compare as if
               the values were null, and thus will not cause
               spurious differences.

               During an update, the special character sequences
               are read and any edit value found is compared
               against the current edit number of the module.  If
               they differ, then the update fails.  This provides
               an interlock check for the case of two users
               extracting the same version of a file, editing it,
               and then both updating it without knowledge of
               each other.  In this case, the second user would
               fail, and then he can merge his edits with the
               previous user's edit and then retry the update.
               This checking is disabled if there is no special
               character sequence containing the edit keyword,
               the edit number value is null, or if the
               --FFoorrcceedd__UUppddaattee option is used to indicate that the
               check is not needed.

       --NNaammee _s_t_r_i_n_g
               This option is used to associate a name for the
               newest version of a module.  It can be given along
               with the --CCRReeaattee, --UUppddaattee, or --DDiiffffeerreennccee__UUppddaattee
               options, to specify a name for the new version of
               the module.  It can also be given by itself in
               order to specify a name for the newest version of
               a module.  Each edit number can have many names
               associated with it, so this will not remove any
               previously defined name for the edit.  This option
               is useful to correlate many modules together.  For
               example, when a new version of a program is ready
               to be released, you could give each module of the
               program the same name _r_e_l_e_a_s_e_1.  Then in the
               future, you can recreate the sources making up
               that release by extracting the edits with the name
               _r_e_l_e_a_s_e_1 for every module.  Edit names cannot
               begin with a digit, and cannot contain plus or
               minus signs.  These rules prevent ambiguous
               parsing of edit numbers for the --EExxttrraacctt,
               --TTeerrmmiinnaall, --AALLLL, and --LLiisstt options.

       --LLiisstt [ _e_d_i_t_1 [ _e_d_i_t_2 ]]
               This option prints a list of edits for the module,
               giving the user name, date, user remarks, and
               names specified for the edits.  If no edit number
               is supplied, then all edits are printed in reverse
               order.  If a single edit number is supplied, then
               only that edit number is printed.  If two edit
               numbers are supplied, then all edits in the
               specified range are printed.  The output from this
               option defaults to the terminal.  You can use the
               --OOuuttppuutt option to save the results to a file.

       --DDiiffffeerreennccee [ _e_d_i_t_1 [ _e_d_i_t_2 ]]
               This option is used to display the differences
               between two versions of a module, or a file and a
               version of a module.  There are three modes for
               this action, depending on how many edit numbers
               are supplied.  These modes are illustrated by the
               following examples:

               fhist foo.c -d
                       Compare latest version against file
                       "foo.c"

               fhist foo.c -d 3
                       Compare version 3 against file "foo.c"

               fhist foo.c -d 3 4
                       Compare version 3 against version 4

               This option accepts the --IInnppuutt option to specify
               the file to be compared.  When using the
               --DDiiffffeerreennccee option, the output defaults to the
               terminal.  Therefore, you must use --OOuuttppuutt if you
               wish the differences saved to a file.  Using
               --QQuuiicckk with --DDiiffffeerreennccee will only output a quick
               summary of the changes, instead of the detailed
               changes.  This summary only supplies the number of
               lines inserted, deleted, and unchanged between the
               files.  Using --WWhhaatt with --DDiiffffeerreennccee will display
               all of both files, showing in detail what the
               differences are using change bars.

               The --DDiiffffeerreennccee option may need to write one or
               two temporary files in order to extract old
               versions of a module to be compared.  These files
               have names like _T_$_n___n_n_n _.  They are deleted again
               just before differences are output, so that
               stopping the output before it is complete will not
               leave these files around.  The temporary files are
               usually written to the current directory.  If this
               is not reasonable because of permission or quota
               problems, then you can specify the directory for
               writing the temporary files into.  This is done by
               defining the _T_M_P_D_I_R environment variable to be the
               path of the directory.

       --DDiiffffeerreennccee__UUppddaattee
               This option combines the effects of the
               --DDiiffffeerreennccee and --UUppddaattee options.  It displays the
               differences between a file and the latest version
               of a module.  If there are any differences, it
               then proceeds to perform an update of the module
               with that file, asking for remarks as usual.  This
               option is very useful when used with wildcarded
               module names.  Then you can update just those
               modules which were changed by an edit session, and
               see the changes for each module before typing the
               appropriate remark for each module.

               You may specify both of the --DDiiffffeerreennccee and
               --UUppddaattee options, or you may use this option.  The
               results are identical.

       --CCoonnddiittiioonnaall__UUppddaattee
               This option conditionally updates a module.  That
               is, it will only do an update if there are any
               differences between a file and the latest version
               of a module.  This is convenient when related
               changes are made to many modules in a directory,
               and one command using wildcards can update just
               those modules that were changed.

               The --CCRReeaattee option may be combined with the
               --UUppddaattee or --CCoonnddiittiioonnaall__UUppddaattee options to create
               the file if required.

       --CCLLeeaann
               This option is used to remove files which match
               the newest versions of modules.  If a file exists
               which matches the newest version of a module, then
               the file is deleted, otherwise it is kept.  This
               option is used to clean up a work directory after
               building a new version of a product.  This option
               is especially useful when used with the --AALLLL
               option.  It will also accept the --IInnppuutt option to
               specify a directory containing the files to be
               cleaned.

       --CCHHeecckk
               This option is used to find out if a file does not
               match the latest version of a module.  If so, a
               message is given.  If the file does match, no
               output occurs.  This option is thus useful to
               determine which files have been modified and in
               need of updating.  The --AALLLL option is defaulted
               for this option, since it is usually used for all
               modules.  For example,
                      fhist -CHeck
               will report on all files which are different than
               the latest modules.  If --QQuuiicckk is specified, then
               the output will consist of the module names with
               no other output.  This is useful for the backquote
               operator in shell scripts for referencing the
               modules which are out of date.  The --CCHHeecckk option
               will also accept the --IInnppuutt option.

       --PPRRuunnee _e_d_i_t
               This option is used to permanently remove early
               edits from an edit history.  This is useful if you
               wish to cut down on the amount of disk space taken
               by an edit history file, or when you want to start
               another release of a file, and want a copy of the
               edit history file for that new release.  The
               option takes an edit number to preserve, and all
               edits in the edit history file before that edit
               are deleted, and can no longer be referenced.  For
               example, to keep only the current edit plus the
               previous 10 edits of the module _f_i_l_e, you could
               use the command:
                      fhist file -prune -10
               Since the --PPRRuunnee option is unrecoverable (unless
               backup files are available), the _f_h_i_s_t program
               asks the user to verify that the prune is really
               wanted.  The --FFoorrcceedd__UUppddaattee option can be used to
               bypass this verification.

       --AALLLL
               This option can be used with any of the action
               options.  It means perform the operation for all
               modules in the module storage directory.
               Alternatively, you can specify multiple module
               names on the command line, and the actions will be
               performed with those modules.  You cannot specify
               both --AALLLL and module names.

               When using multiple modules or the --AALLLL option,
               the --IInnppuutt and --OOuuttppuutt options have a slightly
               different meaning.  In these cases, the --IInnppuutt and
               --OOuuttppuutt arguments are a directory name which
               contains filenames with the same name as the
               module names.  If the argument is not a directory,
               then an error is given.  This feature is useful
               for example, to extract all the modules and place
               them into some remote directory, as in:
                      fhist -all -e -o tempdir

               You should be careful when specifying numeric edit
               numbers for multiple modules.  Most probably, a
               particular edit number is not appropriate for
               multiple modules, since changes corresponding to a
               particular edit number are not usually related.
               Using named edits avoids these problems.  As an
               example, if you wanted to extract every module
               which had an edit that was named _r_e_v_3, then you
               could use the command:
                      fhist -all -e rev3

               Some other useful examples of commands which use
               multiple modules are:
                      fhist *.c -create
                      fhist -check -all
                      fhist -cu -all

       --VVeerrbboossee
               This option can be specified with any other
               action, and outputs status information about the
               progress of the action.  This is useful for
               debugging of problems, or just for amusement when
               the system is slow or a large file is being
               processed.  It accepts a numeric argument to
               indicate the verbosity for output.  The levels are
               as follows:

               0   No output at all (except for errors).

               1   Single-line output describing action
                   (default).

               2   Detailed status as action proceeds.

       --HHeellpp
               Give some help on how to use the _f_h_i_s_t program.

       --VVEERRSSiioonn
               Show what version of _f_h_i_s_t is running.

       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 --HHeellpp 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 _f_h_i_s_t are long, this means ignoring the
       extra leading '-'.  The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is
       also understood.

FFIILLEE NNAAMMEE EEXXPPAANNSSIIOONN
       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 _._F_O_O
       has the value _t_h_i_s_._i_s_._a_._l_o_n_g_._n_a_m_e, then the command
              fhist -o .FOO
       is actually equivilant to the command
              fhist -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:
              fhist -o ./.FOO

BBIINNAARRYY FFIILLEESS
       In general, fhist can handle all text files you throw at
       it, even international text with unusual encodings.
       However, fhist is _u_n_a_b_l_e to cope elegantly with files
       which contain the NUL character.

       The _f_c_o_m_p(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 _f_m_e_r_g_e(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 _f_h_i_s_t(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 ----BBIINNaarryy for files which absolutely must contain NUL
       characters.

EEXXIITT SSTTAATTUUSS
       The _f_h_i_s_t program will exit with a status of 1 on any
       error.  The _f_h_i_s_t program will only exit with a status of
       0 if there are no errors.





RREEFFEERREENNCCEESS
       This program is based on the algorithm in
              _A_n _O_(_N_D_) _D_i_f_f_e_r_e_n_c_e _A_l_g_o_r_i_t_h_m _a_n_d _I_t_s _V_a_r_i_a_t_i_o_n_s,
              Eugene W. Myers, TR 85-6, 10-April-1985, Department
              of Computer Science, The University of Arizona,
              Tuscon, Arizona 85721.
       See also:
              _A _F_i_l_e _C_o_m_p_a_r_i_s_o_n _P_r_o_g_r_a_m, Webb Miller and Eugene
              W. Myers, Software Practice and Experience, Volume
              15, No. 11, November 1985.

CCOOPPYYRRIIGGHHTT
       fhist version 1.8.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       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 2 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, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330,
       Boston, MA 02111, USA.

AAUUTTHHOORRSS
       Peter Miller       Web:   http://www.canb.auug.org.au/~millerp
       /\/\*           E-Mail:   millerp@canb.auug.org.au

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




















Reference Manual              FHist                            27





GPL(GNU)             Free Software Foundation            GPL(GNU)


GPL(GNU)             FreGeNUSoGfEtNwEaRrAeL FPoUuBnLdIaCtiLoInCENSE        GPL(GNU)
                          Version 2, June 1991

       Copyright (C) 1989, 1991 Free Software Foundation, Inc.
       59 Temple Place, Suite 330, Boston, MA 02111, USA
       Everyone is permitted to copy and distribute verbatim
       copies of this license document, but changing it is not
       allowed.

                                Preamble

       The licenses for most software are designed to take away
       your freedom to share and change it.  By contrast, the GNU
       General Public License is intended to guarantee your
       freedom to share and change free software--to make sure
       the software is free for all its users.  This General
       Public License applies to most of the Free Software
       Foundation's software and to any other program whose
       authors commit to using it.  (Some other Free Software
       Foundation software is covered by the GNU Library General
       Public License instead.)  You can apply it to your
       programs, too.

       When we speak of free software, we are referring to
       freedom, not price.  Our General Public Licenses are
       designed to make sure that you have the freedom to
       distribute copies of free software (and charge for this
       service if you wish), that you receive source code or can
       get it if you want it, that you can change the software or
       use pieces of it in new free programs; and that you know
       you can do these things.

       To protect your rights, we need to make restrictions that
       forbid anyone to deny you these rights or to ask you to
       surrender the rights.  These restrictions translate to
       certain responsibilities for you if you distribute copies
       of the software, or if you modify it.

       For example, if you distribute copies of such a program,
       whether gratis or for a fee, you must give the recipients
       all the rights that you have.  You must make sure that
       they, too, receive or can get the source code.  And you
       must show them these terms so they know their rights.

       We protect your rights with two steps: (1) copyright the
       software, and (2) offer you this license which gives you
       legal permission to copy, distribute and/or modify the
       software.

       Also, for each author's protection and ours, we want to
       make certain that everyone understands that there is no
       warranty for this free software.  If the software is
       modified by someone else and passed on, we want its
       recipients to know that what they have is not the
       original, so that any problems introduced by others will
       not reflect on the original authors' reputations.

       Finally, any free program is threatened constantly by
       software patents.  We wish to avoid the danger that
       redistributors of a free program will individually obtain
       patent licenses, in effect making the program proprietary.
       To prevent this, we have made it clear that any patent
       must be licensed for everyone's free use or not licensed
       at all.

       The precise terms and conditions for copying, distribution
       and modification follow.



























































                       GNU GENERAL PUBLIC LICENSE
       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

       0. This License applies to any program or other work which
       contains a notice placed by the copyright holder saying it
       may be distributed under the terms of this General Public
       License.  The "Program", below, refers to any such program
       or work, and a "work based on the Program" means either
       the Program or any derivative work under copyright law:
       that is to say, a work containing the Program or a portion
       of it, either verbatim or with modifications and/or
       translated into another language.  (Hereinafter,
       translation is included without limitation in the term
       "modification".)  Each licensee is addressed as "you".

       Activities other than copying, distribution and
       modification are not covered by this License; they are
       outside its scope.  The act of running the Program is not
       restricted, and the output from the Program is covered
       only if its contents constitute a work based on the
       Program (independent of having been made by running the
       Program).  Whether that is true depends on what the
       Program does.

       1. You may copy and distribute verbatim copies of the
       Program's source code as you receive it, in any medium,
       provided that you conspicuously and appropriately publish
       on each copy an appropriate copyright notice and
       disclaimer of warranty; keep intact all the notices that
       refer to this License and to the absence of any warranty;
       and give any other recipients of the Program a copy of
       this License along with the Program.

       You may charge a fee for the physical act of transferring
       a copy, and you may at your option offer warranty
       protection in exchange for a fee.

       2. You may modify your copy or copies of the Program or
       any portion of it, thus forming a work based on the
       Program, and copy and distribute such modifications or
       work under the terms of Section 1 above, provided that you
       also meet all of these conditions:

       a)  You must cause the modified files to carry prominent
           notices stating that you changed the files and the
           date of any change.

       b)  You must cause any work that you distribute or
           publish, that in whole or in part contains or is
           derived from the Program or any part thereof, to be
           licensed as a whole at no charge to all third parties
           under the terms of this License.

       c)  If the modified program normally reads commands
           interactively when run, you must cause it, when
           started running for such interactive use in the most
           ordinary way, to print or display an announcement
           including an appropriate copyright notice and a notice
           that there is no warranty (or else, saying that you
           provide a warranty) and that users may redistribute
           the program under these conditions, and telling the
           user how to view a copy of this License.  (Exception:
           if the Program itself is interactive but does not
           normally print such an announcement, your work based
           on the Program is not required to print an
           announcement.)

       These requirements apply to the modified work as a whole.
       If identifiable sections of that work are not derived from
       the Program, and can be reasonably considered independent
       and separate works in themselves, then this License, and
       its terms, do not apply to those sections when you
       distribute them as separate works.  But when you
       distribute the same sections as part of a whole which is a
       work based on the Program, the distribution of the whole
       must be on the terms of this License, whose permissions
       for other licensees extend to the entire whole, and thus
       to each and every part regardless of who wrote it.

       Thus, it is not the intent of this section to claim rights
       or contest your rights to work written entirely by you;
       rather, the intent is to exercise the right to control the
       distribution of derivative or collective works based on
       the Program.

       In addition, mere aggregation of another work not based on
       the Program with the Program (or with a work based on the
       Program) on a volume of a storage or distribution medium
       does not bring the other work under the scope of this
       License.

       3. You may copy and distribute the Program (or a work
       based on it, under Section 2) in object code or executable
       form under the terms of Sections 1 and 2 above provided
       that you also do one of the following:

       a)  Accompany it with the complete corresponding machine-
           readable source code, which must be distributed under
           the terms of Sections 1 and 2 above on a medium
           customarily used for software interchange; or,

       b)  Accompany it with a written offer, valid for at least
           three years, to give any third party, for a charge no
           more than your cost of physically performing source
           distribution, a complete machine-readable copy of the
           corresponding source code, to be distributed under the
           terms of Sections 1 and 2 above on a medium
           customarily used for software interchange; or,

       c)  Accompany it with the information you received as to
           the offer to distribute corresponding source code.
           (This alternative is allowed only for noncommercial
           distribution and only if you received the program in
           object code or executable form with such an offer, in
           accord with Subsection b above.)

       The source code for a work means the preferred form of the
       work for making modifications to it.  For an executable
       work, complete source code means all the source code for
       all modules it contains, plus any associated interface
       definition files, plus the scripts used to control
       compilation and installation of the executable.  However,
       as a special exception, the source code distributed need
       not include anything that is normally distributed (in
       either source or binary form) with the major components
       (compiler, kernel, and so on) of the operating system on
       which the executable runs, unless that component itself
       accompanies the executable.

       If distribution of executable or object code is made by
       offering access to copy from a designated place, then
       offering equivalent access to copy the source code from
       the same place counts as distribution of the source code,
       even though third parties are not compelled to copy the
       source along with the object code.

       4. You may not copy, modify, sublicense, or distribute the
       Program except as expressly provided under this License.
       Any attempt otherwise to copy, modify, sublicense or
       distribute the Program is void, and will automatically
       terminate your rights under this License.  However,
       parties who have received copies, or rights, from you
       under this License will not have their licenses terminated
       so long as such parties remain in full compliance.

       5. You are not required to accept this License, since you
       have not signed it.  However, nothing else grants you
       permission to modify or distribute the Program or its
       derivative works.  These actions are prohibited by law if
       you do not accept this License.  Therefore, by modifying
       or distributing the Program (or any work based on the
       Program), you indicate your acceptance of this License to
       do so, and all its terms and conditions for copying,
       distributing or modifying the Program or works based on
       it.

       6. Each time you redistribute the Program (or any work
       based on the Program), the recipient automatically
       receives a license from the original licensor to copy,
       distribute or modify the Program subject to these terms
       and conditions.  You may not impose any further
       restrictions on the recipients' exercise of the rights
       granted herein.  You are not responsible for enforcing
       compliance by third parties to this License.

       7. If, as a consequence of a court judgment or allegation
       of patent infringement or for any other reason (not
       limited to patent issues), conditions are imposed on you
       (whether by court order, agreement or otherwise) that
       contradict the conditions of this License, they do not
       excuse you from the conditions of this License.  If you
       cannot distribute so as to satisfy simultaneously your
       obligations under this License and any other pertinent
       obligations, then as a consequence you may not distribute
       the Program at all.  For example, if a patent license
       would not permit royalty-free redistribution of the
       Program by all those who receive copies directly or
       indirectly through you, then the only way you could
       satisfy both it and this License would be to refrain
       entirely from distribution of the Program.

       If any portion of this section is held invalid or
       unenforceable under any particular circumstance, the
       balance of the section is intended to apply and the
       section as a whole is intended to apply in other
       circumstances.

       It is not the purpose of this section to induce you to
       infringe any patents or other property right claims or to
       contest validity of any such claims; this section has the
       sole purpose of protecting the integrity of the free
       software distribution system, which is implemented by
       public license practices.  Many people have made generous
       contributions to the wide range of software distributed
       through that system in reliance on consistent application
       of that system; it is up to the author/donor to decide if
       he or she is willing to distribute software through any
       other system and a licensee cannot impose that choice.

       This section is intended to make thoroughly clear what is
       believed to be a consequence of the rest of this License.

       8. If the distribution and/or use of the Program is
       restricted in certain countries either by patents or by
       copyrighted interfaces, the original copyright holder who
       places the Program under this License may add an explicit
       geographical distribution limitation excluding those
       countries, so that distribution is permitted only in or
       among countries not thus excluded.  In such case, this
       License incorporates the limitation as if written in the
       body of this License.

       9. The Free Software Foundation may publish revised and/or
       new versions of the General Public License from time to
       time.  Such new versions will be similar in spirit to the
       present version, but may differ in detail to address new
       problems or concerns.

       Each version is given a distinguishing version number.  If
       the Program specifies a version number of this License
       which applies to it and "any later version", you have the
       option of following the terms and conditions either of
       that version or of any later version published by the Free
       Software Foundation.  If the Program does not specify a
       version number of this License, you may choose any version
       ever published by the Free Software Foundation.

       10. If you wish to incorporate parts of the Program into
       other free programs whose distribution conditions are
       different, write to the author to ask for permission.  For
       software which is copyrighted by the Free Software
       Foundation, write to the Free Software Foundation; we
       sometimes make exceptions for this.  Our decision will be
       guided by the two goals of preserving the free status of
       all derivatives of our free software and of promoting the
       sharing and reuse of software generally.

                              NO WARRANTY

       11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE
       IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
       APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING
       THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
       PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
       EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
       PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
       PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
       PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
       NECESSARY SERVICING, REPAIR OR CORRECTION.

       12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
       AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY
       OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM
       AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
       INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
       CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
       TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
       DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED
       BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO
       OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
       OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
       DAMAGES.

                      END OF TERMS AND CONDITIONS

































































        Appendix: How to Apply These Terms to Your New Programs

       If you develop a new program, and you want it to be of the
       greatest possible use to the public, the best way to
       achieve this is to make it free software which everyone
       can redistribute and change under these terms.

       To do so, attach the following notices to the program.  It
       is safest to attach them to the start of each source file
       to most effectively convey the exclusion of warranty; and
       each file should have at least the "copyright" line and a
       pointer to where the full notice is found.

           < one line to give the program's name and a brief idea
           of what it does.  >
           Copyright (C) 19yy < name of author >

           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 2 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, write
           to the Free Software Foundation, Inc., 59 Temple
           Place, Suite 330, Boston, MA 02111, USA.

       Also add information on how to contact you by electronic
       and paper mail.

       If the program is interactive, make it output a short
       notice like this when it starts in an interactive mode:

           Gnomovision version 69, Copyright (C) 19yy name of
           author
           Gnomovision comes with ABSOLUTELY NO WARRANTY; for
           details type `show w'.  This is free software, and you
           are welcome to redistribute it under certain
           conditions; type `show c' for details.

       The hypothetical commands `show w' and `show c' should
       show the appropriate parts of the General Public License.
       Of course, the commands you use may be called something
       other than `show w' and `show c'; they could even be
       mouse-clicks or menu items--whatever suits your program.















       You should also get your employer (if you work as a
       programmer) or your school, if any, to sign a "copyright
       disclaimer" for the program, if necessary.  Here is a
       sample; alter the names:

           Yoyodyne, Inc., hereby disclaims all copyright
           interest in the program `Gnomovision' (which makes
           passes at compilers) written by James Hacker.

           < signature of Ty Coon, > 1 April 1989
           Ty Coon, President of Vice

       This General Public License does not permit incorporating
       your program into proprietary programs.  If your program
       is a subroutine library, you may consider it more useful
       to permit linking proprietary applications with the
       library.  If this is what you want to do, use the GNU
       Library General Public License instead of this License.












































GNU                            GPL                             36





fmerge(1)                                               fmerge(1)


fNNmAAeMMrEEge(1)                                               fmerge(1)
       fmerge - merge files

SSYYNNOOPPSSIISS
       ffmmeerrggee [ _o_p_t_i_o_n...  ] _b_a_s_e_f_i_l_e _f_i_l_e_A _f_i_l_e_B

       ffmmeerrggee --HHeellpp

       ffmmeerrggee --VVEERRSSiioonn

DDEESSCCRRIIPPTTIIOONN
       The _f_m_e_r_g_e program is used to compare the changes between
       two different descendants of a base file, and creates an
       output file which contains both sets of changes.  This is
       useful when two users both take the same version of a file
       and make independent edits to it, and then later want to
       create a file which contains both sets of edits.  In such
       a use, the original file that both sets of edits is
       derived from is called the _b_a_s_e _f_i_l_e.  The two files
       containing the edits are called _f_i_l_e _A and _f_i_l_e _B.

       The command:
              fmerge basefile fileA fileB -o outputfile
       produces the output file which contains the edits
       contained in _f_i_l_e _A and _f_i_l_e _B, based on the _b_a_s_e _f_i_l_e _.
       If the --OOuuttppuutt option was not used, or if no outputfile is
       specified, then the merged lines are typed to the standard
       output.  The order of specifying _f_i_l_e _A _a_n_d _f_i_l_e _B is
       usually unimportant.

       The _f_m_e_r_g_e program can also be used to remove earlier
       edits made to a module.  To do this, make the version
       containing the edits you want to delete be the basefile.
       Make the version previous to the edit you want deleted be
       file A.  Finally, make the most recent version of the file
       which contains the other edits (including the one you want
       deleted) be file B.  Then the result of merging will be
       the newest version of the module minus the changes made by
       the edit you wanted removed.  For example, if three
       successive versions of some module have the names _e_d_i_t_1_0,
       _e_d_i_t_1_1 and _e_d_i_t_1_2, and you want the changes done by _e_d_i_t_1_1
       to be undone, but still want the changes done by _e_d_i_t_1_2,
       then you use the command:
              fmerge edit11 edit10 edit12 -o outputfile

       While merging the two sets of edits, fmerge may discover
       conflicts.  A conflict occurs when the same line of the
       base file is changed by both of the two sets of edits.
       The change can be due to new lines being inserted, lines
       being deleted, or both.  When conflicts occur, the output
       file contains conflict identification lines, which are
       lines containing the string _'_/_-_/_-_/_-_/_'.  These lines
       indicate the region where the two sets of edits are
       incompatible.  You must then edit the output file and
       remove these lines, and in addition correct the conflicts
       manually in order to produce the correct result.

OOPPTTIIOONNSS
       The following options are understood:

       --CCoonnfflliiccttss [ _c_o_n_f_l_i_c_t_f_i_l_e ]
               Since conflicts due to deletions are invisible in
               the output file, and inserts do not specify which
               of the two edits inserted the lines, there is an
               alternative output format from the _f_m_e_r_g_e program.
               This output format describes what happens to each
               line of the base file, so that conflicts are
               easier to detect and fix.  The command:
                      fmerge basefile fileA fileB -c conflictfile
               produces the file describing the results of the
               merge in detail.  If the --CCoonnfflliiccttss option is
               specified without any conflictfile name, then the
               conflicts are send to the standard output.

               If there are conflicts, and the --CCoonnfflliiccttss options
               is not specified, the _f_m_e_r_g_e program will exit
               with a status of 1.

               The conflict file contains lines which contain
               three characters and then some text.  The first
               three characters describe what is happening to the
               base file at that point.  These characters are the
               following:

                      IA      This line was inserted by file A.

                      DA      This line was deleted by file A.

                      IB      This line was inserted by file B.

                      DB      This line was deleted by file B.

                      <blanks>
                              This line is unchanged.

                      X       This is a conflict identification
                              line.

                      U       There are unspecified unchanged
                              lines here.

               Each set of conflicts is flagged by three
               identification lines.  The first line indicates
               the beginning of the conflict, and specifies the
               line numbers for the base file and two divergent
               files.  The second conflict identification line
               separates lines changed by file A from lines
               changed by file B.  The third conflict
               identification indicates the end of the conflict.

               You can edit this conflict file to remove the
               conflicts.  This involves deleting the conflict
               identification lines, and changing the conflicting
               lines as necessary to fix the conflict.  While
               doing this, remember to leave three blank
               characters at the front of any new lines you
               insert while correcting the conflicts.  When you
               are done, there should be no lines which begin
               with an 'X' in the file.  All other lines can
               remain.  Then you can use the command:
                      fmerge conflictfile -o outputfile
               to create the new output file which has the
               desired data.  Once again, if no --OOuuttppuutt option or
               outputfile is used, the output is send to the
               standard output.

       --UUnncchhaannggeedd _n_u_m_b_e_r
               Besides physical conflicts, there can be logical
               conflicts.  These are changes made to different
               lines in the base file such that the program is no
               longer correct.  Such conflicts cannot be detected
               by a program, and so these must be checked
               manually.  In order to make this process easier,
               the --UUnncchhaannggeedd option can be used to reduce the
               size of the conflict file to only include regions
               near changed lines.  This file can then be
               examined in order to detect possible logical
               conflicts.  As an example, the command:
                      fmerge basefile fileA fileB -c -u 3
               will send to the standard output all changes made
               by either sets of edits, with only three unchanged
               lines surrounding each edit.

               When using the --UUnncchhaannggeedd option, the conflict
               file will contain lines starting with 'U'.  These
               represent unchanged lines, and the number
               following the letter is the number of unchanged
               lines.  The resulting conflict file cannot be read
               to produce an output file because of the missing
               lines.  If this is attempted, an error will be
               generated.

               It is possible to use both --OOuuttppuutt and --CCoonnfflliiccttss
               in the same command.  Thus you can produce the
               output file which you hope is correct, and also
               produce the conflict file which you can use to
               check for logical conflicts.

       --VVeerrbboossee [ _n_u_m_b_e_r ]
               This option can be specified with any other
               action, and outputs status information about the
               progress of the action.  This is useful for
               debugging of problems, or just for amusement when
               the system is slow or a large file is being
               processed.  It accepts a numeric argument to
               indicate the verbosity for output.  The levels are
               as follows:

               0   No output at all (except for errors).

               1   Single-line output describing action
                   (default).

               2   Detailed status as action proceeds.

       --FFaaiilluurreess _n_u_m_b_e_r
               This option restricts the number of physical
               conflicts that are allowed before failing.  This
               is used if you are not interested in the results
               if there are too many conflicts.

       --HHeellpp
               Give some help on how to use the _f_m_e_r_g_e program.

       --IIggnnoorree
               Ignore conflicts.

       --VVEERRSSiioonn
               Show what version of _f_m_e_r_g_e is running.

       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 --HHeellpp 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 _f_m_e_r_g_e are long, this means ignoring the
       extra leading '-'.  The "----_o_p_t_i_o_n==_v_a_l_u_e" convention is
       also understood.

FFIILLEE NNAAMMEE EEXXPPAANNSSIIOONN
       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 _._F_O_O
       has the value _t_h_i_s_._i_s_._a_._l_o_n_g_._n_a_m_e, then the command
              fmerge -o .FOO
       is actually equivilant to the command
              fmerge -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:
              fmerge -o ./.FOO

BBIINNAARRYY FFIILLEESS
       In general, fmerge can handle all text files you throw at
       it, even international text with unusual encodings.
       However, fmerge is _u_n_a_b_l_e to cope elegantly with files
       which contain the NUL character.

       The _f_c_o_m_p(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 _f_m_e_r_g_e(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 _f_h_i_s_t(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 ----BBIINNaarryy for files which absolutely must contain NUL
       characters.

EEXXIITT SSTTAATTUUSS
       The _f_m_e_r_g_e program will exit with a status of 1 on any
       error.  The _f_m_e_r_g_e program will only exit with a status of
       0 if there are no errors.

RREEFFEERREENNCCEESS
       This program is based on the algorithm in
              _A_n _O_(_N_D_) _D_i_f_f_e_r_e_n_c_e _A_l_g_o_r_i_t_h_m _a_n_d _I_t_s _V_a_r_i_a_t_i_o_n_s,
              Eugene W. Myers, TR 85-6, 10-April-1985, Department
              of Computer Science, The University of Arizona,
              Tuscon, Arizona 85721.
       See also:
              _A _F_i_l_e _C_o_m_p_a_r_i_s_o_n _P_r_o_g_r_a_m, Webb Miller and Eugene
              W. Myers, Software Practice and Experience, Volume
              15, No. 11, November 1985.

CCOOPPYYRRIIGGHHTT
       fmerge version 1.8.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997,
       1998, 1999, 2000, 2001 Peter Miller; All rights reserved.

       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 2 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, write to the Free
       Software Foundation, Inc., 59 Temple Place, Suite 330,
       Boston, MA 02111, USA.

AAUUTTHHOORRSS
       Peter Miller       Web:   http://www.canb.auug.org.au/~millerp
       /\/\*           E-Mail:   millerp@canb.auug.org.au

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
































Table of Contents(FHist)                 Table of Contents(FHist)


         The README File  . . . . . . . . . . . . . . . . . .   1
         Release Notes  . . . . . . . . . . . . . . . . . . .   3
         How to Build the Sources . . . . . . . . . . . . . .   5
         Internationalization . . . . . . . . . . . . . . . .  10
fcomp(1) compare two files  . . . . . . . . . . . . . . . . .  13
fhist(1) record file modification history . . . . . . . . . .  17
fhist_lic(1)                                                  GNU General Public License 28
fmerge(1)                                                     merge competing file edits 37

















































Reference Manual              FHist                           iii





Permuted Index(FHist)                       Permuted Index(FHist)


Pfecrommupt(e1d) Inde1x3(FHist)         fcomp - file  Pecrommuptaerde Index(FHist)
fcomp(1)    13                               fcomp - file compare
fhist(1)    17                               fhist - file history
fcomp(1)    13                     fcomp -   file compare
fhist(1)    17                     fhist -   file history
fmerge(1)   37              fmerge - merge   files
fmerge(1)   37                               fmerge - merge files
fhist(1)    17                fhist - file   history
fmerge(1)   37                    fmerge -   merge files






















































Reference Manual              FHist                      -xxxviii






























































