Wed Oct  8 13:46:05 1997  Hans Lermen <lermen@elserv.ffm.fgan.de>

	Unofficial changes/enhancements (private version stamp: Ler1d)
	^^^^^^^^^^

	* new option 'cvs-exec-prefix' in /etc/cvs.conf (more security):
	This prefix is appended to all program names (except those allready
	prefixed by the Rcsbin prefix), that CVS executes as result of its
	processing. Look at the comment in parseinfo.c (parse_etc_config).

	* new option 'cvs-admin-group' in /etc/cvs.conf:
	With this you may change or disable the CVS_ADMIN_GROUP checking (as
	predefined in src/options.h).

	*  new option 'force-gzip-level' in /etc/cvs.conf:
	 With the keyword 'force-gzip-level' you may force the pserver
	to reject any uncompressed transfer with the client. This is
	valuable, if you want to protect your server from netword overload.
	In this case, the server will refuse any service, if the client did
	not use the '-z' option.

	* in an chroot'ed and via 'cvs-exec-prefix' protected environement
	the commands 'rdiff' and 'annotate' are now allowed for readers
	too. ( I wonder why they aren't in general ).

	* removed double coded check for history command (main.c,
	lookup_command_attribute() ).

 Sat Oct  4 00:59:08 1997  Hans Lermen <lermen@elserv.ffm.fgan.de>

	Unofficial changes/enhancements (private version stamp: Ler1c)
	^^^^^^^^^^
	* introduced the (optional) /etc/cvs.conf which holds system wide
	configuration for pserver. Currently only 'allow-root' as replacement
	for the --allow-root on the commandline. This makes maintainance a lot
	easier, as you need not to edit /etc/inetd.conf. For security
	reasons I would suggest to remove the commandline option completely.

	* Also in /etc/cvs.conf there may be a line such as
		allow-root=/chrooted/dir/./cvs/root
                                        ^^^
	the pserver will chroot(2) to '/chrooted/dir' and accept only
	accesses via ':pserver:user@host:/cvs/root'.
	                                 ^^^^^^^^^
	As /etc/cvs.conf can hold multiple 'allow-root' definitions, multiple 
	different chroot environement can be used. This increases security.
	Note: when 'chroot' is detected, then 'SystemAuth=no' is forced
	and can't be overwritten by CVSROOTADM/config. The uid/guid is
	taken out of the /etc/passwd in the chroot'ed directory, so take
	care the user exist the permissions match the repository.

	* introduced 'plock/punlock' commands.
	These commands relate only to pserver accesses and are intended for
	use by multiple developers working on the same project (repository).
	With 'plock' all writers (those having write access to the repository)
	except the one doing 'plock' will become 'readers' (those only having
	read access to the repository). Only the one remaining 'writer' can
	do a 'cvs punlock' to restore the previous access rights.
	Plock/unlock is valuable if you need to do a bundle of cvs commands
	atomically which otherwise could do harm to the consistency of the
	software project (repository). Of course, _all_ project members must
	must use :pserver: _and_ plock/punlock else it won't work.
 
	* 'cvs init' now creates a CVSROOTADM/lock directory (needed for
	plock/unlock). In a secure environemt the CVSROOTADM directory
	should not be writeble, else 'passwd' could be deleted and replaced.
	To allow lockfile creation, however, the directory needs to be
	writeble.

	* gave 'history' a '-s' flag, which results in sorting strickly
	by date/time.

	* The constant string "<remote>" in the history is replaced by the
	IP of the remote side (e.g. [aa.bb.cc.dd]). Resolving this address
	was intentional skipped to avoid performance loss.

	* There are 2 new environement variables, which are passed to
	the various wrappers, loggers e.t.c.:
		PSERVER_USER,  which holds the name from CVSROOTADM/passwd
		PSERVER_PEER,  which holds the IP of the remote side.
	this improves control, when written to log files.
	
Sun Sep  7 07:45:35 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Version 1.9.16.

	* recurse.c (do_dir_proc): In combining repository and dir, omit
	trailing "/." from repository.
	* sanity.sh (modules3): Adjust test modules3-4 so we test for
	this fix (this is not just cosmetic; the bug prevented the
	"Rebuilding administrative file database" from happening).
	modules2 already tests the "co CVSROOT/modules" usage.

	* checkout.c (checkout_proc): When building top-level CVSADM
	directory, continue the process of walking up the repository one
	more level, rather than putting in the same repository as for the
	first-level directory.
	* sanity.sh: Adjust tests basicb-1b, basicb-9b, modules3-7f,
	toplevel-9, and toplevel-11 to test for this fix.

	(For reference, this takes CVS's text segment from 344460 to
	344140 bytes.  I know, this may seem unimportant, but it is so
	unusual for programs to shrink and I think it is so cool when they
	do without losing functionality/clarity/etc).
	* checkout.c, cvs.h (emptydir_name): New function.
	* checkout.c (checkout, checkout_proc), modules.c (do_module):
	Call it instead of duplicating the code to do that.

	* sanity.sh (basicc): Clean up first-dir at end of test.

Sat Sep  6 09:48:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join): Fix cut and paste error in join-28
	(/home/kingdon/... -> ${TESTDIR}).

	* recurse.c (start_recursion): If there is no CVSADM and no
	subdirectories, give an error.
	* sanity.sh (basicc): New tests, test for this fix.

	* sanity.sh (join): New tests join-25 through join-29 test merging
	from one branch to a different branch.

	* release.c: In comment about CVSROOTADM_IGNORE, also mention
	comment just added to entries.c.
	* entries.c: Expand this comment, especially the part about
	CVS/Template.

	Keep track of what revisions CVS/Base correspond to:
	* cvs.h (CVSADM_BASEREV, CVSADM_BASEREVTMP): Added.
	* entries.c, cvs.h (base_register, base_deregister, base_get,
	base_walk): New functions.
	* edit.c (edit_fileproc): Call base_register when setting up CVS/Base.
	(unedit_fileproc): When taking a file out of CVS/Base, put its
	revision back into entries, and base_deregister it.
	* sanity.sh (watch4): New tests watch4-10 through watch4-18 test
	for above fix.

Fri Sep  5 09:14:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c: Only declare start_rsh_server if we are going to
	define it (!NO_EXT_METHOD).

	* subr.c, cvs.h (check_numeric): New function.
	* admin.c (admin): Call it.
	* sanity.sh (admin): New tests admin-10a and admin-10b test for fix.

Thu Sep  4 15:55:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (binwrap2): New tests, test for the ability to specify
	all files are binary except certain patterns.

	* sanity.sh (modules3): New tests modules3-16 and modules3-17 test
	for another behavior involving '/' in a module name.

Sun Aug 31 12:03:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Remove checks for '/' in pathnames.
	(add): Move code which handles entries and repository inside loop,
	since these now might be different for each argument.  Add code to
	set finfo.update_dir, finfo.file, and finfo.fullname appropriately
	even if pathname contains '/'.  Replace user variable with
	finfo.file or finfo.fullname, depending on which is meant.  chdir
	into update_dir for each argument.  Likewise for the client code
	which creates directories.
	(add_directory): Replace arguments with a single finfo argument.
	Replace dir with finfo->fullname as needed.
	(add): Update call to add_directory.
	* client.c, client.h (send_a_repository): No longer static.
	* sanity.sh (errmsg2): Adjust tests to test for '/' in pathname.

	* sanity.sh (errmsg2): New tests errmsg2-13 through errmsg2-16
	test the status quo with respect to '/' in cvs add argument.

Sat Aug 30 17:37:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c (run_popen): Add comment on return value.
	* release.c (release): Check for NULL return from popen.

Fri Aug 29 17:49:20 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (get_server_responses): Add comment about "ok^M".

Thu Aug 28 13:35:12 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* edit.c (edit_fileproc): If file doesn't exist, give an error.
	* sanity.sh (devcom2): Tests devcom2-12 through devcom2-17 test
	for above fix.

Tue Aug 26 16:42:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c (xmalloc): Reword error message to clarify that memory,
	not disk space or some other resource, is in question.

Tue Aug 26 01:04:48 1997  Steve Ralston <sralston@ppdpost.ks.symbios.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): In allocating message, also allocate
	enough for tag and date related text.

Tue Aug 26 01:04:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update_dirent_proc): Use update_dir not dir in "new
	directory" message.
	* find_names.c (find_dirs): Skip CVSNULLREPOS.
	(Find_Directories): Add comment about find_dirs skipping CVSATTIC
	and CVSLCK in working directories.
	* sanity.sh (basicb): New tests basicb-edir-* test for find_dirs
	fix.  Change other tests to test that Emptydir is not special in
	non-CVSNULLREPOS contexts.

Sun Aug 17 14:44:57 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (add_rcs_file): Add comment about -k overriding wrappers.

Sat Aug 16 18:09:05 1997   Martin Sjoelin <martin.sjoelin@ubs.ch>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (add_rcs_file): Before opening the input file
	when importing, if options is binary, open the file in
	binary mode.

1997-08-16  enami tsugutomo  <enami@ba2.so-net.or.jp>

	* sanity.sh (mcopy): Unset CVSWRAPPERS last of all.

Fri Aug 15 11:11:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): Copy default file attributes from the
	parent directory to the directory we are creating.
	* fileattr.h, fileattr.c (fileattr_getall, fileattr_setall):
	New functions, in support of above.
	* fileattr.c (fileattr_free): Add comment about fileattr_write
	maybe not clearing attrs_modified.
	* sanity.sh (watch4): New test, tests for above fix.

