TODO:

*  When running "c4 scan" when there are submit conflicts, you still get
   the message "Conflicts found - run `c4 resolve'".  It should change to
   read something like: "Conflicts found - run `c4 update' then `c4 resolve'".

*  Browse:
	New version of browse that gets information using `dirs' and `files'
	for each command, rather than getting the whole tree first.  `dirs'
	can report directories that no longer exist.  If there is a file
	what matches a directory and the file is not deleted, then assume
	that the file replaced the directory and clear the directory flag
	on out copy.

*  Ignore has a bug.  It seems that when you add the ':' option to the
   .c4 file to remove the default ignore list, it doesn't.

*  Consider adding configure (GNU).  Use it to setup things like the
   argument list processing stuff (maybe version 1.2).

*  Fix the argument list length calculation.  Perhaps use sysconf().

*  If a scan is done in a directory unknown by p4, you get the message
   "no such file(s)".   Supress it.

*  When doing that big add on the euclid tree, it seemed to add the same
   files twice.

*  Symlink handling is wrong.  File got changed to a symlink or visa versa.

*  Verify that c4 cannot overwrite an important file for any reason.

*  Add an option to disable the ignore processing (add all files).

*  A never before seen file is added to p4, but not submitted.  "p4 fstat"
   does not report a clientFile field for such a file, so c4 has no way
   of knowing if the file has already been added and adds it again.


DONE:

*  Fix up copyright messages and source file headers.
   Add a -V option to print the version.  Add a version.h.

*  Allow an environment variable to set the path name of the real p4
   client program that is to be used.  This allows a shell script to
   be used to replace p4 with c4, and other variations.

*  If -n option given, modify the output given a little, to be useful without
   a -v option.

*  Add a verbose flag, that prints progress (scan_dirs).  Move the current
   -v functionality to -D.  Move -d to -DD.

*  Put modtime back, and have it use "haveTime".  Keep "change" removed.
   Add a F_HAVEIGNORELIST to flags.  A NIL ignore list pointer could
   just mean that there is no ignore list file.

*  Ignore of a directory doesn't work.

*  Write a README.  Brief what it is, point to manual, how to build
   and install.

*  Fix c4 to use the new and improved diff -sc command in 97.3.  This
   means that I need to test the version of the server before deciding
   which diff to use.

*  Implement .c4ignore (only required if the add option is used).

*  "p4 get" poses a problem.  If the client has "noclobber", you will not
   be able to update files in the client with "p4 get".  If the client has
   "clobber", a "p4 get" may incorrectly overwrite a changed file.  In any
   case, how does one merge the depot version with a changed client file?


=============================================================================

Output from fstat:
------------------

A file that has been added but not submitted:

	... depotFile //Fun/main/y
	... action add
	... change default

A file that is up to date:

	... clientFile /wrld/sweng/home/caret/wrk/play/s
	... depotFile //Fun/main/s
	... headAction add
	... headChange 37
	... headRev 1
	... headType symlink
	... haveRev 1

A file that is in the depot but not in the client (just added by another):

	... clientFile /wrld/sweng/home/caret/wrk/play2/y
	... depotFile //Fun/main/y
	... headAction add
	... headChange 38
	... headRev 1
	... headType text

A file that is not up to date:

	... clientFile /wrld/sweng/home/caret/wrk/play2/b
	... depotFile //Fun/main/b
	... headAction edit
	... headChange 40
	... headRev 2
	... headType text
	... haveRev 1

A locally deleted file that has not been submitted:

	... clientFile /wrld/sweng/home/caret/wrk/play/y
	... depotFile //Fun/main/y
	... headAction add
	... headChange 38
	... headRev 1
	... headType text
	... haveRev 1
	... action delete
	... change default

Above from another client:

	... clientFile /wrld/sweng/home/caret/wrk/play2/y
	... depotFile //Fun/main/y
	... headAction add
	... headChange 38
	... headRev 1
	... headType text
	... otherOpen 1
	... ... otherOpen0 caret@play

A file that was deleted elseware.  Local copy was never gotten:

	... clientFile /wrld/sweng/home/caret/wrk/play2/y
	... depotFile //Fun/main/y
	... headAction delete
	... headChange 41
	... headRev 2
	... headType text

A file that has been deleted but not yet updated in this client:

	... clientFile /wrld/sweng/home/caret/wrk/play2/y
	... depotFile //Fun/main/y
	... headAction delete
	... headChange 43
	... headRev 4
	... headType text
	... haveRev 3

A file that has been deleted from the depot and the local client
	(it still has droppings, that should be ignored):

	... clientFile /wrld/sweng/home/caret/wrk/play2/y
	... depotFile //Fun/main/y
	... headAction delete
	... headChange 43
	... headRev 4
	... headType text

A file opened for edit:

	... clientFile /wrld/sweng/home/caret/wrk/play/a
	... depotFile //Fun/main/a
	... headAction edit
	... headChange 30
	... headRev 2
	... headType text
	... haveRev 2
	... action edit
	... change default