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