Thu Aug 14 11:08:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (merge_file, join_file): If wrap_merge_is_copy, treat
	files as nonmergeable (as we had been treating binary files).
	(join_file, update_fileproc): Remove previous wrap_merge_is_copy
	cruft.
	* sanity.sh (mcopy): New tests, test for above fix.
	(binfiles2): New tests binfiles2-9a-* correct an oversight.
	(binfiles, binfiles2): Adjust to reflect wording change from
	"binary file" to "nonmergeable file".
	(mwrap): Adjust tests mwrap-8 through mwrap-10 for new behavior.

	* main.c (main): Reword copyright notices to include the latest
	year, to refer to "other authors" in addition to the ones listed,
	and to be more concisely formatted.

Wed Aug 13 13:50:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* sanity.sh: Replace hard-coded directory with ${TESTDIR}, add
	join3 to default tests

Wed Aug 13 11:42:24 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c: Adjust comment to reflect progress on removing RCS
	execs outside this file.

Mon Aug 11 10:14:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* vers_ts.c (Version_TS): If vers_ts->vn_rcs == NULL, skip setting
	modification time in server case as well as local case.
	* server.c (server_modtime): Add assertion to clarify that caller
	must assure that vers_ts->vn_rcs != NULL.
	* sanity.sh (join3): Add file "file2" to test for above fix.

	* modules.c (save_d): When parsing -s option, don't assume that
	we will hit a space before we hit the '\0'.
	(struct sortrec): Document allocation policies (status quo except
	status field is now malloc'd).
	(cat_module): No longer need to set the '\0' at the end of the
	status field back to ' ', as it no longer shares storage with the
	rest field.
	* sanity.sh (modules): Add "statusmod" to test for above fix.

Sun Aug 10 12:18:31 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Remove TODO item about more keyword expansion tests.
	The keyword test and others cover it pretty well, and such an item
	isn't useful unless it is specific.

	* sanity.sh (importb): New tests test "cvs import -b".

	* mkmodules.c: Update comment with more reasons why having
	CVSROOT/passwd be a regular administrative file would be a Bad
	Idea.

	* server.c (switch_to_user): Add comment about checking for errors
	from setuid and friends.

Wed Aug  6 13:48:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment about errors writing CVS/Root in
	need_to_create_root code.

Tue Aug  5 22:05:20 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (write_entries): If trouble writing Entries.Backup,
	make it a warning not an error.

Wed Jul 30 08:42:04 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* parseinfo.c (parse_config): If AUTH_SERVER_SUPPORT is not
	defined, don't set system_auth.

	* version.c: Change version number to 1.9.15.

	* Version 1.9.14.

	* create_adm.c, cvs.h (Create_Admin): If new argument WARN is set,
	then make creating the CVS directory itself a warning not a fatal
	error.  New return value indicates whether we did this.
	* checkout.c (build_one_dir), client.c (call_in_directory):
	Pass WARN as one.
	* add.c, client.c, checkout.c, modules.c, update.c: Pass WARN as
	zero for all other Create_Admin callers.
	* sanity.sh (toplevel): New test toplevel-12 tests for this fix.
	* filesubr.c (mkdir_if_needed): Also check EACCES/isdir.  Needed
	to make toplevel-12 test work.

	* sanity.sh (toplevel): New test toplevel-11 and friends test for
	another variation of the toplevel-9 bug.

Tue Jul 29 12:11:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* login.c (construct_cvspass_filename): Revert this change.  The
	main reason is procedural; Karl is not a current CVS developer.
	The other thing is that the new text doesn't say anything about
	HOMEDRIVE and HOMEPATH.

Tue Jul 29 11:36:22 1997  Karl Fogel  <kfogel@harvey.cyclic.com>

	* login.c (construct_cvspass_filename): error message informs user
	she may need to set HOME environment variable by hand.

Sun Jul 27 15:36:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c (admin): Remove comment "XXX send -ko too with i = 0".
	It turns out to be a description of a bugfix which was applied on
	8 Oct 1995, and never should have been in a comment in the first
	place.

	* admin.c (admin, admin_fileproc): Parse options ourself rather
	than blindly passing them to RCS.
	Accordingly, add struct admin_data and function arg_add, and delete
	global variables ac and av.
	* sanity.sh (admin): Change admin-3 test to reflect cvs admin -i
	now being an error.
	(basicb): Change basicb-21 test to relect the improved error
	message here.

Sat Jul 26 11:34:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join3): New tests, test a new branch topology and
	greatest common ancestor.

Fri Jul 25 09:51:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_directory): Repository must start with
	CVSroot_directory rather than some random pathname.

	* remove.c (remove_fileproc): If there is a numeric sticky tag,
	don't allow the remove.
	* commit.c (check_fileproc): Add comment about this case.
	* sanity.sh (sticky): New tests sticky-15 through sticky-23
	test for this behavior and the analogous behavior with
	non-branch sticky tags (which is unchanged).

	* client.c (update_entries): Clear the stored mode, modtime, and
	checksum even on an error.
	* sanity.sh (contents2-142d*): Also test cvs status.  Also test
	the case in which the contents of the file are unchanged.  Also
	test running diff to see the conflict, and resolving the conflict.
	Without the fix above, the new contents2-142d2 test would get a
	"duplicate Mod-time" warning.

Thu Jul 24 13:29:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (pserver_authenticate_connection): Call parse_config
	here too.
	* parseinfo.c (parse_config): If we are called several times, the
	times beyond the first do nothing.
	* cvs.h, parseinfo.c (parse_config): New argument cvsroot.
	* server.c, main.c: Update callers.
	* server.c, server.h (system_auth): New variable.
	* parseinfo.c (parse_config): Parse new keyword SystemAuth.
	* mkmodules.c (config_contents): Add comments for SystemAuth.
	* server.c (check_password): If !system_auth, then skip the check
	for a system username/password.

	* main.c (main): No fatal error if parse_config returned an error.
	* server.c (serve_root): Likewise.
	* error.c (error): Add comment about calling from the server.
	* parseinfo.c, cvs.h (parse_config): Remove NOERR crock.
	Closer reading of server.c makes it seem like calling error
	here is OK after all.
	* sanity.sh (config): New test, tests for above fix.

	* server.c (serve_root): Fix typo ("doign" -> "doing").

Wed Jul 23 13:55:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* vers_ts.c (Version_TS): If entdata is for a directory, don't set
	vn_user and friends.
	* server.c (dirswitch): Add comment about why Subdir_Register is
	sometimes a noop here.
	* cvs.h (struct vers_ts): Fix comments about NULL vs. "" in vn_user.
	* sanity.sh (errmsg2): New tests errmsg2-10 through errmsg2-12 test
	for above fix.
	* add.c (add_directory): Call cvs_output not printf.  This fixes
	an out-of-order bug which was showing up in the testcase.

21 Jul 1997  Jim Kingdon

	* subr.c (get_file): Put st_size into an unsigned variable to
	avoid signed/unsigned warnings.

Mon Jul 21 00:19:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.13.

	* Version 1.9.12.

	* sanity.sh (toplevel, head): Delete our files from the repository
	when done with them.

Sun Jul 20 15:53:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (admin, reserved): New tests, test most cvs admin
	behaviors.
	(log2): New tests log2-5 through log2-10 test setting the
	description via cvs admin.

Thu Jul 17 12:39:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (socket_buffer_input, socket_buffer_output): Add
	comment regarding size of of buffer we pass to send and recv.

Sat Jul 12 15:21:24 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c, rcs.h (add_rcs_file): New argument key_opt replaces
	access to global variable keyword_opt.  New arguments desctext and
	desclen allow one to set the description.  If add_vhead is NULL,
	then omit a revision, like rcs -i.
	* import.c (process_import_file), mkmodules.c (init): Change
	callers.
	* subr.c, cvs.h (get_file): New function, adapted from code in
	update_entries.
	* client.c (update_entries): Call it.
	* commit.c (checkaddfile): Create new RCS files with add_rcs_file
	rather than rcs -i.

Fri Jul 11 12:14:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (join_file): Handle binary files ourself rather than
	passing them to RCS_merge (which sort of tries to handle binary
	files, but does so badly).
	* sanity.sh (binfile2): New "brmod", "brmod-trmod", and
	"brmod-wdmod" tests test for this fix.

	* add.c (add): Exit status is now nonzero if any of the arguments
	failed (already was mostly true, make it true for the new sanity
	check).  Move check for '/' (now ISDIRSEP) up to sanity check, so
	the client does it too.
	* sanity.sh (errmsg2): Test for this fix.

Thu Jul 10 00:02:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Check for CVSADM, ".", and "..", and skip any
	attempt to add them.
	* sanity.sh (errmsg2): New tests, tests for above fix.

	* main.c (main): In text printed upon --version, also refer
	people to --help.

	* rcscmds.c (RCS_exec_rcsdiff): Add comment about timezones.

	* server.c, cvs.h (cvs_output_binary): New function.
	* rcs.c (RCS_checkout): For a binary file, call cvs_output_binary
	rather than cvs_output.
	* client.c (handle_mbinary): New function.
	(responses): Add "Mbinary".

Tue Jul  8 12:18:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* filesubr.c (get_homedir): Add comment about root vs. user
	directory in pserver server.

Mon Jul  7 14:39:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (big): Also test Rcs-diff case.

	* client.c (update_entries): Reindent a line.

	* sanity.sh (death2): Add comment about Sun diff.  Thanks to
	Warren Jones <wjones@TC.FLUKE.COM> for reporting this.

	* client.c (update_entries): If DONT_USE_PATCH, then just treat a
	Patched response as an indication to try again with complete files.
	* update.c (update): Remove DONT_USE_PATCH ifdefs, since a CVS
	with DONT_USE_PATCH defined can still handle Rcs-diff.
	* sanity.sh (serverpatch): Add comment about this coming up in
	real life if the user modifies the file while CVS is running.

	* client.c (start_server): Add comment about logfiles if there are
	several connections to the server.
	(log_buffer_shutdown): Close the logfile after shutting down the
	underlying buffer.  This way at least we get the last set of
	logfiles rather than a bizarre mishmash.

