cvs-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-cvs] Changes to ccvs/src/ChangeLog [signed-commits]


From: Derek Robert Price
Subject: [Cvs-cvs] Changes to ccvs/src/ChangeLog [signed-commits]
Date: Tue, 11 Oct 2005 22:46:38 -0400

Index: ccvs/src/ChangeLog
diff -u /dev/null ccvs/src/ChangeLog:1.3303.2.1
--- /dev/null   Wed Oct 12 02:46:38 2005
+++ ccvs/src/ChangeLog  Wed Oct 12 02:46:35 2005
@@ -0,0 +1,14128 @@
+2005-10-11  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add sign.c & sign.h.
+       * client.c (sign_args_list_to_args_proc, send_signature): New
+       functions.
+       (struct send_data): Add sign mode and template.
+       (send_fileproc): Send signature.
+       (send_files): Accept sign mode and sign template.
+       * client.h (send_files): Update proto.
+       * add.c, admin.c, annotate.c, client.c, diff.c, edit.c, log.c, ls.c,
+       remove.c, status.c, tag.c, update.c, watch.c: Change all callers.
+       * commit.c (commit): Accept and handle new sign options.
+       * hash.h: Avoid double-inclusion.
+       * main.c (main): Handle new sign options.
+       * root.c (new_cvsroot_t, free_cvsroot_t, parse_cvsroot_t), sign.h
+       (cvsroot_t): Handle new sign method options.
+       * server.c (serve_signature): New stub function.
+       (requests): Add `Signature' request.
+       * sign.c, sign.h: New files.
+       * subr.c (format_cmdline): Handle NULL data.
+       * sanity.config.sh: Set $GPG.
+       * sanity.sh: Set up gpg keys for tests when $GPG is set.
+       (writeproxy*): Compensate for new server requests.
+
+2005-10-04  Derek Price  <address@hidden>
+
+       * sanity.sh (diff_u_test, diff_recursive_test): New functions.
+       (directory_cmp): Use GNU diff -ur when possible.
+       (find_tool): Catch stderr output from tests.  Count MARGINAL test
+       results and prefer tools with more PASSes.
+       (*): Replace use of cmp to $diff_u where possbile.
+
+2005-10-04  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (watch6-0): Avoid use of GNU grep -qE extensions for
+       anchored search.
+
+2005-10-04  Derek Price  <address@hidden>
+
+       * sanity.sh (find_tool): Accept tool name for error messages.  Change
+       all callers.
+
+       * run.c: Assume unistd.h.
+
+2005-10-03  Derek Price  <address@hidden>
+
+       * sanity.sh (sshstdio-6): Use diff -u instead of cmp so that errors
+       show up in the automated nightly testing emails.
+
+       * run.c (piped_child): Close original dup'd descriptors.  Add comments.
+
+       * server.c: #include "setenv.h" to eliminate a Solaris warning.
+
+2005-09-30  Larry Jones  <address@hidden>
+
+       * expand_path.c (expand_path): Fix memory leaks.
+
+2005-09-29  Mark D. Baushke  <address@hidden>
+
+       * main.c (main): Simplify commitid creation.
+
+       * main.c (main): Not all hosts support O_NOCTTY for open.
+       Try to use more random data when time() returns -1.
+       
+2005-09-29  Derek Price  <address@hidden>
+
+       * main.c (main): Check for error return from time().
+
+2005-09-29  Paul Eggert  <address@hidden>
+           Derek Price  <address@hidden>
+
+       * client.c (handle_m, handle_e): Remove incomplete workaround for
+       O_NONBLOCK problem; no longer needed because of the fix below.
+       * cvs.h (piped_child): New bool argument saying whether O_NONBLOCK
+       fix is needed.  All uses changed.
+       * rsh-client.c (start_rsh_server): We need the O_NONBLOCK fix,
+       so pass 'true' to piped_child to enable the workaround.
+       * run.c (work_around_openssh_glitch): New function.
+       (piped_child): Use it if the fix is requested.  Avoid call call to
+       vfork with undefined behavior.
+
+2005-09-29  Mark D. Baushke  <address@hidden>
+
+       * main.c (main): Rename N as COMMITID_RAW_SIZE.
+       Use base62 encoding for non-urandom case.
+
+2005-09-29  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_input), client.c (handle_m, handle_e): Use new
+       fd_select in place of select.
+
+       * subr.c: Remove select includes - the sleep functions are now in
+       lib.
+
+2005-09-28  Mark D. Baushke  <address@hidden>
+
+       * main.c (N, RANDOM_BYTES): New constants for base62 conversion.
+       (divide_by): Used in base62 conversion.
+       (convert): Ditto.
+       (main): Set global_session_id using more random data and the
+       current time in base62 if possible, otherwise fallback to the old
+       method.
+
+2005-09-25  Conrad T. Pino  <address@hidden>
+
+       * rcs.c: Use "#ifdef HAVE_FSYNC" just like every where else.
+
+2005-09-25  Conrad T. Pino  <address@hidden>
+
+       * buffer.c client.h socket-client.h:  Remove HAVE_WINSOCK_H macro &
+       change <winsock.h> to <sys/socket.h> include.
+
+       * server.c:  Remove HAVE_WINSOCK_H and <winsock.h> include.
+
+2005-09-25  Derek Price  <address@hidden>
+
+       * rcs.c (rcs_internal_unlockfile): Fsync files before renaming them.
+       Patch from Rahul Bhargava <address@hidden>.
+
+       * cvs.h, filesubr.c, main.c, server.c:
+       s/push_cvs_tmp_dir/push_cvs_temp_dir/.
+
+       * main.c (get_cvs_temp_dir): Use new get_system_temp_dir function.
+       (push_env_temp_dir): Move to...
+       * filesubr.c (push_env_temp_dir): ...here to split from Windows.
+       (get_system_temp_dir): New function.
+       * cvs.h (get_cvs_temp_dir, push_env_temp_dir): Add protos.
+
+       * buffer.c (fd_buffer_input): Fix spelling in header comment block.
+
+2005-09-24  Derek Price  <address@hidden>
+
+       * socket-client.c: Check HAVE_CONFIG_H, not HAVE_CONFIG.
+
+       * socket-client.c, socket-client.h: Minor cleanup.
+
+       * Makefile.am (cvs_SOURCES): Move socket-client.[ch] to...
+       (EXTRA_cvs_SOURCES): ...here to avoid compiling them.
+       * socket-client.c (init_sockaddr), socket-client.h (init_sockaddr):
+       Move to...
+       * client.c (init_sockaddr), client.c (init_sockaddr): ...here.
+
+       * socket-client.c (socket_buffer_input): Avoid overflow problems.
+
+       * socket-client.c: General cleanup.
+
+2005-09-23  Larry Jones  <address@hidden>
+
+       * checkout.c (export_usage): Note that -r requires a tag.
+
+2005-09-22  Derek Price  <address@hidden>
+
+       * classify.c (Classify_File): Correct comment.
+
+2005-09-22  Larry Jones  <address@hidden>
+
+       * patch.c (patch_usage): Document -k option.
+
+2005-09-22  Derek Price  <address@hidden>
+
+       * classify.c (Classify_File): If a file had a conflict and the
+       timestamp hasn't changed, it still has a conflict.  Add comment about
+       how T_MODIFIED could later turn out to have conflict markers and why
+       it should not be checked in this function.
+       * client.c (send_fileproc): Don't send contents for files known to have
+       conflicts unless this is for `cvs diff'.
+       * commit.c (check_fileproc): T_CONFLICT should be handled like
+       T_MODIFIED, since force could be requested.  Simplify logic since
+       T_CONFLICT can now be trusted.
+       * rcs.c (RCS_Checkout): Comment noexec behavior in header block.
+       * server.c (serve_unchanged, serve_is_modified): Handle conflicts.
+       * status.c (status_fileproc): Trust T_CONFLICT to simplify.
+       * subr.c (file_has_conflict): Removed.
+       * subr.h (file_has_conflict): Remove proto.
+       * update.c (update_fileproc): Trust T_CONFLICT.
+       (RegisterMerge): New function factored from...
+       (merge_file, join_file): ...these two functions.
+       * vers_ts.c (time_stamp_server): Handle = conflict timestamps in server
+       entdata.
+       * sanity.sh (files-12): Account for slight behavior improvement.
+       (status, conflicts, mwrap): Account for corrected behavior.
+       (join-readonly-conflict-10): Correct comment.
+       (binfiles-con1b): New test for correct behavior.
+
+       * classify.c (Classify_File): Consolidate redundant conditionals.
+
+2005-09-21  Derek Price  <address@hidden>
+
+       * entries.c: Remove obsolete comment.
+
+2005-09-20  Derek Price  <address@hidden>
+
+       * myndbm.c: #include getdelim.h for Windows.
+
+       * main.c: #include setenv.h for Windows.
+
+2005-09-19  Derek Price  <address@hidden>
+
+       * sanity.sh (modules5-8): Rename...
+       (modules5-8r): ...to this and comment Mac OS X failure.
+       Comment Solaris 9 failure below with a `FIXME?' tag.
+
+       * sanity.sh: Remove previous hack in favor of setting TESTDIR on
+       Solaris (and Mac OS X) until problem is solved correctly.
+
+2005-09-15  Derek Price  <address@hidden>
+
+       * sanity.sh: Use /bin/pwd to verify current dir since Solaris 9 is
+       sometimes resolving symlinked paths.
+
+2005-09-14  Derek Price  <address@hidden>
+
+       * edit.c (edit_usage, unedit_usage, editors_usage), watch.c
+       (watch_usage, watchers_usage): Add quotes and reword for clarity and
+       consistency.
+
+       * edit.c (edit_usage): Add missing syntax.  Reword description for
+       clarity.  Mention default behavior.
+
+2005-09-13  Derek Price  <address@hidden>
+
+       * sanity.sh ($anyusername): Reduce charset to that allowed on Linux.
+
+       * sanity.sh ($anyusername): Make more robust and expand comments.
+       Reported by Mark D. Baushke <address@hidden>.
+
+       * sanity.sh: Split $username into $username & $username8.  Rename
+       $author as $anyusername.
+
+2005-09-12  Derek Price  <address@hidden>
+
+       * sanity.sh (username): Cut $username down to 8 characters when longer,
+       since that is all that appears in output.
+
+2005-09-11  Derek Price  <address@hidden>
+
+       [bug #14504]
+       * main.c (main): Set server_hostname before it is used by
+       gserver_authenticate_connection.
+       (Report from Serguei E. Leontiev <address@hidden>.)
+
+2005-09-08  Larry Jones  <address@hidden>
+
+       * server.c (parseServerOptions): getopt() returns int, not char.
+
+2005-09-07  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_parse): Minor reformatting.
+
+       Close <http://savannah.nongnu.org/bugs/?func=detailitem&item_id=14462>.
+       * rcs.c (RCS_parse): Free variable *after* using it for the last time.
+
+2005-09-06  Derek Price  <address@hidden>
+
+       * sanity.sh (tempfile): All CVS temp files start with "cvs".
+
+       * sanity.sh (tempfile): New var.
+       (tempname): Set to $TMPDIR/$tempfile after $TMPDIR is set.
+       (info): s#$TMPDIR/##.
+
+       * rcs.c (RCS_putdtree): Remove unused variable.
+
+2005-09-06  Mark D. Baushke  <address@hidden>
+
+       Close <https://savannah.nongnu.org/bugs/?func=detailitem&item_id=14435>.
+       * rcs.c (RCS_putdtree): Avoid stack overflow which may be
+       possible with excessive recursive calls to RCS_putdtree().
+       (Patch from Serg Masyutin.)
+
+2005-09-06  Derek Price  <address@hidden>
+
+       Close <http://savannah.nongnu.org/bugs/?func=detailitem&item_id=14448>.
+       * kerberos-client.c (start_kerberos4_server): Pass new root arg to
+       make_bufs_from_fds.
+       (Patch from <Manuel.Guijarro.AT.cern.ch>.)
+
+       * server.c: Reorganize includes slightly and alphabetize sections.
+
+       * server.c: #include canon-host.h.
+       (gserver_authenticate_connection): Print out canon-host errors.
+       * subr.c: #include canon-host.h.
+       (isThisHost): Print out canon-host errors.
+
+       * parseinfo.c (parse_config): Don't check hostname without client
+       or server support.
+
+       * main.c (main): Set cvs_cmd_name before calling parseServerOptions.
+
+2005-09-05  Derek Price  <address@hidden>
+
+       * cvs.h (Tmpdir): Remove global decl.
+       (get_cvs_tmp_dir, push_env_tmp_dir): New protos.
+       * filesubr.c (cvs_temp_file): Use get_cvs_tmp_dir.
+       * main.c (Tmpdir): Remove global.
+       (tmpdir_cmdline, tmpdir_env): New globals.
+       (get_cvs_tmp_dir, push_env_tmp_dir): New functions.
+       (main): Discard most tmpdir overhead in favor of new globals and
+       functions.
+       * parseinfo.c (parse_config): Parse TmpDir.
+       * sanity.sh (config4): New tests.
+       * server.c (serve_root): Set env TMPDIR after parsing config.  Create
+       tmpdir here instead of...
+       (serve_co, server): ...either of thse locations.
+       (server_cleanup): Use new function in favor of obsolete Tmpdir.
+
+       * sanity.sh (config2): Don't overwrite potentially significant config.
+
+       * sanity.sh (info): Use $tempfile instead of reproducing the regex.
+
+       * sanity.sh (info): Accept `.' in temp file names.
+
+       * main (main): Set the actual PID, not a pointer to a string.
+
+2005-09-04  Derek Price  <address@hidden>
+
+       * sanity.sh (config3): Generalize.
+
+       * main.c (main), server.c (serve_root, switch_to_user): Replace putenv
+       with GNULIB setenv.
+       * sanity.config.sh.in (HAVE_PUTENV): Remove.
+       * sanity.sh (env): Remove reference to $HAVE_PUTENV.
+
+       * sanity.sh (tests): Add config2 & config3.
+
+       * server.c (isSamePath, isThisHost): Move to...
+       * subr.c (isSamePath, isThisHost): ...here.
+       * subr.h (isSamePath, isThisHost): Add protos.
+       * parseinfo.c (parse_config): Handle [rootspec] syntax.
+       * main.c (main): Always set server_hostname.
+       * sanity.sh (config3): New tests for same.
+
+       * server.c (gserver_authenticate_connection): Output hostname in
+       error message.
+
+       * server.c (isThisHost): Fix typo.
+
+       * server.c (isThisHost, gserver_authenticate_connection): Simplify
+       using canon_host().
+
+       * root.c (free_cvsroot_t): Update header comment.
+
+       * root.c (new_cvsroot_t): directory is not client-specific.
+       (free_cvsroot_t): Declare static.
+       * root.h (free_cvsroot_t): Remove proto.
+       * server.c (server_init): Don't free cvsroot_t when finished with it.
+
+2005-09-03  Derek Price  <address@hidden>
+
+       * root.h (cvsroot_t->isremote): Update comment.
+
+       * history.c (read_hrecs_file): Suppress signed/unsigned char warning.
+
+       * root.h (cvsroot_t->isremote): Declare bool.
+       * root.c (new_cvsroot_t): Initialize isremote to false instead of 0.
+
+       * add.c (add_usage): Standardize usage message somewhat.
+
+2005-09-02  Larry Jones  <address@hidden>
+
+       * commit.c (checkaddfile): Improve error messages for lock_RCS failure.
+       * release.c (release): Improve error message for pclose failure.
+
+       * root.h (struct cvsroot_s): Always declare isremote to simplify
+       other code.  Simplify referencing code.
+       * root.c (new_cvsroot_t): Always initialize isremote.
+       * server.h: Always declare server_active to simplify other code.
+       Simplify referencing code.
+       * server.c: Always define server_active.
+
+2005-09-02  Larry Jones  <address@hidden>
+
+       * parseinfo.c (parse_config): Variable declarations must precede
+       executable code for pre-C99 compilers.  Pass correct line number
+       variable to expand_path.
+
+2005-09-01  Derek Price  <address@hidden>
+
+       * recurse.c: Update bug report email address.
+
+2005-08-31  Derek Price  <address@hidden>
+
+       * cvs.h (expand_path): Update proto.
+       * expand_path.c (expand_variable): Accept and use cvsroot arg inplace
+       of global.
+       (expand_path): Accept and pass through cvsroot arg.
+       * main.c (main): Prescan args for config path before config options are
+       used.  Pass config path on as needed.  Update comment. 
+       * modules.c (do_module): Update expand_path call.
+       * parseinfo.ci (Parse_Info): Ditto.
+       (allowed_config_prefixes): New global.
+       (parse_config): Accept configPath arg, update expand_path calls, and
+       expand LockDir path.
+       * parseinfo.h (parse_config): Update proto.
+       * root.c (root_allow_add, get_root_allow_config): Accept new configPath
+       arg and pass through to parse_config.
+       * root.h (root_allow_add, get_root_allow_config): Update protos.
+       * server.c (gConfigPath, server_usage): New globals.
+       (parseServerOptions): New function.
+       (server): Use new usage var.
+       (pserver_authenticate_connection): Update get_root_allow_config call.
+       * server.h (parseServerOptions): New proto.
+       * wrapper.c (wrap_add): Update expand_path calls.
+       * sanity.sh (server): New tests for setting config file path.
+
+2005-08-31  Derek Price  <address@hidden>
+
+       * sanity.sh (close-stdout): Remove archive dir when done.
+
+2005-08-31  Larry Jones  <address@hidden>
+
+       * import.c (import_descend): Lock repository directory during import.
+
+2005-08-31  Derek Price  <address@hidden>
+
+       * server.c (isSamePath): Compare args rather than assuming values.
+
+2005-08-29  Derek Price  <address@hidden>
+
+       Add %{sV} format string to verifymsg script.
+       * logmsg.c (do_verify): Accept change list arg, pass through to...
+       (verifymsg_proc): ...here, to pass through to format_cmdline.
+       * commit.c (commit_fileproc, commit_direntproc), import.c (update):
+       Update all callers of do_verify.
+       * cvs.h (do_verify): Update proto.
+       * sanity.sh (info): Test new verifymsg format strings.
+
+2005-08-09  Derek Price  <address@hidden>
+
+       * sanity.sh: Remove debugging echo.
+       (watch6, watch6-0): Clean up properly.
+
+2005-08-03  Jim Hyslop <address@hidden>
+
+       * edit.c, watch.c, watch.h, sanity.sh: fixed problems with watch not
+       setting default attributes, when directory specified.
+
+2005-07-20  Derek Price  <address@hidden>
+
+       * main.c: s/cvshome.org/nongnu.org.etc.../.
+
+2005-07-12  Derek Price  <address@hidden>
+
+       * buffer.c, buffer.h, client.h, expand_path.c, history.c, myndbm.h,
+       release.c: Add copyright notices.
+
+2005-07-12  Derek Price  <address@hidden>
+
+       * client.c: Update fwrite usage to use size & count in the standard
+       order.
+
+2005-07-11  Derek Price  <address@hidden>
+
+       * buffer.c, buffer.h, client.h, expand_path.c, history.c, myndbm.h,
+       release.c: Update license notices.
+
+2005-06-28  Derek Price  <address@hidden>
+
+       * server.c (serve_co): Remove obsolete support for Repository request.
+
+2005-06-10  Derek Price  <address@hidden>
+
+       * filesubr.c, ignore.c, import.c, vers_ts.c: Include "lstat.h".
+
+2005-06-10  Derek Price  <address@hidden>
+
+       * logmsg.c (logmsg_list_to_args_proc): Add format character for
+       destination tag.
+       (Original patch from Todd Vierling <address@hidden>).
+
+       * tag.c (pretag_list_to_args_proc): Likewise.
+       (check_fileproc): Set destination tag name.
+       (tag_delproc): Delete destination tag name.
+       * sanity.sh (info, taginfo): Test new format strings.
+
+2005-06-08  Derek Price  <address@hidden>
+
+       * parseinfo.c: Restore comparison to NULL in assignment within
+       conditional to placate non-GNU compilers.  Eliminate assignments in
+       conditionals where possible by GNU coding standards.  Eliminate other
+       comparisons to NULL where possible.
+       (Parse_Info): Make int a true bool.
+
+2005-06-03  Derek Price  <address@hidden>
+
+       * client.c (force_gzip): New static global.
+       (handle_force_gzip): New function.
+       (responses): Add `Force-gzip'.
+       (start_server): Turn on encryption and compression before potentially
+       sending other rooted requests.  Turn on compression when requested by
+       the user or the server.
+       * main.c (opt_usage):  Note that -z<level> *requests* compression
+       <level> from the server.
+       * parseinfo.c (new_config):  Initialize MaxCompressionLevel.
+       (parse_config): Parse MinCompressionLevel & MaxCompressionLevel.
+       * parseinfo.h (struct config): Add MinCompressionLevel &
+       MaxCompressionLevel.
+       * server.c (pending_warning_text):  New static global.
+       (print_pending_error): Print pending warnings too.
+       (warning_pending): New macro.
+       (alloc_pending_internal): New function with much content...
+       (alloc_pending): ...previously from here.
+       (alloc_pending_warning): New function.
+       (server_root, serve_gzip_contents, gzip_stream): Force gzip_level into
+       configured restrictions.
+       (serve_command_prep): Print pending errors.
+       (requests): Make `Gzip-stream', `gzip-file-contents',
+       `Kerberos-encrypt', `Gssapi-encrypt', & `Gssapi-authenticate' requests
+       rootless to allow them before compression starts.
+       (serve_valid_requests): Send `Force-gzip' response when needed.
+       (server): Abort if a rootless compression request forced compression
+       outside restricted levels.
+       * zlib.c (struct compress_buffer, compress_buffer_initialize): Store
+       compression level.
+       (compress_buffer_output): Reset compression level when global
+       gzip_level has changed.
+       * sanity.sh (config2): New tests for compression restrictions.
+
+2005-06-03  Derek Price  <address@hidden>
+
+       * zlib.c (compress_buffer_input): Update comment.
+
+2005-06-03  Derek Price  <address@hidden>
+
+       * error.c (error): Correct spelling and grammar in comment.
+
+2005-06-03  Derek Price  <address@hidden>
+
+       * modules.c (my_module), wrappers.c (wrap_add): Use new expand_path
+       API.
+
+2005-06-03  Derek Price  <address@hidden>
+
+       * cvs.h (expand_path): Rearrange args and use bool for formatsafe flag.
+       * expand_path.c: Globally: Remove init of globals to NULL by C89,
+       reformat to CVS conventions, remove unnecessary comparisons to NULL and
+       0, & remove unnecessary typecasts.
+       (expand_variable): Remove proto and move function above first use.
+       Make return value const.
+       (expand_path): Don't refer to var when contents are known.  Rearrange
+       args per cvs.h changes.  Improve header comment block.
+       * parseinfo.c (Parse_Info): Use new expand_path API.
+
+2005-06-02  Derek Price  <address@hidden>
+
+       * client.c: Don't set NULL for globals by C89.  Globally remove
+       comparisons to NULL or replace with !.  Similarly remove or replace
+       comparisons of strcmp and strncmp return value to 0.  Remove some
+       unneeded braces around single-element blocks.
+       (handle_*): Remove unecessary protos.
+       (handle_notified, notified_a_file): Move up before first use.
+
+2005-06-02  Derek Price  <address@hidden>
+
+       * sanity.sh (config): Simplify cleanup.
+
+2005-06-02  Derek Price  <address@hidden>
+
+       * zlib.c (compress_buffer_input): Don't request more bytes from the
+       underlying buffer than asked for.
+       (compress_buffer_shutdown_input): Don't attempt to read EOF from the
+       client during shutdown.  It might never be sent.
+       * sanity.sh (abspath2): Test for this.
+
+2005-05-31  Derek Price  <address@hidden>
+
+       * rcscmds.c (call_diff_argc_allocated): Rename to...
+       (call_diff_arg_allocated): ...to match similar usage in other files.
+
+2005-05-31  Derek Price  <address@hidden>
+       for Alexander Taler <address@hidden>
+
+       * rcscmds.c: Change type of call_diff_argc_allocated from int to
+       size_t, to match the prototype of run_add_arg_p().  This fixes a
+       bus error in OpenBSD 3.6 sparc64.
+
+2005-05-27  Derek Price  <address@hidden>
+
+       * client.c (send_arg): Make arg const.  Remove unnecessary copy to
+       buffer.
+       (send_option_string): Rename to...
+       (send_options): ...this and accept argc/argv in place of string.
+       * client.h: Update protos to match the changes to client.c.
+       * cvs.h (RCS_exec_rcsdiff, diff_exec): Update protos.
+       (run_add_arg_p, run_arg_free_p): New protos.
+       * diff.c (opts, opts_allocated): Replace with...
+       (diff_argv, diff_argc, diff_arg_allocated): ...these.
+       (add_diff_args): New convenience function.
+       (diff): Use new constructs and APIs.
+       * patch.c (patch_fileproc, RCS_checkin, RCS_delete_revs), rcscmds.c
+       (call_diff_add_arg, call_diff_setup, RCS_merge, RCS_exec_rcsdiff,
+       diff_exec, RCS_output_diff_options), update.c (patch_file): Use new
+       APIs.
+       * run.c (run_add_arg_p, run_arg_free_p): New functions.
+       (run_argc_allocated): Make size_t.
+       (run_setup, run_add_arg): Use new functions.
+       * sanity.sh: Accomodate above changes.
+       (rcslib-diffrgx-3): Slip in test for space splitting.
+
+2005-05-26  Derek Price  <address@hidden>
+
+       * subr.c (isabsolute), subr.h (isabsolute): Remove this function.
+       * root.c: Likewise, plus some reformatting.
+       * checkout.c, client.c, find_names.c, import.c, modules.c, parseinfo.c,
+       repos.c, root.c, server.c, subr.c: s/isabsolute/ISABSOLUTE/.
+
+2005-05-26  Derek Price  <address@hidden>
+
+       * cvs.h: Move "system.h" include before GNULIB includes.  Move some
+       GNULIB includes from "system.h".
+
+2005-05-26  Conrad T. Pino <address@hidden>
+
+       * buffer.c, buffer.h: Add & use typedefs for function pointer arguments
+       and struct buffer function pointers.  New typedefs are useful in casts.
+       * socket-client.c: Function pointers passed to buf_initialize use size_t
+       not int arguments.  buf_initialize warnings are gone from Windows build.
+
+2005-05-24  Derek Price  <address@hidden>
+
+       * client.c, entries.c, filesubr.c, hardlink.c, ignore.c, import.c,
+       lock.c, logmsg.c, mkmodules.c, rcs.c, rcscmds.c, server.c, subr.c,
+       update.c, vers_ts.c: s/CVS_STAT/stat/ & s/CVS_LSTAT/lstat/.
+
+2005-05-23  Derek Price  <address@hidden>
+
+       * filesubr.c (xresolvepath): Move to...
+       * subr.c (xcanonicalize_file_name): ...here and rename.  Use new
+       GNULIB canonicalize module.
+       * cvs.h (xresolvepath): Move proto...
+       * subr.h (xcanonicalize_file_name): ...here.
+       * checkout.c (safe_location), server.c (isSamePath): Use new function
+       name.
+
+2005-05-23  Derek Price  <address@hidden>
+
+       * sanity.sh (rcslib-symlink-10): Accept empty result due to broken glob
+       in glibc 2.3.5.
+
+2005-05-18  Derek Price  <address@hidden>
+
+       * sanity.sh (config-9): Split to local/remote tests to avoid unportable
+       expr characters.
+
+2005-05-17  Derek Price  <address@hidden>
+
+       * sanity.sh: Use a predictable umask.
+
+2005-05-13  Derek Price  <address@hidden>
+
+       * login.c (password_entry_parseline): Placate gcc -Wall.
+
+2005-05-11  Derek Price  <address@hidden>
+
+       * cvs.h (find_files): New proto.
+       * find_names.c (find_files, strip_rcsext): New functions.
+       (find_rcs): Make arg const.  Use new find_files.  Improve header
+       comment block.
+       * history.c (histfile): Remove global.
+       (get_history_log_name): New function.
+       (history, history_write): Use new functions.
+       (read_hrecs_file): New function containing most content from...
+       (read_hrecs): ...this function, which now accepts a file list and calls
+       read_hrecs_file once for each file.
+       * parseinfo.c (parse_config): Parse HistoryLogPath & HistorySearchPath.
+       * parseinfo.h (struct config): Add HistoryLogPath & HistorySearchPath.
+       * sanity.sh (basic2-64): Remove obsolete comment.
+       (config): Test new history options.
+       (crerepos): Cleanup.
+
+2005-05-09  Derek Price  <address@hidden>
+
+       * error.c (error): Avoid unportable calls to vsyslog.
+
+2005-05-09  Derek Price  <address@hidden>
+
+       * history.c (history_write): Add FIXME.
+
+2005-05-09  Derek Price  <address@hidden>
+
+       * hash.c (removenode, mergelists): New function.
+       (delnode): Use removenode.
+       * hash.h (mergelists): New proto.
+
+2005-05-04  Derek Price  <address@hidden>
+
+       * error.c (error): Avoid recursion and syslog the problem.
+
+2005-05-03  Derek Price  <address@hidden>
+
+       * tag.c (is_in_val_tags): Remove unnecessary existance checking for the
+       val-tags file and just rely on open() to create it when necessary.
+
+2005-05-03  Derek Price  <address@hidden>
+
+       * tag.c (tag_check_valid): Don't verify the_val_args.found when it is
+       not initialized.
+
+2005-05-03  Derek Price  <address@hidden>
+
+       * add.c: Update comment to include the -k option.  This resolves issue
+       #226 on cvshome.org.
+
+2005-05-02  Derek Price  <address@hidden>
+
+       Remove unnecessary level of indirection.
+       * lock.c (L_HISTORY_LOCK, L_VAL_TAGS_LOCK): Remove macros.
+       (internal_lock, internal_clear_lock): Accept lock as argument.
+       (history_lock, clear_history_lock, val_tags_lock, clear_val_tags_lock):
+       Replace old macro arg with an actual lock pointer.
+
+2005-05-02  Derek Price  <address@hidden>
+
+       * lock.c (internal_lock, internal_clear_lock): Add protos.
+       (history_lock, val_tags_lock): Return the chartered true/false status.
+
+2005-05-02  Derek Price  <address@hidden>
+
+       * cvs.h (CVSHISTLCK): Rename macro to...
+       (CVSHISTORYLCK): ...this.
+       (CVSVALTAGSLCK): New macro.
+       (val_tags_lock, clear_val_tags_lock): New functions.
+       * lock.c (global_val_tags_lock): New global.
+       (Lock_Cleanup): Clean up after val-tags lock if necessary.
+       (L_HISTORY_LOCK, L_VAL_TAGS_LOCK): New local macros.
+       (internal_lock, val_tags_lock, clear_val_tags_lock): New functions.
+       (history_lock): Use new internal function.
+       * tag.c (is_in_val_tags, add_to_val_tags): New functions using the
+       write lock for val-tags and factored from...
+       (tag_check_valid): ...this function.
+       * sanity.sh (lockfiles-22): Add val-tags lock test.
+
+2005-04-30  Mark D. Baushke  <address@hidden>
+
+       * lock.c (global_readlock, global_writelock, global_history_lock):
+       Add missing alternatives for non-LOCK_COMPATIBILITY initialization.
+
+2005-04-28  Derek Price  <address@hidden>
+
+       * cvs.h (history_lock, clear_history_lock): New protos.
+       * lock.c (struct lock): Add lockdirname.
+       (global_history_lock): New global.
+       (global_read_lock): Initialize.
+       (lock_name): Handle const args.
+       (lock_simple_remove): Factor out code in favor of clear_lock call.
+       (set_lock): Handle variable lockdirname.
+       (lock_filesdoneproc): Set new lockdirname.
+       (history_lock, clear_history_lock): New functions.
+       (clear_lock): Avoid segfault on missing lock.
+       (Lock_Cleanup): Clean up history locks when necessary.
+       * history.c (history_write): Use new lock.
+       * sanity.sh (lockfiles-20): Test new lock.
+
+2005-04-28  Derek Price  <address@hidden>
+
+       * sanity.sh (lockfiles): Port some locking tests over from 1.12.x.
+
+2005-04-28  Derek Price  <address@hidden>
+
+       * lock.c (clear_lock): Improve comment.
+
+2005-04-28  Derek Price  <address@hidden>
+
+       * lock.c (struct lock): Store lockdir name.
+       (masterlock): Remove global.
+       (remove_lock_files, clear_lock, set_lock): Update to compensate.
+
+2005-04-25  Mark D. Baushke  <address@hidden>
+
+       * server.c: Add support for <pam/pam_appl.h> to allow
+       --enable-pam to work on MacOSX 10.2 and newer.
+       (Pach from Moriyoshi Koizumi <address@hidden>.)
+
+2005-04-25  Derek Price  <address@hidden>
+
+       * mkmodules.c (mkmodules): Remove `#if 0' and reformat comment.
+
+2005-04-22  Mark D. Baushke  <address@hidden>
+
+       * expand_path.c (expand_variable): Add SESSIONID and COMMITID
+       internal variables. Both return the unique global session id of
+       the CVS process. Passing this information to administrative
+       triggers seems reasonable. (The same feature exists in CVSNT and
+       the names were chosen to be the same as the CVSNT names.)
+
+       * sanity.sh (info): Add a test for $COMMITID and $SESSIONID.
+
+2005-04-20  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (rcs4): Fix a typo.
+
+2005-04-20  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs5): Minor cosmetic change.
+
+2005-04-20  Derek Price  <address@hidden>
+
+       * sanity.sh (tests): Add rcs4.
+       (rcs5): Add comments.
+
+2005-04-20  Derek Price  <address@hidden>
+
+       * rcs.c (expand_keywords): Avoid buffer overflow.
+       (Original patch from Stewart Brodie <address@hidden>.)
+
+       * sanity.sh (rcs5): New tests for the above.
+
+2005-04-08  Derek Price  <address@hidden>
+
+       * edit.c (edit_fileproc, unedit_fileproc): s/GMT/-0000/.
+       * rcs.c (RCS_getrevtime): Ditto, & replace a sprintf into a static
+       buffer with an Xasprintf which creates a dynamic one.
+       * sanity.sh: Update tests to compensate.
+       (Original bug report from Ian Abbott <address@hidden>.)
+
+2005-03-26  Mark D. Baushke  <address@hidden>
+
+       * checkout.c (checkout_proc): Use Xasprintf/xstrdup instead of
+       xmalloc/strcpy+strcat.
+
+2005-03-22  Mark D. Baushke  <address@hidden>
+
+       * Makefile.in: Regenerated.
+
+2005-03-22  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (linevector_add): Use xnrealloc.
+       * server.c (serve_argument): Ditto.
+
+2005-03-22  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (linevector_copy): Use xtimes in argument.
+
+       * patch.c (patch): Remove dead code.
+
+       * lock.c (set_readlock_name): Use Xasprintf instead of
+       xmalloc/sprintf.
+       (lock_exists, set_promotable_lock, lock_wait): Ditto.
+       (lock_obtained, lock_dir_for_write): Ditto.
+       * log.c (rlog_proc): Ditto.
+
+       * ignore.c (ign_dir_add): Use xnrealloc.
+       * modules.c (save_d): Ditto.
+       * rcs.c (linevector_copy): Ditto.
+
+       * add.c (add): Use xstrdup instead of xmalloc/strcpy.
+       * client.c (client_process_import_file): Ditto.
+       * kerberos4-client.c (start_kerberos4_server): Ditto.
+       * logmsg.c (verifymsg_proc): Ditto.
+       * log.c (log_expand_revlist): Ditto.
+       * patch.c (patch_fileproc): Ditto.
+       * rcs.c (RCS_tag2rev, RCS_nodeisbranch, RCS_getbranch): Ditto.
+       (RCS_getdatebranch, expand_keywords, RCS_addbranch): Ditto.
+       (RCS_checkin): Ditto.
+       * remove.c (remove_fileproc): Ditto.
+
+2005-03-18  Derek Price  <address@hidden>
+
+       * server.c: Reindent pragmas.
+       (become_proxy): Add parentheses for -Wall.
+
+2005-03-18  Derek Price  <address@hidden>
+
+       * error.c (error): Simplify using vasnprintf.
+
+2005-03-17  Mark D. Baushke  <address@hidden>
+
+       * admin.c (postadmin_proc): Cast NULL when it is an argument to
+       stdarg function to ensure it is the correct type.
+       * commit.c (precommit_proc): Ditto.
+       * edit.c (notify_proc): Ditto.
+       * fileattr.c (postwatch_proc): Ditto.
+       * logmsg.c (logfile_write, verifymsg_proc): Ditto.
+       * server.c (prepost_proxy_proc): Ditto.
+       * subr.c (cmdlineescape): Ditto.
+       * tag.c (posttag_proc): Ditto.
+       (Thanks to a report from Derek Price <address@hidden>.)
+       
+2005-03-17  Derek Price  <address@hidden>
+
+       * rcs.h (RCSNode): Improve comment.
+       * rcs.c (RCS_head): Ditto, plus gratuitous reformatting.
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_deltas): Use rcs->print_path.
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * login.c (password_entry_parseline): Avoid using uninitialized
+       variable.
+       * rcs.c (RCS_deltas): Avoid buffer overflow.
+       (RCS_checkout): Avoid using uninitialized loglen.
+       * patch.c (patch_fileproc): Free original pointer, not one that may
+       have been incremented.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * commit.c (checkaddfile): Avoid dereferencing a NULL pointer in
+       response to a rare error.
+       * admin.c (admin_fileproc), log.c (log_expand_revlist), mkmodules.c
+       (checkout_file), rcs.c (RCS_getdate, RCS_deltas, RCS_findlock_or_tip,
+       RCS_tag2rev): Avoid dereferencing NULL pointer.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_reparsercsfile): Avoid memory leak.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * log.c (log_expand_revlist): Suppress message and not error handling
+       when really_quiet.
+
+2005-03-16  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (fd_buffer_shutdown): Replace (int *) 0 with NULL.
+       * server.c (do_cvs_command): Ditto.
+
+       * client.c (update_entries): Use xnmalloc.
+
+       * checkin.c (Checkin): Replace (char *) 0 with NULL.
+       * patch.c (patch_fileproc): Ditto.
+       * update.c (update_fileproc): Ditto.
+       * no_diff.c (No_Difference): Ditto.
+       * patch.c (patch_fileproc): Ditto.
+       * rcscmds.c (call_diff_setup, call_diff_add_arg): Ditto.
+
+       * update.c (join_file): Replace (RCSCHECKOUTPROC)0 with NULL.
+       * rcs.c (RCS_checkin, RCS_cmp_file, RCS_delete_revs) 
+       (RCS_delete_revs): Ditto.
+       * rcscmds.c (RCS_merge, RCS_exec_rcsdiff): Ditto.
+       
+       * annotate.c, checkin.c, classify.c, fileattr.c, find_names.c,
+       hash.c, lock.c, login.c, logmsg.c, main.c, modules.c, myndbm.c,
+       no_diff.c, patch.c, rcs.c, rcscmds.c, remove.c, server.c,
+       status.c, subr.c, tag.c, update.c, vers_ts.c: Avoid casting NULL.
+
+2005-03-17  Derek Price  <address@hidden>
+
+       * client.c (call_in_directory): Put function call after var decls.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * client.c (call_in_directory), commit.c (commit_filesdoneproc), log.c
+       (log_expand_revlist, log_version), logmsg.c (logfile_write), modules
+       (my_module), no_diff.c (No_Difference), parseinfo.c (Parse_Info), rcs.c
+       (RCS_deltas, RCS_checkin, RCS_addbranch, do_locks, do_symbols),
+       rcscmds.c (RCS_merge), root.c (parse_cvsroot, normalize_cvsroot),
+       update.c (merge_file): Verify assumptions via assertions.
+       (Thanks to (probably) incorrect reports from Alen Zukich
+       <address@hidden>.)
+
+2005-03-16  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (RCS_check_kflag): Use Xasprintf instead of
+       sprintf/xstrdup.
+
+       * mkmodules.c (checkout_file): Use Xasprintf instead of
+       xmalloc/strcpy+strcat.
+       * wrapper.c (wrap_unparse_rcs_options): Ditto.
+       (wrap_rcsoption): Ditto.
+
+       * subr.c (getcaller): Use Xasprintf instead of sprintf/xstrdup.
+
+       * history.c (history): Use Xasprintf instead of xmalloc/sprintf.
+       * lock.c (lock_name, set_lockers_name): Ditto.
+       * main.c (cmd_synonyms, main): Ditto.
+       * mkmodules.c (rename_rcsfile, init): Ditto
+       * modules.c (cat_module): Ditto.
+       * parseinfo.c (Parse_Info): Ditto.
+       * rcscmds.c (diff_exec, RCS_output_diff_options): Ditto.
+       * recurse.c (start_recursion, do_dir_proc): Ditto.
+       * remove.c (remove_fileproc): Ditto.
+       * repos.c (Name_Repository): Ditto.
+       * root.c (Name_Root, Create_Root): Ditto.
+       * status.c (status_fileproc, tag_list_proc): Ditto. 
+       * wrapper.c (wrap_setup, wrap_tocvs_process_file): Ditto.
+
+       * hash.c (sortlist): Use xnmalloc.
+       * main.c (cmd_synonyms): Ditto.
+       * server.c (cvs_pam_conv): Ditto.
+
+       * create_adm.c (Create_Admin): Clean up use of Xasprintf/xstrdup.
+       * entries.c (WriteTag, base_walk): Ditto.
+       * modules.c (my_module): Ditto.
+
+       * wrapper.c (wrap_fromcvs_process_file): Use Xasprintf instead of
+       xmalloc/sprintf and clean up control flow.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * history.c (history_write): Remove test that always evaluates to
+       false.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * server.c (become_proxy): Close pipe to primary when pipe from it
+       closes.
+
+2005-03-16  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (debug-log-nonfatal): Only set CVS_CLIENT_LOG to the
+       old value if it was previously set.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * server.c (create_adm_p, serve_entry), tag.c (rtag_proc): Avoid memory
+       leaks.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * logmsg.c (do_verify): Don't check for NULL return from xfopen().
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (debug-log-nonfatal): New test.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (writeproxy-ssh-noredirect): Don't unconditionally create
+       a primary debug log.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * cvs.h (open_file): Move proto...
+       * subr.h (xfopen): ...here and rename.
+       * filesubr.c (open_file): Move function...
+       * subr.c (xfopen): ...here, with additional commenting and minor
+       cosmetic changes.
+       * add.c, checkout.c, client.c, cvsrc.c, edit.c, entries.c, filesubr.c,
+       logmsg.c, mkmodules.c, modules,c, patch.c, root.c, subr.c:
+       s/open_file/xfopen/.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * log-buffer.c (setup_logfiles): Failure to open a debug log file
+       should be non-fatal.
+
+2005-03-16  Derek Price  <address@hidden>
+
+       * server.c (cvs_outerr): Quote error text in syslog messages.
+
+2005-03-15  Mark D. Baushke  <address@hidden>
+
+       * history.c (select_hrec): Avoid possible memory leak.
+
+2005-03-15  Derek Price  <address@hidden>
+
+       * patch.c (patch_proc): Avoid memory leak.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-12  Mark D. Baushke  <address@hidden>
+
+       * server.c (receive_partial_file): Use ssize_t to deal with < 0
+       return value from write().
+
+2005-03-12  Mark D. Baushke  <address@hidden>
+
+       * history.c (save_file): Bug fix from last change.
+
+2005-03-11  Mark D. Baushke  <address@hidden>
+
+       * update.c (get_linkinfo_proc): Use Xasprintf instead of
+       xmalloc/sprintf.  Gratuitous reformatting.
+       (update_ignproc, update_dirent_proc, checkout_file): Ditto.
+       (patch_file, merge_file, join_file): Ditto.
+       * modules.c (open_module): Ditto.
+
+       * modules (my_module): Use Xasprintf instead of xmalloc/sprintf
+       and avoid possibility of trying to free(NULL).
+
+       * subr.c (backup_file): Use Xasprintf instead of xmalloc/sprintf.
+       (cmdlinequote): Use Xasprintf instead of xmalloc/strcat+strlen.
+       * modules.c (my_module): Ditto.
+
+       * client.c (handle_module_expansion): Use xnmalloc, xnrealloc,
+       and xstrdup in place of xmalloc, xrealloc, and xmalloc/strcpy.
+       (start_server): Do not assume gzip_level precision encoding.
+       (send_modified): Do not assume 1024 bytes is sufficient for
+       a temporary filename.
+
+       * modules.c (my_module): Use xnmalloc and xnrealloc. Gratuitous
+       reformatting.
+       * subr.c (line2argv): Ditto.
+
+2005-03-11  Mark D. Baushke  <address@hidden>
+
+       * modules.c (my_module): Protect against free (NULL) code path.
+
+2005-03-11  Derek Price  <address@hidden>
+
+       * annotate.c (rannotate_proc), fileattr.c (fileattr_write), rcs.c
+       (RCS_deltas), server.c (check_repository_password), update.c (update):
+       Avoid memory leaks.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+2005-03-10  Derek Price  <address@hidden>
+
+       * diff.c (diff_fileproc): Remove unnecessary check for NULL.
+
+2005-03-10  Mark D. Baushke  <address@hidden>
+
+       * commit.c: Gratuitous reformatting.
+       * entries.c: Ditto.
+       * import.c (import, import_descend): Ditto.
+
+       * commit.c (commit): Use xnmalloc. Gratuitous reformatting.
+       * history.c (save_user, save_file, save_module, read_hrecs): Ditto.
+       * ignore.c (ign_add): Ditto.
+
+       * hardlink.c (lookup_file_by_inode): Use Xasprintf instead of
+       xmalloc/sprintf.  Gratuitous reformatting.
+       (update_hardlink_info, list_linked_files_on_disk): Ditto.
+       (find_checkedout_proc): Ditto.
+       * history.c (history, history_write, save_file): Ditto.
+       (select_hrec): Ditto. 
+       * ignore.c (ign_setup, ignore_files): Ditto.
+       * import.c (process_import_file, import_descend_dir): Ditto.
+
+       * import.c (import_descend_dir): Use Xasprintf instead of
+       xmalloc/strcpy+strcat+strcat.
+
+       * history.c (read_hrecs): Make function argument a const.
+       
+2005-03-10  Derek Price  <address@hidden>
+
+       * fileattr.c (fileattr_read): Only eat a newline when it really is a
+       newline.
+
+2005-03-10  Mark D. Baushke  <address@hidden>
+
+       * zlib.c: Include "pagealign_alloc.h".
+
+2005-03-09  Derek Price  <address@hidden>
+
+       * add.c (add, add_directory), buffer.c (allocate_buffer_datas),
+       client.c (update_entries), commit.c (checkaddfile), entries.c
+       (Entries_Open), fileattr.c (fileattr_read), ignore.c (ign_add),
+       import.c (import), main.c (main), parseinfo.c (parse_config), rcs.c
+       (RCS_reparsercsfile, RCS_getbranchpoint, RCS_checkout,
+       RCS_delete_revs, apply_rcs_changes): Avoid memory leaks.
+       (Thanks to report from Alen Zukich <address@hidden>.)
+
+       * hardlink.c, hardlink.h: Avoid compiling entire contents of these
+       files w/o preserve permissions support.
+
+2005-03-09  Mark D. Baushke  <address@hidden>
+
+       * history.c (history, save_file): Cleanup the API to match the
+       comments.
+
+2005-03-08  Derek Price  <address@hidden>
+
+       * rcs.c: Define MAP_FILE & MAP_FAILED when necessary.
+
+2005-03-08  Derek Price  <address@hidden>
+
+       * zlib.c (compress_buffer_input): Use pagealign_xalloc when allocating
+       buffer datas.
+       (compress_buffer_output, compress_buffer_flush,
+       compress_buffer_shutdown_output): Don't assume that BUFFER_DATA_SIZE is
+       a constant.
+       (Thanks to report from Larry Jones <address@hidden>.)
+
+2005-03-08  Larry Jones  <address@hidden>
+
+       * release.c (release): Remove unneeded code.
+
+2005-03-07  Conrad T. Pino  <address@hidden>
+
+       * buffer.h (buf_free_data): Compile with proxy disabled.
+       (Thanks to report from Larry Jones <address@hidden>.)
+
+2005-03-07  Mark D. Baushke  <address@hidden>
+
+       * add.c (add_directory): Xasprintf instead of xmalloc/sprintf+strcat.
+       * admin.c (arg_add): Ditto.
+       (admin_fileproc, postadmin_proc, admin_fileproc): Gratuitous
+       reformatting.
+
+       * client.c (mode_to_string): Use Xasprintf.
+       
+       * checkout.c (checkout): Xasprintf instead of xmalloc/sprintf.
+       Gratuitous reformatting.
+       * entries.c (WriteTag): Ditto
+       (subdir_record, base_walk): Ditto.
+       * fileattr.c (fileattr_read, fileattr_set, fileattr_write): Ditto.
+       * filesubr.c (deep_remove_dir, cvs_temp_file): Ditto.
+       (strcat_filename_onto_homedir): Ditto.
+       * find_names.c (Find_Names): Ditto.
+
+       * filesubr.c (expand_wild): Use xnmalloc instead of xmalloc.
+
+2005-03-07  Derek Price  <address@hidden>
+
+       * buffer.c (buf_free_data): Compile with proxy disabled.
+       (Thanks to report from Larry Jones <address@hidden>.)
+
+2005-03-07  Derek Price  <address@hidden>
+
+       * buffer.c (packetizing_buffer_input, packetizing_buffer_output): Don't
+       assume BUFFER_DATA_SIZE is a constant.
+       (Thanks to report from Larry Jones <address@hidden>.)
+
+2005-03-03  Derek Price  <address@hidden>
+
+       Use new pagealign_alloc() and pagealign_free() functions in
+       lieu of maintaining pointers for reuse.  On most systems this should be
+       faster.
+       * buffer.c: Include "pagealign_alloc.h".
+       (free_buffer_data): Remove this global.
+       (allocate_buffer_datas): Remove this function.
+       (buf_free, buf_send_output): Call buf_free_data().
+       (get_buffer_data): Use pagealign_alloc().
+       (buf_free_datas): New function.
+       (buf_send_output, buf_free_data, buf_read_file, buf_read_file_to_eof,
+       buf_read_short_line, buf_read_data, buf_copy_counted): Call
+       buf_free_datas().
+       * buffer.h: Include "getpagesize.h".
+       (BUFFER_DATA_SIZE): Default to getpagesize ();
+       * rcs.c: Lean on m4/mmap-anon.m4 to simplify mmap setup.
+
+2005-03-02  Jim Meyering  <address@hidden>
+
+       Detect and report write failure for e.g., cvs up -p FILE > /dev/full
+       * main.c: Include "closeout.h".
+       (main): Arrange to close standard output upon exit.
+       * sanity.sh (close-stdout): New test for this fix.
+
+2005-03-01  Mark D. Baushke  <address@hidden>
+
+       * checkout.c (emptydir_name): Xasprintf instead of
+       xmalloc/sprintf.
+
+       * add.c (add): Xasprintf instead of xmalloc/sprintf.
+       Gratuitous reformatting.
+       (add_directory, build_entry): Ditto.
+       * annotate.c (rannotate_proc): Ditto.
+       * checkout.c (checkout_proc): Ditto.
+       * client.c (call_in_directory): Ditto.
+       (template, send_dirent_proc): Ditto.
+       (client_process_import_file): Ditto.
+       * commit.c (check_fileproc, precommit_proc): Ditto.
+       (commit_fileproc, finaladd): Ditto.
+       (checkaddfile): Ditto.
+       * create_adm.c (Create_Admin): Ditto.
+       * edit.c (notify_do): Ditto.
+
+2005-03-01  Derek Price  <address@hidden>
+
+       * subr.c (get_date): Minor reformatting.
+
+2005-03-01  Derek Price  <address@hidden>
+
+       * subr.c (get_date): Replace obsolete timeb cruft in this stub.
+
+2005-02-28  Mark D. Baushke  <address@hidden>
+
+       * admin.c (arg_add): Use xnmalloc and xnrealloc.
+       (admin): Use xnmalloc. Minor reformatting.
+       Xasprintf instead of xmalloc/strcpy+strcat.
+       * client.c (client_expand_modules): Use xnmalloc.
+       Minor reformatting.
+       * cvsrc.c (read_cvsrc): Use xnmalloc and xnrealloc.
+       Minor reformatting.
+       * history.c (read_hrecs): Use xnrealloc. Minor reformatting.
+       * ignore.c (ign_add): Use xnrealloc. Minor reformatting.
+       * rcscmds.c (call_diff_add_arg): Use xnrealloc.
+       * wrapper.c (wrap_add_entry): Use xnrealloc. Gratuitous
+       reformatting.
+
+2005-02-28  Derek Price  <address@hidden>
+
+       * edit.c (notify_proc), logmsg.c (logfile_write): Minor reformatting.
+
+2005-02-28  Derek Price  <address@hidden>
+
+       * root.c (parse_root): Trigger a later error message rather than
+       maintaining two copies.
+
+2005-02-27  Mark D. Baushke  <address@hidden>
+
+       * client.c (connect_to_pserver): Use TRACE_FUNCTION, not 1 in
+       TRACE() calls.
+       (connect_to_pserver,send_modified): Ditto.
+       * create_adm.c (Create_Admin): Ditto.
+       * entries.c (Register, Scratch_Entry, WriteTemplate): Ditto.
+       * filesubr.c (copy_file, xchmod, rename_file): Ditto.
+       * history.c (history_write): Ditto.
+       * kerberos4-client.c (start_kerberos4_server): Ditto.
+       * no_diff.c (No_Difference): Ditto.
+       * parseinfo.c (Parse_Info): Ditto.
+       * rcs.c (RCS_checkout): Ditto.
+       * server.c (server_register): Ditto.
+       * update.c (join_file): Ditto.
+
+       * no_diff.c (No_Difference): Gratuitous reformatting.
+       * kerberos4-client.c (start_kerberos4_server): Ditto.
+
+2005-02-27  Jim Meyering  <address@hidden>
+
+       * login.c (password_entry_operation): Exit nonzero when
+       failing to close a just-appended-to .cvspass file.
+
+2005-02-26  Derek Price  <address@hidden>
+
+       * root.c: Gratuitous reformatting.
+
+2005-02-26  Mark D. Baushke  <address@hidden>
+
+       * root.c (parse_cvsroot): Handle another Bad CVSROOT.
+       * sanity.sh (parseroot-8r): Test for it.
+       (Problem report from Hiroyuki Ikezoe <address@hidden>.)
+
+2005-02-26  Derek Price  <address@hidden>
+
+       * server.c: Include netdb.h with server support.  Other reformatting.
+
+2005-02-25  Derek Price  <address@hidden>
+
+       * sanity.sh (multiroot2-9a): Correct for new TRACE message.
+
+2005-02-25  Derek Price  <address@hidden>
+
+       * cvs.h (tag_check_valid): Declare NAME arg const.
+       * tag.c (tag_check_valid): Ditto, update to account for this.
+       Xasprintf instead of xmalloc/sprintf.
+
+2005-02-25  Derek Price  <address@hidden>
+
+       * client.c (send_modified): Suppress a -Wall warning.
+
+2005-02-25  Derek Price  <address@hidden>
+
+       * cvs.h (global_session_id): New global declaration.
+       * import.c (add_rcs_file), rcs.c (RCS_checkin): Save commitid.
+       * log.c (log_version), status.c (status_fileproc): Output commitid.
+       * main.c (global_session_id): Define new global.
+       (main): Create session ID.
+       * sanity.sh: Update to compensate.
+       (Original patch from Frank Hemer <address@hidden>.)
+
+2005-02-24 Derek Price <address@hidden>
+
+       * subr.h (cvs_trace, TRACE*): Move to...
+       * server.h: ...here.
+       * subr.c: Ditto, but to...
+       * server.c: ...here, and print out 'P' instead of 'S' for traces from
+       secondary (proxy) servers.
+
+2005-02-24 Derek Price <address@hidden>
+
+       * admin.c (admin): Suppress warning with -Wall and --disable-client.
+       * server.c: Don't declare functions that won't be defined when
+       --disable-server.
+
+2005-02-24 Derek Price <address@hidden>
+
+       * sanity.sh (primary-wrapper): Rename CVS_SERVER_LOG for the primary in
+       writeproxy mode to avoid overwriting.
+
+2005-02-24 Derek Price <address@hidden>
+
+       * client.c (open_connection_to_server): Fail with an expressive error
+       message when connection is attempted via an unsupported protocol since
+       this is no longer caught in parse_root().
+       * edit.c (edit_fileproc), import.c (import): Don't verify
+       current_parsed_root->isremote without client support.
+       * parseinfo.c (parse_config): Parse PrimaryServer without proxy
+       support.  Postpone method verification until the connect phase.
+       * parseinfo.h (struct config): Always include PrimaryServer.
+       * root.c (primary_root_translate, primary_root_inverse_translate):
+       Don't declare vars without PROXY_SUPPORT when they won't be used.
+       (parse_cvsroot): Parse remote connection methods with server support
+       for PrimaryServer/Redirects.  Delay method support verification until
+       the connect phase.
+       * root.h (cvsroot_t): Include remote elements with SERVER_SUPPORT.
+       * server.c (isProxyServer): Delay method verification until the connect
+       phase.
+
+2005-02-23 Derek Price <address@hidden>
+
+       * tag.c (tag): Handle -r<tag>:<date>.
+       * sanity.sh (tagdate-13.*): New tests.
+
+2005-02-23 Derek Price <address@hidden>
+
+       * annotate.c (annotate), ls.c (ls): Handle -r<tag>:<date>.
+
+2005-02-23 Derek Price <address@hidden>
+
+       * diff.c: Some reformatting.
+       (diff): Handle -r<tag>:<date>.
+       * sanity.sh (tagdate-13b): New test.
+
+2005-02-23 Derek Price <address@hidden>
+
+       * checkout.c (checkout): Use parse_tagdate.
+       * tag.c (tag_check_valid_join): Remove this function.
+       * cvs.h (tag_check_valid_join): Ditto for the proto.
+       (parse_tagdate): New proto.
+       (Make_Date): Make arg const.
+       * main.c (Make_Date): Ditto.
+       (parse_tagdate): New function.
+       * update.c (date_rev1, date_rev2): Rename these globals...
+       (join_date1, join_date2): ...to this.
+       (update): Use parse_tagdate.
+       (do_update): Use new API.
+       * update.h (do_update): Update proto.
+       * sanity.sh: Misc reformatting.
+       (tagdate-12): This test now passes.
+       (tagdate-12b): New test.
+       (multiroot-9a): Handle new TRACE.
+
+2005-02-23 Derek Price <address@hidden>
+
+       * rsh-client.c (start_rsh_server): Update comment.  Replace
+       malloc/sprintf combo with a call to Xasprintf.
+
+2005-02-22 Derek Price <address@hidden>
+
+       * error.c (error): Handle unsigned int format char.
+       * parseinfo.c (parse_error): New function.
+       (parse_config): Keep track of line number and output it in error
+       messages.
+       * rcs.c (RCS_setlocalid): Accept file path and line number for error
+       messages.  Add header comment block.
+       * rcs.h (RCS_setlocalid): Update prototype to match.
+       * parseinfo.h (parse_error): Declare new function.
+       * sanity.sh: Accept new --noredirect argument.
+       (checklongoptarg): Accept longoptmode as an argument
+       rather than via an environment variable.
+       (notnoredirect): New function.
+       (newroot): Handle root options.
+       (keywordexpand, config): Skip in noredirect mode.  Update for new
+       config error messages.
+       (multiroot): Some reformatting.
+       (writeproxy, writeproxy-noredirect): Skip in noredirect mode.
+       (commit, writeproxy-noredirect): Quote CVSROOT arguments since they
+       might contain semicolons.
+
+2005-02-21  Mark D. Baushke  <address@hidden>
+
+       * import.c (import): Avoid using assert with side effects it may
+       be configured away using NDEBUG.
+       (Patch from Frank Hemer <address@hidden>.)
+
+2005-02-20  Mark D. Baushke  <address@hidden>
+
+       * main.c (main): Check the results from xgethostname(). Print a
+       message with the errno and use "localhost" if NULL is returned.
+
+2005-02-20 Derek Price <address@hidden>
+
+       * cvs.h (run_arg): Rename to...
+       (run_add_arg): New function.
+       * run.c (run_arg): Remove.
+       (run_add_arg): Remove static declaration.
+       (run_piped): New function.
+       * logmsg.c, modules.c: s/run_arg/run_add_arg/.
+       * release.c (release): Replace use of piped_child with a call
+       to run_piped to avoid quoting issues.
+       * sanity.sh (info-cleanup-0): Expect success.
+
+2005-02-19 Derek Price <address@hidden>
+
+       * edit.c (unedit_fileproc, mark_up_to_date): Replace xmallc/strcat
+       sequence with single call to Xasprintf.
+
+2005-02-08 Derek Price <address@hidden>
+
+       * rsh-client.c: Some reformatting.
+
+2005-02-04 Derek Price <address@hidden>
+
+       * zlib.c (compress_buffer_input): Don't return EOF when there is data
+       pending.
+
+2005-02-01 Derek Price <address@hidden>
+
+       * main.c: Update year in copyright notice to match GNU standards.
+       * sanity.sh (version-1): Update to match.
+
+2005-02-01  Larry Jones  <address@hidden>
+
+       * log.c (log_fileproc, log_expand_revlist): Add support for BASE tag.
+       * sanity.sh (log): New tests for above.
+
+2005-01-31 Derek Price <address@hidden>
+
+       * main.c: Rephrase --version message.
+       * sanity.sh (version-1): Update to match.
+
+2005-01-31 Derek Price <address@hidden>
+
+       * Makefile.am, add.c, admin.c, annotate.c, checkin.c, checkout.c,
+       classify.c, commit.c, create_adm.c, cvs.h, cvsrc.c, diff.c, entries.c,
+       find_names.c, hash.c, hash.h, history.h, import.c, lock.c, log.c,
+       login.c, logmsg.c, main.c, mkmodules.c, modules.c, myndbm.c, no_diff.c,
+       parseinfo.c, patch.c, rcs.c, rcs.h, rcscmds.c, recurse.c, remove.c,
+       repos.c, root.c, root.h, server.h, stack.c, stack.h, status.c, subr.c,
+       tag.c, update.c, vers_ts.c, version.c: Update copyright notices.
+
+2005-01-29 Derek Price <address@hidden>
+
+       * log.c (log_usage): Add note about using -S with revision info
+       supression and selection.
+       (Suggestion from Dan Peterson <address@hidden>.)
+
+2005-01-29 Derek Price <address@hidden>
+
+       * sanity.sh (writeproxy-ssh-noredirect): Remove some commented out
+       code.
+
+2005-01-25  Larry Jones  <address@hidden>
+
+       * expand_path.c (expand_path): Rewrite using offsets instead of
+       pointers to simplify and avoid reallocation bugs.
+       (Inspired by Jeremy Bopp <address@hidden>.)
+
+2005-01-20 Brian Murphy <address@hidden>
+
+       * server.c fixing the style of the pam function calls and if
+       statements
+
+2005-01-19 Brian Murphy <address@hidden>
+
+       * server.c (pam_username, pam_password) new global static
+       variables to hold the username and pasword for cvs_pam_conv.
+       (cvs_pam_conv) using pam_username and pam_password.
+       (check_pam_password) set pam_username, pam_password before
+       authentication and clear them when authentication is finished.
+       (server, switch_to_user) Check for pamh being set before using
+       pam functionality, NULL indicating that this user was authenticated
+       using the repository password file.
+
+2004-12-09 Derek Price <address@hidden>
+
+       * log-buffer.c (buf_count_mem): Compile this for PROXY_SUPPORT.
+       (Report from Brad L. Chisholm <address@hidden>.)
+
+2004-12-09 Derek Price <address@hidden>
+
+       * sanity.sh (modules7): New test group.
+       (Based on a patch from Mark D. Baushke <address@hidden>, based on a
+       report from Richard Verhoeven <address@hidden>.)
+
+2004-12-09  Derek Price  <address@hidden>
+
+       * client.c (start_server): Avoid advertising the Redirect response when
+       the user asked us not to.
+       * root.h (cvsroot_t): Add redirect field.
+       * root.c (new_cvsroot_t): Init redirect field.
+       (parse_cvsroot_t): Parse Redirect method option.
+       * server.c (serve_command_prep): Don't throw proxy_log away when
+       Redirect isn't supported and it might be needed later.
+       * sanity.sh (parseroot): Improve comment, add a few new tests.
+       (writeproxy-ssh): Specify Redirect=yes explicitly.
+       (writeproxy-ssh-noredirect): New test group.
+
+2004-12-09  Mark D. Baushke  <address@hidden>
+
+       * main.c (usg): Remove Dr. Pascal Molli's CVS URL from the
+       documentation.
+
+2004-12-08  Derek Price  <address@hidden>
+
+       * root.c (Name_Root): s/TRACE_FUNCTION/TRACE_FLOW/.
+
+2004-12-08  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): Suppress -Wall warning.
+
+2004-12-08  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): findnode() compares LIST to NULL w/o help.
+
+2004-12-08  Derek Price  <address@hidden>
+
+       * root.c (Name_root), server.c (serve_referrer): Don't free cvsroot_t.
+       * server.sh (reposmv): Reaccount for multiple potential warnings and
+       comment.
+
+2004-12-07  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): Cache parsed values for efficiency and to
+       avoid printing warnings about non-fatal parsing errors multiple times.
+       * client.c,, login.c, main.c, recurse.c: Don't dispose of parsed roots,
+       parse_cvsroot() has control.
+       * sanity.sh (reposmv): Stop accounting for multiple warnings.
+
+2004-12-03  Mark D. Baushke  <address@hidden>
+
+       * root.h (cvsroot_t): Add cvs_rsh and cvs_server for bookkeeping
+       purposes.
+       * root.c (new_cvsroot_t, free_cvsroot_t): Add support for case
+       insensitive options CVS_RSH and CVS_SERVER.
+       (parse_cvsroot): Ditto and make all keywords case insensitive.
+       * client.c (connect_to_forked_server): Add support for the new
+       "CVS_SERVER" option to CVSROOT.
+       * rsh-client.c (connect_to_forked_server): Ditto
+       (start_rsh_server): Ditto and add support for the new "CVS_RSH"
+       option to CVSROOT.
+       * sanity.sh (parseroot3): New tests for the new options to
+       CVSROOT.
+
+2004-11-30  Larry Jones  <address@hidden>
+
+       * mkmodules.c (config_contents): Add LocalKeyword and KeywordExpand,
+       misc. cleanup.
+
+2004-11-30  Derek Price  <address@hidden>
+
+       * parseinfo.c (readBool): Update quotes in error message for
+       consistency.  Move function to...
+       * subr.c (readBool): ...here.
+       (*): Gratuitous reformatting.
+       * cvs.h: Move all subr.c function prototypes to...
+       * subr.h: ...this new file.
+       * Makefile.am (cvs_SOURCES): Add subr.h.
+
+2004-11-30  Derek Price  <address@hidden>
+
+       * parseinfo.c (readBool): Reorder arguments to error() and improve
+       header comment.
+
+2004-11-30  Derek Price  <address@hidden>
+
+       * client.c (handle_referrer): New function.
+       (handle_redirect): Handle possibility that CLIENT_REFERRER was set via
+       a response.
+       * server.c (serve_command_prep): Send a normalized Referrer response
+       before a Redirect when the client supports it.
+
+2004-11-29  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (RCS_setlocalid): Do more configuration validation.
+       Include some gratuitous reformatting.
+       * sanity.sh (keywordexpand): Add tests for new validation code.
+
+2004-11-24  Derek Price  <address@hidden>
+
+       * server.c (become_proxy): Note assumptions about syncronized primary
+       and secondary versions with `FIXME?' note.
+
+2004-11-22  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (info): Ignore comments in verifymsg test.
+
+2004-11-22  Mark D. Baushke  <address@hidden>
+
+       * mkmodules.c (loginfo_contents, verifymsg_contents,
+       commitinfo_contents, taginfo_contents, preproxy_contents,
+       postadmin_contents, postproxy_contents, posttag_contents,
+       postwatch_contents, notify_contents): Add comments regarding the
+       additional format strings that are available. Include some
+       gratuitous reformatting.
+
+2004-11-19  Derek Price  <address@hidden>
+
+       * subr.c (Xasnprintf): Improve header comment block.
+
+2004-11-19  Derek Price  <address@hidden>
+
+       * root.c (normalize_cvsroot): Improve header comment block.
+
+2004-11-19  Derek Price  <address@hidden>
+
+       * server.c: Misc reformatting and comment corrections.
+
+2004-11-19  Derek Price  <address@hidden>
+
+       * cvs.h (hostname): Redeclare as pointer rather than array.
+       * main.c: Include xgethostname.h.  Declare server_hostname.
+       (main): Use xgethostname().  Set server_hostname.
+       * server.c (MAXHOSTNAMELEN): Remove this macro.
+       (isThisHost): Reference global HOSTNAME rather than looking it up.
+       Improve header comment block.
+       (gserver_authenticate_connection): Likewise.
+       (serve_command_prep): Correct comment.
+       (serve_hostname): Don't bother to validate hostname length.
+
+2004-11-19  Derek Price  <address@hidden>
+
+       * server.c (isThisHost): strcasecmp before consulting the DNS as an
+       optimization.
+
+2004-11-18  Mark D. Baushke  <address@hidden>
+
+       * checkout.c (checkout_proc): Passing the repository to
+       tag_check_valid seems to stop the assertion failure in recurse.c
+       do_recursion.
+       * sanity.sh (basic2-21a): Removed.
+       (basic2-21c): Fixed.
+
+2004-11-18  Derek Price  <address@hidden>
+
+       * sanity.sh (skip_always, notproxy): New functions.
+       (skip, remoteonly, sshstdio, client): Use new functions.
+
+2004-11-17  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (basic2-21a): The val-tags file should have
+       at least 'rtagged-by-head y' in it. Test from cvs 1.11.18 that
+       shows fixed result.
+       (basic2-21b, basic2-21c): New tests showing a cvs bug when
+       val-tags is not present.
+       (Report from "John Elgin" <address@hidden>.)
+
+       * sanity.sh (basicb-21): POSIX 1003.2 specifies 'illegal option'
+       while lots of getopt implementations still use 'invalid option'.
+       Allow either form for this test.
+
+2004-11-17  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (fd_buffer_block): Deal with BSD and BSDI problems to
+       set block/nonblock on /dev/null.
+
+2004-11-17  Derek Price  <address@hidden>
+
+       * Makefile.am (distclean-local): Clean check.plog~.
+
+2004-11-11  Derek Price  <address@hidden>
+
+       * sanity.sh: s/cp -r/cp -R/ to meet POSIX specification.
+       (Thanks to report from Paul Eggert <address@hidden>.)
+
+2004-11-10  Mark D. Baushke  <address@hidden>
+
+       * ms-buffer.c (ms_buffer_input): Avoid UNICOS cc error where
+       'Both sides of the assignment operator are not compatible.'
+
+       * sanity.sh (importc, rcs, rcs4, tagdate): Use TZ=UTC0 not TZ=UTC
+       to get proper POSIX behavior on MacOS X.
+
+2004-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh: Actually parse -e option like we claim to.
+
+2004-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh: Maintain pass/skip/warn status and output at end.
+       (usage): Note new functionality of -e.
+       (warn): New function.
+       (verify_tmp_empty): Warn instead of failing.  Delete turds if warn()
+       doesn't exit.
+
+2004-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh (verify_tmp_empty): New function.
+       (dotest_internal_*): Call verify_tmp_empty as needed.
+
+2004-11-09  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (expr_tooltest3): Bugfix. Use $expr rather than $EXPR.
+
+2004-11-08  Derek Price  <address@hidden>
+
+       * sanity.sh (version_test): Echo good version data to the log, even
+       when it went to stderr.  Don't echo bad version data.
+
+2004-11-08  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (tool_find): Rewrite. API changed to allow a list of
+       tests to be used against a list of possible command names found on
+       the SEARCHPATH.
+       (version_test): Obtain the version of tools under test if
+       possible.
+       (id_tool_test): Check that 'id -u' and 'id -un' work.
+       (expr_tooltest1): Check for NextStep 3.3 expr bug.
+       (expr_tooltest2): Check for SunOS expr multi-line pattern bug.
+       (expr_create_bar): Create a test file for expr testing.
+       (expr_tooltest3): Use it and test for big multi-line identity
+       matches.
+       (expr_set_ENDANCHOR): Find and set the right value for ENDANCHOR.
+       (expr_set_DOTSTAR): Find and set the right value for DOTSTAR.
+       (expr_tooltest_DOTSTAR): Ensure that DOTSTAR works with big
+       matches.
+       (tr_tooltest1): Verify that tr handles NUL bytes.
+       (ls_tooltest): See if /bin/ls returns true even if wildcard does
+       not match any files.
+       (awk_tooltest1): Verify that awk the BEGIN clause works properly.
+       (awk_tooltest2): Verify that print %c format item works properly.
+
+2004-11-08  Derek Price  <address@hidden>
+
+       * sanity.sh (verify_tmp_empty): New function.
+       (dotest_internal_*): Call verify_tmp_empty as needed.
+
+2004-11-08  Derek Price  <address@hidden>
+
+       * sanity.sh (run_filter): Add function header comment block.
+
+2004-11-07  Larry Jones  <address@hidden>
+
+       * sanity.sh: Remove trailing / from cp -r commands.
+
+2004-11-04  Derek Price  <address@hidden>
+
+       * gssapi-client.c (connect_to_gserver): Silence gcc -Wall.
+
+2004-11-04  Derek Price  <address@hidden>
+
+       * sanity.sh (set_bad_tool): Remove unnecessary quotes.
+
+2004-11-04  Derek Price  <address@hidden>
+
+       * sanity.sh: s/depends_on_/require/.
+
+2004-11-04  Derek Price  <address@hidden>
+
+       * sanity.sh (find_tool): Eliminate variable with single reference.
+
+2004-11-04  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (SEARCHPATH): Unify the PATHs that are to be searched.
+       (Which,find_tool): Use SEARCHPATH.
+       (LS): Use default $SEARCHPATH for Which.
+       (depend_on_rsync): Use default $SEARCHPATH for Which.
+
+2004-11-04  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Do not echo rsync information to
+       stdout. Look for rsync in more directories.
+
+2004-11-04  Derek Price  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Minor simplifications.  Make sure that
+       an rsync that doesn't understand `--version' sends its error message to
+       the log file too.
+
+2004-11-04  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (set_bad_tool, is_bad_tool): Avoid printing errors
+       about the same tool multiple times.
+
+2004-11-03  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Deal with missing rsync.
+
+2004-11-03  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Include rsync version information
+       in output.
+
+2004-11-03  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): More rigorous tests for rsync
+       2.3.1 problems with --delete --include dir --exclude '*/.
+
+2004-11-03  Derek Price  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Verify that `rsync --delete' actually
+       does what it is supposed ot do.
+
+2004-11-03  Derek Price  <address@hidden>
+
+       * subr.c (Xreadlink): Remove MAXSIZE macro.  Minor reformatting.
+
+2004-11-03  Mark D. Baushke  <address@hidden>
+
+       * filesubr.c (xreadlink): Remove and use GNULIB version.
+       (islink): Return ssize_t instead of bool.
+       (copy_file): Use Xreadlink().
+       * cvs.h: Add include "xreadlink.h"
+       (islink): Return ssize_t instead of bool.
+       * import.c (preserve_initial_permissions): Use Xreadlink.
+       * rcs.c (RCS_checkin): Ditto.
+       * update.c (special_file_mismatch): Ditto.
+       * subr.c (get_file): Ditto.
+       (resolve_symlink): Ditto.
+       (Xreadlink): New interface to xreadlink(), never return NULL.
+
+2004-11-02  Mark D. Baushke  <address@hidden>
+
+       * filesubr.c (MAXSIZE): New macro.
+       (xreadlink): Ensure initial buffer size does not exceed MAXSIZE.
+       Avoid cast. If readlink fails with buffer size just under MAXSIZE,
+       try again with MAXSIZE.
+
+2004-11-02  Mark D. Baushke  <address@hidden>
+
+       * filesubr.c (xreadlink): AIX and HP-UX readlink() returns ERANGE
+       when there is not enough room in the buffer.
+
+2004-11-01  Derek Price  <address@hidden>
+
+       * cvs.h: Remove getdate proto in favor of including getdate.h.
+       * client.c (handle_mod_time), history.c (history), main.c (Make_Date,
+       format_date_alloc), rcs.c (RCS_getrevtime), server.c
+       (serve_checkin_time): Use new get_date API.
+
+2004-11-01  Derek Price  <address@hidden>
+
+       * sanity.sh (rcslib): Fix typo in path.
+
+2004-11-01  Derek Price  <address@hidden>
+
+       * sanity.sh (rcslib): Test a link to a path longer than 128
+       characters.
+
+2004-10-30  Mark D. Baushke  <address@hidden>
+
+       * patch.c (patch_cleanup): Add signal argument and use it.
+
+2004-10-30  Mark D. Baushke  <address@hidden>
+
+       * client.c: Adjust include files to avoid problems with incomplete
+       types under --disable-client.
+       * msg-buffer.c: Deal with --disable-client --disable-server
+       implicitly meaning --disable-proxy.
+       * server.c: Adjust include files to avoid problems with incomplete
+       types under --disable-server.
+
+2004-10-30  Mark D. Baushke  <address@hidden>
+
+       * server.c (isThisHost): Deal with possibility of a missing
+       hstrerror() function.
+
+2004-10-29  Derek Price  <address@hidden>
+
+       * server.c (server_root, move_file_offset, replace_file_offset):
+       Remove dead code.
+
+2004-10-29  Derek Price  <address@hidden>
+
+       * filesubr.c (xreadlink): Make sure allocation is tried once at the
+       maximum buffer size.  Protect against overflow.
+
+2004-10-29  Derek Price  <address@hidden>
+
+       * server.c (isSameHost): Handle gethostname & gethostbyname errors.
+
+2004-10-29  Derek Price  <address@hidden>
+
+       * server.c (isSameHost): Use strcasecmp to compare host names.
+
+2004-10-29  Mark D. Baushke  <address@hidden>
+
+       * server.c: Need to #include <netdb.h> for either PROXY_SUPPORT or
+       HAVE_GSSAPI to get gethostbyname() declarations for
+
+2004-10-29  Mark D. Baushke  <address@hidden>
+
+       * filesubr.c (SIZE_MAX, SSIZE_MAX): Use #include "xsize.h" instead.
+       (xreadlink): Use xrealloc instead of xmalloc/free.
+
+2004-10-29  Mark D. Baushke  <address@hidden>
+
+       * filesubr.c (SIZE_MAX, SSIZE_MAX): New constants.
+       (xreadlink): Deal with symlinks longer than 127 bytes.
+       (Problem reported as issue 190 by Gottfried Ganssauge
+       <address@hidden>.)
+
+2004-10-29  Derek Price  <address@hidden>
+
+       * server.c (isSameHost): New fuction.
+       (same_path): Rename to...
+       (isSamePath): ...this.
+       (isProxyServer): Use new functions/names.
+
+2004-10-29  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (writeproxy): Use DOTSTAR to avoid problems with
+       a missing Gssapi-authenticate in Valid-requests.
+
+2004-10-28  Derek Price  <address@hidden>
+
+       * server.c (same_path): New function.
+       (isProxyServer): Use new function.
+       * sanity.sh (writeproxy): Test that server resolves symlinks when
+       deciding whether it is a primary server.
+
+2004-10-28  Derek Price  <address@hidden>
+
+       * cvs.h (isdir, isfile, islink, isdevice, isreadable, iswritable,
+       isaccessible, isabsolute): Return boolean rather than int.
+       * filesubr.c (isdir, isfile, islink, isdevice, isreadable, iswritable,
+       isaccessible), subr.c (isabsolute): Ditto.  Some reformatting.
+       * filesubr.c (xresolvepath): Use save_cwd in place of xgetwd.  Some
+       reformatting.
+
+2004-10-28  Derek Price  <address@hidden>
+
+       * client.c (handle_redirect): Detect redirect loops.
+       * sanity.sh (client-20): Test that client detects redirect loops.
+
+2004-10-28  Mark D. Baushke  <address@hidden>
+
+       * release.c (release): Allow builds of cvs with --disable-server
+       --disable-client both used for local installation configuration.
+       * root.c (Name_Root): Ditto.
+       * update.c (checkout_file): Ditto.
+       * edit.c (edit_fileproc): Ditto.
+       * import.c (import): Ditto.
+       (Problem reported by Jean Olivier Caron <address@hidden>.)
+
+2004-10-27  Mark D. Baushke  <address@hidden>
+
+       * cvs.h (RCS_FLAGS_USETIME): New flag.
+       * rcs.c (RCS_checkin): Add citime argument.
+       * rcs.h (RCS_checkin): Ditto.
+       * checkin.c (Checkin): Pass new RCS_checkin argument.
+       * commit.c (remove_file, checkaddfile): Ditto.
+       * import.c (add_rev): Ditto.
+
+       * sanity.sh (tagdate): Delete tagdate-19b as an incorrect test.
+
+2004-10-27  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (tagdate): Provide more output.
+
+2004-10-26  Mark D. Baushke  <address@hidden>
+
+       * commit.c (checkaddfile): Create a dead version for a new file
+       added to a branch. Fixes FIXCVS for tagdate tests.
+       * sanity.sh (tagdate): Update to expect correct results.
+       (death2, branch-after-import, join, ignore-on-branch): Ditto.
+
+2004-10-26  Mark D. Baushke  <address@hidden>
+
+       * server.c (isProxyServer): Fix hostname setup.
+
+2004-10-26  Derek Price  <address@hidden>
+
+       Call all exit handlers via atexit() & exit().  Signal handlers exit().
+       Eliminates a compiler warning.
+
+       * exithandle.c (cleanup_register): Don't register a signal handler.
+       Register a function to block signals before the exit handler is called.
+       * lock.c (Lock_Cleanup): Remove never_run_again cruft and assoc. cmts.
+       * rcs.c (rcs_cleanup), server.c (server_cleanup): Ditto, plus assume
+       signals are blocked.
+       * main.c (main_cleanup): Declare noreturn attribute.
+
+2004-10-26  Derek Price  <address@hidden>
+
+       * gssapi-client.c (connect_to_gserver): Avoid truncating error messages
+       from the GSSAPI server.
+       (Report from Dan Peterson <address@hidden>.)
+
+2004-10-26  Derek Price  <address@hidden>
+
+       * sanity.sh (import-quirks): Test an even branch number.
+
+2004-10-25  Derek Price  <address@hidden>
+
+       * import.c (import): Repair regex for regressions introduced in last
+       commit.
+       * sanity.sh (import-quirks): Test a few branch numbers import shouldn't
+       have a problem with.
+
+2004-10-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (modes3): Quiet rsync messages in proxy mode when
+       permissions are removed. They are expected and not a problem here.
+
+2004-10-25  Derek Price  <address@hidden>
+
+       * import.c (import): Anchor and simplify branch verification regex.
+       * sanity.sh (import-quirks): Test another pattern that should fail.
+
+2004-10-25  Derek Price  <address@hidden>
+
+       * cvs.h (yesno): Remove prototype.
+       * edit.c, release.c: Include yesno.h.  Flush output before calling
+       yesno().
+
+2004-10-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (tagdate): Added some additional tests and FIXCVS
+       comments for dealing properly with a 'cvs add' of a file to
+       a branch that already exists on the mainline.
+       (Problem reported by Renny Barrett <address@hidden>.)
+
+       * sanity.sh (getrlogdate): New shell function.
+       (tagdate-{13,14,16}): Use it to avoid 'sleep 60' by using
+       the exact 1.1.4.1 timestamp for tagdate-14 and tagdate-16.
+
+2004-10-25  Derek Price  <address@hidden>
+
+       * sanity.sh (depends_on_rsync): Redirect rsync output to /dev/null when
+       just testing.
+
+2004-10-23  Mark D. Baushke  <address@hidden>
+
+       * socket-client.c (socket_buffer_initialize): Drop obsolete
+       arguments to buf_initialize().
+
+2004-10-22  Mark D. Baushke  <address@hidden>
+
+       * client.c (handle_m, handle_e): Winsock is returning
+       SOCK_ERRNO == WSAENOTSOCK for select() problems and not
+       setting errno. Do not bother with printing an error from a
+       select() that is not returning an non-zero errno.
+       (Report from Conrad T. Pino <address@hidden>.)
+
+2004-10-22  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (proxy): proxycheck depends on rsync, but skip all if
+       no rsync is found rather than generate an error return.
+
+2004-10-22  Mark D. Baushke  <address@hidden>
+
+       * Makefile.am (proxycheck): New test target.
+       * sanity.sh: Keep one more level of check.log backup.
+       * Makefile.in: Regenerated.
+
+2004-10-22  Derek Price  <address@hidden>
+
+       * client.c, update.c: Use new MD5 interface.
+
+2004-10-22  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (find_tool): Search /usr/pkg/bin for NetBSD tools
+       like rsync.
+
+2004-10-22  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (tagdate): Fix typo.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * subr.c: #include vasnprintf.h to avoid compiler warning.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * cvs.h (error_use_protocol): Move decl here from lib/error.h so that
+       we may use an unforked error.h from GNULIB.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * main.c: #include strftime.h.
+       (format_time_t, gmformat_time_t): Supply missing args to my_strftime.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * buffer.c: Don't maintain last_index & last_count for buffers.
+       * buffer.h (struct buffer): Update struct.
+       (buf_initialize): Update proto.
+       * log-buffer.c, ms-buffer.c, zlib.c: Update all callers.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * sanity.sh: Fail gracefully in proxy mode when rsync is defective.
+       (depends_on_rsync): New function.
+       (writeproxy, writeproxy-noredirect, writeproxy-ssh): Skip these tests
+       gracefully when rsync is missing.
+
+2004-10-21  Mark D. Baushke  <address@hidden>
+
+       * add.c (add): Pay attention to cvswrite mode when resurrecting a
+       file that was not yet committed.
+       (Report from Frank Hemer <address@hidden>.)
+       * sanity.sh (resurrection): Add new tests to deal with read-only
+       mode on a cvs add durring a resurrection. Verify that -r is not
+       honored when the resurrected file must be committed to be seen.
+
+2004-10-21  Derek Price  <address@hidden>
+
+       * ls.c (ls_fileproc): Deal with files specified on the command line.
+       (ls_delproc): Move to a more accessible location.
+
+2004-10-20  Derek Price  <address@hidden>
+
+       * add.c (add): Avoid unnecessary typecast.
+
+2004-10-20  Mark D. Baushke  <address@hidden>
+
+       * Makefile.in: Regenerate for new configure.in.
+
+2004-10-19  Mark D. Baushke  <address@hidden>
+
+       * add.c (add): Backout last typecasts cleanup.
+
+2004-10-19  Derek Price  <address@hidden>
+
+       * add.c (add): Avoid attempting to resurrect a dead rev 1.1.
+       * sanity.sh (resurrection): Add test for the above.
+       (Report from Dan Peterson <address@hidden>.)
+
+2004-10-19  Derek Price  <address@hidden>
+
+       * add.c (add): Avoid unnecessary typecasts.
+
+2004-10-19  Derek Price  <address@hidden>
+
+       * cvs.h: Prototype new function.
+       * subr.c (Xasnprintf): New function.
+       * root.c (primary_root_translate, primary_root_inverse_translate):
+       s/asnprintf/Xasnprintf/.
+       * client.c (connect_to_pserver): Store line length for efficiency.
+
+2004-10-19  Derek Price  <address@hidden>
+
+       * history.c: Remove unecessary typecasts.  Some reformatting.
+
+2004-10-18  Derek Price  <address@hidden>
+
+       * server.c (serve_modified): Eliminate >= 0 check since size_t may not
+       be negative.
+       (Originally reported by Martin Neitzel <address@hidden>.)
+
+2004-10-18  Derek Price  <address@hidden>
+
+       * cvs.h (DEVNULL): This is system dependant.  Move it to lib/system.h.
+       * client.c (copy_a_file): Consolidate USE_VMS_FILENAMES stuff under a
+       single #ifdef.
+
+2004-10-15  Derek Price  <address@hidden>
+
+       * cvs.h: Don't include vasnprintf.h.
+       (Xasprintf): New prototype.
+       * client.c, edit.c, history.c, import.c, ls.c, main.c, parseinfo.c,
+       recurse.c, release.c, repos.c, root.c, server.c, status.c, subr.c,
+       vers_ts.c: s/asnprintf/Xasprintf/.
+       * root.c: Include vasnprintf.h.
+       (primary_root_translate, primary_root_inverse_translate): Use
+       asnprintf() properly.
+       * subr.c: Include vasprintf.h.
+       (Xasprintf): New function.
+
+2004-10-14  Derek Price  <address@hidden>
+
+       * import.c (import): Remove an unecessary level of nesting.  Simplify
+       xmalloc/sprintf with asnprintf.  Remove useless comment.
+
+2004-10-14  Derek Price  <address@hidden>
+
+       * import.c (import): Verify branch specifications more thoroughly.
+       * sanity.sh (importb): Adapt to new error message.
+       (import-quirks): New test.
+
+2004-10-14  Mark D. Baushke  <address@hidden>
+
+       * server.c (server_pause_check, do_cvs_command, server_cleanup):
+       Avoid typecasts.
+
+2004-10-14  Derek Price  <address@hidden>
+
+       * gssapi-client.c: Use new size_t buffer APIs.
+
+2004-10-11  Mark D. Baushke  <address@hidden>
+
+       * buffer.h, buffer.c (buf_output, buf_input_data, buf_read_line,
+       buf_read_data, struct packetizing_buffer,
+       packetizing_buffer_initialize) Use size_t instead of int.
+       Silences warnings in buffer.c, server.c, and zlib.c on OpenBSD
+       sparc64 where sizeof(int) is not the same as sizeof(size_t).
+       * client.c (read_line_via, read_line, try_read_from_server,
+       get_server_response, handle_ok, handle_error,
+       handle_valid_requests, handle_checked_in, handle_new_entry,
+       handle_checksum, handle_copy_file, handle_updated, handle_merged,
+       handle_patched, handle_rcs_diff, handle_removed,
+       handle_remove_entry, handle_set_static_directory,
+       handle_clear_static_directory, handle_set_sticky,
+       handle_clear_sticky, handle_clear_template,
+       handle_module_expansion, handle_wrapper_rcs_option, handle_m,
+       handle_e, handle_f, handle_notified): Ditto
+       * client.h (struct response): Ditto.
+       * server.c (receive_partial_file, receive_file, serve_modified,
+       do_cvs_command): Ditto.
+       * zlib.c (compress_buffer_input, compress_buffer_shutdown_input):
+       Ditto.
+       (Patch from Alexander Taler <address@hidden>.)
+
+2004-10-08  Derek Price  <address@hidden>
+
+       * client.c (send_args): Carry through a const to silence gcc -Wall.
+       * hardlink.c (delhardlist): New function.
+       (lookup_file_by_inode): Use new function as delproc since it should
+       work.  Carry through a const to silence gcc -Wall.
+       * ms-buffer.c (ms_buffer_initialize): Use a working delproc.
+
+2004-10-08  Derek Price  <address@hidden>
+
+       * client.c (open_connection_to_server, close_connection_to_server,
+       handle_redirect): Add traces.
+
+2004-10-07  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add parseinfo.h.
+
+2004-10-07  Mark D. Baushke  <address@hidden>
+
+       * vers_ts.c (entries_time): Use size_t pointers. sizeof(int)
+       may not be the same as sizeof(size_t) on OpenBSD sparc64.
+       (Patch from Alexander Taler <address@hidden>.)
+
+       * wrapper.c (wrap_clean_fmt_str): Make static.
+
+2004-10-07  Mark D. Baushke  <address@hidden>
+
+       * client.h (struct response): Make name a const.
+       * cvs.h (RETSIGTYPE): Use a full prototype.
+       * hash.h (struct node): Use a full prototype for delproc.
+
+       * client.c (send_arg, send_option_string, option_with_arg): Make
+       args of function const.
+       * client.h (send_arg, send_option_string, option_with_arg): Ditto.
+
+       * checkout.c (checkout): Make valid_options const.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * release.h: Silence gcc -Wall.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * cvs.h: Move include of getopt.h to system.h with similar headers.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * login.c: Include getpass.h.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * cvs.h: Include strcase.h.
+       (cvs_casecmp): remove proto.
+       * subr.c (cvs_casecmp): Remove function.
+       * parseinfo.c: s/cvs_casecmp/strcasecmp/.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * cvs.h: Move getopt.h and regex.h into the GNULIB include section.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * main.c (cmds): Release calls unedit, to it modifies the repository.
+       (struct cmd): Add const and full prototype where needed.
+       * sanity.sh (edit-check): Use modify_repo where needed.
+       (release): No more special case for release in proxy mode.
+       (Patch from Mark D. Baushke  <address@hidden>.)
+
+       * release.c (release): Simplify login in if statement.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * client.c (send_file_names): Back out broken portion of previous
+       change.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * client.c (call_in_directory): Make args of function arg const.
+       * client.h, client.c, edit.h, edit.c, server.h, zlib.c: Carry change
+       through to called functions and functions passed in as args.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * checkout.c, commit.c, edit.c, rcs.c: Avoid typecasts.  Some
+       reformatting.
+
+2004-10-06  Derek Price  <address@hidden>
+
+       * client.c: Avoid more typecasts.  Some reformatting.
+
+2004-10-06  Mark D. Baushke  <address@hidden>
+
+       * client.c (send_file_names): Use new save-cwd API.
+       (connect_to_pserver): Use a union to avoid incompatible pointer
+       type warnings.
+
+2004-10-05  Derek Price  <address@hidden>
+
+       * cvs.h (Xstrdup): New proto mapped via define to xstrdup.
+       * subr.c (Xstrdup): New function.
+
+2004-10-05  Derek Price  <address@hidden>
+
+       * add.c, client.c, history.c, import.c, mkmodules.c, modules.c,
+       recurse.c, release.c, tag.c, update.c: Use new save-cwd API.
+
+2004-10-05  Derek Price  <address@hidden>
+
+       * checkout.c, client.c, commit.c, create_adm.c, cvs.h, filesubr.c,
+       hardlink.c, history.c, logmsg.c, main.c, recurse.c, update.c:
+       s/xgetwd/xgetcwd/.
+
+2004-10-04  Derek Price  <address@hidden>
+
+       * client.c (responses): Add "Edit-file".
+       (handle_edit_file): New function.
+       * commit.c (usage): Add -c option.
+       (check_fileproc): Check for edit when requested.
+       (commit_fileproc): Use new notify_do API.
+       * edit.c (check_edited): New global.
+       (setting_tedit, setting_tunedit, setting_tcommit): s/int/bool/.
+       (ncheck_fileproc): Use new notify_do API.
+       (send_notifications): Remove redundant proto.  Remove unnecessary
+       repository lock.
+       (editors_output, find_editors_and_output, edit_file): New functions.
+       edit_file() factored from...
+       (edit_fileproc): ...here.  Skip files with existing editors when
+       requested.
+       (usage): Add -c and -f.
+       (edit): Handle new -c and -f options.
+       (notify_do): Accept update_dir as an argument for user messages.
+       (editors_fileproc): Factor most content to find_editors_and_output()
+       and edit_file().
+       * edit.h (notify_do): Proto new API.
+       (editors_output, edit_file): New functions.
+       * rcs.c (RCS_unlock): Use new notify_do() API.
+       * sanity.sh: Update assorted tests to compensate for new output.
+       (edit-check): New tests.
+       * server.c (gupdate_dir): New global.
+       (struct notify_note): Keep track of update_dir.
+       (serve_notify): Use update_dir.
+       (serve_hostname, serve_localdir, serve_edit, server_edit_file): New
+       functions.
+       (server_notify): Use new notify_do() API.
+       (requests): Add Hostname, LocalDir, and edit.
+       * server.h (server_edit_file): New proto.
+       (Note: Original design of new advisory lock behavior came from Noel Yap
+       <address@hidden>'s original advisory locks patch, originally ported
+       forward and enhanced by Matthew Ogilvie <address@hidden>.)
+
+2004-10-04 Derek Price <address@hidden>
+
+       * admin.c (postadmin_proc), edit.c (notify_proc), fileattr.c
+       (postwatch_proc), logmsg.c (logfile_write, verifymsg_proc), server.c
+       (prepost_proxy_proc), tag.c (pretag_proc, posttag_proc): Pass referrer
+       to called scripts when possible.
+       * client.c (handle_redirect): Save the original server.
+       (start_server): Send referrer to the new server if possible.
+       * sever.c (referrer): New global.
+       (serve_referrer): Save referrer.
+       (requests): Add "Referrer" response.
+       * server.h (referrer): Add extern decl.
+       * sanity.sh (ssh-wrapper): Use in remote mode too.
+       (writeproxy-ssh): New tests.
+
+2004-10-04 Derek Price <address@hidden>
+
+       * cvs.h (CVSROOT_DFLT): Undef rather than defining to NULL.
+       * main.c (main): Untangle parsing of CVSROOT, eliminating several
+       variables in the process.  Simplify xmalloc/sprintf with asnprintf.
+
+2004-10-04 Derek Price <address@hidden>
+
+       * root.c (primary_root_translate, primary_root_inverse_translate,
+       get_local_root_dir, local_cvsroot): Simplify logic without proxy
+       support.
+
+2004-10-02  Mark D. Baushke  <address@hidden>
+
+       * root.c (primary_root_translate, primary_root_inverse_translate,
+       get_local_root_dir): Protect PrimaryServer with #ifdef
+       PROXY_SUPPORT
+
+2004-10-01  Mark D. Baushke  <address@hidden>
+
+       * main.c (main): Initialize CVSroot before it is used.
+       (Report and patch by Martin Neitzel <address@hidden>.)
+       * sanity.sh (status): Test it.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * checkout.c (checkout_proc), fileattr.c (fileattr_read), find_names.c
+       (Find_Names), myndbm.c (mydbm_open, mydbm_load_file), parseinfo.c
+       (Parse_Info), rcs.c (RCS_parsercsfile_i, rcsbuf_getkey,
+       rcsbuf_getrevnum, rcsbuf_valword): Root translation functions no longer
+       allocate.
+       * commit.c (commit): Use send_a_repository rather than reimplementing.
+       * main.c (main): Remove --primary-root option.
+       * root.c (primary_root_add): Remove this function.
+       (primary_root_in, primary_root_out): Remove globals.
+       (primary_root_translate, primary_root_inverse_translate): Return const.
+       Don't allocate return value.  Rely on parsed root and confg's
+       PrimarServer rather than separately maintained globals.
+       (get_local_root_dir): New function.
+       (local_cvsroot): Translate requests for primary roots when necessary.
+       * root.h (primary_root_add, primary_root_translate,
+       primary_root_inverse_translate): Update protos to match.
+       * sanity.sh (top level, writeproxy): Simplify $proxy setup.
+       (client): Don't execute $proxy.  Simplify skips and reindent.
+       (writeproxy-noredirect): Use --allow-root in place of --primary-root.
+       Save and restore $PRIMARY_CVSROOT*.
+       * server.c (serve_root): Rely on local_cvsroot() to do any necessary
+       root translation.
+       (serve_directory): Root translation functions no longer allocate.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * client.c (arg_should_not_be_sent_to_server), create_adm.c
+       (Create_Admin), recurse.c (start_recursion, do_recursion, do_dir_proc),
+       release.c (release), repos.c (Name_Repository, Short_Repository),
+       update.c (update_filesdone_proc):
+       s/original_root/original_parsed_root->MEMBER/.
+       * main.c (set_root_directory): Set original_parsed_root when setting
+       current_parsed_root.
+       (main): s/original_root/original_parsed_root->MEMBER/.
+       * root.c (original_root): Make cvsroot_t and rename to...
+       (original_parsed_root): ...this.
+       * root.h: Update extern decl to match.
+       * server.c (serve_root): Set original_parsed_root.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * server.c (serve_questionable): Use pending errors per API.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * repos.c (Name_Repository): asnprintf, not sprintf.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * sanity.sh (ignore-11r): Rename second occurance to...
+       (ignore-11ar): ...this.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * sanity.sh (1): Rename to...
+       (init-1): ...this.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * repos.c (Name_Repository): Simplify string construction with
+       asnprintf().  Improve comment.  Some reformatting.
+
+2004-10-01  Derek Price <address@hidden>
+
+       * release.c (release): Simplify string construction with asnprintf().
+
+2004-10-01  Derek Price <address@hidden>
+
+       * recurse.c (do_file_proc): Improve header comment.  Replace
+       xmalloc()/strcat() combination with asnprintf().
+
+2004-09-29  Derek Price <address@hidden>
+
+       * sanity.sh (config): Handle $SECONDRY_ROOT_DIRNAME output in $proxy
+       mode.
+
+2004-09-29  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh: Workaround MacOS X '/bin/ls' is not returning false
+       when no files are listed.  Label some old tests.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * cvs.h: Include parseinfo.h.
+       (top_level_admin, UseNewInfoFmtStrings,
+       ImportNewFilesToVendorBranchOnly, PrimaryServer, MaxProxyBufferSize,
+       MaxCommentLeaderLength, UseArchiveCommentLeader, RereadLogAfterVerify,
+       lock_dir, UserAdminOptions):  Move extern decls for global config opts
+       to config struct in parseinfo.h.
+       (config): New global.
+       (parse_config): Move proto to...
+       * parseinfo.h: This new file.
+       * parseinfo.c (parse_config): Return struct config.
+       (new_config): New function.
+       * admin.c: Remove global UserAdminOptions.
+       (admin): Don't check config on client.
+       * checkin.c (Checkin), checkout.c (checkout_proc), filesubr.c (xchmod),
+       import.c (import, add_rcs_file, expand_and_copy_contents):
+       Use config instead
+       of globals.  Some reformatting.
+       * history.c (logHistory): Move to struct config.
+       (history_write): Use config instead of globals.
+       * lock.c (lock_dir): Move global to struct config.
+       (lock_name): Use config instead of globals.
+       * logmsg.c (RereadLogAfterVerify): Move global to struct config.
+       (do_verify, logfile_write, verifymsg_proc): Prefer config to globals.
+       * main.c (top_level_admin, UseNewInfoFmtStrings, PrimaryServer,
+       MaxProxyBufferSize, MaxCommentLeaderLength, UseArchiveCommentLeader,
+       ImportNewFilesToVendorBranchOnly): Move globals to struct config.
+       (config): New global.
+       (main): Use new parse_config API.
+       * rcs.c (preserve_perms, keywords): Move globals to struct config.
+       (keyword_local): Move to struct rcs_keyword.
+       (new_keywords, free_keywords): New functions.
+       (expand_keywords, RCS_setlocalid, RCS_setincexc): Prefer config to
+       globals.
+       * rcs.h (free_keywords): New proto.
+       (RCS_setincexc, RCS_setlocalid): Accept opaque keywords element.
+       * root.c (delconfig, get_root_allow_config): New functions.
+       * root.h (get_root_allow_config): New proto.
+       * server.c (system_auth): Move global to struct config.
+       (isProxyServer, become_proxy, serve_command_prep): Prefer config to
+       globals.
+       (serve_root): Ditto.  Set config.
+       * server.h (system_auth): Move extern decl for global moved to config.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * history.h: Protect against multiple include.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * root.c (root_allow_count, root_allow_vector, root_allow_size):
+       Replace with...
+       (root_allow): ...this single List *.
+       (root_allow_add, root_allow_free, root_allow_ok): Use new List API.
+       Make args const.  Return bool rather than int when necessary.
+       * root.h (root_allow_add, root_allow_ok): Update protos to match.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * admin.c (admin): s/int/bool/ as appropriate.  Some reformatting.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * history.c (history_write): Use asnprintf().  Some reformatting.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * import.c (killnew): s/int/bool/.
+       (add_rcs_file): Ditto for do_killnew.
+       * rcs.h (add_rcs_file): Change proto to match.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * client.c (start_server): Use bool in place of int.
+
+2004-09-29  Derek Price <address@hidden>
+
+       * subr.c (cvs_trace): Correct header comment.  Some reformatting.
+
+2004-09-28  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (ssh-wrapper-env): New script to avoid the assumption
+       that the remote end of a $CVS_RSH is running a bourne shell.
+       (ssh-wrapper): Use it.
+
+2004-09-28  Derek Price <address@hidden>
+
+       * sanity.sh (writeproxy): Remove some setup obsoleted by redirects.
+
+2004-09-27  Derek Price <address@hidden>
+
+       Use original_root for client comparisons with CVS/Root since
+       current_parsed_root may be the product of a redirect.
+
+       * client.c (handle_redirect): Don't free current_parsed_root.  Validate
+       new roots.
+       (args_should_not_be_sent_to_server):
+       s/current_parsed_root->original/original_root/.
+       * create_adm.c (Create_Admin): Likewise.
+       * cvs.h (current_parsed_root): Move extern decl...
+       * root.h: ...here.  Decl original_root extern.
+       * main.c (set_root_directory): Store original_root.
+       (main): s/current_parsed_root->original/original_root/.
+       * recurse.c, release.c, update.c: Likewise.
+       * root.c: Declare original_root.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * sanity.sh (parseroot2): Correct two test names.  Restore CVSROOT.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * root.c (parse_cvsroot): Use TRACE_FLOW, not TRACE_FUNCTION since this
+       routine is called repeatedly by the recursion routines.
+       * sanity.sh (multiroot2): Adjust to compensate.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * sanity.sh (parseroot2): Use remoteonly.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * sanity.sh (tests): Add parseroot2.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * recurse.c (do_recursion, do_dir_proc): Make process_this_directory a
+       boolean.
+
+2004-09-24  Derek Price <address@hidden>
+
+       * sanity.sh (parseroot2): New test for root parsing consistency.
+       (Original patch from Alexander Taler <address@hidden>.)
+
+       * cvs.h (Name_Root, free_cvsroot_t, parse_cvsroot, local_cvsroot,
+       Create_Root, root_allow_add, root_allow_free, root_allow_ok): Move
+       these protos to...
+       * root.h: ...here.
+       * client.c (arg_should_not_be_sent_to_server), recurse.c
+       (start_recusrion, do_recursion): Use new Name_Root API.
+       * main.c (current_root): Remove global.
+       (set_root_directory): Set current_parsed_root directly.
+       (main): Use new Name_Root API.  Restore deletion of root directories
+       list.
+       * root.c (Name_Root): Return a parsed cvsroot_t rather than a string.
+
+2004-09-24  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (buf_append_buffer): Fix typo in comment.
+
+2004-09-23  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (buf_read_file): Fix typo in comment.
+       (buf_read_file_to_eof): Ditto.
+       * server.c (serve_command_prep): Ditto.
+
+2004-09-23  Derek Price <address@hidden>
+
+       * sanity.sh (depends_on_ssh, sshstdio): Don't use skip() to skip
+       remote-only tests.
+
+2004-09-23  Derek Price <address@hidden>
+
+       * sanity.sh (crerepos, sshstdio): Minor modifications to make use of
+       the new depends_on_?sh API.
+
+2004-09-23  Derek Price <address@hidden>
+
+       * sanity.sh: Accept new -e option to interpret non-fatal calls to skip
+       as errors.
+       (skip, depends_on_rsh, depends_on_ssh): New functions.
+
+2004-09-23  Mark D. Baushke  <address@hidden>
+
+       * server.c (cvs_output, cvs_output_binary): fflush (stderr)
+       here to avoid problems with 'cvs status 2>&1'.
+       (Report by Frank Hemer <address@hidden>.)
+
+2004-09-17  Derek Price  <address@hidden>
+
+       * buffer.c, buffer.h, log-buffer.c, log-buffer.h, main.c, mkmodules.c,
+       parseinfo.c, server.c: Remove TRUST_OS_FILE_CACHE.
+
+2004-09-17  Derek Price  <address@hidden>
+
+       * buffer.c (fd_set_block): Ignore FreeBSD /dev/null problem.
+
+2004-09-17  Derek Price  <address@hidden>
+
+       * cvs.h (strip_trailing_slashes): Remove proto in favor of including
+       dirname.h from GNULIB.
+       * sever.c (dir_name): Rename to...
+       (gDirname): ...this to avoid conflicts with the GNULIB function.
+
+2004-09-16  Derek Price  <address@hidden>
+
+       * expand_path.c (expand_path): Silence `gcc -Wall'.  Reformat some
+       comments to fit in 80 characters.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * sanity.sh (sync-secondary, writeproxy, writeproxy-noredirect): Remove
+       redundant checks for $RSYNC readability.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * sanity.sh: Only find $RSYNC once.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * sanity.sh (writeproxy, writeproxy-noredirect): Find $RSYNC in a
+       portable manner.
+
+2004-09-15  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh: Find $RSYNC in a portable manner.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * parseinfo.c (parse_config): Complete parsing of the remainder of the
+       config file when errors are encountered.  Accept and ignore
+       UseNewInfoFmtStrings=yes when !SUPPORT_OLD_INFO_FMT_STRINGS.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * buffer.c (buf_copy_data): Pass args to buf_append_data correctly.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * sanity.sh: Set $RSYNC in proxy mode.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * main.c: Fix typo in comment.
+
+2004-09-15  Derek Price  <address@hidden>
+
+       * rcs.c: s/abort/assert/.  Reformat function headers.  Remove
+       unnecessary typecasts & prototypes.
+
+2004-09-14  Mark D. Baushke  <address@hidden>
+
+       * parseinfo.c (readBool): Remove dead code.
+
+       * filesubr.c (cvs_casecmp): Move to...
+       * subr.c (cvs_casecmp): ...here.
+       * cvs.h (cvs_casecmp): No longer ifdef under SERVER_SUPPORT
+
+       * parseinfo.c (readBool): Return false when there was no boolean
+       found.
+
+2004-09-14  Derek Price  <address@hidden>
+
+       * cvs.h (top_level_admin, ImportNewFilesToVendorBranchOnly):
+       s/int/bool/.
+       (MaxCommentLeaderLength, UseArchiveCommentLeader): New vars.
+       * main.c: Ditto, for all four vars above.
+       * mkmodules.c (config_contents): Add default info for
+       MaxCommentLeaderLength & UseArchiveCommentLeader.
+       * parseinfo.c (readBool, readSizeT): New functions.
+       (parse_info): Use new functions.  Parse MaxCommentLeaderLength &
+       UseArchiveCommentLeader.
+       * rcs.c (expand_keywords): Limit the size of the comment leader to
+       MaxCommentLeaderLength & fall back to the comment leader specified in
+       the RCS archive when requested.
+       (preserve_perms): s/int/bool/.
+       * rcs.h (preserve_perms), server.c (system_auth), server.h
+       (system_auth): Likewise.
+       * sanity.sh (keywordlog): Add new tests for the above.
+
+2004-09-12  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (RCS_checkout): Allow noexec to do checkouts when
+       server_active is true.
+       * sanity.sh (join7): Test above change (fixes a FIXCVS).
+
+2004-09-09  Derek Price  <address@hidden>
+
+       * buffer.c (stuct packetizing_buffer): Use size_t & bool as appropriate
+       in preference to int.
+       (packetizing_buffer_output): s/int/size_t/ as appropriate.
+
+2004-09-09  Derek Price  <address@hidden>
+
+       * buffer.c (packetizing_buffer_input): s/int/size_t/ as appropriate.
+
+2004-09-09  Mark D. Baushke  <address@hidden>
+
+       * root.c (primary_root_inverse_translate): No longer inline.
+
+2004-09-09  Conrad T. Pino  <address@hidden>
+
+       * server.c: Add comment before #if at line 5580 to move it further
+       into the file which seems to work around an apparent buffer managment
+       bug in Microsoft Visual C++ 6.0 compiler.
+
+2004-09-08  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (join7): Fix if-then-else conditional.
+
+       * sanity.sh (join7): Re-order join7-5 and join7-6 tests.
+
+2004-09-08  Conrad T. Pino  <address@hidden>
+
+       * server.c: Remove extra token in conditional compile line 5580
+       causing error in Windows Visual C++ 6.0 compile.
+
+2004-09-08  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (fd_buffer_block): Protect fcntl calls when F_GETFL,
+       O_NONBLOCK and F_SETFL are not available.
+       * server.c (move_file_offset): Ditto.
+       (set_nonblock_fd): Ditto.
+
+       * buffer.c (packetizing_buffer_input): Use size_t rather than int.
+       (struct packetizing_buffer): Ditto.
+
+2004-09-07  Mark D. Baushke  <address@hidden>
+
+       * server.c (server_updated): Deal with cvs -n update -jt1 -jt2
+       "protocol error: uncounted data discarded" problem.
+       * sanity.sh (join7): New test for this case.
+
+2004-09-04  Derek Price  <address@hidden>
+
+       * socket-client.c (socket_client_initialize): Pass new args to
+       buf_initialize.
+
+2004-09-04  Derek Price  <address@hidden>
+
+       Silence `gcc -Wall'.
+
+       * buffer.c (buf_initialize): Remove unnecessary typecasts by using
+       size_t instead of int or bool as args.
+       * buffer.c, import.c, log-buffer.c, ms-buffer.c, zlib.c: Change all
+       callers.
+       * buffer.h, cvs.h: Update protos.
+       * client.c, ls.c, main.c, rcs.c, root.c, server.c: Remove unused vars,
+       add parens, as requested by `gcc -Wall'.
+
+2004-09-04  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (writeproxy-noredirect): Between "Set" and
+       "expand-modules" are the optional Kerberos-encrypt, Gssapi-encrypt
+       and Gssapi-authenticate entries. Use ${DOTSTAR} to deal with
+       these optionally configured requests.
+
+2004-09-04  Mark D. Baushke  <address@hidden>
+
+       * import.c (expand_at_signs): Typecasting for fwrite results.
+       * log-buffer.c (log_buffer_input, log_buffer_output,
+       log_buffer_initialize): Ditto.
+
+       * log-buffer.c (log_buffer_initialize): Protect reference to
+       fatal_errors.
+
+       * parseinfo.c (parse_config): Protect reference to PrimaryServer
+       using #ifdef PROXY_SUPPORT.
+
+       * ls.c (ls_fileproc): Remove unused variables.
+       * subr.c (increment_revnum): Ditto.
+       * vers_ts.c (time_stamp): Ditto.
+
+2004-09-03  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_checkin), commit.c (remove_file): Accept UPDATE_DIR
+       argument and use it to output full relative path on commit.
+       * rcs.h (RCS_checkin): Update prototype.
+       * checkin.c, commit.c, import.c: Change all callers.
+       * sanity.sh: Adjust to compensate.
+
+2004-09-03  Derek Price  <address@hidden>
+
+       * client.c (call_in_directory): Change passed in function to accept
+       void * to avoid typecasting.  Change all functions using this API.
+
+2004-09-03  Derek Price  <address@hidden>
+
+       * sanity.sh (secondary-wrapper, writeproxy-secondary-wrapper): Improve
+       comments.  Use exec to launch server.
+       (writeproxy-noredirect): New tests for writeproxy functionality in
+       conjunction with clients that cannot handle the `Redirect' response.
+
+2004-09-03  Derek Price  <address@hidden>
+
+       * log-buffer.c, rsh-client.c, client.c: Reformat function headers.
+       Remove unnecessary typecasts and prototypes.
+       * client.h: Remove unnecessary extern declarations on protos.
+
+2004-09-03  Derek Price  <address@hidden>
+
+       * sanity.sh (skip): New function.
+       (sshstdio): Use new function.
+       (writeproxy): Skip test when rsync isn't found.
+
+2004-09-02  Mark D. Baushke  <address@hidden>
+
+       * server.c (serve_directory): C89 compilers do not like mixed
+       declarations and code.
+
+2004-08-19  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (sync-secondary): 'dirname -b' fails during the
+       spacefiles-5 test on FreeBSD, so use 'dirname -- "\$dir"' for now
+       and look to AS_DIRNAME at some future date.
+
+2004-08-19  Derek Price  <address@hidden>
+
+       * sanity.sh (ssh-wrapper): Create for $proxy mode too & forward CVS_PID
+       for crerepos.
+
+2004-08-18  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (writeproxy): Use CVS_PID instead of PPID as the
+       former environment variable is set by cvs and the latter is
+       NOT set by all bourne shells.
+
+2004-08-18  Mark D. Baushke  <address@hidden>
+
+       * log-buffer.c (log_buffer_rewind): Avoid FreeBSD compilation
+       error for dereferencing a void * pointer tmp as well as using it
+       as a buffer pointer under some conditions.
+
+2004-08-17  Derek Price  <address@hidden>
+
+       * server.c (isProxyServer): Always compile.  Cache hostname lookup.
+       (serve_notify): Ignore notifications in conjunction with redirects.
+       (do_cvs_command): Send an error when !PROXY_SUPPORT and a client does
+       not support redirects.  Only close proxy logs when they exist.
+       (serve_command_prep): New function.
+       * sanity.sh (secondary-wrapper, writeproxy): Dynamically switch the
+       servers proxy/primary status for testing.
+       (basica): Gratuitous reformatting.
+       (devcom3, config, release): Handle some new proxy/redirect error
+       messages.
+
+2004-08-17  Derek Price  <address@hidden>
+
+       * main.c (PrimaryServer): Include without PROXY_SUPPORT to support
+       redirects.
+       (main): Handle --primary-root without PROXY_SUPPORT.
+       * mkmodules.c (PrimaryServer), parseinfo.c (parse_config), root.c
+       (primary_root_add, primary_root_translate,
+       primary_root_inverse_translate): Likewise.
+
+2004-08-17  Derek Price  <address@hidden>
+
+       * client.c: Misc reformatting.
+       (handle_redirect, close_connection_to_server): New functions.
+       (failure_exit,*): s/int/bool/.
+       (responses): Add `Redirect'.
+       (get_server_responses): Handle response_type_redirect.
+       (get_responses_and_close): Use close_connection_to_server().
+       (supported_request): Change API to use bool & const.
+       (start_server): Handle response_type_redirect.
+       * client.h (supported_request): Update proto.
+       (type): Add response_type_redirect.
+       * main.c (lookup_command_attribute): Declare arg const.
+       * cvs.h (lookup_command_attribute): Ditto.
+       * sever.c (requests): Create dummy `Command-prep' request.
+
+2004-08-12  Derek Price  <address@hidden>
+
+       * main.c (main): Don't process --primary-root without PROXY_SUPPORT.
+       * root.c (primary_root_translate, primary_root_inverse_translate):
+       Declare inline.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * ms-buffer.h, ms-buffer.c: Disable contents without PROXY_SUPPORT.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * server.c (isProxyServer): Declare inline.
+       (reprocess_proxy_log): Rename to...
+       (rewind_buf_from_net): ...this and change all callers.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * sanity.sh (sync-secondary): Don't bother to log sync activity.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * buffer.c (buf_copy_data), buffer.h (buf_copy_data), log-buffer.c
+       (log_buffer_initialize, log_buffer_input, log_buffer_output,
+       log_buffer_rewind, log_buffer_closelog), log-buffer.h
+       (log_buffer_initialize), main.c (MaxProxyBufferSize), mkmodules.c
+       (config_contents), parseinfo.c (parse_config), server.c (server):
+       Switch eariler support for logs in memory buffers on
+       TRUST_OS_FILE_CACHE.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * buffer.c (buf_free_data, buf_copy_data): Only compile with proxy
+       support.
+       * buffer.h: Ditto for including the protos.
+
+2004-08-11  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_input): Bracket misguided attempt at improved
+       I/O efficiency with TRUST_OS_FILE_CACHE pragmas.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * cvs.h, main.c, mkmodules.c, parseinfo.c, server.c:
+       s/MaxSecondaryBufferSize/MaxProxyBufferSize/.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * sever.c (secondary_log, secondary_log_out): Rename globals everywhere
+       to...
+       (proxy_log, proxy_log_out): ...these.
+       (isSecondaryServer): Rename function...
+       (isProxyServer): ...to this.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * log-buffer.c: #ifdef PROXY_SUPPORT in appropriate places.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * cvs.h, log-buffer.h, main.c, mkmodules.c, parseinfo.c, server.c:
+       s/SECONDARY_SUPPORT/PROXY_SUPPORT/.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * server.c (isSecondaryServer): Declare static.
+       * server.h (isSecondaryServer): Remove proto.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * log-buffer.h (log_buffer_rewind, log_buffer_closelog): Don't define
+       protos without SECONDARY_SUPPORT.
+       * server.c (*): #ifdef correctly for !SECONDARY_SUPPORT.
+       * version.c (version): Remove unused code.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * server.c (server_cleanup): Remove unused variable.
+
+2004-08-10  Derek Price  <address@hidden>
+
+       * server.c (buf_from_net_save): Remove obsolete variable.
+       (server_cleanup): Don't close BUF_FROM_NET_SAVE.
+
+2004-08-09  Derek Price  <address@hidden>
+
+       * sanity.sh (sync-secondary, *info): Sync only the updated directories
+       rather than the entire repository after a write for a minor efficiency
+       improvement.
+       (info, taginfo): Hack *info to sync all dirs for these tests rather
+       than rewriting the sync-secondary script to handle old-style *info
+       format strings.
+
+2004-08-05  Derek Price  <address@hidden>
+
+       Beginnings of support for turning off writeproxy support (still broke.)
+       * cvs.h (PrimaryServer, MaxSecondaryBufferSize), main.c (PrimaryServer,
+       MaxSecondaryBufferSize), mkmodules.c (config_contents), parseinfo.c
+       (parse_config): Switch off when writeproxy support disabled.
+       * server.c (replace_file_offset, move_file_offset): Comment out
+       temporarily.
+
+2004-08-05  Derek Price  <address@hidden>
+
+       * filesubr.c (copy_file): Don't fsync.  It's slow.
+
+2004-08-05  Derek Price  <address@hidden>
+
+       * buffer.c (buf_copy_data): New function.
+       * buffer.h: Proto new function.
+       * cvs.h (MaxSecondaryBufferSize): Declare new config global.
+       * log-buffer.c: Allow file-backed memory buffers for "speed".
+       (struct log_buffer): Add new fields.
+       (log_buffer_force_file): New function.
+       (log_buffer_initialize): Initialize new fields.
+       (log_buffer_input, log_buffer_output): Handle logging to memory when
+       asked.
+       (log_buffer_disable): Remove function, moving much functionality...
+       (log_buffer_rewind): ...to this new function and expanding.
+       (log_buffer_closelog): Handle new fields and structs.
+       (log_buffer_get_fd): Remove function.
+       (setup_logfiles): Use new _initialize API.
+       * log-buffer.h: Update protos to match.
+       * main.c (MaxSecondaryBufferSize): Init new config global.
+       * mkmodules.c (config_contents): Add comments 4 MaxSecondaryBufferSize.
+       * parseinfo.c (parse_config): Parse MaxSecondaryBufferSize..
+       * server.c (secondary_log_name, secondary_log_out_name): Remove unused
+       globals.
+       (read_secondary_log): Remove function.
+       (reprocess_secondary_log): Use log_buffer_rewind() instead of the above.
+       (become_proxy): Ditto.
+       (server_cleanup): No need to clean up logfiles any longer.
+       (server): Use new log_buffer_initialize API.
+
+2004-08-04  Derek Price  <address@hidden>
+
+       * buffer.c (buf_read_data): s/abort/assert/.
+
+2004-08-04  Derek Price  <address@hidden>
+
+       * server.c (loop_over_inputs): Remove function, moving contents back...
+       (server): ...to here.
+
+2004-08-03  Derek Price  <address@hidden>
+
+       Checking in IO changes intended to improve speed for posterity since
+       they actually increase CPU usage by about .2% in remote mode and 5% in
+       writeproxy mode.
+       * Makefile.am (cvs_SOURCES): Add ms-buffer.c & ms-buffer.h.
+       * buffer.c (buf_free_data): New function.
+       (buf_read_data): s/abort/assert/.
+       (fd_buffer_input): Try to improve efficiency of blocking read.
+       * buffer.h (buf_free_data): New proto.
+       * server.c (reprocess_secondary_log): Only reopen log and attach to
+       BUF_FROM_NET - don't actually loop over inputs.
+       (become_proxy, serve_co, do_cvs_command): Use new log from above.
+       * ms-buffer.c, ms-buffer.h: New files.
+
+2004-08-03  Derek Price  <address@hidden>
+
+       * sanity.sh (TIMING): Make this work when not in $remotehost mode.
+       (reserved-13b): Use sorted output.
+
+2004-08-03  Derek Price  <address@hidden>
+
+       * log-buffer.c: Improve comments.
+
+2004-08-02  Derek Price  <address@hidden>
+
+       * sanity.sh (ssh-wrapper): Export CVSUMASK to remote host.
+       (*): Remove some hacks that were needed because CVSUMASK was not
+       exported to the remote host.  Misc cleanup.
+
+2004-07-28  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (pserver-auth-no-dos): ENOMEM on Solaris 7, 8, 9, and
+       AIX 4.3 all use the text "Not enough space" instead of the text
+       "Cannot allocate memory" as is printed on GNU/Linux, NetBSD, and
+       FreeBSD systems.
+
+2004-07-28  Derek Price  <address@hidden>
+
+       * sanity.sh (ssh-wrapper): Export CVS_RSH on remote host.
+
+2004-07-28  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (secondary-wrapper): Not all $TESTSHELL shells
+       are able to set a variable and export it at the same time.
+       Separate the value assignment from the export statement.
+       (writeproxy-secondary-wrapper): Ditto.
+
+2004-07-28  Derek Price  <address@hidden>
+
+       * server.c (isSecondaryServer): Fix array out of bounds problem.
+       * sanity.sh (ssh-wrapper): Wrap any rsh implementation we are handed to
+       forward variables relevant to testing.  Add new $TIMING variable to
+       allow timing of processes on a remote host.
+       (*): Gratuitous reformatting.
+
+2004-07-26  Derek Price  <address@hidden>
+
+       * server.c (read_secondary_log): Minor comment corrections.
+
+2004-07-23  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_output): Don't fsync.  It is unneeded and slow.
+       * server.c (move_file_offset, replace_file_offset): Ditto.
+       * log-buffer.c (log_buffer_flush_log): Remove function.
+
+2004-07-19  Derek Price  <address@hidden>
+
+       * log-buffer.c (log_buffer_disable): Return log FILE *.  Don't close
+       log.  Fix header comment.
+       (log_buffer_closelog): New function.
+       * log-buffer.h: Update protos to match.
+       * server.c (read_secondary_log): Rewind file pointer rather than
+       closing and reopening file for speed.
+       (serve_root): Close secondary log rather than just disabling when not
+       running in secondary mode.
+
+2004-07-19  Derek Price  <address@hidden>
+
+       * buffer.c (buf_flush): Replace abort w/assert.
+       * log-buffer.c (log_buffer_flush_log): New function for syncing a log.
+       (log_buffer_flush, log_buffer_flush): Don't sync log for speed.
+       * log-buffer.h (log_buffer_flush_log): New proto.
+       * sanity.sh: Tidy.
+       (run_filter): Accept file name to filter as argument.
+       (dotest_*): pass new arg to run_filter.
+       * server.c (read_secondary_log): Sync log before reopening.
+
+2004-07-16  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_input): Back out previous two changes due to
+       incompatibility with current state of write proxies.
+       * log-buffer.c (log_buffer_initialize): Handle new buffers which
+       already have some data in them.
+       (log_buffer_input): Don't fsync here.  It is slow.
+       * server.c (serve_root): Disable the secondary output log too.
+       (serve_noop, pserver_authenticate_connection): Misc cleanup.
+       * sanity.sh: Misc gratuitous cleanup.
+
+2004-07-16  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_input): Don't overwrite the input buffer the
+       second time through the blocking read loop.
+
+2004-07-15  Derek Price  <address@hidden>
+
+       * buffer.c (fd_buffer_input): Improve efficiency.
+       * sanity.sh (modify_repo): Move timestamp race avoidance to...
+       (sync-secondary): This script.
+       (big): Misc cleanup.
+
+2004-07-15  Derek Price  <address@hidden>
+
+       * sanity.sh: Misc gratuitous cleanup.
+       (modify_repo): Sleep 1 before rsync to avoid timestamp comparison
+       issues.
+
+2004-07-15  Derek Price  <address@hidden>
+
+       * log-buffer.c (log_buffer_output): Remove extremely slow fsync call.
+       (log_buffer_disable): Move to here so log files are sync'd before
+       close.
+       * sanity.sh (run_filter): New function to allow for filtering of cruft
+       output by Rational Quantify or other profilers.
+       (dotest_*): Call new function.
+
+2004-07-13  Derek Price  <address@hidden>
+
+       * server.c (prepost_proxy_proc): Add the CVSROOT string for the primary
+       server, as documented.
+
+2004-07-13  Derek Price  <address@hidden>
+
+       * tag.c (tag_filesdoneproc): Don't track posttag errors.
+       (cvstag): Move addition of successful tags to val-tags to...
+       (tag_fileproc): ...here and...
+       (rtag_fileproc): ...here.  Consolidate returns at single location.
+       (*): Misc reformatting.
+       * sanity.sh (sync-secondary): Include more data in the update-log.
+
+2004-07-13  Derek Price  <address@hidden>
+
+       * .cvsignore: Ignore coverage data generated by GCC.
+
+2004-07-12  Derek Price  <address@hidden>
+
+       * sanity.sh: Watch $servercvs and other minor fixes.
+
+2004-07-12  Derek Price  <address@hidden>
+
+       * server.c: Gratuitous reformatting.
+       * sanity.sh: Misc write proxy accommodations.
+
+2004-07-11  Derek Price  <address@hidden>
+
+       * log.c (log_fileproc, log_expand_revlist, log_fix_singledate,
+       log_count_print, log_tree, log_abranch, log_version), parseinfo.c
+       (Parse_Info, parse_config), rcs.c (RCS_fully_parse, rcsbuf_getkey,
+       rcsbuf_getrevnum, rcsbuf_valword, RCS_getbranchpoint, RCS_getdate,
+       RCS_getrevtime, RCS_checkout, RCS_findlock_or_tip, RCS_addbranch,
+       RCS_cmp_file, RCS_lock, RCS_unlock, RCS_delete_revs, RCS_deltas,
+       RCS_getdeltatext, RCS_putdtree): Print primary path.
+       * server.c (serve_kopt): Handle secondary log.
+       * sanity.sh: Misc accommodations.
+
+2004-07-11  Derek Price  <address@hidden>
+
+       * checkin.c (checkout_proc): Correct vi induced typo.
+
+2004-07-11  Derek Price  <address@hidden>
+
+       * admin.c (postadmin_proc), commit.c (precommit_proc), edit.c
+       (notify_proc), fileattr.c (postwatch_proc), logmsg.c (logfile_write),
+       server.c (prepost_proxy_proc), tag.c (posttag_proc, pretag_proc): Add
+       default %c format string.
+       * client.c, edit.c, lock.c, fileattr.c, mkmodules.c, myndbm.c,
+       parseinfo.c, recurse.c: Misc gratuitous cleanup.
+       * commit.c (commit_filesdoneproc): Move loginfo call to after CVSROOT
+       sync.
+       * checkout.c (checkout_proc), fileattr.c (fileattr_read), myndbm.c
+       (mydbm_open, mydbm_load_file): Print primary path.
+       * server.c (serve_checkin_time): Handle secondary log.
+       (prepost_proxy_proc): Move before first call.
+       (become_proxy): Move before first call.
+       (serve_notify): Become proxy for this request.
+       * sanity.sh: Misc accommodations.
+
+2004-07-10  Derek Price  <address@hidden>
+
+       * server.c (serve_notify): Handle secondary_log.
+
+2004-07-08  Derek Price  <address@hidden>
+
+       Intermediate checkin.  Adds some new server requests and test fixes.
+       * sanity.sh: Update tests to handle proxies and new hooks.
+       * cvs.h (CVSROOTADM_PREPROXY): Alphebetize & sub correct name.
+       * mkmodules.c (filelist): Alphabetize.
+       * server.c (serve_max_dotdot, serve_static_directory, serve_argumentx):
+       Handle secondary_log.
+       * tag.c (*): Misc gratuitous cleanup.
+
+2004-07-08  Derek Price  <address@hidden>
+
+       Intermediate checkin.  Adds preproxy, & postproxy hooks and some test
+       cruft to test everything.
+
+       * cvs.h (CVSROOTADM_*): Add new hook config files.
+       * log.c (log_fileproc): Print primary path.
+       * mkmodules.c (*_content): Add init content for new files.
+       (filelist): Add new files.
+       * rcs.c (RCS_parsercsfile_i): Set print_path.  Misc gratuitous cleanup.
+       (freercsnode): Free print_path.
+       * rcs.h (struct rcsnode): Add print_path.
+       * rcscmds.c (RCS_merge, RCS_exec_rcsdiff): Print primary path.
+       * server.c (isSecondaryServer): No longer static.
+       (serve_sticky, serve_argumentx): Handle secondary logging.
+       (prepost_proxy_proc): New function.
+       (become_proxy): Call pre & post proxy hooks.  Handle IO closing better.
+       * server.h (isSecondaryServer): No longer static.
+       * status.c (status_fileproc): Print primary path.
+       * sanity.sh: Accept --proxy argument and run in write proxy mode when
+       seen.  Misc fixes to account for other changes.  Misc gratuitous
+       cleanup.
+
+2004-07-02  Derek Price  <address@hidden>
+
+       Woo-hoo!  Write proxies work!
+       * client.c (open_connection_to_server): Set up log files...
+       (start_server): ...here.
+       * server.c (secondary_log_out_name, secondary_log_out): New globals.
+       (argument_cound, argument_vector, argument_vector_size): Move before...
+       (reprocess_secondary_log): ...referencing here.  Assume secondary_log.
+       (read_secondary_log): Accept buf & name args.
+       (serve_modified, serve_unchanged, serve_is_modified, serve_entry):
+       Handle logging pass.
+       (become_proxy): Use new output-to-client-log.  Verify buffers still
+       exist before using.
+       (output_dir): Translate paths to the client on the secondary.
+       (serve_co): Only reprocess the secondary log when one exists.
+       (server_cleanup): Free buf after shutdown.  Dispose of client output
+       log.
+       (server): Create client output log.
+       (*): Misc reformatting & detypecasting.
+       * log-buffer.c (log_buffer_output): Handle fatal_errors.
+       (log_buffer_flush): Don't operate on NULL streams.
+       (log_buffer_disable): Reformat so as not to confuse the optimizer.
+       * root.c (primary_root_translate): Remove unused variable and redundant
+       slash.
+       (primary_root_inverse_translate): New function.
+       * root.h: Add new proto.
+       * sanity.sh (writeproxy): Wrap server executables to set args and
+       server variables properly.  Fill in some test gaps.  Correct `cd' args.
+       Clean up wrappers.
+
+2004-06-30  Derek Price  <address@hidden>
+
+       * root.h (primary_root_add, primary_root_translate): New protos.
+       * root.c (primary_root_add, primary_root_translate): New functions.
+       * main.c (long_options): Add --primary-root.  Handle --primary-root
+       and --allow-root only with SERVER_SUPPORT.
+       (main): Ditto.
+       * server.c (move_file_offset): Set block before fsync.  Report
+       ftruncate errors.  Force sync after rearranging data.
+       (replace_file_offset): Force sync after replacing data.
+       (serve_directory): Translate roots based on --primary-root arg.
+       (serve_root): Likewise & don't rewrite the log file.
+       (become_proxy): Increment select's N arg because it is required.
+       (do_cvs_command): Use MAX macro appropriately.
+       * sanity.sh (writeproxy): Wrap the secondary server in such a way that
+       it gets the --primary-root option and the primary does not.  Move the
+       primary root out of the way for the read operations to prove only the
+       secondary was accessed.
+
+2004-06-30  Derek Price  <address@hidden>
+
+       * log-buffer.c (log_buffer_input, log_buffer_output): Flush logs as
+       soon as they are written to better diagnose hangs.
+
+2004-06-30  Derek Price  <address@hidden>
+
+       * client.c (connect_to_forked_server): Compile for SERVER_SUPPORT.
+
+2004-06-30  Derek Price  <address@hidden>
+
+       * buffer.c (buf_append_buffer): Handle NULL from->data.
+
+2004-06-28  Derek Price  <address@hidden>
+
+       * log-buffer.c (log_buffer_flush): Sync all, not just data.
+       * buffer.c (fd_buffer_flush): Ditto.  Ignore problems synchronizing
+       unsynchronizable descriptors.
+
+2004-06-28  Derek Price  <address@hidden>
+
+       Intermediate checkin on the way to enabling the write proxy.
+
+       * server.c (isSecondaryServer): Handle forked primary.
+       (read_secondary_log, move_file_offset, replace_file_offset,
+       become_proxy): New functions.
+       (reprocess_secondary_log): Use new read_secondary_log().
+       (serve_root): Replace `Root' request with new version for primary.
+       (do_cvs_command): Use new become_proxy() function.
+       (*): Gratuitous reformatting.
+       (server): Open new logs and avoid opening pipes to pserver twice.
+       * buffer.c (buf_initialize): Handle new LAST_INDEX & LAST_COUNT
+       initializers.
+       (*): Remove unnecessary typecasts.  Gratuitous reformatting.  Use
+       assert() rather than if()/abort().
+       (buf_append_buffer, buf_read_data, buf_copy_lines, buf_copy_counted):
+       Track LAST_INDEX & LAST_COUNT.
+       (buf_read_short_line): Track LAST_INDEX & LAST_COUNT.
+       * buffer.h (struct buffer): Add LAST_INDEX & LAST_COUNT.
+       * cvs.h: Include minmax.h.
+       * root.h (enum CVSmethod): Force null_method to 0.
+       * zlib.c: Remove unnecessary typecasts.  Gratuitous reformatting.  Use
+       assert() rather than if()/abort().
+
+2004-06-23  Derek Price  <address@hidden>
+
+       Checkout and probably other read-only commands now work.
+
+       * server.c (serve_expand_modules): Discard arguments even when
+       reprocessing.
+       (serve_argument): Always process arguments.
+       (serve_wrapper_sendme_rcs_options): Process in first pass.
+
+2004-06-23  Derek Price  <address@hidden>
+
+       Operate correctly in non-write proxy mode, delaying processing of most
+       commands until after the `Root' request is received.
+
+       * server.c (buf_from_net_save): New global variable to store the input
+       buffer from the client while the secondary log is being reprocessed.
+       (reprocessing): Global to track whether we are reprocessing.
+       (various redundant prototypes): Removed.
+       (fd_buffer_*): Remove unneeded typecasts.
+       (serve_valid_responses, serve_global_option, serve_set,
+       serve_valid_requests): Avoid processing twice.
+       (command_pid, outbuf_memory_error, input_memory_error): Moved above new
+       references.
+       (server): Factor loop over the client inputs to...
+       (loop_over_inputs): ...this new function.
+       (serve_root): Loop over secondary log of client inputs when we
+       discover we are not the secondary.
+       (*): Add !secondary_log assertions to verify that certain code paths
+       are not yet taken.
+       (do_cvs_command, serve_init): Add switch and pseudo-code comments about
+       what will need to be done on secondary servers.
+       (seve_noop): Print errors & "ok" in the first pass, skip "ok" but
+       restore handling of entries and notification in the second.
+       (serve_co): Note what will need to be done on secondaries.
+       (server_cleanup): Deal with buf_from_net_save when necessary.
+
+2004-06-22  Derek Price  <address@hidden>
+
+       * server.c (server): Move previously fatal error on failure to open a
+       secondary log to...
+       (serve_root): ...here, and only when we discover we are actually a
+       secondary server.
+       (server): Ensure an interrupt cannot dump core.
+
+2004-06-22  Derek Price  <address@hidden>
+
+       Enable the writeproxy log and turn it off when we determine we are not
+       running as a secondary server.
+
+       * log-buffer.c: Compile log buffer routines in server mode for write
+       proxy.
+       (struct log_buffer): Add fatal_error member.
+       (log_buffer_initialize, log_buffer_input): Allow for fatal write errors
+       for writeproxy.
+       (log_buffer_disable): Turn off the log when asked.
+       (log_buffer_shutdown): Close log via log_buffer_disable.
+       (log_buffer_input, log_buffer_output, log_buffer_flush): Don't operate
+       on the log when it doesn't exist.
+       (*): Misc gratuitous cleanup.
+       (setup_logfiles): Use new log_buffer_initialize API.
+       * log-buffer.h (log_buffer_initialize, log_buffer_disable): New
+       prototypes.
+       (log_buffer_initialize): Update prototype.
+       * server.c: Include log-buffer.h.  Gratuitous reformatting of pragmas.
+       (secondary_log_name, secondary_log): New globals.
+       (server): Set up recording for writeproxy.
+       (serve_root): Turn off recording when we determine that we are not a
+       secondary.
+
+2004-06-21  Derek Price  <address@hidden>
+
+       * sanity.sh (writeproxy): Verify that secondary is updated after a
+       commit.  Comment test that verifies that commit took place on primary.
+
+2004-06-10  Derek Price  <address@hidden>
+
+       * sanity.sh (writeproxy): Test response to a failing rsync.
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * server.c (isSecondaryServer): New function.
+       (MAXHOSTNAMELEN): Move to top of file and improve comment.
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * parseinfo.c (parse_config): Get my enum references correct.
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * parseinfo.c (parse_config): Verify that the ProxyServer connection
+       method is valid.
+
+2004-09-02  Derek Price <address@hidden>
+
+       * server.c (do_cvs_command): Pass new args to fd_buffer_initialize().
+       (server): Don't initialize BUF_TO_NET & BUF_FROM_NET when
+       pserver_authenticate already did.
+       (pserver_read_line): New function to access pserver auth dialogue via
+       buffers.
+       (pserver_authenticate_connection): Init buffers to/from net and access
+       via pserver_read_line() and the buffer output functions.
+       (fd_buffer_*): Move to...
+       * buffer.c (fd_buffer_*): ...here.  Handle blocking input more
+       efficiently.
+       (buf_initialize): Handle get_fd() argument.
+       (buf_nonio_initialize, packetizing_buffer_initialize): Pass new
+       get_fd() argument.
+       (buf_copy_data, buf_free_data, buf_read_short_line, buf_get_fd,
+       packetizing_buffer_get_fd): New functions.
+       (bufread_line): Wrap buf_read_short_line().
+       (stdio_buffer_*): Remove these functions.
+       (*): Some reformatting of function headers.
+       * buffer.h (struct buffer, buf_initialize): Add get_fd().
+       (buf_read_short_line, buf_get_fd, buf_copy_data, buf_free_data,
+       fd_buffer_initialize): New prototypes.
+       * client.c (get_port_number, get_cvs_port_number,
+       get_proxy_port_number): Compile with SERVER_SUPPORT.
+       (make_bufs_from_fds): Likewise, and accept new ROOT arg and pass on to
+       fd_buffer_initialize().
+       (connect_to_pserver, connect_to_forked_server): Pass ROOT to
+       make_bufs_from_fds().
+       (start_server): Factor much functionality into...
+       (open_connection_to_server): ...this new function.
+       * client.h (make_bufs_from_fds): Update proto.
+       (open_connection_to_server): New proto.
+       * log-buffer.c (log_buffer_initialize): Handle get_gd().
+       (log_buffer_get_fd): New function.
+       * zlib.c (compress_buffer_initialize, compress_buffer_get_fd): Ditto
+       twice.
+       * rsh-client.c (start_rsh_server): Pass ROOT to make_bufs_from_fds().
+       * sanity.sh (pserver): Expect new error messages.
+
+2004-09-01  Derek Price <address@hidden>
+
+       * run.c: Remove unneeded typecasts.  Reformat function headers.  Fix
+       trace.
+
+2004-08-31  Derek Price <address@hidden>
+
+       * subr.c (format_cmdline), cvs.h (format_cmdline): Accept bool rather
+       than int.
+       * admin.c, commit.c, edit.c, fileattr.c, logmsg.c, tag.c: Change all
+       callers.
+       * main.c (UseNewInfoFmtStrings), cvs.h (UseNewInfoFmtStrings):
+       s/int/bool/.
+       * parseinfo.c: Change all references.
+
+2004-08-31  Derek Price <address@hidden>
+
+       * checkout.c: Reformat function headers.  Remove unnecessary typecasts
+       and prototypes.  Some other reformatting for legibility.
+
+2004-08-31  Derek Price <address@hidden>
+
+       * buffer.c: Gratuitous reformatting of header comments.
+       s/abort/assert/.  Remove unnecessary typecasts.
+       * buffer.h: Remove unnecessary "extern" decls.  Some reformatting.
+
+2004-08-24  Derek Price <address@hidden>
+
+       * recurse.c (start_recursion): Don't shorten //. to / (use //).
+
+2004-08-24  Derek Price <address@hidden>
+
+       * recurse.c (start_recursion): Strip trailing CWD indirections on
+       repository.
+       * sanity.sh (rstar-toplevel): Update to account for new behavior.
+       (Report from Dan Peterson <address@hidden>.)
+
+2004-08-24  Mark D. Baushke  <address@hidden>
+
+       * recurse.c (do_recursion): Correct test for calling
+       server_pause_check to occur when locktype != CVS_LOCK_WRITE.
+       (Patch suggested by Ian Lance Taylor <address@hidden>
+       in bug#198).
+
+2004-08-24  Derek Price <address@hidden>
+
+       * sanity.sh: Update a few tests to account for the recent error message
+       changes.
+
+2004-08-24  Derek Price <address@hidden>
+
+       * rcs.c (RCS_valid_rev): Declare arg const.
+       * rcs.h: Likewise.
+
+2004-08-24  Derek Price <address@hidden>
+
+       * rcs.c (translate_symtag): Prevent infinite loop.
+       * tag.c (tag_check_valid): Check tag syntax before searching for tags.
+       * sanity.sh (tag-space): Some tests for the above.
+       (Report from Dan Peterson <address@hidden>.)
+
+2004-08-24  Derek Price <address@hidden>
+
+       * tag.c (tag_check_valid): Use RCS_valid_rev() rather than duplicating
+       code.  Misc error message improvements.
+
+2004-08-24  Mark D. Baushke  <address@hidden>
+
+       * ignore.c (ignore_directory): Include the terminating NUL
+       character in the directory name comparison to avoid matching
+       substrings of directories by accident.
+       (Report and suggested fix from James E Wilson
+       <address@hidden>.)
+       * sanity.sh (modules4): Add some more tests testing the above
+       change.
+
+2004-08-20  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (binfiles): Cleanup the 2a temporary directory.
+
+2004-08-20  Derek Price <address@hidden>
+
+       Cache tags in val-tags on successful creation to avoid problems with
+       write proxies.  Merged from `writeproxy2' branch.
+
+       * tag.c (tag_filesdoneproc): Don't track posttag errors.
+       (cvstag): Move addition of successful tags to val-tags to...
+       (tag_fileproc): ...here and...
+       (rtag_fileproc): ...here.  Consolidate returns at single location.
+       (*): Misc reformatting.
+
+       * tag.c (add_val_tag): New function with content factored from...
+       (tag_check_valid): ...here.
+       (cvstag): Call add_val_tag() when needed.
+       * annotate.c, checkout.c, commit.c, diff.c, ls.c, patch.c, recurse.c,
+       tag.c, update.c: Pass new args to tag_check_valid.
+
+       Merge of postadmin, posttag, and postwatch functionality from
+       `writeproxy2' branch.
+
+       * admin.c (postadmin_proc), commit.c (precommit_proc), edit.c
+       (notify_proc), fileattr.c (postwatch_proc), logmsg.c (logfile_write),
+       server.c (prepost_proxy_proc), tag.c (posttag_proc, pretag_proc): Add
+       default %c format string.
+
+       * cvs.h (CVSROOTADM_POSTWATCH): New macro.
+       * fileattr.c (*): Misc cleanup.
+       (postwatch_proc): New function.
+       (fileattr_write): Call watch proc when done writing fileattr.
+       * mkmodules.c (postwatch_contents): New var.
+       (filelist): Add postwatch.
+       * watch.c (addremove_filesdoneproc): Remove function.
+       (watch_addremove): Don't call above function.
+       (*): Misc cleanup.
+       * watch.h: Remove some unnecessary "extern" decls.
+
+       * admin.c (postadmin_proc, admin_filesdoneproc): New functions.
+       (admin): Pass admin_filesdoneproc() to start_recursion().
+       (*): Misc gratuitous cleanup.
+       * cvs.h (CVSROOTADM_*): Alphabetize, add new hook config files.
+       (format_cmdline): Fix proto to match change below.
+       * mkmodules.c (*_content): Add init content for new files.  Misc
+       cleanup.
+       (filelist): Add new files.
+       * tag.c (struct pretag_proc_data): Move before first use.
+       (posttag_proc, tag_filesdoneproc): New functions.
+       (rtag_proc): Pass new procs to start_recursion().
+       (*): Misc gratuitous cleanup.
+       * sanity.sh: Misc accommodations.
+
+2004-08-19  Mark D. Baushke  <address@hidden>
+
+       * log-buffer.c (log_buffer_output): Protect call to fsync()
+       with #ifdef HAVE_FSYNC.
+
+2004-08-18  Mark D. Baushke  <address@hidden>
+
+       * log-buffer.c (log_buffer_input): Protect call to fsync()
+       with #ifdef HAVE_FSYNC.
+
+2004-08-17  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (sshstdio): Fix comment typo plus gratuitous
+       reformatting.
+
+       * client.c (handle_m): Workaround to deal with stdio getting put
+       into non-blocking via redirection of stderr and interaction with
+       ssh on some platforms. On those boxes, stdio can put stdout
+       unexpectedly into non-blocking mode which may lead to fwrite() or
+       fflush() failing with EAGAIN, but cvs not checking for the error.
+       (Patch suggested by Frank Hemer <address@hidden>.)
+
+       * client.c (handle_e): Similar fix for stderr.
+       * sanity.sh (sshstdio): New test for non-blocking stdio via ssh.
+
+2004-08-11  Derek Price <address@hidden>
+
+       * sanity.sh (basicc): Work around a problem in Linux 2.2 & Bash 2.05b
+       which prevents a `cd ..' from a deleted directory from working.
+       (Original patch from Matthew Ogilvie <address@hidden>.)
+
+2004-07-18  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (newb-123j0): Use DOTSTAR at end of response.
+
+2004-07-17  Mark D. Baushke  <address@hidden>
+
+       * main.c (ImportNewFilesToVendorBranchOnly): New variable.
+       * cvs.h (ImportNewFilesToVendorBranchOnly): Declare new variable.
+       * import.c (import): Respect setting of
+       ImportNewFilesToVendorBranchOnly.
+       * mkmodules.c (config_contents): Document the default
+       ImportNewFilesToVendorBranchOnly=no option in newly generated
+       config files.
+       * parseinfo.c (parse_config): Parse
+       ImportNewFilesToVendorBranchOnly option.
+       * sanity.sh (importX2): New test, to test
+       ImportNewFilesToVendorBranchOnly config file option.
+       (New feature from Chris Demetriou <address@hidden>.)
+
+2004-07-17  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (basic2-14): Use DOTSTAR to be more portable.
+
+       * status.c (status_fileproc): Print datetimes using output_cvs_tagged.
+       * sanity.sh (basic2-14): Allow for an extra blank line at the end.
+
+2004-07-16  Derek Price  <address@hidden>
+
+       * server.c (pamh): New global static to hold the PAM handle.
+       (server): Close the PAM session so that logging works properly.
+       (switch_to_user): Opens a PAM session and gets credentials from PAM so
+       that PAM modules can change group permissions.  Get the username from
+       PAM so that PAM modules can modify the final local username.
+       (cvs_pam_conv): Changed the assertions to allow PAM to output text to
+       the user.
+       (check_system_password): Renamed to...
+       (check_pam_password): ...this.  Changed argument type for username so
+       that PAM modules can modify the username under authentication.  Setting
+       a terminal so some PAM modules which expect it to be set work, it is
+       set to the pam servicename which defaults to the binary name.  Set the
+       username from PAM after authentication if a module has changed it.
+       (check_password): Calls check_pam_password if PAM is enabled otherwiseu
+       calls check_system_password.
+       (Patch from Brian Murphy <address@hidden>.)
+
+2004-07-15  Derek Price  <address@hidden>
+
+       * sanity.sh (run_filter): New function to allow for filtering of cruft
+       output by Rational Quantify or other profilers.
+       (dotest_*): Call new function.
+
+2004-07-13  Derek Price  <address@hidden>
+
+       * .cvsignore: Ignore GCC profiling data.
+
+2004-07-12  Derek Price  <address@hidden>
+
+       * client.c: Misc reformatting.
+
+2004-07-12  Derek Price  <address@hidden>
+
+       * main.c: fix format_time_t to call localtime
+       (Patch from Bart Robinson  <address@hidden>.)
+
+2004-07-02  Derek Price  <address@hidden>
+
+       * vers_ts.c: Gratuitous reformatting & detypecasting.
+
+2004-06-30  Derek Price  <address@hidden>
+
+       * log-buffer.c (log_buffer_input, log_buffer_output): Flush logs as
+       soon as they are written to better diagnose hangs.
+
+2004-06-29  Derek R. Price  <address@hidden>
+
+       * sanity.sh (toplevel-12): Handle new error output.
+
+2004-06-29  Derek R. Price  <address@hidden>
+
+       * subr.c (xrealloc_and_strcat): Use bool in place of short.
+
+2004-06-29  Derek R. Price  <address@hidden>
+
+       * client.c: Gratuitous reformatting.
+       (send_repository): Send relative Directory when server reports it is
+       able to handle it.
+       * server.c (serve_directory): Handle relative directories.
+       (output_dir): Send relative directories.
+       (requests): Add `Relative-directory' request.
+
+2004-06-26  Mark D. Baushke  <address@hidden>
+
+       * import.c (import_usage): Add new -X flag.
+       (import): Handle new -X flag.
+       (process_import_file): Handle new -X flag.
+       (killnew): New static flag variable to indicate use of -X flag.
+       (preserve_initial_permissions): New function, extracted from
+       add_rcs_file().
+       (expand_and_copy_contents): Likewise.
+       (add_rcs_file): New argument, do_killnew, to cause "import -X" flag
+       processing.  Implement -X flag, and use newly abstracted functions.
+       * rcs.h (add_rcs_file): Update prototype for do_killnew argument.
+       * commit.c (checkaddfile): Update for add_rcs_file function change.
+       * mkmodules.c (init): Likewise.
+       * client.c (handle_mt): Handle an importmergecmd tag without
+       any conflicts (for 'import -X' support).
+       * sanity.sh (importX): New test.
+       (New feature from Chris Demetriou <address@hidden>.)
+
+2004-06-22  Derek Price  <address@hidden>
+
+       * wrapper.c: Add explicit "void" return type to "wrap_clean_fmt_str"
+       definition.
+       (Patch from Conrad T. Pino <address@hidden>.)
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * server.c (entries, serve_is_modified): Reorder to remove prototypes.
+       (supported_response): Remove prototype.
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * commit.c, filesubr.c, history.c, server.c, wrapper.c: Various
+       security fixes.
+       (Original patch from Stefan Essler <address@hidden> & Sebastian
+       Krahmer <address@hidden>.)
+
+       * cvs.h: Include xsize.h.
+
+2004-06-09  Derek Price  <address@hidden>
+
+       * server.c (serve_entry, serve_is_modified, serve_unchanged): Protect
+       against malformed entries.
+       * sanity.sh (server): Tests for same.
+
+2004-06-07  Larry Jones  <address@hidden>
+
+       * sanity.sh (basica): More tests for string-based revision inc.
+
+2004-06-04  Larry Jones  <address@hidden>
+
+       * subr.c (increment_revnum): Rewrite ala RCS to work directly on
+       the string rather than converting to int to avoid overflow.
+       * sanity.sh (basica): New tests for above, update others to match.
+
+2004-06-04  Derek Price  <address@hidden>
+
+       Preliminary writeproxy functionality.
+       * main.c: Declare PrimaryServer.
+       * cvs.h: Likewise, but extern.
+       * mkmodules.c: Add PrimaryServer to default CVSROOT/config content.
+       * parseinfo.c: Handle PrimaryServer line.
+       * sanity.sh: (Failing) tests for writeproxy functionality.
+
+2004-05-28  Derek Price  <address@hidden>
+
+       * main.c (format_time_t, gm_format_time_t): Use my_strftime from
+       GNULIB rather than the system-dependant strftime.
+
+2004-05-20  Derek Price  <address@hidden>
+
+       * sanity.sh: s/GMT/UTC/ where appropriate.
+
+2004-05-20  Derek Price  <address@hidden>
+
+       * server.c (cvs_output_tagged): Move new server code inside a
+       SERVER_SUPPORT block.
+
+2004-05-19  Derek Price  <address@hidden>
+
+       * cvs.h (gmformat_time_t, entries_time, unix_time_stamp): New protos.
+       * ls.c (struct long_format_data): New structure.
+       (ls_print): Print datetimes using cvs_output_tagged.
+       (long_format_data_delproc): New function.
+       (ls_fileproc, ls_direntproc): Keep track of long_format_data.
+       * main.c (Make_Date): Use standard quotes.
+       (format_time_t, gmformat_time_t): New functions.
+       (format_date_alloc): Use new functions.  Improve comments.
+       * server.c (cvs_output_tagged): Only output in localtime in local mode.
+       * vers_ts.c (entries_time, unix_time_stamp): New functions.
+       (time_stamp): Use new functions.
+       * sanity.sh (ls, branches2): Use $ISO8601DATE where applicable.
+
+2004-05-19  Derek Price  <address@hidden>
+
+       Output `cvs log' times in the local timezone.
+
+       * client.c (handle_mt): Handle the new "date" MT response
+       * server.c (cvs_output_tagged): Likewise
+       * cvs.h: Proto for format_date_alloc
+       * main.c (format_date_alloc, tm_diff): Added.
+       * log.c (log_version): Use MT response to tag date output.
+       (Original patch from Bart Robinson <address@hidden>.)
+
+       * sanity.sh (importc, rcs, rcs4): Use TZ=GMT for the duration of these
+       tests to obtain consistent times in output.
+       (ISO8601DATE, ISO8601DATE1971, ISO8601DATE2034): Use more precise
+       regex.
+
+2004-05-19  Derek Price  <address@hidden>
+
+       * server.c (serve_unchanged, serve_is_modified): Overwrite existing
+       data in timefields.  Fixes CAN-2004-0396.
+
+2004-05-15  Derek Price  <address@hidden>
+
+       * lock.c (Lock_Cleanup), rcs.c (rcs_cleanup), server.c
+       (server_cleanup):  Clean up inchoherent comment.
+
+2004-05-15  Derek Price  <address@hidden>
+
+       * cvs.h, client.c, history.c, main.c, rcs.c, sanity.sh, server.c:
+       Back out get_date() changes from 2004-04-28.
+
+2004-05-14  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (trailingslashes): During cleanup remove topfile,v to
+       avoid problems in later tests (editor-1).
+
+2004-05-13  Derek Price  <address@hidden>
+
+       * sanity.sh (trailingslashes): Note TODO item #205 in the comment.
+
+2004-05-13  Derek Price  <address@hidden>
+
+       * sanity.sh (trailingslashes): New tests to expose a bug in CVS when
+       paths are specified with trailing slashes.  This relates to TODO #205.
+
+2004-05-13  Mark D. Baushke  <address@hidden>
+
+       * ls.c (ls): Use client_senddate() so the server is able to parse
+       the date/time.
+
+2004-05-12  Derek Price  <address@hidden>
+
+       * entries.c, subr.c: Gratuitous reformatting.
+
+2004-05-12  Derek Price  <address@hidden>
+
+       * subr.c (file_has_conflict), vers_ts.c (time_stamp_server): Only
+       special case "=" when it is the only character in a timestamp field.
+       Gratuitous reformatting.
+       * vers_ts.c (time_stamp_server): Check for NULL in a consistent manner.
+       Gratuitous reformatting.
+
+2004-05-12  Derek Price  <address@hidden>
+
+       * sanity.sh (ls): Add some new tests of the ls command with dates
+       specified and show an assertion error when an existing file is
+       specifically requested.
+       (Original patch from Alexander Taler <address@hidden>.)
+
+2004-05-11  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (RCSKEYDATE): New regular expression to match the rcs
+       keyword date format.
+       (keyword,keywordlog): Use it.
+       (RCSDELTADATE): New regular expression to match the internal rcs
+       file format delta.
+       (admin): Use it.
+       (RCSDATE): Deleted.
+       (ISO8601DATE}: A more exact regular expression for cvs log date
+       output than the previous RCSDATE variable.
+       (basica,basic2,branches,branches3,multibranch,import,importb,importc,
+       join,modules,editor,binfiles,log,log2,keyword,multibranch2,admin,
+       reserved,recase,multiroot,trace):
+       Use ${ISO8601DATE} for cvs log output date patterns.
+       (TOUCH1971,ISO8601DATE1971): New variables for test importc.
+       (TOUCH2034,ISO8601DATE2034): Ditto.
+       (importc): Use them. Isolate the touch commands in a sub-shell
+       with TZ=GMT to make the time more predictable.
+       (RAWRCSDATE2000A,RAWRCSDATE1996A,RAWRCSDATE1996B): New date variables.
+       (ISO8601DATE2000A,ISO8601DATE1996A,ISO8601DATE1996B): Regexps to match.
+       (rcs): Use them.
+       (rcs4): Put the touch commands into sub-shells for temporary
+       TZ=GMT use.
+
+2004-05-11  Derek Price  <address@hidden>
+
+       * checkin.c (Checkin), commit.c (commit_filesdoneproc, remove_file,
+       checkaddfile), rcs.c (RCS_checkin): Remove redundant commit messages.
+       Suppress output when really_quiet.
+       * sanity.sh: Update to match.
+
+2004-05-10  Derek Price  <address@hidden>
+
+       * sanity.sh (top-level): Rename to...
+       (rstar-toplevel): ...this for clarity.
+
+2004-05-10  Derek Price  <address@hidden>
+
+       * sanity.sh (dirs2-10ar): Remove unnecessary empty argument.
+
+2004-05-08  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): Suppress warnings if really_quiet.
+
+2004-05-08  Derek Price  <address@hidden>
+
+       * server.c: Gratuitous reformatting.  Remove unnecessary prototype &
+       unnecessary type cast.
+
+2004-05-07  Derek Price  <address@hidden>
+
+       * sanity.sh (basica): Remove unnecessary empty arguments.
+
+2004-05-07  Derek Price  <address@hidden>
+
+       * cvs.h (fopen_case): Remove obsolescent prototype.
+
+2004-05-05  Derek Price  <address@hidden>
+
+       * sanity.sh: Wait a second and retry if cvs-serv* directories are
+       discovered to avoid race conditions on some systems.
+       (Patch from Pavel Roskin <address@hidden>.)
+
+2004-05-05  Derek Price  <address@hidden>
+
+       * commit.c: Some gratuitous reformatting.
+
+2004-05-04  Derek Price  <address@hidden>
+
+       * update.c: Some gratuitous reformatting.
+
+2004-05-04  Derek Price  <address@hidden>
+
+       * add.c (add): Remove obsolete FIXME comment.
+       (*): Some gratuitous reformatting.
+
+2004-05-03  Derek Price  <address@hidden>
+
+       * src/sanity.sh (branches2-14-ls-4): Change expectations due to new -d
+       flag.
+
+2004-05-02  Derek Price  <address@hidden>
+
+       * sanity.sh (ls): Add some new tests of ls -d flag.
+       (Original patch from Alexander Taler <address@hidden>.)
+
+       * ls.c (ls): Accept -d to show dead files.
+       (ls_proc): Add W_ATTIC to start_recursion flags when user requests dead
+       files.
+       (ls_fileproc): Don't show dead files with -d.  Print "dead" in long
+       listings for dead files.
+
+2004-05-02  Derek Price  <address@hidden>
+
+       * ls.c (ls_dirleaveproc): Return err.
+       (Original patch from Mark D. Baushke <address@hidden>.)
+
+2004-05-02  Derek Price  <address@hidden>
+
+       * ls.c (ls_print): Return 0.
+       (Patch from Mark D. Baushke <address@hidden>.)
+
+2004-04-30  Derek Price  <address@hidden>
+
+       * tag.c (tag_check_valid): Treat a NULL repository the same as an empty
+       one.
+       * sanity.sh (branches2-ls-7): Verify absence of assertion failure.
+
+2004-04-29  Derek Price  <address@hidden>
+
+       * sanity.sh (branches2-rls-1): Reformat comment.
+
+2004-04-28  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs2-5): Update to cope with new getdate.y.
+
+2004-04-28  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_LIBADD): Use libs for nanosleep & clock_gettime when
+       necessary.
+       * cvs.h: Remove get_date() proto and #include getdate.h.
+       * client.c, history.c, main.c, rcs.c, server.c: Use new form of
+       get_date().
+       * Makefile.in: Regenerated.
+
+2004-04-28  Derek Price  <address@hidden>
+
+       * lock.c (set_lock), subr.c (sleep_past): Assume we have nanosleep.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       * root.c (normalize_cvsroot): Use asnprintf in preference to other
+       indirections.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       Add dirname module from GNULIB.
+
+       * add.c, client.c, commit.c, find_names.c, import.c, lock.c, ls.c,
+       repos.c, server.c, subr.c: s/ISDIRSEP/ISSLASH/.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       * commit.c, create_adm.c, entries.c, filesubr.c, hash.c, update.c:
+       Gratuitious reformatting.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       * ls.c (ls_direntproc): Remove unneeded assertion.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       * ls.c (ls): Set client_prune_dirs in order to delete any directories
+       created by the server.
+       (ls_dirleaveproc): Always delete directories created by
+       ls_direntproc().
+       * sanity.sh (ls): Update to match.
+
+2004-04-27  Derek Price  <address@hidden>
+
+       * ls.c: Remove unneeded prototypes.  Add `prune' option.
+       (dircount): Remove static global.
+       (set_tag, created_dir, ls_prune_dirs): New static globals.
+       (ls): Handle new prune option.
+       (ls_print_dir): Don't count directories, just remember not to print a
+       blank line in front of the first one.  Don't list empty directories
+       when prune is specified.
+       (ls_delproc): New function to dispose of dirlist.
+       (ls_direntproc): Reorganize to assume a directory without a parent must
+       be listed.  Create missing directories a la update and checkout so that
+       they may be processed.  Use new delproc when creating new list nodes.
+       (ls_dirleave_proc): New function to remove directories created by
+       ls_direntproc.
+       (ls_proc): Call start_recursion() once for each argument so that
+       ls_direntproc() may assume that any directory without a parent in the
+       dirlist must be listed and others must not unless recursing.
+       * sanity.sh (ls): New tests.
+       (Thanks to a report from Mark D. Baushke <address@hidden>.)
+
+2004-04-26  Derek Price  <address@hidden>
+
+       * rsh-client.c (start_rsh_server): Don't rely on GNU argument
+       processing capabilities in the RSH command.
+       (Report from Mark Andrews <address@hidden>.)
+
+2004-04-26  Derek Price  <address@hidden>
+
+       * ls.c (dircount): s/long long/long/ for Windows.
+
+2004-04-23  Derek Price  <address@hidden>
+
+       * ls.c (usage): Sync with manual.
+
+2004-04-23  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add ls.c.
+       * client.c, subr.c: Move #include vasnprintf.h to...
+       * cvs.h: ...here.
+       (ls): Add prototype.
+       * ls.c: New file.
+       * main.c (cmds): Add ls & rls entries.
+       * server.c (serve_ls, serve_rls): New functions.
+       (requests): Add list, ls, rlist, & global-list-quiet.
+       * sanity.sh (branches2): Test new cvs ls & rls commands.
+       * Makefile.in: Regenerated.
+       (Thanks for patches from Alexander Taler <address@hidden>
+       and Mark D. Baushke <address@hidden>.)
+
+2004-04-23  Derek Price  <address@hidden>
+
+       * Makefile.am (AM_CPPFLAGS): No, really, $(top_builddir)/lib.
+       * Makefile.in: Regenerated.
+
+2004-04-23  Derek Price  <address@hidden>
+
+       * Makefile.am (AM_CPPFLAGS): Add the builddir/lib directory for
+       generated header files.
+       * Makefile.in: Regenerated.
+
+2004-04-22  Derek Price  <address@hidden>
+
+       * cvs.h: Move include of fnmatch.h into lib/system.h with the other
+        GNULIB headers.
+
+2004-04-22  Derek Price  <address@hidden>
+
+       * tag.c: Use bool where appropriate.  Some gratuitous reformatting.
+
+2004-04-19  Derek Price  <address@hidden>
+
+       * ignore.c: Gratuitous reformatting.
+
+2004-04-16  Derek Price  <address@hidden>
+
+       * tag.c: Gratuitous reformatting.
+
+2004-04-16  Derek Price  <address@hidden>
+
+       * client.c (connect_to_pserver): Use size_t instead of int as argument
+       to asnprintf.  Some gratuitous reformatting.
+       (Report from Mark <address@hidden>.)
+
+2004-04-15  Derek Price  <address@hidden>
+
+       * client.c, commit.c, server.c: Gratuitous reformatting.
+
+2004-04-11  Derek Price  <address@hidden>
+
+       * client.c (call_in_directory): Check paths the server sends us to make
+       sure they are within a sandbox the user requested be updated.
+       (is_valid_client_path, path_list_prefixed): New functions.
+
+2004-04-11  Derek Price  <address@hidden>
+
+       * modules.c (do_module): Don't allow up-level references in paths to
+       step out of the repository.
+       * sanity.sh (multiroot3): Update tests and add a few more.
+
+2004-04-11  Derek Price  <address@hidden>
+
+       * client.c (get_proxy_port_number): Use CVS_PROXY_PORT as the default
+       proxy port rather than CVS_AUTH_PORT.
+
+2004-04-10  Mark D. Baushke  <address@hidden>
+
+       * client.c (get_cvs_port_number): Use CVS_AUTH_PORT as the default
+       for "cvspserver" rather than the CVS_PROXY_PORT.
+       (Fixes parseroot-3r on machines without "cvspserver" in
+       their /etc/services file.)
+
+2004-04-07  Derek Price  <address@hidden>
+
+       * sanity.sh (parseroot): s/oberon/$username/.
+
+2004-04-06  Derek Price  <address@hidden>
+
+       Import Jim Kingdon's old, old patch which allows CVS to work via a
+       web proxy server.
+       * client.c (*): Some gratuitous restyling.
+       (get_proxy_port_number): New function.
+       (connect_to_pserver): Connect via proxy.
+       * client.h (CVS_PROXY_PORT): Define.
+       * root.c (parse_cvsroot): Parse method options.
+       * sanity.sh (parseroot): Add new tests.
+
+2004-04-06  Derek Price  <address@hidden>
+
+       * root.h (cvsroot_t): Move username, password, hostname, port inside
+       CLIENT_SUPPORT ifdefs.
+       * buffer.c, gssapi-client.c, root.c, sever.c: Add #ifdefs as necessary
+       so that this will compile without client support and the root.h change.
+       Some gratuitous restyling.
+
+2004-04-06  Derek Price  <address@hidden>
+
+       * log.c, tag.c: Gratuitous restyling.
+
+2004-04-04  Derek Price  <address@hidden>
+
+       * filesubr.c (isabsolute): Move...
+       * subr.c: ...here and use new ISABSOLUTE macro.
+
+2004-04-04  Derek Price  <address@hidden>
+
+       * client.c (send_file_names): Cast out an unneeded const to avoid a
+       warning.
+
+2004-04-03  Larry Jones  <address@hidden>
+
+       * cvsrc.c: Remove unused declarations.
+       * run.c: Ditto.
+       * server.h (gunzip_and_write): Declare.
+
+       * client.c (send_file_names): Remove unused variables.
+
+2004-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh (client): Honor $keep.
+
+2004-04-02  Derek Price  <address@hidden>
+
+       * log.c, patch.c, rcs.c: Gratuitous restyling.
+
+2004-04-02  Derek Price  <address@hidden>
+
+       * import.c (import): Use ISDIRSEP rather than testing paths against `/'
+       directly.  Some gratuitos reformatting.
+
+2004-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Note the effectiveness of `tail -f check.log' in providing
+       running status.
+
+2004-04-02  Derek Price  <address@hidden>
+
+       * client.c (send_file_names): Move code which calculates and sends
+       Max-dotdot...
+       (send_max_dotdot): ...to this new function.
+       (send_files): Call send_max_dotdot.
+       * sanity.sh (files-14): Expect .. in paths to work now.
+       (status): Add a few new tests using `..'.
+
+2004-04-01  Derek Price  <address@hidden>
+
+       * lock.c: Gratuitous restyling.
+
+2004-04-01  Derek Price  <address@hidden>
+
+       * commit.c, cvs.h, server.c: Gratuitous restyling.
+       * run.c (run_exec): Ditto, plus call cvs_flush{out,err}() instead of
+       flushing stderr & stdout directly.
+
+2004-03-29  Derek Price  <address@hidden>
+
+       * login.c, server.c: Gratuitous restyling.
+
+2004-03-25  Derek Price  <address@hidden>
+
+       * client.c (send_file_names): Initialize string to NULL rather than to
+       a single byte string containing only a null byte.
+       * subr.c (xrealloc_and_strcat): If the destination string is NULL,
+       simply allocate a new string.
+       (Original report from Chris Bohn <address@hidden>.)
+
+2004-03-24  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (ISODATE): Fix ISO 8601 format comment.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh (toplevel): Remove FIXME type comment and unneeded
+       Emtptydir removal.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * update.c: Some minor style cleanup.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * update.c: Some minor style cleanup.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh (top-level): Don't match most of the assertion since this
+       string is often system dependent.
+       (Thanks to Larry Jones <address@hidden>.)
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh (top-level): Don't match the assertion's line number.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh (top-level): New test to confirm assertion failure.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh: Only verify argument to -f when -f was passed.  Check for
+       $TMPDIR/cvsXXXXXX temp files after each test.
+
+2004-03-22  Derek Price  <address@hidden>
+
+       * sanity.sh: Verify that the argument to -f is really a test.
+
+2004-03-20  Larry Jones  <address@hidden>
+
+       * cvs.h: Change command_name to cvs_command_name to avoid conflict
+       on HP-UX (incredibly, it declares a global command_name in prot.h,
+       which is included from shadow.h, which we include in server.c).
+       Change all references.
+
+       * subr.c (previous_rev): Fix == vs = typo.
+
+       * buffer.h: Add prototype for buf_empty.
+
+       * add.c (add): Remove unused variable.
+
+2004-03-20  Derek Price  <address@hidden>
+
+       * add.c (add, add_directory, build_entry), admin.c (admin_dirproc),
+       checkin.c (Checkin), checkout.c (safe_location, build_dirs_and_chdir),
+       client.c (add_prune_candidate, send_repository, send_a_repository,
+       send_to_server, start_rsh_server, send_arg, send_modified,
+       send_ignproc, send_filesdone_proc, send_dirent_proc,
+       send_dirleave_proc, client_notify), commit.c (check_direntproc,
+       check_filesdoneproc, checkaddfile, commit_direntproc,
+       commit_dirleaveproc, lock_RCS, precommit_proc, find_data,
+       find_dirent_proc, find_ignproc, find_filesdoneproc), create_adm.c
+       (Create_Admin), cvsrc.c (read_cvsrc), diff.c (diff_dirproc,
+       diff_filesdoneproc, diff_dirleaveproc), edit.c (onoff_filesdoneproc,
+       mark_up_to_date, editor_set, notify_proc_args, notify_proc, notify_do,
+       notify_check), entries.c (Scratch_Entry, Register, WriteTag),
+       expand_path.c (expand_variable, expand_path), fileattr.c
+       (fileattr_startdir), filesubr.c (mkdir_if_needed, xchmod,
+       last_component), history.c (history_write), ignore.c (ignore_directory,
+       ignore_files), import.c (get_comment, add_rcs_file, expand_at_signs),xi
+       lock.c (lock_filesdoneproc), log.c (log_dirproc), logmsg.c
+       (logfile_write, rcsinfo_proc, update_logfile_proc, editinfo_proc,
+       verifymsg_proc, do_editor, do_verify, Update_Logfile), main.c (main
+       program_name, program_path, command_name), parseinfo.c (Parse_Info),
+       patch.c (patch_dirproc), rcs.c (RCS_getdatebranch, rcs_lockfilename,
+       RCS_parse, RCS_setattic, RCS_getversion, RCS_gettag, RCS_getbranch,
+       RCS_getdate, RCS_datecmp, RCS_getrevtime, RCS_setexpand,
+       expand_keywords, RCS_checkout, RCS_addbranch, RCS_checkin, RCS_lock,
+       RCS_cmp_file, RCS_deltas, rcs_lockfilename, make_file_label),
+       rcscmds.c (RCS_output_diff_options, call_diff, RCS_merge,
+       RCS_exec_rcsdiff, diff_exec), recurse.c (start_recursion, do_recursion,
+       do_file_proc), remove.c (remove_dirproc), repos.c (Name_Repository,
+       Short_Repository), root.c (Name_Root, Create_Root), run.c
+       (piped_child), server.c (output_dir, server_register,
+       server_checked_in, server_update_entries, server_copy_file,
+       server_set_entstat, server_clear_entstat, server_set_sticky,
+       server_template, cvs_output_tagged), status.c (status_dirproc), subr.c
+       (make_message_rcslegal), tag.c (pretag_proc, tag_dirproc,
+       check_fileproc, check_filesdoneproc, tag_fileproc, val_direntproc),
+       update.c (update_dirent_proc, update_dirleave_proc, update_ignproc,
+       update_filesdone_proc, isemptydir), vers_ts.c (time_stamp_server,
+       time_stamp), watch.c (watch_modify_watchers, addremove_filesdoneproc),
+       zlib.c (read_and_gzip): Make most string args const, mainly in the
+       interest of preserving repository & updatedir but including some
+       collateral damage.  Update a few functions to comply with new
+       requirement.  Some style fixes.
+       * client.h, cvs.h, edit.h, fileattr.h, rcs.h, server.h, update.h,
+       watch.h: Update prototypes to match.
+
+2004-03-20  Derek Price  <address@hidden>
+
+       * sanity.sh (conflicts2): s/cvs/$testcvs/.
+
+2004-03-20  Derek Price  <address@hidden>
+
+       * add.c (add): Correct longstanding resurrection bugs.  Remove FIXME
+       comment to this effect.  Set mode and Entries timestamps of resurrected
+       files correctly.
+       * sanity.sh (basica, binfiles, conflicts2, recase, resurrection,
+       update-p): Update tests to compensate.  Remove FIXCVS comments.
+
+2004-03-19  Mark D. Baushke  <address@hidden>
+
+       * server.c (gserver_authenticate_connection): Handle large
+       GSSAPI packets dynamically.
+       (Bug report from Douglas Engert <address@hidden>)
+
+2004-03-19  Derek Price  <address@hidden>
+
+       * cvs.h (pathname_levels, previous_rev): Remove leading underscore from
+       prototype arguments to avoid potential conflicts with implementations.
+
+2004-03-18  Derek Price  <address@hidden>
+
+       * cvs.h (pathname_levels): Make string argument const.
+       * subr.c (pathname_levels): Simplify function.
+
+2004-03-17  Derek Price  <address@hidden>
+
+       * commit.c (precommit_list_to_args_proc), logmsg.c (do_editor), subr.c
+       (format_cmdline), tag.c (pretag_list_to_args_proc):
+       s/atribute/attribute/.
+       (Report from Matthew Doar <address@hidden>.)
+
+2004-03-17  Derek Price  <address@hidden>
+
+       * subr.c (pathname_levels): Get it right this time.
+
+2004-03-17  Derek Price  <address@hidden>
+
+       * subr.c (pathname_levels): Remove incorrect assertion and just
+       return 0 when pathname is NULL.
+
+2004-03-17  Derek Price  <address@hidden>
+
+       * subr.c (pathname_levels): Use ISDIRSEP() instead of strchr('/')
+       and remove FIXME comment to that effect.
+
+2004-03-16  Derek Price  <address@hidden>
+
+       * main.c (main): Update the --version Copyright (c) string to
+       include 2004.
+
+2004-03-15  Mark D. Baushke  <address@hidden>
+
+       * release.c (release): Add missing xmalloc of update_cmd.
+
+2004-03-15  Derek Price  <address@hidden>
+
+       * release.c (release): Enable authentication and encryption for a child
+       update process when necessary.
+       (Original patch from Dan Russell <address@hidden> via Hal Mahaffey
+       <address@hidden>.)
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * add.c (add): Only call server_updated() when we actual have a new
+       resurrected file for the client.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * cvs.h (previous_rev, write_letter): New prototypes.
+       (struct file_info): Move to before the write_letter prototype.
+       * add.c (add): Allow resurrection of files which used to exist on a
+       branch.
+       * subr.c (previous_rev): New function.
+       * update.c: Consolidate like pragmas.
+        (write_letter): Remove prototype.  Remove static declaration.
+       * sanity.sh (resurrection): New tests.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * commit.c (remove_file): Print the actual previous revision instead of
+       a branch number.
+       * sanity.sh: Update to match.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_cmp_file): Print the actual name of the file we failed to
+       open in the error message.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * diff.c (diff_fileproc): Allow diffing of new files against arbitrary
+       revisions instead of assuming that there is no RCS archive file.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * sanity.sh: Update serveral tests to use $CPROG & $SPROG correctly.
+
+2004-03-14  Derek Price  <address@hidden>
+
+       * add.c (add): Update file resurrection messages for consistency.
+       * sanity.sh: Update to match.
+
+2004-03-13  Derek Price  <address@hidden>
+
+       * server.c (server_updated): Fix header comment.
+
+2004-03-13  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Remove error.h since it is now included in
+       lib.
+       * Makefile.in: Regenerated.
+
+2004-03-09  Larry Jones  <address@hidden>
+
+       * run.c: Move #includes required for cmdline_escape and friends...
+       * subr.c: ...to here.
+
+2004-03-07  Derek Price  <address@hidden>
+
+       * run.c (struct cmdline_bindings, cmdline_bindings_hash_node_delete,
+       cmdline_escape, cmdline_quote, format_cmdline): Move...
+       * subr.c: ...here so they will compile under Windows.
+
+2004-03-03  Derek Price  <address@hidden>
+
+       * import.c (import): Check that the module name specified by the user
+       does not contain `CVS' as a directory name.
+       * ignore.c (ign_add): Never cease ignoring "CVS" - it is a reserved
+       name.
+       (Original patch from Dan Peterson <address@hidden>.)
+
+       * sanity.sh (import-CVS): New tests for the above.
+
+2004-02-29  Larry Jones  <address@hidden>
+
+       * import.c (expand_at_signs): Change type of len to size_t.
+       * subr.c (resolve_symlink): Move declaration of newname inside
+       #ifdef, clean up coding style.
+       * zlib.c (gunzip_and_write): Fix up potential overlow problems.
+       (read_and_gzip): Add explicit casts to placate paranoid compilers.
+
+2004-02-28  Larry Jones  <address@hidden>
+
+       * sanity.sh (join6): New tests for previous fix.
+
+       * update.c (join_file): One more fix to avoid dereferencing NULL.
+       (Reported by Steve McIntyre <address@hidden>.)
+       * sanity.sh (join6): New tests for above.
+
+2004-02-25  Larry Jones  <address@hidden>
+
+       * update.c (join_file): Fix optimization to avoid dereferencing NULL.
+       (Reported by Steve McIntyre <address@hidden>.)
+
+2004-02-25  Derek Price  <address@hidden>
+
+       No longer require directories specified to `checkout -d' to exist.
+
+       * checkout.c (safe_location): Only confirm that destination is a safe
+       location for directories that already exist since we can assume that
+       creating directories under such a safe directory is acceptable.
+       (dir_to_build): Remove just_chdir member.
+       (checkout_proc): Add trace.  No longer set dir_to_build->just_chdir.
+       Minor reformatting.
+       (build_dirs_and_chdir): Don't create or register directories that are
+       not created.
+       * sanity.sh (*): Update tests to account for new behavior.
+
+2004-02-25  Derek Price  <address@hidden>
+
+       * buffer.c (buf_empty): New function.
+       * server.c (server): Check for unread data in buffer before closing.
+
+2004-02-25  Derek Price  <address@hidden>
+
+       * release.c (release): Restore the initial directory before and after
+       calling various sections of code that expect it to prevent corruption
+       of CVS/Entries files on release of a subdir and tell unedit() what to
+       release.
+       * sanity.sh: Add test case for release.c fix.
+       (Original patch from Matthew Ogilvie  <address@hidden>.)
+
+       * client.c (last_entries): Move global variable...
+       (call_in_directory): ...here (now a local variable).  Remove test that
+       always evaluates to true.
+       (last_dir_name): Remove unused global variable.
+
+2004-02-24  Larry Jones  <address@hidden>
+
+       * filesubr.c (xresolvepath): Fix crash in error case.
+       (Reported by Reinhard Zierke <address@hidden>.)
+
+2004-02-24  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos): Fix it so that it ignores the user's
+       .cvsrc file (.cvsrc "checkout -r" used to cause the "rm -r 1"
+       command to print warnings and wait for input).
+       (Original patch from Matthew Ogilvie  <address@hidden>.)
+
+       * sanity.sh (reposmv, parseroot, devcom3, binwrap3):
+       s/_SAVED\>/_save/ for consistency.
+
+2004-02-24  Derek Price  <address@hidden>
+
+       * sanity.sh (taginfo-newfmt-examine-2): Correct expected results.
+
+2004-02-23  Larry Jones  <address@hidden>
+
+       * sanity.sh (taginfo-examine-1): Correct expected results.
+
+2004-02-20  Derek Price  <address@hidden>
+
+       * subr.c (expand_string): Use x2realloc() from GNULIB for core
+       functionality.
+
+2004-02-20  Derek Price  <address@hidden>
+
+       * subr.c (set_nonblock_fd): Move back to...
+       * server.c: ...here.
+       * cvs.h: Remove protos for the above two functions.
+       * buffer.c (stdio_buffer_shutdown): Remove unexessary and possibly
+       dangerous check for unread data on a pipe with a nonblock read.
+
+2004-02-20  Larry Jones  <address@hidden>
+
+       * tag.c (check_fileproc): Remove unused variable.
+
+2004-02-20  Derek Price  <address@hidden>
+
+       * ChangeLog, commit.c, filesubr.c, rcs.c, root.c, sanity.sh, subr.c,
+       update.c: Remove VIM editor commands.
+
+2004-02-20  Derek Price  <address@hidden>
+
+       Import xalloc module from GNULIB, as well as its remaining unimported
+       dependency, the exitfail module.
+
+       * cvs.h: #include "xalloc.h".
+       * subr.c (xmalloc, xrealloc, xstrdup): Remove these functions.
+
+2004-02-20  Larry Jones  <address@hidden>
+
+       * hash.h (struct node): Change data from char * to void *, change
+       all callers.
+
+       * run.c (cmdlinequote, cmdlineescape): Use prototype in definition
+       to match cvs.h.
+       (format_cmdline): UNIQUE_*_TYPE_* macros imply HAVE_*, so no need
+       to check for both.  Remove duplicate code for size_t and ptrdiff_t.
+
+       * tag.c (check_fileproc): Remove spurious invalid cast, clean up
+       coding style.
+
+       * commit.c (precommit_list_proc): Remove vestigial prototype.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * run.c (format_cmdline): Don't accept printf `L' modifier at all when
+       long doubles are not available.  Allow UNIQUE_FLOAT_TYPE_LONG_DOUBLE to
+       imply HAVE_LONG_DOUBLE.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * run.c: Remove include of stddef.h - it is already included via
+       lib/system.h.
+
+2004-02-19  Larry Jones  <address@hidden>
+
+       * run.c: Include the appropriate headers for wchar_t and wint_t,
+       create a typedef for convproc and use it (required for va_arg),
+       add explicit comparisons to keep gcc -Wall happy, remove unused
+       variables.
+       (format_cmdline): Fix bugs and portability problems.
+       * tag.c: Remove unused global variable.
+       (pretag_proc): Correct call to format_cmdline: %hhc is not a valid
+       printf format (should just be %c) and NULL must be cast to the correct
+       type in a varargs call.
+       (pretag_list_to_args_proc): Initialize arg to keep gcc -Wall happy,
+       remove unused variable, add auxiliary variable to simplify code,
+       clean up coding style.
+
+       * commit.c (precommit_list_to_args_proc): Initialize arg to keep
+       gcc -Wall happy, remove unused variable, clean up coding style.
+       (precommit_proc): Cast NULL to the correct type in varargs call.
+       * edit.c (notify_proc): Remove unused variables.
+       * expand_path.c (expand_path): Initialize inquotes, add explicit
+       comparison to keep gcc -Wall happy.
+       * logmsg.c: Remove unused global variables and function decl.
+       (do_verify): Add explicit comparison to keep gcc -Wall happy,
+       clean up coding style.
+       (logmsg_list_to_args_proc): Initialize arg to keep gcc -Wall happy,
+       remove unused variable.
+       (logfile_write): Cast NULL to the correct type in varargs call.
+       (verifymsg_proc): Cast NULL to the correct type in varargs call.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * run.c (format_cmdline): Correct some typos and cut/paste errors.
+       Switch on HAVE_WINT_T for Solaris.  Switch on HAVE_INTMAX_T for other
+       pre-C99 platforms.
+
+2004-02-19  Derek Price <address@hidden>
+
+       * sanity.sh (crerepos): Correct comment.
+
+2004-02-19  Derek Price <address@hidden>
+
+       * logmsg.c (verifymsg_proc), run.c (format_cmdline): Plug memory leak.
+       (Report from Mark D. Baushke <address@hidden>.)
+
+       * run.c (format_cmdline): Simplify two expressions.
+
+2004-02-19  Larry Jones  <address@hidden>
+
+       * login.c (password_entry_operation): Initialize line.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * sanity.sh (tests): Add errmsg3.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * sanity.sh (errmsg3): Don't create directories named `tmp' in
+       $TESTDIR to avoid conflicts with the default value of $TMPDIR.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos): Don't create directories named `tmp' in
+       $TESTDIR to avoid conflicts with the default value of $TMPDIR.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * sanity.sh (directory_cmp): Use $TESTDIR for temporary files, like the
+       dotest functions.
+
+2004-02-19  Derek Price  <address@hidden>
+
+       * sanity.sh: No longer allow user override of $tmp.  Set $TMPDIR to a
+       directory under $TESTDIR, as for $HOME, but still allowing for user
+       override.  Check for cvs-serv* directories under $TMPDIR rather than
+       $tmp at the end of the script.
+
+2004-02-19  Derek Price <address@hidden>
+
+       * run.c (cmdline_quote): Plug memory leak.
+       (format_cmdline): Don't bother with freeing memory before a call to
+       error() which will exit.  Plug memory leak.
+       (Report from Mark D. Baushke <address@hidden>.)
+
+2004-02-18  Derek Price <address@hidden>
+
+       * run.c (format_cmdline): Move variable declaration to a position more
+       acceptable to the ANSI C standards.
+
+2004-02-17  Derek Price <address@hidden>
+
+       * commit.c (precommit_proc): Installed new format_cmdline() instead
+       of the old, nonuniform info file interpreter.  Support for new user
+       data field in Parse_Info() callbacks.  Use cmdlinequote() instead of c.
+       10 lines of quote processing.
+       * cvs.h (expand_path):  Update proto.
+       (UseNewInfoFmtStrings): New global variable to keep track of the config
+       option of the same name.
+       (format_cmdline): Added function prototypes and type definitions to
+       support this new function.
+       * edit.c (notify_proc):  Added the formatsafe flag to an
+       expand_path() call.  Installed new format_cmdline() instead of the old,
+       nonuniform info file interpreter.  Support for new user data field in
+       Parse_Info() callbacks.
+       * expand_path.c (expand_path):  Added the formatsafe flag to and some
+       code to double up '%'s in variable subs if formatsafe is set on the
+       presumption that the variables that expand_path() subs into the string
+       are already working paths to files or whatever.  It should be quoting
+       too but I haven't done that yet.
+       * logmsg.c (title_proc, logmsg_list_to_args_proc, update_logfile_proc,
+       rcsinfo_proc, editinfo_proc, verifymsg_proc, logfile_write): Installed
+       new format_cmdline() instead of the old, nonuniform info file
+       interpreter.  Support for new user data field in Parse_Info()
+       callbacks.
+       * main.c:  Added global UseNewInfoFmtStrings variable to keep track
+       of the config file option of the same name (see above).
+       * mkmodules.c (commitinfo_contents, editinfo_contents,
+       taginfo_contents, verifymsg_contents, loginfo_contents: Document new
+       format string features.
+       (config_contents): Added new UseNewInfoFmtStrings option with default
+       of yes.
+       * modules.c (do_module):  Added the formatsafe flag to an
+       expand_path call.
+       * parseinfo.c (Parse_Info, parse_config):  Added the formatsafe flag
+       to an expand_path() call.  Added handling for UseNewInfoFmtStrings
+       option in the config file.  Set to no, modifications needed to set to
+       yes are harmless.  Set to yes, modifications needed for full
+       compatibility cause deprecation warnings.  Eliminating deprecation
+       warnings should allow executable to be compile with
+       --disable-old-info-format-support passed into configure.  Added user
+       data field (closure) which is passed through into callproc to
+       Parse_Info().
+       * run.c (format_cmdline): New function to provide uniform handling of
+       *info file scripting hook lines.
+       (cmdline_bindings_hash_node_delete,
+       (cmdlineescape, cmdlinequote): New functions to "quote" and "escape"
+       strings like you would to get them past a command line parser as an
+       argument.
+       (run_setup): Made quote aware
+       * sanity.sh (info, taginfo, config, pserver, lockfiles, reserved):
+       New tests for the new format string functionality as well as the
+       support of backwards compatibility.  Had to alter a few of the tests to
+       not care which version of some of the (shared) config files they'd just
+       checked in so that the tests can be run in any order.
+       (taginfo): Add tests for file names with spaces in them.
+       * server.c (template_proc): Support for new user data field in
+       Parse_Info() callbacks.
+       * tag.c (pretag_proc): Installed new format_cmdline() instead of the
+       old, nonuniform info file interpreter.  Add support for new user data
+       field in Parse_Info() callbacks.
+       (check_fileproc): Add proper tag_info struct as node data rather than a
+       single revision number in a string and pass tlist properly rather than
+       in a global variable.
+       (check_filesdone_proc): Altered to use non-global tlist.
+       (tag_delproc): Handle new tag_info struct data members.
+       (pretag_list_to_args_proc): Ditto.
+       (pretag_list_proc): Deleted.
+       * wrapper.c (Parse_Info): Added the formatsafe flag to an expand_path()
+       call.
+
+2004-02-17  Derek Price  <address@hidden>
+
+       * sanity.sh: Check for $PWD != $TESTDIR after each set of tests rather
+       than once at the end.  Check that there are no cvs-serv* directories in
+       $tmp after each set of remote tests.
+
+2004-02-17  Derek Price  <address@hidden>
+
+       * sanity.sh: Don't check for an empty $TESTDIR - if $TESTDIR was empty
+       then the preceding call to mkdir would have failed anyhow.
+
+2004-02-17  Larry Jones  <address@hidden>
+
+       * log.c (rlog_proc): Fix (harmless) uninitialized variable.
+
+       * sanity.sh (basicc): Add tests pointing out defective handling
+       of the Entries file.
+
+2004-02-17  Derek Price  <address@hidden>
+
+       * checkout.c (build_dir_and_chdir): Expand header comment.
+
+2004-02-15  Mark D. Baushke  <address@hidden>
+
+       * annotate.c (rannotate_proc): Plug a memory leak.
+       * log.c (log_fileproc): Ditto.
+       * tag.c (tag_fileproc): Ditto.
+       * update.c (checkout_file): Ditto.
+       * server.c (server_updated): Do not buf_free (filebuf) here.
+
+2004-02-15  Derek Price  <address@hidden>
+
+       Make error() accessible to the GNULIB functions.
+
+       * error.h: Move into the ../lib directory.
+
+2004-02-13  Derek Price  <address@hidden>
+
+       * lock.c (Reader_Lock, lock_dir_for_write): Plug memory leaks.
+       (Report from Mark D. Baushke <address@hidden>.)
+
+2004-02-13  Derek Price  <address@hidden>
+
+       * lock.c (remove_lock_files): Minor refactoring.
+
+2004-02-12  Mark D. Baushke  <address@hidden>
+
+       * lock.c (lock_exists): Plug a memory leak.
+
+2004-02-12  Derek Price  <address@hidden>
+
+       * modules.c: Reformat comment and line to fit in 80 chars.
+
+2004-02-12  Mark D. Baushke  <address@hidden>
+
+       * server.c (do_cvs_command): Plug a memory leak.
+       (Use buf_free() rather than free().)
+
+2004-02-12  Derek Price  <address@hidden>
+
+       * sanity.sh (lockfiles): Reformat a comment for 80 characters.  Fix a
+       few minor issues that caused tests to fail in remote mode.  Clean up
+       after test.
+
+2004-02-12  Derek Price  <address@hidden>
+
+       * lock.c (unlock_proc): Don't expect an int in closure as it is not
+       condoned in the C standard.  For now, just assume zero since this
+       function is currently only called from one location.
+       (remove_locks): Pass NULL for the closure argument to unlock_proc().
+
+2004-02-12  Derek Price  <address@hidden>
+
+       * lock.c (unlock_proc): Use closure as true/false free_repository
+       free_repository argument to remove_lock_files.  Move to a position
+       above remove_locks and delete prototype.
+       (remove_locks): Don't free storage, as specified in our header comment,
+       in order to avoid a seg fault that could otherwise occur after waiting
+       on a lock.
+       * sanity.sh (lockfiles): Add tests for all operation (read, read
+       promotably, or write) and lock combinations.
+       (Original report from Mark <address@hidden>.)
+
+2004-02-12  Larry Jones  <address@hidden>
+
+       * modules.c (_do_module): Rename to my_module to avoid reserved name.
+       * stack.c (_push, _pop, _unshift, _shift): Rename to do_*.
+
+2004-02-12  Mark D. Baushke  <address@hidden>
+
+       * commit.c (find_fileproc): Plug a memory leak.
+
+2004-02-12  Larry Jones  <address@hidden>
+
+       * lock.c (_lock_simple_remove): Rename to remove_lock_files to avoid
+       reserved name.  Fix typo (free => free_repository).
+       (lock_simple_remove): Delete; use remove_lock_files directly.
+       (lock_simple_remove_and_free): Ditto.
+       (_lock_exists): Rename to lock_exists.
+
+2004-02-11  Larry Jones  <address@hidden>
+
+       * root.c (parse_cvsroot): Set hostname in fork mode for error messages.
+       * buffer.c (stdio_buffer_shutdown): Undo previous change.
+
+2004-02-11  Mark D. Baushke  <address@hidden>
+
+       * buffer.c (buf_free): Plug a memory leak.
+       * commit.c (checkaddfile): Ditto.
+
+       * server.c (fd_buffer_shutdown): Avoid a double free().
+
+       * parseinfo.c (parse_config): Fix comments.
+
+2004-02-11  Derek Price  <address@hidden>
+
+       * buffer.c (stdio_buffer_shutdown): Add logic to avoid attempting to
+       print current_parsed_root->hostname when using the fork method.
+
+2004-02-11  Derek Price  <address@hidden>
+
+       * server.c (do_cvs_command): Simplify stream & pipe closing.
+       (Suggestion from Eric Siegerman <address@hidden>.)
+
+       * cvs.h, subr.c (set_block_fd): Remove this unnecessary function.
+
+2004-02-11  Derek Price  <address@hidden>
+
+       * checkout.c (checkout_proc): Remove unneeded variable and enclosing
+       block.
+       * modules.c (_do_modules): Minor whitespace change.
+
+2004-02-10  Derek Price  <address@hidden>
+
+       * lock.c (lock_simple_remove): Move core functionality...
+       (_lock_simple_remove): ...here.
+       (lock_simple_remove_and_free): New function.
+       (set_promotable_lock): Use new function to avoid freeing data that will 
be
+       reused.
+
+2004-02-10  Derek Price  <address@hidden>
+
+       * server.c (do_cvs_command): s/FIXCVS/FIXME/ in comment.
+       (set_block_fd, set_nonblock_fd): Move to...
+       * subr.c: ...here.
+       * cvs.h: Add protos for the above two functions.
+       * buffer.c (stdio_buffer_shutdown): Replace fgetc() which checked for
+       unread data on a pipe with a nonblock read.
+
+2004-02-10  Derek Price  <address@hidden>
+
+       * server.c (do_cvs_command): Have the server child close all the pipes
+       but the flow control pipe and wait on an EOF on the flow control pipe
+       from the parent when done to avoid a race condition that could
+       otherwise generate a SIGPIPE for the parent before the SIGCHILD when
+       the other pipes were so full after a child exited that the parent
+       attempted to write a stop byte to the flow control pipe.
+       (Original report from <address@hidden>.)
+
+2004-02-10  Derek Price  <address@hidden>
+
+       * buffer.c (stdio_buffer_shutdown): Add a helpful comment.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       * lock.c (lock_simple_remove): Add comments.  Use critical sections to
+       set some variables that might otherwise cause trouble.
+       (struct lock): Correct comment.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       Attempt to improve readability of code.
+
+       * lock.c (promotable_lock): Rename to...
+       (set_promotable_lock): ...this.
+       (set_promotablelock_proc): Expand header comment.
+       (Promotable_Lock): Rename to...
+       (lock_tree_promotably): ...this.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       * lock.c (set_writelock_proc): Remove unused prototype.
+       (promotable_lock): Remove unneded whitespace.
+       (Promotable_Lock): Correct comments.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       * sanity.sh (co-d): Update comments and tests to reflect the current
+       state of my side of my discussion with Larry Jones on how these
+       commands should behave.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       * sanity.sh (emptydir): Add two new tests for how modules -d behaves
+       when a directory already exists in the user's workspace.
+       (emptydir): Add --keep functionality.
+
+2004-02-09  Derek Price  <address@hidden>
+
+       * sanity.sh (co-d): New test to prove `co -d' failure case.
+
+2004-02-05  Derek Price  <address@hidden>
+
+       * sanity.sh (recase): Fix typo that creeped in somehow between my last
+       test run and my commit.
+
+2004-02-04  Derek Price  <address@hidden>
+
+       * modules.c (do_modules): Move content to and make this function a
+       wrapper for...
+       (_do_modules): ...this new function which can watch for infinite loops
+       in alias modules.
+       * stack.c (_push, _pop, _unshift, _shift, push_string, pop_string,
+       unshift_string, shift_string): New
+       functions.
+       * stack.h (push_string, pop_string, unshift_string, shift_string: New
+       prototypes.
+       * sanity.sh (modules): Add check for nested alias loops.
+
+2004-02-04  Derek Price  <address@hidden>
+
+       * sanity.sh (recase): Update test names and comments for clarity and
+       consistency.
+
+2004-02-04  Derek Price  <address@hidden>
+
+       * sanity.sh (recase): Restore some cruft necessary when clients know
+       they are on case insensitive systems.
+
+2004-02-03  Derek Price  <address@hidden>
+
+       Preserve the case of checked out directories in a path as well as file
+       names for client communication with the server.
+
+       * Makefile.am (cvs_SOURCES): Add stack.c & stack.h.
+       * stack.c, stack.h: New files.
+       * cvs.h: Include stack.h.
+       * client.c (send_file_names): Preserve the case of directories in a
+       path as well as file names for communication with the server.
+
+       * Makefile.in: Regenerated.
+
+2004-02-04  Derek Price  <address@hidden>
+
+       * checkout.c (find_fileproc): Update error message for consistency.
+       * sanity.sh (basica): Update to compensate.
+
+2004-02-04  Derek Price  <address@hidden>
+
+       * classify.c (Classify_File): Update header comment block and reformat
+       prototype for readability in 80 character widths.
+
+2004-02-02  Derek Price  <address@hidden>
+
+       * sanity.sh (*): Update tests for the new status message from update.c.
+
+2004-02-02  Derek Price  <address@hidden>
+
+       * sanity.sh (join-rm): New test for issue #104 & #159.
+
+2004-02-02  Derek Price  <address@hidden>
+
+       * update.c (join_file): Correct status message for consistency.
+
+2004-02-02  Derek Price  <address@hidden>
+
+       Continue removal from server of handling of case insensitive clients.
+
+       * cvs.h: Remove extern declaration of ign_case.
+       * ignore.c (ign_case): Remove declaration.
+       (ign_name): Remove support for ign_case.
+       * server.c (serve_case): Ditto.
+       (requests): No longer support the "Case" request.
+       * rcs.c (locate_rcs): Remove reference to GLOBAL in function header
+       comment.
+
+2004-02-02  Derek Price  <address@hidden>
+
+       * client.c (send_file_names): Restore prescribed client handling of the
+       FILENAMES_CASE_INSENSITIVE switch.
+
+2004-01-25  Derek Price  <address@hidden>
+
+       * server.c (kserver_authenticate_connection): Fix call to
+       switch_to_user().
+       (Original patch from Alexey Mahotkin <address@hidden>.)
+
+2004-01-22  Derek Price  <address@hidden>
+
+       * modules.c (do_module): Strip trailing slashes before checking for
+       infinite alias loops.
+       * sanity.sh (modules): Tests for response to infinite alias loops.
+
+2004-01-17  Mark D. Baushke  <address@hidden>
+
+       * logmsg.c (do_verify): Eliminate double-free bug.
+       (Original patch from Gerald Combs.)
+
+2004-01-12  Mark D. Baushke  <address@hidden>
+
+       * lock.c (lock_name): Deal with potentially NULL string pointers
+       in calls to TRACE.
+       (promotable_lock): Ditto.
+       (set_lock): Ditto.
+       * sanity.sh (trace): Update to latest patterns.
+
+2004-01-07  Larry Jones  <address@hidden>
+
+       * checkout.c (safe_location): Remove unused variable(s).
+       * lock.c (lock_tree_for_write): Ditto.
+       * rcs.c (RCS_checkin): Ditto.
+       * subr.c (compare_revnums): Ditto.
+       * tag.c (tag_check_valid): Ditto.
+       * mkmodules.c (init): Initialize err and return it rather than 0.
+       * server.c (do_cvs_command): Only define and set max_command_fd if
+       we're actually going to use it.
+
+2004-01-06  Mark D. Baushke  <address@hidden>
+
+       * socket-client.c (socket_buffer_initialize): Fix argument
+       declaration for VMS compiler.
+       (Patch submitted from Michael Lemke
+       <address@hidden>.)
+
+2004-01-01  Larry Jones  <address@hidden>
+
+       * zlib.c (read_and_gzip, gunzip_and_write): Fix potential buffer
+       overruns, use names for magic numbers.
+       (Original patch from Jeff Downs <address@hidden>.)
+
+2003-12-17  Larry Jones  <address@hidden>
+
+       * main.c (main): Don't reference isremote without CLIENT_SUPPORT.
+       (Patch from Jim Salter <address@hidden>.)
+
+2003-12-18  Derek Price  <address@hidden>
+
+       * server.c (switch_to_user): SysLog attempts to root from pserver.
+
+2003-12-18  Derek Price  <address@hidden>
+
+       * server.c (switch_to_user): Don't allow CVS to run as root in pserver
+       mode.
+       (Original patch from Wichert Akkerman via Bradley M Kuhn
+         <address@hidden>.)
+       * sanity.sh (pserver): Check for bad root error message.
+
+2003-12-17  Larry Jones  <address@hidden>
+
+       * run.c (close_on_exec): fcntl is not documented to return 0 for
+       success (and QNX doesn't), only -1 for error.
+       (Patch from George Refseth <address@hidden>.)
+
+2003-12-10  Larry Jones  <address@hidden>
+
+       * rcs.c: Cleanup HAVE_MMAP code in preparation for falling back to
+       stdio if mmap fails on large files.
+
+2003-12-10  Mark D. Baushke  <address@hidden>
+
+       * tag.c (tag_check_valid): Fix typo.
+       (Patch from Rob Clevenger <address@hidden>.)
+
+2003-12-09  Derek Price  <address@hidden>
+
+       Rewrite code to use promotable write locks to avoid locking more than a
+       directory at a time for a full write.
+
+       * cvs.h (lock_tree_for_write): Rename to...
+       (lock_tree_promotably): ...this.
+       (Simple_Lock_Cleanup): New prototype.
+       * lock.c: Remove some unneeded prototypes.  Some function
+       reorganization.
+        (struct lock): Make repository const.  Add file1 & file2 to
+       track lock names.  Keep track of when repository needs to be freed.
+       (promotablelock, global_writelock): New globals.
+       (locked_dir, locked_list): Remove unneeded globals.
+       (lock_name): Take const args.
+       (remove_locks): Update comment.  Move readlock cleanup...
+       (Simple_Lock_Cleanup): ...to this new function which also cleans up
+       writelocks.
+       (Lock_Cleanup): No need to clean up after the obsolete locked_dir &
+       locked_list.
+       (lock_simple_remove): Use new lock name cache.  Set lock->repository to
+       NULL to show locks are removed.  Free repository name when necessary.
+       (Reader_Lock): Copy xrepository argument so we do not need to trust the
+       caller not to dispose of it.  Use lock name cache.  Factor code to set
+       the global readlock variable...
+       (set_readlock_name): ...to this new function so it can be used by
+       promotable_lock too.
+       (readers_exist): Factor common code and make wrapper for...
+       (_lock_exists): ...this new function.
+       (promotable_exists): Wrapper for _lock_exists().
+       (write_lock): Rename to...
+       (promotable_lock): ...this and tweak for new behavior.
+       (set_writelock_proc): Rename to...
+       (set_promotablelock_proc): ...this and tweak for new functionality.
+       (Write_Lock): Rename to...
+       (Promotable_Lock): ...this and tweak for new functionality.
+       (set_lock): Add trace.
+       (lock_tree_for_write): Rename to...
+       (lock_tree_promotably): ...this and tweak for new functionality.
+       (lock_dir_for_write): Lock only one directory at a time in a promotable
+       lock aware fashion using new interfaces.
+       * admin.c, commit.c, edit.c, watch.c:
+       s/lock_tree_for_write/lock_tree_promotably/.
+       s/CVS_LOCK_NONE/CVS_LOCK_WRITE/ in calls to start_recursion that used
+       to rely on lock_tree_for_write() to obtain their write locks.  Remove
+       some unnecessary typecasting.
+       * recurse.c (do_recursion): Use Simple_Lock_Cleanup() rather than
+       Lock_Cleanup to avoid removing promotable locks.
+       * server.c (do_cvs_command): Add traces.
+       (server): Add new way to sleep the parent server process for connecting
+       a debugger.
+       * sanity.sh (lockfiles, multiroot2): Update tests to accomodate minor
+       trace inconsistencies.
+
+2003-12-09  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (trace): Remove trace from the set of tests to run.
+       The regexps used take an excessive amount of time and need to
+       be simplified.
+
+2003-12-08  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (rcsbuf_ftell): Rename to...
+       (rcsbuf_ftello): this.
+       (rcsbuf_cache_open): Use off_t rather than long as the pos
+       argument. Use fseeko rather than fseek and ftello rather than
+       ftell.
+       * rcs.h (struct rcsnode): delta_pos is now an off_t type.
+
+2003-12-03  Derek Price  <address@hidden>
+
+       * sanity.sh (recase): Add some clarifying comments.
+
+2003-12-03  Larry Jones  <address@hidden>
+
+       * expand_path.c (expand_variable): Expand ${CVSROOT} to just the
+       directory like it's supposed to be.
+       (Reported by Michael S. Tsirkin <address@hidden>.)
+
+2003-11-26  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (recase-17sscs): Use ${CVSROOT_DIRNAME} in pattern.
+
+2003-11-26  Derek Price  <address@hidden>
+
+       Remove server support for case insensitive clients.  Includes some
+       merges from 1.11.x.
+
+       * add.c, client.c, cvs.h, rcs.c, subr.c: Remove unnecessary support for
+       case insensitive clients.
+       * sanity.sh (tests): Add recase.
+       (recase): New test of cases that might be expected to cause problems
+       with a heterogeneous mix of case sensitive and case insensitive clients
+       and servers.
+
+2003-11-26  Derek Price  <address@hidden>
+
+       * sanity.sh (modules3-2): Simplify syntax that may have given Cygwin
+       intermittent conniptions.
+
+2003-11-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (binfiles2): Correct yet another Cygwin difficulty.
+
+2003-11-25  Derek Price  <address@hidden>
+
+       * sanity.sh (release): Perform forgotten cleanup.
+
+2003-11-25  Derek Price  <address@hidden>
+
+       * sanity.sh (env): Enable to work with $remotehost.
+
+2003-11-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (trace-19): Separate stdout and stderr to workaround
+       problems on SGI IRIX.
+       (crecrepos): Use 'unset DISPLAY' to avoid problems with ssh
+       X11Forwarding configurations.
+
+2003-11-25  Derek Price  <address@hidden>
+
+       * sanity.sh (pserver, server, server2): Save $servercvs and use the
+       local $testcvs for these tests.
+
+2003-11-25  Derek Price  <address@hidden>
+
+       * commit.c (commit_fileproc): Reword comment.
+
+2003-11-25  Derek Price  <address@hidden>
+
+       * sanity.sh (devcom3-9ar): Ignore the stderr output since it varies
+       considerably between platforms.
+
+2003-11-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (CVS_RSH): Read config file sooner to pickup RSH_DFLT
+       for use in setting CVS_RSH variable.
+       * sanity.config.sh.in (RSH_DFLT): Use new substitution variable.
+       * Makefile.am (localcheck, remotecheck): Depend on sanity.config.sh.
+       * Makefile.in: Regenerate for new Makefile.am.
+
+       * update.c (join_file): Deal with rev1 == NULL due to rev1 merge tag
+       being missing from the current file.
+       * sanity.sh (join6): New tests for this case.
+       (trace): Renumber test cases.
+
+2003-11-24  Larry Jones  <address@hidden>
+
+       * diff.c (diff_file_nodiff): use_rev1 does *not* imply that diff_rev1
+       is not null, diff_date1 could be set instead (ditto for use_rev2).
+       (Reported by <address@hidden>.)
+
+2003-11-24  Mark D. Baushke  <address@hidden>
+
+       * client.c (connect_to_forked_server): Avoid passing NULL strings
+       to TRACE. Calling printf("%s",NULL) is not defined and may
+       segfault on some systems.
+       * diff.c (diff_file_nodiff): Ditto.
+       * main.c (main): Ditto.
+       * modules.c (do_module): Ditto.
+       * patch.c (patch_proc): Ditto.
+       * rcs.c (RCS_cmp_file): Ditto.
+       * recurse.c (start_recursion): Ditto.
+       * root.c (parse_cvsroot): Ditto.
+       * server.c (dirswitch, server_pathname_check, dirswitch,
+       serve_directory):  Ditto.
+       * tag.c (rtag_proc, check_fileproc, tag_check_valid): Ditto.
+       * sanity.sh (trace): New testcase to test the -t option.
+       (RCSDATE, ISODATE, PFMT): New variables in aid of the trace tests.
+       (dotest_fail_sort): New function in aid of the trace tests.
+       (template): Fix cleanup.
+
+2003-11-24  Derek Price  <address@hidden>
+
+       * sanity.sh (modes3): Skip modes3-5 entirely under Cygwin since
+       permisions are broken there.  This change removes most of the earlier
+       Cygwin differentiation in this test ($cygwin_hack & $cygwin_hack2) in
+       favor of skipping the test entirely.
+
+2003-11-24  Derek Price  <address@hidden>
+
+       * sanity.sh: Add `-h <hostname>' option to enable testing across a
+       :ext: connection to another host.  Warn when `-h' is specified without
+       $TESTDIR.  Leave $TESTDIR intact when it looks absolute since it may
+       contain symlinks.  Allow $CVS_SERVER to be overridden via the
+       environment for `-h'.  Default $CVS_RSH to `ssh'.
+       (*): Use $CVS_RSH to perform certain commands on the remote host (esp.
+       `ln -s' and `chmod') when `-h' is specified to work around
+       incompatibilities with CygWin & Samba.  Add a few other minor
+       workarounds for Cygwin bugs.
+
+       (newroot): New function.
+       (*): Use newroot when appropriate.
+
+2003-11-21  Larry Jones  <address@hidden>
+
+       * hash.c (printnode, printlist): Cast %p arguments to void * as
+       required by the C standard.
+
+2003-11-21  Larry Jones  <address@hidden>
+
+       * recurse.c (start_recursion, do_recursion): Cast %p arguments to
+       void * as required by the C standard.
+
+2003-11-19  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_getrevtime): Add error checking; cleanup.
+
+2003-11-18  Derek Price  <address@hidden>
+
+       * socket-client.c (socket_buffer_initialize): Rename poorly named `n'
+       to a slightly more descriptive `sbuf'.
+       (Suggestion from Larry Jones  <address@hidden>.)
+
+2003-11-18  Derek Price  <address@hidden>
+
+       * socket-client.c (socket_buffer_initialize): Pass in the socket
+       closure we allocate.
+       (Report from Larry Jones  <address@hidden>.)
+
+2003-11-18  Derek Price  <address@hidden>
+
+       * modules.c (do_module): Reject absolute paths.
+       (Report and suggested fix from Tony Hoyle <address@hidden>.)
+
+       * sanity.sh (abspath2): Check for the above.
+       (spacefiles): Remove tests that expect absolute paths to files in the
+       top level repository directory to work.
+       (tests): Add abspath2.
+
+2003-11-18  Derek Price  <address@hidden>
+
+       * socket-client.c (socket_buffer_initialize): Correct a typo that
+       happened to compile.
+       (Report and suggested fix from Patrick Brown <address@hidden>.)
+
+2003-11-13  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_delete_revs): It's `&&', not `and'.
+
+2003-11-13  Derek Price  <address@hidden>
+
+       * sanity.sh: Create the empty log to make it easier to tail immediately
+       after the script is started.
+
+2003-11-13  Derek Price  <address@hidden>
+
+       * sanity.sh (exit_help): Correct help to specify `-H' and not `-h' as
+       the help option.
+
+2003-11-13  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_delete_revs): Don't use the WOE32 kludge which refuses to
+       delete revisions from bvinary files on Cygwin.  I'm not sure what the
+       kludge was trying to avoid, but commenting it out causes the test suite
+       to pass.
+
+2003-11-12  Derek Price  <address@hidden>
+
+       * main.c (main): Remove a trailing newline from the version string.
+       Replace multiple calls to fputs to a single call reformated to C89
+       specifications.  Remove some typecasts unecessary under C89.
+       * sanity.sh (version): Remove trailing newline from the version string.
+
+2003-11-12  Derek Price  <address@hidden>
+
+       * add.c (add): Allocate more space for the string I added characters
+       to.
+       (Report from Mark D. Baushke <address@hidden>.)
+
+2003-11-11  Derek Price  <address@hidden>
+
+       * add.c (add), classify.c (Classify_File), client.c (update_entries),
+       repos.c (Name_Repository): Use consistent quoting in error messages.
+       Misc reformatting.
+       * sanity.sh: Update to match.
+
+2003-11-10  Derek Price  <address@hidden>
+
+       * commit.c (find_fileproc, check_fileproc):  Refuse to remove files
+       when the file exists in the sandbox.  This used to cause data loss.
+       (Report from Andreas Reifschneider <address@hidden>.)
+
+       * sanity.sh (rmadd3): Update to match.  Expand comments.
+
+2003-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh (rmadd3): Test the behavior of commit after the
+       add/replace.
+       (Report from Andreas Reifschneider <address@hidden>.)
+
+2003-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh (rmadd3): Fix another typo.
+
+2003-11-10  Mark D. Baushke  <address@hidden>
+
+       * recurse.c (do_dir_proc): Set xframe.repository to NULL after a
+       call to free().
+
+2003-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh (rmadd3): Fix typo.
+
+2003-11-10  Derek Price  <address@hidden>
+
+       * sanity.sh (rmadd3): New tests that confirms that CVS refuses to
+       delete a file it thinks was already removed.
+       (Report and test from Andreas Reifschneider
+       <address@hidden>.)
+
+2003-11-03  Derek Price  <address@hidden>
+
+       * sanity.sh (server): Test that the global `-l' option is ignored
+       nonfatally.
+
+2003-11-03  Derek Price  <address@hidden>
+
+       * server.c (serve_global_option): Warn that -l is being ignored rather
+       than exiting fatally due to backwards compatibility complaints from
+       administrators.
+
+2003-11-01  Larry Jones  <address@hidden>
+
+       * filesubr.c (xcmp): Make sure S_ISLNK exists before calling it.
+       (Reported by Paul Edwards <address@hidden>.)
+
+2003-10-31  Derek Price  <address@hidden>
+
+       * sanity.sh: s/${TESTDIR}/cvsroot/${CVSROOT_DIRNAME}/.
+
+2003-10-28  Derek Price  <address@hidden>
+
+       * sanity.sh (devcom): Renumber tests and use dotest function.
+
+2003-10-28  Derek Price  <address@hidden>
+
+       * sever.h: Add the standard copyright notice.
+
+2003-10-28  Derek Price  <address@hidden>
+
+       * lock.c: Remove some suggestions which have already been implemented
+       or which have become obsolete from the header comment.
+
+2003-10-26  Derek Price  <address@hidden>
+
+       * sanity.sh (join6): Fix a few typos in the last test and remove a
+       misplaced test.
+
+2003-10-25  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (parseroot): Use dokeep function.
+
+       * sanity.sh (parseroot): Perform this test in a subdirectory.
+       It should avoid problems on case-insensitive systems where
+       CVSROOT and cvsroot are the same directory (eg, MacOS X).
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * update.c (join_file): Restore the optimization Mark recently removed,
+       but fix it.  Move one other optimization up since it needs to be
+       checked for first.  Add bew status messages like merge_file produces
+       when the requested diff has already been applied to the destination.
+       Expand header comment.
+       * sanity.sh (join6): Add tests for the new error messages.
+       (import-113, join-admin-2, diffmerge1): Fix collateral damage.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * update.c (merge_file): Optimize & eliminate code.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * recurse.c (do_recursion): Assert that ignoring the return value of
+       Name_Repository is not a memory leak.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * repos.c (Name_Repository): Replace a FIXME with the improved error
+       message it requested.
+       * sanity.sh (errmsg3): New test for the above.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * patch.c (patch_proc): Avoid memory leak.
+       (Patch from Mark D. Baushke  <address@hidden>.)
+       (patch_proc): Reformat a few long lines for readability.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * vers_ts.c (Version_TS): Move variable declaration inside the only
+       block where it is used and remove uneeded reinitialization.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * server.h: s/^extern// off of function declarations per HACKING.
+       Reformat protos for readability.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * vers_ts.c (Version_TS): Reformat declaration and expand header
+       comment.
+
+2003-10-24  Derek Price  <address@hidden>
+
+       * update.c (merge_file): Remove code that hasn't been used since CVS
+       used an external RCS (1.9.something).
+
+2003-10-23  Mark D. Baushke  <address@hidden>
+
+       * update.c (join_file): Do the -jrev1 -jrev2 merge even when
+       the file is already at rev2.
+       * sanity.sh (join6): New testcase for above.
+       (Suggested by Paul Edwards, from somewhere in Australia.)
+       (import): Fix collateral damage.
+
+2003-10-23  Derek Price  <address@hidden>
+
+       * sanity.sh (fail): Refer the user to the `TESTS' and `check.log' files
+       on failure.
+
+2003-10-22  Derek Price  <address@hidden>
+
+       * recurse.c (start_recursion): Reformat function declaration and
+       expand comments.
+       (Original patch from Terrence Enger <address@hidden>.)
+
+2003-10-22  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_LDADD): Add $(LIBINTL) for gettext.
+       * Makefile.in: Regenerated.
+
+2003-10-19  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (admin-31): Fix more typos.
+
+2003-10-18  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (admin): Fix a typo.
+
+       * admin.c (admin_fileproc): Restore the ':' character in the
+       -mtag:message admin argument even if the tag does not exist so
+       that other files with the tag will be found. Also, be more
+       paranoid that a symbolic tag actually points to a version that
+       exists.
+       (Reported by Rodolfo Schulz de Lima <address@hidden>.)
+       * sanity.sh (admin): Test these changes.
+
+2003-10-17  Mark D. Baushke  <address@hidden>
+
+       * admin.c (admin_fileproc): Force tag match on admin
+       -mversion:message rather than altering the wrong log message.
+       (Patch from "Rodolfo Schulz de Lima" <address@hidden>.)
+       * sanity.sh (admin): Test case for it.
+
+2003-10-15  Larry Jones  <address@hidden>
+
+       * commit.c (commit_fileproc, finaladd): Don't call fixaddfile()
+       if the RCS file didn't get created at all.
+       (Reported by David Wood <address@hidden>.)
+
+2003-10-14  Derek Price  <address@hidden>
+
+       Port to pedantic POSIX 1003.1-2001 hosts, such as Debian GNU/Linux
+       testing with _POSIX2_VERSION=200112 in the environment.
+
+       * sanity.sh: Use 'sed 1q', not 'head -1'.
+       (Patch from Paul Eggert <address@hidden>.)
+
+2003-10-10  Derek Price  <address@hidden>
+
+       * lock.c (set_lock): Clarify comment.
+
+2003-10-11  Larry Jones  <address@hidden>
+
+       * server.c (server_cleanup): Replace CVS_CHDIR call: some systems
+       won't allow you to delete a directory tree containg your working
+       directory.
+
+2003-10-10  Derek Price  <address@hidden>
+
+       * server.c (cvs_output, cvs_outerr): Protect calls to syslog()
+       with the usual preprocessor condition: HAVE_SYSLOG_H.
+       (Original patch from Terrence Enger <address@hidden>.)
+
+2003-10-09  Derek Price  <address@hidden>
+
+       * cvs.h: s/^extern// off of function declarations per HACKING.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add history.h.
+       * history.c: Include history.h.  Add the `P' record types to more
+       comments. s/ALL_REC_TYPES/ALL_HISTORY_REC_TYPES/.
+       (usage): Reference ALL_HISTORY_REC_TYPES rather than using a separate
+       string literal.
+       (report_hrecs): Handle `P' record type.
+       (ALL_REC_TYPES): Rename and move...
+       * history.h (ALL_HISTORY_REC_TYPES): ...here.
+       * mkmodules.c: Include history.h.
+       (config_contents): Update contents of and references to LogHistory
+       records to use ALL_HISTORY_REC_TYPES.
+       * sanity.sh (basic2-64): Update to include history records of type `P'.
+
+       * Makefile.in: Regenerated.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * update.c (patch_file): Correct spelling and punctuation in comment.
+       Update some lines to fit in 80 characters.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * lock.c (remove_locks): Copy global struct and set status variable to
+       NULL before calling disposal functions that might try to access it
+       during calls to error(1,...).
+
+2003-10-08  Larry Jones  <address@hidden>
+
+       * history.c (history): Don't conflate -e with -x since the client's
+       idea of what -e means may not match the server's.
+       (Reported by Frank Hemer <address@hidden>.)
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * lock.c (Lock_Cleanup), rcs.c (rcs_cleanup), server.c
+       (server_cleanup): Expand comments about the never_run_again variable
+       and its interoperation with critical sections, exit, and interrupts.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * lock.c (remove_locks): Reduce TRACE level since this function is
+       rarely called and we can usually rely on tracing higher level
+       functions.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * lock.c (lock_name, lock_simple_remove),
+       server.c (server_pathname_check, dirswitch): Add TRACE.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * main.c: Reformat header comment to fit in 80 chars.
+
+2003-10-08  Larry Jones  <address@hidden>
+
+       * sanity.sh: Use dotest_fail instead of dotest_status for diff tests
+       since CVS only returns success/fail rather than 0/1/2 like diff does.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       Fix a client/server bug introduced via the data loss fix of 2003-03-17.
+       Basically, the server was reporting ambiguous filename requests when it
+       should have been trusting the user to type the intended case or using
+       the case the client preserved in CVS/Entries before it tried to look
+       anything up in case insensitive mode.
+
+       * rcs.c (locate_rcs): Use the filename exactly as cased before
+       investigating a case insensitive lookup, per the client/server protocol
+       specification.  Expand comments.
+       * subr.c (locate_file_in_dir): This function only needs to locate files
+       case insensitively.  Expand comments.
+       * cvs.h (locate_file_in_dir): Only prototype when servers which need to
+       handle case insensitivity are being compiled.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * rcs.c (locate_rcs): Declare static.  Move to an earlier location in
+       file to avoid prototyping.
+       * rcs.h (locate_rcs): Remove proto.
+
+2003-10-08  Derek Price  <address@hidden>
+
+       * lock.c (lock_filesdoneproc): Reformat long function prototype.
+
+2003-10-07  Larry Jones  <address@hidden>
+
+       * server.c (server_cleanup): Remove old code that was commented out
+       with //, which isn't valid in C.
+
+2003-10-04  Derek Price  <address@hidden>
+
+       * exithandle.c: New file.
+       * Makefile.am (cvs_SOURCES): Add exithandle.c.
+       * cvs.h (cleanup_register, signals_register): New prototypes.
+       * lock.c (Lock_Cleanup, remove_locks), rcs.c (rcs_cleanup),
+       server.c (server_cleanup): Avoid calling twice when called from a
+       signal handler and then exit.  Avoid being interrupted while globals
+       that the signal handler might touch are in inconsistent states.  Expand
+       comments.
+       * rcs.c (rcs_internal_lockfile): Ditto. Use cleanup_register rather
+       than calling atexit() directly.
+       * main.c (main): Consolidate signal stuff into a call to
+       signals_register().  Call cleanup_register to register cleanup
+       functions rather than calling atexit() directly.
+
+       * Makefile.in: Regenerated.
+
+2003-10-04  Derek Price  <address@hidden>
+
+       * error.c, error.h: Remove error_exit() function.
+       * add.c, client.c, history.c, import.c, main.c, mkmodules.c, modules.c,
+       rcscmds.c, recurse.c, release.c, root.c, server.c, socket-client.c,
+       tag.c, update.c: s/\<error_exit *();$/exit (EXIT_FAILURE);/.  Remove
+       related comments.
+
+2003-10-04  Derek Price  <address@hidden>
+
+       * buffer.c: Reformat a few long function prototypes and lines.
+
+2003-10-04  Derek Price  <address@hidden>
+
+       * hash.c (dellist): Immediately set input pointers to NULL in case they
+       are references to global variables which might be accessed by interrupt
+       handlers.
+
+2003-10-04  Derek Price  <address@hidden>
+
+       * rcs.c (rcs_cleanup): Declare static.
+       * rcs.h (rcs_cleanup): Remove prototype.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       Move calls to Lock_Cleanup to the atexit handler.
+
+       * commit.c (commit): Don't call Lock_Cleanup on error exit.
+       * error.c (error_exit): Don't call Lock_Cleanup.
+       * lock.c (Lock_Cleanup): Don't worry about recursive calls now that we
+       are using atexit for calls on exit.  Dispose locklist storage after the
+       locks are removed.  Expand comments.
+       * main.c (main): Move Lock_Cleanup call into atexit(Lock_Cleanup).
+       * server.c (server_notify): Add TRACE.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * recurse.c (start_recursion): Remove unnecessary typecasts.
+       (do_recursion): Ditto.  Add TRACE.  Expand comments.  Remove unneeded
+       parens.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * main.c (main): Dispose of old Tmpdir and Editor when specified
+       multiple times between the command line & the ~/.cvsrc file.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * lock.c (remove_locks): Eliminate unecessary typecasting.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       Move calls to rcs_cleanup to the atexit handler.
+
+       * error.c (error_exit): Don't call rcs_cleanup.
+       * rcs.c: Initialize global RCS_LOCKFILE to NULL.
+       (rcs_internal_lockfile): Use atexit (rcs_cleanup) rather than
+       setting up signal handlers.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * modules.c (do_module): Format prototype.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * server.c (server_cleanup): Skip BUF_TO_NET checks as an optimization
+       when ERROR_USE_PROTOCOL is set.
+
+2003-10-03  Derek Price  <address@hidden>
+
+       * modules.c (do_module): Use TRACE.
+
+2003-10-02  Derek Price  <address@hidden>
+
+       * main.c (main): Don't free globals that might be needed by the cleanup
+       functions.
+       * server.c (server_cleanup): Only clean up when called in the parent
+       process.  Set buffers to NULL before shutting down and freeing in case
+       we are interrupted.  Improve comments.  Add TRACE.
+
+2003-10-01  Derek Price  <address@hidden>
+
+       * main.c (main): Use symbolic name for trace level.
+
+2003-10-01  Derek Price  <address@hidden>
+
+       * client.c (connect_to_forked_server): Use TRACE macro rather than the
+       old style.
+
+2003-10-01  Derek Price  <address@hidden>
+
+       * server.c (protocol): Initialize the protocol buffer to NULL so that
+       use before initialization may be detected.
+       (cvs_output, cvs_outerr): Syslog messages when the appropriate buffers
+       are not available.
+       (server_cleanup): Reorganize for a single exit point and to eliminate
+       duplicated code.  Set buf_to_net to NULL before calling the buffer
+       shutdown functions in order to force error messages into the syslog.
+       * buffer.c (stdio_buffer_close): Remove FIXME comment re syslog since
+       the calls to error should go through the cvs_outerr function anyhow.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * entries.c (WriteTemplate): TRACE on entrance to a function, not exit.
+       Don't worry about checking noexec without server support since this
+       function will then do nothing.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * update.c (do_update): Reformat function decl.  Move and merge
+       comment.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * client.h (buf_output, buf_outerr): Check that our buffers exist
+       before sending them data.
+       (buf_output_binary): Assert that the output buffer is not NULL.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * client.h, rcs.c, rcs.h, server.h: Assume __STDC__ since it is
+       defined as part of the C89 spec.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * commit.c (commit): Optimize function towards a single exit point.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * error.c (error_exit): Remove call to SYSTEM_CLEANUP.
+       * main.c (main): Set up atexit(SYSTEM_CLEANUP) rather than calling it
+       explicitly before exit.
+       * server.c (pserver_authenticate_connection): Don't call SYSTEM_CLEANUP
+       before exiting.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * error.c (exit_error): Remove call to server_cleanup.
+       * main.c (main): Call atexit(server_cleanup).  Let server_cleanup turn
+       server_active off.
+       * server.c (server_cleanup): Don't require an argument.  Fill out
+       header comment.  Unset server_active when done.
+       (server): Don't call server_cleanup - let it be called via the atexit
+       handler.
+       * server.h (server_cleanup): Update proto.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * server.c (buf_output): Don't check that the buffers exist before
+       using them since cvs_outerr does this without problems.
+
+2003-09-30  Derek Price  <address@hidden>
+
+       * server.c: Remove some unecessary function prototypes.
+
+2003-09-29  Derek Price  <address@hidden>
+
+       * rcs.c (make_file_label): Make a failure to stat a file a fatal error
+       since it signals that a later read will also fail.
+
+2003-09-29  Derek Price  <address@hidden>
+
+       * diff.c (diff_fileproc): Optimize the check for labels set by the
+       user.
+
+2003-09-26  Derek Price  <address@hidden>
+
+       * diff.c (diff): Add a FIXME re spaces in diff arguments.
+
+2003-09-25  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (make_file_label): Do not return an uninitialized label.
+       (Reported by "Todd C. Miller" <address@hidden>)
+
+2003-09-24  Derek Price  <address@hidden>
+
+       * lock.c (lock_name): Remove useless prototype.
+
+2003-09-12  Derek Price  <address@hidden>
+
+       * sanity.sh (mkmodules): Correct comments.
+
+2003-09-12  Derek Price  <address@hidden>
+
+       * mkmodules.c (mkmodules): Do not pass a string which came from the
+       checkoutlist file directly to error as a format string since we don't
+       want to trust any user with access to checkoutlist with creating printf
+       format strings.  I already claimed I did this in the NEWS file.
+       (Thanks to Larry Jones for spotting my mistake.)
+       * sanity.sh (mkmodules): Test for the above.
+
+2003-09-12  Derek Price  <address@hidden>
+
+       * mkmodules.c (checkoutlist_contents): Document the optional portions
+       of this file format more accurately.
+       (mkmodules): Ditto, in comments.  Fix bug that always failed to ignore
+       whitespace before error messages.
+       * sanity.sh (mkmodules-temp-file-removal): Rename to...
+       (mkmodules): ...this and add a test of the checkoutlist error message.
+       Add cleanup step to restore checkoutlist.
+
+2003-09-08  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): Replace a chmod 0600, which shouldn't
+       really be necessary and which provided a false sense of security, with
+       an informative comment.
+       (Thanks to Paul Eggert <address@hidden> for his educational
+       advice.)
+
+2003-08-29  Derek Price  <address@hidden>
+
+       * cvs.h: Delete reference to CVSADMROOT_EDITINFO.
+       * logmsg.c (editinfo_proc): Delete function and proto.
+       (do_editor): Don't look for editinfo script.
+       * mkmodules.c (editinfo_contents): Delete.
+       * sanity.sh (*): Remove references to editinfo in updates of the
+       CVSROOT module.
+
+2003-08-29  Derek Price  <address@hidden>
+
+       * remove.c (cvsremove): Update quotes for consistency.
+
+2003-08-27  Larry Jones  <address@hidden>
+
+       * history.c: 'P' is a valid record type and has been for a long time.
+       Add it to the comments, usage message, and, most important,
+       ALL_REC_TYPES so it gets recorded by default.
+       * server.c (do_cvs_command): Set global command_name to the real
+       command name rather than leaving it set to "server".
+       * sanity.sh: Update to match.
+       (Reported by Dmitry Ryzhkov <address@hidden>.)
+
+2003-08-19  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): Expand comments.  Check for glibc version
+       before compiling chmod command.  Remove FIXME to this effect.
+
+2003-08-19  Derek Price  <address@hidden>
+
+       * logmsg.c (do_editor): Use cvs_temp_file rather than cvs_temp_name to
+       create and open the temporary file.  Remove FIXME to this effect.
+
+2003-08-19  Derek Price  <address@hidden>
+
+       * logmsg.c (do_editor): Move editinfo processing to before creation of
+       the temp file so that it may be skipped when no editor is defined.
+       Remove related FIXME.  Add comments.  Remove some processing of
+       editinfo_editor rendered obsolete when editinfo_editor ceased to be a
+       global.
+
+2003-08-19  Derek Price  <address@hidden>
+
+       * (*.c): Move some includes to lib/system.h.
+
+2003-08-18  Derek Price  <address@hidden>
+
+       * add.c (add): Use consistent quoting style in user messages.
+       * sanity.sh (*): Ditto.
+
+2003-08-13  Larry Jones  <address@hidden>
+
+       * server.c (server_cleanup): Don't shutdown buf_from_net if it's
+       null.
+       (Reported by Scott Mitchell <address@hidden>.)
+
+2003-08-03  Mark D. Baushke  <address@hidden>
+
+       * lock.c: Do not include xtime.h (already included via system.h).
+       * subr.c: Ditto.
+       (Original patch from Rainer Orth <address@hidden>
+       to fix IRIX 5.3 problem.)
+
+2003-08-01  Derek Price  <address@hidden>
+
+       * sanity.sh (join5): Use $SPROG rather than $PROG.
+
+2003-08-01  Derek Price  <address@hidden>
+
+       * sanity.sh (join5): Use $PROG consistently and escape a `.'.
+
+2003-08-01  Derek Price  <address@hidden>
+
+       * sanity.sh (join5): Use `[a-z]*' as opposed to `update'.
+
+2003-07-31  Derek Price  <address@hidden>
+
+       * rcscmds.c (RCS_merge): Pass `--' before the filename arguments to
+       diff so that filenames starting with `-' can be merged.
+       * sanity.sh (join5): New test for same.
+
+2003-07-31  Derek Price  <address@hidden>
+
+       * add.c (add_directory): Don't print status information in really_quiet
+       mode.
+
+2003-07-29  Derek Price  <address@hidden>
+
+       * commit.c (checkaddfile): Simplify the logic here, using assumptions
+       already made later in the function to remove calls to locate_rcs and
+       some conditionals.  Use same assumptions to remove some variables.
+
+2003-07-29  Derek Price  <address@hidden>
+
+       * login.c: Remove GETPASS & HAVE_GETPASSPHRASE cruft in favor of always
+       using the GNULIB getpass since the system getpass was removed from the
+       POSIX.2 specification.
+
+2003-07-28  Derek Price  <address@hidden>
+
+       * subr.c (strip_trailiing_newlines): Use size_t rather than int to
+       count string length.
+       (Suggestion from Paul Edwards, who provides a broken return email
+       address in Tonga.  I believe he is actually from Australia.)
+
+2003-07-28  Derek Price  <address@hidden>
+
+       * checkout.c (checkout): Remove out-of-date comment about Checkin.prog
+       and Update.prog.
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_parsercsfile): Declare rcsfile argument as const.
+       * rcs.h (RCS_parsercsfile): Update prototype to match.
+       * commit.c (fixaddfile): Accept a single path to an rcs file as an
+       argument rather than trying to look it up again when it is not
+       necessary.
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * commit.c (finaladd): But don't free variables we no longer allocate.
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * checkin.c (Checkin): The rcs argument is unecessary since we know
+       that the parsed RCS data always exists as part of finfo by the time
+       this function gets called.
+       * commit.c (commit_fileproc, finaladd):  Use new Checkin() API.
+       * cvs.h (Checkin): Update prototype.
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * subr.c (strip_trailing_newlines): Check len b4 str[len] to avoid
+       exceeding the array bounds when the string length == 0.
+       (Report from John Tytgat <address@hidden>.)
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * subr.c (strip_trailing_newlines): Generalize this function to watch
+       len so that it cannot walk past the beginning of the string passed in.
+       (Report from John Tytgat <address@hidden>.)
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * subr.c (strip_trailing_newlines): Leave the K&R function decl on this
+       branch.
+
+2003-07-25  Derek Price  <address@hidden>
+
+       * cvs.h (strip_trailing_newlines): Update prototype.
+       * subr.c (strip_trailing_newlines): Return true when newlines are
+       removed.
+       * server.c (pserver_authenticate_connection): Don't give a DOS attack a
+       chance to authenticate accidentally because I like to be paranoid.
+       * sanity.sh (pserver): New test for same.
+
+2003-07-24  Mark D. Baushke  <address@hidden>
+
+       * server.c (check_system_password): Cleanup pam_* return code
+       checking. (Original patch from Brian Murphy <address@hidden>.)
+
+2003-07-24  Derek Price  <address@hidden>
+
+       * main.c: But the GNULIB gethostname accepts an int not ssize_t.
+
+2003-07-24  Derek Price  <address@hidden>
+
+       * main.c: Don't declare gethostname when we already have it to avoid
+       decl conflicts.
+
+2003-07-24  Derek Price  <address@hidden>
+
+       * server.c (server_directory): Add a TRACE for OS X debugging.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * client.c: Avoid some warning from gcc -Wall.
+       * lock.c: Ditto.
+       * login.c: Ditto.
+       * modules.c: Ditto.
+       * server.c: Ditto.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * filesubr.c (isaccessible): Correct some double const warnings from
+       protoize.
+       * login.c (password_entry_parseline): Ditto.
+       * server.c (kserver_authenticate_connection): Remove a multi-line
+       string along with the warning from GCC.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * *.{c,h}: Back out the indent run.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * cvs.h: Move some includes into lib/system.h.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * *.{c,h}: Run these through GNU indent as per the NEWS file to fix
+       some of the long function decls which came out of protoize.
+
+2003-07-23  Derek Price  <address@hidden>
+
+       * *.c: Run these through GCC's protoize to convert the pre-ANSI C
+       function decls to C89 compliance.
+
+2003-07-22  Derek Price  <address@hidden>
+
+       * cvs.h: Remove support for the PTR macro, since we can assume void *
+       under C89.  It also was not being made use of in very many places so
+       even most K&R compilers must have supported it, or nobody was using
+       K&R compilers.  We can also assume <stdarg.h> under C89, but move the
+       include...
+       * error.c: ...here, de-macro VA_START, and...
+       * subr.c: ...put a copy here too, as well as de-macroing VA_START.
+       * history.c: s/PTR /void */g;
+       * modules.c: Ditto.
+
+2003-07-22  Derek Price  <address@hidden>
+
+       * cvs.h: Include GNULIB exit.h.
+
+2003-07-20  Derek Price  <address@hidden>
+
+       * server.c: Add PAM support.
+       (cvs_pam_userinfo): New data type for PAM conversations.
+       (cvs_pam_conv): New function.
+       (check_password): Add PAM support.
+       (Original patch from Brian Murphy <address@hidden>.)
+
+2003-07-20  Derek Price  <address@hidden>
+
+       * wrapper.c: Remove mention of obsolete -f and -t wrapper options from
+       a comment.
+
+2003-07-18  Derek Price  <address@hidden>
+
+       * sanity.sh (release): Add new tests for release with unrecognized
+       recognized directories.
+
+2003-07-18  Derek Price  <address@hidden>
+
+       * vers_ts (Version_TS): Don't allow command line keyword expansion
+       modes to override binary mode.
+       * sanity.sh (): Tests for the above.
+       (Original patch from Dieter Maurer <address@hidden>.)
+
+2003-07-16  Derek Price  <address@hidden>
+
+       * add.c: s/PROTO//.
+       * admin.c: Ditto.
+       * annotate.c: Ditto.
+       * buffer.c: Ditto.
+       * buffer.h: Ditto.
+       * checkout.c: Ditto.
+       * classify.c: Ditto.
+       * client.c: Ditto.
+       * client.h: Ditto.
+       * commit.c: Ditto.
+       * cvs.h: Ditto.
+       * diff.c: Ditto.
+       * edit.c: Ditto.
+       * edit.h: Ditto.
+       * entries.c: Ditto.
+       * error.c: Ditto.
+       * error.h: Ditto.
+       * expand_path.c: Ditto.
+       * fileattr.c: Ditto.
+       * fileattr.h: Ditto.
+       * filesubr.c: Ditto.
+       * find_names.c: Ditto.
+       * gssapi-client.c: Ditto.
+       * gssapi-client.h: Ditto.
+       * hardlink.h: Ditto.
+       * hash.c: Ditto.
+       * hash.h: Ditto.
+       * history.c: Ditto.
+       * import.c: Ditto.
+       * kerberos4-client.h: Ditto.
+       * lock.c: Ditto.
+       * log-buffer.c: Ditto.
+       * log-buffer.h: Ditto.
+       * log.c: Ditto.
+       * login.c: Ditto.
+       * logmsg.c: Ditto.
+       * mkmodules.c: Ditto.
+       * modules.c: Ditto.
+       * myndbm.c: Ditto.
+       * myndbm.h: Ditto.
+       * patch.c: Ditto.
+       * rcs.c: Ditto.
+       * rcs.h: Ditto.
+       * rcscmds.c: Ditto.
+       * recurse.c: Ditto.
+       * release.c: Ditto.
+       * remove.c: Ditto.
+       * root.c: Ditto.
+       * rsh-client.h: Ditto.
+       * run.c: Ditto.
+       * server.c: Ditto.
+       * server.h: Ditto.
+       * socket-client.c: Ditto.
+       * socket-client.h: Ditto.
+       * status.c: Ditto.
+       * subr.c: Ditto.
+       * tag.c: Ditto.
+       * update.c: Ditto.
+       * update.h: Ditto.
+       * vers_ts.c: Ditto.
+       * watch.c: Ditto.
+       * watch.h: Ditto.
+       * wrapper.c: Ditto.
+       * zlib.c: Ditto.
+
+2003-07-16  Derek Price  <address@hidden>
+
+       * cvs.h: Include pathmax.h.
+
+2003-07-16  Derek Price  <address@hidden>
+
+       * myndbm.c: Use the GNU getdelim function rather than our package
+       getstr.
+       * server.c: Use the (hopefully) GNULIB and more appropriately named
+       getnline function rather than our getline_safe function.
+
+2003-07-12  Larry Jones  <address@hidden>
+
+       * sanity.sh (diffnl): New tests for diff on files with no newline
+       at end.
+       (Patch from Andrew Moise <address@hidden>.)
+
+2003-07-11  Larry Jones  <address@hidden>
+
+       * Makefile.am (cvs_DEPENDENCIES): Include the libraries.
+       * Makefile.in: Regenerated.
+
+       * diff.c (diff_file_nodiff): Fix -Wall complaints.
+       * log.c (rlog_proc): Ditto.
+       * rcs.c (RCS_setlocalid): Ditto.
+       * recurse.c (start_recursion): Handle null repository_in in TRACE.
+
+2003-07-09  Larry Jones  <address@hidden>
+
+       * sanity.sh: Use ${CPROG} instead of ${PROG} so that changes merged
+       from cvs1-11-x-branch without updating won't appear to work.
+
+       * sanity.sh (keywordexpand): Use ${SPROG} instead of ${PROG} as
+       required.
+
+       * add.c (add): Update "re-adding" message to have quotes around
+       the file name like all the other similar messages.
+       * sanity.sh: Update to match.
+
+       * update.c (join_file): Handle locally removed but not yet committed
+       files.
+       (Reported by Larry Lords <address@hidden>.)
+       * sanity.sh (join, join4): New tests for above.
+
+2003-06-28  Larry Jones  <address@hidden>
+
+       * commit.c (fixaddfile): Bail out if locate_rcs() fails.  Make
+       parameters const.
+
+       * add.c (add): Fix -Wall complaints.
+       * diff.c (diff_file_nodiff): Ditto.
+       * filesubr.c (cvs_casecmp): Ditto.
+       * patch.c (patch_fileproc): Ditto.
+       * rcs.c (RCS_cmp_file): Ditto.
+       * root.c (parse_cvsroot): Ditto.
+       * subr.c (locate_file_in_dir): Ditto.
+       * cvs.h (cvs_casecmp, locate_file_in_dir): Update prototypes.
+
+2003-06-27  Larry Jones  <address@hidden>
+
+       * lock.c (readers_exist): Use LockDir rather than always looking
+       in the repository.
+       (Original patch from Robert Ambalu <address@hidden>.)
+       Remove vestigial lock promotion code.
+
+2003-06-27  Derek Price  <address@hidden>
+
+       * checkout.c (safe_location): Don't try and print from a NULL pointer.
+       (Report and original patch from Sampo Kellomaki <address@hidden>.)
+
+2003-06-26  Larry Jones  <address@hidden>
+
+       * hash.c (sortlist): Avoid crash when list is null.
+
+2003-06-23  Derek Price  <address@hidden>
+
+       * patch.c (patch_fileproc): Output revision number of the original
+       revision in the removed case.
+       (Idea from Paul Edwards <address@hidden>.)
+
+       * sanity.sh (rdiff-add-remove-nodiff): Rename to...
+       (rdiff-short): ...this.  Test for the above changes.  Add some tests
+       for when rev2 defaults to the trunk.  Expand comments.
+
+2003-06-23  Derek Price  <address@hidden>
+
+       * client.c: Reapply Alexey's changes to client.c from three commits
+       back they were left out of the diff.
+
+2003-06-23  Derek Price  <address@hidden>
+
+       * add.c (add): Fix xmalloc's strlen() of wrong variable.
+       * checkout.c (safe_location): leak: reused where_location without free.
+       * log.c (rlog_proc): leak: free where before exit.
+       * logmsg.c (do_verify): leak: free verifymsg_script before exit.
+       (Original patch from Kenneth Lorber <address@hidden>.)
+
+2003-06-23  Derek Price  <address@hidden>
+
+       * client.c: Remove silly comment.
+       (Patch from Alexey Mahotkin  <address@hidden>.)
+
+2003-06-23  Derek Price  <address@hidden>
+
+       * kerberos4-client.h, kerberos4-client.c, client.c: Rename
+       start_tcp_server() to start_kerberos4_server().
+       (Patch from Alexey Mahotkin  <address@hidden>.)
+
+2003-06-20  Derek Price  <address@hidden>
+
+       * kerberos-client.c, kerberos-client.h, client.c: Split out
+       Kerberos 4 code to separate files.
+
+       * Makefile.am: Mention new files.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-06-16  Derek Price  <address@hidden>
+
+       * cvs.h: Comment an #endif.
+
+2003-06-13  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_name): Remove portability cruft obsoleted by the
+       import of GNULIB's mkstemp().
+
+2003-06-13  Derek Price  <address@hidden>
+
+       * subr.c (file_has_conflict): Fix comment.
+       (Patch from Paul Edwards <address@hidden>.)
+
+2003-06-13  Derek Price  <address@hidden>
+
+       * subr.c (xrealloc): Trivial comment fix.
+       (Patch from Kenneth Lorber <address@hidden>.)
+
+2003-06-13  Derek Price  <address@hidden>
+
+       * diff.c (diff_fileproc): Fix memory leak.
+       (Patch from Kenneth Lorber <address@hidden>.)
+
+2003-06-12  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot, local_cvsroot): Parse trailing '/'s off the
+       end of cvsroots.  Make arguments const.
+       * cvs.h: Update prototypes to match.
+       (Idea from Miles Zarathustra <address@hidden>.)
+
+2003-06-12  Derek Price  <address@hidden>
+
+       * checkout.c (safe_location): Fix memory leak.
+       (Patch from Kenneth Lorber <address@hidden>.)
+
+2003-06-11  Larry Jones  <address@hidden>
+
+       * filesubr.c (xresolvepath): Fix memory leak.
+       (Original patch from Kenneth Lorber <address@hidden>.)
+
+2003-06-11  Derek Price  <address@hidden>
+
+       * commit.c: Change Parse_Info calling convention to include void *
+       suggested in HACKING file and generalize all argument to opt.
+       * cvs.h: update defs for Parse_Info and its callproc.
+       * edit.c: Change Parse_Info calls for new calling convention.
+       * logmsg.c: Ditto.
+       * parseinfo.c: Change Parse_Info for new calling convention.
+       * server.c: Change Parse_Info calls for new calling convention.
+       * tag.c: Ditto.
+       (Original patch from Ken Lorber <address@hidden>.)
+
+2003-06-11  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerate for new configure.in.
+
+2003-06-11  Larry Jones  <address@hidden>
+
+       * sanity.sh: Change warning messages to note that defective tools
+       can result in defective results, both pass and fail.  Also change
+       "which" to "that" for errant grammar pedants.
+
+2003-06-10  Derek Price  <address@hidden>
+
+       * recurse.c (start_recursion): Avoid unneeded allocation.
+
+2003-06-10  Mark D. Baushke  <address@hidden>
+
+       * rcs.c (RCS_setlocalid,RCS_setincexc): New functions to support
+       LocalKeyword and KeywordExpand config keywords.
+
+       * rcs.h (RCS_setlocalid,RCS_setincexc): New prototypes.
+
+       * parseinfo.c (parse_config): Added LocalKeyword
+       and KeywordExpand keywords.
+
+       * sanity.sh (keywordexpand): New CVSROOT/config tests for
+       LocalKeyword and KeywordExpand options.
+
+2003-06-09  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_delete_revs): Reference WOE32 rather than WIN32 in
+       accordance with the GNU convention to avoid implying that we consider
+       the Microsoft Windows Operating Environment any sort of "win".
+
+2003-06-09  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): Tidy a comment.
+
+2003-06-09  Derek Price  <address@hidden>
+
+       * patch.c (patch_fileproc): Don't assume the content of files is
+       different just because the revision number is different.
+       * sanity.sh (rdiff-add-remove-nodiff): New tests for the above.
+       (Report & original patches from Paul Edwards <address@hidden>.)
+
+2003-06-04  Derek Price  <address@hidden>
+
+       * cvs.h (locate_file_in_dir): New proto.
+       (locate_rcs): Move proto...
+       * rcs.h: ...here.
+       * filesubr.c (locate_rcs): Move function...
+       * rcs.c: ...here for Windows.
+       * filesubr.c (locate_file_in_dir): Move function...
+       * subr.c: ...here for Windows.
+
+2003-06-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Add comments re portability of test -x & test -e.  Don't
+       bother with quotes in arguments to test when we have laready checked
+       the variables for empty content.
+
+2003-06-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Don't use `test -x' since BSD 4.3 doesn't like it.  Minor
+       reorganization for clarity.  Don't check for $server = false after we
+       set its default.  Use </dev/null with calls to $prog --version when we
+       don't know what $prog does for sure.
+
+2003-06-02  Derek Price  <address@hidden>
+
+       * diff.c (diff_file_nodiff): Don't assume that because two specified
+       revision numbers are different, the contents are different.
+       (Original report & patch from Paul Edwards <address@hidden>.)
+
+       * diff.c (diff_file_nodiff): Pass through rev1_cache to be filled in
+       by RCS_cmp_file when it needs to check out revision 1 into a file.  Add
+       some more informative error messages.  Cleanup for efficiency &
+       readability.
+       (diff_fileproc): Pass the cached revision to RCS_exec_diff().  Clean up
+       the error exit code.  Remove code killed by the changes to
+       diff_file_nodiff().
+       * rcscmds.c (RCS_exec_rcsdiff): Accept and use new cached revision text
+       if present.
+       * rcs.c (RCS_cmp_file): Accept a second revision number and cache the
+       first revision if it needs to be checked out.
+
+       * checkin.c (Checkin): Use new RCS_cmp_file().
+       * import.c (update_rcs_file): Ditto.
+       * no_diff.c (No_Difference): Ditto.
+
+       * cvs.h (RCS_exec_rcsdiff): New proto to match above changes.
+       * rcs.h (RCS_cmp_file): Ditto.
+
+       * sanity.sh: Minor corrections to handle the above changes.
+
+2003-05-31  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): Refuse :fork: only in client mode, not
+       server.
+       * client.c (connect_to_forked_server): Die without SERVER_SUPPORT when
+       CVSSERVER isn't supplied in the environment.
+       * sanity.sh: Default $servercvs to $testcvs.  Add SPROG so that testing
+       a client and server with different names works in order to test the
+       above changes.  s/PROG/SPROG/ almost everywhere.  Misc corrections to
+       tests when ${PROG} is required not to use [a-z]*.  Misc uniqifications
+       of test names.  Misc replacement of CVS_SERVER=${testcvs} with
+       CVS_SERVER=${servercvs}.  Confirm ${testcvs} & ${servercvs} exist and
+       are executable.  Set testcvs_server_support=true if the ${testcvs}
+       executable has server support.  Misc comment corrections.
+       (pserver): s/\$\{testcvs\}/${servercvs}/ for invocations of pserver.
+       (server): Ditto for invocations of `cvs server'.
+       (fork): Accept the `was not compiled with server support' error
+       message.
+
+2003-05-29  Derek Price  <address@hidden>
+
+       * client.c (start_server): Don't send -l to server.
+       * history.c (history_write): Fix comment.
+       * main.c (main): Don't process -l.
+       * server.c (serve_global_option): Ditto.
+       (Suggestion from Rob Lanphier <address@hidden>.)
+
+2003-05-29  Derek Price  <address@hidden>
+
+       * log-buffer.c, rsh-client.c, socket-client.c: Allow compilation
+       with --disable-client.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-29  Derek Price  <address@hidden>
+
+       * gssapi-client.h: Move contents of lib/xgssapi.h here.
+       * server.c: xgssapi.h is no more.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-28  Derek Price  <address@hidden>
+
+       * server.c: Use standard PROTOTYPES symbol instead of non-standard
+       USE_PROTOTYPES.
+       * error.h, cvs.h: Use PROTO.h.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-23  Larry Jones  <address@hidden>
+
+       * sanity.sh (info-cleanup-verifymsg): Avoid race in output.
+
+       * sanity.sh (template): Fix unintended duplicate DEFAULT lines,
+       duplicate test names.
+
+2003-05-22  Larry Jones  <address@hidden>
+
+       * commit.c (commit): Fix leading zero stripping code to not strip
+       unless there's a following digit.
+
+       * parseinfo.c (Parse_Info): Warn if multiple DEFAULT lines found.
+       * sanity.sh (info): New test for above.
+
+2003-05-21  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerate with Automake version 1.7.5.
+
+2003-05-20  Larry Jones  <address@hidden>
+
+       * parseinfo.c (Parse_Info): Fix stupid memory management error.
+
+       * logmsg.c (do_verify): Treate Parse_Info errors as failure.
+       * parseinfo.c (Parse_Info): Don't call expand_path until executing
+       the command so that errors in unexecuted commands aren't reported.
+       * sanity.sh (info): New tests for above.
+
+2003-05-20  Derek Price  <address@hidden>
+
+       * mkmodules.c (config_contents): Add missing newline.
+       (Patch from Kenneth Lorber <address@hidden>.)
+
+2003-05-20  Derek Price  <address@hidden>
+
+       * Makefile.am: Macro subsitution for zlib include path and library
+       location
+       * zlib.c: #ifdef inclusion of <zlib.h> versus "zlib.h"
+       (Original patch from Anthon Pang <address@hidden>.)
+
+       * Makefile.in: Regenerated
+
+2003-05-20  Derek Price  <address@hidden>
+
+       * cvs.h: Move the standard includes into lib/system.h.
+       * subr.c: s/malloc/CVS_MALLOC/;s/realloc/CVS_REALLOC/.
+
+2003-05-19  Derek Price  <address@hidden>
+
+       * filesubr.c: s/\bstat\b/CVS_STAT/g;s/\blstat\b/CVS_LSTAT/g
+       * hardlink.c: Ditto.
+       * ignore.c: Ditto.
+       * rcs.c: Ditto.
+       * update.c: Ditto.
+
+2003-05-18  Larry Jones  <address@hidden>
+
+       * checkout.c (safe_location): Remove unused variable.
+       * hash.c (walklist, printnode, printlist): Use %p to print pointers
+       if available, convert to unsigned long if not.
+       * recurse.c (start_recursion, do_recursion): Ditto.
+       * tag.c (rtag_proc, tag_check_valid): Ditto.
+
+2003-05-18  Mark D. Baushke  <address@hidden>
+
+       * Makefile.am (localcheck,remotecheck): Use cvs$(EXEEXT) not cvs.
+       * Makefile.in: Regenerated.
+       * sanity.sh (status-init-7): Use ${PROG} not cvs in tests.
+       (branch-after-import-5): Ditto.
+       (keywordname-update-11): Ditto.
+
+2003-05-18  Larry Jones  <address@hidden>
+
+       * server.h (kserver_authenticate_connection,
+       pserver_authenticate_connection): Add prototypes.
+
+       * client.c (update_entries): Set file's access time to the current
+       time rather than the same as the modification time.
+       * vers_ts.c (Version_TS): Ditto.
+
+2003-05-09  Derek Price  <address@hidden>
+
+       * client.c: #ifdef inclusion of gssapi-client.h.
+       * server.c: Ditto.
+       (Reported by Boyd Lynn Gerber <address@hidden>.)
+
+2003-05-09  Derek Price  <address@hidden>
+
+       * client.h: Move some of the GSSAPI stuff...
+       * gssapi-client.h: ...to this new file.
+       * client.c (start_server): Use new initialize_gssapi_buffers().
+       (*): Move most of the GSSAPI stuff from here and...
+       * server.c (*): ...here...
+       * gssapi-client.c: ...to this new file.
+       * Makefile.am (EXTRA_cvs_SOURCES, cvs_DEPENDENCIES, cvs_LDADD): Support
+       $(cvs_client_objects).
+       (Original patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-05-09  Derek Price  <address@hidden>
+
+       * buffer.c: Reindent some compiler directives in order to make nesting
+       clearer.
+
+2003-05-08  Derek Price  <address@hidden>
+
+       * client.c (log_buffer*): Move...
+       * log-buffer.c (log_buffer*): ...to this new file.
+       * log-buffer.h (setup_logfiles): New file to share prototype.
+       * Makefile.am: Add log-buffer.c & log-buffer.h.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-05-08  Derek Price  <address@hidden>
+
+       * client.c (init_sockaddr): Move...
+       * socket-client.c (init_sockaddr): ...here.
+       * socket-client.h (init_sockaddr): Prototype.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-08  Derek Price  <address@hidden>
+
+       * client.c (send_to_server): Move most of the functionality to and
+       wrap...
+       (send_to_server_via): ...this new function which accepts the buffer
+       pointer as an argument.
+       (read_line): Ditto, but to...
+       (read_line_via): ...here.
+       (auth_server): Rename lto_server & lfrom_server to s/^l//.  Remove
+       ugly code which sets the global versions of these variables
+       temporarily for function calls.
+       s/send_to_server(/send_to_server_via(to_server,/g,
+       s/read_line(/read_line(from_server,/g,
+       Remove emotional FIXME comment to the effect that all this is
+       necessary.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-07  Derek Price  <address@hidden>
+
+       * client.c (from_server, to_server): Rename these global buffer
+       pointers to...
+       (global_from_server, global_to_server): ...this in order to avoid
+       confusion.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-05-07  Derek Price  <address@hidden>
+
+       * client.c (make_bufs_from_fds, connect_to_forked_server,
+       start_tcp_server): Rename struct buffer ** arguments to s/$/_p/ in an
+       attempt to denote their pointerness more clearly.
+       * rsh-client.c (start_rsh_client): Ditto.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+       * client.h (make_bufs_from_fds): Sanitize prototype so that the
+       argument name change doesn't clash.
+
+2003-05-07  Derek Price  <address@hidden>
+
+       * client.h (make_bufs_from_fd): Prototype in order to make available to
+       rsh-client.c.
+       * client.c (start_rsh_server): Moved most of the RSH (:ext:) client
+       stuff to...
+       * rsh-client.h: ...here...
+       * rsh-client.c: ...and here.
+       * Makefile.am (cvs_SOURCES): Add new source files.
+       (Original patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-05-06  Derek Price  <address@hidden>
+
+       * client.c (socket_buffer_*): Moved most of the socket stuff to...
+       * socket-client.h: ...here...
+       * socket-client.c: ...and here.
+       * Makefile.am (cvs_SOURCES): Add new source files.
+       (Patch from Alexey Mahotkin  <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-05-05  Derek Price  <address@hidden>
+
+       * hash.c (findnode): Document behavior of this function when its list
+       argument is NULL and document this behavior.  Remove FIXME comment to
+       the effect that this is necessary.
+
+2003-05-01  Derek Price  <address@hidden>
+
+       * main.c (main): Ignore -z when CLIENT_SUPPORT is not defined.
+       (Report from Jim Salter <address@hidden>.)
+
+2003-05-01  Derek Price  <address@hidden>
+
+       * repos.c (Sanitize_Repository_Name): Remove some old comments about
+       the defunct RELATIVE_REPOS macro.
+       * server.c (outside_root): Ditto.
+
+2003-04-30  Derek Price  <address@hidden>
+
+       * vers_ts.c (Version_TS): Minor optimization.
+
+2003-04-30  Derek Price  <address@hidden>
+
+       * add.c (add): Fix a possible, if unlikely, memory out of bounds error.
+
+2003-04-30  Derek Price  <address@hidden>
+
+       * commit.c: Free vers in single place
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+2003-04-30  Derek Price  <address@hidden>
+
+       * Makefile.am: Get rid of $includeopt, using $CPPFLAGS as intended by
+       the Autoconf folk.
+       (Patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.in: Regenerated.
+
+2003-04-30  Derek Price  <address@hidden>
+
+       * add.c (add): Fix a possible, if unlikely, memory out of bounds error.
+
+2003-04-28  Derek Price  <address@hidden>
+
+       * client.c (save_prog): Remove unneeded struct.
+       (checkin_progs, update_progs): Remove these unneeded globals.
+       (handle_set_checkin_prog, handle_set_update_prog, do_deferred_progs):
+       Remove these functions.
+       (send_repository): Remove checkin and update prog support.
+       (responses): Remove Set-checkin-prog and Set-update-prog.
+       (get_responses_and_close): Don't call do_deferred_prog().
+       * commit.c (commit_usage): Remove reference to -n.
+       (commit): Don't set and send run_module_prog via -n.  Don't run
+       Checkin.prog or Checkout.prog in local mode.
+       * modules.c (CVSMODULE_OPTS): Remove -i and -u.
+       (do_module): Don't process -i and -u options to set checkin and update
+       progs, respectively.
+       * server.c (server_prog, serve_checkin_prog, server_update_prog):
+       Remove unused functions.
+       (requests): Remove Checkin-prog and Update-prog.
+       * update.c (update_dirleave_proc): Remove update prog functionality.
+
+       * cvs.h (CVSADM_CIPROG, CVSADM_UPROG): Remove unneeded defines.
+       * server.h (server_prog): Remove proto.
+       (progs): Remove enum.
+
+       * sanity.sh (modules5): Remove tests for checkin and update programs.
+
+2003-04-15  Derek Price  <address@hidden>
+
+       * sanity.sh (*): Shrink the yucky case statement using sed's transform
+       functionality.
+       (getlongoptarg): Convert this function to only confirm the arg and move
+       it...
+       (checklongoptarg): ...here.
+
+2003-04-10  Larry Jones  <address@hidden>
+
+       * Makefile.in: Regenerated.
+
+2003-04-04  Larry Jones  <address@hidden>
+
+       * sanity.sh (branches4-15): New test.
+
+       * error.h: Avoid __pure__ for GCC versions < 2.96 & __malloc__ for GCC
+       versions < 3.0.
+
+2003-04-03  Derek Price  <address@hidden>
+
+       * Makefile.am (DISTCLEAN_FILES): Move the contents of this variable...
+       (distclean-local): ...to this target now that Automake supports it.
+
+2003-04-03  Derek Price  <address@hidden>
+
+       * cvs.h: Avoid __pure__ for GCC versions < 2.96 & __malloc__ for GCC
+       versions < 3.0.
+
+2003-04-02  Larry Jones  <address@hidden>
+
+       * update.c (update, update_fileproc, update_filesdone_proc,
+       update_dirent_proc, update_dirleave_proc): Keep track of whether
+       a tag is both a revision tag and a branch tag and warn the user.
+       * sanity.sh (branches4): New tests for above.
+
+2003-04-02  Derek Price  <address@hidden>
+
+       * recurse.c (do_recursion): Use strstr("/./") rather than strchr('.')
+       to catch only indirections in paths and not directory names with dots
+       in them.
+       (Report from Pavel Roskin <address@hidden>.)
+
+       * sanity.sh (multiroot): Put a dot in the CVSROOT_DIRNAMEs.
+       (dottedroot): New test.
+       (Based on a script from Pavel Roskin <address@hidden>.)
+
+2003-04-01  Derek Price  <address@hidden>
+
+       * sanity.sh (multiroot2-9): Add newly TRACEd parse_cvsroot() to
+       expected output.
+
+2003-03-31  Derek Price  <address@hidden>
+
+       * rcs.c (freercsnode): Revert an accidental change from the previous
+       commit.
+
+2003-03-31  Derek Price  <address@hidden>
+
+       * recurse.c (start_recursion): Accept new repository argument so that
+       the working directory may be tracked by do_recursion without using
+       xgetwd(), which returned a value different from the one the user
+       requested when symlinks were in use.  Add TRACE.  Pass repository_in
+       to do_recursion() as part of the recursion frame.
+       (do_recursion): Default srepository to NULL and only set when we set
+       repository.  Keep track of repository using xframe.repository for the
+       r* commands rather than xgetwd(), which used to break when CVSROOT was
+       a symlink to a real root.
+
+       * cvs.h (xreadlink): #ifdef HAVE_READLINK proto.
+       (xresolvepath): New proto.
+       (start_recursion): Add repository to proto.
+       (*): Define some more abstract TRACE levels.
+       * update.h (do_update): Add repository argument to proto.
+
+       * checkout.c (safe_location): Add more complete header comment.  Add
+       TRACE.  Use new xresolvepath() function.  Always return true in
+       client mode since checking our destination path against the CVSROOT
+       path is usually meaningless in client/server mode.
+       (checkout_proc): Pass repository to do_update() for later use with
+       start_recursion().
+       (*): s/<chdir>/CVS_CHDIR/.
+       * filesubr.c (xreadlink): #ifdef HAVE_READLINK this function.  Add more
+       complete header comment.
+       (xresolvepath): New function.
+       * hash.c (walklist): Add TRACE.
+       * main.c (main): Don't copy and dispose of CVSRoot_cmdline twice.
+       * patch.c (patch_proc): Add TRACE.  Pass repository to
+       tag_check_valid() for r* commands.
+       * root.c (parse_cvsroot): Add TRACE.
+       * tag.c (rtag_proc): Add TRACE.
+       (check_fileproc): Ditto.
+       (tag_check_valid): Ditto.
+       * update.c (do_update): Accept new repository argument for co.
+       (update): Pass NULL repository to do_update().
+
+       * admin.c (*): Use new definition of start_recursion().
+       * annotate.c (*): Ditto.
+       * client.c (*): Ditto.
+       * commit.c (*): Ditto.
+       * diff.c (*): Ditto.
+       * edit.c (*): Ditto.
+       * lock.c (*): Ditto.
+       * log.c (*): Ditto.
+       * patch.c (*): Ditto.
+       * remove.c (*): Ditto.
+       * status.c (*): Ditto.
+       * tag.c (*): Ditto.
+       * update.c (*): Ditto.
+       * watch.c (*): Ditto.
+
+       * sanity.sh: Add new -l option to test symlinked roots.
+       (abspath-3.2): Use [a-z]* rather than "checkout".
+       (check_repository-1): Add server error messages about absolute paths
+       since the client now skips destination validity checks.
+       (check_repository-2): Process client error messages about CVSROOT
+       files being in the way since the client skips destination validity
+       checks since it should be rare that a client is running in
+       client/server mode on the server and CVS has no current way to check if
+       it is runnning on the server.
+
+2003-03-27  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (rdiff2): Add new test case for SEGV problem reported
+       against cvs 1.11.5.
+       (Report from James Cribb)
+
+2003-03-26  Derek Price  <address@hidden>
+
+       * client.c: Fix, reorganize, and comment ifdefs for AUTH_CLIENT_SUPPORT
+       and HAVE_GSSAPI.
+       * client.h: Ditto.  Remove some unecessary server function prototypes.
+
+2003-03-26  Derek Price  <address@hidden>
+
+       * client.c: Include the net headers for HAVE_GSSAPI.
+       (Report from Jim Salter <address@hidden>.)
+
+2003-03-26  Derek Price  <address@hidden>
+
+       * main.c (main): Verify the argument to -z when running without
+       CLIENT_SUPPORT since Eric Siegerman complained about being bit
+       by a run of `cvs -z -n up' which parsed the -n as the argument to
+       -z.
+       * sanity.sh (opterrmsg): New tests for -z argument checking.
+
+2003-03-26  Larry Jones  <address@hidden>
+
+       * main.c (main): Use strtol() instead of atoi() when parsing -z
+       to detect errors.
+       (Reported by Eric Siegerman <address@hidden>.)
+
+2003-03-25  Derek Price  <address@hidden>
+
+       * cvs.h: Disable GNU attributes as part of PROTO behavior.
+       * error.h: Mirror GNU attribute definitions from cvs.h.
+
+2003-03-25  Derek Price  <address@hidden>
+
+       * subr.c (cvs_trace): #ifdef use of server_active.
+       (Report from Jim Salter <address@hidden>.)
+
+       * cvs.h (xmalloc, xrealloc, xstrdup, parse_cvsroot,
+       local_cvsroot, normalize_cvsroot): Use GNU attributes.
+       * error.h (error_exit): Fix PROTO/__attribute__ specification.
+       * root.c (new_cvsroot_t): Add GNU attribute.
+
+2003-03-24  Derek Price  <address@hidden>
+
+       * Makefile.am: Update copyright notice.
+
+       * Makefile.in: Regenerated.
+
+2003-03-24  Larry Jones  <address@hidden>
+
+       * server.h (server_clear_template): Add declaration.
+       (server_template): Add parameter names to prototype.
+
+2003-03-20  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (env): Try more than one ps command if the first one
+       fails. This may let the test succeed on more platforms. Also,
+       keep the ps output that was processed for the error report.
+
+2003-03-19  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh (env): Use 'ps -el' rather than 'ps -l' so that
+       crontab jobs that might be running these tests without a
+       controlling terminal work properly.
+
+       * client.c (start_rsh_server): Use new definition of RSH_DFLT to
+       allow "rsh" to be configured to default to "ssh" or some other
+       local remote transport program.
+
+       * Makefile.in: Regenerated.
+
+2003-03-19  Larry Jones  <address@hidden>
+
+       * filesubr.c (mkdir_if_needed): Save errno since isdir() can clobber.
+       (Patch from Brian Poole <address@hidden>.)
+       * sanity.sh (abspath-4): Update to match.
+
+       * filesubr.c (locate_rcs): Fix gcc warning.
+
+2003-03-19  Derek Price  <address@hidden>
+
+       * add.c (add_directory): Only call WriteTemplate when the server is
+       active.
+       * create_adm.c (Create_Admin): Don't call WriteTemplate here since
+       Create_Admin is only called from the client.
+       * commit.c (commit_dirleaveproc): Don't call WriteTemplate here.  I'm
+       a little confused as to why since update_direntproc works for update.c,
+       but I can't come up with a test case that fails when this call is
+       missing.  Nor can I come up with a test case that passes when this call
+       is present and the one in commit_filesdoneproc is removed.
+       * sanity.sh (template): Tidy, minimize, and add some extra tests.
+
+2003-03-19  Mark D. Baushke  <address@hidden>
+
+       * .cvsignore: Added sanity.config.sh, a new auto-generated file.
+
+       * cvs.h (CVS_PID_ENV): New environment variable CVS_PID has the
+       pid of the parent cvs process.
+       * main.c (main): Initialize it.
+       * sanity.sh (env): Test it.
+
+2003-03-19  Derek Price  <address@hidden>
+
+       * sanity.config.sh.in: New file.
+       * sanity.sh: Source new config file when available.  Accept alternate
+       config file as an argument to a -c option.  Accept long options with
+       arguments.
+       (getlongoptarg): New function.
+
+       * Makefile.in: Regenerated.
+
+2003-03-18  Derek Price  <address@hidden>
+
+       * root.c (parse_root): Add some more comments and expand
+       #ifdef CLIENT_SUPPORT pragmas.  Rearrange sanity checks slightly.
+
+2003-03-18  Derek Price  <address@hidden>
+
+       * main.c (main): Output -R warning in quiet mode and correct spelling
+       in this warning message.
+       * sanity.sh (commit-readonlyfs-2r4): Correct cascaded spelling mistake
+       in test.
+
+2003-03-17  Derek Price  <address@hidden>
+
+       * add.c: Correct comment.
+       * client.c: Ditto.
+       * checkin.c (Checkin): Pass work file name to RCS_checkin so that this
+       function works properly in the case insensitive mode.
+       * commit.c (checkaddfile): Fix and factor add logic so that the
+       correct files and directories are created in the case insensitive mode.
+       Reuse code in RCS_parse() below.  This avoids a problem that could
+       cause corrupted RCS files to be created on an add from a case
+       insensitive system.  Corrupted RCS files could cause later assertion
+       failures for everyone.
+       (locate_rcs): Move this function...
+       * filesubr.c (locate_rcs): ...here and rewrite it.
+       (fopen_case): Remove this function.
+       (locate_file_in_dir): New function.
+       * cvs.h (locate_rcs): Prototype new function.
+       * rcs.c (RCS_parse): Factor out file location into locate_rcs.
+
+2003-03-17  Mark D. Baushke  <address@hidden>
+
+       * main.c (main): Issue a warning about readonlyfs options unless
+       quiet or really_quiet is set.
+       * lock.c (Writer_Lock): Modify readonlyfs error message text.
+       * sanity.sh (commit-readonlyfs): Adjust test for new messages.
+
+2003-03-17  Larry Jones  <address@hidden>
+
+       * server.c (switch_to_user): Add syslog calls for setgid/setuid
+       failure.
+
+2003-03-16  Mark D. Baushke  <address@hidden>
+
+       * cvs.h (CVSREADONLYFS_ENV): New macro to support new environment
+       variable "CVSREADONLYFS" for read-only file-system repository mode.
+       * lock.c (Reader_Lock, Writer_Lock): Add support for new read-only
+       file-system repository mode.
+       * main.c (main, opt_usage): Ditto.
+       * root.c (parse_cvsroot): Ditto.
+       * sanity.sh (commit-readonlyfs): Test new read-only file-system
+       repository mode.
+
+2003-03-14  Mark D. Baushke  <address@hidden>
+
+       * server.c (template_proc): Fix broken Template protocol code.
+       Must call send buf_send_counted() for Template files to avoid
+       "Protocol error: uncounted data discarded" messages in some
+       circumstances.
+       * sanity.sh (template): Test case to verify fix this fix.
+
+2003-03-10  Mark D. Baushke  <address@hidden>
+
+       * cvs.h (WriteTemplate): Add missing prototype.
+
+2003-03-07  Mark D Baushke <address@hidden>
+
+       * sanity.sh: Fix broken setting of the servercvs variable.
+
+2003-03-07  Derek Price  <address@hidden>
+
+       * sanity.sh (help): Add explanation of CVS-TO-TEST and edit for
+       consistency.
+
+2003-03-07  Derek Price  <address@hidden>
+
+       * sanity.sh (usage): Show users long --help rather than less
+       informative -h.
+
+2003-03-07  Derek Price  <address@hidden>
+
+       * sanity.sh: Add support for long options.
+       (exit_usage): Move the actual generation of usage text to...
+       (usage): ...this new function and improve the usage message.
+       (exit_help): New function.
+
+2003-03-07  Mark D. Baushke  <address@hidden>
+
+       * sanity.sh: Drop the clientcvs option. Add usage info for
+       the -s servercvs option.
+
+2003-03-07  Larry Jones  <address@hidden>
+
+       * commit.c (check_fileproc): Remove unused variables.
+
+       * patch.c (patch): Pass local to do_module so that -l actually works.
+       (Reported by John Coers <address@hidden>.)
+       (patch_fileproc): Fix uninitialized variables.
+       * sanity.sh: Define a DATE pattern for rdiff and use it.
+       (basic2-24a): New test for above.
+
+2003-03-07  Mark D. Baushke  <address@hidden>
+
+       * entries.c (WriteTemplate): New function to control updates to
+       the CVS/Template file or its removal.
+       * create_adm.c (Create_Admin): Use the new WriteTemplate function.
+       * add.c (add_directory): Add a WriteTemplate() call
+       when a new directory is added to the repository.
+       * commit.c (commit_filesdoneproc): Ensure that the CVS/Template is
+       updated at the end of a commit -- mostly to remove it if it is not
+       relevant.
+       (commit_dirleaveproc): Ensure that the CVS/Template gets updated
+       when the directory is left.
+       * update.c (update_dirent_proc): Update CVS/Template file.
+       * server.c (server_clear_template): New protocol response to
+       remove existing CVS/Template files.
+       * client.c (clear_template): New function to remove or truncate a
+       CVS/Template file.
+       (handle_clear_template): New function. Handle Clear-template
+       protocol response message.
+       (save_prog): Add new Clear-template response line.
+       * sanity.sh (template): Test the CVS/Template creation with
+       the remote protocol. Nothing gets created locally.
+       (multiroot2): Fix for minor changes to trace output.
+       (getopts): Allow tests to be run with specified client and server
+       cvs commands to allow for interoperatbility testing.
+       (check_keep): New shell function for --keep processing.
+
+2003-03-06  Derek Price  <address@hidden>
+
+       * subr.c (file_has_conflict): New file.
+       * commit.c (check_fileproc): Factor code into new file_has_conflict()
+       function.
+       * update.c (update_fileproc): Ditto.
+       * status.c (status_fileproc): Use new file_has_conflict() function.
+       (Report from Bernd Kuemmerlen <address@hidden>.)
+
+       * sanity.sh (status): New test for same.
+
+2003-03-06  Larry Jones  <address@hidden>
+
+       * sanity.sh (branches3-4): Set and export CVS_LOCAL_BRANCH_NUM
+       to be sure it really gets into the environment, then unset it
+       when finished (ala CVSWRAPPERS et al).
+
+2003-03-03  Mark D. Baushke  <address@hidden>
+
+       * sanith.sh (branches3): Localize the setting of
+       the CVS_LOCAL_BRANCH_NUM environment variable.
+
+       * rcs.c (RCS_magicrev): CVS_LOCAL_BRANCH_NUM feature.
+       Port of the FreeBSD hack for setting the next magic branch number
+       to be used. The original patch was written by Peter Wemm
+       <address@hidden> and may be found by visiting the URL:
+       
http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/cvs/src/rcs.c.diff?r1=1.1&r2=1.2
+       Implement a horrible (but simple) hack to allow some control over the
+       branch number that is assigned. This is specifically to support the
+       local commit feature of cvsup. If one sets $CVS_LOCAL_BRANCH_NUM to
+       (say) 1000 then branches the local repository, the revision numbers
+       will look like 1.66.1000.xx. This is almost a dead-set certainty that
+       there will be no conflicts with version numbers.
+       (This needs to be something more than an option to 'cvs tag' or 'cvs
+       rtag' as various parts of cvs "know" how to automatically branch files
+       (eg: cvs add). Trying to remember state is getting "Too Hard (TM)")
+       * sanity.sh (branches3): Test the CVS_LOCAL_BRANCH_NUM feature.
+
+2003-03-04  Derek Price  <address@hidden>
+
+       * history.c (history_write): Remove unneeded O_CREAT in the call to
+       open() since we abort a few lines earlier if the file doesn't exist.
+       Add a comment to the effect that this is not the optimal method of
+       doing things and needs fixed.
+
+2003-02-28  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): Set no_password for :gserver: and :kserver:
+       as tokens should already be obtained via external sources.
+       * update.c (update_fileproc): Remove redundant code.
+
+2003-02-28  Larry Jones  <address@hidden>
+
+       * lock.c (set_lock): If possible, try a short wait with no message
+       before calling lock_wait() to optimize master lock contention.
+
+2003-02-26  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout): Send "--" before file names.
+       * sanity.sh (spacefiles): Remote now works just like local.
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs4): Use UTC to work across timezones.
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_getdate): Fix a bug that shows up when checking out
+       files by date with the "-D date" command line option. There is
+       code in the original to handle a special case. If the date search
+       finds revision 1.1 it is supposed to check whether revision
+       1.1.1.1 has the same date stamp, which would indicate that the
+       file was originally brought in with "cvs import". In that case it
+       is supposed to return the vendor branch version 1.1.1.1.
+
+       However, there was a bug in the code. It actually compares the date
+       of revision 1.1 for equality with the date given on the command
+       line -- clearly wrong. This commit fixes the coding bug.
+
+       Note: There is an additional bug which is _not_ fixed in this
+       commit. The date comparison should not be a strict equality test.
+       It should allow a fudge factor of, say, 2-3 seconds. Old versions
+       of CVS created the two revisions with two separate invocations of
+       the RCS "ci" command. We have many old files in the tree in which
+       the dates of revisions 1.1 and 1.1.1.1 differ by 1 second.
+
+       This bug was discovered and fixed for FreeBSD cvs. See v 1.21 of
+       <http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/cvs/src/rcs.c.diff>
+        for more information.
+
+       * sanity.sh (rcs4): Tests for same.
+       (Patch from Mark D. Baushke <address@hidden>.)
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * logmsg.c (logfile_write): Do not pass a NULL pointer to
+       fprintf() when we have an empty log message.
+       * sanity.sh (editor): Add new tests to verify correct behavior of
+       empty log messages.
+       (Patch from Mark D. Baushke <address@hidden>, original report from
+       Piotr KUCHARSKI <address@hidden>.)
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * cvs.h (user_admin_options): Rename to...
+       (UserAdminOptions): ...this to match the convention set by
+       of RereadLogAfterVerify.
+       * admin.c (admin): Ditto.
+       * parseinfo.c (parse_config): Ditto.
+
+       * mkmodules.c (config_contents): Update with UserAdminOptions
+       information.
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * cvsbug.in: Import use of mktemp function from RedHat 8.0's
+       CVS 1.11.2 RPM.  Use new MKTEMP configure variable.  Use new
+       SENDMAIL from configure.
+
+       * Makefile.in: Regenerated.
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * cvs.h (user_admin_options): New global config option.
+       * admin.c (admin): Handle user_admin_options.
+       * parseinfo.c (parse_config): Handle UserAdminOptions.
+       (Original patch from Dan Peterson <address@hidden>.)
+
+2003-02-25  Derek Price  <address@hidden>
+
+       * watch.c (watch_usage): Use {} rather than () for literals.
+
+2003-02-21  Larry Jones  <address@hidden>
+
+       * server.c (switch_to_user): Update comment, change error message
+       so it's not an exact duplicate of the one in check_password.
+       (check_repository_password): Add syslog call for password mismatches.
+       (check_password): Add syslog call for password mismatches, rearrange
+       code to simplify and eliminate redundancy.
+       (pserver_authenticate_connection): Remove syslog call, now done by
+       lower-level routines.
+
+2003-02-19  Larry Jones  <address@hidden>
+
+       * sanity.sh (admin-10): Add test for repository files not in
+       working directory.
+
+       * admin.c (admin_fileproc): Fix crash when no rcs file, return
+       failure status for bogus files.
+       * sanity.sh (admin-4a): Test for above.
+       (Original patch submitted by Mark D. Baushke <address@hidden>).
+
+2003-02-14  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): Fix crashes in error cases.
+       (Reported by Bart Santy <address@hidden>.)
+       * sanity.sh (log): New tests for above.
+
+2003-02-14  Derek Price  <address@hidden>
+
+       * rcs.h (RCSNode): Add a field for the original path to print with
+       error messages.
+       * rcs.c (RCS_parsercsfile_i): Keep track of the original path for error
+       messages.
+       (freercsnode): Free the origpath.
+
+2003-02-14  Derek Price  <address@hidden>
+
+       * watch.c (watch_usage): Make the repeatability of -a part of the
+       usage spec.
+
+2003-02-14  Derek Price  <address@hidden>
+
+       * watch.c (watch_usage): Mention default for -a.  Mention multiple
+       invocations of -a.  Mention -R as default.  Use required () rather than
+       optional [] around watch subcommand list in invocation spec.  Use
+       `path' instead of `file'.  Put variable <> around `action' and `path'.
+
+2003-02-12  Derek Price  <address@hidden>
+
+       * main.c (main): Update copyright message to 2003.
+
+2003-02-08  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_checkout): Supply the full function name in the TRACE
+       output.
+       * update.c (checkout_file, join_file): Supply tag properly to
+       RCS_checkout more often.
+       (patch_file): Ditto.  Fill out comments.
+       * sanity.sh (keyword, keywordname): Some changes to accomodate the fact
+       that the above changes cause patches generated by patch_file to fail
+       occassionally.
+
+2003-02-07  Derek Price  <address@hidden>
+
+       * sanity.sh (*): Don't keep running after a test when --keep has been
+       supplied.  That was kind of silly, wasn't it?
+
+2003-02-07  Derek Price  <address@hidden>
+
+       * rcscmds.c (RCS_merge): Add a FIXME.
+
+2003-02-07  Derek Price  <address@hidden>
+
+       * commit.c (checkaddfile): Do not lose the vendor branch when
+       adding files to a new branch. Avoids extranious conflicts for
+       future vendor imports. This was found and fixed in FreeBSD cvs.
+       See http://www.freebsd.org/cgi/query-pr.cgi?pr=4033 for details.
+       * sanity.sh (branch-after-import): New test.
+       (Thanks to Mark D Baushke <address@hidden> for forwarding the
+       patch and writing the test cases!)
+
+       * sanity.sh (branch-after-import): Misc portablility and standard
+       changes.
+
+2003-02-07  Derek Price  <address@hidden>
+
+       * add.c: Exercise the pet peeve Karl Fogel, I think, infected me with
+       about using the word invalid rather than illegal and reserving illegal
+       for use when actually discussing laws and governmentally enforced
+       restrictions:
+       s/illegal/invalid/g;s/legality/validity/g;s/legal/valid/g;
+       * admin.c: Ditto.
+       * cvs.h: Ditto.
+       * expand_path.c: Ditto.
+       * log.c: Ditto.
+       * modules.c: Ditto.
+       * rcs.c: Ditto.
+       * rcs.h: Ditto.
+       * repos.c: Ditto.
+       * root.c: Ditto.
+       * sanity.sh: Ditto.
+       * scramble.c: Ditto.
+       * server.c: Ditto.
+       * subr.c: Ditto.
+
+2003-02-06  Derek Price  <address@hidden>
+
+       * rcs.c (RCS_getdatebranch): Update header comment to reflect the state
+       of the docs and the code's operation.
+
+2003-02-06  Derek Price  <address@hidden>
+
+       * client.c: Use the complete path to the CVSADM_TEMPLATE file in
+       error messages.  Remove related FIXME.
+
+2003-02-04  Derek Price  <address@hidden>
+
+       * status.c (status_fileproc): Add a FIXME comment.
+
+2003-02-04  Derek Price  <address@hidden>
+
+       * sanity.sh (conflicts2- c. 142d): New test for double add and two
+       attempted commits of files with the same name.  Fill out some comments
+       and change one FIXME to a FIXCVS THEN FIXME.
+
+2003-02-03  Derek Price  <address@hidden>
+
+       * client.c (start_Server): Send multiple trace options when
+       necessary.
+       * server.c (server): Update trace option processing to accept multiple
+       -t arguments.
+       * *: Use new TRACE macro.
+
+2003-02-02  Larry Jones  <address@hidden>
+
+       * error.c: Update to match error.h.
+
+       * cvs.h (cvs_trace): Add attribute for GNU printf format checking.
+       * error.h: Use same check for prototypes as cvs.h.  Use PROTO
+       macro rather than #ifdef for error and error_exit.
+
+2003-02-01  Larry Jones  <address@hidden>
+
+       * buffer.c (stdio_buffer_shutdown): Handle EINTR from waitpid.
+       (Patch from Johannes Grødem <address@hidden>.)
+
+2003-02-01  Derek Price  <address@hidden>
+
+       * lock.c: Remove extra line feed on TRACE output.
+
+2003-01-31  Derek Price  <address@hidden>
+
+       * cvs.h: Move header includes in from...
+       * error.c: ...here.  Remove checks for definition of vprintf().
+       Since our error() function was making assumptions about the definition
+       of VA_START, we must not have been compiling on platforms without
+       vprintf for quite awhile and I've heard no complaints.
+       (fperrmsg): Assume vprintf().
+       * subr.c (cvs_trace): Don't assume ANSI C function declarations.
+
+2003-01-31  Derek Price  <address@hidden>
+
+       * main.c (main): Allow multiple -t options.
+       (opt_usage): Correct usage.
+       * cvs.h (TRACE): New macro.
+       * subr.c (cvs_trace): New function.
+       (Thanks to the team at the CVSNT project.)
+
+       * lock.c (*): Use new TRACE macro.
+
+2003-01-31  Derek Price  <address@hidden>
+
+       * sanity.sh (keywordname): Change a "FIXME" comment to "FIXCVS".
+
+2003-01-30  Derek Price  <address@hidden>
+
+       * sanity.sh (keywordname): New test.
+
+2003-01-23  Larry Jones  <address@hidden>
+
+       * diff.c (diff_fileproc): Restructure code to simplify and eliminate
+       redundant tests.
+
+       * server.c (do_cvs_command): Use WCOREDUMP macro rather than hard
+       coding test for core file.
+
+2003-01-21  Larry Jones  <address@hidden>
+
+       * root.c (method_name): Redefine as a 2D array.
+       * root.h (method_name): Ditto.
+
+2003-01-21  Jim Meyering  <address@hidden>
+
+       * add.c (add): Rename local-shadowing `i' to `j'.
+
+       * root.c (method_names): Declare to be a const array of const strings.
+       (Name_Root): Save errno so it doesn't get clobbered
+       by the intervening error call.
+       Use getline's return value, mainly to save a call to strrchr.
+
+2003-01-20  Larry Jones  <address@hidden>
+
+       * myndbm.c (O_ACCMODE): Parenthesize the replacement string so that
+       it parses correctly.
+       (Reported by Andres Bertens <address@hidden>.)
+
+2003-01-15  Karl Fogel  <address@hidden>
+
+       * server.c (dirswitch): Don't free dir_name until right before
+       allocating it again.  This removes a potential double-free
+       problem, whereby this function could free dir_name and then
+       immediately return due to invalid directory syntax (without ever
+       reassigning dir_name), then reenter and free dir_name again.
+
+        Thanks to Stefan Esser <address@hidden> for the fix.
+
+2003-01-08  Larry Jones  <address@hidden>
+
+       * client.c (update_entries): Only "0" is a special version number;
+       other numbers starting with 0 (like 0.1) are normal version numbers.
+       * commit.c (find_fileproc): Ditto.  Also reorganize the code to
+       simplify the conditions.
+       (Reported by Michele Zamparelli <address@hidden>.)
+
+2003-01-02  Larry Jones  <address@hidden>
+
+       * rcs.c (getdelta): Use RCSDEAD rather than literal "dead".
+
+2002-12-27  Derek Price  <address@hidden>
+
+       * admin.c: s/LOCK_(NONE|WRITE|READ)/CVS_$&/g; since the definition of
+       LOCK_WRITE clashes with a definition in objidl.h on Windoze platforms.
+       * annotate.c: Ditto.
+       * client.c: Ditto.
+       * commit.c: Ditto.
+       * cvs.h: Ditto.
+       * diff.c: Ditto.
+       * edit.c: Ditto.
+       * lock.c: Ditto.
+       * log.c: Ditto.
+       * patch.c: Ditto.
+       * recurse.c: Ditto.
+       * remove.c: Ditto.
+       * status.c: Ditto.
+       * tag.c: Ditto.
+       * update.c: Ditto.
+       * watch.c: Ditto.
+       * myndbm.c: Ditto & define O_ACCMODE when it isn't defined, as under
+       Windoze.
+       (Thanks to Stephane Rouleau <address@hidden>,
+        Cristopher Seawood <address@hidden>, and
+        Frederico Costa <address@hidden> for all their hints,
+        tips, and patches for this problem.)
+
+2002-12-20  Derek Price  <address@hidden>
+
+       * client.c (send_a_repository): Suppress a warning under Windoze.
+
+2002-12-19  Derek Price  <address@hidden>
+
+       * Makefile.am: Remove reference to options.h.
+       * cvs.h: Ditto.
+       * options.h: Remove this obsolete file.
+       * sanity.sh: Remove comment about external diffs causing tests to fail
+       since CVS hasn't used external diffs in years.
+
+       * Makefile.in: Regenerated.
+
+2002-12-16  Derek Price  <address@hidden>
+
+       * admin.c: Disable cvsadmin group checking on the client.
+       (Reported by Dan Peterson <address@hidden>.)
+
+2002-12-06  Derek Price  <address@hidden>
+
+       * buffer.c: Replace calls to malloc with calls to xmalloc and calls to
+       realloc with calls to xrealloc.
+       * parseinfo.c: Ditto.
+       * root.c: Ditto.
+       * server.c: Ditto.
+       * zlib.c: Ditto.
+       * scramble.c: Change some comments to refer to xmalloc rather than
+       malloc.
+       (Reported by Dan Peterson <address@hidden>.)
+
+2002-12-04  Derek Price  <address@hidden>
+
+       * options.h: Remove CVS_ADMIN_GROUP.
+
+2002-12-02  Larry Jones  <address@hidden>
+
+       * commit.c (commit): Strip leading zeros from numeric revision
+       in addition to trailing dots.
+       (Reported by Peter Meszaros <address@hidden>.)
+
+2002-11-22  Larry Jones  <address@hidden>
+
+       * sanity.sh: Note that the tests run for a long time.
+
+       * checkout.c (safe_location): Use xstrdup, not strdup.
+       (Reported by Terrence Enger <address@hidden>.)
+
+2002-11-19  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): Fix cross-branch correction code.
+
+       * sanity.sh: Set $LANG for systems that ignore $LC_ALL.
+       (rcs2-7): Change date offset from 100 months to 96 months to reduce
+       periodic problems with invalid dates.
+
+2002-11-12  Derek Price  <address@hidden>
+
+       * sanity.sh (rcslib-symlink): Use rm -f rather than a simple rm when
+       removing links because under some configurations of RH Linux 8.0 the
+       script pauses to ask for removal approval.
+
+2002-11-08  Derek Price  <address@hidden>
+
+       * sanity.sh (importc): Update the use of the touch command to be
+       compliant with POSIX 1003.1-2001, SUS2, and SUS3 now that GNU touch
+       supports this.  If this breaks any test platforms we should test
+       the behavior of touch like we do for other tools.
+
+2002-11-03  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs2-7): Notate with a wild untested hypothesis.
+
+2002-11-03  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs2-7): Notate with three more failure dates.
+
+2002-10-25  Derek Price  <address@hidden>
+
+       * root.c: Change some calls to SYSTEM_CLEANUP() and then exit() to
+       more appropriate calls to error_exit().
+       * server.c: Ditto.
+       * tag.c: Ditto.
+
+2002-10-24  Derek Price  <address@hidden>
+
+       * buffer.c (stdio_buffer_shutdown): Remove the getc() call used to
+       detect spurious output from clients since getc() would sometimes
+       block and hang indefinately if the client kept the conection open but
+       sent no data.  Bug reports state that this hapened frequently with
+       older clients connecting to 1.11.2 servers, especially when
+       compression is enabled.
+       (Original report from Mark D. Baushke <address@hidden>.
+        Original patch from Ralf S. Engelschall <address@hidden>
+        via Peter Wemm <address@hidden>.)
+
+2002-10-05  Larry Jones  <address@hidden>
+
+       * recurse.c (start_recursion, do_recursion): Allow write locking
+       in addition to read locking.  Change all callers.
+       * cvs.h: Change prototype to match, add lock types.
+       * tag.c (rtag_proc, rtag_fileproc, tag_fileproc): Have start_recursion
+       use write locks rather than calling lock_dir_for_write to avoid deadly
+       embrace.
+
+2002-10-04  Larry Jones  <address@hidden>
+
+       * client.c (get_responses_and_close, connect_to_pserver): Set
+       to_server and from_server to NULL after freeing.
+       * main.c (main): Clear server_active when finished.  Also neaten
+       up the SERVER_SUPPORT ifdef's.
+       * server.c (do_cvs_command): Set protocol_inbuf, stderrbuf, and
+       stdoutbuf to NULL after freeing.
+       (server_cleanup): Free buf_from_net and buf_to_set and set to NULL.
+       Also reset error_use_protocol.
+       (server): Don't SIG_register server_cleanup.  main_cleanup (which
+       is already registered) outputs a fatal error which causes it to
+       be called; registering it directly results in it being called twice.
+       (cvs_output): Don't try to use buf_to_net or protocol if they're NULL.
+
+2002-10-03  Larry Jones  <address@hidden>
+
+       * lock.c (readers_exist): Ignore our own read lock, if any, to
+       allow upgrading an existing read lock to a write lock.
+       * tag.c (rtag_proc, rtag_fileproc, tag_fileproc): Rather than
+       locking the entire tree, have start_recursion establish read
+       locks and then upgrade the read lock to a write lock (so only
+       one directory is locked at a time).
+
+2002-09-27  Larry Jones  <address@hidden>
+
+       * add.c (add): Send "--" before file names.
+       * admin.c (admin): Ditto.
+       * annotate.c (annotate): Ditto.
+       * commit.c (commit): Ditto.
+       * diff.c (diff): Ditto.
+       * edit.c (watch_onoff, editors): Ditto.
+       * log.c (cvslog): Ditto.
+       * remove.c (cvsremove): Ditto.
+       * status.c (cvsstatus): Ditto.
+       * tag.c (cvstag): Ditto.
+       * update.c (update): Ditto.
+       * watch.c (watch_addremove, watchers): Ditto.
+
+       * sanity.sh (client-9): Update to match.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Remove prototype of STDC exit() function.  If this breaks
+       a build, this should be detected in configure.in somehow rather than
+       restoring the line to this file.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Move definition of AUTH_CLIENT_SUPPORT into configure.in.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Move definition of FORCE_USE_EDITOR into configure.in.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Move definition of UMASK_DFLT into configure.in.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated using Automake 1.6.3.
+
+2002-09-24  Larry Jones  <address@hidden>
+
+       * filesubr.c, history.c, import.c, rcs.c, update.c: Use
+       HAVE_STRUCT_STAT_ST_BLKSIZE and HAVE_STRUCT_STAT_ST_RDEV instead of
+       the obsolete HAVE_ST_BLKSIZE and HAVE_ST_RDEV.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Move definition of TMPDIR_DFLT into configure.in.
+
+2002-09-24  Derek Price  <address@hidden>
+
+       * options.h: Move defininition of EDITOR_DFLT into configure.in.
+
+       * Makefile.in: Regenerated.
+
+2002-09-23  Jim Meyering  <address@hidden>
+
+       If `cvs -d REPO commit ...' was used to override CVS/Root,
+       then modified files in the directory from which cvs is invoked
+       would not be committed.
+       * client.c (arg_should_not_be_sent_to_server): The above would happen
+       because this function would throw out a file name when CVS/Root
+       did not match the current server.  Fix by allowing the command-line-
+       specified repository to take precedence over the value returned
+       by Name_Root.  Patch by Simon Walton <address@hidden>.
+       * sanity.sh (commit-d): New tests for the above.
+       Patch by Simon Walton <address@hidden>.
+
+2002-09-20  Derek Price  <address@hidden>
+
+       * options.h: Move definition of SERVER_FLOWCONTROL, SERVER_HI_WATER,
+       and SERVER_LO_WATER into configure.in.
+
+2002-09-20  Derek Price  <address@hidden>
+
+       * options.h: Move definition of PATCH_PROGRAM to configure.in.
+
+2002-09-18  Larry Jones  <address@hidden>
+
+       * client.c (call_in_directory): Don't create admin directory when
+       exporting into an existing directory.
+       (Reported by Jens Engel <address@hidden>.)
+       * sanity.sh (basic2): New tests for above.
+
+2002-09-16  Jim Meyering  <address@hidden>
+
+       * server.c (do_cvs_command): Move declarations of locals, timeout and
+       timeout_ptr, `up', out of enclosing `#ifdef SERVER_FLOWCONTROL' block.
+       Otherwise, this file would not compile with SERVER_FLOWCONTROL
+       turned off.  Patch by Ed Santiago <address@hidden>.
+
+2002-09-15  Larry Jones  <address@hidden>
+
+       * myndbm.c (mydbm_open): Open the file read/write rather than read-
+       only if that's what the user asked for to ensure that the later open
+       for write will succeed.
+       (Patch submitted by Josh Lehan <address@hidden>.)
+
+2002-08-28  Larry Jones  <address@hidden>
+
+       * logmsg.c (do_editor): Fix bug which prevented reusing log messages.
+       (Reported by Eric Siegerman <address@hidden>.)
+
+2002-08-16  Derek Price  <address@hidden>
+
+       * create_adm.c (Create_Admin): Assume RELATIVE_REPOS is set.
+       * server.c (outside_root): Add comment.
+       * options.h: Remove RELATIVE_REPOS & CVS_BADROOT.
+       * sanity.sh: Remove a lot of !RELATIVE_REPOS cruft from tests.
+
+2002-08-14  Derek Price  <address@hidden>
+
+       * server.c (server): Dispose of the correct pointer.  Tidy comment.
+
+2002-08-13  Derek Price  <address@hidden>
+
+       * client.c (get_cvs_port_number): Fix typo in comment.  Add comments.
+       * server.c (server): Fix a FIXME.  Remove an errant "const" directive.
+       Remove some redundant memory allocation and error handling code.
+
+2002-08-08  Derek Price  <address@hidden>
+
+       * import.c (import): Surrounded `server_active' with
+       #ifdef SERVER_SUPPORT/#endif.
+       * commit.c (commit_fileproc, commit_direntproc): Likewise.
+       (Patch from John Tytgat  <address@hidden>.)
+
+2002-07-31  Derek Price  <address@hidden>
+
+       * filesubr.c: Add a line so VIM can determine tab stops and shift 
widths.
+       * root.c: Ditto.
+       * (parse_cvsroot): Add comments and tidy slightly.
+
+2002-07-31  Derek Price  <address@hidden>
+
+       * sanity.sh: Add another date to the comment about rcs2-7 failing.
+
+2002-07-26  Jim Meyering  <address@hidden>
+
+       * commit.c (find_fileproc): When committing in client mode,
+       arrange to fail if a `cvs add'ed file no longer exists in the
+       working directory.
+       * sanity.sh (commit-add-missing): New test for above.
+
+2002-07-25  Larry Jones  <address@hidden>
+
+       * sanity.sh: Set $TMPDIR if it's not already set and use it rather
+       than /tmp for the expected server temp directory path.
+
+2002-07-09  Larry Jones  <address@hidden>
+
+       * vers_ts.c (time_stamp_server, time_stamp): Eliminate unneeded
+       struct_tm copying.
+
+       * lock.c (lock_wait, lock_obtained): Display time in UTC if possible
+       to reduce confusion in client/server mode.
+       (Original patch from Eduardo Perez Ureta <address@hidden>.)
+
+2002-06-26  Larry Jones  <address@hidden>
+
+       * tag.c (check_fileproc): When checking up-to-date, T_REMOVE_ENTRY
+       is also a valid status.
+       (Reported by David Everly <address@hidden>.)
+       * sanity.sh (tagc): New tests for above.
+
+2002-06-18  Larry Jones  <address@hidden>
+
+       * update.c (patch_file): Don't patch if diff bigger than file.
+       Don't bother adjusting the permission on the diff output if
+       we're not going to use it.
+
+
+2002-06-18  Derek Price  <address@hidden>
+
+       * server.c: Handle HPUX password expiration fields in the passwd
+       string in case we are set up on a server with NIS passwords served
+       from HPUX.
+       (Original patch from John Cavanaugh <address@hidden>.)
+
+2002-06-17  Larry Jones  <address@hidden>
+           and Jonathan Kamens  <address@hidden>
+
+       * commit.c (commit_fileproc, commit_direntproc): Don't try to call
+       an editor to get the log message if running as a server.  Instead,
+       just use an empty log message.
+       * import.c (import): Ditto.
+
+       * import.c (import): In client mode, always send a message to the
+       server, even if it's empty (this parallels a change made by Larry
+       Jones to commit.c on May 7).
+
+2002-05-31  Larry Jones  <address@hidden>
+
+       * rcs.c: Conditionally define MAP_FAILED for old systems that don't
+       have it in <mman.h>.
+       (Reported by jeremy brand <address@hidden>.)
+
+2002-05-24  Larry Jones  <address@hidden>
+
+       * rcscmds.c (diff_exec): Add a -- before the first file name just
+       in case it looks like an option.
+       (Reported by Zooko <address@hidden>.)
+
+       * rcscmds.c (diff_execv): Remove -- same as diff_exec.  Change
+       only caller.
+       * cvs.h: Ditto.
+
+2002-05-23  Larry Jones  <address@hidden>
+
+       * cvs.h (strcat_filename_onto_homedir): Make arguments const.
+       * filesubr.c (strcat_filename_onto_homedir): Make arguments const,
+       move more code here from callers, change all callers.
+
+2002-05-22  Derek Price  <address@hidden>
+
+       * cvs.h: Add prototype for this...
+       * filesubr.c (strcat_filename_onto_homedir): new function.
+       * login.c (): Use new function.
+
+       * cvsrc.c (read_cvsrc): Use new function due to problems on VMS.
+       * ignore.c (ign_setup): Ditto.
+       * wrapper.c (wrap_setup): Ditto.
+       (Original patch from Karsten Spang <address@hidden>.)
+
+2002-05-21  Larry Jones  <address@hidden>
+
+       * rcs.c (rcsbuf_getkey): Correct off-by-one error in ptr assertion
+       and add a similar assertion for ptrend.
+       (Reported by Rebecca Young <address@hidden>.)
+       (rcsbuf_fill): Remove redundant code.
+
+2002-05-20  Derek Price  <address@hidden>
+
+       * buffer.h: New prototype for...
+       * buffer.c (stdio_buffer_get_file): this new function to abstract
+       access to a buffer's file descriptor.
+       * client.c (auth_server): Use the new function.
+       (Original patch from Jonathan Kamens <address@hidden>.)
+
+2002-05-20  Derek Price  <address@hidden>
+
+       * main.c (main): Add 2002 to the copyright years output with the
+       version string.
+
+2002-05-15  Larry Jones  <address@hidden>
+
+       * log.c (log_parse_list): Fix off-by-one error which caused
+       incorrect handling of 'cvs log -wuser1,user2 foo.c' command.
+       (Patch from Alexey Mahotkin <address@hidden>,
+       reported by Alex Morozov <address@hidden>.)
+
+2002-05-09  Larry Jones  <address@hidden>
+
+       * login.c (password_entry_operation): Get cvsroot_canonical before
+       trying to read the user's password file so we have it even if the
+       file doesn't exist.
+       (Reported by Sarah Thompson <address@hidden>.)
+
+2002-05-08  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add options.h explicitly - since we
+       stopped generating it dynamically, Automake stopped noticing it and
+       including it in dists.  See TODO item #214 for notes.
+
+2002-05-08  Derek Price  <address@hidden>
+
+       * cvs.h: Use the HAVE_CONFIG_H define.
+
+2002-05-07  Larry Jones  <address@hidden>
+
+       * filesubr.c (isaccessible): Set errno before returning failure
+       in the SETXID_SUPPORT code.
+
+       * logmsg (do_verify): Avoid even more work if there's no verifymsg
+       script to run.
+
+       * logmsg: Use fputs/putc rather than fprintf where appropriate.
+       (do_verify): Run the verifymsg script even if there's no log
+       message.  (Reported by Andy Baker <address@hidden>.)
+       Don't reread the log message unless a verifymsg script was run.
+
+       * commit.c (commit): Always send -m to the server, even if there's
+       no message.
+
+       * create_adm.c (Create_Admin): Add dotemplate parameter to trace.
+       Remove unreachable code.
+
+2002-05-03  Larry Jones  <address@hidden>
+
+       * server.c (serve_watch_on, serve_watch_off, serve_watch_add,
+        serve_watch_remove): Just pass "watch" as the command name
+        to do_cvs_command to avoid unknown command errors.
+        (Reported by Gary Hennigan <address@hidden>.)
+
+       * rcs.c (RCS_checkin): Fix bad call to error () in buggy
+       PRESERVE_PERMISSIONS code.
+       (rcs_internal_unlockfile): Include current value of errno in error
+       message even though it may well be irrelevant (it's still better
+       than nothing).
+
+2002-05-02  Derek Price  <address@hidden>
+
+       * .cvsignore: Remove lines for files obsoleted by new autotools.
+
+2002-05-02  Derek Price  <address@hidden>
+
+       * stamp-h2.in: Remove this uneeded file.
+
+2002-05-01  Derek Price  <address@hidden>
+
+       * options.h.in: Move to...
+       * options.h: here.
+
+2002-04-30  Derek Price  <address@hidden>
+
+       * version.h.in: Remove this file.
+       * version.h: Ditto.
+
+       * Makefile.am: Remove references to version.h.
+       * cvs.h: Use <> rather than "" around the config.h #include.  I didn't
+       quite bother to understand why, but autoconf recommends it.
+       * cvsbug.in: Use PACKAGE_BUGREPORT defined by configure for the bug
+       report email address.
+       * version.c (version): Use PACKAGE_STRING defined in config.h instead
+       of the version_string that used to be defined in version.h.
+
+       * Makefile.in: Regenerated with automake 1.6.
+
+2002-04-28  Derek Price  <address@hidden>
+
+       * cvs.h: Use `"'s around includes when we mean a local file.
+
+2002-04-28  Derek Price  <address@hidden>
+
+       * cvs.h: #define new names for functions and variables when they
+       might conflict with system definitions (namely on Mac OS X 10.1 with
+       the most recent dev packages - This should be removable after the Mac
+       dev packages are fixed.).
+
+2002-04-26  Larry Jones  <address@hidden>
+
+       * logmsg.c (do_editor): Fix assertion when CLIENT_SUPPORT not defined.
+       (Reported by Matthias Andree <address@hidden>.)
+
+2002-04-19  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): First cut at code to allow logging
+       between a revision and *any* ancestor, not just one explicitly on
+       the same branch (e.g., from 1.1 to 4.1.2.3.6.1).
+
+       * subr.c (gca): Simplify and optimize.
+
+2002-04-19  Jim Meyering  <address@hidden>
+       and Ed Santiago <address@hidden>
+
+       * classify.c (Classify_File): Fix it so that `cvs update -p -r...'
+       works, even under some slightly unusual (though perfectly legitimate)
+       circumstances.
+       * sanity.sh (update-p): New tests for this.
+
+2002-04-18  Derek Price  <address@hidden>
+
+       * sanity.sh: Move test for regex metacharacters in username until
+       after we're sure we found the version of expr that we're going to use.
+
+2002-04-18  Larry Jones  <address@hidden>
+
+       * admin.c (admin_fileproc): Allow admin to be used on RCS files with
+       no local version (e.g., removed files) like most other subcommands.
+
+       * wrapper.c (wrap_add): Update URL of -t/-f wrapper discussion.
+
+2002-04-18  Derek Price  <address@hidden>
+
+       * version.h: Regenerated for 1.11.2.1 version update.
+
+2002-04-17  Derek Price  <address@hidden>
+
+       * version.h: Regenerated for 1.11.2.
+
+2002-04-03  Derek Price  <address@hidden>
+
+       * stamp-h2.in: Regenerate with recent version of Autoconf.
+
+2002-04-03  Derek Price  <address@hidden>
+
+       * sanity.sh (TR): Send the stderr of one of the tool setup (tr) tests
+       to /dev/null to avoid spurious output on some operating systems
+       (notably Mac OS X).
+
+2002-03-22  Larry Jones  <address@hidden>
+
+       * sanity.sh (rcslib): Correct new tests to use ${testcvs} instead
+       of cvs.
+
+2002-03-21  Derek Price  <address@hidden>
+
+       * vers_ts.c (time_stamp): Return the timestamp for the newer of the
+       link and the link's source when the file is a link.
+       (Patch from RedHat cvs-1.11.1p1-7 SRPM.)
+
+       * sanity.sh (rcslib): Test for same.
+
+2002-03-17  Larry Jones  <address@hidden>
+
+       * log.c (cvslog, log_fileproc): Add -S option to suppress head or
+       file name if no revisions selected.
+       * sanity.sh (log): New tests for above.
+
+2002-03-13  Derek Price  <address@hidden>
+
+       * main.c (usg): Correct a spelling mistake in a comment.
+       (Thanks to Matt Kraai <address@hidden>.)
+
+2002-03-09  Larry Jones  <address@hidden>
+
+       * import.c (import): Change the suggested merge message to use
+       rev tags instead of the branch tag with a date.
+       * sanity.sh (import, importb): Change to match.
+
+       * remove.c (remove_fileproc): Disallow removing files with sticky
+       dates for the same reason we already disallow sticky numeric tags.
+       * sanity.sh (sticky): New test for above.
+
+2002-02-27  Larry Jones  <address@hidden>
+
+       * diff.c (diff_fileproc): Treat dead revisions as nonexistent.
+
+2002-02-26  Larry Jones  <address@hidden>
+
+       * diff.c (diff): Remove -V and --paginate options: they aren't valid.
+       (diff_usage): Document all the diff options.
+
+2002-02-13  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_gettag): Do not interpret an empty tag as HEAD (nothing
+       else does and I don't see any documentation that says it should).
+       (translate_symtag): Break out of loop at end of symbols to prevent
+       looping forever when tag is "".
+       (Reported by Alain ENOUT <address@hidden>
+       via Eric Gillespie <address@hidden>.)
+
+2002-02-11  Larry Jones  <address@hidden>
+
+       * server.c (server_cleanup): Set buf_to_net back to blocking mode
+       and flush it (in case there are any error messages pending) before
+       shutting down buf_from_net and again right before shutting it down.
+
+2002-02-08  Larry Jones  <address@hidden>
+
+       * main.c (lookup_command_attribute): Throw a fatal error if the
+       command is not found.
+       * server.c (server_tag): Use the correct command name.
+
+2002-01-30  Larry Jones  <address@hidden>
+
+       * error.h (error_exit): Remove unintended prototype.
+
+       * server.c (serve_root): Remove check for impossible condition.
+       (serve_init): Save and restore current_parsed_root.
+
+2002-01-29  Larry Jones  <address@hidden>
+
+       * error.h (error_exit): Declare __noreturn__ to avoid spurious
+       warnings.
+
+       * server.c (serve_root): If the specified root doesn't match the
+       pserver root, return before changing current_parsed_root to prevent
+       subsequent commands from accessing an unchecked root directory.
+       (server_init): Check specified root against the pserver root and
+       complain if they don't match.  Also, if there are pending errors,
+       print them and return before changing current_parsed_root to prevent
+       subsequent commands from accessing an unchecked root directory.
+       * sanity.sh (pserver): New tests for above.
+
+2002-01-10  Larry Jones  <address@hidden>
+
+       * log.c (log_version_requested): Change :: in revision spec to be
+       exclusive just on the low end (so -r tag1::tag2 gives revisions
+       after tag1 but up to and including tag2), which is much more useful
+       than the previous (exclusive at both ends) behavior.
+       (log_usage): Update to match.
+       * sanity.sh (log): Update to match.
+
+2002-01-02  Larry Jones  <address@hidden>
+
+       * server.c (LOG_DAEMON): Define if needed.
+       (Patch from John David Anglin <address@hidden>.)
+
+       * server.c (pserver_authenticate_connection): Add a specific error
+       message for EOF at protocol start and syslog if available.
+       * sanity.sh (pserver-bufinit): Update to match.
+
+2001-12-10  Larry Jones  <address@hidden>
+
+       * log.c (log_usage): Note that -r and -d take lists, not just a
+       single specification.
+       (log_expand_revlist): Don't dereference null pointers when one end
+       of a revision range is a non-existent tag.
+
+2001-12-03  Larry Jones  <address@hidden>
+
+       * annotate.c (annotate, annotate_fileproc): Don't annotate binary
+       files unless new -F option given.
+       * sanity.sh (basica, ann, ann-id, rcs, keywordlog, tagdate): Update
+       to match.
+
+2001-11-30  Larry Jones  <address@hidden>
+
+       * admin.c (admin): Allow unrestricted usage of -q in addition to -k.
+
+2001-10-25  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): Make erroneous or inconsistent revision
+       specs select no revisions rather than all revisions.
+
+2001-10-23  Larry Jones  <address@hidden>
+
+       * import.c (add_rcs_file): Don't put an expand entry into the file
+       for the default expansion mode (kv).
+       * wrapper.c (wrap_send, wrap_unparse_rcs_options): Process entries
+       with default expansion mode since they may be needed to avoid matching
+       a more general entry later.
+       (wrap_add): Set rcsOption to NULL for default (kv).
+       (wrap_add_entry): Use structure assignment to copy entries rather
+       that copying members by hand.
+       * sanity.sh (binwrap3): Revise to test wrapper entries that don't
+       specify any non-default options but just prevent matching later,
+       more general entries.
+
+2001-10-02  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_fully_parse): Add revision number to more error messages.
+
+2001-09-27  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_fully_parse, RCS_getdeltatext): Add the missing revision
+       number to the "mismatch" error message.
+
+       * sanity.sh (multiroot2-9a): Update to match changes to lock.c.
+
+2001-09-26  Larry Jones  <address@hidden>
+
+       * lock.c (Lock_Cleanup, Reader_Lock, write_lock): Add trace messages.
+
+2001-09-24  Derek Price  <address@hidden>
+
+        * find_names.c (add_entries_proc): Leave closure specified as such in 
the
+       function definition for clarity.
+
+        * find_names.c (Find_Names): Use 'closure' feature of walklist()
+        to eliminate the static variable.
+       (add_entries_proc): Expect closure to be the file list.
+       (Patch from Alexey Mahotkin  <address@hidden>.)
+
+2001-09-19  Derek Price  <address@hidden>
+
+       * rcs.c (rcsbuf_valpolish_internal): Restore one of the
+       "if ( ... ) abort();" sequences since it seems to check the validity of
+       the RCS file rather than for a programming error.  Also added a FIXME
+       comment to the effect that we should explain the RCS file error to the
+       user as such if it is such.
+       (Thanks to Larry Jones  <address@hidden>.)
+
+2001-09-19  Derek Price  <address@hidden>
+
+       * rcs.c (rcsbuf_getkey, rcsbuf_valpolish_internal): Replace some code
+       of the form "if ( ... ) abort();" with equivalent calls to assert().
+
+2001-09-17  Derek Price  <address@hidden>
+
+       * myndbm.c (mydbm_load_file): Fix buffer overflow error and make error
+       messages more informative.
+       * sanity.sh (modules6): New test.
+       (Original report from Taska <address@hidden> and others.)
+
+2001-09-14  Derek Price  <address@hidden>
+
+       * logmsg.c (do_verify): Dispose memory when finished with it.
+
+2001-09-07  Larry Jones  <address@hidden>
+
+       * mkmodules.c (notify_contents): In the example, move the %s to
+       the end since many, if not most, versions of mail insist on
+       options coming before addresses.
+
+2001-09-06  Derek Price  <address@hidden>
+
+       * login.c (login): Deal with NULL return value from getpass.
+
+2001-09-04  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated with automake 1.5.
+       * stamp-h2.in: Ditto.
+
+2001-09-04  Derek Price  <address@hidden>
+
+       * main.c (main): Fix empty CVSROOT message to specify `valid' instead
+       of `legal'.
+
+2001-09-04  Derek Price  <address@hidden>
+
+       * server.c (pserver_authenticate_connection): Back out changes from the
+       30th and...
+       * getline.c (getstr): init the buffer instead.
+
+2001-08-31  Derek Price  <address@hidden>
+
+       * Makefile.in: Backed out accidental commit from yesterday.
+
+2001-08-30  Derek Price  <address@hidden>
+
+       * server.c (pserver_authenticate_connection): Don't print from the
+       NULL pointer in the error message string in the case where the client
+       didn't send any data.
+       * sanity.sh (pserver): Test for this case.
+       (Report from Mark Welch <address@hidden>).
+
+2001-08-24  Derek Price  <address@hidden>
+
+       * logmsg.c (do_editor): Add comment and assertion.
+       * import.c (import): Don't call do_editor with a repository argument
+       in client mode.
+       (Report and original patch from darkness <address@hidden>.)
+
+2001-08-24  Larry Jones  <address@hidden>
+
+       * log.c (log_expand_revlist): Arrange for nil revision specs to
+       select nothing instead of everything.
+       * sanity.sh (log): New tests for above.
+
+2001-08-24  Derek Price  <address@hidden>
+
+       * parseinfo.c (Parse_Info): Change the function name in the trace
+       and add the client/server string.
+
+2001-08-24  Derek Price  <address@hidden>
+
+       * Implement RereadLogAfterVerify CVSROOT/config option to control
+       FreeBSD read-write of log messages in the verification script.
+       * logmsg.c: RereadLogAfterVerify defaults to LOGMSG_REREAD_NEVER
+       to preserve the status quo.
+       * parseinfo.c (parse_config): Add parsing for RereadLogAfterVerify
+       option. Possible values are: no | never | yes | always | stat
+       * cvs.h: Add extern for RereadLogAfterVerify and new value macros
+       LOGMSG_REREAD_NEVER, LOGMSG_REREAD_ALWAYS, LOGMSG_REREAD_STAT for
+       its values.
+       (Patch from Mark D. Baushke  <address@hidden>.)
+
+       * Apply changes from FreeBSD cvs sources to implement a read-write
+       user-defined verification script.
+       * logmsg.c (do_verify): Update do_verify to expect a pointer
+       to the saved message. The log file passed to the verifymsg_script
+       should be re-read after the user-defined verification script has
+       been run. The user-defined verification script is allowed to
+       modify the message.  This allows the script to add extra
+       information to the log message or to remove template lines that
+       are not needed.
+       * cvs.h: Update prototype for do_verify prototype to expect a
+       pointer to the saved_message.
+       * commit.c (commit, commit_fileproc, commit_direntproc): Update
+       calls to do_verify as the saved_message arg is now read-write.
+       * import.c (import):  Update calls to do_verify as the
+       saved_message arg is now read-write.
+       * sanity.sh (info-v4-[12]): Rename the old info-v4 test to info-v5
+       and add a new info-v4 test case have the verification script
+       modify the log message to test the above changes.
+       (Patch from Mark D. Baushke  <address@hidden>.)
+
+       * logmsg.c: Change RereadLogAfterVerify default to always.
+       (do_verify): Reformat and make minor fixes to Mark's patch.
+       * mkmodules.c (config_constants): Add comment about
+       RereadLogAfterVerify.
+       * sanity.sh (info-rereadlog): Rename the tests from Mark's patch and
+       reformat them a bit.
+
+2001-08-23  Derek Price  <address@hidden>
+
+       * sanity.sh (info): Demonstrate that the verifymsg scripts can
+       sometimes, but not always, retreive information on which directory is
+       being committed to.
+
+2001-08-22  Derek Price  <address@hidden>
+
+       * logmsg.c: Back out the last change - the repository which is passed
+       in is actually the directory and changes with each call to do_verify.
+       If a verifymsg script is using `pwd`, this could change the operation.
+       * cvs.h: Ditto.
+       * commit.c: Ditto.
+       * import.c: Ditto.
+
+2001-08-22  Derek Price  <address@hidden>
+
+       * logmsg.c (do_editor): Return reused_message.
+       (do_verify): Don't verify the same log message more than once.
+       * cvs.h: Update prototypes for do_verify and do_editor.
+       * commit.c (commit_fileproc, commit_direntproc): Use the new 
functionality.
+       * import.c (import): Ditto.
+
+2001-08-22  Derek Price  <address@hidden>
+
+       * logmsg.c (do_verify): Remove an unecessary "else" clause following an
+       exit and unindent the former contents.
+
+2001-08-22  Derek Price  <address@hidden>
+
+       * commit.c (commit): Don't call do_verify in client mode since we know
+       do_verify will just return anyhow.
+
+2001-08-20  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add version.c and version.h.
+       (BUILT_SOURCES): Add version.h.
+       (Maintainer Targets): Remove version.h.
+       * version.c: Remove @VERSION@ dependant bits.
+       * version.c.in: Removed.
+       * version.h.in: New file.
+       (Original patch from Alexey Mahotkin <address@hidden>.)
+
+       * Makefile.am: Various modifications to make Automake, make dist, and
+       windows targets work like they are supposed to.
+       * version.h: New (generated) file.
+
+       * Makefile.in: Regenerated.
+
+2001-08-09  Derek Price  <address@hidden>
+
+       * client.c (socket_buffer_shutdown): Use recv instead of read and
+       return 0 on success.
+       (Patch from "Manfred Klug" <address@hidden>.)
+
+2001-08-09  Derek Price  <address@hidden>
+
+       * buffer.c (stdio_buffer_shutdown): Assume the buffer is not a socket
+       when NO_SOCKET_TO_FD is defined.
+       * client.c (make_bufs_from_fds): Add is_sock argument and remove fstat
+       call and reference to S_ISSOCK since these functions aren't available
+       under Windows.
+       (connect_to_forked_server, connect_to_pserver, start_tcp_server,
+       start_server, start_rsh_server): Use new argument.
+       (Patch from "Manfred Klug" <address@hidden>.)
+
+       * buffer.c (stdio_buffer_shutdown): Various reformattings, fix bug
+       where rsh pipes weren't being closed.
+
+2001-08-09  Derek Price  <address@hidden>
+
+       * sanity.sh (rmadd, rm-update-message, join-two-branch,
+       ignore-on-branch): Change a few references to `cvs' to `$PROG'.
+
+2001-08-07  Derek Price  <address@hidden>
+
+       * build_src.com: Add annotate.c/annotate.obj,verify, correct zlib name.
+       * patch.c: VMS time_t appears to be unsigned.   Add a cast when testing
+       for (time_t)-1.
+       * subr.c: #else,#endif for no symlinks should be moved.
+       (Patch from Mike Marciniszyn <address@hidden>.)
+
+2001-08-06  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated.
+
+2001-08-01  Derek Price  <address@hidden>
+
+       * diff.c (diff): Send long option for side-by-side diffs to the server
+       rather than '-y', for backwards compatibility with old servers.
+       (Original patch from Peter Mathiasson <address@hidden>.)
+
+2001-07-19  Larry Jones  <address@hidden>
+
+       * mkmodules.c (cvswrappers_contents): Remove -t/-f since they're
+       disabled in wrapper.c.
+
+       * checkout.c (checkout): Don't complain about checking out into the
+       repository when piping output.
+       (Reported by der Mouse <address@hidden>.)
+       * sanity.sh (checkout_repository): New tests for above.
+
+2001-07-10  Larry Jones  <address@hidden>
+
+       * sanity.sh (importc-7): Now works correctly in local mode.
+
+       * commit.c (commit_dirleaveproc): We're still in the directory when
+       this is called, so the first argument to Name_Repository needs to
+       be NULL, not dir.
+       * sanity.sh (rmadd): New tests for above.
+
+       * commit.c (commit): Reword error messages for committing as root.
+
+2001-07-08  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_checkout): Correct scanf format to allow for trailing
+       NUL terminator.
+       * update.c (special_file_mismatch): Ditto.
+       (Reported by Pekka Savola <address@hidden>.)
+
+2001-07-05  Larry Jones  <address@hidden>
+
+       * client.c, root.c: Fix -Wall warnings.
+
+       * buffer.c: #include socket header to declare shutdown().
+
+       * rcs.c (rcsbuf_open): Use getpagesize() instead of sysconf() for
+       portability.
+       (RCS_copydeltas, rcsbuf_fill): Fix -Wall warnings.
+
+2001-07-04  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated with new Automake release candidate 1.4h.
+
+2001-07-03  Derek Price  <address@hidden>
+
+       * rcs.c (rcsbuf_open): Reduce memory consumption still further by not
+       mmapping the entire file when pos is specified.
+       (rcsbuf_cache_open): Add FIXME comment wrt read-only mmaps and rcsbuf
+       caching.
+
+2001-07-03  Derek Price  <address@hidden>
+
+       * rcs.c (rcsbuf_open): Use mmap when possible to reduce memory
+       consumption, especially with large (e.g. binary) files.
+       (rcsbuf_close): Call munmap.
+       (rcsbuf_getkey): Remove the buffer fill code when using mmap.
+       (rcsbuf_getrevnum): Ditto.
+       (rcsbuf_fill): Remove this function when using mmap.
+       (rcsbuf_cache_open): Mostly don't use this function with mmap.
+       (RCS_copydeltas): Don't depend on the file pointer with mmap.
+
+       * stamp-h2.in: Regenerated.
+
+2001-07-03  Derek Price  <address@hidden>
+
+       * update.c: Indent compiler directives.
+
+2001-07-02  Larry Jones  <address@hidden>
+
+       * import.c (update_rcs_file): Use -kb instead of -ko when comparing
+       binary files.
+       (Reported by Gyula Faller <address@hidden>.)
+
+2001-06-28  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout): Explicitly initialize all the static options
+       so that multiple calls work right.  Also fix potential memory leaks.
+       (Reported by Dr. Dieter Maurer <address@hidden>.)
+
+2001-06-28  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated with new version of Automake.
+
+2001-06-28  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout): Set history_name for export as well as
+       checkout.
+       (checkout_proc): Use it.
+
+       * checkout.c (safe_location): Add missing argument in error message.
+
+2001-06-26  Larry Jones  <address@hidden>
+
+       * recurse.c (start_recursion): Use strip_trailing_slashes instead
+       of doing it by hand.
+
+       * server.c (pserver_authenticate_connection): Don't clear out
+       descrambled_password until *after* it's (potentially) logged.
+       (Reported by Eric Hanchrow <address@hidden>.)
+
+2001-06-25  Larry Jones  <address@hidden>
+
+       * recurse.c (start_recursion): Deal with at least some of the cases
+       where trailing slashes cause confusion.
+       (Reported by Malcolm Fernandes <address@hidden>.)
+       * sanity.sh (basica, basicb): Tweak existing tests to check this.
+
+2001-06-22  Larry Jones  <address@hidden>
+
+       * sanity.sh (modules5): New tests with -d on command line.
+
+2001-06-21  Larry Jones  <address@hidden>
+
+       * modules.c (do_module): Use run_module_prog and server_active to
+       determine when to call server_prog instead of using server_expanding
+       so that we get the right paths in the replies as long as we take
+       mwhere into account in addition to where.
+       (Reported by Pascal Bourguignon <address@hidden>.)
+       * server.c (server_prog): Use protocol pipe instead of buf_to_net.
+       * sanity.sh (modules5): Remove FIXCVS comment and update to match.
+       * server.c, server.h: Remove server_expanding since now unused.
+
+2001-06-21  Larry Jones  <address@hidden>
+        for Stephen Rasku  <address@hidden>
+
+       * admin.c: Corrected spelling mistakes in help.
+
+2001-06-20  Derek Price  <address@hidden>
+
+       * client.c (socket_buffer_shutdown): Fix untested typos.
+       (Reported by "Jerzy Kaczorowski" <address@hidden>.)
+
+       * buffer.c (stdio_buffer_shutdown): Put the call to SHUTDOWN_SERVER in
+       the correct place.
+
+2001-06-20  Derek Price  <address@hidden>
+
+       * logmsg.c (do_editor): Abort in the case that the file has only
+       comment lines.
+       (Original patch from Mark Valentine <address@hidden>.)
+
+       * logmsg.c (do_editor): Fix rare memory leak.
+       * sanity.sh (editor): Add tests for aborted log messages.
+
+2001-06-20  Larry Jones  <address@hidden>
+
+       * server.c (switch_to_user): Only set $CVS_USER if
+       AUTH_SERVER_SUPPORT is defined.
+       (Reported by Nalin Dahyabhai <address@hidden>.)
+
+2001-06-13  Derek Price  <address@hidden>
+
+        * client.c: Fix incorrect fixed-size buffer usage in
+        connect_to_gserver().
+       (Minor changes to a patch from Alexey Mahotkin  <address@hidden>.)
+
+2001-06-11  Derek Price  <address@hidden>
+
+       * main.c (main): Always print $CVSROOT when parse_cvsroot fails.
+       * root.c (parse_cvsroot): Tidy error messages and provide more
+       consistent behavior.
+       * sanity.sh (crerepos): Adapt to new error messages.
+       (Suggested by  Alexey Mahotkin <address@hidden>.)
+
+2001-06-08  Derek Price  <address@hidden>
+
+       * sanity.sh (tagf-28): Use $CVSROOT_DIRNAME.
+
+2001-06-07  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_unlock): Reverse kj's change of 1999-10-18: a bare -u
+       should never break locks, you have to specify a specific revision
+       to do that.  Also add an informative message for a bare -u when
+       the user doesn't hold any locks.
+       * commit.c (unlockrcs): Make RCS_unlock quiet, like RCS_lock.
+       * sanity.sh (rmadd-24): Update to match.
+
+       * sanity.sh (crerepos-6a): Set CVS_RSH for ${testcvs}, not for
+       dotest_fail.  Allow for "broken pipe" rather than "end of file".
+
+2001-06-07  Derek Price  <address@hidden>
+
+       * sanity.sh (tagf): Use $CVSROOT_DIRNAME rather than
+       /tmp/cvs-sanity/cvsroot.
+
+2001-06-06  Derek Price  <address@hidden>
+
+       (Reformatting, bug fixes, tests, and comments to a
+       patch from Stephen Cameron <address@hidden>.)
+
+       * tag.c: (rtag_fileproc, rtag_delete, tag_fileproc)
+         Changed behavior of "cvs tag -F", "cvs tag -d", "cvs rtag -F"
+         and "cvs rtag -d" so that they will not disturb existing
+         branch tags unless a new "-B" option is given.
+       * sanity.sh (tagf-16 - tagf-33): Added tests for new -B option
+         to "cvs tag" and "cvs rtag"
+
+2001-06-06  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos-6a): Set CVS_RSH=false and only for the actual
+       test call at Larry's suggestion.  Also, test the error message since
+       it's fixed now.
+
+2001-06-05  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_unlock): Note when breaking someone else's lock.
+       (Reported by MURVAI-BUZOGANY Laszlo
+       <address@hidden>.)
+       * sanity.sh (reserved-14): Update to match.
+
+2001-06-05  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos-6a): Set CVS_RSH=/bin/false...  this is a local
+       mode only test anyhow.
+       (Thanks to Larry Jones and Morgan Burke <address@hidden>.)
+
+2001-05-31  Derek Price  <address@hidden>
+
+       * sanity.sh (rcs2-7): Add today to the list of failure dates for rcs2-7
+       in the hopes that the data will eventually prove useful to someone
+       motivated enough to fix the problem.
+
+2001-05-30  Derek Price  <address@hidden>
+
+       * stamp-h2.in: Regenerated.
+
+2001-05-30  Derek Price  <address@hidden>
+
+       * *: Various bug fixes and comments for the following
+       patch from Donald Sharp <address@hidden>:
+
+       * checkout.c (safe_location): cvs co -d <directory> still had
+       failure modes from the way the -d option works.
+       * sanity.sh: Misc error message resynching.
+
+2001-05-29  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Add root.h.
+
+       * Makefile.in: Regenerated.
+       * stamp-h2.in: Regenerated.
+
+2001-05-29  Derek Price  <address@hidden>
+
+       * checkout.c (safe_location): Correct formatting.
+
+2001-05-29  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): Fix a comment.
+
+2001-05-26  Larry Jones  <address@hidden>
+
+       * checkout.c (safe_location): Use old-style definition to keep
+       non-ANSI compilers happy.
+
+       * sanity.sh (check_respository): Use ${CVSROOT_DIRNAME} instead
+       of /tmp/cvs-sanity/cvsroot.
+
+2001-05-25  Larry Jones  <address@hidden>
+
+       * sanity.sh (modules5): Add sleep to script to help avoid out of
+       order messages.
+
+       * filesubr.c (mkdir_if_needed): Return 1 if the directory exists
+       reguardless of what errno is set to.
+       (Reported by "Robinson, Greg" <address@hidden>.)
+
+2001-05-25  Derek Price  <address@hidden>
+       for Donald Sharp  <address@hidden>
+
+       * checkout.c:  Modified safe_location() to refuse checkout if
+       the -d option to co specifies inside of the repository.
+       * import.c:  New parameter to safe_location needed to be added.
+       * cvs.h:  New parameter to safe_location needed to be added.
+       * sanity.sh:  Test case to test for failure mode.
+
+2001-05-23  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout_proc): Don't build top_level_admin directory
+       when exporting.
+       (Reported by Tony Byrne <address@hidden>.)
+
+2001-05-21  Derek Price  <address@hidden>
+
+       * client.c: Fix a mispelling in a comment.
+       (Patch from Alexey Mahotkin <address@hidden>).
+
+2001-05-05  Larry Jones  <address@hidden>
+
+       * login.c (password_entry_operation): Only warn if unable to open
+       .cvspass for reading: may be initial login and it doesn't exist yet.
+
+2001-05-15  Derek Price  <address@hidden>
+
+       * client.c (start_tcp_server): Use the struct sockaddr_in declared in
+       the function.
+       (Reported by Emil Isberg <address@hidden>.)
+
+2001-05-05  Larry Jones  <address@hidden>
+
+       * annotate.c (annotate): Pass local to do_module and rannotate_proc
+       so that -l actually works.
+       * log.c (cvslog): Ditto.
+       * patch.c (patch): Ditto; make local local instead of global.
+       (patch_proc): Use local_specified parameter instead of global.
+       * tag.c (cvstag, rtag_proc): Ditto.
+
+2001-05-05  Larry Jones  <address@hidden>
+
+       * client.h: Declare "struct buffer" outside prototype for __STDC__
+       compilers.
+
+2001-05-04  Derek Price  <address@hidden>
+
+       * client.c:  General refactoring.  Removed several global variables in
+       favor of passing locals and/or dynamic evaluation.
+       (recv_line): Removed this function.
+       (make_bufs_from_fds): New function with factored code.
+       (connect_to_forked_server): New prototype.  Use new functions.
+       (connect_to_pserver): New prototype.  Use new functions.
+       (connect_to_gserver): New prototype.  Use new API.
+       (auth_server): Factored this portion of the pserver code so it can be
+       shared.  Rewrote to use buffers rather than depending on a socket.
+       (start_rsh_server): New prototype.  Use new API.
+       (start_tcp_server): New prototype.  Use new API.
+       (start_server): Factor some code.  Use new API.
+       * client.h: New prototypes.
+       * cvs.h: Gratuitous reformatting.  Use new root.h.
+       * login.c (login): Use new connect_to_pserver API.
+       * root.h: New file.  Contains some code that used to be in cvs.h.
+
+2001-05-04  Derek Price  <address@hidden>
+
+       * client.c: Gratuitous reformatting.
+       * client.h: Ditto.
+
+2001-05-04  Derek Price  <address@hidden>
+
+       * zlib.c (compress_buffer_shutdown_input): Use new buffer shutdown
+       prototype.
+       (compress_buffer_shutdown_output): Ditto.
+       (Thanks to Pavel Roskin <address@hidden>.)
+
+2001-05-03  Derek Price  <address@hidden>
+
+       * buffer.c (struct stdio_buffer_closure): New structure to hold a
+       FILE * and the child's PID when necessary.
+       (stdio_buffer_initialize): Change proto to accept PID.  Set up new
+       closure.  Pass new stdio_buffer_shutdown to buf_initialize.
+       (stdio_buffer_input): Use new closure.
+       (stdio_buffer_output): Ditto.
+       (stdio_buffer_flush): Ditto.
+       (stdio_buffer_shutdown): New function.  Teach buffer to close itself.
+       (packetizing_buffer_shutdown): Use new buffer shutdown proto.
+       * buffer.h (struct buffer): New buffer shutdown proto.
+       (stdio_buffer_initialize): New proto.
+       * client.c (log_buffer_shutdown): Use new proto.
+       (socket_buffer_initialize): Pass shutdown func.
+       (socket_buffer_shutdown): New function.
+       * server.c (get_responses_and_close): Remove most of the guts.  Rely
+       on the buffer shutdown function from now on.
+       (start_rsh_server): Return child PID.
+
+2001-05-03  Larry Jones  <address@hidden>
+
+       * history.c (history_write): Handle the case where the user's home
+       directory doesn't exist gracefully instead of erroring out.
+       (Reported by David Hoover <address@hidden>.)
+
+2001-05-03  Derek Price  <address@hidden>
+
+       * cvs.h: s/allocate_and_strcat/xrealloc_and_strcat/ since that is what
+       I wrote in the ChangeLog, oh, so long ago.
+       * diff.c (diff): Ditto.
+       * subr.c (allocate_and_strcat, xrealloc_and_strcat): Ditto.
+
+2001-05-02  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_getdate): Handle the (unusual!) case where we
+       can't find any revisions at all.
+       (Reported by Ryan Grow <address@hidden>.)
+
+2001-04-30  Larry Jones  <address@hidden>
+
+       * sanity.sh (multiroot2-9a): Rename (from multiroot2-9) to avoid
+       duplicate names; fix to work without SERVER_SUPPORT defined.
+       (Reported by Pavel Roskin <address@hidden>.)
+
+2001-04-29  Derek Price  <address@hidden>
+
+       * Makefile.am (check-local): Make dependent on localcheck and
+       remotecheck and move old check target...
+       (localcheck): here.
+
+       * Makefile.in: Regenerated.
+
+2001-04-27  Larry Jones  <address@hidden>
+
+       * sanity.sh (pserver): Add tests for readers and writers.
+
+2001-04-27  Derek Price  <address@hidden>
+
+       * sanity.sh (version-2r): Update to handle patch releases in version
+       numbers.
+
+2001-04-27  Derek Price  <address@hidden>
+
+       * version.c: Regenerated.
+
+2001-04-27  Derek Price  <address@hidden>
+
+       * version.c: Regenerated.
+
+2001-04-27  Larry Jones  <address@hidden>
+
+       * main.c (lookup_command_attribute): Lookup specified command, not
+       whatever's in the global command_name.
+
+2001-04-25  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated using AM 1.4e as of today at 18:10 -0400.
+       * version.c: Regenerated.
+
+2001-04-22  Larry Jones  <address@hidden>
+
+       * tag.c (tag_check_valid): Make an unwritable val-tags file a
+       warning instead of a fatal error.
+
+2001-04-20  Larry Jones  <address@hidden>
+
+       * annotate.c (annotate_usage): -r and -D are not mutually exclusive.
+       * main.c (cmd_usage): Add missing version subcommand.
+       * update.c (update_usage): Add missing -C option.
+
+       * sanity.sh (death2): New tests for previous change.
+
+       * classify.c (Classify_File): Treat a dead revision like the RCS
+       file doesn't exist.
+       * sanity.sh: Update to match.
+
+2001-04-16  Larry Jones  <address@hidden>
+
+       * checkout.c, update.c: Fix usage messages: -r and -D are not
+       mutually exclusive.
+       (Suggested by David L. Martin <address@hidden>.)
+
+       * logmsg.c (do_editor): Don't add a blank line to the message.
+       * sanity.sh (editor-log-file*): Update to match.
+
+       * checkout.c, update.c: Note in usage message that -k is sticky.
+
+       * server.c: (server_cleanup, wait_sig): Remove ancient SunOS kludge.
+       (Suggested by Rob Saccoccio <address@hidden>.)
+
+2001-04-04  Larry Jones  <address@hidden>
+
+       * sanity.sh (dotest, dotest_lit, dotest_fail, dotest_status,
+       dotest_sort): Don't count on $? being set in then or else clauses.
+
+       * ignore.c (ignore_files): Collect unignored files into a list and
+       sort it before calling PROC to avoid order dependencies.  Rewrite
+       the while loop to allow normal continues instead of goto.
+
+2001-04-04  Derek Price  <address@hidden>
+
+       * sanity.sh (ignore-on-branch-3): Fix in the remote case.
+
+2001-04-03  Larry Jones  <address@hidden>
+
+       * update.c (update_fileproc): Remove unused variable (resurrecting).
+
+2001-04-03  Derek Price  <address@hidden>
+           Larry Jones  <address@hidden>
+           reported by Jakob Bøhm  <address@hidden>
+
+       * update.c (update_fileproc): Don't store a file with T_UNKNOWN status
+       in ignlist if present in the sandbox.
+       * sanity.sh (ignore-on-branch): New test.
+       (ignore): Tidy this test.
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Make sure the test for `id' fails when a nonstandard `id'
+       is used and the user is root.  Fix some quoting in error messages.
+       (fork): Take `cvs' out of the PATH.
+       (TODO): Add note about the test suite not working with user names over
+       eight characters in length.
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh (fork): New test for CVS_SERVER default.
+       (TODO): Note about eventually removing most of the references to
+       CVS_SERVER.
+
+2001-04-02  Larry Jones  <address@hidden>
+
+       * client.c (connect_to_forked_server): Use program_path as the default
+       server instead of "cvs".
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Use less obfuscated English in my comment about sanity
+       checking sanity.sh.
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh (rm-update-message): Create a test directory again but
+       change back to the correct directory upon completion this time.
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Change last two '[.*]'s to 'test's for
+       consistency and remove...
+       (TODO): the note from the TODO list.
+
+2001-04-02  Derek Price  <address@hidden>
+
+       * sanity.sh: Add test for PWD before successful exit.
+
+2001-03-30  Larry Jones  <address@hidden>
+
+       * sanity.sh (rm-update-message): Remove duplicate code.
+
+2001-03-30  Derek Price  <address@hidden>
+
+       * sanity.sh (rm-update-message): New test for local/client-server
+       warning message discrepency.
+
+2001-03-30  Larry Jones  <address@hidden>
+
+       * annotate.c: Move annotate() here from rcs.c, support rannotate.
+       * Makefile.am, Makefile.in: Add annotate.c.
+       * main.c (cmds[], cmd_usage[]): Add rannotate.
+       * rcs.c: Move declarations of rcs_delta_op and RCS_deltas to...
+       * rcs.h:    ... here.
+       * server.c (serve_rannotate): New.
+       (requests[]): Add rannotate.
+       * sanity.sh (ann): New tests for rannotate.
+
+       * log.c (rlog_proc): Remove dead code.
+
+2001-03-30  Derek Price  <address@hidden>
+
+       * sanity.sh (join-readonly-conflict): Run more of this through dotest.
+
+2001-03-30  Larry Jones  <address@hidden>
+
+       * log.c (log_fileproc): Don't output working file for rlog.
+       * sanity.sh (log): New tests for rlog.
+
+       * cvs.h (mtype): Add MISC type.
+       * log.c (cvslog): Support rlog as well as log.
+       (rlog_proc): New.
+       * main.c (cmds[], cmd_usage[]): Add rlog.
+       (main): Remove old rlog warning message.
+       * server.c (serve_rlog): New.
+       (requests[]): Add rlog.
+
+2001-03-29  Derek Price  <address@hidden>
+
+       * sanity.sh: cd to $TESTDIR once after it is normalized.  Make TODO
+       on history and symlinks more specific.  Tested properly this time.
+
+2001-03-29  Larry Jones  <address@hidden>
+
+       * main.c (cmds[], lookup_command_attribute, main): Include the
+       command attributes in the global command table instead of inferring
+       them from the command names.  Change the sense of the
+       CVS_CMD_IGNORE_ADMROOT attribute to match its name.
+
+2001-03-29  Derek Price  <address@hidden>
+
+       * sanity.sh (*, basic2-64): Remove references to TMPPWD.  Fix FIXME
+       at end of script now that $TESTDIR can't be relative.
+
+2001-03-29  Derek Price  <address@hidden>
+
+       * sanity.sh: Normalize TESTDIR even when the user set it.
+
+2001-03-29  Larry Jones  <address@hidden>
+
+       * client.c (connect_to_pserver, start_tcp_server): Add IP address
+       to connect failed message.
+       (connect_to_forked_server, connect_to_pserver, start_tcp_server): Add
+       trace messages ala start_rsh_server.
+       (start_rsh_server): Include entire command in trace message for
+       START_RSH_WITH_POPEN_RW like ! START_RSH_WITH_POPEN_RW does.
+
+2001-03-29  Derek Price  <address@hidden>
+
+       * sanity.sh: Global search & replace ${TESTDIR}/cvsroot with
+       ${CVSROOT_DIRNAME} for consistency.
+
+2001-03-29  Derek Price  <address@hidden>
+
+       * sanity.sh (conflicts-12[68].5): Remove sanity hack which has allowed
+       for a CVS bug since May 96/97.  Not sure when the bug went bye-bye, but
+       the tests broke when $TESTDIR != $TMPPWD.
+
+2001-03-26  Larry Jones  <address@hidden>
+
+       * classify.c (Classify_File): Don't report a conflict for a removed
+       file when piping.  Also simplify the code structure.
+       (Reported by Milos Kleint <address@hidden>.)
+       * sanity.sh (rmadd2-14[abc]): New tests for above.
+
+2001-03-24  Noel Cragg  <address@hidden>
+
+       * diff.c: mods to allow `-T' and `-y' options to be passed through
+       to the diff library.  This wasn't allowed earlier because of a
+       similarly named options that got passed through to the old rcs
+       programs.  We've long since stopped sending `-T' to any rcs
+       utility and have never used `-y'.  Any users of moldly CVS
+       versions which used to support `-T' have (hopefully) upgraded to
+       one where that option isn't supported.  It seems reasonable to
+       enable them again and pass them through.  (sanity.sh still works
+       anyways...)
+       (longopts): add short option equivalents for --initial-tab and
+       --side-by-side.
+       (diff): add new short options to getopt string and switch
+       statement.
+
+2001-03-22  Larry Jones  <address@hidden>
+
+       * sanity.sh: Add check for ${DOTSTAR} with large matches.
+
+2001-03-23  Derek Price  <address@hidden>
+
+       * sanity.sh: Do the same as below for $keep.
+
+2001-03-23  Derek Price  <address@hidden>
+
+       * sanity.sh: Replace 'remote=(yes|no)' with 'remote=(:|false)' since
+       often 'false' and more often ':' are shell builtins.  This makes the
+       succinct, 'if $remote; then' faster than 'if test $remote = yes; then'.
+       Alter tests in the rest of the script to match the new usage.  Added
+       a suffix of 'r' to remote test names when it was appropriate and I
+       remembered.  Some reformatting.
+
+2001-03-22  Larry Jones  <address@hidden>
+
+       * sanity.sh (diffmerge1_yours, diffmerge1_mine): Check for exact
+       output instead of using wildcards to avoid buffer overflows in some
+       versions of expr.
+
+2001-03-21  Derek Price  <address@hidden>
+
+       * sanity.sh: cd to '/tmp' again rather than $HOME since HOME was set to
+       a value inside ${TESTDIR} by the script.
+
+2001-03-20  Derek Price  <address@hidden>
+
+       * sanity.sh (diffmerge1): Minor formatting and syntax changes.
+
+           for Jacob Burckhardt  <address@hidden>
+
+       * sanity.sh (diffmerge1): More merging behavior tests.  Specifically,
+       test some cases which broke before in Karl Tomlinson's diff fix was
+       checked in today.
+
+2001-03-20  Derek Price  <address@hidden>
+
+       * sanity.sh: Don't use unescaped parens in sh outside of quotes.
+
+2001-03-20  Derek Price  <address@hidden>
+
+       * sanity.sh: Don't remove ${TESTDIR} when -k (keep) set.
+
+2001-03-20  Derek Price  <address@hidden>
+
+       * sanity.sh: Change usage to match the new getopts format and comment.
+
+2001-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (modules2-nestedrename): New test.  Verifies behavior of
+       renames nested under an ampersand module.
+       (modules2-ampertag): New test.  Verifies an error condition which
+       prevents some ampersand modules from being checked out when a tag
+       is specified.
+
+2001-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (modules2): Additional test for ampersand module behavior
+       with '-d'.
+
+           for Greg Klanderman  <address@hidden>
+
+       * checkout.c (build_one_dir): Fix typo where clauses of two
+       conditionals were reversed in call to Create_Admin.  This caused
+       the CVS/Tag file to be removed in cases where it should have been
+       set, and vice-versa.  It only surfaced in rare cases as this code
+       is only invoked when using the -d option to build the path to
+       check out in.  Further, the bug would only matter when checking
+       out a module containing ampersand modules within it, via
+       client/server CVS.
+
+2001-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (admin-28-5): Confirm that a missing tag during an
+       'admin -n' operation is not a fatal error.
+
+2001-03-16  Derek Price  <address@hidden>
+
+       * admin.c (admin_data): Remove 'quiet' member.
+       (admin_fileproc): Use global 'really_quiet' rather than
+       admin_data->quiet.
+
+2001-03-16  Derek Price  <address@hidden>
+
+       * sanity.sh (admin): Replace hardcoded testdir path with the variable.
+
+2001-03-15  Derek Price  <address@hidden>
+
+       * sanity.sh (basica, binfiles, head, admin): Adjust for new messages.
+       * admin.c (admin_fileproc): Only print messages when not in
+       really_quiet mode.
+
+           for Stephen Rasku  <address@hidden>
+
+       * rcs.c (RCS_tag2rev): Make a missing tag a survivable error.
+
+2001-03-15  Larry Jones  <address@hidden>
+
+       * subr.c (sleep_past): Fix various bugs that would result in a
+       negative sleep time if it weren't unsigned; since it is, it would
+       result in a very large sleep time.  Ensure that us is always less
+       than 1000000.  Don't try to sleep for more 1 sec with usleep.
+       Cast NULL select arguments to correct type just in case.
+
+2001-03-14  Derek Price  <address@hidden>
+
+       * subr.c (sleep_past): New function.
+       * client.c (get_responses_and_close): Use new function.
+       * commit.c (commit): Ditto.
+       * update.c (do_update): Ditto.
+       * cvs.h: Prototype new function.
+
+       * stamp-h2.in: Regenerated.
+
+2001-03-14  Derek Price  <address@hidden>
+
+       * Makefile.in: Regenerated.
+       * stamp-h2.in: Ditto.
+
+2001-03-14  Larry Jones  <address@hidden>
+
+       * commit.c (check_fileproc): Allow adding on the trunk when there's
+       an existing non-Attic RCS file as long as the head revision is dead.
+       This can happen due to an aborted resurrection.
+       (commit_fileproc): When resurrecting, consider the dead revision
+       along with the other files' revisions.
+       (findmaxrev): Avoid unnecessary work.
+       (checkaddfile): Only warn if file isn't in Attic as expected.
+       (Reported by Ross Burton <address@hidden>.)
+       * sanity.sh (basica-r*): New tests for above.
+       (basica-o4): Update to match.
+
+2001-03-09  Larry Jones  <address@hidden>
+
+       * edit.c (edit_fileproc, unedit_fileproc): Some implementations of
+       asctime/ctime apparently use a leading zero on the date instead
+       of the space required by the C Standard.  Correct for this so that
+       shared working directories work without hassle.
+       (Reported by David L. Martin <address@hidden>.)
+       * entries.c (fgetentent): Ditto.
+       * vers_ts.c (time_stamp_server, time_stamp) Ditto.
+
+2001-03-07  Larry Jones  <address@hidden>
+
+       * sanity.sh (basica, binfiles2, head, admin): Update to match
+       change to admin.c.
+
+2001-03-06  Larry Jones  <address@hidden>
+
+       * client.c (recv_bytes): Handle EOF as in recv_line().
+       (Reported by Pavel Roskin <address@hidden>.)
+
+       * admin.c (admin_fileproc): Change final error message to clarify
+       that CVS refused to modify the RCS file rather than being unable to.
+
+2001-02-28  Jim Meyering  <address@hidden>
+
+       * commit.c (commit_usage): Use `-F logfile' (rather than -F file') in
+       the description of that option, to be consistent with the `-F logfile'
+       in the Usage: line.  Use spaces instead of TAB characters, and realign.
+
+2001-03-02  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos): Make failed ${CVS_RSH-rsh} attempt print the
+       name of the command it actually used rather than 'rsh'.
+
+2001-02-27  Derek Price  <address@hidden>
+
+       * sanity.sh (modules2-ampermod-*): Added these tests to make sure the
+       top level directory is created in an ampermodule when '-n' is passed to
+       checkout.
+
+       original bug report from
+           Wolfgang Haefelinger <address@hidden>
+
+2001-02-27  Derek Price  <address@hidden>
+
+       * sanity.sh (version-[12]): replace ' (client/server)' with .* in these
+       two tests so that 'make check' works with whatever client/server
+       options the executable was compiled with.
+
+2001-02-23  Derek Price  <address@hidden>
+
+       * main.c (main): Only check a cvsroot_t's isremote member when client
+       support is enabled.
+       * server.c: Include GSSAPI headers with client support as well as
+       server support.
+
+2001-02-21  Larry Jones  <address@hidden>
+
+       * modules.c, cvs.h (do_module): Add build_dirs argument and use it
+       instead of run_module_prog.  Change all callers.
+       * tag.c (cvstag): For rtag, don't build directories.
+       * sanity.sh (modules3): Update to match.
+
+2001-02-20  Derek Price  <address@hidden>
+
+       * client.c: Use xgssapi.h.
+       * server.c: Ditto.
+
+2001-02-15  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Correct error from yesterday.
+       * Makefile.in: Regenerated.
+
+2001-02-14  Derek Price  <address@hidden>
+
+       * server.c: Include xselect.h.
+       * update.c (do_update): Use best available sleep function.
+
+2001-02-14  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Alphabetize and split to one/line.
+       (cvs_LDADD): Alphabetize and split to one/line.
+       * Makefile.in: Regenerated.
+
+2001-02-14  Larry Jones  <address@hidden>
+
+       * build_src.com: Remove references to rtag.c & rtag.obj.
+
+2001-02-13  Derek Price  <address@hidden>
+
+       * main.c (date_to_tm): New function to convert an RCS date string to a
+       struct tm.
+       (tm_to_internet): New function to convert a struct tm to a date string
+       as specified by RFC822 and amended by RFC 1123.
+       (date_to_internet): Use the above two functions and a struct tm
+       intermediary for conversion.
+       * patch.c (patch_fileproc): Answer somebody's comment and use the new
+       diff_exec API.
+       * rcs.c (RCS_checkin): Use new diff_exec API.
+       (RCS_delete_revs): Use new diff_exec API.
+       (make_file_label): If the file name is DEVNULL, date it the Epoch for
+       compatibility with the POSIX.2 spec and Larry Wall's patch
+       implementation.
+       * rcscmds.c (diff_exec): Accept new label arguments.
+       * sanity.sh (death2): Update some diff tests to accept the new format.
+       * update.c (patch_file): Use new diff_exec API.
+       * diff.c (diff_fileproc): Create header labels appropriate for
+       compatibility with the Larry Wall version of patch.
+       (diff): Rename calls to strcat_and_allocate.
+       (strcat_and_allocate): Rename and move...
+       * subr.c (xrealloc_and_strcat): here.
+       * cvs.h: Update prototypes to match.
+
+2001-02-13  Derek Price  <address@hidden>
+
+       * Makefile.am (cvs_SOURCES): Remove rtag.c.
+
+2001-02-07  Larry Jones  <address@hidden>
+
+       * sanity.sh (directory_cmp): Return status rather than setting ISDIFF.
+       (basic2): Rewrite using dotest.
+
+2001-02-06  Larry Jones  <address@hidden>
+
+       * tag.c, rtag.c: Merge with tag.c being the surviving file.
+       * Makefile.in: Update to match.
+       * main.c (cmds): rtag() => cvstag().
+       * server.c (serve_rtag): Ditto, and set command name.
+
+2001-02-06  Derek Price  <address@hidden>
+           Rex Jolliff  <address@hidden>
+           Shawn Smith  <address@hidden>
+
+       * add.c: Replace opendir, closedir, & readdir calls with CVS_OPENDIR,
+       CVS_CLOSEDIR, & CVS_READDIR in support of changes to handle VMS DEC C
+       5.7 {open,read,close}dir problems.  Check today's entry in the vms
+       subdir for more.
+       * filesubr.c: ditto
+       * find_names.c: ditto
+       * ignore.c: ditto
+       * import.c: ditto
+       * lock.c: ditto
+       * update.c: ditto
+
+2001-02-02  Larry Jones  <address@hidden>
+
+       * error.h: Changed include guard macro from _error_h_ to ERROR_H;
+       names beginning with underscore are reserved.
+       * login.c (password_entry_parseline, password_entry_operation,
+       password_entry_operation_e, password_entry_operation_t): Removed
+       leading underscore(s).
+       (password_entry_parseline): Corrected error messages.
+       (password_entry_operation): Fixed uninitialized variable (password).
+       (login): Removed unused variable (found_password).
+
+       * rtag.c (rtag_proc): Call lock_tree_for_write() before calling
+       start_recursion.  This fixes a serious problem where do_recursion
+       was reading and caching RCS files without any locks in place and
+       that information was subsequently being used to rewrite the file
+       causing any intermediate changes to be lost.
+       (rtag_filesdoneproc): Defunct.
+       (Reported by Karl Tomlinson <address@hidden>.)
+       * tag.c (cvstag, tag_filesdoneproc): Ditto.
+       * lock.c (lock_tree_for_write): Add which argument, change all
+       callers to pass W_LOCAL.
+       * rcs.h: Ditto.
+
+2001-01-29  Derek Price  <address@hidden>
+
+       * client.c (get_cvs_port_number): change the prototype to accept a
+       const cvsroot_t * as input and add a FIXME comment
+       * cvs.h: new prototypes for get_cvs_port_number & normalize_cvsroot
+       * login.c (_password_entry_operation): consolidate all the ~/.cvspass
+       access into a single new function which reads ~/.cvspass in a backwards
+       compatible manner
+       (logout): use the new _password_entry_operation function
+       (login): ditto
+       (get_cvs_password): ditto
+       * root.c (normalize_cvsroot): move knowledge of default port & username
+       values inside
+
+2001-01-29  Larry Jones  <address@hidden>
+
+       * subr.c (shell_escape): New function.
+       * cvs.h: Declare it.
+       * logmsg.c (logfile_write): Use it to avoid problems with filenames
+       containing "'".
+       (Reported by Gerhard Ahuis <address@hidden>.)
+
+       * server.c (outbuf_memory_error, pserver_authenticate_connection,
+       kserver_authenticate_connection): If available, use syslog() to
+       record some errors.
+
+2001-01-25  Larry Jones  <address@hidden>
+
+       * server.c (do_cvs_command): If there's a partial output line left
+       over and the client doesn't support MT, go ahead and send it in an
+       M response instead of just dropping it.
+       (Reported by Milos Kleint <address@hidden>.)
+
+       * update.c (update_fileproc): Handle toss_local_changes in the
+       T_NEEDS_MERGE case.
+       (Inspired by Noel L Yap <address@hidden>.)
+       * sanity.sh (clean): New tests for above.
+
+2001-01-23  Derek Price  <address@hidden>
+
+       * run.c (run_exec): flush, if used, stderr and stdout before exit
+       * server.c (cvs_flusherr): flush stderr & send a stderr flush command
+       on the protocol pipe
+       (cvs_flushout): like above, for stdout
+       (do_cvs_command): handle flushes properly
+       * sanity.sh (reserved): make the commitinfo script echo errors to
+       stderr rather than stdin
+
+2001-01-18  Larry Jones  <address@hidden>
+
+       * log.c (option_revlist, revlist, log_usage, cvslog,
+       log_parse_revlist, log_expand_revlist, log_version_requested): Add
+       support for :: for exclusive ranges.
+       * admin.c (admin_usage): Reorder -o to be parallel to log -r.
+       * sanity.sh (log): New tests for above.
+
+2001-01-18  Derek Price  <address@hidden>
+
+       * main.c: Add '2001' to the range of copyright years listed by the
+       --version option
+       * version.c.in (version): check current_parsed_root before its isremote
+       member to avoid a core dump
+       * sanity.sh (version): add a test for the version command
+
+       * version.c: regenerated
+
+2001-01-12  Larry Jones  <address@hidden>
+
+       * rcs.c, rcs.h (RCS_lock, RCS_unlock): Use RCS_gettag to find the
+       correct revision so that symbolic tags work correctly.  (This
+       requires removing the "const" from the rev parameter since it's
+       passed to RCS_gettag which might modify it.)
+       (Reported by irina sturm <address@hidden>.)
+
+2001-01-11  Larry Jones  <address@hidden>
+
+       * run.c (close_on_exec): Remove check for FD_CLOEXEC.  As far as I
+       can see, it's *never* been defined, which defeats the whole point.
+       If F_SETFD is defined, it's probably safe to use it.
+
+       * server.c (do_cvs_command): Call close_on_exec on the protocol and
+       flow control pipes in the child process so they don't get inherited
+       by any subsidiary processes.
+       (Reported by Tristan Gingold <address@hidden>.)
+
+       * cvs.h (free_cvsroot_t): Spell correctly (was free_CVSroot_t).
+
+2001-01-10  Derek Price  <address@hidden>
+           Rex Jolliff  <address@hidden>
+
+       * build_src.com: VMS changes
+       * filesubr.c: replace calls to unlink() with CVS_UNLINK() for VMS
+       * rcs.c: ditto
+
+2001-01-10  Derek Price  <address@hidden>
+
+       * main.c (current_root): explicitly list this as a static global
+
+2001-01-10  Derek Price  <address@hidden>
+
+       * cvs.h (get_cvs_port_number): change name & prototype from
+       get_port_number
+       * client.c (get_cvs_port_number): new function which returns a port
+       number based on a cvsroot_t rather than requiring all possible sources
+       passed in
+       (connect_to_pserver): use new get_cvs_port_number function
+       (connect_to_server): ditto
+       * login.c (get_password): use new get_cvs_port_number function
+       (login): ditto
+       (logout): ditto
+
+2001-01-10  Derek Price  <address@hidden>
+
+       * Makefile.am ($(srcdir)/version.c): specify $(srcdir) for all subparts
+       of the build since some systems don't allow mv's across partitions
+       * Makefile.in: regenerated
+
+2001-01-10  Derek Price  <address@hidden>
+
+       * Makefile.am (version.c): specify $(srcdir) explicitly in target rule
+       so version.c gets built properly for all makes.
+       (version.o): specify $(srcdir)/version.c explicitly so dependency is
+       found and built properly
+       * Makefile.in: regenerated
+
+2001-01-09  Derek Price  <address@hidden>
+
+       * version.c: updated timestamp
+
+2001-01-09  Larry Jones  <address@hidden>
+
+       * server.c (server): Change to server_temp_dir immediately after
+       creating it so that any stray files that happen to be created go
+       there instead of in the server's initial directory, wherever that
+       may be.
+       * sanity.sh (modules5-15): Update to match.
+
+       * version.c.in: Update to match Derek's change to version.c.
+
+2001-01-09  Derek Price  <address@hidden>
+
+       * cvs.h: Remove the various CVSroot_* bits and replace them with a
+       single structure of type cvsroot_t (current_parsed_root)
+
+       * root.c (parse_cvsroot): return pointer to a new cvsroot_t rather than
+       altering global variables
+       (local_cvsroot): return a pointer to a new cvsroot_t rather than
+       setting globals.  changed the name of this function from
+       set_local_cvsroot to better explain new functionality
+       (new_cvsroot_t): new initializer function
+       (free_cvsroot_t): new function
+       (others): use current_parsed_root rather than the old CVSroot_* globals
+
+       * add.c: use current_parsed_root rather than the old CVSroot_* globals
+       * admin.c: ditto
+       * checkout.c: ditto
+       * client.c: ditto
+       * commit.c: ditto
+       * create_adm.c: ditto
+       * diff.c: ditto
+       * edit.c: ditto
+       * expand_path.c: ditto
+       * find_names.c: ditto
+       * history.c: ditto
+       * ignore.c: ditto
+       * import.c: ditto
+       * lock.c: ditto
+       * log.c: ditto
+       * login.c: ditto
+       * logmsg.c: ditto
+       * main.c: ditto
+       * mkmodules.c: ditto
+       * modules.c: ditto
+       * parseinfo.c: ditto
+       * patch.c: ditto
+       * rcs.c: ditto
+       * recurse.c: ditto
+       * release.c: ditto
+       * remove.c: ditto
+       * repos.c: ditto
+       * rtag.c: ditto
+       * server.c: ditto
+       * status.c: ditto
+       * tag.c: ditto
+       * update.c: ditto
+       * version.c: ditto
+       * watch.c: ditto
+       * wrapper.c: ditto
+
+2001-01-05  Derek Price  <address@hidden>
+
+       * cvs.h (enum CVSmethod): add null_method
+       * root.c (method_names): correlate null_method & "undefined"
+       (parse_cvsroot): make two error cases non fatal
+       * sanity.sh (crerepos-6b): account for new error message, re above
+
+2001-01-05  Derek Price  <address@hidden>
+
+       * src/Makefile.am (cvsbug, cvsbug_EXTRA_DIST, EXTRA_DIST): move cvsbug
+       target to configure.in - see ../ChangeLog for more
+       * src/cvsbug.in: Rename from cvsbug.sh
+       * src/cvsbug.sh: Rename to cvsbug.in
+
+2001-01-04  Larry Jones  <address@hidden>
+
+       * Makefile.am (cvsbug): Explicitly list input file ($< is only
+       valid in inference rules).
+       * Makefile.in: Ditto.
+
+2001-01-04  Derek Price  <address@hidden>
+
+       * sanity.sh: use getopts rather than getopt for portability reasons
+
+2001-01-03  Derek Price  <address@hidden>
+
+       * Makefile.am (remotecheck): depend on 'all'
+       * Makefile.in: regenerated
+
+2000-12-29  Derek Price  <address@hidden>
+
+       * sanity.sh: remove explicit "$@" from last checkin and move the 'do'
+       to the line following the 'for'.  Apparently this is more portable.
+
+2000-12-29  Derek Price  <address@hidden>
+
+       * sanity.sh: make "$@" explicit in 'for' statement since Solaris 5.6's
+       implementation of Bourne shell doesn't seem to implement this default
+       behavior.
+
+2000-12-27  Derek Price  <address@hidden>
+
+       * sanity.sh: add a -f option for continuing from a particular test
+       and shorten --keep to -k so we can use the getopt function.
+
+2000-12-27  Derek Price  <address@hidden>
+
+       * Makefile.am (remotecheck): Make remotecheck dependant on all
+       * Makefile.in: regenerated
+
+2000-12-26  Derek Price  <address@hidden>
+
+       * Makefile.in: update timestamp
+       * stamp-h2.in: ditto
+       * version.c: ditto
+
+2000-12-26  Derek Price  <address@hidden>
+
+       * Makefile.am: new target for version.c
+       (EXTRA_DIST): add version.c.in & version.c so builds work when
+       configure doesn't
+       * Makefile.in: Regenerated
+       * stamp-h2.in: update timestamp
+       * version.c: ditto
+
+2000-12-26  Derek Price  <address@hidden>
+
+       * Makefile.am (INCLUDES): add zlib
+       * Makefile.in: Regenerated
+
+2000-12-22  Derek Price  <address@hidden>
+
+       * Makefile.am (DISTCLEANFILES): added a few files
+       (INCLUDES): commented
+        * Makefile.in: Regenerated
+
+2000-12-21  Derek Price  <address@hidden>
+
+       * .cvsignore: Added .deps directory and a new stamp file
+       * Makefile.am: New file needed by Automake
+       * Makefile.in: Regenerated
+       * stamp-h2.in: New stamp file created by Automake
+       * version.c.in: use configure to generate version.c
+
+2000-12-16  Derek Price  <address@hidden>
+
+       * server.c (server_update): Keep the vers structure up to date after
+       sending a Remove or Remove-entry command to the client
+       * update.c (update): remove call to server_updated() after
+       scratch_file()
+       (scratch_file): in server mode, call server_updated(), otherwise keep
+       the vers structure up to date
+       (join_file): add a trace, save the revision to Register() on a remove
+       before calling server_scratch & server_updated
+       * sanity.sh (join): Add test for a remove/add caused by an update
+       to a new branch and a join in the same step.
+
+2000-12-15  Larry Jones  <address@hidden>
+
+       * error.c (error): Add %ld and %lu.
+
+       * history.c: Change hrec.idx from int to long, reformat NEXT_BAR
+       for readability, add hrec_idx.
+       (fill_hrec): Change initialization to be portable and always set
+       idx so it can be used as a line number in error messages; improve
+       parsing and error checking.
+       (read_hrecs): Initialize hrec_idx, handle embedded NULs, warn about
+       no newline at end of file.
+       (select_hrec): Add basic validity checking.
+
+2000-12-07  Larry Jones  <address@hidden>
+
+       * history.c (history): Allow multiple -m options as documented.
+
+2000-11-29  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): back out yesterday's redundant changes
+       * main.c (main): fix CVSROOT trace message to look like other trace
+       messages
+       * sanity.sh (multiroot2-9): expect new trace message
+
+2000-11-28  Derek Price  <address@hidden>
+
+       * root.c (parse_cvsroot): add trace on this function
+       * client.c (get_port_number): make trace print look like others
+
+2000-11-16  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): back out the previous change in the
+       interests of portability, add an assertion, and fix the header comment
+
+2000-11-16  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): refine the exit behavior to notice if
+       the out param was passed in NULL and, if so, avoid setting it and delete
+       the temp file for later
+
+2000-11-16  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): fixed a garble or two, added some
+       additional error checking, and added a comment
+
+2000-11-15  Derek Price  <address@hidden>
+
+       * filesubr.c (cvs_temp_file): added cvs_temp_file
+       function to use mkstemp rather than one of the other temp file
+       generators as gcc keeps complaining I should.
+       (cvs_temp_name): altered this function to simply wrap cvs_temp_file
+       and deprecated it
+       * cvs.h: added prototype for cvs_temp_file
+       * commit.c (commit): use the new function instead of the old and plug
+       an old (though related) memory leak.
+       * import.c (import): use the new function
+       * login.c (login): Ditto
+       * logmsg.c (do_editor, do_verify): Ditto
+       * patch.c (patch_fileproc): Ditto
+
+2000-11-14  Larry Jones  <address@hidden>
+
+       * update.c, update.h (do_update): Add xdotemplate parameter.
+       Change all callers.
+       (update_dirent_proc): Use dotemplate for Create_Admin, not 1.
+       * checkout.c (checkout_proc): Don't create CVS/Template if
+       exporting.
+       (Reported by Andrey Podkolzin <address@hidden>.)
+
+2000-11-08  Larry Jones  <address@hidden>
+
+       * admin.c (admin): Use getgroups() to check for membership in
+       CVS_ADMIN_GROUP if it exists.  In any event, check the user's
+       primary group in addition to any additional groups.
+       (Reported by Thomas Okken <address@hidden>.)
+
+2000-11-06  Jim Meyering  <address@hidden>
+
+       Compile with gcc's -Wformat and fix the exposed problems.
+       * root.c (parse_cvsroot) [! HAVE_KERBEROS]: Provide an argument
+       for the %s error format spec.
+       [! HAVE_GSSAPI]: Likewise.
+       (normalize_cvsroot): Put comment delimiters around token after `#endif'.
+
+2000-11-03  Larry Jones  <address@hidden>
+
+       * sanity.sh: Some versions of sed require a space between -e and
+       the value.
+
+2000-10-27  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout): Don't check for a safe location if just
+       cat'ing the module database.
+       (Reported by Ilya Martynov <address@hidden>.)
+       Have -s set cat as well as status; it simplifies the code.
+
+2000-10-26  Larry Jones  <address@hidden>
+
+       * sanity.sh (join-admin-2): Check output from all commands instead
+       of (mostly) discarding.  (Some of the tests used to produce stray
+       output in remote mode.)
+
+       * sanity.sh (dotest_line_by_line): Handle empty lines in pattern
+       (expr doesn't distingish between successfully matching nothing
+       and failing to match anything).
+
+       * sanity.sh (dotest_internal): Rearrange and use elif to simplify.
+
+2000-10-24  Jim Meyering  <address@hidden>
+
+       Fix a bug, introduced with my fix of 2000-07-10, whereby -kk would
+       sometimes be ignored for some of the files involved in an update.
+
+       * update.c (join_file): Restore the original value of `options'
+       right after calling checkout_file.
+       * sanity.sh (join-admin-2): New test for this.
+
+2000-10-23  Derek Price  <address@hidden>
+            James Youngman  <address@hidden>
+
+       * sanity.sh: it's /gnu/bin, not /gun/bin.  Thanks go to James Youngman
+       <address@hidden> for the bug report and patch.
+
+2000-10-20  Jim Kingdon  <http://sourceforge.net/users/kingdon/>
+
+       * server.c (switch_to_user): Set CVS_USER.  Patch from Sudish
+       Joseph and popularized by dozens (e.g. mozilla.org, also others).
+
+2000-10-20  Derek Price  <address@hidden>
+            KOIE Hidetaka  <address@hidden>
+
+       * root.c (normalize_cvsroot): plug a memory leak.  Thanks to
+       KOIE Hidetaka <address@hidden>
+
+2000-10-18  Derek Price  <address@hidden>
+
+       * client.c (connect_to_pserver): added a close brace the lack of which
+       was preventing compilation when gssapi was enabled.  Removed a
+       redundant check for HAVE_KERBEROS.
+
+2000-10-18  Derek Price  <address@hidden>
+
+       * root.c (normalize_cvsroot): removed references to free_port_s and the
+       now useless call to free now that port_s is on the stack.  Thanks to
+       Jon Miner.
+
+2000-10-18  Derek Price  <address@hidden>
+
+       * root.c (normalize_cvsroot): remove calls to snprintf for
+       compatibility with M$ Windoze.
+
+2000-10-18  Derek Price  <address@hidden>
+
+       * sanity.sh (crerepos-6a, crerepos-6a-r): fix a "?" in a regex & pipe
+       the output of a test to /dev/null since we don't know what error
+       messages specific rsh implementations will output.
+
+2000-10-17  Derek Price  <address@hidden>
+
+       * cvs.h: added CVSroot_password variable. Provided prototypes for
+       get_port_number & normalize_cvsroot.
+       * client.c (get_port_number): Fixed an ANSI prototype I had included
+       for get_port_number.
+       * login.c (login, logout): Removed two checks for a non-null
+       CVSroot_username since parse_cvsroot now supplies a default in pserver
+       mode. allow for a password in CVSROOT
+       (get_cvs_passsword): return CVSroot_password if it was supplied
+       in the CVSROOT.
+       * root.c (parse_cvsroot): Changed CVSROOT spec from
+       :method:address@hidden/port:/cvsroot to
+       :method:[[user][:address@hidden:[port]]/cvsroot
+       Removed the xstrdup function since we'd rather have the error checking
+       from the version in subr.c anyhow.  Moved some error messages which
+       looked like they would print the wrong error message after a failed
+       connect_to_gserver call.
+       (normalize_cvsroot): return a normalized CVSROOT for use in the
+       .cvspass file.
+       * sanity.sh (crerepos-6): fix a test which was expecting an old error
+       message.
+
+       * client.c (connect_to_pserver): Moved some error messages which looked 
like they
+       would print the wrong error message after a failed connect_to_gserver
+       call.
+
+       * login.c (login): Paranoiacly zero a password in memory.
+
+2000-10-12  Derek Price  <address@hidden>
+
+       * client.c (auth_server_port_number -> get_port_number, start_pserver,
+       start_tcp_server): use a port specified in CVSROOT instead of the
+       default port.  Failing that, use the CVS_CLIENT_PORT environment
+       variable.
+       * cvs.h: Added global CVSroot_port & renamed auth_server_port_number.
+       * root.c (parse_cvsroot): Parse the new CVSROOT format properly.
+       Incidentally reformated some error messages for uniformity and
+       readability.
+       * sanity.sh (crerepos): fix two tests which were now expecting the
+       wrong error message.
+
+2000-10-11  Larry Jones  <address@hidden>
+
+       * server.c (pserver_authenticate_connection): Fix stupid mistake
+       in previous change.
+
+2000-10-11  Derek Price  <address@hidden>
+
+       * main.c (main): Dispose old CVSroot when parsing a '-d' option if
+       free_CVSroot is set.
+       * root.c (parse_cvsroot): remove references to 'cvsroot_parsed', a
+       static boolean I expect hasn't been used since CVS learned to handle
+       multiple CVSROOTs.
+
+2000-10-10  Larry Jones  <address@hidden>
+
+       * server.c (print_error): Make up a message if strerror fails.
+
+       * server.c (pserver_authenticate_connection): Give a real error
+       message for an invalid repository.
+
+2000-10-06  Derek Price  <address@hidden>
+
+       * add.c (add): Made quiet mode affect some warning messages as seemed
+       appropriate.  Specifically, some of the messages which a user might
+       want to ignore so they don't have to be quite so specific on the
+       command line: files added twice, files already in the repository and
+       check out properly (i.e. but picked up by 'cvs add *'), & files which
+       are readded in place of a dead revision or onto a branch.  '-q' will
+       not change the non-zero exit code for the cases where at least one
+       passed in file name was already in the Entries file.  There seems to
+       be a precedent in remove.c.
+       * remove.c (cvsremove): switched the "use cvs ci to make these changes
+       permanent message" to only print w/o '-Q' to match the new behavior of
+       add.  This seems appropriate as '-Q' is defined to restrict messages
+       to critical errors.
+       * sanity.sh (adderrmsg): Added some tests for the above behavior.
+
+2000-10-05  Larry Jones  <address@hidden>
+
+       * client.c (call_in_directory): Create CVSADM directory if it doesn't
+       exist in the directory.  This makes client/server work more like
+       standalone when checking out into an existing (non-CVS) directory.
+       * sanity.sh (dirs2, conflicts3, toplevel): Update to match.
+
+2000-10-03  Larry Jones  <address@hidden>
+
+       * filesubr.c (get_homedir): Ignore $HOME when running in server mode.
+
+2000-10-02  Larry Jones  <address@hidden>
+
+       * cvs.h: Define (and use) T_PATCH as a valid file classification
+       even when SERVER_SUPPORT isn't defined -- it simplifies the code.
+       * classify.c (Classify_File): Ditto.
+       * commit.c (check_fileproc): Ditto.
+       * status.c (status_fileproc): Ditto.
+       * update.c (update_fileproc): Ditto.
+       * tag.c (check_fileproc): Accept T_PATCH in addition to T_CHECKOUT.
+       * sanity.sh (tagc-10): Update to match.
+
+2000-09-29  Larry Jones  <address@hidden>
+
+       * client.c (get_responses_and_close): Reset server_fd to -1 after
+       shutting down.
+       (Reported by Joerg Thoennes <address@hidden>.)
+
+2000-09-27  Larry Jones  <address@hidden>
+
+       * commit.c (commit): Don't sleep before returning in server mode,
+       just let the client do it.
+       * update.c (do_update): Ditto.
+
+       * sanity.sh (find_tool): Correct method of checking for GNU tools.
+
+       * checkout.c (checkout_proc): Match up user directories with
+       repository directories instead of using Emptydir.
+       * sanity.sh (cvsadm, emptydir): Update to match.
+
+2000-09-19  Larry Jones  <address@hidden>
+
+       * version.c: Push version number to 1.11.0.1.
+
+       * version.c: Version 1.11.
+
+2000-09-07  Larry Jones  <address@hidden>
+
+       * Makefile.in: Use @bindir@, @libdir@, @infodir@, and @mandir@
+       from autoconf.
+
+2000-08-23  Larry Jones  <address@hidden>
+
+       * mkmodules.c (init): Create an empty val-tags file if it doesn't
+       already exist to avoid problems with users not having sufficient
+       permissions to create it later.
+
+2000-09-06  Jim Kingdon  <address@hidden>
+
+       * main.c (lookup_command_attribute): Add "release" to commands
+       which can be done by a read-only user.
+
+2000-08-23  Larry Jones  <address@hidden>
+
+       * repos.c (Name_Repository): Use pathname_levels to detect attempts
+       to get above the repository instead of checking for leading ..
+       which isn't reliable.
+       * sanity.sh (multiroot3-12 to multiroot3-15): New tests for above.
+
+2000-08-21  Larry Jones  <address@hidden>
+
+       * rcs.c (expand_keywords): Handle the unusual case of log == NULL.
+       (Reported by Craig Metz <address@hidden>.)
+
+2000-08-01  Larry Jones  <address@hidden>
+
+       * subr.c (pathname_levels): Fix bug that miscounts adjacent
+       slashes.
+       (Patch submitted by Tanaka Akira <address@hidden>.)
+
+       * loginc.c (login): If available, use getpassphrase instead of
+       getpass to support long passwords on Solaris.
+
+2000-07-28  Larry Jones  <address@hidden>
+
+       * server.c (server_noop): Avoid do_cvs_command() overhead.
+       (requests): Make noop RQ_ROOTLESS.
+
+2000-07-27  Noel Cragg  <address@hidden>
+
+       * root.c (parse_cvsroot): change fork method to behave like other
+       remote methods -- let the server check that the repository
+       directory is an absolute pathname.
+
+2000-07-27  Larry Jones  <address@hidden>
+
+       * lock.c (set_lock): Include actual lock directory in error message.
+       * sanity.sh (multiroot3-10): Change to match.
+
+       * sanity.sh (client-3): Allow for a potential "broken pipe".
+
+2000-07-26  Larry Jones  <address@hidden>
+
+       * commit.c (commit_filesdoneproc): Flush stdout before running script.
+       * modules.c (do_module): Ditto.
+       * update.c (update_dirleave_proc): Ditto.
+       * server.c (do_cvs_command): Give input from the protocol pipe
+       precedence over input from stdout/stderr.  There's no particularly
+       good justification for this other than helping to avoid out-of-order
+       messages in sanity.sh.
+
+       * admin.c (admin_usage): Add the supported options.
+
+       * sanity.sh (info): Try to avoid out-of-order messages.
+
+       * sanity.sh (info): Fix problems when running twice in a row.
+
+2000-07-17  Larry Jones  <address@hidden>
+
+       * sanity.sh (modules5-7, cvsadm-1e, emptydir-2): Allow for a nil
+       commit (can happen if the test is run twice in a row).
+
+2000-07-19  Pavel Roskin  <address@hidden>
+       and Larry Jones  <address@hidden>
+
+       * mkmodules.c (config_contents): Add a commented out example for
+       LockDir. Don't suggest PreservePermissions unless it's enabled.
+
+2000-07-17  Larry Jones  <address@hidden>
+
+       * login.c (get_cvs_password): Handle malformed ~/.cvspass more
+       gracefully.
+
+2000-07-12  Larry Jones  <address@hidden>
+
+       * sanity.sh (modules5): New tests for module programs.
+
+2000-07-11  Larry Jones  <address@hidden>
+
+       * filesubr.c (copy_file, xcmp): Handle systems (like Plan 9) that
+       don't support mknod() and/or st_rdev.
+       * import.c (add_rcs_file): Ditto.
+       * rcs.c (RCS_checkout, RCS_checkin): Ditto.
+       * update.c (special_file_mismatch): Ditto.
+
+2000-07-10  Larry Jones  <address@hidden>
+
+       * zlib.c (gunzip_and_write): Fix type clashes.
+
+       * main.c (main): Remove unused variables.
+
+2000-07-10  Jim Meyering  <address@hidden>
+
+       When a command like `cvs update -kk -jT1 -jT2' creates a new file
+       (because it had the T2 tag, but not T1), the subsequent commit of
+       that just-added file would effectively set the admin `-kk' option
+       for that file in the repository.
+
+       * update.c (join_file): Rename global-shadowing local `options'
+       to `t_options'.
+       Set file-scoped global `options' to NULL just before
+       check-out.
+       * sanity.sh (join-admin): New test for this.
+
+2000-07-08  Larry Jones  <address@hidden>
+
+       * version.c, cvs.h (version): New function.
+       * main.c (cmds[]): Add version command to invoke it.
+       (main): Also use it in -v.
+       * server.c (serve_version): New function.
+       (requests[]): Add version command to invoke it.
+
+2000-07-06  Karl Fogel  <address@hidden>
+
+       * sanity.sh (pserver-14): remove this test for portability
+       reasons (it was only recently added for the 2000-07-04 change).
+
+2000-07-06  Larry Jones  <address@hidden>
+
+       sanity.sh (modules-148): Don't test for specific revisions.
+
+       * main.c (main): Catch SIGABRT to try to clean up after assertion
+       failures.  Don't bother SIG_register'ing Lock_Cleanup because
+       main_cleanup calls it indirectly anyway.
+       * patch.c (patch): Catch SIGABRT.
+       * rcs.c (rcs_internal_lockfile): Ditto.
+       * server.c (server): Ditto.
+
+       * fileattr.c (fileattr_write): Don't delete the unrecog_head list
+       when writing...
+       (fileattr_free): Delete it when freeing!
+
+2000-07-05  Larry Jones  <address@hidden>
+
+       * admin.c (admin): Handle -t in client so reading from files works
+       correctly in client/server mode.
+       * sanity.sh (log2): Update to match.
+
+2000-07-04  Karl Fogel  <address@hidden>
+
+       * server.c (pserver_authenticate_connection): use new
+       getline_safe() during authentication phase, to avoid a
+       denial-of-service attack in which client sends arbitrary
+       amounts of data with no newlines.
+       (Reported by <address@hidden>.)
+
+       * sanity.sh: new test pserver-14 for above.
+
+       * myndbm.c: #include getline.h.
+       (mydbm_load_file): pass new GETLINE_NO_LIMIT flag to getstr().
+
+2000-07-03  Larry Jones  <address@hidden>
+
+       * sanity.sh (modules): Rewrite using dotest.  Add "modules-"
+       prefix to test names.
+
+2000-06-28  Larry Jones  <address@hidden>
+
+       * error.c (error_exit): Call rcs_cleanup () to release any rcs locks.
+       * rcs.c, rcs.h (rcs_cleanup): Make public, close file before trying
+       to remove (some systems won't remove open files).
+       (RCS_putdtree): Don't worry about cleaning up before call error
+       since it now does it for us.
+       (rcs_internal_lockfile, rcs_internal_unlockfile): Keep track of
+       lock file fd for rcs_cleanup ().
+
+       * client.c (handle_set_checkin_prog, handle_set_update_prog):
+       Just ignore the request when exporting.
+
+2000-06-27  Larry Jones  <address@hidden>
+
+       * create_adm.c, cvs.h (Create_Admin): Add dotemplate argument.
+       Change all callers.
+       * checkout.c (checkout_proc): Don't create CVS/Template if
+       exporting.
+
+2000-06-26  Pavel Roskin <address@hidden>
+       and Larry Jones  <address@hidden>
+
+       * server.c (switch_to_user): Only set CVS_Username if
+       AUTH_SERVER_SUPPORT is defined.
+
+2000-06-23  Larry Jones  <address@hidden>
+
+       * client.c (send_dirent_proc): Don't allocate ignlist if you're
+       going to skip the directory (plugs memory leak).
+       (send_dirleave_proc): New function.
+       (send_files): Use it (plugs memory leak).
+       * root.c (root_allow_free): Plug memory leaks.
+       * server.c (serve_directory, serve_notify, check_password,
+       pserver_authenticate_connection): Ditto.
+       * update.c (update): Ditto.
+
+       This completes the memory leak shoot-out -- the Purify'ed version
+       of CVS now runs the entire test suite, both local and remote (except
+       for remote crerepos, which causes Purify to choke) with *no* memory
+       leaks.
+
+       * server.c (pserver_authenticate_connection): Don't free null pointer.
+
+2000-06-21  Larry Jones  <address@hidden>
+
+       * client.c (update_entries, get_responses_and_close): Plug memory leaks.
+       * commit.c (find_fileproc, commit): Ditto.
+       * import.c (import): Ditto.
+       * log.c (cvslog): Ditto.
+       * recurse.c (start_recursion): Ditto.
+       * remove.c (cvsremove): Ditto.
+       * server.c (fd_buffer_initialize, server_notify, do_cvs_command): Ditto.
+       (fd_buffer_shutdown): New function.
+
+2000-06-20  Larry Jones  <address@hidden>
+
+       * root.c (parse_cvsroot): Put the terminating NUL byte into the
+       string *before* copying it, not after. :-(
+
+2000-06-19  Larry Jones  <address@hidden>
+
+       * main.c (main): Plug memory leaks.
+       * root.c (parse_cvsroot, set_local_cvsroot): Ditto.
+       * server.c (serve_root): Ditto.
+
+2000-06-16  Larry Jones  <address@hidden>
+
+       * fileattr.c (fileattr_read): Plug memory leak.
+       * rcs.c (RCS_whatbranch): Ditto.
+       * update.c (update_dirleave_proc): Ditto.
+
+       * ignore.c (ign_dir_add): Duplicate string so caller can free.
+
+       * modules.c (do_module): Don't write into dbm's memory!
+
+2000-06-15  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout_proc): Fix non-ANSI code in call to
+       findslash(), minor cleanups.
+
+2000-06-14  Larry Jones  <address@hidden>
+
+       * tag.c (val_direntproc): Return R_PROCESS instead of 0.
+
+       * client.c (update_entries): Fix type clash calling gunzip_and_write().
+       * server.c (receive_file): Fix type clash calling gunzip_and_write().
+       (server_updated): Fix type clash calling buf_output().
+       * error.c (error): Make buf char instead of unsigned char to avoid
+       type clashes.
+
+       * modules.c (do_module): Change callback_proc to pass argc by
+       value instead of by reference: callback procs shouldn't be
+       messing with the callers argc/argv, it makes correct memory
+       management impossible.  Plug memory leaks.
+       * cvs.h: Change to match.
+       * checkout.c (checkout_proc): Ditto; use a local argv array instead
+       of messing with caller's.
+       * modules.c (callback_proc): Ditto.
+       * patch.c (patch_proc): Ditto; use a local argv array instead
+       of messing with caller's.
+       * rtag.c (rtag_proc): Ditto; use a local argv array instead
+       of messing with caller's.
+       * server.c (expand_proc): Ditto.
+       * subr.c (line2argv): Change initial argv_allocated back to 1.
+
+       * checkout.c (findslash): Fix non-ANSI code.
+
+       * sanity.sh (modes3): Fix test names.
+
+2000-06-13  Larry Jones  <address@hidden>
+
+       * add.c (add): Plug memory leaks.
+       * admin.c (admin_fileproc): Ditto.
+       * checkout.c (build_dirs_and_chdir): Ditto.
+       * edit.c (editors_fileproc): Ditto.
+       * log.c (cvslog, log_parse_revlist, log_parse_date): Ditto.
+       * rcs.c (RCS_addaccess): Ditto.
+       * tag.c (check_fileproc): Ditto.
+       * vers_ts.c (Version_TS): Ditto.
+       * watch.c (watchers_fileproc): Ditto.
+
+2000-06-12  Larry Jones  <address@hidden>
+
+       * rcs.c (rcsbuf_valword): Set rcsbuf->vlen to keep rcsbuf_valcopy()
+       from allocating more memory than needed for @ strings.  Don't declare
+       unless PRESERVE_PERMISSIONS_SUPPORT (since not defined).
+
+       * rcs.c (RCS_abandon): New function to abandon changes.
+       * rcs.h: Declare it.
+       * admin.c (admin_fileproc): Use it instead of RCS_reparsercsfile.
+
+       * commit.c (commit_fileproc): Fix memory leaks.
+       * patch.c (patch_fileproc): Ditto.
+       * rcs.c (RCS_nodeisbranch, RCS_copydeltas): Ditto.
+       * tag.c (tag_fileproc): Ditto.
+       * update.c (update): Ditto.
+
+2000-06-09  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_reparsercsfile, RCS_fully_parse, getdelta,
+       RCS_getdeltatext): Handle newphrases with composite values.
+       (rcsbuf_getkey): Don't remove @s in composite values -- it makes
+       it impossible to parse the value!  Set special flag to indicate
+       a composite value.
+       (rcsbuf_valcopy, rcsbuf_valpolish_internal): Handle composite values.
+       (putrcsfield): Write composite values.
+       (RCS_checkin): Set node types in other_delta list.
+       * hash.h: Add RCSCMPFLD.
+       * hash.c (nodetypestring): Ditto.
+
+       * rcs.c (getdelta): Never allocate space for value, just return
+       pointer into rcsbuf (fixes memory leaks).  Use rcsbuf_getkey to
+       read a key and value and then parse the value if needed rather
+       than trying to read it in bits and pieces with rcsbuf_getid,
+       rcsbuf_getstring, and rcsbuf_getword.
+       (RCS_reparsercsfile): Change callers to compensate.
+       (rcsbuf_valcmp, rcsbuf_valword): New functions.
+       (rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): Deleted.
+       * sanity.sh (rcs3-1): Now get slightly different error message.
+
+2000-06-08  Larry Jones  <address@hidden>
+
+       * main.c (usg): Update CVS home page URL.
+
+       * main.c (main): Provide an actual error message for an unknown
+       command in addition to the usage message.
+
+2000-06-07  Larry Jones  <address@hidden>
+
+       * server.c (serve_root, dirswitch, serve_repository,
+       serve_static_directory, serve_sticky, receive_partial_file,
+       receive_file, serve_modified, server_write_entries, serve_notify,
+       serve_checkin_prog, serve_update_prog, server): Don't set
+       pending_error before calling alloc_pending, it makes it fail;
+       use alloc_pending instead of malloc when reasonable; be sure to
+       save errno before calling functions that might change it.
+       (Patch submitted by Dietmar Petras <address@hidden>.)
+
+2000-06-03  Larry Jones  <address@hidden>
+
+       * commit.c (checkaddfile): Plug memory leak.
+       * rcs.c (RCS_checkin): Plug memory leaks.
+       * server.c (do_cvs_command): Plug file descriptor leaks.
+       * tag.c (check_fileproc): Plug memory leak.
+
+2000-05-26  Larry Jones  <address@hidden>
+
+       * recurse.c (unroll_files_proc): Plug memory leak.
+
+       * recurse.c (addfile): Fix nonportable pointer cast.
+
+       * rcs.c (rcsbuf_getstring, rcsbuf_getword, getdelta): Plug memory
+       leaks.
+
+2000-05-25  Larry Jones  <address@hidden>
+
+       * checkout.c (checkout, build_one_dir, checkout_proc): Move m_type
+       to file scope and use it instead of continually doing strcmp on
+       command_name.
+       (build_one_dir, checkout_proc): Don't allow export if CVSADM
+       directory already exists.
+
+2000-05-23  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_checkin, RCS_cmp_file): Plug memory leaks.  (Patch
+       submitted by Chris G. Demetriou <address@hidden>.)
+
+2000-05-20  Ian Lance Taylor  <address@hidden>
+
+       * client.c (connect_to_gserver): Handle server error messages
+       reasonably.
+
+2000-05-19  Larry Jones  <address@hidden>
+
+       * server.c (requests): Make Global_option RQ_ROOTLESS so it can be
+       used with init.
+
+2000-05-18  Larry Jones  <address@hidden>
+
+       * client.c (start_server): Don't do encryption, authentication,
+       compression, or case insensitivity when doing init because init
+       is ROOTLESS and they're not.
+
+       * client.c (connect_to_pserver): Include repository and username in
+       authorization failed message -- if a directory tree crosses multiple
+       repositories, it can be quite difficult for the user to figure out
+       which one is the problem.
+
+2000-05-17  Larry Jones  <address@hidden>
+
+       * main.c (main): Use full set of options when looking for -f to
+       avoid misparsing options that take values (previously, -sVAR=foo
+       was incorrectly parsed as though it were -s -V -A -R -= -f -o -o
+       because it didn't know that -s takes a value).
+       * sanity.sh (info-6b): New test for above.
+
+       * sanity.sh (conflicts-status): Fix tests so they work remotely, too.
+
+2000-05-17  Jim Meyering  <address@hidden>
+
+       * sanity.sh (TESTDIR): Fix braino in last change:
+       cd to /tmp before invoking pwd.
+
+       * sanity.sh: Set TESTDIR so that `make check' passes even when /tmp
+       is a symlink.
+       (join-36): Use $TESTDIR rather than hard-coding `/tmp/cvs-sanity'.
+       (conflicts-132): Remove unnecessary `rm aa'.
+
+2000-05-16  Jim Kingdon  <address@hidden>
+
+       * cvs.h, checkout.c (safe_location): Make extern.
+       * import.c (import): Call it rather than reimplementing
+       (incompletely) the same check.
+
+2000-05-16  Larry Jones  <address@hidden>
+
+       * rcs.h, subr.c (file_has_markers): Check for any of the three
+       conflict marker lines, not just one.
+       * sanity.sh (conflicts-status): New tests for above.
+       * sanity.sh: Revise to avoid tripping the above check when merging
+       changes into sanity.sh itself.
+
+2000-05-15  Larry Jones  <address@hidden>
+
+       * update.c (join_file): When registering the result of the merge,
+       make sure that the version number is valid (vers->vn_rcs may be
+       null if the file doesn't exist on the branch yet).  (Patch submitted
+       by Robert de Vries <address@hidden>.)
+       * update.c (join_file): Correct diagnostics (previous change was not
+       correct -- the file *does* exist in the specified revision, it just
+       doesn't exist in the sandbox).
+       * sanity.sh (import-113, join): New tests and changes for above.
+
+2000-05-04  Larry Jones  <address@hidden>
+
+       * sanity.sh: Look for a useful id program.  Since we're getting
+       the real username for some tests anyway, use it for all the
+       tests instead of a generic regular expression that may or may
+       not match the actual username.
+
+2000-05-04  Larry Jones  <address@hidden>
+
+       * server.c: More error messages.
+
+2000-05-02  Donald Sharp <address@hidden>
+       and Larry Jones  <address@hidden>
+
+       * history.c (report_hrecs): Added code to print out year instead of
+       just month/day.
+       * sanity.sh (basic2-64, history): Update to match.
+
+2000-04-19  Larry Jones  <address@hidden>
+
+       * server.c (dirswitch): Set pending_error_text in addition to
+       pending_error to aid in problem determination.
+
+2000-03-23  Larry Jones  <address@hidden>
+
+       * mkmodules.c (mkmodules): Return without doing anything if noexec
+       is set to avoid trashing existing files.
+
+2000-03-23  Larry Jones  <address@hidden>
+
+       * main.c: Alphabetize cmds[] and cmd_usage[] and add server
+       commands to cmd_usage[].
+
+2000-03-21  Larry Jones  <address@hidden>
+
+       * sanity.sh (client-1): May get "Broken pipe" message from the
+       "server" in addition to the expected output.
+
+2000-03-17  Larry Jones  <address@hidden>
+
+       * server.c (switch_to_user): Set CVS_Username if it hasn't already
+       been set elsewhere.  (Patch submitted by Gordon Matzigkeit
+       <address@hidden>).
+
+2000-03-13  Larry Jones  <address@hidden>
+
+       * parseinfo.c: Add extern to logHistory declaration.  (Reported by
+       <address@hidden>.)
+       (parse_config): Reformat logHistory code.
+
+2000-03-10  Larry Jones  <address@hidden>
+
+       * add.c (add): Don't try to set cvsroot_len until after checking
+       for help only -- CVSroot_directory isn't set in that case.
+
+2000-03-03  Larry Jones  <address@hidden>
+
+       * mkmodules.c (init): Use mkdir_if_needed to create CVSROOT/Emptydir
+       so we don't fail if run multiple times.  (Reported by KOIE Hidetaka
+       <address@hidden>.)
+       * sanity.sh (1a): New test for above.
+
+2000-03-02  Larry Jones  <address@hidden>
+
+       * main.c: Use identical #if's in the command table and the code
+       for pserver and kserver to prevent "peculiar" configurations from
+       having really perverse behavior because the command table entries
+       are present but the related code isn't.
+
+2000-03-01  Larry Jones  <address@hidden>
+
+       * import.c (import): Don't allow importing the repository.
+       * sanity.sh (errmsg2-20, errmsg2-21): New tests for above.
+
+2000-03-01  Larry Jones  <address@hidden>
+
+       * main.c (main): Update year in copyright message.
+
+2000-03-01  Larry Jones  <address@hidden>
+
+       * logmsg.c (do_editor): Correct previous change.
+
+2000-02-29  Larry Jones  <address@hidden>
+
+       * logmsg.c (do_editor): When reading temp file, check that message
+       buffer is large enough to hold the next line and expand if needed.
+
+2000-02-28  Larry Jones  <address@hidden>
+
+       * commit.c (commit): Use get_file() to read log file correctly
+       and in text mode rather than binary mode.
+
+       * subr.c (get_file): Ignore bufsize if buf is NULL.  Include
+       terminating NUL byte when estimating required buffer size.
+
+2000-02-28  Larry Jones  <address@hidden>
+
+       * sanity.sh (find_tool): New function to replace duplicated code.
+
+2000-02-25  Larry Jones  <address@hidden>
+
+       * import.c (add_rcs_file): Don't abort just because lstat fails.
+
+2000-02-16  Jim Meyering  <address@hidden>
+
+       Avoid race condition whereby a catchable signal could
+       end up corrupting the repository.
+       * commit.c (checkaddfile): Put a critical section around the code
+       that handles the first commit on the trunk of a file that's already
+       been committed on a branch.
+       * cvs.h (Sig_inCrSect): Declare new function.
+
+2000-02-21  Karl Fogel  <address@hidden>
+
+       * main.c (main): still check for repository, but not history file
+       (correction to 2000-02-18 change -- that's what I get for
+       believing the comment rather than the code).
+
+2000-02-21  K.J. Paradise <address@hidden>
+
+       * history.c mkmodules.c parseinfo.c: control which actions
+       get logged to the cvs history file via CVSROOT/config file
+       and LogHistory keyword. (John P Cavanaugh <address@hidden>)
+
+2000-02-18  Karl Fogel  <address@hidden>
+
+       * history.c (history_write): don't die if history file not
+       writable, just warn (unless `really_quiet') and skip out.
+
+       * main.c (main): don't bother checking if history file is
+       writable.
+
+       * server.c (serve_root): same.
+
+2000-02-17  Larry Jones  <address@hidden>
+
+       * sanity.sh (perms symlinks symlinks2 hardlinks): Don't run by
+       default since PreservePermissions code is now disabled.
+
+2000-02-17  Larry Jones  <address@hidden>
+
+       * sanity.sh (import-113): Revise to match Jim Meyering's fix.
+
+2000-02-16  Larry Jones  <address@hidden>
+
+       * add.c (add): Don't allow adding files or directories to Emptydir.
+       (Patch submitted by Chris Cameron <address@hidden>.)
+       * sanity.sh (emptydir): Revise (emptydir-7 and emptydir-8) for this.
+
+2000-02-16  Jim Meyering  <address@hidden>
+
+       * update.c (join_file): Correct typo in diagnostic:
+       change `file %s is present...' to `file %s is not present...'.
+
+2000-02-10  Larry Jones  <address@hidden>
+
+       * parseinfo.c (Parse_Info): Treat matching lines with bad expansions
+       as errors rather than just ignoring.
+
+2000-02-10  Larry Jones  <address@hidden>
+
+       * edit.c (edit): Check for invalid characters in hostname and CurDir.
+       (Reported by "Andrew S. Townley" <address@hidden>.)
+       * sanity.sh (devcom2): New tests for above.
+
+2000-02-10  Larry Jones  <address@hidden>
+
+       * cvs.h: Always #include "server.h" to prevent compile errors when
+       neither CLIENT_SUPPORT nor SERVER_SUPPORT is defined.
+       (Reported by "Crow, Ian" <address@hidden>.)
+       * log.c (send_one, send_arg_list): Only define when CLIENT_SUPPORT
+       is defined to prevent link errors.
+
+       * server.c (server): Always create a new temporary directory, don't
+       try to reuse an existing one since we might not have correct
+       permissions.  Also, include directory name in error messages.
+
+2000-01-29  Jim Kingdon  <http://developer.redhat.com/>
+
+       * ignore.c (ignore_files): Correctly set errno to 0 when we go
+       back to the top of the loop.  Fixes spurious errors like "cvs
+       update: error reading current directory: No such file or
+       directory".
+
+2000-01-26  Larry Jones  <address@hidden>
+
+       * run.c (run_exec): Conditionalize K.J.'s change so that it only
+       applies when SETXID_SUPPORT is defined since some platforms don't
+       have setegid().
+
+2000-01-26  Larry Jones  <address@hidden>
+
+       * sanity.sh: Make TESTDIR earlier then use it to check for versions
+       of expr that don't work right with long expressions.
+
+       * sanity.sh (dotest_line_by_line): Have wc read from stdin so it
+       doesn't output the file name and confuse expr.  Make the output a
+       bit less verbose and easier to read.
+
+2000-01-24  K.J. Paradise <address@hidden>
+
+       * run.c :> prevents a user from creating a privileged shell from the
+       text editor when the SETXID_SUPPORT option is selected.  This came from
+       Bob Colle <address@hidden>, and is his completely.
+
+2000-01-22  Jim Kingdon  <http://developer.redhat.com/>
+
+       * sanity.sh (emptydir): Add a case in which one might hope for a
+       non-Emptydir result, but which result?
+
+2000-01-18  Larry Jones  <address@hidden>
+
+       * main.c (main): Allow -z0 to disable gzip compression.
+
+2000-01-17  Larry Jones  <address@hidden> for
+       K.J. Paradise (address@hidden)
+
+       * version.c: Push version number to 1.10.8.1.
+
+       * version.c: Version 1.10.8.
+
+2000-01-17  Larry Jones  <address@hidden>
+
+       * mkmodules.c (init): Create CVSROOT/Emptydir to avoid problems
+       with users not having sufficient permissions to create it later.
+
+2000-01-04  Larry Jones  <address@hidden>
+
+       * client.c (get_responses_and_close): Simplify time-stamp race
+       avoidance code.
+       * commit.c (commit): Ditto.
+       * update.c (do_update): Ditto.
+       (Prompted by patch submitted by Pavel Roskin
+       <address@hidden>.)
+
+       * hardlink.c: sizeof (char) is 1, by definition.
+       * logmsg.c: Ditto.
+       * rcs.c: Ditto.
+
+2000-01-03  Karl Fogel  <address@hidden>
+
+       * filesubr.c, subr.c (backup_file): moved this function from
+       filesubr.c to subr.c, at JimK's suggestion.
+
+2000-01-03  Jim Kingdon  <http://developer.redhat.com/>
+
+       * sanity.sh (clean): Test the contents of the .#cleanme.txt.1.1
+       file, not just its existence.
+
+2000-01-03  Karl Fogel  <address@hidden>
+
+       * cvs.h, filesubr.c (backup_file): use `const' for suffix too;
+       correct suffix length calculation and appending behavior; discard
+       unnecessary `void' cast.  Thanks to Jim Meyering for noticing.
+
+2000-01-03  Larry Jones <address@hidden>
+
+       * sanity.sh (clean): Fix up expected output.
+
+2000-01-02  John P Cavanaugh <address@hidden>
+        and Karl Fogel <address@hidden>
+
+       New -C option to update: overwrites local changes with clean
+       copies from the repository.  (This is an unreversion of the
+       1999-12-10 change, further modified to work remotely.)
+
+       * client.h (BACKUP_MODIFIED_FILES): new #define.
+
+       * client.c (struct send_data): new element `backup_modified'.
+       (send_files): set above element if BACKUP_MODIFIED_FILES flag is
+       present.
+
+       * filesubr.c (backup_file): new function.
+
+       * cvs.h: prototype for new function `backup_file'.
+
+       * update.c (toss_local_changes): new file-scoped global.
+       (update): set toss_local_changes if -C flag seen.  If
+       client_active, send "-C" to server, and set SEND_NO_CONTENTS and
+       BACKUP_MODIFIED_FILES flags before calling send_files().
+
+       (update_fileproc): if file is modified and toss_local_changes is
+       set, then back the file up and then check out a fresh copy from
+       the repository.  Also, fixed indentation and formatting for a
+       particularly bad stretch of code near (but unrelated to) these
+       changes.
+
+       * sanity.sh: new test `clean', for update -C option.
+
+1999-12-29  Jim Kingdon  <http://developer.redhat.com/>
+
+       * history.c (read_hrecs): st_blksize is unsigned long, not int.
+       This isn't just cosmetic - getting it wrong will cause coredumps
+       and such on 64 bit machines.
+
+       * import.c (import_descend), ignore.c (ignore_files): Placate gcc
+       -Wall by parenthesizing foo || (bar && baz).
+
+1999-12-24  Larry Jones <address@hidden>
+
+       * release.c (release): Use fputs to echo lines from update instead
+       of printf to avoid problems with lines containing "%".  (Reported
+       by Jean-Luc Simard <address@hidden>.)
+
+       * history.c (read_hrecs): Allocate a single 2-block buffer instead
+       of allocating and freeing a buffer for each block.
+       (fill_hrec): Remove redundant code.
+       (select_hrec): Plug memory leak.
+
+1999-12-22  Larry Jones <address@hidden>
+
+       * history.c (history): For "modified" or "checkout", sort on
+       file if user specified -l, even if user also specified a date-
+       oriented flag.
+       * sanity.sh (history): Update to match; add new tests.
+
+1999-12-15  Pavel Roskin <address@hidden>
+       and Larry Jones <address@hidden>
+
+       * lock.c (lock_name): fixed assertion failure for the
+       top-level CVS directory when LockDir is used
+       * sanity.sh (lockfiles-9): new test for this case
+
+1999-12-11  Karl Fogel  <address@hidden>
+
+       * Revert previous change -- it doesn't work remotely yet.
+
+1999-12-10  John P Cavanaugh <address@hidden>
+        and Karl Fogel <address@hidden>
+
+       * update.c: new -C option to update, overwrites local changes with
+       clean copies from the repository.
+       Also, fixed indentation and formatting for a particularly bad
+       stretch of code near these changes in update_fileproc().
+
+       * sanity.sh: test new update -C option.
+
+1999-12-10  Larry Jones <address@hidden>
+
+       * commit.c (remove_file): Call history_write with update_dir NULL
+       like Checkin() does for add and modify.
+       * sanity.sh (basic2-64): Update to match, add "R" records to expected
+       remote output.
+
+1999-12-09  K.J. Paradise (address@hidden)
+
+       * history.c, commit.c, sanity.sh: found (I think) final
+       cause of seg fault in history command.  Also, added the "R"
+       history functionality.  Fixed basic2-64 so it looks correct for
+       the change.
+
+1999-11-30  K.J. Paradise (address@hidden)
+
+       * history.c: fixed seg fault caused by 11-03 changes.
+       off by one in block memory allocations.
+
+1999-11-29  Karl Fogel  <address@hidden>
+
+       * login.c (logout): free `tmp_name' when done.
+       Correct a comment.
+
+1999-11-29  Larry Jones <address@hidden>
+
+       * cvs.h, error.c, import.c: Rename fperror to avoid name clash
+       on LynxOS.  (Reported by Markus Braun <address@hidden>.)
+
+1999-11-23  Larry Jones <address@hidden>
+
+       * checkout.c (checkout_proc): Split declaration and initialization
+       of rp to placate neurotic compilers that gripe about jumping past
+       an initialization, even when the variable is not subsequently used.
+
+1999-11-19  Larry Jones <address@hidden>
+
+       * server.c (switch_to_user): Correct setgid error messages.
+
+1999-11-19  Karl Fogel  <address@hidden>
+
+       * edit.c (unedit_usage, unedit): new struct, use it.  Now "cvs
+       unedit" prints an accurate usage message (formerly it printed the
+       message for "cvs edit", even though the two commands do not have
+       identical usages).
+
+1999-11-19  Larry Jones <address@hidden>
+
+       * history.c: Move -e documentation from Flags to Reports.
+       (history): Add -e to list of report types in error message.
+
+       * history.c (history): Process file arguments before client/server
+       processing so they get sent to the server.
+       * sanity.sh (history): New tests for above.  (Also remove comments
+       about variable spacing -- history output is in variable-width
+       columns with exactly one space between.)
+
+1999-11-19  Larry Jones <address@hidden>
+
+       * sanity.sh: Reestablish check for running as root (using ``id -u''
+       instead of ``whoami'').
+
+       * sanity.sh(dotest, dotest_lit, dotest_fail, dotest_status,
+       dotest_sort): Eval the command so quoting and pipes work right.
+       (spacefiles, dirs, rcslib, modules, unedit-without-baserev,
+       ignore, rcs, rcs2, history, tagdate, pserver, server, server2)
+       Simplify various tests based on above.
+
+1999-11-19  Karl Fogel  <address@hidden>
+
+       * mkmodules.c (init): make history file world-writeable after
+       creating it, since it needs to be writeable for virtually any
+       CVS operation.
+
+1999-11-10  Jim Kingdon  <http://developer.redhat.com/>
+
+       * admin.c: Revert change to add -H command option.  The help
+       invocation is "cvs -H admin" not "cvs admin -H" (see cvs.texinfo,
+       basicb-21 in sanity.sh; fix to cvs.1)
+
+1999-11-08  Jim Kingdon  <http://developer.redhat.com/>
+
+       * log.c (cvslog): If client_active, send options to the server
+       based on our parsed options rather than trying to send the exact
+       strings specified (using canonical forms, like RFC822/1123
+       dates, in the protocol is just cleaner).
+       (send_one, send_arg_list): New functions, helpers for above.
+       * sanity.sh (logopt-6a): New test, for this fix.
+
+1999-11-09  K.J. Paradise <address@hidden>
+
+       * admin.c: made the -H option do what it is documented to
+       do.  a
+
+1999-11-08  Tom Tromey  <address@hidden>
+
+       * client.c (connect_to_gserver): Print more error text if gssapi
+       initialization fails.  From Assar Westerlund <address@hidden>.
+
+1999-11-06  Larry Jones <address@hidden>
+
+       *sanity.sh(rcs3-5): Remote output can be out-of-order, so need a
+       more general pattern to match the assertion failure.
+
+1999-11-05  K.J. Paradise (address@hidden)
+
+       * history.c: Added a trap to verify that if a
+       read(file, buffer,blocksize) returns less than blocksize,
+       that we really are at the end of the file.  I can't easily
+       come up with a test case where this code gets touched, so
+       it may cause problems.  All sanity tests still pass though.
+
+1999-11-05  Jim Kingdon  <http://developer.redhat.com/>
+
+       * sanity.sh (logopt): New test, for Larry's fix.
+       * sanity.sh (log-18a, rcs-15 to rcs-19): New tests, to test -d
+       and -r more thoroughly.
+
+1999-11-05  Larry Jones <address@hidden>
+
+       * log.c (cvslog): Fix -s and -d with spaces on client side.
+       (log_usage): Revert Karl's change once again.
+       sanity.sh(rcs3-5): No longer get different results from local
+       and client/server.
+
+1999-11-04  Karl Fogel  <address@hidden>
+
+       * log.c (log_usage): Revert Jim Kingdon's reversion of my change
+       of 1999-11-03.  Allowing a space between option and argument
+       results in lossage; here is a reproduction recipe: run this from
+       the top of a remote copy of the cvs source tree
+
+          cvs log -d '>1999-03-01' > log-out.with-space
+
+       and then run this (note there's no space after -d now):
+
+          cvs log -d'>1999-03-01' > log-out.no-space
+
+       The resulting files differ; furthermore, a glance at the output of
+       cvs shows that the first command failed to recurse into
+       subdirectories.  Until this misbehavior can be fixed in the source
+       code, the documentation should reflect the true state of affairs:
+       if one simply omits the space, everything works fine.
+
+1999-11-04  Jim Kingdon  <http://developer.redhat.com/>
+
+       * log.c (log_usage): Revert Karl's change regarding -d and
+       -s.  A space is allowed (see sanity.sh for example).
+
+1999-11-03  K.J. Paradise (address@hidden>
+
+       * history.c: cleaned up my prior change a bit, per Larry Jones'
+       comments, and John O'Conner's additional comments about bits of
+       non MS-Visual C++ compliancy of my code.
+
+1999-11-04  Larry Jones <address@hidden>
+
+       * sanity.sh: Check that tr that correctly handles NULs; if not, try
+       to find a version that does; if none can be found, warn user.
+       Also fix warnings for defective expr.
+
+1999-11-04  Karl Fogel  <address@hidden>
+
+       Changes for empty/random passwords in anon pserver access:
+
+       * server.c (check_repository_password): if password empty, grant
+       access no matter what password is received; this is so anon CVS no
+       longer requires a password but remains backwards-compatible with
+       all those clients out there.
+
+       * client.c (connect_to_pserver): proceed with login even if
+       password not found in .cvspass file -- just use empty string as
+       password.  And if such a login fails, print a descriptive error.
+
+       * login.c (get_cvs_password): don't complain if file or password
+       not found.  That condition is no longer a showstopper, now that
+       empty passwords are permissible.
+       Cleaned up conditional chaining a bit, too.
+
+       * sanity.sh (pserver-9, pserver-10, pserver-11, pserver-12,
+       pserver-13): new tests, about empty-password pserver access.
+
+1999-11-03  K.J. Paradise (address@hidden>
+
+       * history.c:  modify parsing routines to parse the history
+       file a block at a time, rather than all at once.  This allows
+       people with large history files and small amount of memory
+       to still get some functionality out of the history file.
+
+1999-11-03  Karl Fogel  <address@hidden>
+
+       * log.c (log_usage): correct usage message for -d and -s options.
+       Because the space between the option letter and its argument has
+       been eliminated, I capitalized the argument portion to distinguish
+       it from the option letter.  This makes it slightly inconsistent
+       with other such usage summaries, but at least it is now both
+       correct and readable.
+
+1999-10-22  Larry Jones  <address@hidden>
+
+       * sanity.sh (dotest_sort): Old versions of tr don't understand \t
+       so use a literal tab instead.
+
+1999-10-21  Larry Jones  <address@hidden>
+
+       * sanity.sh (dotest_sort): Convert any tabs in the output into spaces
+       before sorting to avoid POSIX.2 sort weirdness.
+       (import-106, importb-2): Change expected output per above.
+
+1999-10-18  K.J. Paradise <address@hidden>
+
+       Bug: users 'stan' and 'cartman' both have full read/write access
+       to the cvs repository.  'cartman' does a 'cvs admin -l foo.c'.
+       'stan' then does a 'cvs admin -u foo.c'.  The lock wouldn't be
+       removed, and no warning/error would be given.  This is now fixed.
+       * rcs.c:(c.6157) remove caller/user check on the multiple lock
+        detection routines.  Sanity.sh runs with no errors after this fix.
+
+1999-10-14  Larry Jones  <address@hidden>
+
+       Make "cvs admin -e" (with no list of users) work:
+       * admin.c (admin): Remove error message.
+       (admin_fileproc): If no args for -e, call RCS_delaccess with NULL user.
+       * rcs.c (RCS_delaccess): Interpret NULL user as request to delete
+       entire access list.
+       * sanity.sh (admin-19a-*): Test.
+
+1999-09-29  Larry Jones  <address@hidden>
+
+       * entries.c (Subdirs_Known): Use entfilename when opening CVSADM_ENTLOG
+       like everywhere else.  Although this isn't strictly necessary (since
+       we immediately close it again), it keeps the code consistent and fixes
+       a bug where an open error reported the wrong file name.
+
+1999-09-16  Larry Jones  <address@hidden>
+
+       * log.c (log_parse_revlist): Handle peculiar revision specs like
+       "-r.", "-r:", and "-r," correctly.  (Thanks to Pavel Roskin
+       <address@hidden> for submitting a patch, this fix is
+       somewhat different.)
+       * sanity.sh (log): New tests for above.
+
+1999-09-15  Larry Jones  <address@hidden>
+
+       * sanity.sh (basica-8b1): New test to check fix for bad diff options
+       causing cvs to crash.
+
+1999-09-02  Larry Jones  <address@hidden>
+
+       * modules.c (do_module): Handle case where module definition has
+       options and special options but no directory; fix potential problems
+       running off beginning of string while stripping trailing blanks.
+       * sanity.sh (modules2): New tests for above.
+
+1999-08-26  Larry Jones  <address@hidden>
+
+       * lock.c (lock_name): Remove side-effects from assert() expression
+       since they won't occur if NDEBUG is defined (not that that's a good
+       thing to do).  (Reported by KOIE Hidetaka <address@hidden>.)
+
+1999-08-25  Larry Jones  <address@hidden>
+
+       * sanity.sh: Use "${AWK}" instead of "awk" to make it easier for
+       people to use nawk/gawk/etc.; use an explicit "-print" with find
+       since some older version don't assume it; rename tests to avoid
+       duplicate importc-8.  (Changes along these lines suggested by
+       Chris Cameron <address@hidden>.)
+
+1999-08-24  Larry Jones  <address@hidden>
+
+       * commit.c (check_fileproc): Don't crash when a file has no
+       repository, just treat it as unknown.  (Reported by Stefaan
+       Diericx <address@hidden>.)
+       * sanity.sh (errmsg2): New tests, for this fix.
+
+1999-08-18  Larry Jones  <address@hidden>
+
+       * update.c (special_file_mismatch): Initialize *_hardlinks to
+       avoid trying to free garbage later on.  (Reported by Jan
+       Scheffczyk <address@hidden>.)
+
+1999-08-17  Larry Jones  <address@hidden>
+
+       * sanity.sh (basicc-11): Older versions of sh don't understand
+       ``if ! test...''.  (Patch submitted by David J N Begley
+       <address@hidden>.)
+
+1999-08-17  Larry Jones  <address@hidden>
+
+       * client.c, hardlink.c, hash.c, hash.h, main.c, recurse.c: Change
+       enum constant UNKNOWN to avoid conflicts on HPUX 11.0.  (Reported
+       by Laurent Duperval <address@hidden>.)
+
+1999-08-16  Larry Jones  <address@hidden>
+
+       client.c: Eliminate redundant #if.  (Patch submitted by Assar
+       Westerlund <address@hidden>.)
+
+1999-07-30  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_checkin): Terminate cleanly if RCS_addbranch fails
+       rather than blithely continuing on and crashing.
+       * sanity.sh (basica): New tests, for this fix.
+
+1999-07-29  Larry Jones  <address@hidden>
+
+       * import.c (add_rcs_file): change "cannot lstat" message to include
+       userfile (the actual file causing the problem) instead of user
+       (which may or may not be the same).
+
+1999-07-29  Eric Sink   <address@hidden>
+
+       * version.c: Push version number to 1.10.7.1.
+
+       * version.c: Version 1.10.7.
+
+1999-07-28  Eric Sink   <address@hidden>
+
+       * sanity.sh: before running basicc-11, we need to see if
+       the cwd has been deleted (by basicc-8).  If so, we
+       recreate it to allow basicc-11 to proceed.  This may be
+       something that only happens under the Linux 2.2 kernel.
+
+1999-07-18  Karl Fogel  <address@hidden>
+
+       * edit.c (notify_do): chop newline, if any, from the value
+       obtained from CVSROOT/users.  Otherwise it just gets passed along
+       in the argument to the notification program (usually mail), which
+       will misinterpret it as signifying the end of the command.
+
+1999-07-19  Larry Jones  <address@hidden>
+
+       * rcs.c (RCS_delete_revs): In the WIN32 kludge, be sure that the result
+       of RCS_getexpand is not NULL before trying to use what it points to.
+       (Patch submitted by Timothy L. Taylor <address@hidden>.)
+
+1999-07-16  Tom Tromey  <address@hidden>
+
+       * admin.c (admin): Allow `-k' options to be used unrestricted.
+
+1999-06-23  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (symlinks2): New test, for symlinks in working
+       directory without PreservePermissions.  This test (modulo a few
+       details not relevant to testing whether we are following symlinks)
+       worked remote as of now, or either remote or local for CVS 1.9.
+       * subr.c (get_file): Revert 1998-02-15 change to special-case
+       symlinks.  This makes the above test work local too.
+       * rcs.c (RCS_checkin): Move the logic to handle special-case
+       symlinks (and other files other than regular files) here, and make
+       it only happen if PreservePermissions is on.
+
+1999-06-18  Larry Jones  <address@hidden>
+
+       * sanity.sh (devcom3-9a): Be less specific about the expected
+       error message (BSD/OS 4.0 has a bug that can cause exec* to fail
+       with EACCES instead of ENOENT).
+
+1999-06-08  Larry Jones  <address@hidden>
+
+       * sanity.sh (diff-4, dirs2-10, tagf-13, importc-7, conflicts2-142b8):
+       Use ${PROG} instead of "cvs".
+
+1999-06-05  Jim Kingdon  <http://www.cyclic.com>
+
+       * recurse.c (do_recursion, do_dir_proc): Make the SERVER_ACTIVE
+       #ifdef be only around the check for server_active.  Modulo a few
+       cosmetic tweaks, same as a patch submitted by Johannes Stezenbach
+       of propack-data.de.
+
+1999-06-01  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh: Add comment about rcs2-7 failures on certain days.
+
+       Make "cvs status -v" on a removed file work:
+       * status.c (cvsstatus): Reindent the client code.
+       (status_fileproc): Don't need a CVS/Entries listing to show the
+       tags.
+       * sanity.sh (rmadd2): New test rmadd2-16 tests the existing
+       behavior with "cvs log"; new test rmadd2-17 tests the new behavior
+       with "cvs status".
+
+       * sanity.sh (basicc): To match no output in dotest, put the empty
+       regexp first.  Remove tests which check that first-dir exists,
+       since that isn't true in the case where the OS let us delete it.
+       (dotest_internal): Fix so that things work with two regexps, with
+       an empty one first.
+
+1999-05-28  Larry Jones  <address@hidden>
+
+       * sanity.sh (server-4): Replace bogus directory with real one since
+       the server now checks it.
+
+1999-05-27  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (spacefiles): Clean up -c, top, and -b at end.
+       (spacefiles, files): Fix bad references to CVSROOT_DIRNAME.
+
+       Fix two problems pointed out by Olaf Kirch of swb.de/caldera.de:
+       * server.c (outside_root): New function, contains expanded version
+       of code from serve_directory.
+       (serve_directory): Call outside_root.
+       (outside_dir): New function
+       (serve_modified, serve_is_modified, serve_notify,
+       serve_questionable, serve_unchanged): Call outside_dir.
+       * sanity.sh (server2): New tests, for these fixes.
+
+1999-05-26  Jim Kingdon  <http://www.cyclic.com>
+
+       * cvs.h, subr.c (xmalloc): Return void* not char*, like xrealloc
+       has done for some time.
+       * modules.c (do_module): If we find the module as a directory/file
+       (rather than in the modules file), skip a bunch of processing
+       which was unnecessary and also broken in most of the cases
+       now tested for by the spacefiles sanity.sh test.
+       * sanity.sh (spacefiles): New test, for specifying filenames
+       (containing spaces, or starting with '-', or starting with '/') to
+       "cvs co".
+
+1999-05-25  Jim Kingdon  <http://www.cyclic.com>
+
+       * client.c (update_entries): Make the old DONT_USE_PATCH code the
+       only code.  This means that if people are still on CVS 1.9
+       servers, then CVS will fall back to transferring entire files.
+       This is better than looking for an external "patch" program which
+       causes no end of troubles (especially on Windows, but someone just
+       posted to info-cvs about a problem with the Solaris patch).  (This
+       change was run by devel-cvs and feedback was positive).
+
+       * subr.c (xmalloc, xrealloc): The new error.c does not support
+       %lu; use sprintf instead.
+
+1999-05-25 Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * sanity.sh (server): Escaped a few more newlines in
+       another awk script.  Solaris awk still don't like 'em.
+
+1999-05-25 Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+       and Jim Kingdon
+
+       * log.c: Remove comment which said "you can delete [this line]"
+       and which stuck around for over 3 years.
+       * sanity.sh (errmsg2 & tagdate): Added tests to prove the
+       current functionality with respect to combining -r and -D.
+
+1999-05-20  Larry Jones  <address@hidden>
+
+       * server.c (pserver_authenticate_connection): Previous changes
+       broke verify_and_exit (reported by Robert Fitzsimons, thanks).
+       * sanity.sh (pserver): New tests pserver-7 and pserver-8 for this.
+
+1999-05-18 Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * sanity.sh (keyword2): Escaped a newline in an awk script.
+       Apparently Solaris awk don't like 'em.
+
+1999-05-18  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (basicc): Allow the behavior whereby unlink(".")
+       succeeds.  Reported by Jeremy Buhler and Pavel Roskin.
+
+1999-05-17  Steve Cameron of Compaq
+
+       * sanity.sh: Modified to no longer use "test -e" for existence
+       test as it has turned out to be not portable enough.  Instead use
+       "test -f", "test -d", etc.
+       [SCO Unixware 7 apparently doesn't always support it -kingdon]
+
+1999-05-17  Jim Kingdon  <http://www.cyclic.com>
+
+       * version.c: Push version number to 1.10.6.1.
+
+       * version.c: Version 1.10.6.
+
+1999-05-16  Jim Kingdon  <http://www.cyclic.com>
+
+       * update.c (patch_file): When we are passing vn_rcs to
+       RCS_checkout, pass vn_tag as well.
+       * sanity.sh (keyword): In test keyword-22, test for the fixed
+       behavior rather than the buggy behavior.  Adjust keyword-23.  Add
+       test keyword-24, to see whether keyword-23 really worked.
+
+1999-05-12  Larry Jones  <address@hidden>
+
+       * sanity.sh (pserver-4, pserver-5): Bogus error messages from
+       non-root initgroups on some 4.4BSD derived systems now show up
+       in different places in the output.
+
+1999-05-12  Jim Kingdon  <http://www.cyclic.com>
+
+       * import.c (import): Don't allow the user to supply a repository
+       directory which takes us out of the cvsroot.
+       * sanity.sh (importc): New tests importc-10 to importc-12, for this.
+
+1999-05-11  Larry Jones  <address@hidden>
+
+       * server.c (serve_notify): Allocate enough memory to hold the
+       "misformed Notify request" message in pending_error_text.
+
+1999-05-11  Jim Kingdon  <http://www.cyclic.com>
+
+       * server.c (switch_to_user): Ignore EPERM from initgroups.  Fixes
+       pserver-4 in testsuite.
+       (pserver_authenticate_connection): Only print "I LOVE YOU" after
+       switch_to_user has come back successfully.
+
+       * server.c (pserver_authenticate_connection): Call error_exit
+       rather than reinventing the wheel ourselves.
+       (switch_to_user): Check for errors from setuid, setgid, and
+       initgroups.  Fix the #ifdef's (the previous code would skip the
+       setuid call if SETXID_SUPPORT).
+
+1999-05-10  Jim Kingdon  <http://www.cyclic.com>
+
+       * server.c (serve_notify), edit.c (notify_do): Check for
+       and reject characters which will get confused with delimiters.
+       * sanity.sh (server): New tests server-7 through server-15 test
+       for this and for other notify behaviors.
+
+       * rcs.c (RCS_tag2rev): Also look for a physical branch with
+       RCS_getversion.
+       * sanity.sh (tagf): Adjust tagf-12 and following tests to test for
+       the fixed behavior rather than the broken behavior.
+
+1999-05-07  Jim Kingdon  <http://www.cyclic.com>
+
+       * server.c (server_notify): Also set last_node to NULL.
+       * sanity.sh (server): New tests server-6 and server-7, for this.
+
+1999-05-05  Jim Kingdon  <http://www.cyclic.com>
+
+       * rcs.c (rcs_internal_lockfile): Remove unused variable lockfile.
+
+       * add.c (add): Look for directories with the same name in a
+       different case where appropriate (analogous to fopen_case).
+       In client code, add comment about how this doesn't do quite
+       everything.
+
+1999-05-03  Jim Meyering  <address@hidden>
+
+       Remove rcs-style ,file, lock files upon signal.
+       * rcs.c (rcs_lockfile): New file-scoped global.
+       (rcs_cleanup): New function (similar to patch_cleanup).
+       (rcs_internal_lockfile): Register rcs_cleanup the first time this
+       function is called.  Rename uses of local `lockfile' to refer to new
+       global, `rcs_lockfile'.  Don't free the lock file name string, now
+       that it's global.
+       (rcs_internal_unlockfile): Rename `lockfile', as above, and carefully
+       free and NULL-out the global, rcs_lockfile.
+
+1999-04-30  Jim Kingdon  <http://www.cyclic.com>
+
+       * rcs.c (annotate_fileproc): Don't cast NULL in passing it to
+       RCS_deltas.  Because there is a prototype in scope the cast is
+       unnecessary (per HACKING's ANSI C or SunOS4 rule), and in fact it
+       was causing failures on UNICOS because it cast to size_t instead
+       of size_t*.  (Thanks to Dean Kopesky for reporting this).
+
+1999-04-29  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh: If invoked without any arguments, print a usage
+       message (thanks to Pavel Roskin for a report/patch).
+
+       * run.c (piped_child): Make the error messages more verbose.
+       (close_on_exec): Reindent.
+       * sanity.sh (devcom3): Several errors are possible in devcom3-9a.
+       Adjust for change to piped_child error message.
+
+1999-04-28  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (devcom3): Add some tests of the CVS/Notify file and
+       disconnected "cvs edit".
+
+       * main.c (opt_usage): Remove -b.
+
+1999-04-20 Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * rcs.c (RCS_delete_revs):  RCS_delete_revs uses an
+       RCS_checkout call to get a new copy of a revision to be
+       used internally after old revisions were deleted and it was
+       performing keyword substitutions.  This munged all the
+       the revisions of the file on the branch containing the
+       deleted revisions and its sub-branches, as the original they
+       were being patched from was incorrect.  Corrected this by
+       passing in "-ko" as an option to RCS_checkout.
+       * sanity.sh (keywordlog):  modified this test to verify the
+       correct behavior of 'cvs admin -o'.
+       [Fixed use of \$ in keywordlog test; added code in RCS_delete_revs
+       to abort on binary file on Windows -kingdon]
+
+1999-04-21  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+       and Jim Kingdon
+
+       * tag.c (tag_check_valid): A bug was causing CVS to spin
+       indefinately when -j:<date> was specified.  CVS now returns
+       an error.
+       * sanity.sh: Added a test (tagdate-12) to test this.
+
+1999-04-19  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (backuprecover): Clean up the repository at the end.
+
+1999-04-18  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * sanity.sh added a test (backuprecover) to test cvs behavior
+       with a repository that is out of date relative to the
+       developer's workspaces.
+       [Fix --keep code; move test to "Repository Storage" section since
+       it doesn't really exercise the diff/diff3 library. -kingdon]
+
+1999-04-13  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * sanity.sh (diff):  Tests to verify correct operation of
+       the --ifdef parameter to cvs diff.
+       [indentation fixed -kingdon].
+
+1999-04-13  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+       for Noah Friedman  <address@hidden>
+
+        * diff.c (diff): Put "--ifdef=" in opts string, not "-D"; the
+        latter is confused by pserver for a date spec.
+
+1999-04-14  Jim Kingdon  <http://www.cyclic.com>
+
+       * fileattr.h: Adjust comments to reflect the official version of
+       the fileattr format now being in cvs.texinfo.
+
+1999-04-05  Jim Kingdon
+
+       * sanity.sh (watch5): Remove nonstandard --keep code.  Don't pass
+       -f to rm when cleaning up (that tends to mask bugs).  Add watch5
+       to list of tests at start.  Add comment explaining why we consider
+       the behavior we test for the right one.  Rename a few tests which
+       had been erroneously named watch6* instead of watch5*.
+       * client.c (update_entries): Add comment with brief discussion of
+       whether there is a better way.
+
+1999-04-05  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * client.c (update_entries):  Only call mark_up_to_date
+       (which deletes the CVS/Base/<filename> file for watched
+       and edited files) on commit.
+       * sanity.sh:  Make sure the CVS/Base/<filename> file for
+       a watched and edited file is not removed on a status or
+       update of a touched/unmodfied file.
+
+1999-03-30  Larry Jones  <address@hidden>
+
+       * client.c (get_responses_and_close), commit.c (commit),
+       update.c (do_update): If the sleep(1) call returns prematurely
+       (due to the way wakeup is scheduled or receiving a signal), do
+       it again.
+
+1999-03-26  Jim Kingdon  <http://www.cyclic.com>
+
+       * server.c (server): Add comment about Gzip-stream vs. RQ_ROOTLESS.
+
+       * sanity.sh (modules3-11b): Adjust exact text of error message to
+       reflect 1999-03-24 change to dirswitch.
+
+1999-03-25  Jim Kingdon  <http://www.cyclic.com>
+
+       * admin.c (admin): Make argument to -e optional, to match the
+       documentation.
+       * sanity.sh (admin-19a-2): Test for this.
+
+       * server.c (serve_root): Update comment about checking for missing
+       Root request.
+
+1999-03-24  Jim Kingdon  <http://www.cyclic.com>
+
+       * server.c (dirswitch): Also check dir here, similar to
+       what server_pathname_check does for other cases.
+       * sanity.sh (files): Adjust files-14 to test for this.
+
+1999-03-24  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+       and Jim Kingdon
+
+       * sanity.sh: added a test (files-13) to test .. indirection
+       in a path and another (files-14) to make sure we still fail
+       out when the '..' indirection takes us into the $CVSROOT
+       directory or beyond.
+
+1999-03-24  Larry Jones  <address@hidden>
+
+       * rcs.c: Change enum constants ADD and DELETE to something less
+       likely to run into conflicts.
+
+1999-03-21  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (tagf): New test, tests for moving a branch tag to a
+       non-branch tag and trying to recover.
+
+1999-03-12  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (branches): Tweak test branches-5 to test the case in
+       which one modifies a file and then branches it.
+
+1999-03-09  John Bley of duke.edu
+
+       * mkmodules.c (filelist): Missed a NULL in this struct (should
+       have 3 members, only had 2).
+
+1999-03-07  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (Index): Rename new test from rm_CVS/Root to rmroot
+       (we don't have a formal rule about funky punctuation in test names
+       but both underscore and a slash is too funky for me :-)).
+       Reindent a few tests which were off.
+
+       * root.c: Remove the sentence which had the improper English;
+       there isn't really a need for that sentence and it isn't
+       particularly accurate any more.
+
+1999-02-27  Derek Price
+       <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+       * sanity.sh:  Added rm_CVS/Root test to test that CVS uses
+       $CVSROOT rather than dumping core when running remotely and
+       the admin file CVS/Root is deleted from the workspace.
+
+       Also, altered a few 'cvs commit' 's in regular expressions to
+       fit the .${PROG} commit. portability syntax.
+
+       * recurse.c:  Stopped CVS from dumping core in the case tested
+       above.
+
+       * root.c:  Fixed somebody's improper english.
+
+1999-02-25  Larry Jones  <address@hidden>
+
+       * sanity.sh (keyword2-12): Use ${QUESTION} instead of ? in the
+       expected result.
+
+1999-02-24  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (keyword2): Restore the original \\\$ instead of $.
+       The latter ends up working due to various kludgy semantics in the
+       shell and regular expressions, but the former is cleaner.
+
+       * sanity.sh (keyword2): Protect keywords against accidental
+       expansion in sanity.sh itself (most occurrences had this, but not
+       all).
+
+1999-02-23  Derek Price  <http://www.cyclic.com>
+       and Jim Kingdon.
+
+       * sanity.sh (keyword2): New test, tests for merging with -kk.
+
+1999-02-22  Jim Kingdon  <http://www.cyclic.com>
+
+       * version.c: Ease version number to 1.10.5.1.
+
+       * version.c: Version 1.10.5.
+
+1999-02-18  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (files): New test, for a relatively obscure spurious
+       "Up-to-date check failed" in client/server.
+
+       * main.c (lookup_command_attribute): Don't check for "history"
+       twice.
+
+1999-02-17  Jim Kingdon  <http://www.cyclic.com>
+           and Hallvard B Furuseth
+
+       * root.c (parse_cvsroot): Rearrange ifdefs to squelch possible
+       warnings about statement not reached.
+
+1999-02-16  Jim Kingdon  <http://www.cyclic.com>
+
+       * recurse.c (start_recursion): If we are skipping the current
+       directory (due to it being from the wrong repository), also adjust
+       the arguments we send to the server accordingly (like we already
+       do for the case in which there is no CVS directory).
+       * sanity.sh (multiroot4): New test, for this.  All these tests had
+       passed locally, but remote multiroot4-12 tests for this fix.
+       (multiroot): Adjust multiroot-diff-1, multiroot-update-2,
+       multiroot-tag-1, multiroot-status-1, multiroot-update-3, and
+       multiroot-log-1 to reflect the cosmetic change this produces (one
+       less "Diffing ." message).
+       (multiroot2): multiroot2-8 likewise.
+
+1999-02-10  Jim Kingdon  <http://www.cyclic.com>
+
+       * tag.c (cvstag): Don't pass SEND_NO_CONTENTS if -c specified.
+       * sanity.sh (tagc): New test, for various tag -c behaviors.
+       Test tagc-6 tests for this fix.
+
+1999-02-09  Jim Kingdon  <http://www.cyclic.com>
+
+       * error.c (error): Rewrite to no longer use vasprintf (see
+       ../lib/ChangeLog for rationale).  Note the slight change in
+       interface - callers which want %8.8s or similar formats need to
+       call sprintf.
+       * lock.c (lock_wait, lock_obtained): Use sprintf.
+
+1999-02-08  Jim Kingdon  <http://www.cyclic.com>
+
+       * rcs.c (RCS_delete_revs): Pass -a to diff_exec.
+       * sanity.sh (binfiles3): New tests binfiles3-9 through
+       binfiles3-13 test for this fix.
+       * sanity.sh (binfiles): New tests binfiles-o4 and binfiles-o5
+       (which don't test this bug, just on general principles).
+
+1999-02-04  Jim Kingdon  <http://www.cyclic.com>
+
+       * lock.c (lock_name): Permissions of directories in LockDir
+       shouldn't depend on the umask.
+       * sanity.sh (lockfiles): Set umask and CVSUMASK, to test for this.
+
+1999-02-01  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (keywordlog): New tests keywordlog-22 and
+       keywordlog-23 test keyword expansion and $Log.  Adjust other tests
+       so that revisions differ more from each other, so this is a
+       better test.
+
+1999-01-29  Jim Kingdon  <http://www.cyclic.com>
+
+       * commit.c (checkaddfile): If options is "", treat it the same as
+       NULL.  Centralize this check, and the one for it starting with
+       "-k", at the start of the function.
+
+       * rcs.c, rcs.h (RCS_setexpand): New function.
+       * admin.c (admin_fileproc): Access keyword expansion field via
+       RCS_getexpand and RCS_setexpand, rather than directly.
+       * commit.c (checkaddfile): When resurrecting, set the keyword
+       expansion mode.
+       * sanity.sh (binfiles3): Adjust tests binfiles3-7 and binfiles3-8
+       for the new behavior.
+
+1999-01-27  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (multiroot3): Add new variant of multiroot3-10 test
+       for RELATIVE_REPOS.  Move multiroot3-11 test out of the
+       conditionals; it works the same for remote or local,
+       RELATIVE_REPOS or no.
+
+       * options.h.in: Make RELATIVE_REPOS the default, as has been
+       announced as a future direction since 1997-10-11.
+       * sanity.sh (multiroot): Tweak multiroot-update-1a and
+       multiroot-update-1b tests to work with either RELATIVE_REPOS or
+       non-RELATIVE_REPOS.
+
+       * sanity.sh (client-9): Don't assume the time zone.
+
+1999-01-26  Jim Kingdon  <http://www.cyclic.com>
+
+       Fix one facet of the "cvs add -kb" re-adding problem (the other
+       known facet is tested for by binfiles3-8).
+       * add.c (add): When re-adding a file, set the keyword expansion
+       as we normally would.
+       * sanity.sh (binfiles3): New test binfiles3-6a tests for this.
+
+1999-01-22  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (rmadd2): New tests, for undoing a commit.
+
+1999-01-21  Eric Mumpower  <address@hidden>
+
+       * sanity.sh (reposmv): Actually modify CVSROOT in current
+       environment when calling functions, rather than trying to achieve
+       the same effect with "CVSROOT=foo functionname". (Many common
+       bourne shells, including those in SunOS and Solaris 2.4-2.7,
+       do not properly handle "ENVVAR=foo command" when "command" is
+       a user-defined shell function rather than an actual executable.)
+
+1999-01-15  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (rcs3): Redirect awk's stdin to /dev/null like all the
+       other awk invocations.  GNU awk seems not to read stdin in this
+       case, but that behavior is hard to reconcile with the Single Unix
+       Spec and some awks don't do it.
+
+       * sanity.sh (binfiles, binfiles2, binfiles3, server): Use the same
+       tr trick as in rcs3.  People don't seem to have been complaining,
+       and this should fix server-4 for HPUX.
+
+1999-01-14  Jim Kingdon  <http://www.cyclic.com>
+
+       * client.c (recv_line): If the line we are reading contains a
+       character which would sign-extend to EOF, don't treat it as end of
+       file.  recv() doesn't report end of file this way and this might
+       fix bugs with 0xff characters.
+
+1999-01-14  Larry Jones  <address@hidden>
+
+       * client.c (recv_line): Handle EOF from server.
+
+       * sanity.sh (importc-8, importc-9): Accept anything in the seconds
+       fields of the timestamps since touch doesn't set it reliably.
+       (This isn't great, but it's better than nothing.)
+
+1999-01-14  Jim Kingdon  <http://www.cyclic.com>
+
+       * run.c (run_exec): Adjust comment about vfork; this isn't the place
+       to get into a treatise about fork performance vs. vfork
+       performance but it isn't quite as simple as whether one has
+       copy-on-write.
+
+1999-01-13  Larry Jones  <address@hidden>
+
+       * sanity.sh (dotest_fail): Handle spurrious output from assert better.
+
+       * sanity.sh (rcs3-4, rcs3-5a): Handle even more variants of the
+       assertion failure message.
+
+1999-01-12  Larry Jones  <address@hidden>
+
+       * sanity.sh (mtfr-3): ls behavior varies wildly on nonexistant files,
+        just use echo instead.
+
+1999-01-11  Jim Meyering  <address@hidden>
+
+       * sanity.sh (mkmodules-temp-file-removal): New test, for this.
+       * mkmodules.c (mkmodules): Remove each `CVSROOT/.#[0-9]*' temporary
+       file that's used to check out files listed in CVSROOT/checkoutlist.
+       Remove extra semicolon at end of line.
+
+1999-01-11  Larry Jones  <address@hidden>
+
+       * sanity.sh (rcs3-5a): Allow for multiple lines of output before the
+       assertion failure message.
+
+       * sanity.sh (lockfiles-6, client-8): Work around bug in HP-UX chmod
+       (doesn't allow anything to follow omitted permissions).
+
+1999-01-09  Jim Kingdon  <http://www.cyclic.com>
+
+       * client.c (set_sticky): Nonfatal error if we can't write it.
+       * sanity.sh (dirs2-8 through dirs2-14): New tests, for this.
+
+       * sanity.sh (rcs3): Write NUL character with tr not awk, in
+       accordance with Single Unix Specification.  Hopefully will fix
+       rcs3-7 for HPUX.  Will not work on SunOS4, but then again neither
+       did the old syntax.
+
+1999-01-05  Jim Kingdon  <http://www.cyclic.com>
+
+       * client.c, update.c: Rename MD5* functions to cvs_MD5* per
+       corresponding change to ../lib/md5.h.
+
+1999-01-03  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (client): Give file1 a predictable mode so that the
+       output in client-9 will not depend on the umask of the user
+       running the tests.
+
+1998-12-29  Jim Kingdon  <http://www.cyclic.com>
+
+       * client.c (client_senddate): Use date_to_internet rather than
+       using our own "5/26/1997 13:01:40 GMT" date format.
+       * main.c (date_to_internet): Check for errors from sscanf.  Always
+       send a four digit year.  Send hours, minutes, and seconds as two
+       digits per RFC822.
+       * sanity.sh (client): New tests client-8 and client-9 test for this.
+
+       * sanity.sh (rcs2): New tests rcs2-6 through rcs2-8 test for fix
+       to lib/getdate.y (before the fix, "100 months" or "8 years" would
+       tend to mean the year 1969, thus the tests would give "cvs update:
+       file1 is no longer in the repository").
+
+1998-12-28  Larry Jones  <address@hidden>
+
+       * entries.c (Register): Return if unable to open log file to avoid
+       referencing the invalid file pointer.
+       * sanity.sh (dirs2-7): With above change, no longer fails.
+       * sanity.sh (rcs3-5a): Another assertion failure message.
+       * sanity.sh (pserver-4, pserver-5): Some 4.4BSD derived systems spit
+       out bogus error messages when initgroups is called as non-root.
+
+1998-12-23  Larry Jones  <address@hidden>
+
+       * sanity.sh (rcs3, dotest_fail): The assertion failure message varies
+       wildly between different systems and the resulting abort call can
+       even result in spurrious output.  Fix the regexp to accept nearly
+       anything containing some kind of assertion failure and ensure that
+       any spurrious output ends up in the output file instead of on the
+       terminal.
+
+1998-12-23  Jim Kingdon  <http://www.cyclic.com>
+
+       * admin.c, checkout.c, commit.c, cvsrc.c, expand_path.c,
+       history.c, ignore.c, import.c, log.c, mkmodules.c, modules.c,
+       myndbm.c, parseinfo.c, rcs.c, remove.c, rtag.c, status.c, subr.c,
+       tag.c, wrapper.c: Cast all char's to unsigned char before passing
+       them to ctype.h functions (isalpha, isgraph, isalnum, isspace,
+       isdigit, isprint, isupper).  Whether using ctype.h is the right
+       thing at all is unclear to me (having the server depend on locale
+       seems wrong, as we don't necessarily have any good way to set the
+       right locale, if there even is such a concept as 'right' locale in
+       this context), but as long as we use ctype.h we might as use it
+       according to the standards (this affects systems where plain char
+       is signed but users supply characters with the 8th bit set).
+       Thanks to Paul Eggert for suggesting this.
+
+1998-12-22  Jim Kingdon  <http://www.cyclic.com>
+
+       * sanity.sh (rcs3): Oops, the earlier fix for srcdir only fixed
+       the non-remote case, not the remote case.  Fix the other occurrence.
+
+1998-12-22  Jim Kingdon
+
+       * sanity.sh (rcs3): The assertion failure message varies slightly
+       depending on whether CVS was built with srcdir != ".".  Fix regexp.
+
+1998-12-21  Jim Kingdon
+
+       * rcs.c (RCS_getdate): Reindent Jim Meyering's change; remove
+       unused variable x_vers.
+
+       * rcs.c: When printing an unexpected character we found in the RCS
+       file, print it in hex rather than as a character (see comment for
+       rationale).
+       * sanity.sh (rcs3): Adjust rcs3-2 and rcs3-7 tests accordingly.
+
+       * sanity.sh (rcs3): New test, for some error handling cases
+       involving parsing RCS files.
+
+1998-12-16  Jim Meyering  <address@hidden>
+
+       * rcs.c (RCS_getdate): Handle the case in which a file is first
+       imported after its initial version has been created.
+       * sanity.sh (import-after-initial): New test for that.
+
+1998-12-17  Jim Kingdon
+
+       * server.c (serve_root): Pserver_Repos only exists if
+       AUTH_SERVER_SUPPORT is defined.
+
+1998-12-12  Jim Kingdon, and Derek R. Price of Stortek.
+
+       * sanity.sh (multiroot): Change + to ${PLUS}.
+
+1998-12-12  Jim Kingdon, and Gary Young of Motorola
+
+       * sanity.sh (admin): In tests admin-13, admin-25, and admin-29,
+       allow 4 digit year in addition to 2 digit year.
+
+1998-12-12  Jim Kingdon
+
+       * sanity.sh (log): New tests log-14a and log-14b test for -rHEAD
+       and for HEAD as (nonexistent) file name.
+
+1998-12-02  Jim Kingdon
+
+       * version.c: Squish version number to 1.10.4.1.
+
+       * version.c: Version 1.10.4.
+
+1998-11-24  Jim Kingdon
+
+       * recurse.c (do_file_proc): Check for errors from RCS_parse.
+       * sanity.sh (rcslib-symlink-7 through rcslib-symlink-10): New
+       tests, test for this.
+
+       * sanity.sh (reposmv-2): Adjust for 22-Nov change to Find_Names.
+
+       * entries.c (Register): If we can't write Entries.Log, make it a
+       nonfatal error.
+       * sanity.sh (dirs2): Test for this fix.
+
+       * sanity.sh (dirs2): Clean up working directory at end of test.
+
+1998-11-23  Jim Kingdon
+
+       * sanity.sh (dirs2): New test, for some more cases involving
+       deleting directories and such.
+
+       * sanity.sh (dirs): Update for yesterday's change in Find_Names
+       error handling.  The error in dirs-4 is fairly different now; in
+       dirs-3 and dirs-3a it is the obvious change.
+
+1998-11-22  Jim Kingdon
+
+       * sanity.sh (release): Move the commments listing "cvs release"
+       tests from modules2-6 to here.
+       * release.c (release): Update comment to reflect "? foo" case.
+
+       * find_names.c (Find_Names): If we can't read the repository, make
+       it a nonfatal error.  Tell the caller whether this happened.
+       (find_rcs): Add comment regarding this behavior.
+       * recurse.c (do_recursion): If Find_Names gives an error, skip
+       the directory and print a message saying so.
+       * sanity.sh (modes3): New test, for this.
+
+1998-11-18  Jim Kingdon
+
+       * rtag.c (rtag_usage), tag.c (tag_usage): Use "-r rev"
+       consistently.
+
+       * sanity.sh (conflicts3): Tests conflicts3-24 through
+       conflicts3-28 test for another case similar to conflicts3-22.
+
+1998-11-14  Jim Kingdon
+
+       * sanity.sh (diff): New test, for now just tests for the "I know
+       nothing" message.
+
+       * sanity.sh (conflicts2-142b7 through conflicts2-142b11): New
+       tests; resurrecting doesn't work from one level up.
+
+       * sanity.sh (mwrap-7): Remote prints the messages in a different
+       order.
+
+1998-11-13  Jim Kingdon
+
+       * tag.c (check_fileproc): Log tag deletions.
+       * rtag.c (check_fileproc): Likewise.
+       * sanity.sh (taginfo-14 through taginfo-18): New tests, for
+       these behaviors.
+
+1998-11-12  Jim Kingdon
+
+       * sanity.sh (mwrap-7): Update for the noexec fix.
+
+       * server.c (server_copy_file): Add comment about noexec.
+
+       * update.c (checkout_file): Handle noexec case involving revbuf
+       and modes.
+       (update_fileproc): In case T_NEEDS_MERGE, let merge_file take care
+       of noexec, so it can tell the user if there would be conflicts.
+       (merge_file): Print "conflicts found in FILE" message
+       regardless of noexec.  Add comment about checking for whether the
+       file already contained the changes, and noexec.
+       * sanity.sh (conflicts-192a): New test, for this.
+
+1998-10-20  Jim Kingdon
+
+       Use the gzip library on the server.  Probably doesn't speed things
+       up as currently implemented, but does avoid hassles in terms of
+       finding an external gzip program.
+       * zlib.c, server.h (gunzip_and_write, read_and_gzip): Now returns
+       whether a fatal error occurred, rather than expecting error (1,
+       ...) to work.
+       * client.c (update_entries, send_modified): Change callers.
+       * server.c (receive_file): Rewrite gzip code to use
+       gunzip_and_write rather than filter_through_gunzip.
+       (server_updated): Likewise, use read_and_gzip rather than
+       filter_through_gzip.
+       * client.c, client.h (filter_through_gzip, filter_through_gunzip),
+       run.c, cvs.h (filter_stream_through_program): Removed; no longer used.
+       * sanity.sh (server): New tests server-4 and server-5 test
+       this feature (note that CVS 1.10 also passes these tests; the
+       behavior is supposed to be unchanged).
+
+1998-10-19  Jim Kingdon
+
+       * sanity.sh (multiroot3): New test, tests for a few more
+       multiroot cases.
+
+       * lock.c (lock_name): Set the permissions on each directory we
+       create to that of the parent directory.
+       * sanity.sh (lockfiles): New chmod and tests lockfiles-7a and
+       lockfiles-7b test for this.  Adjust lockfiles-5 for new text of
+       error message.
+
+1998-10-15  Jim Kingdon
+
+       * server.c (requests): Set RQ_ROOTLESS for "Set".
+       * sanity.sh (info): Also clean up $HOME/.cvsrc.
+       (server): Test that we can send Set before Root (had been tested
+       by crerepos-6b, but only if you ran the info test first).  Tests
+       for this fix.
+
+1998-10-14  Jim Kingdon
+
+       * subr.c (expand_string): Tweak the algorithm so that the size
+       that it allocates is generally a power of two.
+
+1998-10-14  Eivind Eklund and Jim Kingdon
+
+       * commit.c (commit): For the client, don't worry about whether we
+       are root.
+
+1998-10-13  Jim Kingdon
+
+       * server.h (struct request): Change status field to flags and add
+       RQ_ROOTLESS.
+       * client.c (handle_valid_requests, supported_request): Change
+       status to flags.
+       * server.c (requests): Change status to flags.  Add RQ_ROOTLESS.
+       * server.c (server): If not RQ_ROOTLESS, and we haven't gotten a
+       Root request, give an error.
+
+1998-10-12  Jim Kingdon
+
+       * version.c: Slide version number to 1.10.3.1.
+
+       * Version 1.10.3.
+
+       * sanity.sh (modules2-17): Update for 9 Oct 1998 change to
+       update_dirent_proc.
+
+1998-10-11  Jim Kingdon
+
+       * commit.c (checkaddfile, commit_fileproc): A numeric value for
+       'tag' does not mean that we are adding on a branch.
+       * sanity.sh (keywordlog): Adjust this test, to test for this
+       (replaces comment saying we should be doing it).
+       (rmadd): Likewise.
+
+       * sanity.sh (rmadd): New test, tests for various existing
+       behaviors with "cvs ci -r".
+
+1998-10-09  Jim Kingdon
+
+       * update.c (update_dirent_proc): For local CVS, if the directory
+       does not exist in the working directory nor in the repository,
+       just skip it.
+       * sanity.sh (dirs): New tests dirs-3a, dirs-7 and dirs-8 test for
+       this and related behaviors.  Note that the new behavior was also
+       the previous behavior for remote; we are only changing it for local.
+
+       * wrapper.c, cvsrc.c, ignore.c: Add comments about ignoring .cvsrc
+       and friends if we can't find a home directory.
+       * expand_path.c (expand_path): If we can't find the home
+       directory, give an error rather than a coredump (or worse).
+       * login.c (construct_cvspass_filename): Don't use errno in error
+       message; get_homedir doesn't set it.  Add comment about this
+       message.
+
+1998-10-07  Jim Kingdon  <address@hidden>
+
+       * diff.c (diff): Set variables to NULL at the start, and free
+       memory at the end.
+       * sanity.sh (multiroot2): Add tests for this (before the fix,
+       multiroot2-12 would abort with "no more than two revisions/dates
+       can be specified").
+
+1998-10-06  Jim Kingdon  <address@hidden>
+
+       * Makefile.in (installcheck check): Remove references to RCSBIN;
+       they don't do anything now that RCSBIN is ignored.
+
+       * client.c: Clean up horrible confusion about whether stored_mode
+       or stored_mode_valid (or nothing :-)) indicates whether
+       stored_mode is allocated.  Should fix crashes (for example, on NT
+       when the server has renamed multiple files from uppercase to
+       lowercase).
+
+       * sanity.sh (dirs): New tests, tests for some cases involving
+       admins who do surgery on the repository.
+
+1998-10-03  Johannes Stezenbach <address@hidden>
+
+       * vers_ts.c (Version_TS): If UTIME_EXPECTS_WRITABLE, if
+       necessary change the file to be writable temporarily to set its
+       modification time.
+
+1998-10-03  Jim Kingdon  <address@hidden>
+
+       * client.c (handle_error): Add comment about indicating which
+       errors are from the server.
+
+1998-10-01  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (devcom-180): Allow one digit day.
+
+1998-09-30  Jim Kingdon  <address@hidden>
+
+       * main.c (main): Don't call Name_Root if -d specified.
+       * recurse.c (do_recursion, do_dir_proc): Don't check CVS/Root
+       if -d was specified.
+       * import.c (import): Indentation fix.
+       * sanity.sh (multiroot): Update for this change.
+       (reposmv): New test, tests for this.
+
+1998-09-28  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (multiroot2): New test, tests some nested directory
+       cases.
+
+1998-09-25  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (multiroot): Change a few comments which said modules
+       when they meant directories.
+
+1998-09-25  Jim Meyering  <address@hidden>
+
+       * sanity.sh (devcom-180): Add 0-9 to the range of characters allowed
+       in hostname regexp.
+
+1998-09-25  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (log2): New test log2-7a tests for one error handling
+       case.  Add a comment about another.
+
+1998-09-24  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Change crerepos test back to :ext: (for several
+       reasons; see comments).
+
+1998-09-24  Noel Cragg  <address@hidden>
+
+       * sanity.sh (rcslib-symlink-5, rcslib-symlink-6): new tests to
+       check the operation of "tag" when there are symlinks in the
+       repository.
+
+       * rcs.c (RCS_checkin): remove old code that resolved the symlink
+       and call resolve_symlink instead.
+       (RCS_rewrite): call resolve_symlink before doing anything else to
+       make sure we're operating on the file and not the symlink.
+
+       * subr.c (resolve_symlink): new routine -- resolves a symbolic
+       link chain to its destination.
+       * cvs.h: add prototype.
+
+       * sanity.sh (basica-6.2, basica-6.3): changed match expressions to
+       reflect new diff output.
+
+       * rcs.c (make_file_label): generate labels for files that include
+       the pathname so that output from "cvs diff" is useable by patch.
+       Looks like I came up with the mods as Andy Piper
+       <address@hidden>; his patch was on the Cyclic unofficial
+       patches page.
+
+       * sanity.sh: change remote access method from ext to fork.  This
+       results in a significant speed improvement when running the
+       testsuite.  The ext method on my machine (i586 120MHz Linux 2.0.35
+       with TCP wrappers installed) runs in 450% of the time of the local
+       method while the fork method runs in only 150% of the time of the
+       local method!  Yow!  Am I SWAPPING yet?!
+       (crerepos-6a, crerepos-6b): change to reflect different error
+       messages for fork method.
+       (modes-15): same.
+
+       * client.c (connect_to_forked_server): new routine.
+       (start_server): call the above when method is fork_method.
+
+       * root.c: add a new method named "fork".  This method uses the
+       remote protocol, but does so by forking a "cvs server" process
+       directly rather than doing "rsh host cvs server" (for example).
+       This new method has few advantages for day-to-day use, but has
+       three important benefits for debugging:
+
+         1) Most secure installations these days don't allow rsh access.
+         With this new method, we can still test the remote protocol on
+         these machines because we don't need to be able to make a local
+         TCP connection.
+
+         2) Even if installations allow rsh access, they almost always
+         have TCP wrappers to check permissions by IP/hostname.  This
+         causes a short delay for every connection.  For invocations from
+         the command line, this doesn't matter much, but it adds up to a
+         significant amount of time when running the testsuite.
+
+         3) On machines that can't (or do not usually) provide rshd
+         access (I'm thinking of WNT/W95 in particular), we can now run
+         tests of the remote protocol using this method.  Indeed, we can
+         run remote protocol tests on any machine that has an
+         implementation of piped_child().
+
+       (parse_cvsroot): handle new method.
+       (error_exit, xstrdup, isabsolute): new stub functions to use when
+       compiling root.c with the DEBUG option.
+       (main): fix a few typos.
+       * cvs.h (CVSmethod): add fork_method.
+
+       * server.c (create_adm_p): use Emptydir as the placeholder
+       directory instead of "." to avoid problems with "cvs update -d" et
+       al.
+
+1998-09-22  Noel Cragg  <address@hidden>
+
+       * sanity.sh (devcom-180): fixed typo in regexp.
+
+       * main.c (main): remove need_to_create_root and related code
+       (including CVS_IGNORE_REMOTE_ROOT environment variable).  The
+       current implementation (just removed) of rewriting the contents of
+       the CVS/Root file isn't desirable for a number of reasons:
+
+         1) Only the top-level CVS/Root directory is updated.  If we're
+         really interested in pointing our WD at another CVSROOT, we
+         should have a separate command.
+
+         2) With the new multiroot mods, we don't ever want to rewrite
+         CVS/Root files in the way the removed code did.  Consider:
+
+           cvs -d repository1 co a
+           cd a
+           cvs -d repository2 co b
+            cvs -d repository2 update b
+
+         The update command would rewrite the contents of a/CVS/Root to
+         the incorrect value.  Bad.  We then wouldn't be talking to the
+         correct repository for files in a.
+
+         3) The removed code seems to be a quick hack to support working
+         directories checked out from multiple repositories.  With the
+         CVS_IGNORE_REMOTE_ROOT variable set, one could perform commands
+         as in example 2, above, without worring about updating CVS/Root
+         files.  While in pre-1.10.1 recursive commands wouldn't handle
+         that working directory hierarchy, one could use commands like
+         "cvs foo -l" instead.  While not great, this allows you (with a
+         lot of manual interaction) to have a multiroot WD.  Since we now
+         have multiroot mods checked in, we don't need this code.
+
+       (lookup_command_attribute): while we don't need the
+       CVS_CMD_USES_WORK_DIR flag anymore (since it only was supporting
+       the need_to_create_root code), I'm leaving it in.  It may come in
+       handy at some later date.
+
+1998-09-18  Jim Kingdon  <address@hidden>
+
+       * version.c: Advance version number to 1.10.2.1.
+
+       * Version 1.10.2.
+
+1998-09-13  Jim Kingdon  <address@hidden>
+
+       * client.c: Refuse to Copy-file to another directory
+       * sanity.sh (client): New test, tests for this.
+
+       * edit.c (editors_fileproc), watch.c (watchers_fileproc): Use
+       cvs_output rather than writing to stdout.
+       * sanity.sh (devcom): Use dotest for tests 178, 180, and 183
+       (tests that we preserve existing behavior on "cvs editors").
+
+       * commit.c (check_fileproc): Don't allow commits in Emptydir.
+       * sanity.sh (emptydir-8): Test for this change in behavior.
+
+       * sanity.sh: Add some compatibility tests to TODO comments at end.
+
+1998-09-10  Jim Kingdon  <address@hidden>
+
+       * wrapper.c (wrap_add): Remove obsolete comment about -m.
+
+       * server.c (server_updated): Check for error from CVS_UNLINK.
+
+1998-09-09  Jim Kingdon  <address@hidden>
+
+       * server.c (serve_root): Allocate with malloc, not xmalloc.
+
+       * root.c (set_local_cvsroot): Move memory allocation from here...
+       * server.c (serve_root): ...to here.  Fixes error handling.
+
+       * root.c (parse_cvsroot): Don't call check_root_consistent;
+       parse_cvsroot is only used for local and client.
+       * root.c (set_local_cvsroot): Move check_root_consistent
+       functionality from here...
+       * server.c (serve_root): ...to here.  Fixes error handling.  Also
+       made the error more explicit, while I am at it.
+       * server.c (Pserver_Repos): Now static.
+       * cvs.h: Don't declare it.
+       * root.c (check_root_consistent): Removed; no longer needed.
+       * sanity.sh (pserver): New test, tests for this behavior and some
+       other basic pserver stuff.
+
+       * update.c (merge_file): Use cvs_output for "already contains the
+       differences" message.  Found this one when I actually observed the
+       out-of-order bug in Real Life(TM).
+
+1998-09-09  Jim Kingdon
+
+       * find_names.c (find_dirs): Make sure to zero errno before
+       going around the loop again.
+       * find_names.c (find_rcs): Make sure to set save_errno.
+       (thanks to Alexandre Parenteau for reporting both problems).
+
+1998-09-09  Jim Kingdon  <address@hidden> and Michael Pakovic
+
+       * edit.c (notify_do): Only free line if it is not NULL.
+
+1998-09-07  Jim Kingdon  <address@hidden>
+
+       * cvs.h: dirs_sent_to_server should not be inside
+       AUTH_SERVER_SUPPORT (reported by both Richard Levitte and Murray
+       Bishop, thanks).
+
+       * lock.c, cvs.h: New variable lock_dir.
+       * parseinfo.c (parse_config): New option LockDir.
+       * lock.c (lock_name): New function, abstracts out lock file naming
+       and also supports LockDir.
+       * lock.c (lock_simple_remove, Reader_Lock, write_lock, set_lock):
+       Call it (6 places, to create/remove read/write/master locks).
+       (Lock_Cleanup): Refuse to reenter this function.
+       * sanity.sh (lockfiles): New test, tests for this feature.
+
+1998-09-03  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (multiroot): Expect ${TESTDIR} in output instead of
+       assuming it is /tmp/cvs-sanity (thanks to Mark D. Baushke of Cisco).
+       Clean up working directory when done (fixes apparent thinko).
+
+       * server.c (create_adm_p): Fix one "return" which didn't return a
+       value.
+       (dirswitch): Check for errors from create_adm_p.
+
+       * sanity.sh: Set LC_ALL rather than just LC_COLLATE.
+
+Wed Sep  2 02:30:22 1998  Jim Kingdon  <address@hidden>
+
+       * version.c: Bump version number to 1.10.1.1.
+
+       * Version 1.10.1.
+
+1998-09-01  Jim Kingdon  <address@hidden>
+
+       Administrative note regarding Noel's changes to allow one to
+       switch from one CVS root to another in a single command: The
+       ChangeLog entries for the changes which Noel just checked in
+       appear for 1998-09-01, 1998-08-28, 1998-08-25, 1998-08-19, and
+       1998-08-18, rather than being all together.
+
+       * main.c (set_root_directory): Fix whitespace.
+       (main): Nuke new -m option and just have that message controlled
+       by -t.
+       * server.c (server): Revert the CVS_SERVER_SLEEP code back the way
+       it was in CVS 1.10.  Attaching to the parent process is relatively
+       boring (you can just run "cvs server" under a debugger instead),
+       but connecting to the child process is what the old code was for.
+       * recurse.c, server.c: Remove DEBUG_NJC code.
+
+1998-09-01  Noel Cragg  <address@hidden>
+
+       * server.c (do_cvs_command): add another environment variable,
+       CVS_SERVER_SLEEP2, after forking to pause the program so one can
+       attach a debugger.
+
+       * sanity.sh (crerepos): clean up crerepos-18 now that multiroot
+       works in this case.
+       (multiroot): finalize tests for local vs. remote operation.
+
+       * recurse.c (start_recursion): near the beginning, save the list
+       of directories to spoof as command-line arguments, if necessary.
+       Use that list near the end and call send_file_names to send those
+       arguments to the server.
+       (do_argument_proc): removed, since we call send_file_names now.
+
+       * main.c (main): re-initialize dirs_sent_to_server on each pass
+       through the loop for each CVSROOT.
+
+       * cvs.h: add proto for global variable which keeps track of which
+       directories have been sent to the server when in client mode.
+
+       * client.c (is_arg_a_parent_or_listed_dir): new function.
+       (arg_should_not_be_sent_to_server): new function.  Tries to decide
+       whether the given argument should be sent to the server, based on
+       the current CVSROOT and the list of directories sent to the
+       server.
+       (send_repository): add the directory name to the list of
+       directories sent to the server.
+       (send_file_names): call arg_should_not_be_sent_to_server.
+
+       * add.c (add): switch the order of send_files and send_file_names
+       to make multiple repository support possible.  send_files needs to
+       create a list of directories being requested so that
+       send_file_names can decide which command-line arguments to send to
+       the server for the given current CVSROOT.
+       * admin.c (admin): same.
+       * commit.c (commit): same.
+       * diff.c (diff): same.
+       * edit.c (editors): same.
+       * log.c (cvslog): same.
+       * rcs.c (annotate): same.
+       * remove.c (cvsremove): same.
+       * status.c (cvsstatus): same.
+       * tag.c (cvstag): same.
+       * update.c (update): same.
+       * watch.c (watch_addremove): same.
+       (watchers): same.
+
+1998-08-31  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Remove "debug" function; it was apparently checked
+       in accidentally by Norbert Kiesel's change.
+
+1998-08-31  Norbert Kiesel  <address@hidden>
+
+       * release.c (release): modify last patch to release so that
+       save_cwd is called only once and restore_cwd is always called when
+       neccessary.  Also fixed a tiny memory leak.
+
+       * sanity.sh (release): added some more tests for "cvs release"
+       including a test with two dirs and a "no" for the first one (which
+       fails without the above patch).
+
+1998-08-28  Noel Cragg  <address@hidden>
+
+       * sanity.sh (crerepos-18): add new comment and change test
+       slightly to support multiroot.
+       (multiroot): add more tests.
+
+       * server.c (create_adm_p): new function.
+       (dirswitch): call create_adm_p.  Modify the code to always write a
+       new CVSADM_REP file, since create_adm_p might have put a
+       placeholder there and our value is guaranteed to be correct.
+       (server): move the CVS_SERVER_SLEEP check here so we can debug
+       things at an earlier stage.
+
+       * recurse.c (start_recursion): add large comment about the ideal
+       solution to the "Argument xxx" problem.
+
+       * main.c (main): move position of debugging comment for -m flag.
+
+       * diff.c (diff): clear a static variable.
+
+       * client.c (send_file_names): check to see if we should send this
+       argument to the server based on the contents of the appropriate
+       CVSADM directory.  This avoids "nothing known about foo" messages
+       and problems with duplicate modules names in multiple
+       repositories.
+       (send_a_repository): change method of calculating toplevel_repos
+       to support multiple CVSROOTs.
+       (start_server): clear some static variables.
+
+1998-08-28  Jim Meyering  <address@hidden>
+
+       * sanity.sh (basicc-8, basicc-11): Use `.*' instead of explicit
+       `Operation not permitted'.  Solaris2.5.1 gets a different error:
+       `Invalid argument'.
+
+1998-08-26  Eric M. Hopper
+
+       * sanity.sh: Set LC_COLLATE to "C".
+
+1998-08-25  Noel Cragg  <address@hidden>
+
+       * sanity.sh (multiroot): new set of tests to check the behavior of
+       multiroot.
+
+       * diff.c (diff): set options value to NULL after freeing to reset
+       the state for the next time around.
+
+1998-08-25  Jim Kingdon  <address@hidden>
+
+       Fix problems with trying to rename an open file:
+       * rcs.c, rcs.h (RCS_setattic): New function.
+       * commit.c (remove_file, checkaddfile): Call it.
+
+1998-08-24  Jim Kingdon  <address@hidden>
+
+       * release.c (release): Use save_cwd and restore_cwd to get back to
+       where we started, rather than hoping that CVS_CHDIR ("..") will do
+       something useful.  This removes the need for most of
+       release_delete, so remove that function and inline what is left.
+       * sanity.sh (basicc): Adjust tests for this fix, also some tests
+       with multiple arguments to "cvs release" (in the non-"-d"-case, it
+       would seem like the old code would CVS_CHDIR into directories and not
+       CVS_CHDIR back, but I'm not going to investigate this and it
+       should be a moot point with this fix.).
+
+       * sanity.sh (basicc): Add tests for a serious bug in "cvs release
+       -d .".
+
+       More error handling fixes:
+       * ignore.c (ignore_files): Check for errors from opendir and
+       readdir.
+       * find_names.c (Find_Names): Check for errors from find_rcs.
+       (find_rcs, find_dirs): Comment error handling better; also return
+       an error if we got one from readdir.
+       * filesubr.c (deep_remove_dir): Also check for errors from readdir.
+       * import.c (import_descend): Print message on error from opendir
+       or readdir.
+       * commit.c (remove_file): Check for errors from CVS_MKDIR and
+       CVS_RENAME.
+       (remove_file): No need to remove the file in the temporary
+       directory; server.c now informs time_stamp_server of what is going
+       on via CVS/Entries rather than a file with a kludged up timestamp.
+       * client.c, entries.c, login.c, logmsg.c, mkmodules.c, patch.c,
+       remove.c, update.c: Check for errors from unlink_file.
+       * mkmodules.c (write_dbmfile, rename_dbfile, rename_rcsfile):
+       Check for errors from fclose, CVS_RENAME, and CVS_STAT.
+       * mkmodules.c (checkout_file): Clarify error handling convention.
+       * mkmodules.c (mkmodules): Call checkout_file accordingly.
+       * entries.c (Entries_Open): Check for errors from fclose.
+
+1998-08-21  Ian Lance Taylor  <address@hidden>
+
+       * import.c (import): Output suggested merge command using
+       cvs_output_tagged rather than just cvs_output.  Don't put
+       CVSroot_cmdline in the log file.
+       * client.c (importmergecmd): New static struct.
+       (handle_mt): Handle +importmergecmd tag.
+       * sanity.sh (import): Use an explicit -d in importb-2, to test
+       whether it is reported in the suggested merge command.
+
+1998-08-20  Ian Lance Taylor  <address@hidden>
+
+       * sanity.sh (import): Rewrite tests to use dotest.
+
+1998-08-20  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Add comments about binary files and cvs import.
+
+1998-08-19  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (importc): Use ${username} in one place where I had
+       missed it.
+
+       Make import -d work client/server:
+       * client.c, client.h (client_process_import_file): Take new
+       argument, for whether -d is specified, and send Checkin-time
+       request if it is set.
+       * import.c (import_descend): Pass it.
+       * main.c, cvs.h (date_to_internet): New function.
+       * server.c (server_modtime): Call date_to_internet.
+       * server.c (serve_checkin_time): New function.
+       (requests): Add "Checkin-time" request.
+       (serve_modified): If it was sent, set the timestamp in the
+       temporary directory.
+       * import.c (import): If the client sends a -d option, complain.
+       (import): For the server, always use the timestamps from the temp
+       directory.
+       (import): Don't send a -d option to the server.
+       * sanity.sh (importc): Add tests for import -d.
+
+Wed Aug 19 15:19:13 1998  Larry Jones  <address@hidden>
+
+       * sanity.sh (unedit-without-baserev-5): use ${DOTSTAR} instead
+       of .* since we expect to match multiple lines.
+
+1998-08-19  Ian Lance Taylor  <address@hidden>
+
+       * cvs.h (CVSroot_cmdline): Declare.
+       * root.c (CVSroot_cmdline): Define.
+       * main.c (main): Set CVSroot_cmdline if the -d option is used.
+       * import.c (import): If CVSroot_cmdline is not NULL, then mention
+       an explicit -d option in the suggested merge command line.
+
+Wed Aug 19 00:28:50 1998  Noel Cragg  <address@hidden>
+
+       * recurse.c (do_dir_proc): don't muck with CVS/Root directories
+       when running in server mode.
+       (do_recursion): same.
+
+       * main.c (main): add the command-line option `m' to help debug the
+       multiroot environment; it prints out the value of CVSROOT for each
+       iteration through the main loop.  Also, changed the main loop so
+       that it gets executed only once when running in server mode (the
+       server will only deal with a single CVSROOT).
+
+       * recurse.c (do_recursion): change default for
+       PROCESS_THIS_DIRECTORY to true; we should always process a
+       directory's contents unless there's an existing CVS/Root file with
+       a different root than the current root to tell us otherwise.
+       (do_dir_proc): same.
+
+Tue Aug 18 14:30:59 1998  Noel Cragg  <address@hidden>
+
+       * recurse.c (do_recursion): check the current value of CVS/Root
+       and add it to our list of CVSROOTs if it doesn't exist.  Decide
+       whether or not to process files in this directory based based on
+       the value of CURRENT_ROOT.
+       (do_dir_proc): same.
+
+       * main.c: add two new globals -- root_directories and current_root
+       -- which keep track of the values of CVSROOT we've seen and which
+       value of CVSROOT we're currently processing.
+       (main): put the main loop for stepping through cvsroot values
+       here, since we might need to send command-specific arguments for
+       every unique non-local cvsroot.  Moved blocks of code around so
+       that one-time initializations happen first (outside the loop) and
+       the other stuff happens inside the loop.
+       (set_root_directory): helper function.
+
+       * cvs.h: add prototypes for root_directories and current_root, two
+       new globals for keeping track of multiple CVSROOT information.
+
+1998-08-18  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Don't assume that the shell leaves $^ unexpanded in
+       an unquoted here-document (suggested by Bart Schaefer to help when
+       zsh is the shell).
+
+1998-08-17  Ian Lance Taylor  <address@hidden>
+
+       * commit.c (checkaddfile): Don't call fix_rcs_modes.
+       (fix_rcs_modes): Remove.
+
+1998-08-16  Jim Kingdon  <address@hidden>
+
+       * create_adm.c (Create_Admin): Don't condition traces on
+       SERVER_SUPPORT; SERVER_SUPPORT shouldn't do (much of) anything
+       independent of server_active.
+
+       * sanity.sh (binfiles3): New test, for yet another binary file
+       bug (sigh).  Thanks to Jason Aten for reporting this one.
+
+1998-08-15  Jim Kingdon  <address@hidden>
+
+       * rcscmds.c (call_diff_write_output): Update to reflect new
+       calling convention for the write_output callback.
+
+1998-08-15  Jim Meyering  <address@hidden>
+
+       * update.c (merge_file): Warn about failed unlink when not due
+       to ENOENT.
+
+       * server.h (CLIENT_SERVER_STR): New macro
+       * create_adm.c (Create_Admin): Use it.
+       * entries.c (Scratch_Entry, Register): Use it.
+       * filesubr.c (copy_file, xchmod, rename_file, unlink_file): Use it.
+       * history.c (history_write): Use it.
+       * modules.c (do_module): Use it.
+       * no_diff.c (No_Difference): Use it.
+       * run.c (run_popen): Use it.
+       * server.c (server_register): Use it.
+
+1998-08-14  Jim Meyering  <address@hidden>
+
+       * hardlink.c (lookup_file_by_inode): Use existence_error rather than
+       comparing errno to ENOENT directly.
+
+       * client.c (copy_a_file): Unlink destination before doing copy.
+       * sanity.sh (join-readonly-conflict): New test for this -- it would
+       fail only in client/server mode.
+
+       * sanity.sh (rcsmerge-symlink-4): Don't use `test -L', it's not
+       portable.  Instead, match against the output of `ls -l'.
+       (dotest tag8k-16): Simplify tag-construction code and at the same
+       time, avoid using expr's `length' and `substr' operators.  Not
+       all versions of expr support those.
+
+1998-08-14  Jim Kingdon  <address@hidden>
+
+       * version.c: Bump version number to 1.10.0.1.
+
+Thu Aug 13 11:15:24 1998  Noel Cragg  <address@hidden>
+
+       * version.c: Change version number to 1.10 and name to `Halibut'.
+
+       * sanity.sh (rcslib): new tests to check behavior of symlinks in
+       the repository.
+
+Wed Aug 12 15:39:38 1998  Noel Cragg  <address@hidden>
+
+       * main.c (lookup_command_attribute): the `annotate' command
+       shouldn't require access to the repository.  Add comment about
+       commands that do not use the working directory.
+
+Mon Aug 10 10:26:38 1998  Noel Cragg  <address@hidden>
+
+       * version.c: Change version number to 1.9.30.
+
+Thu Aug  6 17:44:50 1998  Noel Cragg  <address@hidden>
+
+       * server.c (serve_rdiff): change the name of the command (for
+       error reporting, etc.) from "patch" to "rdiff."
+       (serve_remove): rename from "cvsremove" to "remove."
+
+       * main.c (lookup_command_attribute): the `rdiff' command shouldn't
+       require write access to the repository.
+
+1998-08-06  David Masterson of kla-tencor.com
+       and Jim Kingdon
+
+       * commit.c (commit_filesdoneproc): Don't call strlen ("CVSROOT")
+       from within the assert statement.  Apparently HP's cc compiler on
+       HPUX 10.20 has trouble with that.
+
+1998-08-06  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_checkin): When adding branch, if there is a lock on
+       the branchpoint owned by someone else, leave it alone.  This
+       restores CVS 1.9 (RCS 5.7) behavior, fixing a core dump.
+       * sanity.sh (reserved): New tests reserved-16 through reserved-19
+       test for this fix.
+
+1998-08-05  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (unedit-without-baserev): Use ${QUESTION} not "?".
+       This makes it work with GNU expr 1.12 as well as 1.16.
+
+Sun Aug  2 20:27:44 1998  Noel Cragg  <address@hidden>
+
+       * mkmodules.c: add comment about TopLevelAdmin for the initial
+       contents of CVSROOT/config.
+
+1998-07-29  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_checkin): Only try to call xreadlink if HAVE_READLINK
+       is defined.
+
+Tue Jul 28 19:33:08 1998  Noel Cragg  <address@hidden>
+
+       * version.c: Change version number to 1.9.29.
+
+       * rcs.c (RCS_checkin): add code to follow symbolic links in the
+       repository.
+
+Sun Jul 26 05:14:41 1998  Noel Cragg  <address@hidden>
+
+       * This set of changes reverts the code to pre-1.9.2 behavior and
+       does not create CVS directories at top-level (except for the
+       obvious "cvs co .").  Added a new configuration option to switch
+       between 1.9 and 1.9.2 behavior.
+
+       * recurse.c (do_argument_proc): new function.
+       (start_recursion): in the case that we've done a command from
+       top-level but have no CVS directory there, the behavior should be
+       the same as "cvs <cmd> dir1 dir2 dir3...".  Make sure that the
+       appropriate "Argument" commands are sent to the server by calling
+       walklist with do_argument_proc.
+
+       * client.c (call_in_directory): only create the top-level CVS
+       directory when we're checking out "." explicitly.  The server will
+       force creation of this directory in all other cases.
+
+       * checkout.c (checkout_proc): only generate the top-level
+       directory when the TopLevelAdmin=yes.  Also send a message to the
+       client to do the same.
+
+       * parseinfo.c (parse_config): handle TopLevelAdmin option.  Set
+       top_level_admin.
+
+       * main.c: add new variable top_level_admin.
+       * cvs.h: add extern definition for above.
+
+       * sanity.sh: since we're reverting to pre 1.9.2 behavior for
+       top-level CVS directories, I needed to make changes to a bunch of
+       tests that made assumptions about said directories.
+       (preamble): make sure to add read and execute access to everything
+       in TMPDIR before removing, since some tests make things read-only.
+       (basicb-1a, basicb-1b, basicb-9a, basicb-9b): use dotest_fail
+       because these tests check for the non-existant top-level CVS
+       directory.
+       (basicc-3, emptydir-6, emptydir-7, crerepos-6): use "rm -rf" so it
+       won't complain when trying to remove the non-existant top-level
+       CVS directory.
+       (106.5): remove imported-f2-orig.tmp.
+       (modules2-10, emptydir-4, abspath-1ba, abspath-1bb): cd into the
+       directory where files exist before using the "add" command so cvs
+       can find CVSROOT in CVS/Root.
+       (cvsadm-2): look at a different CVS/Repository file, since the
+       top-level one doesn't exist.
+       (taginfo-3): create the directory in the repository directly
+       rather than relying on the fact that the top-level CVS directory
+       was created in a previous test.
+       (serverpatch-6): update first-dir explicity, rather than relying
+       on the non-existant top-level CVS/Entries file.
+       (crerepos-18): look at CVS/Repository in a subdirectory rather
+       than in the non-existant top-level CVS directory.
+       (toplevel): add code to set TopLevelAdmin=yes.
+       (toplevel2): new tests -- same as toplevel, but TopLevelAdmin=no.
+
+1998-07-21  Jim Meyering  <address@hidden>
+
+       * rcs.c (RCS_checkout): Hoist frees of rev and value.
+       Warn and return 1 in several cases rather than exiting via
+       `error (1, ...'.  The latter could abort a multi-file commit
+       in mid-stream, leaving stale locks in the repository.
+
+1998-07-16  Jim Kingdon  <address@hidden>
+
+       * build_src.com (rcscmds.c): Also look for include files in
+       [-.diff], just like Ian's 1998-06-18 change to Makefile.in
+
+1998-07-14  Jim Kingdon  <address@hidden>
+
+       * tag.c (pretag_proc), rtag.c (pretag_proc): Don't pass RUN_REALLY
+       to run_exec.  This means that taginfo does not get executed if the
+       global -n option is specified.  Which makes it like loginfo, -i,
+       -e, -o, -t, -u in modules, editinfo, and verifymsg and unlike
+       commitinfo.  The old behavior was pretty bad in the sense that it
+       doesn't provide any way to log only the tags which actually
+       happen.
+       * sanity.sh (taginfo): New tests taginfo-11 to taginfo-13, for this.
+
+1998-07-12  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (ann-id): Write the test so that it tests for the
+       current (buggy) behavior.
+
+       * sanity.sh (taginfo): Also clean up cvsroot/first-dir.
+
+1998-07-12  Jim Meyering  <address@hidden>
+
+       * sanity.sh (ann-id): New (currently failing) test for bug in how
+       rcs keywords are expanded in the output of `cvs annotate'.
+
+1998-07-12  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (taginfo): Write the TESTDIR into the script rather
+       than having the script look at the environment.  This means that
+       it will work if TESTDIR is set by sanity.sh as well as if
+       sanity.sh finds TESTDIR in the environment.
+
+1998-07-11  Jim Kingdon  <address@hidden>
+
+       * tag.c (check_fileproc): Calculate the revision to be tagged the
+       same way that tag_fileproc does.
+       * sanity.sh (taginfo): New tests, test for this (before this fix,
+       brtag had said 1.1 not 1.1.2.1).
+
+1998-07-10  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (unedit-without-baserev): Also clean up "2" directory.
+
+1998-07-08  Jim Kingdon  <address@hidden>
+
+       * edit.c (unedit_fileproc): If the Baserev file is missing, don't
+       get the working file from CVS/Base.  The previous code could get
+       you version 1.1 of the working file and put 1.2 in CVS/Entries.
+       * sanity.sh (unedit-without-baserev): New tests test for this.
+
+1998-07-02  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (unedit-without-baserev): Move the test itself to be
+       in the same order as in the "tests" variable.
+
+1998-07-02  Ian Lance Taylor  <address@hidden>
+
+       * rcscmds.c: Don't include <stdarg.h> or <vasprintf.h>.  Don't
+       declare vasprintf.
+       (call_diff_printf_output): Remove.
+       (call_diff_stdout_callbacks): Don't initialize printf_output
+       field--it has been removed from the interface.
+       (call_diff_file_callbacks): Likewise.
+
+1998-07-01  Jim Meyering  <address@hidden>
+
+       * edit.c (unedit_fileproc): Handle the case in which base_get
+       returns a NULL baserev.  That happens when a file being `unedit'ed
+       exists in the CVS/Base directory, but isn't listed in the CVS/Baserev
+       file.  The one case I've seen had no Baserev file at all.  The symptom
+       (if you're lucky) is a segmentation fault upon unedit.  If you use
+       SunOS4.1.4 for which printf prints NULL pointers as `(null)', your
+       unedit command will complete normally, but it will have corrupted
+       your CVS/Entries file and a subsequent update may result in an
+       assertion failure, a core dump, and a stale lock in the repository.
+       * sanity.sh (unedit-without-baserev): New test for this.
+
+1998-07-01  Andy Mortimer of aeat.co.uk
+       and Jim Kingdon  <address@hidden>
+
+       * server.c (server_updated): Use a prototype if we are using them
+       for declarations.
+
+1998-06-29  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (commit-readonly): Protect keyword against expansion
+       in sanity.sh itself.  Keep the keyword in the file which we check
+       in (or else this fails to test for the RCS_checkout change).
+
+1998-06-27  Jim Meyering  <address@hidden>
+
+       * rcs.c (RCS_checkout): If opening the local workfile fails due to
+       lack of write access, try to chmod the file and retry the open.
+       Before, a commit could fail part way through merely because the
+       open to rewrite with newly expanded rcs keywords would fail.  It's
+       easy to make this happen if you use `cvs -r' or CVSREAD and you
+       apply a patch to one of your read-only source files -- patch
+       preserves the read-only setting for the file and your next commit
+       will fail after committing that file, but before rewriting
+       (checking out) your working copy.
+       * sanity.sh (commit-readonly): New test for this.
+
+1998-06-25  Jim Kingdon  <address@hidden>
+
+       * update.c (patch_file): Update comments regarding context diffs
+       to reflect diff library.
+
+1998-06-23  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (modules4): Add tests for reversing the order of the
+       "!first-dir/sdir" and "first-dir".
+
+1998-06-23  Jim Kingdon  <address@hidden>
+       and Dave address@hidden
+
+       * sanity.sh (modes2): Touch the file before chmod'ing it.
+
+1998-06-21  Ian Lance Taylor  <address@hidden>
+
+       * update.c (merge_files): Revert changes of 1998-06-19.  Instead,
+       register a merged file with a dummy time stamp.  Only set
+       last_register_time if we need to.
+       (join_file): Likewise.  Always register a merged file, not just
+       when the merge fails.
+
+1998-06-21  Jim Kingdon  <address@hidden>
+
+       * call_diff_write_output, call_diff_printf_output,
+       call_diff_flush_output, call_diff_write_stdout, call_diff_error,
+       call_diff_stdout_callbacks, call_diff_file_callbacks): Re-indent.
+
+1998-06-19  Ian Lance Taylor  <address@hidden>
+
+       * update.c (merge_file): Make sure the time stamp of the file is
+       different from the time stamp we register in the Entries file.
+       (join_file): Likewise.
+
+1998-06-18  Ian Lance Taylor  <address@hidden>
+
+       * rcscmds.c: Include <stdio.h>.  Include either <stdarg.h> or
+       <varargs.h>.  Declare vasprintf.
+       (call_diff_write_output): New static function.
+       (call_diff_printf_output): New static function.
+       (call_diff_flush_output): New static function.
+       (call_diff_write_stdout): New static function.
+       (call_diff_error): New static function.
+       (call_diff_stdout_callbacks): New static variable.
+       (call_diff_file_callbacks): New static variable.
+       (call_diff): Don't sleep.  Use a callback structure when calling
+       the diff library.
+       (call_diff3): Likewise.
+
+       * rcscmds.c: Include diffrun.h.
+       (call_diff, call_diff3): Pass NULL callback parameter.
+       (diff_run, diff3_run): Don't declare.
+       * Makefile.in (rcscmds.o): New target, to use -I for diff
+       directory.
+       (zlib.o): Depend upon zlib.h.
+
+1998-06-09  Mike address@hidden
+
+       Make it compile with Sun's bundled K&R C compiler:
+       * rcs.c (count_delta_actions): Change to static to match
+       declaration.
+       * client.c (handle_wrapper_rcs_option): Rename error label to
+       handle_error to avoid clash with function name.
+
+1998-06-09  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_delete_revs): If we are trying to delete all
+       revisions, give an error rather than assertion failed.
+       * sanity.sh (basicb): New tests basicb-o* test for this.
+
+1998-06-04  Jim Kingdon  <address@hidden>
+
+       * add.c (add): Only send "Directory" requests if we need to.
+
+1998-06-02  Assar Westerlund  <address@hidden>
+
+       * client.c: Check for HAVE_GSS_C_NT_HOSTBASED_SERVICE rather than
+       assuming that GSS_C_NT_HOSTBASED_SERVICE is a macro.
+       * server.c: Likewise.
+
+1998-06-02  Jim Kingdon  <address@hidden>
+
+       * fileattr.c (fileattr_read): Check for NULL return from strchr.
+       * sanity.sh (devcom3): New test devcom3-10 checks for this.
+
+1998-06-01  Assar Westerlund  <address@hidden>
+       and Ian Lance Taylor  <address@hidden>
+
+       * client.c: If HAVE_GSSAPI_H, include <gssapi.h>.  Only include
+       <gssapi/gssapi.h> if HAVE_GSSAPI_GSSAPI_H.  Only include
+       <gssapi/gssapi_generic.h> if HAVE_GSSAPI_GSSAPI_GENERIC_H.
+       (GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
+       (connect_to_gserver): Use GSS_C_NT_HOSTBASED_SERVICE instead of
+       gss_nt_service_name.
+       * server.c: Same header file changes.
+       (GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
+       (gserver_authenticate_connection): Use GSS_C_NT_HOSTBASED_SERVICE
+       instead of gss_nt_service_name.
+
+1998-06-01  Jim Meyering  <address@hidden>
+
+       * sanity.sh (tag8k): Add a test for the 1998-05-02 rcs.c bug fix.
+
+1998-05-26  Jim Kingdon  <address@hidden>
+
+       * rcs.c (annotate): Call tag_check_valid like the other functions
+       which have a -r option.
+       * sanity.sh (ann): New test ann-14 tests for this.
+
+1998-05-24  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (importc): New tests importc-5 through importc-8 test
+       for a (fairly obscure) regression from CVS 1.9.
+
+1998-05-23  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (modules2): Add comment listing cvs release tests.
+       (info): New test info-cleanup-0 tests "cvs -n release".
+
+       * rcs.c (rcsbuf_getid): Remove semicolon at end of #undef.  I'm
+       kind of surprised that compilers accepted this at all, but
+       removing it squelches a warning for some compilers.
+
+       * version.c: Change version number to 1.9.28.1.
+
+       * Version 1.9.28.
+
+1998-05-22  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_cmp_file): Check for errors from CVS_FOPEN.  This
+       restores the CVS 1.9 behavior (fatal error if we can't open the
+       file), and corrects an apparent oversight in Ian's 13 Apr 1997
+       change.
+       * sanity.sh (modes2): New test, tests for this.
+
+1998-05-22  Ian Lance Taylor  <address@hidden>
+
+        * server.c (server_updated): Correct test for whether to unlink
+        the file.
+
+1998-05-20  Jim Kingdon  <address@hidden>
+
+       * wrapper.c (wrap_add): Disable -t/-f wrappers at least until the
+       serious bug can be fixed.
+
+1998-05-15  Jim Kingdon  <address@hidden>
+
+       * checkout.c (checkout): Call server_pathname_check on the
+       argument to "cvs co -d".
+       * server.c (server_pathname_check): Add comment about how we could
+       be handling absolute pathnames.
+       * sanity.sh (abspath): Rewrite the tests which run "cvs co -d /foo"
+       for remote, to reflect this.
+
+       * sanity.sh (abspath): Also do the "cannot rename" work-around for
+       abspath-7d.
+
+1998-05-13  Jim Kingdon  <address@hidden>
+
+       * commit.c (commit_filesdoneproc): Free admin_dir when done with it.
+
+1998-05-13  Jim Meyering  <address@hidden>
+
+       * sanity.sh (editor): Change bogus sed command, `s/^/x&/g', to `s/^/x/'.
+       The former exercised a bug in GNU sed-3.01-beta3.
+       (emptydir-8): Add `Rebuilding administrative file database' message,
+       since now it does that.
+       * commit.c (commit_filesdoneproc): Pass only the admin directory
+       pathname to mkmodules.
+       Remove #if 0, now that it's fixed.
+
+       * status.c (cvsstatus): Rename from `status' to avoid shadowing
+       lots of locals and parameters by the same name.
+       * server.c (serve_status): Update caller.
+       * main.c (cmds[]): Update table entry.
+       * cvs.h: Update prototype.
+
+       * commit.c (commit_filesdoneproc): Remove trailing blanks.
+       (commit) [CLIENT_SUPPORT]: Remove unnecessary (and local-shadowing)
+       declaration of `err'.
+       Rename global `tag' to `saved_tag' to avoid overshadowing `tag'
+       parameters of three functions.
+       Rename global `message' to `saved_message' to avoid overshadowing
+       `message' parameter of a function.
+       Rename global `ulist' to `saved_ulist' and move dcl up with others.
+
+1998-05-12  Jim Kingdon  <address@hidden>
+
+       * commit.c (commit_filesdoneproc): #if 0 the new code until it can
+       be fixed.
+
+       * commit.c (commit_filesdoneproc): Add comment explaining last
+       change.
+
+1998-05-12  Jim Meyering  <address@hidden>
+
+       * commit.c (commit_filesdoneproc): Call mkmodules not just when
+       committing a file directly under CVSROOT, but also when committing
+       files in subdirectories of CVSROOT.
+
+1998-05-08  Jim Meyering  <address@hidden>
+
+       * filesubr.c (xreadlink):  NUL-terminate the symbolic link name.
+       Use a much smaller initial buffer length.
+       Test errno only if readlink fails.
+       Use xstrdup then free the original link name so we don't waste space.
+
+1998-05-02  Jim Meyering  <address@hidden>
+
+       * rcs.c (rcsbuf_getword): Fix off-by-one error that would result in
+       an abort (the first one in rcsbuf_getkey) when operating on on some
+       ,v files with over 8192 bytes of tag and branch info.
+
+1998-05-04  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (ann): New tests ann-12 and ann-13 test for specifying
+       a numeric branch.
+
+1998-05-02  Jim Kingdon  <address@hidden>
+
+       * rcs.c: Add comments about getting rid of rcsbuf_getid,
+       rcsbuf_getword, and rcsbuf_getstring.
+
+       * sanity.sh (abspath): Revise the workarounds to deal with exit
+       status.
+
+1998-04-30  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (abspath): Work around the "cannot rename" bug.
+
+1998-04-27  Jim Kingdon  <address@hidden>
+
+       * classify.c (Classify_File): Add comments about checking whether
+       command name is "update".
+
+1998-04-22  Jim Kingdon  <address@hidden>
+
+       * version.c: Change version number to 1.9.27.1.
+
+       * Version 1.9.27.
+
+1998-04-20  Jim Kingdon  <address@hidden>
+
+       (This diff was run by devel-cvs and everyone seemed to like it).
+       * diff.c (diff_file_nodiff): Make HEAD mean the head of the branch
+       which contains the sticky tag, not the sticky tag itself.
+       * rcs.c, rcs.h (RCS_branch_head): New function.
+       * sanity.sh (head): Update for this changed behavior.
+
+1998-04-19  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Move emptydir tests from basicb to new test emptydir.
+       This is because we now need a module definition to create Emptydir;
+       "co -d" doesn't cut it anymore.
+
+1998-04-17  Petri Virkkula
+
+       * server.c (mkdir_p): Ignore EROFS error (like for EACCES).
+
+1998-04-16  Jim Kingdon  <address@hidden>
+
+       * checkout.c (checkout_proc): Don't create directories above the
+       last one specified in "co -d".
+       (build_dirs_and_chdir): Revert Noel's change of 17 Feb 1998.
+       (struct dir_to_build): New field just_chdir.
+       (build_dirs_and_chdir): Test it.
+       * sanity.sh (abspath): New tests abspath-7* test for a bug which
+       we fix, in which CVS would create bogus "D/////" entries in
+       CVS/Entries.
+       (abspath): Revise abspath-3* tests to test for the fact that we no
+       longer create directories above the last one specified in "co -d".
+       I checked that CVS 1.9 gives an error on this, so changing this
+       behavior back should be OK.
+       (cvsadm-2d3): Likewise (also checked CVS 1.9 for this case).
+       (cvsadm-2d3d): Likewise (also checked CVS 1.9 for this case).
+       (cvsadm-2d{4,5,6,7,8}, cvsadm-N2d{3,4,5,6,7,8}): Adjust for new
+       behavior (same case as cvsadm-2d3).
+       (cvsadm-2d{4,5,6,7,8}d, cvsadm-N2d{3,4,5,6,7,8}d): Remove test
+       (same case as cvsadm-2d3d).
+       (cvsadm): For remote, skip most these tests.
+       (abspath): When cleaning up, delete mod1 and mod2 rather than mod1
+       twice (longstanding bug, apparently only becomes visible if you
+       run the tests in a certain order).
+
+1998-04-14  Wilfredo Sanchez  <address@hidden>
+
+       * rcs.c: variable "lockfile" was being referenced after being
+       free'd.  Bad.  Moved the free() call down.
+
+1998-04-12  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (rcs): Add test for annotate and the year 2000.
+
+       * server.c (do_cvs_command): If there are partial lines left when
+       the child process is done, send them along.
+       * sanity.sh (rcs, rcs2): Enable all tests for remote; tests for
+       this fix.
+
+1998-04-11  Jim Kingdon  <address@hidden>
+
+       * client.c (client_senddate): Pass SDATEFORM not DATEFORM to
+       sscanf.  This fixes a Y2K bug.
+
+       * history.c (history, select_hrec): Change since_date from time_t
+       to RCS format.  Use the usual machinery (in particular, Make_Date
+       and client_senddate) so that it will work on VMS too.
+       * main.c, cvs.h (date_from_time_t): New function.
+       * sanity.sh (history): New test, to test that this didn't break
+       anything (also tests client_senddate fix).
+
+1998-04-11  Norbert Kiesel  <address@hidden>
+
+       * server.c (cvs_output_binary): Shut up "gcc -Wall" by removing
+       unnecessary else if test.
+       * server.c (check_password): Fix uninitialized memory read if
+       shadow passwords are used.  Also added some comments.
+       * rcs.c (RCS_checkout): Make sure to call chown with -1 for uid or
+       gid if they should not be changed
+
+1998-04-10  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (rcs2): New test, tests for various Y2K cases.
+       * rcs.c (getdelta): Value for "state" keyword is optional (bug
+       discovered incidentally in writing rcs2 test).
+
+1998-04-09  Jim Kingdon  <address@hidden>
+
+       * filesubr.c, cvs.h (link_file): Remove; no longer used.
+
+1998-04-08  Jim Kingdon  <address@hidden>
+
+       * recurse.c (do_dir_proc): Restore update_dir rather than a
+       computation which appears to, but does not necessarily, restore it
+       (reported by various people; this fix is from Greg Hudson).
+       * sanity.sh (importc): New test, tests for this fix.
+
+1998-03-27  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_lock): If the revision is already locked, give an
+       error rather than dumping core.
+       * sanity.sh (reserved): New test reserved-13c tests for this.
+
+1998-03-25  Loren J. Rittle
+
+       * import.c (add_rev): Rewrite to use RCS_FLAGS_KEEPFILE option
+       of RCS_checkin() to avoid damage to imported files instead of
+       externally undoing damage after the fact.  The side effect is
+       that callers of add_rev() may now incrementally walk the
+       entries of the current directory without seeing gratuitous
+       changes to the directory structure (under at least one file
+       system under at least one OS).
+
+1998-03-18  Jim Kingdon  <address@hidden>
+
+       * error.c (error): Save and restore errno.  Should fix test case
+       conflicts3-23 on SCO 5.0.2.  Reported by Steve Cameron.
+
+       * sanity.sh (admin): Rename admin-26-o* to admin-26-*; the "o"
+       stands for "cvs admin -o".  Add comment about length of tests.
+       Use ${PLUS}.
+
+1998-03-05  Dan Wilder <address@hidden>
+
+       * Fix problem with cvs admin in which -ntag:branch
+       option associated tag with the branch's head revision.
+       Should have used branch number.  Entailed in this fix,
+       the following.
+
+       * Add new functions "RCS_exist_rev", "RCS_exist_tag",
+       "RCS_tag2rev", and "RCS_valid_rev" to rcs.c.  RCS_tag2rev
+       is similar to RCS_gettag, but does less interpretation.
+
+       * Plug a small memory leak.
+
+       * Add tests admin-26 through admin-29 to sanity.sh,
+       to test "cvs admin -n".
+
+1998-03-17  Samuel Tardieu  <address@hidden>
+
+       * server.c (server_register): protect dereferencing timestamp in
+       the trace message when it is null, to avoid a segmentation fault.
+
+1998-03-16  Jim Kingdon  <address@hidden>
+
+       * options.h.in (MY_NDBM): Rewrite the comment explaining this
+       option.  It was not clear to everyone who "my" referred to, for
+       example.
+
+       * hardlink.c (list_linked_files_on_disk): Remove unused variables
+       err and p.
+       (list_linked_files_on_disk): Add comment about memory allocation
+       of return value.
+       * rcs.c (rcsbuf_getword): Shut up gcc -Wall with a "return 0".
+       (RCS_checkin): Remove unused variable fullpath.
+       * sanity.sh (hardlinks): Remove comment about spurious warnings;
+       the warnings are gone.
+
+1998-03-12  Tim Pierce  <address@hidden>
+
+       New functions for parsing and writing hardlink fields.
+       * rcs.c [PRESERVE_PERMISSIONS_SUPPORT] (puthardlink_proc): New
+       function.
+       (putdelta) [PRESERVE_PERMISSIONS_SUPPORT]: Use it.
+       (rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): New functions.
+       (getdelta): Call them, storing `hardlinks' field in vnode->hardlinks.
+       (RCS_reparsercsfile): When setting rdata->desc, xstrdup value
+       rather than rcsbuf_valcopying it (due to changes in how getdelta
+       handles keys and values in newphrases).
+
+       * sanity.sh (hardlinks): Use uglier filenames.  Checking out
+       hardlinked files no longer produces the same spurious diagnostics,
+       so fix that test.
+       (hardlinks-2.3): Renamed from hardlinks-2.2 (duplicate test name).
+
+       New infrastructure for managing hardlink lists internally...
+       * hardlink.c, hardlink.h (list_linked_files_on_disk,
+       compare_linkage_lists, find_checkedout_proc): New functions.
+       * rcs.h (struct rcsversnode) [PRESERVE_PERMISSIONS_SUPPORT]: New
+       member `hardlinks'.
+       * update.c (special_file_mismatch): Get hardlinks from
+       vp->hardlinks instead of from vp->other_delta.
+       * rcs.c (free_rcsvers_contents): Comment about freeing hardlinks
+       member.
+       (RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Get hardlinks from
+       vers->hardlinks list instead of vers->other_delta.
+
+       ... and removed obsolete code from earlier revs.
+       * hardlink.c, hardlink.h (list_files_linked_to,
+       cache_hardlinks_proc, list_files_proc, set_hardlink_field_proc):
+       Removed.
+       * hardlink.h: Removed `links' member from hardlink_info struct.
+       * commit.c (commit): Remove the call to cache_hardlinks_proc.
+       (check_fileproc) [PRESERVE_PERMISSIONS_SUPPORT]: Removed reference
+       to hlinfo->links.
+       * hardlink.c (update_hardlink_info): Same.
+       * update.c (get_linkinfo_proc): Same.
+
+       * rcs.c (RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Use
+       vp->hardlinks and find_checkedout_proc to find recently-updated
+       files that may be hardlinked.
+       * update.c (special_file_mismatch): Use List * structures and
+       compare_linkage_lists for rev1_hardlinks and rev2_hardlinks.
+
+1998-03-16  Larry Jones  <address@hidden>
+
+       * server.c (check_password): If shadow passwords are supported but no
+       entry is found in the shadow file, check the regular password file.
+
+1998-03-07  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Rename permissions test to perms since that is what
+       each of its individual tests are named.
+       * sanity.sh (perms symlinks hardlinks): Change CVSROOT to
+       CVSROOT_DIRNAME where appropriate.
+       (perms symlinks hardlinks): Disable/adjust the meat of the tests for
+       remote.
+       (symlinks): Link to ${TESTDIR}/fumble rather than
+       /fumble/mumble/grumble.  We shouldn't be making assumptions about
+       what might exist in random directories outside ${TESTDIR}.
+       * hardlink.c (cache_hardlinks_proc): Add comment about trimming
+       whitespace.
+
+1998-03-07  Tim Pierce  <address@hidden>
+
+       * rcs.c (RCS_checkout): Negation bug when checking out symlinks:
+       existence_error should be !existence_error.
+       * sanity.sh (permissions symlinks hardlinks): New tests, for
+       PreservePermissions.
+
+1998-03-04  Jim Kingdon  <address@hidden>
+
+       * version.c: Change version number to 1.9.26.1.
+
+       * Version 1.9.26.
+
+       * entries.c, cvs.h (Entries_Open): New argument update_dir; use it
+       in error message.
+       * add.c, checkout.c, client.c, find_names.c, import.c, recurse.c,
+       update.c: Pass it (as NULL except in call_in_directory).
+       * entries.c (Subdirs_Known): Just return if there is no CVSADM
+       directory (as in subdir_record).
+       * sanity.sh (conflicts3): New tests conflicts3-20a and
+       conflicts3-23 test for these fixes.
+
+       * commit.c (commit): Only set up hardlist if preserve_perms.
+
+       * commit.c, import.c, no_diff.c, parseinfo.c, rcs.c, rcscmds.c,
+       update.c: Omit the preserve_perms code if
+       PRESERVE_PERMISSIONS_SUPPORT is not defined.  Much of that code
+       won't even compile on non-unix systems.
+
+       * hardlink.c, hardlink.h: Use the 'standard' copyright (as found
+       in server.c).
+       * commit.c, rcs.c: Minor whitespace changes to Tim's submission.
+       * commit.c (check_fileproc), update.c (get_linkinfo_proc): Remove
+       unused variable delta.
+       * hardlink.c (set_hardlink_field_proc), update.c
+       (get_linkinfo_proc): Return a value rather than falling off the
+       end of the function.
+
+1998-03-02  Tim Pierce  <address@hidden>
+
+       * update.c (special_file_mismatch): Compare the hard links of the
+       two revisions.
+
+       * rcs.c (RCS_checkout):
+
+       * hardlink.c, hardlink.h: New files.
+       (hardlink_info): New struct.
+       (hardlist, working_dir): New variables.
+       (list_files_proc, cache_hardlinks_proc, set_hardlink_field_proc,
+       lookup_file_by_inode, update_hardlink_info, list_files_linked_to):
+       New functions.
+
+       * Makefile.in (SOURCES): Add hardlink.c.
+       (OBJECTS): Add hardlink.o.
+       (HEADERS): Add hardlink.h.
+       * commit.c: Include hardlink.h.
+       (commit): Save the working directory before recursing.  Walk the
+       hardlink list, calling set_hardlink_field_proc on each node.
+       (check_fileproc): Add each file's link information to hardlist.
+       * rcs.c: Include hardlink.h.
+       (RCS_checkin): Save list of hardlinks in delta node.
+       (RCS_checkout): Look up the file's `hardlinks' delta field, and
+       see if any of the files linked to it have been checked out
+       already.  Link to one of those files if so.
+       * update.c: Include hardlink.h.
+       (get_linkinfo_proc): New function.
+       (do_update): Extra recursion to collect hardlink info.
+       (special_file_mismatch): Reparse the RCS file if necessary.
+
+       fsortcmp is now used by several files, so let's make it extern.
+       * hash.c, hash.h (fsortcmp): New function.
+       * find_names.c (fsortcmp): Removed.
+       * lock.c (fsortcmp): Removed.
+
+1998-03-03  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (conflicts3): New tests conflicts3-14a,
+       conflicts3-14b, and conflicts3-21, conflicts3-22 test that we can
+       skip over a working directory with a CVSADM directory missing.
+
+1998-02-26  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (conflicts3): Tests conflicts3-16 and conflicts3-20
+       test that we include update_dir in messages.  Rename test
+       conflicts3-14 to fix typo.
+
+Sun Feb 22 23:14:25 1998  Steve Cameron  <address@hidden>
+       and Ian Lance Taylor  <address@hidden>
+
+       * update.c (tag_update_dir): New static variable.
+       (update_dirent_proc): If no tag or date were specified when
+       creating a subdirectory, use the tag and/or date of the parent
+       directory.
+       (update_dirleave_proc): If we set the tag and/or date in
+       update_dirent_proc, reset them when we leave the directory.
+       * sanity.sh (branches2): New set of tests for above patch, and
+       related behaviour.
+
+Sun Feb 22 13:31:51 1998  Ian Lance Taylor  <address@hidden>
+
+       * commit.c (lock_RCS): Don't call RCS_rewrite.
+
+       * update.c (patch_file): If the revision is dead, let
+       checkout_file handle it.
+       * sanity.sh (death2): Add test for above patch: add
+       death2-10a, death2-10b, death2-13a, and adjust
+       death2-{2,4,5,11,14,diff-11,diff-12,19}.
+
+       * cvs.h (RCS_FLAGS_KEEPFILE): Define.
+       * rcs.c (RCS_checkin): If RCS_FLAGS_KEEPFILE is set in the flags
+       parameter, don't unlink the working file.
+       * checkin.c (Checkin): Don't copy the file.  Instead pass
+       RCS_FLAGS_KEEPFILE to RCS_checkin, and only check the file out
+       again if it has changed.
+
+1998-02-21  Jim Kingdon  <address@hidden>
+
+       * rcs.c (rcs_internal_unlockfile, RCS_rewrite): Don't assume errno
+       means anything just because ferror is set.
+
+Sat Feb 21 20:02:24 1998  Ian Lance Taylor  <address@hidden>
+
+       * Makefile.in (clean): Change "/bin/rm" to "rm".
+
+       * buffer.c (buf_append_buffer): Correct typo in comment.
+       * rcs.c (RCS_putadmin): Likewise.
+
+Fri Feb 20 17:53:06 1998  Ian Lance Taylor  <address@hidden>
+
+       * rcs.c (rcs_internal_unlockfile): Pass errno when calling error
+       because ferror is true.
+
+1998-02-20  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (abspath): Don't assume that we can't write to /; this
+       is the kind of thing that is sure to break sooner or later
+       (especially on Windows).
+
+       * sanity.sh: Add summary of which modules tests are which (at
+       "modules").  Move cvsadm, abspath, and toplevel next to modules.
+       Add comments to clarify the structure (such as it is).
+
+Fri Feb 20 12:47:14 1998  Larry Jones  <address@hidden>
+
+       * admin.c (admin_fileproc): Better fix for -b.
+
+       * rcs.c (RCS_whatbranch): Back out previous change.
+       (RCS_getversion): Ditto.
+       (RCS_setbranch): Treat an empty revision string like a null pointer.
+
+1998-02-18  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_whatbranch): Fix indentation.
+
+       * patch.c (patch_fileproc): Check for errors from fclose; check
+       for errors from fopen properly.
+
+Wed Feb 18 16:03:37 1998  Larry Jones  <address@hidden>
+
+       * admin.c (admin_fileproc): Convert -b argument from symbolic name
+       to revision number before storing in the RCS file.
+       * rcs.c (RCS_whatbranch): Allow numeric as well as symbolic revision.
+       (RCS_getversion): Take advantage of above.
+       * sanity.sh (admin): Add/revise/renumber admin-10c, admin-11a,
+       admin-12, and admin-12a to check above.
+
+       * commmit.c (lock_RCS): Minor clean-up.
+
+       * sanity.sh (abspath-6a): Don't depend on the sepcific contents of
+       CVSROOT, it depends on which other tests have been run.
+
+Wed Feb 18 01:56:04 1998  Ian Lance Taylor  <address@hidden>
+
+       * rcs.c (putsymbol_proc): Use putc and fputs rather than fprintf.
+       (RCS_putadmin): Don't call RCS_symbols if the symbols have not yet
+       been converted to a list.
+
+       * rcs.c (rcsbuf_cache, rcsbuf_cache_open, rcsbuf_cache_close): New
+       static functions to avoid closing and reopening the RCS file.
+       (cached_rcs, cached_rcsbuf): New static variables.
+       (RCS_parse): Call rcsbuf_cache_close.  Don't call fclose.
+       (RCS_parsercsfile): Likewise.
+       (RCS_parsercsfile_i): Call rcsbuf_cache rather than
+       rcsbuf_close.  Call fclose on error.  Remove comment about
+       inefficiency of opening file twice.
+       (RCS_reparsercsfile): Call rcsbuf_cache_open rather than fopen and
+       rcsbuf_open.  Call rcsbuf_cache rather than rcsbuf_close and
+       fclose.
+       (RCS_fully_parse, RCS_checkout, RCS_deltas): Likewise.
+       (RCS_rewrite): Likewise.
+       (RCS_checkin): Call rcsbuf_cache_close.
+
+       * rcs.c (RCS_copydeltas): Fix code which checks for an extra
+       newline in buffered data.
+
+       * rcs.c (rcsbuf_getkey): Save an indirection by using start rather
+       than *valp when trimming trailing whitespace from value.
+
+       * rcs.c (rcsbuf_get_buffered): New static function.
+       (RCS_copydeltas): After we have done all the required special
+       actions, and inserted any new revision, just copy the file bytes
+       directly, rather than interpreting all the data.
+       (count_delta_actions): New static function.
+       * sanity.sh (rcs): Add rcs-6a and rcs-6b to commit a new branch
+       revision, to force CVS to interpret all the data, rather than just
+       copying it.  Adjust rcs-5 to add a branch tag.  Adjust rcs-8a and
+       rcs-14 for the changes created by rcs-6b.
+
+Tue Feb 17 18:34:01 1998  Ian Lance Taylor  <address@hidden>
+
+       * sanity.sh (cvsadm, diffmerge2): Remove directories at the end of
+       the test.
+
+       * import.c (expand_at_signs): Rewrite to use memchr and fwrite
+       rather than putc.
+
+       Rewrite RCS file reading routines for speed:
+       * rcs.c (struct rcsbuffer): Define.
+       (rcsbuf_open, rcsbuf_close, rcsbuf_getkey, rcsbuf_getrevnum,
+       rcsbuf_fill, rcsbuf_valcopy, rcsbuf_valpolish,
+       rcsbuf_valpolish_internal, rcsbuf_ftell): New static functions.
+       (getrcskey, getrcsrev, getrevnum): Remove.
+       (many functions): Change to use new rcsbuf functions instead of
+       old getrcskey/getrcsrev/getrevnum functions.
+       (RCS_reparsercsfile): Add rcsbufp parameter.  Change all callers.
+       (RCS_deltas): Add rcsbuf parameter.  Change all callers.
+       (getdelta): Change fp parameter to rcsbuf parameter.  Change all
+       callers.
+       (RCS_getdeltatext): Add rcsbuf parameter.  Change all callers.
+       (RCS_copydeltas): Add rcsbufin parameter.  Change all callers.
+       * rcs.h (RCS_reparsercsfile): Update declaration.
+       * admin.c (admin_fileproc): Update calls to RCS_reparsercsfile for
+       new parameters.
+
+1998-02-17  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (toplevel): Also clean up second-dir (not a new
+       bug, but triggered by running tests as "toplevel abspath").
+
+       * create_adm.c (Create_Admin): Just print update_dir to tell the
+       user where we are; not the whole xgetwd.  Cleaner than
+       Noel's change (which also had problems in errno handling).
+       * sanity.sh (toplevel-12): Update accordingly.
+
+Tue Feb 17 02:32:21 1998  Noel Cragg  <address@hidden>
+
+       [These mods make "checkout" work with "-d /absolute/pathname"
+       once again.]
+
+       * checkout.c (checkout_proc): the -d flag on the command line
+       should override the -d flag in the modules file if the latter is
+       an absolute path.  The loop that assembles the list of directories
+       to build has been reorganized slightly to prepare for rewriting
+       with last_component rather than assuming '/' as a path separator.
+       Also added to that loop was some code to handle absolute
+       pathnames.
+       (build_dirs_and_chdir): add a new argument that tells this routine
+       whether or not to check before it creates and populates
+       directories or not.
+
+       * filesubr.c (last_component): return the top-level directory when
+       asked about the top-level directory.
+
+       * sanity.sh (toplevel-12): change test to reflect the new style of
+       this error message.
+
+       * create_adm.c (Create_Admin): include the directory in the error
+       message.
+
+1998-02-16  Jim Kingdon  <address@hidden>
+
+       * diff.c (diff_fileproc), import.c (import, add_rcs_file), rcs.c
+       (RCS_cmp_file): Don't ignore errors from CVS_UNLINK and fclose.
+
+       * patch.c (patch_fileproc): Check for errors from fclose; if we
+       get -1 from getline check for end of file vs. error.
+
+       * rcs.c (RCS_checkout): Comment return value (0/1, not -1).
+       * commit.c, diff.c, mkmodules.c, patch.c, rcs.c, update.c: Update
+       to match this convention.  Don't suppress errors based on
+       quiet or really_quiet variables.
+
+       Fix a longstanding bug which also makes stamps-8kw in make
+       remotecheck work again (it stopped working with Ian's 8 Feb 98
+       checkin):
+       * client.c, client.h (change_mode): If new argument respect_umask
+       is set, then honor the umask.
+       * client.c, server.c: Update callers.
+
+       Cleanups to Tim's checkin:
+       * rcs.c (RCS_checkout): Use existence_error not ENOENT.
+       * commit.c (checkaddfile): Remove comment about whether we want to
+       check for errors from fclose; there is no reason not to.
+       * rcs.c (RCS_checkout), update.c (special_file_mismatch): sscanf
+       on %ld requires an unsigned long, not a dev_t.
+       * update.c (special_file_mismatch): Remove unused variable
+       check_devnums.
+       * mkmodules.c (config_contents): Between two settings, use a blank
+       line not a "#" line.
+
+1998-02-15  Tim Pierce  <address@hidden>
+
+       [This is the code as submitted.  I'll be checking in my cleanups
+       shortly.  This work sponsored by Abbott Labs.  -kingdon]
+
+       Support for device special files, symbolic links, user and group
+       ownerships, and file permissions.
+
+       * parseinfo.c: (parse_config): Handle new config variable
+       `PreservePermissions'.
+       * mkmodules.c (config_contents): Add new PreservePermissions var.
+
+       * rcs.c, rcs.h (preserve_perms): New variable.
+       (RCS_checkout, RCS_checkin): Support for newphrases `owner',
+       `group', `permissions', `special', `symlink'.
+       (RCS_checkout): If `workfile' and `sout' are symlinks, remove them
+       before attempting to open them for writing.
+       * import.c (add_rcs_file): Support for newphrases.  Do not attempt
+       to read data from special files or symlinks.  Error message
+       `cannot fstat' is now `cannot lstat'.
+
+       New metrics for deciding when two files are different:
+
+       * update.c, cvs.h (special_file_mismatch): New function.
+       (merge_file, join_file): Call it.
+       * no_diff.c (No_Difference): Call it.
+
+       * filesubr.c (xcmp): Consider files to be different if they are of
+       different types; if they are symlinks which link to different
+       pathnames; or if they are devices with different device numbers.
+       Error message is now `cannot lstat'.
+       * rcs.c (RCS_cmp_file): Use `xcmp' to compare files, simplifying
+       the special handling for nonregular files.
+
+       * rcscmds.c (diff_exec, diff_execv): If asked to obtain diffs for
+       special files, report no differences.
+
+       Miscellaneous changes to make special file support possible:
+
+       * commit.c (fix_rcs_modes): Don't attempt to `fix' permissions on
+       a symlink.
+
+       * import.c (add_rcs_file): Don't try to close fpuser if it was
+       never opened (e.g. when operating on a symlink).
+
+       * filesubr.c, cvs.h (isdevice, xreadlink): New functions.
+       * filesubr.c (copy_file): Handle special files and symlinks.
+       (xchmod): Do nothing if `preserve_perms' is set.
+
+       * commit.c (checkaddfile): Replace `copy_file (DEVNULL, ...)' with
+       fopen/fclose calls.  Copy_file no longer attempts to read data
+       from device files.
+
+       * filesubr.c (islink): Use CVS_LSTAT, not lstat.
+       * vers_ts.c (time_stamp, time_stamp_server): Use CVS_LSTAT, not stat,
+       to get symlinks right.
+       * subr.c (get_file): Same.  Don't attempt to read from special
+       files or symlinks.
+
+       * classify.c (Classify_File): Doc fix.
+
+Fri Feb 13 17:07:32 1998  Eric Mumpower  <address@hidden>
+       and Ian Lance Taylor  <address@hidden>
+
+       Fix some file system ordering problems found on Irix 6.4:
+       * sanity.sh (basic2): Use dotest_sort for test 56.
+       (importb): Use dotest_sort for tests importb-1 and importb-2.
+       (head): Use dotest_sort for test head-1.
+
+Thu Feb 12 15:15:33 1998  Jim Kingdon  <address@hidden>
+
+       * import.c (add_rcs_file): If add_logfp is NULL, don't call fperror.
+
+11 Feb 1998  Andy Piper
+
+       * server.c (cvs_output_binary): Use OPEN_BINARY not _O_BINARY.
+
+Mon Feb  9 18:34:39 1998  Jim Kingdon  <address@hidden>
+
+       Tweaks to Ian's checkin:
+       * update.c (merge_file): Remove comment about sending file to
+       client before the message.  It doesn't apply to this code any more
+       (it does apply to checkout_file, but I'm not sure it is important
+       to have such a comment anyway).
+       * buffer.c (buf_default_memory_error, buf_length): Reindent.
+       * server.h: Declare struct buffer before use.
+
+Mon Feb  9 21:05:28 1998  Ian Lance Taylor  <address@hidden>
+
+       * rcs.c (RCS_fully_parse): Call getrevnum rather than getrcsrev.
+       Don't bother with ungetc.
+
+       * rcs.c (getrcsrev): Rewrite to simply call getrevnum.
+
+Sun Feb  8 15:49:39 1998  Ian Lance Taylor  <address@hidden>
+
+       Don't have the server check out a revision into a file and then
+       immediately read the file; just read into a buffer instead.
+       * update.c: Include buffer.h.
+       (update_fileproc): Let checkout_file call server_updated.
+       (checkout_file): Add merging and update_server parameters.  Change
+       all callers.  If server_active, don't mess with backup files.  If
+       server_active, copy the revision into a buffer rather than a file
+       when possible.  If update_server, call server_updated.  Fix
+       handling of error status.
+       (checkout_to_buffer): New static function used by checkout_file.
+       (merge_file): Let checkout_file call server_updated.
+       (join_file): Likewise.
+       * server.c (server_updated): Change file_info parameter to mode
+       parameter.  Add filebuf parameter.  Change all callers.  If
+       filebuf is not NULL, don't read the file.
+       * server.h (server_updated): Update declaration.
+       * buffer.c (buf_free): New function.
+       (buf_append_buffer): New function.
+       (buf_length): New function.
+       * buffer.h (buf_free, buf_append_buffer, buf_length): Declare.
+
+       * buffer.c: (buf_initialize): If the memory parameter is NULL, use
+       buf_default_memory_error.
+       (buf_default_memory_error): New static function.
+       * buffer.h (BUFMEMERRPROC): Define typedef.
+       * client.c (buf_memory_error): Remove.
+       (start_server): Pass NULL rather than buf_memory_error as buffer
+       memory error function.
+
+Sat Feb  7 16:27:30 1998  Ian Lance Taylor  <address@hidden>
+
+       * rcs.c (RCS_parsercsfile_i): Read the expand keyword from the RCS
+       file.  We do this because Version_TS calls RCS_getexpand in many
+       common cases, and we don't want to reopen the file just for that.
+       (RCS_reparsercsfile): Skip the expand keyword.
+       (RCS_getexpand): Don't call RCS_reparsercsfile.
+
+       * rcs.c (STREQ): New macro.  In all string equality tests in the
+       file, replace strcmp with STREQ.
+
+Fri Feb  6 16:14:49 1998  Ian Lance Taylor  <address@hidden>
+
+       * update.c (checkout_file): If we've already removed the backup
+       file once, don't try to remove it again.
+
+       * filesubr.c (unlink_file_dir): Call stat rather than isdir, and
+       don't call unlink if the file does not exist.
+
+       * myndbm.c (mydbm_load_file): Rename line_len to line_size.  Call
+       getstr rather than getline, to avoid any confusion between \n and
+       \012.  Use the line length returned by getstr rather than calling
+       strlen.  Remove local variable len.
+
+Fri Feb  6 13:23:46 1998  Jim Kingdon  <address@hidden>
+
+       * rcs.c (RCS_parsercsfile_i): Don't suppress errors on
+       really_quiet.
+       (RCS_parsercsfile_i, RCS_reparsercsfile, RCS_fully_parse,
+       RCS_deltas, getdelta, getrcskey, RCS_getdeltatext):
+       Check for errors.  Include errno in error messages.  Include
+       filename in error messages.  Pass new argument to getrcskey.
+       (getrcskey): New argument NAME, so we can report errors ourself.
+
+Fri Feb  6 12:10:18 1998  Ian Lance Taylor  <address@hidden>
+
+       * rcs.c (RCS_reparsercsfile): Don't use ftell/fseek; just keep
+       track of whether we've already read a key/value pair.  Use sizeof
+       rather than strlen for a constant string.  Pass the current key
+       and value to getdelta, and get them back as well.
+       (getdelta): Add keyp and valp parameters.  Don't use ftell/fseek;
+       just return the key/value pair to the caller.  Don't allocate
+       vnode before we know we need it.  Check one getrcskey return
+       value.  Use sizeof rather than strlen for a constant string.
+
+       * rcs.c (getrcskey): Correct comment describing return value.
+
+Thu Feb  5 22:51:13 1998  Ian Lance Taylor  <address@hidden>
+
+       * subr.c (getcaller): Cache the result, so that we don't keep
+       searching the password file.
+
+Wed Feb  4 23:31:08 1998  Jim Kingdon  <address@hidden>
+
+       * rcs.c (max_rev): Don't prototype.  Interesting that noone
+       complained about this until now.
+
+4 Feb 1998  Jim Kingdon
+
+       * rcs.c (RCS_checkin): When adding a new file, read it
+       with "rb" if binary.
+
+Fri Jan 30 11:32:41 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Also test "first-dir" as the regexp in loginfo in
+       addition to ALL.
+
+       * main.c (main): Update year in copyright notice to 1998.
+
+Thu Jan 29 00:01:05 1998  Jim Kingdon  <address@hidden>
+
+       * version.c: Change version number to 1.9.25.
+
+       * Version 1.9.24.
+
+       * sanity.sh (multibranch2): File file2 and tests multibranch2-13
+       through multibranch2-15 test a slightly different case than the
+       rest of multibranch2.
+
+       * mkmodules.c (cvswrappers_contents): Rewrite.  The text didn't
+       describe -k and had various other problems.
+
+28 Jan 1998  Karl Fogel and Jim Kingdon
+
+       New feature to let server tell client about wrappers.
+       * client.h (struct response): Add comment about args being
+       '\0' terminated when passed to handle_* functions.
+       * client.c (start_server): send "wrapper-sendme-rcsOptions" to
+       server iff supported.
+       (responses): new response "Wrapper-rcsOption"; allows the server
+       to send certain lines from its cvswrappers file.
+       (handle_wrapper_rcs_option): new func, handles "Wrapper-rcsOption"
+       response from server.
+       * server.c (serve_wrapper_sendme_rcs_options): new func, sends
+       server side CVSROOT/cvswrappers rcs option lines to client.
+       (requests): new request "wrapper-sendme-rcsOptions"; if received,
+       we know we can send "Wrapper-rcsOption..." to the client.
+       * wrapper.c (wrap_unparse_rcs_options): new func; repeated calls
+       step down the wrapper list returning rcs option entries, but
+       repackaged as cvswrappers lines.
+       (wrap_setup): new guard variable `wrap_setup_already_done'; if
+       this function has run already, just return having done nothing.
+       Add comment concerning environment variable.
+       * cvs.h: declare wrap_unparse_rcs_options().
+
+Tue Jan 27 18:27:19 1998  Ian Lance Taylor  <address@hidden>
+
+       * rtag.c (rtag_dirproc): Call ignore_directory, and skip the
+       directory if it returns true.
+       * sanity.sh (modules4): New set of tests to test some aspects of
+       excluding directories in the modules file, including the above
+       patch.
+
+Thu Jan 22 10:05:55 1998  Jim Kingdon  <address@hidden>
+
+       * server.c (serve_kopt): Check for length of arg.  Based on
+       inspection of the code, plugs a buffer overrun security hole which
+       was introduced Monday.
+
+       * server.c (serve_is_modified): Don't call xmalloc; we aren't
+       allowed to call error() here.  Remove duplicate (and potentially
+       confusing) variable 'p'.
+
+       * log.c (log_fileproc): Look for first character of version
+       '0' AND second character '\0', rather than OR.  I didn't try to
+       come up with a test case but this looks like a simple thinko
+       (albeit one which would show up in obscure cases if at all).
+
+Tue Jan 20 19:37:53 1998  Jim Kingdon  <address@hidden>
+
+       * client.c (send_dirent_proc): Don't send nonexistent directories
+       unless noexec.
+       * sanity.sh (modules2): New tests modules2-13 through modules2-18
+       test for this fix.
+
+Mon Jan 19 11:17:51 1998  Jim Kingdon  <address@hidden>
+
+       * server.c (serve_kopt): New function.
+       (requests): Add "Kopt" request.
+       (kopt): New variable.
+       (serve_is_modified): Write kopts from there into entries.
+       (serve_modified): Call serve_is_modified so we do the same.
+       Declare serve_modified and serve_is_modified.
+       * vers_ts.c (Version_TS): Set ->options even for a dummy ("D"
+       timestamp) entry.
+       * import.c (process_import_file): Check for -k options.
+       * client.c (client_process_import_file): Send Kopt request.
+       (send_fileproc): Likewise, for "cvs add".
+       * sanity.sh: Enable test binwrap3-sub2-add1 for remote.
+       Add -I .cvswrappers to binwrap3-2a; adjust binwrap3-2d
+       accordingly.  Tests for this fix.
+
+Mon Jan 19 08:48:59 1998  Larry Jones  <address@hidden>
+
+       * sanity.sh (errmsg1): Append test 168 output to log file.
+
+Sat Jan 17 08:01:51 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (ann-10, ann-11): Don't make assumptions about the
+       number of characters in the username.
+
+Fri Jan 16 15:34:02 1998  Larry Jones  <address@hidden>
+
+       * diff.c (diff_fileproc): Free label1 and label2 when finished.
+
+       * edit.c (editor_set): Don't free edlist until after we're
+       done using it.
+
+       * rcscmds.c (RCS_merge): Free xrev1 and xrev2 when finished.
+
+       * subr.c (make_message_rcslegal): Don't access uninitialized or
+       unallocated memory; only strip trailing blank lines.
+       * sanity.sh (log-3): Enhance to test this fix.
+
+Fri Jan 16 12:41:03 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Add keywordlog to list of tests run by default.
+
+       * rcs.c (RCS_deltas): Don't call cvs_output if length is zero;
+       passing zero length to cvs_output does not mean output zero
+       bytes.  The 27 Dec 1997 change to no longer '\0'-terminate the
+       ->text field turned this from a time bomb to a user-visible bug.
+       * sanity.sh (ann): New tests, test for this fix and other annotate
+       behaviors.
+
+Thu Jan 15 23:52:00 1998  Jim Kingdon  <address@hidden>
+
+       * root.c (root_allow_ok): If inetd.conf didn't specify an
+       --allow-root options at all, we know we are in trouble.  Give a
+       specific error message.
+
+Thu Jan 15 21:24:59 1998  Ian Lance Taylor  <address@hidden>
+
+       * sanity.sh (dotest_sort): New variant of dotest which sorts the
+       output, for use when the output depends upon details of the file
+       system, typically when doing an import.
+       (rdiff): Use dotest_sort for rdiff-1.
+       (ignore): Use dotest_sort for 188a, 188b, 189d, 190, and 191.
+
+       * sanity.sh: (TESTSHELL): New variable.
+       (editor, info, reserved): Use TESTSHELL in temporary script.
+
+       * sanity.sh (ignore): Do all tests in subdirectory, to avoid
+       conflict between cvsroot and CVSROOT on Windows.
+       (binwrap3, mwrap, info, config): Likewise.
+
+       * sanity.sh (binfiles2): Correct test name binfile2-7-brmod to
+       binfiles2-7-brmod.
+
+       * release.c (release_delete): If __CYGWIN32__ is defined, don't
+       worry about mismatched inodes.  This is a hack, but then I think
+       the test is rather peculiar anyhow.
+
+Thu Jan 15 16:07:36 1998  Larry Jones  <address@hidden>
+
+       * sanity.sh (reserved-9): Use ${PROG} instead of "cvs".
+
+Wed Jan 14 15:43:13 1998  Jim Kingdon  <address@hidden>
+
+       * Split ChangeLog into ChangeLog-97 and ChangeLog.
+       * Makefile.in (DISTFILES): Add ChangeLog-97.
+
+13 Jan 1998  Jim Kingdon
+
+       * client.c: Declare handle_mt.
+
+Tue Jan 13 22:21:30 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh: Add comment about how pwd and /bin/pwd often differ
+       in behavior (but are not guaranteed to).
+
+Tue Jan 13 13:49:53 1998  Ian Lance Taylor  <address@hidden>
+
+       * sanity.sh: When setting TMPPWD use just pwd, not /bin/pwd.
+
+       * update.c (checkout_file): Don't pass set_time as true to
+       Version_TS if the file is dead.
+       * sanity.sh (modules): Add tests modules-155c6 through
+       modules-155c8 to test for above patch (without the above patch,
+       modules-155c8 will fail when remote).
+
+Tue Jan 13 10:37:02 1998  Larry Jones  <address@hidden>
+
+       * client.c (send_modified): Change bufsize and newsize from int
+       to size_t to avoid type clashes in call to read_and_gzip.
+
+Tue Jan 13 10:33:02 1998  Larry Jones  <address@hidden>
+
+       * zlib.c (read_and_gzip): Set finish to 0; it was uninitialized.
+
+Tue Jan 13 10:26:43 1998  Larry Jones  <address@hidden>
+
+       * add.c, rcs.c: Plug memory leaks.
+
+Mon Jan 12 10:45:27 1998  Larry Jones  <address@hidden>
+
+       * server.c (mkdir_p): Don't try to create nameless directories
+       (i.e., given "/foo//bar", don't try to create "/foo/",
+       just "/foo" and "/foo//bar") since it isn't necessary and
+       it fails on some systems in unexpected ways.
+
+1998-01-11  enami tsugutomo  <address@hidden>
+
+       * rcs.c (linevector_copy): Delete lines before overwriting them.
+
+Sat Jan 10 11:05:40 1998  Jim Kingdon  <address@hidden>
+
+       * cvsrc.c, entries.c, login.c, logmsg.c, myndbm.c, patch.c,
+       release.c, server.c: Check for errors from getline, CVS_FOPEN,
+       fprintf, CVS_UNLINK and fclose.  Note that the new errors are
+       nonfatal.  This is because of conservatism more than because
+       it is always the best thing.
+       * login.c (get_cvs_password): Close the file when done with it.
+       * client.c (notified_a_file): If -1 return from getline, check
+       feof rather than assuming errno is set.
+
+Fri Jan  9 14:38:54 1998  Jim Kingdon  <address@hidden>
+
+       * server.c (expand_proc): Also output server_dir in
+       "Module-expansion", not just in output_dir ("Created", &c).
+       * sanity.sh (modules2): New tests modules2-9 through modules2-12
+       test for this.
+
+Thu Jan  8 12:56:55 1998  Yasutoshi Hiroe  <address@hidden>
+
+       * import.c (import): Don't strcat on uninitialized memory.  Fixes
+       possible SIGSEGV with zero-length message.
+
+Tue Jan  6 22:56:29 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (crerepos): Fix mistaken variable name which caused us
+       not to clean up at the end of the test.
+
+Mon Dec 22 01:40:57 1997  Jim Kingdon  <address@hidden>
+
+       * add.c (add): Also look for .cvswrappers files.
+       * sanity.sh (binwrap3): New tests binwrap3-2*, binwrap3-sub2-add*
+       test for this.
+
+Tue Jan  6 11:50:38 1998  Jim Kingdon  <address@hidden>
+
+       * sanity.sh (crerepos): New tests crerepos-8 through crerepos-18
+       test behaviors when mixing repositories.
+
+Sun Jan  4 17:40:22 1998  Jim Kingdon  <address@hidden>
+
+       * version.c: Change version number to 1.9.23.
+
+       * Version 1.9.22.
+
+
+For older changes see ChangeLog-97.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]