*************************************************************************
*				cut					*
* --------------------------------------------------------------------- *
*	The Reker version						*
*************************************************************************
*
*  The Reker version of cut - like the standard UN*X cut plus add. features.
*  Copyright (C) 2000  <Frank Reker>
*
*  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-1307  USA
*
*************************************************************************

This program is intended to substitute the GNU version of cut.
It can do everything that the GNU version can, but has a lot of 
additional features. E.g. you can specify negative fields (e.g. the 
secand last) or print the fields in reverse order.
Refer to the man page for info on the new features.

COMPILE:
-------
To compile the program call:
gcc -O3 -o fcut fcut.c
if you want to disable the long (GNU style) parameters use the
compiler switch ``-DNO_LONG_PARAM''.
Normally the program behaves different when calling it with the
name cut (then it behaves like the GNU version, refer to the man page
for more info on the default behaviour).
With the compiler switch ``-DREKER_STYLE'' this is changed, then
the program behaves like it is called with fcut (for example).
But then some (few) shell scripts might fail.

``make'' does compile the program without these defines.

``make manual'' does create the file manual.h from the nroff sources in 
fcut.1 .  Normally you don't need to call this, but if you make changes 
to fcut.1 . To do so you need groff installed on your platform.


PLATFORMS:
---------
This program is written on Linux using gcc! I have compiled it successfully
on hpux and SUN Solaris using gcc, too.
If you can or cannot compile it on any platform please let me know.
BTW. I don't care whether this program does run under M$-Windows, because
a game platform doesn't need a cut program.


INSTALL:
-------
You should install the program under /usr/bin/fcut,
and make a link /usr/bin/cut pointing to /usr/bin/fcut.
Further you should install the man page under /usr/man/man1/fcut.1.gz
and /usr/man/man1/cut.1.gz
``make install'' does all this.

DOCUMENTATION:
-------------
The primary documentation IS the man page in the nroff format,
because I don't like the texinfo!
BTW. I do like TeX, 
but I do prefer the man page style instead of the info program.
Since texinfo does not produce very nice man pages, I do write the
man pages manually.
But if you like to write a texinfo documentation for fcut feel free
to do. If you mail it to me, I will include it into the distribution.

CODING STYLE:
------------
Every one has it's one coding religion, so I do. And mine does not follow
the GNU recomandation. Actually I do like that style of coding and won't
change it (at least in my own projects); so please don't flame me if you
don't like. I appologize if it is inconvinient for you to read, but there
is a pretty good program called cindent. If you prefer, pipe the source thru
it and read it in the style you like!
BTW. I do know, that the source should be commented better, and I will do so,
when I find the time to do!

TABING STYLE:
------------
I do use a tab width of 4! If you do use XEmacs or vim the buffer is adjusted
automatically, otherwise the code does may look ugly. In that case set the
tab width manually to 4. If you know how to automate it, feel free to tell me,
then I can add it to the source.

PERFORMANCE:
-----------
Well performance is the most important criteria (after stability and security)
of a program, so I tried to make it as performant as possible.
Ater I have written the program I have tested it versus the GNU version, and
encountered, that it was much slower, than the GNU counterpart, so I improved
it a lot, but still it was slower, so I've changed the code to catch several
special cases, in which I could improve performance. Now the program is 
comparible to the GNU version, at least if you use only the features supported
by the GNU version.
If you still have ideas to improve performance, let me know!

CHANGES - BUGS:
--------------
If you like to fix a bug or make some improvement, feel free to do. If 
you mail it to me I can add it to the source. But please leave the rest
of the code in the style it is - thank you!
If you like to have some improvements (other than listed in the TODO list)
just let me know, then I can do so when I'll find the time to do.
If you encounter a bug, tell me, I will try to fix it! Please report it as
detailled as possible.
Bug reports to the documentation are welcome as well.
Please excuse if I do not respond immediatly.
If you like to mail me - here is my address:
Frank Reker <frank@reker.net>

TODO:
----
- Locales and multibyte characters should be interpreted!