1997-07-06  enami tsugutomo  <enami@but-b.or.jp>

	* logmsg.c (do_verify): Unlink temporary file before call error().
	Remove unneeded `return' statement.  Fix comment.

Sun Jul  6 13:36:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_fileproc): Change message from "during rcsdiff of"
	to "while diffing".  For a while now, that message might be
	printed after a call to DIFF instead of rcsdiff.

	* diff.c (diff_fileproc): Call cvs_output not printf.  Remove
	calls to fflush (should be handled now by call to cvs_outflush in
	recurse.c).
	* patch.c (patch_fileproc): Likewise.

	* rcscmds.c, cvs.h (diff_exec): New function.
	* diff.c (diff_fileproc), patch.c (patch_fileproc),
	update.c (patch_file): Call it.

	* rcscmds.c: Adjust comments concerning diff library to point to
	new, expanded comments at diff_exec.  Remove comments concerning
	patch library; Rcs-diff should be adequate.

	* client.c (update_entries): Add comment about GNU patch usage (-b
	option and so on).

Sat Jul  5 04:13:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c, cvs.h (RCS_exec_rcsdiff): New function.
	* diff.c (diff_fileproc): Call it.

Thu Jul  3 09:50:07 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment about how long we should keep the
	deprecated "cvs rlog" alias.

	* server.c (cvs_output): Add comment about whether to fflush.

Wed Jul  2 18:57:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (join2): New tests join2-19 and friends test for a
	case that we can't readily get right (see comments).

Tue Jul  1 09:52:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (cmd_usage): Say "specify" --help rather than the vague
	"use".
	(opt_usage, cmd_synonyms): Mention --help here too.
	* add.c, admin.c, checkout.c, commit.c, diff.c, edit.c, import.c,
	log.c, login.c, mkmodules.c, patch.c, rcs.c, release.c, remove.c,
	rtag.c, status.c, tag.c, update.c, watch.c: Likewise, for all the
	other help messages.

	* sanity.sh (join2): New tests.

	* repos.c (Name_Repository): Check for errors from fclose.

Fri Jun 27 10:27:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* scramble.c, login.c: Reindent.

	* client.c (connect_to_pserver): Check for errors from send().
	If socket() fails, include SOCK_STRERROR (SOCK_ERRNO) in message.

Wed Jun 25 11:21:52 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c: New option --help-options, with much of the text
	from --help.  Fix a few capitalization and punctuation problems.
	Rewrite text for --help to be an intro to all the --help-*
	options.

	* sanity.sh (head): New tests, concerning meaning of HEAD.

Tue Jun 24 10:14:18 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (recv_line): New function.
	(connect_to_pserver): Call it, and rewrite accordingly.  Also
	accept new "E" and "error" responses.  Change \n to \012.
	* server.c (pserver_authenticate_connection): Adjust comment
	accordingly, concerning sending I HATE YOU not "error".

Sun, 22 Jun 1997  Jim Kingdon

	* main.c (main): Move setting of server_active inside #ifdef
	SERVER_SUPPORT; otherwise the variable doesn't exist.
	* main.c (main): Call return after exit to shut up warning.

Fri Jun 20 22:56:34 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (connect_to_pserver): On "I HATE YOU", give
	"authorization failed" fatal error regardless of verify_only.
	* login.c (login): Don't print that "incorrect password" message;
	it now is possible with an --allow-root failure as well as an
	incorrect password.  cvsclient.texi doesn't really specify what I
	HATE YOU means in any detail, and it seems a little silly for
	login to give different messages than the other commands.
	* client.c, client.h (connect_to_pserver): Return type now void.

Thu Jun 19 12:16:10 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_root): Give error on duplicate Root request.
	Call parse_config.
	* parseinfo.c, cvs.h (parse_config): New function.
	* cvs.h (CVSROOTADM_CONFIG): Added.
	* main.c (main): Set server_active here...
	* server.c (server): ...not here.  That seems cleaner than
	strcmp's between command_name and "server" in main.c.
	* main.c (main): Call parse_config.
	* main.c, cvs.h (free_Rcsbin): Make global.
	* mkmodules.c (filelist): Add CVSROOTADM_CONFIG.

Wed Jun 18 11:24:31 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.11.

	* Version 1.9.10.

Tue Jun 17 22:48:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add --allow-root=ROOT argument; call
	root_allow_add for each time it is specified.  Call
	root_allow_free before exiting.
	* root.c, cvs.h (root_allow_add, root_allow_free, root_allow_ok):
	New function.
	* server.c (pserver_authenticate_connection): If root_allow_ok
	doesn't like the CVSROOT directory, don't allow access.

Tue Jun 17 14:30:14 1997  Jim Kingdon  (unknown@beezley)

	* client.c: Add "copyright" notice.  If NO_EXT_METHOD, omit
	start_rsh_method.
	* client.c (update_entries): Cast argument to MD5Update from
	char * to unsigned char *.

Mon Jun 16 16:46:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* run.c (piped_child, filter_stream_through_program):
	If USE_SETMODE_BINARY, then put the pipes into binary mode.
	* find_names.c, ignore.c, lock.c, wrapper.c: Change fnmatch to
	CVS_FNMATCH.
	* client.c (start_server): If NO_EXT_METHOD, then give a fatal
	error on any use of :ext:.

Sun Jun 15 22:30:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Match U CVSROOT/* lines with DOTSTAR in
	test toplevel-9.

Thu Jun 12 10:27:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Remove Emptydir before starting.

	* sanity.sh: Change "rm -rf" to "rm -r" when deleting working
	directories (except a few watches cases).  Helps detect cases
	where the testsuite has cd'd to somewhere other than where we
	think it has.
	(basic2): Remove "rm -r first-dir" between tests 49 and 50.  The
	directory was already deleted in test 45.5.
	(rcs): Add "cd .." at end of tests.
	(stamps): No longer cd to TESTDIR; shouldn't be necessary with
	fix to "rcs" test.

Wed Jun 11 22:28:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Also remove CVSROOT/Emptydir at end of
	test.  Otherwise it affects the toplevel-9 test for remote.

Tue Jun 10 14:03:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (toplevel): Change "update" and "checkout" to "[a-z]*"
	as these read "server" instead for "make remotecheck".  Change
	expect strings for toplevel-9 to accept the behavior of remote CVS
	(see comments for more discussion).

	* sanity.sh: New tests stamps-9 through stamps-11 test timestamp
	behavior on cvs update.

Mon Jun  9 22:42:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Remove "#! /bin/zsh" line at end.  I assume it was
	added accidentally.

Tue Jun 10 03:08:46 1997  Norbert Kiesel  <nk@psycho.de>

	* sanity.sh: new tests "toplevel" for the new toplevel CVS
	directory creation (including one test which shows an error in
	this area).

Sun Jun  8 20:52:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.c (getrcsrev): Before printing error, check whether it was
	feof or ferror.

	* rcs.h, import.c (add_rcs_file): No longer static.  New arguments
	add_vbranch, add_vhead, and add_logfp replace access to static
	variables vbranch, vhead, and logfp.
	* mkmodules.c: Call it instead of RCS_CI.
	* import.c (process_import_file): Adjust call to add_rcs_file.

Tue Jun  3 10:18:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Match "." with "\." not ".".

Tue Jun  3 13:02:37 1997  Norbert Kiesel  <nk@cosa.de>

	* checkout.c (checkout): Removed restriction of not sending -k in
 	remote export (I think this was introduced while the -k handling
 	was still broken in remote mode).  Give better error texts
 	regarding -c and -s options.  Use error() instead of usage() for
 	reporting errors in all places.  Reindented some lines.  Free
 	xmalloc'd space of options.

Thu May 29 16:32:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcscmds.c (RCS_checkin), mkmodules.c (init): Pass -w option to
	"ci", specifying getcaller ().
	* server.h, server.c (CVS_Username): Now extern.
	* subr.c (getcaller): Return CVS_Username if it is set.

Wed May 28 22:31:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update_fileproc): If wrap_merge_is_copy and we would
	like to do a merge, give a fatal error.  See comment for why.
	* sanity.sh (mwrap): New tests, tests for above fix.

Tue May 27 21:59:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (stamps): cd to ${TESTDIR} before starting.

Mon May 26 15:31:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (handle_mod_time): New function.
	(responses): Add "Mod-time".
	(stored_modtime_valid, stored_modtime): New variables.
	(update_entries): If it is set, change the file's modtime.
	* server.c, server.h (server_modtime): New function.
	* vers_ts.c (Version_TS): Call it.
	* patch.c (patch_fileproc): Add comment about why we don't.
	* sanity.sh (stamps): Added, tests for above fix.

Fri May 16 13:14:30 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c (free_names): Update documentation to reflect fact that
	free_names is now called to free vectors allocated by expand_wild
	as well	as by line2argv.

	* main.c (main): Use "xstrdup (foo)" not "xstrdup(foo)" as
	specified in HACKING.

Fri May 16 15:10:37 1997  Norbert Kiesel  <nk@cosa.de>

	* modules.c (do_module): initialize optind to 0.  use local copies
 	of optarg's (because they might me freed within free_names).

Thu May 15 11:50:15 1997  Norbert Kiesel  <nk@cosa.de>

	* main.c (main): initialize optind to 0.  use local copies of
	optarg's (because they might me freed within read_cvsrc).

	* cvsrc.c (read_cvsrc): free old argv after constructing a new
	one.  This fixes a memory leak.

	* recurse.c (start_recursion): use free_names() instead of
	reimplementing it

	* rcs.c (RCS_deltas): free branchversion (memory leak).

	* parseinfo.c (Parse_Info): free some vars (3 memory leaks).

	* logmsg.c (logfile_write): free str_list_format (memory leak).

	* watch.c (watch_addremove), (watchers), update.c (update), tag.c
 	(cvstag), status.c (status), rtag.c (rtag), remove.c (cvsremove),
 	release.c (release), patch.c (patch), log.c (cvslog), import.c
 	(import), history.c (history), edit.c (watch_onoff), (edit),
 	(unedit), (editors), diff.c (diff), commit.c (commit), checkout.c
 	(checkout), add.c (add): initialize optind to 0

	* diff.c (diff_fileproc): cosmetic change (whitespace added).

	* checkout.c (checkout): move local variable definition into the
	block where the variable is used.

	* client.c (update_entries): initialize some local variables to shut up
	gcc -O -Wall.

	* buffer.c (buf_read_line): initialize a local variable to shut up
	gcc -O -Wall.
		   

Wed May 14 16:29:50 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* admin.c (admin): When sending options to server, don't try to
	send av[ac].  It may contain one of the names that we'll send in
	send_file_names (which caused tests like keyword-6 to work,
	sort of accidentally), or it may contain NULL (which would tend to
	cause a coredump).
	* sanity.sh (basicb): New test basicb-21 tests for above fix.

Mon May 12 16:22:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* add.c (add): Free message and repository in client code.
	* checkout.c (checkout): Don't free repository unless allocated.
	* client.c (start_rsh_server): Free command.

Sun May 11 11:43:54 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c: Remove all references to USE_DIRECT_TCP; see
	../ChangeLog for rationale.

Fri May  9 22:19:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (main): Add comment explaining why we call exit.  Pass 0
	not EXIT_SUCCESS, because lib/system.h has portability cruft for
	EXIT_FAILURE but not EXIT_SUCCESS.

Fri May  9 17:25:00 1997  Larry Jones  <larry.jones@sdrc.com>

	Fix miscellaneous memory allocation problems:
	* add.c (add): Free repository.
	* client.c (notified_a_file): Free getline buffer.
	* edit.c (notify_check): Free getline buffer.
	* hash.c (dellist): Free header node when not caching.
	* login.c (login): Don't continually free & allocate getline
	buffer, use xstrdup instead of xmalloc/strcpy, free getline
	buffer before returning.
	* main.c (main): Call exit instead of returning so tools like
	Purify won't consider permanently allocated memory as leaks.
	* mkmodules.c (mkmodules): Free getline buffer.
	* modules.c (cat_module): Call close_module.
	* rcs.c (rcsvers_delproc): Free state.
	* recurse.c (start_recursion): Free files_by_dir.
	(unroll_files_proc): NULL out p->data after using it to set
	filelist to avoid multiple frees.
	* server.c (check_command_legal_p): Don't continually free &
	allocate getline buffer, free getline buffer before returning.
	(check_repository_password): Ditto, use xstrdup instead of
	xmalloc/strcpy.
	* wrapper.c (wrap_add_file): Free getline buffer.

Thu May  8 14:21:00 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (checkout_proc): Free finfo.rcs (memory leak).

8 May 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* hash.c: Add #ifdef's to disable caching.  This makes it easier
	to track down memory allocation problems.

Thu May  8 11:40:39 1997  Larry Jones  <larry.jones@sdrc.com>

	* sanity.sh: In setting "tests" use a number of statements rather
	than one very long line.

Thu May  8 11:40:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvsbug.sh: Remove $Id; we decided to get rid of these some time
	ago.

Thu May  8 11:34:02 1997  Larry Jones  <larry.jones@sdrc.com>

	* cvsbug.sh: Put separate statements on separate lines, so it
	works if awk is AT&T nawk.

Tue May  6 16:56:00 1997  Larry Jones  <larry.jones@sdrc.com>
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvsrc.c (read_cvsrc): Fix various memory allocation problems:
	rearrange code to avoid leaks, use xrealloc instead of xmalloc/
	copy/free, make sure there's room for the remaining args before
	appending them.

Tue May  6 14:20:00 1997  Larry Jones  <larry.jones@sdrc.com>

	* edit.c (watch_onoff, edit, unedit, editors): Add -R like
	other things with -l.
	* watch.c (watch_addremove, watchers): Ditto.

Mon May  5 18:10:37 1997  larry.jones@sdrc.com
	and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Change all /tmp/cvs-sanity to TESTDIR.  If TESTDIR
	environment variable is set, use it instead of /tmp/cvs-sanity.
	* sanity.sh: Make TMPPWD the pwd equivalent of TESTDIR, not of /tmp.

4 May 1997  Larry jones  <larry.jones@sdrc.com>
	    and Jim Kingdon

	* checkout.c, diff.c, patch.c, rcs.c: Update usage messages.
	* rcs.c (annotate): Add -R like other things with -l.

Sat May  3 14:57:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basic1): Rewrite test (use dotest, unroll the loops
	which IMHO makes the test a zillion times more understandable, and
	only do the variant which tests for 4 files at a time--we test one
	file at a time lots of places).

2 May 1997  Ziv Gigus <ziv@rest.home.net>
	    and Jim Kingdon

	* client.c, client.h (client_process_import_file): New argument
	all_files_binary means treat all files as binary.
	* import.c (import_descend): Pass it if -kb is specified.
	* client.c (client_process_import_file): In the
	non-all_files_binary case, call wrap_rcsoption to determine
	whether the file is binary.

Thu May  1 13:44:51 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (binfiles2): New tests, for update -j and binary files.

Wed Apr 30 11:18:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (start_recursion): Also free reposfile.
	Don't look in repository if client_active (latter bug reported by Paul
	Sanders <p.sanders@dial.pipex.com>).

Mon Apr 28 22:36:39 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_file_nodiff): Remove SERVER_SUPPORT ifdefs.  They
	were not based on server_active, which doesn't really make any
	sense (it meant that compiling --disable-server could affect the
	behavior of the non-client/server CVS).  This affected the output
	in tests death2-diff-11 and death2-diff-12 in the testsuite.
	* sanity.sh (newb-123j0): Also accept "Needs Checkout", for a
	--disable-server CVS.

	* main.c (cmd_usage): Change "run diffs" to "show differences";
	the former is jargon.
	* edit.c (edit_usage): Fix typo ("." -> ",").
	* edit.c (editors_usage), watch.c (watchers_usage): Mention -l.
	* checkout.c (export_usage): Say what -P does.
	* history.c (history_usg): Add comment about message wording.

Mon Apr 28 14:47:45 1997  Norbert Kiesel  <nk@cosa.de>

	* checkin.c (Checkin): use filename without path when calling
 	wrapper (bug found by Michal Schmitz <ms@cosa.de>).

Fri Apr 25 13:28:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (update_entries): In UPDATE_ENTRIES_RCS_DIFF case,
	write to a temporary file and then rename it.

Thu Apr 24 11:35:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c, cvs.h (pathname_levels): New function, from a piece of
	send_file_names.
	* client.c (send_file_names): Call pathname_levels in place of the
	code which was moved there.
	* server.c, server.h (server_pathname_check): New function.
	* recurse.c (start_recursion): Call it.
	* sanity.sh (modules3): New test modules3-11b tests for above fix.

	* filesubr.c: Do not define L_tmpnam.  It is in ANSI and SunOS4,
	so I don't think there will be a problem with it being missing.
	Defining it too small can cause memory corruption.
	(cvs_temp_name): Do not use L_tmpnam in the mktemp code; this
	could cause a buffer overflow if the -T global option was in use.

Thu Apr 24 13:21:15 1997  Norbert Kiesel  <nk@cosa.de>

	* filesubr.c (cvs_temp_name): Use tempnam if available, else
 	mktemp, else tmpnam. See the comment for rationale.

	* sanity.sh: use "tar cf - ." instead of "tar cf - *" for
 	directory copies.

Wed Apr 23 23:41:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (serve_update_prog): If in readonly mode, give an error.

Wed Apr 23 19:07:41 1997  Norbert Kiesel  <nk@cosa.de>

	* subr.c (line2argv): Allocate at least 4 slots for argv.

	* checkout.c (checkout_proc): Add a comment which says why the
 	above change was necessary to avoid writing to unallocated memory.

Wed Apr 23 11:20:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (ParseTag): Always set *NONBRANCHP.

21 Apr 1997  Jim Kingdon

	* client.c (update_entries), rcs.c (expand_keywords): Rewrite
	test to avoid signed/unsigned warning.

Mon Apr 21 09:02:22 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (patch_file): Add comment about whether auto-detecting
	features of the DIFF program is a good idea.

Mon Apr 21 00:03:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	Don't require the patch program:
	* client.c (struct update_entries_data): Add
	UPDATE_ENTRIES_RCS_DIFF to contents enum.
	(update_entries): Handle UPDATE_ENTRIES_RCS_DIFF.
	(handle_rcs_diff): New static function.
	(responses): Add "Rcs-diff".
	* server.c (server_updated): Handle SERVER_RCS_DIFF.
	(server_use_rcs_diff): New function.
	* server.h (enum server_updated_arg4): Add SERVER_RCS_DIFF.
	(server_use_rcs_diff): Declare.
	* update.c (rcs_diff_patches): New static variable.
	(update): Set rcs_diff_patches.
	(update_fileproc): If rcs_diff_patches, pass SERVER_RCS_DIFF
	rather than SERVER_PATCHED to server_updated.
	(patch_file): Correct initial comment to say diff rather than
	rcsdiff.  If rcs_diff_options, pass -n to diff rather than -c.
	* rcs.c (rcs_change_text): New function.
	* rcs.h (rcs_change_text): Declare.

Mon Apr 21 00:08:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* diff.c (diff_fileproc): Add comment concerning updating the
	client timestamp.

Sun Apr 20 23:20:37 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* commit.c (commit): Add comment regarding SEND_FORCE rationale.

Sat Apr 19 17:10:36 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (dirswitch): If directory ends in '/', complain.

Fri Apr 18 18:09:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* rcs.c (apply_rcs_changes): New static function, broken out of
	RCS_deltas.
	(RCS_deltas): Call it.
	(linevector_add): Change return type to int.  Return an indication
	of an error for an invalid add, rather than calling error.

Fri Apr 18 11:24:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.9.

	* version.c: Version 1.9.8.

	* commit.c (struct find_data): Add field force.
	(find_fileproc, commit): Use it instead of force_ci to decide
	whether to send files to server.
	(commit): Set it if either -f or -r is specified.
	* sanity.sh (basica): Add tests basica-8a0, basica-8a1, and
	basica-8a2; tests for above fix.

Wed Apr 16 11:50:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* zlib.c: Remove paragraph with Free Software Foundation address.
	See 2 Jan 1997 entry in ../ChangeLog for rationale.

Tue Apr 15 00:36:23 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (patch_file_write): Always assign to final_nl, so that
	it ends up reflecting whether the data from the last call had a
	newline, not whether the data from any of the calls ended in a
	newline.  Doesn't matter with the current RCS_checkout
	implementation, but it will if RCS_checkout is changed to pass
	less than the entire file.

	* rcs.c (RCS_cmp_file): Change NULL to RUN_TTY in passing sout to
	RCS_checkout, for clarity.

	* import.c (update_rcs_file): Remove unused variable ierrno.

	* add.c, checkout.c, commit.c, diff.c, edit.c, import.c,
	history.c, log.c, main.c, patch.c, release.c, remove.c, rtag.c,
	status.c, tag.c, update.c, watch.c: Pass "+" to all calls to
	getopt.  This ensures that we maintain existing behavior even with
	glibc2.

	* filesubr.c (fopen_case): Don't set *PATHP if we return an
	error.  Since the 9 Apr 1997 change, the behavior has been to
	sometimes set it and sometimes not.
	* rcs.c (RCS_parse): Adjust callers to not free it.  Without this
	change, they could call free() on an uninitialized variable.

	* checkout.c (checkout): Add comment about export -k.

	* root.c (check_root_consistent): Add comment about wording of
	message.

Mon Apr 14 11:51:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (call_in_directory): If rdirp reaches the end of
	reposdirname, then just set it to NULL.  If server does not create
	directories one at a time, give a warning.
	* sanity.sh (modules3): Enable tests modules3-8 through
	modules3-11 for remote; tests for above fix.

	* client.c (call_in_directory): Don't set short_pathname to
	pathname for a while; just use pathname itself (cleans up a relic
	of the old "Repository" (not "Directory") code).  Add comment
	explaining short_pathname.

Sun Apr 13 18:07:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* rcs.c (RCS_checkout): Add pfn and callerdat parameters.  Change
	all callers.  Move setting of expand after retrieval of file
	data.
	(struct cmp_file_data): Define.
	(RCS_cmp_file): New function.
	(cmp_file_buffer): New static function.
	* rcs.h (RCSCHECKOUTPROC): Define type.
	(RCS_checkout): Update declaration.
	(RCS_cmp_file): Define.
	* diff.c (diff_file_nodiff): Call RCS_cmp_file rather than
	RCS_checkout and xcmp.
	* import.c (update_rcs_file): Likewise.
	* no_diff.c (No_Difference): Likewise.
	* update.c (struct patch_file_data): Define.
	(patch_file): Just return if noexec, or if binary file.  Pass
	patch_file_write to RCS_checkout.  Don't check for newlines or
	compute checksums here.  Stat RCS file to set modes.
	(patch_file_write): New static function.

	* update.c (patch_file): Checkout directly to file2, rather than
	to finfo->file followed by rename.  Remove check for whether
	result of checkout is readable; that was for an old, obsolete,
	form of death support.

Sun Apr 13 13:16:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (build_one_dir): New function.
	(struct dir_to_build): New structure.
	(build_dirs_and_chir): Rewritten to accept a linked list of struct
	dir_to_build rather than the silly string processing we had been
	doing before.
	(checkout_proc): Rewrite code that calls build_dirs_and_chdir
	accordingly.
	* sanity.sh: Enable tests modules3-10 and modules3-11 for local CVS;
	tests for above fix.

	* rcs.h (RCS_CO): Removed; no longer used.

Sun Apr 13 00:04:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	Expand RCS keywords internally; never call co:
	* rcs.h (struct rcsversnode): Add state field.
	* rcs.c (kflags): Move out of RCS_check_kflag, and make file
	static.
	(enum kflag): Define.
	(RCS_reparsercsfile): Always save lock information.  Save state in
	new state field, rather than other field.
	(struct rcs_keyword): Define.
	(keywords): New static variable.
	(enum keyword): Define.
	(printable_date, escape_keyword_value): New static functions.
	(expand_keywords): New static function.
	(RCS_checkout): Call expand_keywords.  Don't call
	RCS_exec_checkout.
	(RCS_deltas): Add log and loglen parameters.  Change all callers.
	* log.c (log_version_requested): Use new state field.
	(log_version): Likewise.
	* cvs.h (RCS_exec_checkout): Don't declare.
	* rcscmds.c (RCS_exec_checkout): Remove.

Sat Apr 12 17:32:59 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh (modules3): Remove second-dir at end of tests.
	(sticky): Correct removal of directories at end of tests.

	* sanity.sh (keyword): New tests for RCS keyword expansion.

Sat Apr 12 16:47:13 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-1b, basicb-1c, basicb-9b,
	basic-9c test current build_dirs_and_chdir behavior.

Fri Apr 11 23:54:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): New tests modules3-7* test for ability to
	supply a path in -d in modules.  Similar to modules3-8 through
	modules3-11 except because the nesting is different, these ones
	work.

Thu Apr 10 00:14:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): New tests modules3-12 through modules3-15
	test use of a module name which contains a slash.

	* sanity.sh (basicb): New tests basicb-14 to basicb-20 test use of
	co -d with two or more arguments.

	* rcscmds.c: Refer to doc/RCSFILES in comment.

Wed Apr  9 09:49:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-11 through basicb-13 test
	ability to specify several directory levels in co -d (commented
	out).

	* filesubr.c (fopen_case): If CVS_OPENDIR gives an
	existence_error, return it to the caller instead of giving a fatal
	error.

	* client.c (update_entries): Fix typo in call to error (1 -> errno).

Tue Apr  8 23:02:22 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* error.h, error.c: Test for #ifdef __STDC__, not #if __STDC__.
	This is consistent with other parts of CVS; it means that the
	declaration for fperror will match the definition even if __STDC__
	is defined to 0 as the SunPro 4.0 compiler does.  Reported by
	Richard Smith <rjsmith@cisco.com>.

2 Apr 1997  Jim Kingdon

	* entries.c (ParseTag): Add "break;" after "default:" to avoid
	error from Visual C++.

Wed Apr  2 12:06:44 1997  Vince Del Vecchio  <vdelvecc@spd.analog.com>
			  and Jim Kingdon

	* client.c: In reporting errors from socket calls, use
 	SOCK_STRERROR and SOCK_ERRNO since strerror(errno) doesn't work
 	for Win32.

Tue Apr  8 10:45:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modules3): Add tests modules3-8 to modules3-11, to
	test for ability to supply a path to -d in modules.  Mostly
	commented out as CVS is buggy in this area.

Mon Apr  7 12:41:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Add comment about SEND_NO_CONTENTS.

Sun Apr  6 21:46:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (update): Add comment about noexec and SEND_NO_CONTENTS.

Sun Apr  6 17:34:08 1997  Robert Bihlmeyer  <robbe@orcus.priv.at>

	* Pass +f not f to getopt_long to prevent options from being
	permuted with glibc 2.0.1.

Sun Mar 30 00:07:05 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h (struct vers_ts): Adjust comment regarding ts_user.
	* server.c (serve_is_modified): New function.  Set entries to show
	that the file is modified but we don't know the contents.
	* server.c (requests): Add "Is-modified" request.
	* vers_ts.c (time_stamp_server): If the timestamp in entdata is
	"M" or "D", just copy that over into ts_user.
	* vers_ts.c (Version_TS): If timestamp is "D", use the entries
	line for the sole purpose of passing it to time_stamp_server.
	* no_diff.c (No_Difference): If ts_user is "M", conclude the files
	are different.
	* client.h, client.c (send_files): Replace arguments build_dirs
	and force with argument flags.  Add flag SEND_NO_CONTENTS and add
	to struct send_data.
	(send_fileproc): If no_contents, then send Is-modified instead of
	Modified.
	* add.c, admin.c, client.c, commit.c, diff.c, edit.c, log.c,
	rcs.c, remove.c, status.c, tag.c, update.c, watch.c: Change all
	send_files callers.

Fri Mar 28 22:32:25 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (requests): Change "Repository" to rq_optional.  I'm
	not sure whether I overlooked this when I removed support for
	Repository, or whether I was thinking that servers would need to
	support it anyway, for CVS 1.5 to 1.9 clients, but making it
	optional doesn't prevent the server from supporting it and it
	seems silly for the client to complain about absence of a request
	that it never will use.

Fri Mar 28 10:06:59 1997  Steven Miller  <Miller@wingra.com>

	* entries.c (Subdirs_Known): Don't create Entries.Log if noexec.

Thu Mar 27 18:14:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh (death2): Remove commented out test death2-21.  It
	would now pass, but it duplicates the new test sticky-11.

Thu Mar 27 10:21:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (dotest_internal): Write test output to logfile even
	if test succeeds.  This was the behavior prior to 30 Sep 1996.
	See the comment for rationale.

Tue Mar 25 13:26:52 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* cvs.h, entries.c (WriteTag): Add arguments nonbranch,
	update_dir, and repository.  Move the server_set_sticky call from
	callers to here.
	* cvs.h, create_adm.c (Create_Admin): New argument nonbranch.
	* cvs.h, entries.c (ParseTag): Add argument nonbranchp.
	* cvs.h (struct stickydirtag): Add field nonbranch.
	* entries.c (Entries_Open): Set it.
	* cvs.h (Vers_TS): Add field nonbranch.
	* vers_ts.c (Version_TS): Copy it from struct stickydirtag.
	* server.c, server.h (server_set_sticky): Add argument nonbranch.
	* add.c, client.c, checkout.c, modules.c, update.c, create_adm.c,
	commit.c: Update callers.
	* add.c (add): If nonbranch, don't add the file on that "branch".
	* commit.c (write_dirnonbranch): New variable.
	(commit_fileproc, commit): Set it.
	(commit_dirleaveproc): Pass it to WriteTag.
	* update.c (rewrite_tag, nonbranch): New variables.
	(update, update_dirent_proc, update_fileproc): Set them.
	(update_filesdoneproc): If rewrite_tag, call WriteTag.
	* sanity.sh (sticky): New tests, test for above fix.

	* version.c: Change version number to 1.9.7.

	* version.c: Version 1.9.6.

Mon Mar 24 13:02:04 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* entries.c (ParseTag): Add comment about unrecognized characters
	in CVS/Tag file.

	* classify.c (Classify_File): Add comment about how specifying a
	tag (bogusly?) suppresses certain messages.

Fri Mar 21 13:37:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* rcs.h (struct rcsnode): Add comment about case of PATH.
	* rcs.c (RCS_parse): If ign_case, then try opening the file with
	fopen_case.
	* ignore.c (ign_case): Adjust comment.
	* cvs.h, filesubr.c (cvs_casecmp, fopen_case): New functions.

20 Mar 1997  Jim Kingdon

	* client.c (send_repository): When sending Directory request,
	send any ISDIRSEP character as '/'.  Fixes
	"cvs log foo\bar\baz.c" on NT & friends.

	* client.c (send_file_names): Don't try to read Entries file if
	CVSADM directory does not exist.  Fixes fairly serious regression
	(warning on all fresh checkouts) introduced by 1997-01-08 change.

Tue Mar 18 13:03:33 1997  Jim Meyering  <meyering@totoro.cyclic.com>

	* sanity.sh (RCSINIT): Define to be empty and export, to hide any
	existing value that might cause spurious failures.

	* Makefile.in: (install): Depend on installdirs.
	Remove `CYGNUS LOCAL' comment saying not to.

Tue Mar 18 09:36:26 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* recurse.c (struct recursion_frame): Reindent.
	(do_dir_proc): Print message if we try to recurse into a CVSADM
	directory.
	* sanity.sh (basicb): New test basicb-4a tests for above fix.

Sun Mar 16 10:18:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (death2): Replace regexp matching temporary file name
	with new variable ${tempname}.  For most of the tests this is a
	cosmetic change, but death2-diff-6 had been missing _ which caused
	it to fail on Solaris (at least sometimes).

	* sanity.sh (modes): Don't use export -n; it doesn't seem
	to be sufficiently portable.

	* version.c: Change version number to 1.9.5.

	* version.c: Version 1.9.4.

	* rcscmds.c (RCS_checkin): Preserve the mode of the rcsfile.
	RCS_CI usually, but not always, does this for us.
	* commit.c (fix_rcs_modes): Replace algorithm with a more
	CVSUMASK-friendly one.
	* sanity.sh (modes): Update tests modes-5, modes-7, modes-10, and
	modes-15 so they test that CVSUMASK is honored.

Sun Mar 16 10:18:28 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modes): New tests modes-7a and modes-7b test behavior
	if one manually changes the modes in the repository.

	* server.c (server): Revise code which checks for errors creating
	temporary directory.  This won't solve the intermittent
	  can't create temporary directory
	  Unknown error -1
	but it will mean (a) the right message based on errno gets
	printed, instead of "unknown error -1", and (b) the message says
	that it happened in chmod instead of mkdir_p.

Sat Mar 15 16:47:12 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (modes): New tests.  Note that (for now) these are
	just testing how CVS already behaves; I want to record that before
	I move on to changing CVS's behavior with modes of RCS files.

13 Mar 1997  Jim Kingdon

	* subr.c (line2argv): Change argv_allocated from size_t to int.

Wed Mar 12 22:16:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add_directory): If repository has an extraneous "."
	directory at the end, strip it off.  This fixes a bug which was
	introduced when strip_path was nuked (this fix is much more
	limited in scope than strip_path was; I _think_ that is a good
	thing).
	(add): Likewise, for client.
	(combine_dir): New function, helps with above.
	* sanity.sh (modules3): Reenable tests for this behavior.
	(basica-0b, basicb-0e): Adjust test to reflect "foo/bar" instead
	of "foo/./bar" in message.  As with the rest of this, I believe
	this is just restoring the behavior prior to the strip_path nuking
	(I tried it with CVS 1.9).

Sun Mar  9 10:06:29 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* root.c (parse_cvsroot), server.c (serve_root, serve_init):
	If CVSroot_directory is not an absolute pathname, give a fatal error.
	* sanity.sh (crerepos): New tests crerepos-6* test for above fixes.

Sat Mar  8 22:06:17 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	This cleans up the last known code which can overflow its buffers
	(except the Mac client).  I've skimmed through much of CVS looking
	for other such places; but I didn't read everything.  If I missed
	any please report it to bug-cvs.
	* logmsg.c (logfile_write, title_proc): Realloc str_list as
	needed; don't assume MAXLISTLEN is enough.
	* cvs.h (MAXLISTLEN, MAXFILEPERDIR): Removed; no longer used.
	* add.c, myndbm.c, parseinfo.c, update.c: Nuke MAXLINELEN limit.
	* parseinfo.c, update.c, mkmodules.c: Check for errors reading file.
	* cvs.h (MAXLINELEN): Removed; no longer used.
	* logmsg (MAXHOSTNAMELEN): Removed; not used.
	* main.c (cmd_synonyms): Allocate based on fullname, nick1, and
	nick2, just in case someone makes those big enough so that 100
	bytes is not enough.
	(Make_Date): Use MAXDATELEN rather than our own fixed size.
	* mkmodules.c (mkmodules): Nuke arbitrary limit on line length.
	* rcs.c (ALLOCINCR): Remove; not used.
	(RCS_check_kflag): Add comment concerning karg size.
	* run.c: Allocate run_prog to the needed size, rather than
	allocating a fixed size buffer.

Fri Mar  7 22:39:08 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* logmsg.c (logfile_write): Allocate prog to needed length rather
	than assuming MAXPROGLEN is enough.
	* cvs.h (MAXPROGLEN): Removed; no longer used.
	* subr.c (MIN_INCR): Update comment to reflect MAXPROGLEN's demise.

	* subr.c (free_names): Fix comment: this function is not used to
	free memory allocated by Find_Names (at least it hasn't for a long
	time).
	* subr.c, cvs.h (line2argv): Change calling convention so that we
	allocate argv array rather than the caller.  The previous one had
	no way of checking whether we overflowed the passed-in buffer.
	* subr.c (free_names): Free the argv array too.
	* modules.c (do_module, cat_module): Update callers.

Thu Mar  6 12:44:42 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c: Allocate vhead and vbranch dynamically; removes
	arbitrary limit.
	* history.c: Likewise (since_rev, since_tag, backto, rec_types).
	* ignore.c: Likewise (line).  Also check for errors from getline
	and add 'copyright' notice to top of file.
	* wrapper.c (wrap_add_file): Likewise (line).  Also check for
	errors from various calls and add 'copyright' notice to top of file.

Tue Mar  4 17:39:15 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (update_entries): Add comment about "move away <file>"
	message.

Mon Mar  3 21:51:40 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): Clean up topfile,v at end of test.  Fixes
	failure in modules-155b.

Sun Mar  2 18:11:09 1997  Dan Wilder  <dan@gasboy.com>
			  and Jim Kingdon

	* admin.c (admin): Arrange to perform recursion if "cvs admin"
	is passed only options.

Sun Mar  2 18:11:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (basicb): New tests basicb-0* test for files at top
	level.

	* error.c (error): Add newline to "out of memory" message.  I think
	that its omission probably could cause the message to be lost in
	the bowels of server.c and never passed to the user.

	* client.c (start_rsh_server): Add comment about "remsh" vs. "rsh".

	* cvs.h: Move copyright notice to top of file.

Sun Mar  2 13:44:36 1997  Ian Lance Taylor  <ian@cygnus.com>

	* sanity.sh: Use -n when testing whether rsh works.

	* server.c (serve_root): Free path.

Sun Mar  2 13:12:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	The following are things that I noticed in the process of trying
	to track down:
	  can't create temporary directory
	  Unknown error -1
	  FAIL: test 28
	from nightly testing.  I'm not sure that either item explains that
	message however.
	* server.c (server): Allocate pending_error_text;
	print_pending_error will try to free it so
	  pending_error_text = "foo"
	won't work.
	(mkdir_p): Don't assume that isdir will leave errno unmolested.

Thu Feb 27 15:29:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* remove.c (cvsremove): When forcing removal in client mode, use
	start_recursion rather than calling CVS_UNLINK on each argument.
	(remove_force_fileproc): New static function.
	* sanity.sh (deep): Add tests deep-rm7 through deep-rm10 for above
	patch.

	* sanity.sh (death): Enable death-76a0 and death-76a1 tests for
	remote, since they now work.

Wed Feb 26 16:13:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (add_prune_candidate): Skip adding this directory if
	it is the same as the first directory already on the list.

Mon Feb 24 21:36:43 1997  Noel Cragg  <noel@gargle.rain.org>

	* main.c (lookup_command_attribute): Add the "init" command to the
 	list of commands that don't use the current working directory.

Sun Feb 23 09:54:49 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (devcom3): Clean up at end of test.

	* sanity.sh (basicb): Add commented out test basicb-8a0, for
	whether CVS can print an error on bad numeric revision to diff.
	Commented out until we get around to fixing CVS.
	* diff.c (diff_file_nodiff): Add comment about this case.

	* fileattr.c (fileattr_read): If a filename is duplicated,
	continue to ignore subsequent lines but free the node so that we
	don't leak memory.
	* sanity.sh (devcom3): New tests devcom3-8 and devcom3-9 test for
	behavior on duplicated filenames.

	* fileattr.h: Add comment about unrecognized ENT-TYPE and order of
	lines in fileattr file.
	* fileattr.c (struct unrecog, unrecog_head): New variables, to
	record unrecognized lines.
	(fileattr_startdir): Assert that unrecog_head == NULL.
	(fileattr_read): Record unrecognized lines in unrecog_head linked
	list rather than ignoring them.
	(fileattr_write): Also write out unrecognized lines, if any.
	* sanity.sh (devcom3): New tests, test for above fix.

	* fileattr.h (fileattr_modify): Fix example in comment.

Sat Feb 22 08:30:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Add variable username.
	(basica rdiff multibranch log log2): Use it instead of our own
	(inconsistent) ways of matching an author name.

	* filesubr.c, root.c, rtag.c, server.c, subr.c, update.c,
	wrapper.c: Nuke PATH_MAX.
	* cvs.h, wrapper.c (wrap_fromcvs_process_file): Now returns void
	(return value had been unused).
	* cvs.h: Adjust comment to reflect the fact that PATH_MAX is
	gone, at least from src/*.c (except safe_location, as noted).

22 Feb 1997  patch by Tom Hageman  <tom@basil.icce.rug.nl> (4 Jun 1996)
	updated and commented by Jim Kingdon  <kingdon@harvey.cyclic.com>

	* update.c (checkout_file): Call unlink_file_dir on backup, not
	unlink_file.

Fri Feb 21 16:40:03 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in (DISTFILES): Remove NOTES.

	* NOTES: Removed.  bcopy->memcpy is done.  "static buffers" I
	assume refers to what is covered by reentrancy text in HACKING.
 	Obstack idea moved to comment in hash.c (at nodecache).  Checking
	system calls for error returns largely done, and isn't a very
	helpful suggestion unless you know where the bogus calls are
	anyway.  Sizing limits--we're in the progress of removing them
	(assuming it meant things like PATH_MAX and earlier, already
	nuked, limits).  Removed various items about changes which were
	done a long time ago (I realize that the ChangeLog's probably
	aren't reliable that far back, but I'm not convinced anyone cares
	anymore).  CONFIRM_DIRECTORY_ADDS: I assume this is a
	reference to the #if 0'd code in add_directory which asks for
	confirmation--a better way of making it harder to accidentally add
	directories would be to have to add and commit directories like
	for files.  I don't know what FORCE_MESSAGE_ON_ADD meant.

	* rcs.c (RCS_getrevtime): Fix documentation (in particular, the
	size of the array that DATE must point to, but many other things
	too).
	* patch.c, recurse.c, release.c, remove.c, repos.c: Nuke PATH_MAX.
	(patch_fileproc): Use MAXDATELEN not hardcoded 50.

Sun Feb 16 12:00:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (client_process_import_file): New variable fullname;
	pass it to send_modified.  This finishes the job of untangling the
	old short_pathname variable into update_dir vs. fullname.

	* client.c (client_process_import_file): Nuke first_time.  If
	toplevel_repos were ever NULL here, the code would dump core in
	strncmp a few lines down.  And client_import_setup ensures
	toplevel_repos is not NULL.

Sun Feb 16 08:16:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* client.c (client_process_import_file): Rename short_pathname to
	update_dir (to reflect its function) and make sure that it doesn't
	point to uninitialized memory if repository and toplevel_repos
	contain the same string.

Sun Feb 16 08:16:48 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (start_rsh_server): Nuke comment about weirdnesses with
	pre-1.5 versions of CVS and .bashrc/.cshrc.  The remote protocol
	is interoperable only back to 1.5, and people who need to know are
	unlikely to see this comment anyway.

Sun Dec 15 13:12:30 1996  Michael Douglass <mikedoug@texas.net>
			  and Jim Kingdon  <kingdon@harvey.cyclic.com>

	* main.c (cmds): Added an entry for new logout command.
	(cmd_usage): Added an entry for new logout command.
	(lookup_command_attribute): Added 'logout' to list of commands
	that set need_to_crate_root to 1.
	* login.c, cvs.h (logout): New command for removing entries from
	the .cvspass file.
	(logout_usage): Usage information on the logout command.

Wed Feb 12 11:19:42 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (struct send_data): Fix indentation.

Wed Feb 12 08:48:04 1997  Greg A. Woods  <woods@most.weird.com>

	* mkmodules.c (loginfo_contents): add missing comma in
	initializer statement (caused syntax error on SunOS-4).

Tue Feb 11 21:14:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* commit.c (find_fileproc): If force_ci is set, set the status to
	T_MODIFIED even if the file hasn't changed.
	(commit): Pass force_ci to send_files as new force argument.
	* client.c (struct send_data): Define.
	(send_fileproc): The callerdat parameter now points to a send_data
	struct.  If force is set, always call send_modified.
	(send_dirent_proc): The callerdat parameter now points to a
	send_data struct.
	(send_files): Add force parameter. Change all callers.  Set up a
	send_data struct and pass it to start_recursion as callerdat.
	* client.h (send_files): Update declaration.
	* sanity.sh (basica): Add a simple test for the above patch.

Sun Feb  9 12:58:59 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* tag.c (cvstag), rtag.c (rtag): Pass -f to server if specified in
	the client.  I haven't tried to come up with a test case because
	the fix seems obvious.

	* import.c (add_rcs_file): Change size of altdate1 and altdate2 to
	MAXDATELEN.
	* cvs.h (MAXDATELEN): Fix comments; describe what this is for.

	* diff.c (diff_usage): Document --ifdef and try to briefly say
	what "rcsdiff-options" means.

	* update.c (update): If update had a nonzero status and we haven't
	yet tried to fetch unpatchable files, go ahead and try it again.
	The previous behavior was to quit, which meant that updates would
	keep failing until you hacked around the problem.  Patch and bug
	report by Ian; comment, ChangeLog entry, and willingness to take
	the flak if checking it is premature by Jim.

	* server.c (alloc_pending): New function.
	* server.c: Call it.  Fixes places where we had neglected to
	check for NULL return from malloc.

	* sanity.sh (binwrap): Add test binwrap-0, tests for import.c fix
	below.

Sun, 9 Feb 1997 (submitted 19 Jul 1996)  John Polstra  <jdp@polstra.com>

	* import.c (import): Give error if the same tag is specified more
	than once.  The previous behavior was to write an RCS file which
	had the same tag listed twice, once pointing to each revision,
	which is not legal.

Sun Feb  9 12:37:09 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkin.c (Checkin): Use cvs_output to print message (should
	make out of order bugs no worse, as it merely substitues a
	protocol_pipe vs. stderr_pipe race instead of a stdout_pipe
	vs. stderr_pipe race).  Add comment about stdout vs. stderr.

Fri Feb  7 08:29:52 1997  Josef Nelissen  <josef.nelissen@munich.ixos.de>

	* server.c (check_command_legal_p): Don't use ANSI-style definition.

Thu Feb  6 10:55:37 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* patch.c (patch): Give a fatal error for -V option (see comment
	for rationale).

	* diff.c (diff): Also send "options" to server.  Pretty much the
	patch submitted independently by josef.nelissen@munich.ixos.de and
	Ronald Khoo <ronald@demon.net>.

Wed Feb  5 18:57:14 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* modules.c (do_module): Fix typo in 30 Jan 97 PATH_MAX nuking
	(free -> free_cwd).  Testsuite test 151 gets credit for catching
	this one.

Mon Feb  3 16:14:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* main.c (lookup_command_attribute): Don't use an ANSI prototype
	when defining the function.

Fri Jan 31 12:49:02 1997  Ian Lance Taylor <ian@cygnus.com>

	* modules.c (do_module): Actually goto found if is_found is set
	(fixes thinko in PATH_MAX nuking of 30 Jan 97).

Fri Jan 31 12:49:02 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh: Add modules3 and big to list of tests to run
	by default; they were omitted by accident.

Thu Jan 30 11:46:33 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* logmsg.c, main.c, mkmodules.c, modules.c, parseinfo.c, patch.c:
	Nuke more PATH_MAX.

	* server.c (server_updated): After we send Created or
	Update-existing for a file, mark it as unchanged, in case we
	process it again.
	* sanity.sh (modules3): New tests, test for above fix.

	* logmsg.c (do_verify): Error return from fopen is NULL, not -1.
	Pass errno to error().

	* login.c [_CRAY]: Don't declare getpass.

Mon Jan 27 17:25:27 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* import.c (process_import_file): Fix freeing of rcs (Don't free
	it before we are done using it, and don't free it twice).

	* modules.c (cat_module): Allocate line right before we use
	it.  The previous code was wrong because the length of the
	s_h->rest changes between the time we allocate line and the time we
	sprintf s_h->rest into it.

Sun Jan 26 21:58:16 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* expand_path.c (expand_path): Revise to call expand_string as
	needed.  Nuke PATH_MAX.
	* find_names.c (find_dirs): Likewise.
	* import.c, lock.c: Nuke more PATH_MAX.

	* server.c (mkdir_p): Set retval to 0 at start of function.
	Previously it had been uninitialized for some cases.  Thanks are
	due to nightly testing for catching this one.

Sat Jan 25 21:34:19 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* subr.c, cvs.h (expand_string): New function.
	* rcs.c (getrcskey, getrcsrev): Call it.  This greatly reduces the
	number of calls to realloc if there is a very large file in the
	RCS file.  Credit goes to Mike Heath <mike@pswtech.com> for
	pointing out the problem and the basic solution (MIN_INCR,
	MAX_INCR); I adapted it into the separate function expand_string.
	* sanity.sh (big): New test helps insure this hasn't broken
	anything obvious.

Wed Jan 22 10:06:13 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* status.c (status_fileproc): Change message which is printed for
	T_MODIFIED and ts_conflict set, so that it doesn't say "unresolved
	confict".  This message occurs whether the conflict is resolved or
	not.
	* sanity.sh (conflicts): Add tests conflicts-status-* to test
	output of "cvs status" in the context of conflicts.  Tests for
	above fix.

	* rtag.c (rtag): Send -n if run_module_prog is NOT true.

Thu Jan 16 00:06:00 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* version.c: Change version number to 1.9.3.

	* version.c: Version 1.9.2.

Wed Jan 15 09:14:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* client.c (call_in_directory): Take code that creates CVSADM at
	top level, move it before the CVS_CHDIR (dir_name) call, and do it
	regardless of whether dir_name is ".".  Pass "." not dir_name to
	Create_Admin (when the code was written they were always the
	same).  Don't add reposdirname to the repository we pass to
	Create_Admin (when the code was written, I think reposdirname
	probably would always be ".").  Don't create CVSADM if
	reposdirname_absolute.
	* sanity.sh (basicb): Enable tests basicb-1a and basicb-9a for
	remote; tests for above fix.
	(basic1): Do entire test within a "1" directory to deal with
	creation of CVS directories at top level.  Support --keep.
	(conflicts): In test conflicts-136, only update first-dir.
	(basica): Uncomment the part that tests "cvs co -l .".  That tests
	the existing functionality which I might have (but hopefully did not)
	perturbed with the call_in_directory changes.

Mon Jan 13 11:04:32 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* server.c (check_command_legal_p): Do not call error (1, ...)
 	here; that will always cause a protocol violation by shutting down
	the connection prematurely.  Remove croak_on_illegal arg.
	(do_cvs_command): Move call to check_command_legal_p until after
	the call to print_pending_error.  Print the error message ourself.

	* mkmodules.c (filelist): Add readers and writers.  Add comment
	about why passwd is not included.  Add comment about meaning of
	NULL contents field.

Fri Jan 10 13:23:09 1997  Norbert Kiesel  <nk@col.sw-ley.de>

	* release.c (release): Initialize delete_flag before reading it
	(found by running purify)

	* logmsg.c (do_verify): Fix reading unallocated memory (found by
 	running purify)

Thu Jan  9 16:32:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* checkout.c (build_dirs_and_chdir): Partially revert 3 Jan
	change--move call to Subdir_Register back above the CVS_CHDIR call
	(we need to register in the old, not the new, directory).  Instead
	of calling CVS_MKDIR and ignoring errors, call mkdir_if_needed;
	this is an effort to catch errors there rather than catching them
	in the CVS_CHDIR.  This makes test 27-add-add in sanity.sh work
	again.

	* find_names.c (Find_Directories): Remove code inside
	#ifdef ATTIC_DIR_SUPPORT and replace it with a comment explaining
	why we don't look in the attic.  ATTIC_DIR_SUPPORT was never defined.

	* find_names.c (find_dirs): Add comment about tmp being unset.

	* commit.c (checkaddfile): Report errors with errno and specific
	error messages.

	* rcs.c, commit.c, create_adm.c, entries.c, find_names.c,
	ignore.c, history.c: Nuke PATH_MAX arbitrary limits.

Wed Jan  8 23:07:41 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* add.c (add): Reindent a portion which needed it.

1997-01-08  Jim Kingdon

	* client.c (send_file_names): When looking name up in Entries,
	call Entries_Open and Entries_Close.  This has two effects:
	(1) we look at Entries.Log, and (2) we don't skip 'D' entries,
	both of which are needed to make us get the right (command
	line) name for a directory we are adding.

Wed Jan  8 14:50:47 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in, cvs.h, hash.h, myndbm.h, rcs.h: Remove CVSid; we
	decided to get rid of these some time ago.

Tue Jan  7 12:56:10 1997  Karl Fogel  <kfogel@ynu38.ynu.edu.cn>

        * root.c (check_root_consistent): new func, compares below new
        global var with CVSroot_directory, assuming both set.
        (set_local_cvsroot): use above new func for security check.
        (parse_cvsroot): same.
        But do all of above only #ifdef AUTH_SERVER_SUPPORT.

        * server.c: (Pserver_Repos): new global var, init to NULL.
        (pserver_authenticate_connection): set above new global.
        (check_repository_password): be a good scout and use
        CVSROOTADM and CVSROOTADM_PASSWD, now that they are the standard.
        Make sure all of above is in #ifdef AUTH_SERVER_SUPPORT.
        (check_command_legal_p): wrap most of body in #ifdef
        AUTH_SERVER_SUPPORT.
        Everywhere: wrap all references to CVS_Username in #ifdef
        AUTH_SERVER_SUPPORT.

        * cvs.h (Pserver_Repos): new var, used in consistency [security]
        check.  Defined only #ifdef AUTH_SERVER_SUPPORT.
        (CVSROOTADM_PASSWD): new #define, trying to get with the program.

Fri Jan  3 18:10:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* checkout.c (build_dirs_and_chdir): Move call to Subdir_Register
	until after we know that the directory exists.

Thu Jan  2 13:30:56 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in, cvsbug.sh, edit.c, edit.h, error.c, error.h,
	fileattr.c, fileattr.h, filesubr.c, run.c, update.h, watch.c,
	watch.h: Remove "675" paragraph; see ../ChangeLog for rationale.

Thu Jan  2 12:27:46 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* sanity.sh (info): New test info-cleanup-verifymsg gets rid of
	verifymsg when we are done with it.

	* sanity.sh (basicb): Skip tests basicb-1a and basicb-9a for remote.
	* sanity.sh (modules-155a4): It is OK if a CVS directory exists.
	* sanity.sh (ignore): Do everything inside a "1" directory.  The
	change to create CVS directories at top-level causes messages such as
	"? home" otherwise.  In test 191, specify -I CVS so that new CVS
	directory is ignored.
	* sanity.sh (crerepos): Manually remove CVS directory which had not
	existed before.

Thu Jan  2 09:06:20 1997  Karl Fogel  <kfogel@ynu38.ynu.edu.cn>

        * server.c: Changes for pserver read-only repository access:
        (check_command_legal_p): new func.  Right now, just checks if
        repository modification is permitted, and that only if pserver is
        active.
        (do_cvs_command): take new parameter `cmd_name', a string.  All
        callers changed.  Pass it on to new func check_command_legal_p()
        before executing the command.
        (CVS_Username): new global, init to NULL.  Used by
        check_command_legal_p(), set in check_password().
        (check_password): set above new global CVS_Username; reorganized a
        bit to facilitate this.
        (check_repository_password): give *host_user_ptr permanent
        storage iff success.

        * main.c: Changes for pserver read-only repository access:
        (lookup_command_attribute): new func.
        (main): use new func lookup_command_attribute() to establish if
        CVS_CMD_IGNORE_ADMROOT and CVS_CMD_USES_WORK_DIR.

        * cvs.h: Changes for pserver read-only repository access:
        (CVSROOTADM_READERS, CVSROOTADM_WRITERS): new #defines.
        Prototype lookup_command_attribute().
        (CVS_CMD_IGNORE_ADMROOT, CVS_CMD_USES_WORK_DIR,
        CVS_CMD_MODIFIES_REPOSITORY): new #defines for
        lookup_command_attribute() and its callers.

Wed Jan  1 19:50:38 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* options.h.in: Reword comment for TMPDIR_DFLT to make it clear
	that this isn't specific to the pserver server.

	* modules.c (do_module): Give an error message if one tries to
	specify -a together with another option.
	* sanity.sh (modules2): New tests modules2-a* test for above fix.

	* sanity.sh (devcom): Add tests devcom-a-nonexist and
	devcom-t-nonexist for "cvs watchers" on nonexistent argument.

1997-01-01  Fred Fish  <fnf@ninemoons.com>

	* run.c (piped_child, filter_stream_through_program): Actually
	install these HAVE_VFORK patches that got missed.
	(There was a log entry for these changes for 29 Nov 1996 but it
	seems I accidentally forgot to actually check them in -kingdon).

Wed Jan  1 18:32:44 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>

	* Makefile.in: Add ChangeLog-96.
	* ChangeLog-96: New file, contains former contents of ChangeLog.
	* ChangeLog: Now just contains 1997 changes.


For older changes see ChangeLog-96.
