xref: /openbsd/gnu/usr.bin/cvs/src/ChangeLog (revision 43c1707e)
12001-04-27  Larry Jones  <larry.jones@sdrc.com>
2
3	* main.c (lookup_command_attribute): Lookup specified command, not
4	whatever's in the global command_name.
5
62001-04-25  Derek Price  <dprice@collab.net>
7
8	* Makefile.in: Regenerated using AM 1.4e as of today at 18:10 -0400.
9	* version.c: Regenerated.
10
112001-04-22  Larry Jones  <larry.jones@sdrc.com>
12
13	* tag.c (tag_check_valid): Make an unwritable val-tags file a
14	warning instead of a fatal error.
15
162001-04-20  Larry Jones  <larry.jones@sdrc.com>
17
18	* annotate.c (annotate_usage): -r and -D are not mutually exclusive.
19	* main.c (cmd_usage): Add missing version subcommand.
20	* update.c (update_usage): Add missing -C option.
21
22	* sanity.sh (death2): New tests for previous change.
23
24	* classify.c (Classify_File): Treat a dead revision like the RCS
25	file doesn't exist.
26	* sanity.sh: Update to match.
27
282001-04-16  Larry Jones  <larry.jones@sdrc.com>
29
30	* checkout.c, update.c: Fix usage messages: -r and -D are not
31	mutually exclusive.
32	(Suggested by David L. Martin <dlmart2@home.com>.)
33
34	* logmsg.c (do_editor): Don't add a blank line to the message.
35	* sanity.sh (editor-log-file*): Update to match.
36
37	* checkout.c, update.c: Note in usage message that -k is sticky.
38
39	* server.c: (server_cleanup, wait_sig): Remove ancient SunOS kludge.
40	(Suggested by Rob Saccoccio <robs@chelsea.net>.)
41
422001-04-04  Larry Jones  <larry.jones@sdrc.com>
43
44	* sanity.sh (dotest, dotest_lit, dotest_fail, dotest_status,
45	dotest_sort): Don't count on $? being set in then or else clauses.
46
47	* ignore.c (ignore_files): Collect unignored files into a list and
48	sort it before calling PROC to avoid order dependencies.  Rewrite
49	the while loop to allow normal continues instead of goto.
50
512001-04-04  Derek Price  <dprice@collab.net>
52
53	* sanity.sh (ignore-on-branch-3): Fix in the remote case.
54
552001-04-03  Larry Jones  <larry.jones@sdrc.com>
56
57	* update.c (update_fileproc): Remove unused variable (resurrecting).
58
592001-04-03  Derek Price  <dprice@collab.net>
60	    Larry Jones  <larry.jones@sdrc.com>
61	    reported by Jakob B�hm  <JB@Danware.dk>
62
63	* update.c (update_fileproc): Don't store a file with T_UNKNOWN status
64	in ignlist if present in the sandbox.
65	* sanity.sh (ignore-on-branch): New test.
66	(ignore): Tidy this test.
67
682001-04-02  Derek Price  <dprice@collab.net>
69
70	* sanity.sh: Make sure the test for `id' fails when a nonstandard `id'
71	is used and the user is root.  Fix some quoting in error messages.
72	(fork): Take `cvs' out of the PATH.
73	(TODO): Add note about the test suite not working with user names over
74	eight characters in length.
75
762001-04-02  Derek Price  <dprice@collab.net>
77
78	* sanity.sh (fork): New test for CVS_SERVER default.
79	(TODO): Note about eventually removing most of the references to
80	CVS_SERVER.
81
822001-04-02  Larry Jones  <larry.jones@sdrc.com>
83
84	* client.c (connect_to_forked_server): Use program_path as the default
85	server instead of "cvs".
86
872001-04-02  Derek Price  <dprice@collab.net>
88
89	* sanity.sh: Use less obfuscated English in my comment about sanity
90	checking sanity.sh.
91
922001-04-02  Derek Price  <dprice@collab.net>
93
94	* sanity.sh (rm-update-message): Create a test directory again but
95	change back to the correct directory upon completion this time.
96
972001-04-02  Derek Price  <dprice@collab.net>
98
99	* sanity.sh: Change last two '[.*]'s to 'test's for
100	consistency and remove...
101	(TODO): the note from the TODO list.
102
1032001-04-02  Derek Price  <dprice@collab.net>
104
105	* sanity.sh: Add test for PWD before successful exit.
106
1072001-03-30  Larry Jones  <larry.jones@sdrc.com>
108
109	* sanity.sh (rm-update-message): Remove duplicate code.
110
1112001-03-30  Derek Price  <dprice@collab.net>
112
113	* sanity.sh (rm-update-message): New test for local/client-server
114	warning message discrepency.
115
1162001-03-30  Larry Jones  <larry.jones@sdrc.com>
117
118	* annotate.c: Move annotate() here from rcs.c, support rannotate.
119	* Makefile.am, Makefile.in: Add annotate.c.
120	* main.c (cmds[], cmd_usage[]): Add rannotate.
121	* rcs.c: Move declarations of rcs_delta_op and RCS_deltas to...
122	* rcs.h:    ... here.
123	* server.c (serve_rannotate): New.
124	(requests[]): Add rannotate.
125	* sanity.sh (ann): New tests for rannotate.
126
127	* log.c (rlog_proc): Remove dead code.
128
1292001-03-30  Derek Price  <dprice@collab.net>
130
131	* sanity.sh (join-readonly-conflict): Run more of this through dotest.
132
1332001-03-30  Larry Jones  <larry.jones@sdrc.com>
134
135	* log.c (log_fileproc): Don't output working file for rlog.
136	* sanity.sh (log): New tests for rlog.
137
138	* cvs.h (mtype): Add MISC type.
139	* log.c (cvslog): Support rlog as well as log.
140	(rlog_proc): New.
141	* main.c (cmds[], cmd_usage[]): Add rlog.
142	(main): Remove old rlog warning message.
143	* server.c (serve_rlog): New.
144	(requests[]): Add rlog.
145
1462001-03-29  Derek Price  <dprice@collab.net>
147
148	* sanity.sh: cd to $TESTDIR once after it is normalized.  Make TODO
149	on history and symlinks more specific.  Tested properly this time.
150
1512001-03-29  Larry Jones  <larry.jones@sdrc.com>
152
153	* main.c (cmds[], lookup_command_attribute, main): Include the
154	command attributes in the global command table instead of inferring
155	them from the command names.  Change the sense of the
156	CVS_CMD_IGNORE_ADMROOT attribute to match its name.
157
1582001-03-29  Derek Price  <dprice@collab.net>
159
160	* sanity.sh (*, basic2-64): Remove references to TMPPWD.  Fix FIXME
161	at end of script now that $TESTDIR can't be relative.
162
1632001-03-29  Derek Price  <dprice@collab.net>
164
165	* sanity.sh: Normalize TESTDIR even when the user set it.
166
1672001-03-29  Larry Jones  <larry.jones@sdrc.com>
168
169	* client.c (connect_to_pserver, start_tcp_server): Add IP address
170	to connect failed message.
171	(connect_to_forked_server, connect_to_pserver, start_tcp_server): Add
172	trace messages ala start_rsh_server.
173	(start_rsh_server): Include entire command in trace message for
174	START_RSH_WITH_POPEN_RW like ! START_RSH_WITH_POPEN_RW does.
175
1762001-03-29  Derek Price  <dprice@collab.net>
177
178	* sanity.sh: Global search & replace ${TESTDIR}/cvsroot with
179	${CVSROOT_DIRNAME} for consistency.
180
1812001-03-29  Derek Price  <dprice@collab.net>
182
183	* sanity.sh (conflicts-12[68].5): Remove sanity hack which has allowed
184	for a CVS bug since May 96/97.  Not sure when the bug went bye-bye, but
185	the tests broke when $TESTDIR != $TMPPWD.
186
1872001-03-26  Larry Jones  <larry.jones@sdrc.com>
188
189	* classify.c (Classify_File): Don't report a conflict for a removed
190	file when piping.  Also simplify the code structure.
191	(Reported by Milos Kleint <milos.kleint@netbeans.com>.)
192	* sanity.sh (rmadd2-14[abc]): New tests for above.
193
1942001-03-24  Noel Cragg  <noel@shave.cnet.com>
195
196	* diff.c: mods to allow `-T' and `-y' options to be passed through
197	to the diff library.  This wasn't allowed earlier because of a
198	similarly named options that got passed through to the old rcs
199	programs.  We've long since stopped sending `-T' to any rcs
200	utility and have never used `-y'.  Any users of moldly CVS
201	versions which used to support `-T' have (hopefully) upgraded to
202	one where that option isn't supported.  It seems reasonable to
203	enable them again and pass them through.  (sanity.sh still works
204	anyways...)
205	(longopts): add short option equivalents for --initial-tab and
206	--side-by-side.
207	(diff): add new short options to getopt string and switch
208	statement.
209
2102001-03-22  Larry Jones  <larry.jones@sdrc.com>
211
212	* sanity.sh: Add check for ${DOTSTAR} with large matches.
213
2142001-03-23  Derek Price  <dprice@collab.net>
215
216	* sanity.sh: Do the same as below for $keep.
217
2182001-03-23  Derek Price  <dprice@collab.net>
219
220	* sanity.sh: Replace 'remote=(yes|no)' with 'remote=(:|false)' since
221	often 'false' and more often ':' are shell builtins.  This makes the
222	succinct, 'if $remote; then' faster than 'if test $remote = yes; then'.
223	Alter tests in the rest of the script to match the new usage.  Added
224	a suffix of 'r' to remote test names when it was appropriate and I
225	remembered.  Some reformatting.
226
2272001-03-22  Larry Jones  <larry.jones@sdrc.com>
228
229	* sanity.sh (diffmerge1_yours, diffmerge1_mine): Check for exact
230	output instead of using wildcards to avoid buffer overflows in some
231	versions of expr.
232
2332001-03-21  Derek Price  <dprice@collab.net>
234
235	* sanity.sh: cd to '/tmp' again rather than $HOME since HOME was set to
236	a value inside ${TESTDIR} by the script.
237
2382001-03-20  Derek Price  <dprice@collab.net>
239
240	* sanity.sh (diffmerge1): Minor formatting and syntax changes.
241
242	    for Jacob Burckhardt  <bjacob@ca.metsci.com>
243
244	* sanity.sh (diffmerge1): More merging behavior tests.  Specifically,
245	test some cases which broke before in Karl Tomlinson's diff fix was
246	checked in today.
247
2482001-03-20  Derek Price  <dprice@collab.net>
249
250	* sanity.sh: Don't use unescaped parens in sh outside of quotes.
251
2522001-03-20  Derek Price  <dprice@collab.net>
253
254	* sanity.sh: Don't remove ${TESTDIR} when -k (keep) set.
255
2562001-03-20  Derek Price  <dprice@collab.net>
257
258	* sanity.sh: Change usage to match the new getopts format and comment.
259
2602001-03-16  Derek Price  <dprice@collab.net>
261
262	* sanity.sh (modules2-nestedrename): New test.  Verifies behavior of
263	renames nested under an ampersand module.
264	(modules2-ampertag): New test.  Verifies an error condition which
265	prevents some ampersand modules from being checked out when a tag
266	is specified.
267
2682001-03-16  Derek Price  <dprice@collab.net>
269
270	* sanity.sh (modules2): Additional test for ampersand module behavior
271	with '-d'.
272
273	    for Greg Klanderman  <greg@itasoftware.com>
274
275	* checkout.c (build_one_dir): Fix typo where clauses of two
276	conditionals were reversed in call to Create_Admin.  This caused
277	the CVS/Tag file to be removed in cases where it should have been
278	set, and vice-versa.  It only surfaced in rare cases as this code
279	is only invoked when using the -d option to build the path to
280	check out in.  Further, the bug would only matter when checking
281	out a module containing ampersand modules within it, via
282	client/server CVS.
283
2842001-03-16  Derek Price  <dprice@collab.net>
285
286	* sanity.sh (admin-28-5): Confirm that a missing tag during an
287	'admin -n' operation is not a fatal error.
288
2892001-03-16  Derek Price  <dprice@collab.net>
290
291	* admin.c (admin_data): Remove 'quiet' member.
292	(admin_fileproc): Use global 'really_quiet' rather than
293	admin_data->quiet.
294
2952001-03-16  Derek Price  <dprice@collab.net>
296
297	* sanity.sh (admin): Replace hardcoded testdir path with the variable.
298
2992001-03-15  Derek Price  <derek.price@openavenue.com>
300
301	* sanity.sh (basica, binfiles, head, admin): Adjust for new messages.
302	* admin.c (admin_fileproc): Only print messages when not in
303	really_quiet mode.
304
305	    for Stephen Rasku  <stephen@tgivan.com>
306
307	* rcs.c (RCS_tag2rev): Make a missing tag a survivable error.
308
3092001-03-15  Larry Jones  <larry.jones@sdrc.com>
310
311	* subr.c (sleep_past): Fix various bugs that would result in a
312	negative sleep time if it weren't unsigned; since it is, it would
313	result in a very large sleep time.  Ensure that us is always less
314	than 1000000.  Don't try to sleep for more 1 sec with usleep.
315	Cast NULL select arguments to correct type just in case.
316
3172001-03-14  Derek Price  <derek.price@openavenue.com>
318
319	* subr.c (sleep_past): New function.
320	* client.c (get_responses_and_close): Use new function.
321	* commit.c (commit): Ditto.
322	* update.c (do_update): Ditto.
323	* cvs.h: Prototype new function.
324
325	* stamp-h2.in: Regenerated.
326
3272001-03-14  Derek Price  <derek.price@openavenue.com>
328
329	* Makefile.in: Regenerated.
330	* stamp-h2.in: Ditto.
331
3322001-03-14  Larry Jones  <larry.jones@sdrc.com>
333
334	* commit.c (check_fileproc): Allow adding on the trunk when there's
335	an existing non-Attic RCS file as long as the head revision is dead.
336	This can happen due to an aborted resurrection.
337	(commit_fileproc): When resurrecting, consider the dead revision
338	along with the other files' revisions.
339	(findmaxrev): Avoid unnecessary work.
340	(checkaddfile): Only warn if file isn't in Attic as expected.
341	(Reported by Ross Burton <r.burton@180sw.com>.)
342	* sanity.sh (basica-r*): New tests for above.
343	(basica-o4): Update to match.
344
3452001-03-09  Larry Jones  <larry.jones@sdrc.com>
346
347	* edit.c (edit_fileproc, unedit_fileproc): Some implementations of
348	asctime/ctime apparently use a leading zero on the date instead
349	of the space required by the C Standard.  Correct for this so that
350	shared working directories work without hassle.
351	(Reported by David L. Martin <dlmart2@home.com>.)
352	* entries.c (fgetentent): Ditto.
353	* vers_ts.c (time_stamp_server, time_stamp) Ditto.
354
3552001-03-07  Larry Jones  <larry.jones@sdrc.com>
356
357	* sanity.sh (basica, binfiles2, head, admin): Update to match
358	change to admin.c.
359
3602001-03-06  Larry Jones  <larry.jones@sdrc.com>
361
362	* client.c (recv_bytes): Handle EOF as in recv_line().
363	(Reported by Pavel Roskin <proski@gnu.org>.)
364
365	* admin.c (admin_fileproc): Change final error message to clarify
366	that CVS refused to modify the RCS file rather than being unable to.
367
3682001-02-28  Jim Meyering  <meyering@lucent.com>
369
370	* commit.c (commit_usage): Use `-F logfile' (rather than -F file') in
371	the description of that option, to be consistent with the `-F logfile'
372	in the Usage: line.  Use spaces instead of TAB characters, and realign.
373
3742001-03-02  Derek Price  <derek.price@openavenue.com>
375
376	* sanity.sh (crerepos): Make failed ${CVS_RSH-rsh} attempt print the
377	name of the command it actually used rather than 'rsh'.
378
3792001-02-27  Derek Price  <derek.price@openavenue.com>
380
381	* sanity.sh (modules2-ampermod-*): Added these tests to make sure the
382	top level directory is created in an ampermodule when '-n' is passed to
383	checkout.
384
385	original bug report from
386	    Wolfgang Haefelinger <Wolfgang.Haefelinger@Dresdner-Bank.com>
387
3882001-02-27  Derek Price  <derek.price@openavenue.com>
389
390	* sanity.sh (version-[12]): replace ' (client/server)' with .* in these
391	two tests so that 'make check' works with whatever client/server
392	options the executable was compiled with.
393
3942001-02-23  Derek Price  <derek.price@openavenue.com>
395
396	* main.c (main): Only check a cvsroot_t's isremote member when client
397	support is enabled.
398	* server.c: Include GSSAPI headers with client support as well as
399	server support.
400
4012001-02-21  Larry Jones  <larry.jones@sdrc.com>
402
403	* modules.c, cvs.h (do_module): Add build_dirs argument and use it
404	instead of run_module_prog.  Change all callers.
405	* tag.c (cvstag): For rtag, don't build directories.
406	* sanity.sh (modules3): Update to match.
407
4082001-02-20  Derek Price  <derek.price@openavenue.com>
409
410	* client.c: Use xgssapi.h.
411	* server.c: Ditto.
412
4132001-02-15  Derek Price  <derek.price@openavenue.com>
414
415	* Makefile.am (cvs_SOURCES): Correct error from yesterday.
416	* Makefile.in: Regenerated.
417
4182001-02-14  Derek Price  <derek.price@openavenue.com>
419
420	* server.c: Include xselect.h.
421	* update.c (do_update): Use best available sleep function.
422
4232001-02-14  Derek Price  <derek.price@openavenue.com>
424
425	* Makefile.am (cvs_SOURCES): Alphabetize and split to one/line.
426	(cvs_LDADD): Alphabetize and split to one/line.
427	* Makefile.in: Regenerated.
428
4292001-02-14  Larry Jones  <larry.jones@sdrc.com>
430
431	* build_src.com: Remove references to rtag.c & rtag.obj.
432
4332001-02-13  Derek Price  <derek.price@openavenue.com>
434
435	* main.c (date_to_tm): New function to convert an RCS date string to a
436	struct tm.
437	(tm_to_internet): New function to convert a struct tm to a date string
438	as specified by RFC822 and amended by RFC 1123.
439	(date_to_internet): Use the above two functions and a struct tm
440	intermediary for conversion.
441	* patch.c (patch_fileproc): Answer somebody's comment and use the new
442	diff_exec API.
443	* rcs.c (RCS_checkin): Use new diff_exec API.
444	(RCS_delete_revs): Use new diff_exec API.
445	(make_file_label): If the file name is DEVNULL, date it the Epoch for
446	compatibility with the POSIX.2 spec and Larry Wall's patch
447	implementation.
448	* rcscmds.c (diff_exec): Accept new label arguments.
449	* sanity.sh (death2): Update some diff tests to accept the new format.
450	* update.c (patch_file): Use new diff_exec API.
451	* diff.c (diff_fileproc): Create header labels appropriate for
452	compatibility with the Larry Wall version of patch.
453	(diff): Rename calls to strcat_and_allocate.
454	(strcat_and_allocate): Rename and move...
455	* subr.c (xrealloc_and_strcat): here.
456	* cvs.h: Update prototypes to match.
457
4582001-02-13  Derek Price  <derek.price@openavenue.com>
459
460	* Makefile.am (cvs_SOURCES): Remove rtag.c.
461
4622001-02-07  Larry Jones  <larry.jones@sdrc.com>
463
464	* sanity.sh (directory_cmp): Return status rather than setting ISDIFF.
465	(basic2): Rewrite using dotest.
466
4672001-02-06  Larry Jones  <larry.jones@sdrc.com>
468
469	* tag.c, rtag.c: Merge with tag.c being the surviving file.
470	* Makefile.in: Update to match.
471	* main.c (cmds): rtag() => cvstag().
472	* server.c (serve_rtag): Ditto, and set command name.
473
4742001-02-06  Derek Price  <derek.price@openavenue.com>
475	    Rex Jolliff  <Rex_Jolliff@notes.ymp.gov>
476	    Shawn Smith  <Shawn_Smith@notes.ymp.gov>
477
478	* add.c: Replace opendir, closedir, & readdir calls with CVS_OPENDIR,
479	CVS_CLOSEDIR, & CVS_READDIR in support of changes to handle VMS DEC C
480	5.7 {open,read,close}dir problems.  Check today's entry in the vms
481	subdir for more.
482	* filesubr.c: ditto
483	* find_names.c: ditto
484	* ignore.c: ditto
485	* import.c: ditto
486	* lock.c: ditto
487	* update.c: ditto
488
4892001-02-02  Larry Jones  <larry.jones@sdrc.com>
490
491	* error.h: Changed include guard macro from _error_h_ to ERROR_H;
492	names beginning with underscore are reserved.
493	* login.c (password_entry_parseline, password_entry_operation,
494	password_entry_operation_e, password_entry_operation_t): Removed
495	leading underscore(s).
496	(password_entry_parseline): Corrected error messages.
497	(password_entry_operation): Fixed uninitialized variable (password).
498	(login): Removed unused variable (found_password).
499
500	* rtag.c (rtag_proc): Call lock_tree_for_write() before calling
501	start_recursion.  This fixes a serious problem where do_recursion
502	was reading and caching RCS files without any locks in place and
503	that information was subsequently being used to rewrite the file
504	causing any intermediate changes to be lost.
505	(rtag_filesdoneproc): Defunct.
506	(Reported by Karl Tomlinson <k.tomlinson@auckland.ac.nz>.)
507	* tag.c (cvstag, tag_filesdoneproc): Ditto.
508	* lock.c (lock_tree_for_write): Add which argument, change all
509	callers to pass W_LOCAL.
510	* rcs.h: Ditto.
511
5122001-01-29  Derek Price  <derek.price@openavenue.com>
513
514	* client.c (get_cvs_port_number): change the prototype to accept a
515	const cvsroot_t * as input and add a FIXME comment
516	* cvs.h: new prototypes for get_cvs_port_number & normalize_cvsroot
517	* login.c (_password_entry_operation): consolidate all the ~/.cvspass
518	access into a single new function which reads ~/.cvspass in a backwards
519	compatible manner
520	(logout): use the new _password_entry_operation function
521	(login): ditto
522	(get_cvs_password): ditto
523	* root.c (normalize_cvsroot): move knowledge of default port & username
524	values inside
525
5262001-01-29  Larry Jones  <larry.jones@sdrc.com>
527
528	* subr.c (shell_escape): New function.
529	* cvs.h: Declare it.
530	* logmsg.c (logfile_write): Use it to avoid problems with filenames
531	containing "'".
532	(Reported by Gerhard Ahuis <gerhard@ats.xs4all.nl>.)
533
534	* server.c (outbuf_memory_error, pserver_authenticate_connection,
535	kserver_authenticate_connection): If available, use syslog() to
536	record some errors.
537
5382001-01-25  Larry Jones  <larry.jones@sdrc.com>
539
540	* server.c (do_cvs_command): If there's a partial output line left
541	over and the client doesn't support MT, go ahead and send it in an
542	M response instead of just dropping it.
543	(Reported by Milos Kleint <Milos.Kleint@netbeans.com>.)
544
545	* update.c (update_fileproc): Handle toss_local_changes in the
546	T_NEEDS_MERGE case.
547	(Inspired by Noel L Yap <yap_noel@jpmorgan.com>.)
548	* sanity.sh (clean): New tests for above.
549
5502001-01-23  Derek Price  <derek.price@openavenue.com>
551
552	* run.c (run_exec): flush, if used, stderr and stdout before exit
553	* server.c (cvs_flusherr): flush stderr & send a stderr flush command
554	on the protocol pipe
555	(cvs_flushout): like above, for stdout
556	(do_cvs_command): handle flushes properly
557	* sanity.sh (reserved): make the commitinfo script echo errors to
558	stderr rather than stdin
559
5602001-01-18  Larry Jones  <larry.jones@sdrc.com>
561
562	* log.c (option_revlist, revlist, log_usage, cvslog,
563	log_parse_revlist, log_expand_revlist, log_version_requested): Add
564	support for :: for exclusive ranges.
565	* admin.c (admin_usage): Reorder -o to be parallel to log -r.
566	* sanity.sh (log): New tests for above.
567
5682001-01-18  Derek Price  <derek.price@openavenue.com>
569
570	* main.c: Add '2001' to the range of copyright years listed by the
571	--version option
572	* version.c.in (version): check current_parsed_root before its isremote
573	member to avoid a core dump
574	* sanity.sh (version): add a test for the version command
575
576	* version.c: regenerated
577
5782001-01-12  Larry Jones  <larry.jones@sdrc.com>
579
580	* rcs.c, rcs.h (RCS_lock, RCS_unlock): Use RCS_gettag to find the
581	correct revision so that symbolic tags work correctly.  (This
582	requires removing the "const" from the rev parameter since it's
583	passed to RCS_gettag which might modify it.)
584	(Reported by irina sturm <irina.sturm@st.com>.)
585
5862001-01-11  Larry Jones  <larry.jones@sdrc.com>
587
588	* run.c (close_on_exec): Remove check for FD_CLOEXEC.  As far as I
589	can see, it's *never* been defined, which defeats the whole point.
590	If F_SETFD is defined, it's probably safe to use it.
591
592	* server.c (do_cvs_command): Call close_on_exec on the protocol and
593	flow control pipes in the child process so they don't get inherited
594	by any subsidiary processes.
595	(Reported by Tristan Gingold <tgi@netgem.com>.)
596
597	* cvs.h (free_cvsroot_t): Spell correctly (was free_CVSroot_t).
598
5992001-01-10  Derek Price  <derek.price@openavenue.com>
600	    Rex Jolliff  <Rex_Jolliff@notes.ymp.gov>
601
602	* build_src.com: VMS changes
603	* filesubr.c: replace calls to unlink() with CVS_UNLINK() for VMS
604	* rcs.c: ditto
605
6062001-01-10  Derek Price  <derek.price@openavenue.com>
607
608	* main.c (current_root): explicitly list this as a static global
609
6102001-01-10  Derek Price  <derek.price@openavenue.com>
611
612	* cvs.h (get_cvs_port_number): change name & prototype from
613	get_port_number
614	* client.c (get_cvs_port_number): new function which returns a port
615	number based on a cvsroot_t rather than requiring all possible sources
616	passed in
617	(connect_to_pserver): use new get_cvs_port_number function
618	(connect_to_server): ditto
619	* login.c (get_password): use new get_cvs_port_number function
620	(login): ditto
621	(logout): ditto
622
6232001-01-10  Derek Price  <derek.price@openavenue.com>
624
625	* Makefile.am ($(srcdir)/version.c): specify $(srcdir) for all subparts
626	of the build since some systems don't allow mv's across partitions
627	* Makefile.in: regenerated
628
6292001-01-10  Derek Price  <derek.price@openavenue.com>
630
631	* Makefile.am (version.c): specify $(srcdir) explicitly in target rule
632	so version.c gets built properly for all makes.
633	(version.o): specify $(srcdir)/version.c explicitly so dependency is
634	found and built properly
635	* Makefile.in: regenerated
636
6372001-01-09  Derek Price  <derek.price@openavenue.com>
638
639	* version.c: updated timestamp
640
6412001-01-09  Larry Jones  <larry.jones@sdrc.com>
642
643	* server.c (server): Change to server_temp_dir immediately after
644	creating it so that any stray files that happen to be created go
645	there instead of in the server's initial directory, wherever that
646	may be.
647	* sanity.sh (modules5-15): Update to match.
648
649	* version.c.in: Update to match Derek's change to version.c.
650
6512001-01-09  Derek Price  <derek.price@openavenue.com>
652
653	* cvs.h: Remove the various CVSroot_* bits and replace them with a
654	single structure of type cvsroot_t (current_parsed_root)
655
656	* root.c (parse_cvsroot): return pointer to a new cvsroot_t rather than
657	altering global variables
658	(local_cvsroot): return a pointer to a new cvsroot_t rather than
659	setting globals.  changed the name of this function from
660	set_local_cvsroot to better explain new functionality
661	(new_cvsroot_t): new initializer function
662	(free_cvsroot_t): new function
663	(others): use current_parsed_root rather than the old CVSroot_* globals
664
665	* add.c: use current_parsed_root rather than the old CVSroot_* globals
666	* admin.c: ditto
667	* checkout.c: ditto
668	* client.c: ditto
669	* commit.c: ditto
670	* create_adm.c: ditto
671	* diff.c: ditto
672	* edit.c: ditto
673	* expand_path.c: ditto
674	* find_names.c: ditto
675	* history.c: ditto
676	* ignore.c: ditto
677	* import.c: ditto
678	* lock.c: ditto
679	* log.c: ditto
680	* login.c: ditto
681	* logmsg.c: ditto
682	* main.c: ditto
683	* mkmodules.c: ditto
684	* modules.c: ditto
685	* parseinfo.c: ditto
686	* patch.c: ditto
687	* rcs.c: ditto
688	* recurse.c: ditto
689	* release.c: ditto
690	* remove.c: ditto
691	* repos.c: ditto
692	* rtag.c: ditto
693	* server.c: ditto
694	* status.c: ditto
695	* tag.c: ditto
696	* update.c: ditto
697	* version.c: ditto
698	* watch.c: ditto
699	* wrapper.c: ditto
700
7012001-01-05  Derek Price  <derek.price@openavenue.com>
702
703	* cvs.h (enum CVSmethod): add null_method
704	* root.c (method_names): correlate null_method & "undefined"
705	(parse_cvsroot): make two error cases non fatal
706	* sanity.sh (crerepos-6b): account for new error message, re above
707
7082001-01-05  Derek Price  <derek.price@openavenue.com>
709
710	* src/Makefile.am (cvsbug, cvsbug_EXTRA_DIST, EXTRA_DIST): move cvsbug
711	target to configure.in - see ../ChangeLog for more
712	* src/cvsbug.in: Rename from cvsbug.sh
713	* src/cvsbug.sh: Rename to cvsbug.in
714
7152001-01-04  Larry Jones  <larry.jones@sdrc.com>
716
717	* Makefile.am (cvsbug): Explicitly list input file ($< is only
718	valid in inference rules).
719	* Makefile.in: Ditto.
720
7212001-01-04  Derek Price  <derek.price@openavenue.com>
722
723	* sanity.sh: use getopts rather than getopt for portability reasons
724
7252001-01-03  Derek Price  <derek.price@openavenue.com>
726
727	* Makefile.am (remotecheck): depend on 'all'
728	* Makefile.in: regenerated
729
7302000-12-29  Derek Price  <derek.price@openavenue.com>
731
732	* sanity.sh: remove explicit "$@" from last checkin and move the 'do'
733	to the line following the 'for'.  Apparently this is more portable.
734
7352000-12-29  Derek Price  <derek.price@openavenue.com>
736
737	* sanity.sh: make "$@" explicit in 'for' statement since Solaris 5.6's
738	implementation of Bourne shell doesn't seem to implement this default
739	behavior.
740
7412000-12-27  Derek Price  <derek.price@openavenue.com>
742
743	* sanity.sh: add a -f option for continuing from a particular test
744	and shorten --keep to -k so we can use the getopt function.
745
7462000-12-27  Derek Price  <derek.price@openavenue.com>
747
748	* Makefile.am (remotecheck): Make remotecheck dependant on all
749	* Makefile.in: regenerated
750
7512000-12-26  Derek Price  <derek.price@openavenue.com>
752
753	* Makefile.in: update timestamp
754	* stamp-h2.in: ditto
755	* version.c: ditto
756
7572000-12-26  Derek Price  <derek.price@openavenue.com>
758
759	* Makefile.am: new target for version.c
760	(EXTRA_DIST): add version.c.in & version.c so builds work when
761	configure doesn't
762	* Makefile.in: Regenerated
763	* stamp-h2.in: update timestamp
764	* version.c: ditto
765
7662000-12-26  Derek Price  <derek.price@openavenue.com>
767
768	* Makefile.am (INCLUDES): add zlib
769	* Makefile.in: Regenerated
770
7712000-12-22  Derek Price  <derek.price@openavenue.com>
772
773	* Makefile.am (DISTCLEANFILES): added a few files
774	(INCLUDES): commented
775        * Makefile.in: Regenerated
776
7772000-12-21  Derek Price  <derek.price@openavenue.com>
778
779	* .cvsignore: Added .deps directory and a new stamp file
780	* Makefile.am: New file needed by Automake
781	* Makefile.in: Regenerated
782	* stamp-h2.in: New stamp file created by Automake
783	* version.c.in: use configure to generate version.c
784
7852000-12-16  Derek Price  <derek.price@openavenue.com>
786
787	* server.c (server_update): Keep the vers structure up to date after
788	sending a Remove or Remove-entry command to the client
789	* update.c (update): remove call to server_updated() after
790	scratch_file()
791	(scratch_file): in server mode, call server_updated(), otherwise keep
792	the vers structure up to date
793	(join_file): add a trace, save the revision to Register() on a remove
794	before calling server_scratch & server_updated
795	* sanity.sh (join): Add test for a remove/add caused by an update
796	to a new branch and a join in the same step.
797
7982000-12-15  Larry Jones  <larry.jones@sdrc.com>
799
800	* error.c (error): Add %ld and %lu.
801
802	* history.c: Change hrec.idx from int to long, reformat NEXT_BAR
803	for readability, add hrec_idx.
804	(fill_hrec): Change initialization to be portable and always set
805	idx so it can be used as a line number in error messages; improve
806	parsing and error checking.
807	(read_hrecs): Initialize hrec_idx, handle embedded NULs, warn about
808	no newline at end of file.
809	(select_hrec): Add basic validity checking.
810
8112000-12-07  Larry Jones  <larry.jones@sdrc.com>
812
813	* history.c (history): Allow multiple -m options as documented.
814
8152000-11-29  Derek Price  <derek.price@openavenue.com>
816
817	* root.c (parse_cvsroot): back out yesterday's redundant changes
818	* main.c (main): fix CVSROOT trace message to look like other trace
819	messages
820	* sanity.sh (multiroot2-9): expect new trace message
821
8222000-11-28  Derek Price  <derek.price@openavenue.com>
823
824	* root.c (parse_cvsroot): add trace on this function
825	* client.c (get_port_number): make trace print look like others
826
8272000-11-16  Derek Price  <derek.price@openavenue.com>
828
829	* filesubr.c (cvs_temp_file): back out the previous change in the
830	interests of portability, add an assertion, and fix the header comment
831
8322000-11-16  Derek Price  <derek.price@openavenue.com>
833
834	* filesubr.c (cvs_temp_file): refine the exit behavior to notice if
835	the out param was passed in NULL and, if so, avoid setting it and delete
836	the temp file for later
837
8382000-11-16  Derek Price  <derek.price@openavenue.com>
839
840	* filesubr.c (cvs_temp_file): fixed a garble or two, added some
841	additional error checking, and added a comment
842
8432000-11-15  Derek Price  <derek.price@openavenue.com>
844
845	* filesubr.c (cvs_temp_file): added cvs_temp_file
846	function to use mkstemp rather than one of the other temp file
847	generators as gcc keeps complaining I should.
848	(cvs_temp_name): altered this function to simply wrap cvs_temp_file
849	and deprecated it
850	* cvs.h: added prototype for cvs_temp_file
851	* commit.c (commit): use the new function instead of the old and plug
852	an old (though related) memory leak.
853	* import.c (import): use the new function
854	* login.c (login): Ditto
855	* logmsg.c (do_editor, do_verify): Ditto
856	* patch.c (patch_fileproc): Ditto
857
8582000-11-14  Larry Jones  <larry.jones@sdrc.com>
859
860	* update.c, update.h (do_update): Add xdotemplate parameter.
861	Change all callers.
862	(update_dirent_proc): Use dotemplate for Create_Admin, not 1.
863	* checkout.c (checkout_proc): Don't create CVS/Template if
864	exporting.
865	(Reported by Andrey Podkolzin <mdh@zenon.net>.)
866
8672000-11-08  Larry Jones  <larry.jones@sdrc.com>
868
869	* admin.c (admin): Use getgroups() to check for membership in
870	CVS_ADMIN_GROUP if it exists.  In any event, check the user's
871	primary group in addition to any additional groups.
872	(Reported by Thomas Okken <TOkken@refco.com>.)
873
8742000-11-06  Jim Meyering  <meyering@lucent.com>
875
876	Compile with gcc's -Wformat and fix the exposed problems.
877	* root.c (parse_cvsroot) [! HAVE_KERBEROS]: Provide an argument
878	for the %s error format spec.
879	[! HAVE_GSSAPI]: Likewise.
880	(normalize_cvsroot): Put comment delimiters around token after `#endif'.
881
8822000-11-03  Larry Jones  <larry.jones@sdrc.com>
883
884	* sanity.sh: Some versions of sed require a space between -e and
885	the value.
886
8872000-10-27  Larry Jones  <larry.jones@sdrc.com>
888
889	* checkout.c (checkout): Don't check for a safe location if just
890	cat'ing the module database.
891	(Reported by Ilya Martynov <m_ilya@agava.com>.)
892	Have -s set cat as well as status; it simplifies the code.
893
8942000-10-26  Larry Jones  <larry.jones@sdrc.com>
895
896	* sanity.sh (join-admin-2): Check output from all commands instead
897	of (mostly) discarding.  (Some of the tests used to produce stray
898	output in remote mode.)
899
900	* sanity.sh (dotest_line_by_line): Handle empty lines in pattern
901	(expr doesn't distingish between successfully matching nothing
902	and failing to match anything).
903
904	* sanity.sh (dotest_internal): Rearrange and use elif to simplify.
905
9062000-10-24  Jim Meyering  <meyering@lucent.com>
907
908	Fix a bug, introduced with my fix of 2000-07-10, whereby -kk would
909	sometimes be ignored for some of the files involved in an update.
910
911	* update.c (join_file): Restore the original value of `options'
912	right after calling checkout_file.
913	* sanity.sh (join-admin-2): New test for this.
914
9152000-10-23  Derek Price  <derek.price@openavenue.com>
916            James Youngman  <jay@gnu.org>
917
918	* sanity.sh: it's /gnu/bin, not /gun/bin.  Thanks go to James Youngman
919	<jay@gnu.org> for the bug report and patch.
920
9212000-10-20  Jim Kingdon  <http://sourceforge.net/users/kingdon/>
922
923	* server.c (switch_to_user): Set CVS_USER.  Patch from Sudish
924	Joseph and popularized by dozens (e.g. mozilla.org, also others).
925
9262000-10-20  Derek Price  <derek.price@openavenue.com>
927            KOIE Hidetaka  <hide@koie.org>
928
929	* root.c (normalize_cvsroot): plug a memory leak.  Thanks to
930	KOIE Hidetaka <hide@koie.org>
931
9322000-10-18  Derek Price  <derek.price@openavenue.com>
933
934	* client.c (connect_to_pserver): added a close brace the lack of which
935	was preventing compilation when gssapi was enabled.  Removed a
936	redundant check for HAVE_KERBEROS.
937
9382000-10-18  Derek Price  <derek.price@openavenue.com>
939
940	* root.c (normalize_cvsroot): removed references to free_port_s and the
941	now useless call to free now that port_s is on the stack.  Thanks to
942	Jon Miner.
943
9442000-10-18  Derek Price  <derek.price@openavenue.com>
945
946	* root.c (normalize_cvsroot): remove calls to snprintf for
947	compatibility with M$ Windoze.
948
9492000-10-18  Derek Price  <derek.price@openavenue.com>
950
951	* sanity.sh (crerepos-6a, crerepos-6a-r): fix a "?" in a regex & pipe
952	the output of a test to /dev/null since we don't know what error
953	messages specific rsh implementations will output.
954
9552000-10-17  Derek Price  <derek.price@openavenue.com>
956
957	* cvs.h: added CVSroot_password variable. Provided prototypes for
958	get_port_number & normalize_cvsroot.
959	* client.c (get_port_number): Fixed an ANSI prototype I had included
960	for get_port_number.
961	* login.c (login, logout): Removed two checks for a non-null
962	CVSroot_username since parse_cvsroot now supplies a default in pserver
963	mode. allow for a password in CVSROOT
964	(get_cvs_passsword): return CVSroot_password if it was supplied
965	in the CVSROOT.
966	* root.c (parse_cvsroot): Changed CVSROOT spec from
967	:method:user@host/port:/cvsroot to
968	:method:[[user][:password]@]host[:[port]]/cvsroot
969	Removed the xstrdup function since we'd rather have the error checking
970	from the version in subr.c anyhow.  Moved some error messages which
971	looked like they would print the wrong error message after a failed
972	connect_to_gserver call.
973	(normalize_cvsroot): return a normalized CVSROOT for use in the
974	.cvspass file.
975	* sanity.sh (crerepos-6): fix a test which was expecting an old error
976	message.
977
978	* client.c (connect_to_pserver): Moved some error messages which looked like they
979	would print the wrong error message after a failed connect_to_gserver
980	call.
981
982	* login.c (login): Paranoiacly zero a password in memory.
983
9842000-10-12  Derek Price  <derek.price@openavenue.com>
985
986	* client.c (auth_server_port_number -> get_port_number, start_pserver,
987	start_tcp_server): use a port specified in CVSROOT instead of the
988	default port.  Failing that, use the CVS_CLIENT_PORT environment
989	variable.
990	* cvs.h: Added global CVSroot_port & renamed auth_server_port_number.
991	* root.c (parse_cvsroot): Parse the new CVSROOT format properly.
992	Incidentally reformated some error messages for uniformity and
993	readability.
994	* sanity.sh (crerepos): fix two tests which were now expecting the
995	wrong error message.
996
9972000-10-11  Larry Jones  <larry.jones@sdrc.com>
998
999	* server.c (pserver_authenticate_connection): Fix stupid mistake
1000	in previous change.
1001
10022000-10-11  Derek Price  <derek.price@openavenue.com>
1003
1004	* main.c (main): Dispose old CVSroot when parsing a '-d' option if
1005	free_CVSroot is set.
1006	* root.c (parse_cvsroot): remove references to 'cvsroot_parsed', a
1007	static boolean I expect hasn't been used since CVS learned to handle
1008	multiple CVSROOTs.
1009
10102000-10-10  Larry Jones  <larry.jones@sdrc.com>
1011
1012	* server.c (print_error): Make up a message if strerror fails.
1013
1014	* server.c (pserver_authenticate_connection): Give a real error
1015	message for an invalid repository.
1016
10172000-10-06  Derek Price  <derek.price@openavenue.com>
1018
1019	* add.c (add): Made quiet mode affect some warning messages as seemed
1020	appropriate.  Specifically, some of the messages which a user might
1021	want to ignore so they don't have to be quite so specific on the
1022	command line: files added twice, files already in the repository and
1023	check out properly (i.e. but picked up by 'cvs add *'), & files which
1024	are readded in place of a dead revision or onto a branch.  '-q' will
1025	not change the non-zero exit code for the cases where at least one
1026	passed in file name was already in the Entries file.  There seems to
1027	be a precedent in remove.c.
1028	* remove.c (cvsremove): switched the "use cvs ci to make these changes
1029	permanent message" to only print w/o '-Q' to match the new behavior of
1030	add.  This seems appropriate as '-Q' is defined to restrict messages
1031	to critical errors.
1032	* sanity.sh (adderrmsg): Added some tests for the above behavior.
1033
10342000-10-05  Larry Jones  <larry.jones@sdrc.com>
1035
1036	* client.c (call_in_directory): Create CVSADM directory if it doesn't
1037	exist in the directory.  This makes client/server work more like
1038	standalone when checking out into an existing (non-CVS) directory.
1039	* sanity.sh (dirs2, conflicts3, toplevel): Update to match.
1040
10412000-10-03  Larry Jones  <larry.jones@sdrc.com>
1042
1043	* filesubr.c (get_homedir): Ignore $HOME when running in server mode.
1044
10452000-10-02  Larry Jones  <larry.jones@sdrc.com>
1046
1047	* cvs.h: Define (and use) T_PATCH as a valid file classification
1048	even when SERVER_SUPPORT isn't defined -- it simplifies the code.
1049	* classify.c (Classify_File): Ditto.
1050	* commit.c (check_fileproc): Ditto.
1051	* status.c (status_fileproc): Ditto.
1052	* update.c (update_fileproc): Ditto.
1053	* tag.c (check_fileproc): Accept T_PATCH in addition to T_CHECKOUT.
1054	* sanity.sh (tagc-10): Update to match.
1055
10562000-09-29  Larry Jones  <larry.jones@sdrc.com>
1057
1058	* client.c (get_responses_and_close): Reset server_fd to -1 after
1059	shutting down.
1060	(Reported by Joerg Thoennes <Joerg.Thoennes@data-sciences.de>.)
1061
10622000-09-27  Larry Jones  <larry.jones@sdrc.com>
1063
1064	* commit.c (commit): Don't sleep before returning in server mode,
1065	just let the client do it.
1066	* update.c (do_update): Ditto.
1067
1068	* sanity.sh (find_tool): Correct method of checking for GNU tools.
1069
1070	* checkout.c (checkout_proc): Match up user directories with
1071	repository directories instead of using Emptydir.
1072	* sanity.sh (cvsadm, emptydir): Update to match.
1073
10742000-09-19  Larry Jones  <larry.jones@sdrc.com>
1075
1076	* version.c: Push version number to 1.11.0.1.
1077
1078	* version.c: Version 1.11.
1079
10802000-09-07  Larry Jones  <larry.jones@sdrc.com>
1081
1082	* Makefile.in: Use @bindir@, @libdir@, @infodir@, and @mandir@
1083	from autoconf.
1084
10852000-08-23  Larry Jones  <larry.jones@sdrc.com>
1086
1087	* mkmodules.c (init): Create an empty val-tags file if it doesn't
1088	already exist to avoid problems with users not having sufficient
1089	permissions to create it later.
1090
10912000-09-06  Jim Kingdon  <jkingdon@dhcp-net200-89.su.valinux.com>
1092
1093	* main.c (lookup_command_attribute): Add "release" to commands
1094	which can be done by a read-only user.
1095
10962000-08-23  Larry Jones  <larry.jones@sdrc.com>
1097
1098	* repos.c (Name_Repository): Use pathname_levels to detect attempts
1099	to get above the repository instead of checking for leading ..
1100	which isn't reliable.
1101	* sanity.sh (multiroot3-12 to multiroot3-15): New tests for above.
1102
11032000-08-21  Larry Jones  <larry.jones@sdrc.com>
1104
1105	* rcs.c (expand_keywords): Handle the unusual case of log == NULL.
1106	(Reported by Craig Metz <cmetz@inner.net>.)
1107
11082000-08-01  Larry Jones  <larry.jones@sdrc.com>
1109
1110	* subr.c (pathname_levels): Fix bug that miscounts adjacent
1111	slashes.
1112	(Patch submitted by Tanaka Akira <akr@m17n.org>.)
1113
1114	* loginc.c (login): If available, use getpassphrase instead of
1115	getpass to support long passwords on Solaris.
1116
11172000-07-28  Larry Jones  <larry.jones@sdrc.com>
1118
1119	* server.c (server_noop): Avoid do_cvs_command() overhead.
1120	(requests): Make noop RQ_ROOTLESS.
1121
11222000-07-27  Noel Cragg  <noel@red-bean.com>
1123
1124	* root.c (parse_cvsroot): change fork method to behave like other
1125	remote methods -- let the server check that the repository
1126	directory is an absolute pathname.
1127
11282000-07-27  Larry Jones  <larry.jones@sdrc.com>
1129
1130	* lock.c (set_lock): Include actual lock directory in error message.
1131	* sanity.sh (multiroot3-10): Change to match.
1132
1133	* sanity.sh (client-3): Allow for a potential "broken pipe".
1134
11352000-07-26  Larry Jones  <larry.jones@sdrc.com>
1136
1137	* commit.c (commit_filesdoneproc): Flush stdout before running script.
1138	* modules.c (do_module): Ditto.
1139	* update.c (update_dirleave_proc): Ditto.
1140	* server.c (do_cvs_command): Give input from the protocol pipe
1141	precedence over input from stdout/stderr.  There's no particularly
1142	good justification for this other than helping to avoid out-of-order
1143	messages in sanity.sh.
1144
1145	* admin.c (admin_usage): Add the supported options.
1146
1147	* sanity.sh (info): Try to avoid out-of-order messages.
1148
1149	* sanity.sh (info): Fix problems when running twice in a row.
1150
11512000-07-17  Larry Jones  <larry.jones@sdrc.com>
1152
1153	* sanity.sh (modules5-7, cvsadm-1e, emptydir-2): Allow for a nil
1154	commit (can happen if the test is run twice in a row).
1155
11562000-07-19  Pavel Roskin  <proski@gnu.org>
1157	and Larry Jones  <larry.jones@sdrc.com>
1158
1159	* mkmodules.c (config_contents): Add a commented out example for
1160	LockDir. Don't suggest PreservePermissions unless it's enabled.
1161
11622000-07-17  Larry Jones  <larry.jones@sdrc.com>
1163
1164	* login.c (get_cvs_password): Handle malformed ~/.cvspass more
1165	gracefully.
1166
11672000-07-12  Larry Jones  <larry.jones@sdrc.com>
1168
1169	* sanity.sh (modules5): New tests for module programs.
1170
11712000-07-11  Larry Jones  <larry.jones@sdrc.com>
1172
1173	* filesubr.c (copy_file, xcmp): Handle systems (like Plan 9) that
1174	don't support mknod() and/or st_rdev.
1175	* import.c (add_rcs_file): Ditto.
1176	* rcs.c (RCS_checkout, RCS_checkin): Ditto.
1177	* update.c (special_file_mismatch): Ditto.
1178
11792000-07-10  Larry Jones  <larry.jones@sdrc.com>
1180
1181	* zlib.c (gunzip_and_write): Fix type clashes.
1182
1183	* main.c (main): Remove unused variables.
1184
11852000-07-10  Jim Meyering  <meyering@lucent.com>
1186
1187	When a command like `cvs update -kk -jT1 -jT2' creates a new file
1188	(because it had the T2 tag, but not T1), the subsequent commit of
1189	that just-added file would effectively set the admin `-kk' option
1190	for that file in the repository.
1191
1192	* update.c (join_file): Rename global-shadowing local `options'
1193	to `t_options'.
1194	Set file-scoped global `options' to NULL just before
1195	check-out.
1196	* sanity.sh (join-admin): New test for this.
1197
11982000-07-08  Larry Jones  <larry.jones@sdrc.com>
1199
1200	* version.c, cvs.h (version): New function.
1201	* main.c (cmds[]): Add version command to invoke it.
1202	(main): Also use it in -v.
1203	* server.c (serve_version): New function.
1204	(requests[]): Add version command to invoke it.
1205
12062000-07-06  Karl Fogel  <kfogel@red-bean.com>
1207
1208	* sanity.sh (pserver-14): remove this test for portability
1209	reasons (it was only recently added for the 2000-07-04 change).
1210
12112000-07-06  Larry Jones  <larry.jones@sdrc.com>
1212
1213	sanity.sh (modules-148): Don't test for specific revisions.
1214
1215	* main.c (main): Catch SIGABRT to try to clean up after assertion
1216	failures.  Don't bother SIG_register'ing Lock_Cleanup because
1217	main_cleanup calls it indirectly anyway.
1218	* patch.c (patch): Catch SIGABRT.
1219	* rcs.c (rcs_internal_lockfile): Ditto.
1220	* server.c (server): Ditto.
1221
1222	* fileattr.c (fileattr_write): Don't delete the unrecog_head list
1223	when writing...
1224	(fileattr_free): Delete it when freeing!
1225
12262000-07-05  Larry Jones  <larry.jones@sdrc.com>
1227
1228	* admin.c (admin): Handle -t in client so reading from files works
1229	correctly in client/server mode.
1230	* sanity.sh (log2): Update to match.
1231
12322000-07-04  Karl Fogel  <kfogel@red-bean.com>
1233
1234	* server.c (pserver_authenticate_connection): use new
1235	getline_safe() during authentication phase, to avoid a
1236	denial-of-service attack in which client sends arbitrary
1237	amounts of data with no newlines.
1238	(Reported by <jpmg@eng.cam.ac.uk>.)
1239
1240	* sanity.sh: new test pserver-14 for above.
1241
1242	* myndbm.c: #include getline.h.
1243	(mydbm_load_file): pass new GETLINE_NO_LIMIT flag to getstr().
1244
12452000-07-03  Larry Jones  <larry.jones@sdrc.com>
1246
1247	* sanity.sh (modules): Rewrite using dotest.  Add "modules-"
1248	prefix to test names.
1249
12502000-06-28  Larry Jones  <larry.jones@sdrc.com>
1251
1252	* error.c (error_exit): Call rcs_cleanup () to release any rcs locks.
1253	* rcs.c, rcs.h (rcs_cleanup): Make public, close file before trying
1254	to remove (some systems won't remove open files).
1255	(RCS_putdtree): Don't worry about cleaning up before call error
1256	since it now does it for us.
1257	(rcs_internal_lockfile, rcs_internal_unlockfile): Keep track of
1258	lock file fd for rcs_cleanup ().
1259
1260	* client.c (handle_set_checkin_prog, handle_set_update_prog):
1261	Just ignore the request when exporting.
1262
12632000-06-27  Larry Jones  <larry.jones@sdrc.com>
1264
1265	* create_adm.c, cvs.h (Create_Admin): Add dotemplate argument.
1266	Change all callers.
1267	* checkout.c (checkout_proc): Don't create CVS/Template if
1268	exporting.
1269
12702000-06-26  Pavel Roskin <proski@gnu.org>
1271	and Larry Jones  <larry.jones@sdrc.com>
1272
1273	* server.c (switch_to_user): Only set CVS_Username if
1274	AUTH_SERVER_SUPPORT is defined.
1275
12762000-06-23  Larry Jones  <larry.jones@sdrc.com>
1277
1278	* client.c (send_dirent_proc): Don't allocate ignlist if you're
1279	going to skip the directory (plugs memory leak).
1280	(send_dirleave_proc): New function.
1281	(send_files): Use it (plugs memory leak).
1282	* root.c (root_allow_free): Plug memory leaks.
1283	* server.c (serve_directory, serve_notify, check_password,
1284	pserver_authenticate_connection): Ditto.
1285	* update.c (update): Ditto.
1286
1287	This completes the memory leak shoot-out -- the Purify'ed version
1288	of CVS now runs the entire test suite, both local and remote (except
1289	for remote crerepos, which causes Purify to choke) with *no* memory
1290	leaks.
1291
1292	* server.c (pserver_authenticate_connection): Don't free null pointer.
1293
12942000-06-21  Larry Jones  <larry.jones@sdrc.com>
1295
1296	* client.c (update_entries, get_responses_and_close): Plug memory leaks.
1297	* commit.c (find_fileproc, commit): Ditto.
1298	* import.c (import): Ditto.
1299	* log.c (cvslog): Ditto.
1300	* recurse.c (start_recursion): Ditto.
1301	* remove.c (cvsremove): Ditto.
1302	* server.c (fd_buffer_initialize, server_notify, do_cvs_command): Ditto.
1303	(fd_buffer_shutdown): New function.
1304
13052000-06-20  Larry Jones  <larry.jones@sdrc.com>
1306
1307	* root.c (parse_cvsroot): Put the terminating NUL byte into the
1308	string *before* copying it, not after. :-(
1309
13102000-06-19  Larry Jones  <larry.jones@sdrc.com>
1311
1312	* main.c (main): Plug memory leaks.
1313	* root.c (parse_cvsroot, set_local_cvsroot): Ditto.
1314	* server.c (serve_root): Ditto.
1315
13162000-06-16  Larry Jones  <larry.jones@sdrc.com>
1317
1318	* fileattr.c (fileattr_read): Plug memory leak.
1319	* rcs.c (RCS_whatbranch): Ditto.
1320	* update.c (update_dirleave_proc): Ditto.
1321
1322	* ignore.c (ign_dir_add): Duplicate string so caller can free.
1323
1324	* modules.c (do_module): Don't write into dbm's memory!
1325
13262000-06-15  Larry Jones  <larry.jones@sdrc.com>
1327
1328	* checkout.c (checkout_proc): Fix non-ANSI code in call to
1329	findslash(), minor cleanups.
1330
13312000-06-14  Larry Jones  <larry.jones@sdrc.com>
1332
1333	* tag.c (val_direntproc): Return R_PROCESS instead of 0.
1334
1335	* client.c (update_entries): Fix type clash calling gunzip_and_write().
1336	* server.c (receive_file): Fix type clash calling gunzip_and_write().
1337	(server_updated): Fix type clash calling buf_output().
1338	* error.c (error): Make buf char instead of unsigned char to avoid
1339	type clashes.
1340
1341	* modules.c (do_module): Change callback_proc to pass argc by
1342	value instead of by reference: callback procs shouldn't be
1343	messing with the callers argc/argv, it makes correct memory
1344	management impossible.  Plug memory leaks.
1345	* cvs.h: Change to match.
1346	* checkout.c (checkout_proc): Ditto; use a local argv array instead
1347	of messing with caller's.
1348	* modules.c (callback_proc): Ditto.
1349	* patch.c (patch_proc): Ditto; use a local argv array instead
1350	of messing with caller's.
1351	* rtag.c (rtag_proc): Ditto; use a local argv array instead
1352	of messing with caller's.
1353	* server.c (expand_proc): Ditto.
1354	* subr.c (line2argv): Change initial argv_allocated back to 1.
1355
1356	* checkout.c (findslash): Fix non-ANSI code.
1357
1358	* sanity.sh (modes3): Fix test names.
1359
13602000-06-13  Larry Jones  <larry.jones@sdrc.com>
1361
1362	* add.c (add): Plug memory leaks.
1363	* admin.c (admin_fileproc): Ditto.
1364	* checkout.c (build_dirs_and_chdir): Ditto.
1365	* edit.c (editors_fileproc): Ditto.
1366	* log.c (cvslog, log_parse_revlist, log_parse_date): Ditto.
1367	* rcs.c (RCS_addaccess): Ditto.
1368	* tag.c (check_fileproc): Ditto.
1369	* vers_ts.c (Version_TS): Ditto.
1370	* watch.c (watchers_fileproc): Ditto.
1371
13722000-06-12  Larry Jones  <larry.jones@sdrc.com>
1373
1374	* rcs.c (rcsbuf_valword): Set rcsbuf->vlen to keep rcsbuf_valcopy()
1375	from allocating more memory than needed for @ strings.  Don't declare
1376	unless PRESERVE_PERMISSIONS_SUPPORT (since not defined).
1377
1378	* rcs.c (RCS_abandon): New function to abandon changes.
1379	* rcs.h: Declare it.
1380	* admin.c (admin_fileproc): Use it instead of RCS_reparsercsfile.
1381
1382	* commit.c (commit_fileproc): Fix memory leaks.
1383	* patch.c (patch_fileproc): Ditto.
1384	* rcs.c (RCS_nodeisbranch, RCS_copydeltas): Ditto.
1385	* tag.c (tag_fileproc): Ditto.
1386	* update.c (update): Ditto.
1387
13882000-06-09  Larry Jones  <larry.jones@sdrc.com>
1389
1390	* rcs.c (RCS_reparsercsfile, RCS_fully_parse, getdelta,
1391	RCS_getdeltatext): Handle newphrases with composite values.
1392	(rcsbuf_getkey): Don't remove @s in composite values -- it makes
1393	it impossible to parse the value!  Set special flag to indicate
1394	a composite value.
1395	(rcsbuf_valcopy, rcsbuf_valpolish_internal): Handle composite values.
1396	(putrcsfield): Write composite values.
1397	(RCS_checkin): Set node types in other_delta list.
1398	* hash.h: Add RCSCMPFLD.
1399	* hash.c (nodetypestring): Ditto.
1400
1401	* rcs.c (getdelta): Never allocate space for value, just return
1402	pointer into rcsbuf (fixes memory leaks).  Use rcsbuf_getkey to
1403	read a key and value and then parse the value if needed rather
1404	than trying to read it in bits and pieces with rcsbuf_getid,
1405	rcsbuf_getstring, and rcsbuf_getword.
1406	(RCS_reparsercsfile): Change callers to compensate.
1407	(rcsbuf_valcmp, rcsbuf_valword): New functions.
1408	(rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): Deleted.
1409	* sanity.sh (rcs3-1): Now get slightly different error message.
1410
14112000-06-08  Larry Jones  <larry.jones@sdrc.com>
1412
1413	* main.c (usg): Update CVS home page URL.
1414
1415	* main.c (main): Provide an actual error message for an unknown
1416	command in addition to the usage message.
1417
14182000-06-07  Larry Jones  <larry.jones@sdrc.com>
1419
1420	* server.c (serve_root, dirswitch, serve_repository,
1421	serve_static_directory, serve_sticky, receive_partial_file,
1422	receive_file, serve_modified, server_write_entries, serve_notify,
1423	serve_checkin_prog, serve_update_prog, server): Don't set
1424	pending_error before calling alloc_pending, it makes it fail;
1425	use alloc_pending instead of malloc when reasonable; be sure to
1426	save errno before calling functions that might change it.
1427	(Patch submitted by Dietmar Petras <dietmar.petras@elsa.de>.)
1428
14292000-06-03  Larry Jones  <larry.jones@sdrc.com>
1430
1431	* commit.c (checkaddfile): Plug memory leak.
1432	* rcs.c (RCS_checkin): Plug memory leaks.
1433	* server.c (do_cvs_command): Plug file descriptor leaks.
1434	* tag.c (check_fileproc): Plug memory leak.
1435
14362000-05-26  Larry Jones  <larry.jones@sdrc.com>
1437
1438	* recurse.c (unroll_files_proc): Plug memory leak.
1439
1440	* recurse.c (addfile): Fix nonportable pointer cast.
1441
1442	* rcs.c (rcsbuf_getstring, rcsbuf_getword, getdelta): Plug memory
1443	leaks.
1444
14452000-05-25  Larry Jones  <larry.jones@sdrc.com>
1446
1447	* checkout.c (checkout, build_one_dir, checkout_proc): Move m_type
1448	to file scope and use it instead of continually doing strcmp on
1449	command_name.
1450	(build_one_dir, checkout_proc): Don't allow export if CVSADM
1451	directory already exists.
1452
14532000-05-23  Larry Jones  <larry.jones@sdrc.com>
1454
1455	* rcs.c (RCS_checkin, RCS_cmp_file): Plug memory leaks.  (Patch
1456	submitted by Chris G. Demetriou <cgd@sibyte.com>.)
1457
14582000-05-20  Ian Lance Taylor  <ian@zembu.com>
1459
1460	* client.c (connect_to_gserver): Handle server error messages
1461	reasonably.
1462
14632000-05-19  Larry Jones  <larry.jones@sdrc.com>
1464
1465	* server.c (requests): Make Global_option RQ_ROOTLESS so it can be
1466	used with init.
1467
14682000-05-18  Larry Jones  <larry.jones@sdrc.com>
1469
1470	* client.c (start_server): Don't do encryption, authentication,
1471	compression, or case insensitivity when doing init because init
1472	is ROOTLESS and they're not.
1473
1474	* client.c (connect_to_pserver): Include repository and username in
1475	authorization failed message -- if a directory tree crosses multiple
1476	repositories, it can be quite difficult for the user to figure out
1477	which one is the problem.
1478
14792000-05-17  Larry Jones  <larry.jones@sdrc.com>
1480
1481	* main.c (main): Use full set of options when looking for -f to
1482	avoid misparsing options that take values (previously, -sVAR=foo
1483	was incorrectly parsed as though it were -s -V -A -R -= -f -o -o
1484	because it didn't know that -s takes a value).
1485	* sanity.sh (info-6b): New test for above.
1486
1487	* sanity.sh (conflicts-status): Fix tests so they work remotely, too.
1488
14892000-05-17  Jim Meyering  <meyering@lucent.com>
1490
1491	* sanity.sh (TESTDIR): Fix braino in last change:
1492	cd to /tmp before invoking pwd.
1493
1494	* sanity.sh: Set TESTDIR so that `make check' passes even when /tmp
1495	is a symlink.
1496	(join-36): Use $TESTDIR rather than hard-coding `/tmp/cvs-sanity'.
1497	(conflicts-132): Remove unnecessary `rm aa'.
1498
14992000-05-16  Jim Kingdon  <kingdon@redhat.com>
1500
1501	* cvs.h, checkout.c (safe_location): Make extern.
1502	* import.c (import): Call it rather than reimplementing
1503	(incompletely) the same check.
1504
15052000-05-16  Larry Jones  <larry.jones@sdrc.com>
1506
1507	* rcs.h, subr.c (file_has_markers): Check for any of the three
1508	conflict marker lines, not just one.
1509	* sanity.sh (conflicts-status): New tests for above.
1510	* sanity.sh: Revise to avoid tripping the above check when merging
1511	changes into sanity.sh itself.
1512
15132000-05-15  Larry Jones  <larry.jones@sdrc.com>
1514
1515	* update.c (join_file): When registering the result of the merge,
1516	make sure that the version number is valid (vers->vn_rcs may be
1517	null if the file doesn't exist on the branch yet).  (Patch submitted
1518	by Robert de Vries <rhdv@rhdv.cistron.nl>.)
1519	* update.c (join_file): Correct diagnostics (previous change was not
1520	correct -- the file *does* exist in the specified revision, it just
1521	doesn't exist in the sandbox).
1522	* sanity.sh (import-113, join): New tests and changes for above.
1523
15242000-05-04  Larry Jones  <larry.jones@sdrc.com>
1525
1526	* sanity.sh: Look for a useful id program.  Since we're getting
1527	the real username for some tests anyway, use it for all the
1528	tests instead of a generic regular expression that may or may
1529	not match the actual username.
1530
15312000-05-04  Larry Jones  <larry.jones@sdrc.com>
1532
1533	* server.c: More error messages.
1534
15352000-05-02  Donald Sharp <sharpd@cisco.com>
1536	and Larry Jones  <larry.jones@sdrc.com>
1537
1538	* history.c (report_hrecs): Added code to print out year instead of
1539	just month/day.
1540	* sanity.sh (basic2-64, history): Update to match.
1541
15422000-04-19  Larry Jones  <larry.jones@sdrc.com>
1543
1544	* server.c (dirswitch): Set pending_error_text in addition to
1545	pending_error to aid in problem determination.
1546
15472000-03-23  Larry Jones  <larry.jones@sdrc.com>
1548
1549	* mkmodules.c (mkmodules): Return without doing anything if noexec
1550	is set to avoid trashing existing files.
1551
15522000-03-23  Larry Jones  <larry.jones@sdrc.com>
1553
1554	* main.c: Alphabetize cmds[] and cmd_usage[] and add server
1555	commands to cmd_usage[].
1556
15572000-03-21  Larry Jones  <larry.jones@sdrc.com>
1558
1559	* sanity.sh (client-1): May get "Broken pipe" message from the
1560	"server" in addition to the expected output.
1561
15622000-03-17  Larry Jones  <larry.jones@sdrc.com>
1563
1564	* server.c (switch_to_user): Set CVS_Username if it hasn't already
1565	been set elsewhere.  (Patch submitted by Gordon Matzigkeit
1566	<gord@fig.org>).
1567
15682000-03-13  Larry Jones  <larry.jones@sdrc.com>
1569
1570	* parseinfo.c: Add extern to logHistory declaration.  (Reported by
1571	<John.Tytgat@aaug.net>.)
1572	(parse_config): Reformat logHistory code.
1573
15742000-03-10  Larry Jones  <larry.jones@sdrc.com>
1575
1576	* add.c (add): Don't try to set cvsroot_len until after checking
1577	for help only -- CVSroot_directory isn't set in that case.
1578
15792000-03-03  Larry Jones  <larry.jones@sdrc.com>
1580
1581	* mkmodules.c (init): Use mkdir_if_needed to create CVSROOT/Emptydir
1582	so we don't fail if run multiple times.  (Reported by KOIE Hidetaka
1583	<hide@koie.org>.)
1584	* sanity.sh (1a): New test for above.
1585
15862000-03-02  Larry Jones  <larry.jones@sdrc.com>
1587
1588	* main.c: Use identical #if's in the command table and the code
1589	for pserver and kserver to prevent "peculiar" configurations from
1590	having really perverse behavior because the command table entries
1591	are present but the related code isn't.
1592
15932000-03-01  Larry Jones  <larry.jones@sdrc.com>
1594
1595	* import.c (import): Don't allow importing the repository.
1596	* sanity.sh (errmsg2-20, errmsg2-21): New tests for above.
1597
15982000-03-01  Larry Jones  <larry.jones@sdrc.com>
1599
1600	* main.c (main): Update year in copyright message.
1601
16022000-03-01  Larry Jones  <larry.jones@sdrc.com>
1603
1604	* logmsg.c (do_editor): Correct previous change.
1605
16062000-02-29  Larry Jones  <larry.jones@sdrc.com>
1607
1608	* logmsg.c (do_editor): When reading temp file, check that message
1609	buffer is large enough to hold the next line and expand if needed.
1610
16112000-02-28  Larry Jones  <larry.jones@sdrc.com>
1612
1613	* commit.c (commit): Use get_file() to read log file correctly
1614	and in text mode rather than binary mode.
1615
1616	* subr.c (get_file): Ignore bufsize if buf is NULL.  Include
1617	terminating NUL byte when estimating required buffer size.
1618
16192000-02-28  Larry Jones  <larry.jones@sdrc.com>
1620
1621	* sanity.sh (find_tool): New function to replace duplicated code.
1622
16232000-02-25  Larry Jones  <larry.jones@sdrc.com>
1624
1625	* import.c (add_rcs_file): Don't abort just because lstat fails.
1626
16272000-02-16  Jim Meyering  <meyering@lucent.com>
1628
1629	Avoid race condition whereby a catchable signal could
1630	end up corrupting the repository.
1631	* commit.c (checkaddfile): Put a critical section around the code
1632	that handles the first commit on the trunk of a file that's already
1633	been committed on a branch.
1634	* cvs.h (Sig_inCrSect): Declare new function.
1635
16362000-02-21  Karl Fogel  <kfogel@red-bean.com>
1637
1638	* main.c (main): still check for repository, but not history file
1639	(correction to 2000-02-18 change -- that's what I get for
1640	believing the comment rather than the code).
1641
16422000-02-21  K.J. Paradise <kj@sourcegear.com>
1643
1644	* history.c mkmodules.c parseinfo.c: control which actions
1645	get logged to the cvs history file via CVSROOT/config file
1646	and LogHistory keyword. (John P Cavanaugh <cavanaug@sr.hp.com>)
1647
16482000-02-18  Karl Fogel  <kfogel@red-bean.com>
1649
1650	* history.c (history_write): don't die if history file not
1651	writable, just warn (unless `really_quiet') and skip out.
1652
1653	* main.c (main): don't bother checking if history file is
1654	writable.
1655
1656	* server.c (serve_root): same.
1657
16582000-02-17  Larry Jones  <larry.jones@sdrc.com>
1659
1660	* sanity.sh (perms symlinks symlinks2 hardlinks): Don't run by
1661	default since PreservePermissions code is now disabled.
1662
16632000-02-17  Larry Jones  <larry.jones@sdrc.com>
1664
1665	* sanity.sh (import-113): Revise to match Jim Meyering's fix.
1666
16672000-02-16  Larry Jones  <larry.jones@sdrc.com>
1668
1669	* add.c (add): Don't allow adding files or directories to Emptydir.
1670	(Patch submitted by Chris Cameron <chris.cameron@ot.co.nz>.)
1671	* sanity.sh (emptydir): Revise (emptydir-7 and emptydir-8) for this.
1672
16732000-02-16  Jim Meyering  <meyering@lucent.com>
1674
1675	* update.c (join_file): Correct typo in diagnostic:
1676	change `file %s is present...' to `file %s is not present...'.
1677
16782000-02-10  Larry Jones  <larry.jones@sdrc.com>
1679
1680	* parseinfo.c (Parse_Info): Treat matching lines with bad expansions
1681	as errors rather than just ignoring.
1682
16832000-02-10  Larry Jones  <larry.jones@sdrc.com>
1684
1685	* edit.c (edit): Check for invalid characters in hostname and CurDir.
1686	(Reported by "Andrew S. Townley" <atownley@informix.com>.)
1687	* sanity.sh (devcom2): New tests for above.
1688
16892000-02-10  Larry Jones  <larry.jones@sdrc.com>
1690
1691	* cvs.h: Always #include "server.h" to prevent compile errors when
1692	neither CLIENT_SUPPORT nor SERVER_SUPPORT is defined.
1693	(Reported by "Crow, Ian" <ian.crow@linklaters.com>.)
1694	* log.c (send_one, send_arg_list): Only define when CLIENT_SUPPORT
1695	is defined to prevent link errors.
1696
1697	* server.c (server): Always create a new temporary directory, don't
1698	try to reuse an existing one since we might not have correct
1699	permissions.  Also, include directory name in error messages.
1700
17012000-01-29  Jim Kingdon  <http://developer.redhat.com/>
1702
1703	* ignore.c (ignore_files): Correctly set errno to 0 when we go
1704	back to the top of the loop.  Fixes spurious errors like "cvs
1705	update: error reading current directory: No such file or
1706	directory".
1707
17082000-01-26  Larry Jones  <larry.jones@sdrc.com>
1709
1710	* run.c (run_exec): Conditionalize K.J.'s change so that it only
1711	applies when SETXID_SUPPORT is defined since some platforms don't
1712	have setegid().
1713
17142000-01-26  Larry Jones  <larry.jones@sdrc.com>
1715
1716	* sanity.sh: Make TESTDIR earlier then use it to check for versions
1717	of expr that don't work right with long expressions.
1718
1719	* sanity.sh (dotest_line_by_line): Have wc read from stdin so it
1720	doesn't output the file name and confuse expr.  Make the output a
1721	bit less verbose and easier to read.
1722
17232000-01-24  K.J. Paradise <kj@sourcegear.com>
1724
1725	* run.c :> prevents a user from creating a privileged shell from the
1726	text editor when the SETXID_SUPPORT option is selected.  This came from
1727	Bob Colle <bcolle@ilx.com>, and is his completely.
1728
17292000-01-22  Jim Kingdon  <http://developer.redhat.com/>
1730
1731	* sanity.sh (emptydir): Add a case in which one might hope for a
1732	non-Emptydir result, but which result?
1733
17342000-01-18  Larry Jones  <larry.jones@sdrc.com>
1735
1736	* main.c (main): Allow -z0 to disable gzip compression.
1737
17382000-01-17  Larry Jones  <larry.jones@sdrc.com> for
1739	K.J. Paradise (kj@sourcegear.com)
1740
1741	* version.c: Push version number to 1.10.8.1.
1742
1743	* version.c: Version 1.10.8.
1744
17452000-01-17  Larry Jones  <larry.jones@sdrc.com>
1746
1747	* mkmodules.c (init): Create CVSROOT/Emptydir to avoid problems
1748	with users not having sufficient permissions to create it later.
1749
17502000-01-04  Larry Jones  <larry.jones@sdrc.com>
1751
1752	* client.c (get_responses_and_close): Simplify time-stamp race
1753	avoidance code.
1754	* commit.c (commit): Ditto.
1755	* update.c (do_update): Ditto.
1756	(Prompted by patch submitted by Pavel Roskin
1757	<pavel_roskin@geocities.com>.)
1758
1759	* hardlink.c: sizeof (char) is 1, by definition.
1760	* logmsg.c: Ditto.
1761	* rcs.c: Ditto.
1762
17632000-01-03  Karl Fogel  <kfogel@red-bean.com>
1764
1765	* filesubr.c, subr.c (backup_file): moved this function from
1766	filesubr.c to subr.c, at JimK's suggestion.
1767
17682000-01-03  Jim Kingdon  <http://developer.redhat.com/>
1769
1770	* sanity.sh (clean): Test the contents of the .#cleanme.txt.1.1
1771	file, not just its existence.
1772
17732000-01-03  Karl Fogel  <kfogel@red-bean.com>
1774
1775	* cvs.h, filesubr.c (backup_file): use `const' for suffix too;
1776	correct suffix length calculation and appending behavior; discard
1777	unnecessary `void' cast.  Thanks to Jim Meyering for noticing.
1778
17792000-01-03  Larry Jones <larry.jones@sdrc.com>
1780
1781	* sanity.sh (clean): Fix up expected output.
1782
17832000-01-02  John P Cavanaugh <cavanaug@sr.hp.com>
1784        and Karl Fogel <kfogel@red-bean.com>
1785
1786	New -C option to update: overwrites local changes with clean
1787	copies from the repository.  (This is an unreversion of the
1788	1999-12-10 change, further modified to work remotely.)
1789
1790	* client.h (BACKUP_MODIFIED_FILES): new #define.
1791
1792	* client.c (struct send_data): new element `backup_modified'.
1793	(send_files): set above element if BACKUP_MODIFIED_FILES flag is
1794	present.
1795
1796	* filesubr.c (backup_file): new function.
1797
1798	* cvs.h: prototype for new function `backup_file'.
1799
1800	* update.c (toss_local_changes): new file-scoped global.
1801	(update): set toss_local_changes if -C flag seen.  If
1802	client_active, send "-C" to server, and set SEND_NO_CONTENTS and
1803	BACKUP_MODIFIED_FILES flags before calling send_files().
1804
1805	(update_fileproc): if file is modified and toss_local_changes is
1806	set, then back the file up and then check out a fresh copy from
1807	the repository.  Also, fixed indentation and formatting for a
1808	particularly bad stretch of code near (but unrelated to) these
1809	changes.
1810
1811	* sanity.sh: new test `clean', for update -C option.
1812
18131999-12-29  Jim Kingdon  <http://developer.redhat.com/>
1814
1815	* history.c (read_hrecs): st_blksize is unsigned long, not int.
1816	This isn't just cosmetic - getting it wrong will cause coredumps
1817	and such on 64 bit machines.
1818
1819	* import.c (import_descend), ignore.c (ignore_files): Placate gcc
1820	-Wall by parenthesizing foo || (bar && baz).
1821
18221999-12-24  Larry Jones <larry.jones@sdrc.com>
1823
1824	* release.c (release): Use fputs to echo lines from update instead
1825	of printf to avoid problems with lines containing "%".  (Reported
1826	by Jean-Luc Simard <Jean-Luc.Simard@matrox.com>.)
1827
1828	* history.c (read_hrecs): Allocate a single 2-block buffer instead
1829	of allocating and freeing a buffer for each block.
1830	(fill_hrec): Remove redundant code.
1831	(select_hrec): Plug memory leak.
1832
18331999-12-22  Larry Jones <larry.jones@sdrc.com>
1834
1835	* history.c (history): For "modified" or "checkout", sort on
1836	file if user specified -l, even if user also specified a date-
1837	oriented flag.
1838	* sanity.sh (history): Update to match; add new tests.
1839
18401999-12-15  Pavel Roskin <pavel_roskin@geocities.com>
1841	and Larry Jones <larry.jones@sdrc.com>
1842
1843	* lock.c (lock_name): fixed assertion failure for the
1844	top-level CVS directory when LockDir is used
1845	* sanity.sh (lockfiles-9): new test for this case
1846
18471999-12-11  Karl Fogel  <kfogel@red-bean.com>
1848
1849	* Revert previous change -- it doesn't work remotely yet.
1850
18511999-12-10  John P Cavanaugh <cavanaug@sr.hp.com>
1852        and Karl Fogel <kfogel@red-bean.com>
1853
1854	* update.c: new -C option to update, overwrites local changes with
1855	clean copies from the repository.
1856	Also, fixed indentation and formatting for a particularly bad
1857	stretch of code near these changes in update_fileproc().
1858
1859	* sanity.sh: test new update -C option.
1860
18611999-12-10  Larry Jones <larry.jones@sdrc.com>
1862
1863	* commit.c (remove_file): Call history_write with update_dir NULL
1864	like Checkin() does for add and modify.
1865	* sanity.sh (basic2-64): Update to match, add "R" records to expected
1866	remote output.
1867
18681999-12-09  K.J. Paradise (kj@sourcegear.com)
1869
1870	* history.c, commit.c, sanity.sh: found (I think) final
1871	cause of seg fault in history command.  Also, added the "R"
1872	history functionality.  Fixed basic2-64 so it looks correct for
1873	the change.
1874
18751999-11-30  K.J. Paradise (kj@sourcegear.com)
1876
1877	* history.c: fixed seg fault caused by 11-03 changes.
1878	off by one in block memory allocations.
1879
18801999-11-29  Karl Fogel  <kfogel@red-bean.com>
1881
1882	* login.c (logout): free `tmp_name' when done.
1883	Correct a comment.
1884
18851999-11-29  Larry Jones <larry.jones@sdrc.com>
1886
1887	* cvs.h, error.c, import.c: Rename fperror to avoid name clash
1888	on LynxOS.  (Reported by Markus Braun <MarkusBraun@gmx.de>.)
1889
18901999-11-23  Larry Jones <larry.jones@sdrc.com>
1891
1892	* checkout.c (checkout_proc): Split declaration and initialization
1893	of rp to placate neurotic compilers that gripe about jumping past
1894	an initialization, even when the variable is not subsequently used.
1895
18961999-11-19  Larry Jones <larry.jones@sdrc.com>
1897
1898	* server.c (switch_to_user): Correct setgid error messages.
1899
19001999-11-19  Karl Fogel  <kfogel@red-bean.com>
1901
1902	* edit.c (unedit_usage, unedit): new struct, use it.  Now "cvs
1903	unedit" prints an accurate usage message (formerly it printed the
1904	message for "cvs edit", even though the two commands do not have
1905	identical usages).
1906
19071999-11-19  Larry Jones <larry.jones@sdrc.com>
1908
1909	* history.c: Move -e documentation from Flags to Reports.
1910	(history): Add -e to list of report types in error message.
1911
1912	* history.c (history): Process file arguments before client/server
1913	processing so they get sent to the server.
1914	* sanity.sh (history): New tests for above.  (Also remove comments
1915	about variable spacing -- history output is in variable-width
1916	columns with exactly one space between.)
1917
19181999-11-19  Larry Jones <larry.jones@sdrc.com>
1919
1920	* sanity.sh: Reestablish check for running as root (using ``id -u''
1921	instead of ``whoami'').
1922
1923	* sanity.sh(dotest, dotest_lit, dotest_fail, dotest_status,
1924	dotest_sort): Eval the command so quoting and pipes work right.
1925	(spacefiles, dirs, rcslib, modules, unedit-without-baserev,
1926	ignore, rcs, rcs2, history, tagdate, pserver, server, server2)
1927	Simplify various tests based on above.
1928
19291999-11-19  Karl Fogel  <kfogel@red-bean.com>
1930
1931	* mkmodules.c (init): make history file world-writeable after
1932	creating it, since it needs to be writeable for virtually any
1933	CVS operation.
1934
19351999-11-10  Jim Kingdon  <http://developer.redhat.com/>
1936
1937	* admin.c: Revert change to add -H command option.  The help
1938	invocation is "cvs -H admin" not "cvs admin -H" (see cvs.texinfo,
1939	basicb-21 in sanity.sh; fix to cvs.1)
1940
19411999-11-08  Jim Kingdon  <http://developer.redhat.com/>
1942
1943	* log.c (cvslog): If client_active, send options to the server
1944	based on our parsed options rather than trying to send the exact
1945	strings specified (using canonical forms, like RFC822/1123
1946	dates, in the protocol is just cleaner).
1947	(send_one, send_arg_list): New functions, helpers for above.
1948	* sanity.sh (logopt-6a): New test, for this fix.
1949
19501999-11-09  K.J. Paradise <kj@sourcegear.com>
1951
1952	* admin.c: made the -H option do what it is documented to
1953	do.  a
1954
19551999-11-08  Tom Tromey  <tromey@cygnus.com>
1956
1957	* client.c (connect_to_gserver): Print more error text if gssapi
1958	initialization fails.  From Assar Westerlund <assar@sics.se>.
1959
19601999-11-06  Larry Jones <larry.jones@sdrc.com>
1961
1962	*sanity.sh(rcs3-5): Remote output can be out-of-order, so need a
1963	more general pattern to match the assertion failure.
1964
19651999-11-05  K.J. Paradise (kj@sourcegear.com)
1966
1967	* history.c: Added a trap to verify that if a
1968	read(file, buffer,blocksize) returns less than blocksize,
1969	that we really are at the end of the file.  I can't easily
1970	come up with a test case where this code gets touched, so
1971	it may cause problems.  All sanity tests still pass though.
1972
19731999-11-05  Jim Kingdon  <http://developer.redhat.com/>
1974
1975	* sanity.sh (logopt): New test, for Larry's fix.
1976	* sanity.sh (log-18a, rcs-15 to rcs-19): New tests, to test -d
1977	and -r more thoroughly.
1978
19791999-11-05  Larry Jones <larry.jones@sdrc.com>
1980
1981	* log.c (cvslog): Fix -s and -d with spaces on client side.
1982	(log_usage): Revert Karl's change once again.
1983	sanity.sh(rcs3-5): No longer get different results from local
1984	and client/server.
1985
19861999-11-04  Karl Fogel  <kfogel@red-bean.com>
1987
1988	* log.c (log_usage): Revert Jim Kingdon's reversion of my change
1989	of 1999-11-03.  Allowing a space between option and argument
1990	results in lossage; here is a reproduction recipe: run this from
1991	the top of a remote copy of the cvs source tree
1992
1993	   cvs log -d '>1999-03-01' > log-out.with-space
1994
1995	and then run this (note there's no space after -d now):
1996
1997	   cvs log -d'>1999-03-01' > log-out.no-space
1998
1999	The resulting files differ; furthermore, a glance at the output of
2000	cvs shows that the first command failed to recurse into
2001	subdirectories.  Until this misbehavior can be fixed in the source
2002	code, the documentation should reflect the true state of affairs:
2003	if one simply omits the space, everything works fine.
2004
20051999-11-04  Jim Kingdon  <http://developer.redhat.com/>
2006
2007	* log.c (log_usage): Revert Karl's change regarding -d and
2008	-s.  A space is allowed (see sanity.sh for example).
2009
20101999-11-03  K.J. Paradise (kj@sourcegear.com>
2011
2012	* history.c: cleaned up my prior change a bit, per Larry Jones'
2013	comments, and John O'Conner's additional comments about bits of
2014	non MS-Visual C++ compliancy of my code.
2015
20161999-11-04  Larry Jones <larry.jones@sdrc.com>
2017
2018	* sanity.sh: Check that tr that correctly handles NULs; if not, try
2019	to find a version that does; if none can be found, warn user.
2020	Also fix warnings for defective expr.
2021
20221999-11-04  Karl Fogel  <kfogel@red-bean.com>
2023
2024	Changes for empty/random passwords in anon pserver access:
2025
2026	* server.c (check_repository_password): if password empty, grant
2027	access no matter what password is received; this is so anon CVS no
2028	longer requires a password but remains backwards-compatible with
2029	all those clients out there.
2030
2031	* client.c (connect_to_pserver): proceed with login even if
2032	password not found in .cvspass file -- just use empty string as
2033	password.  And if such a login fails, print a descriptive error.
2034
2035	* login.c (get_cvs_password): don't complain if file or password
2036	not found.  That condition is no longer a showstopper, now that
2037	empty passwords are permissible.
2038	Cleaned up conditional chaining a bit, too.
2039
2040	* sanity.sh (pserver-9, pserver-10, pserver-11, pserver-12,
2041	pserver-13): new tests, about empty-password pserver access.
2042
20431999-11-03  K.J. Paradise (kj@sourcegear.com>
2044
2045	* history.c:  modify parsing routines to parse the history
2046	file a block at a time, rather than all at once.  This allows
2047	people with large history files and small amount of memory
2048	to still get some functionality out of the history file.
2049
20501999-11-03  Karl Fogel  <kfogel@red-bean.com>
2051
2052	* log.c (log_usage): correct usage message for -d and -s options.
2053	Because the space between the option letter and its argument has
2054	been eliminated, I capitalized the argument portion to distinguish
2055	it from the option letter.  This makes it slightly inconsistent
2056	with other such usage summaries, but at least it is now both
2057	correct and readable.
2058
20591999-10-22  Larry Jones  <larry.jones@sdrc.com>
2060
2061	* sanity.sh (dotest_sort): Old versions of tr don't understand \t
2062	so use a literal tab instead.
2063
20641999-10-21  Larry Jones  <larry.jones@sdrc.com>
2065
2066	* sanity.sh (dotest_sort): Convert any tabs in the output into spaces
2067	before sorting to avoid POSIX.2 sort weirdness.
2068	(import-106, importb-2): Change expected output per above.
2069
20701999-10-18  K.J. Paradise <kj@sourcegear.com>
2071
2072	Bug: users 'stan' and 'cartman' both have full read/write access
2073	to the cvs repository.  'cartman' does a 'cvs admin -l foo.c'.
2074	'stan' then does a 'cvs admin -u foo.c'.  The lock wouldn't be
2075	removed, and no warning/error would be given.  This is now fixed.
2076	* rcs.c:(c.6157) remove caller/user check on the multiple lock
2077        detection routines.  Sanity.sh runs with no errors after this fix.
2078
20791999-10-14  Larry Jones  <larry.jones@sdrc.com>
2080
2081	Make "cvs admin -e" (with no list of users) work:
2082	* admin.c (admin): Remove error message.
2083	(admin_fileproc): If no args for -e, call RCS_delaccess with NULL user.
2084	* rcs.c (RCS_delaccess): Interpret NULL user as request to delete
2085	entire access list.
2086	* sanity.sh (admin-19a-*): Test.
2087
20881999-09-29  Larry Jones  <larry.jones@sdrc.com>
2089
2090	* entries.c (Subdirs_Known): Use entfilename when opening CVSADM_ENTLOG
2091	like everywhere else.  Although this isn't strictly necessary (since
2092	we immediately close it again), it keeps the code consistent and fixes
2093	a bug where an open error reported the wrong file name.
2094
20951999-09-16  Larry Jones  <larry.jones@sdrc.com>
2096
2097	* log.c (log_parse_revlist): Handle peculiar revision specs like
2098	"-r.", "-r:", and "-r," correctly.  (Thanks to Pavel Roskin
2099	<pavel_roskin@geocities.com> for submitting a patch, this fix is
2100	somewhat different.)
2101	* sanity.sh (log): New tests for above.
2102
21031999-09-15  Larry Jones  <larry.jones@sdrc.com>
2104
2105	* sanity.sh (basica-8b1): New test to check fix for bad diff options
2106	causing cvs to crash.
2107
21081999-09-02  Larry Jones  <larry.jones@sdrc.com>
2109
2110	* modules.c (do_module): Handle case where module definition has
2111	options and special options but no directory; fix potential problems
2112	running off beginning of string while stripping trailing blanks.
2113	* sanity.sh (modules2): New tests for above.
2114
21151999-08-26  Larry Jones  <larry.jones@sdrc.com>
2116
2117	* lock.c (lock_name): Remove side-effects from assert() expression
2118	since they won't occur if NDEBUG is defined (not that that's a good
2119	thing to do).  (Reported by KOIE Hidetaka <hide@koie.org>.)
2120
21211999-08-25  Larry Jones  <larry.jones@sdrc.com>
2122
2123	* sanity.sh: Use "${AWK}" instead of "awk" to make it easier for
2124	people to use nawk/gawk/etc.; use an explicit "-print" with find
2125	since some older version don't assume it; rename tests to avoid
2126	duplicate importc-8.  (Changes along these lines suggested by
2127	Chris Cameron <chris.cameron@ot.co.nz>.)
2128
21291999-08-24  Larry Jones  <larry.jones@sdrc.com>
2130
2131	* commit.c (check_fileproc): Don't crash when a file has no
2132	repository, just treat it as unknown.  (Reported by Stefaan
2133	Diericx <stefaan.diericx@argenta.be>.)
2134	* sanity.sh (errmsg2): New tests, for this fix.
2135
21361999-08-18  Larry Jones  <larry.jones@sdrc.com>
2137
2138	* update.c (special_file_mismatch): Initialize *_hardlinks to
2139	avoid trying to free garbage later on.  (Reported by Jan
2140	Scheffczyk <herta@Xterminator.StudFB.UniBw-Muenchen.de>.)
2141
21421999-08-17  Larry Jones  <larry.jones@sdrc.com>
2143
2144	* sanity.sh (basicc-11): Older versions of sh don't understand
2145	``if ! test...''.  (Patch submitted by David J N Begley
2146	<david@avarice.nepean.uws.edu.au>.)
2147
21481999-08-17  Larry Jones  <larry.jones@sdrc.com>
2149
2150	* client.c, hardlink.c, hash.c, hash.h, main.c, recurse.c: Change
2151	enum constant UNKNOWN to avoid conflicts on HPUX 11.0.  (Reported
2152	by Laurent Duperval <laurent.duperval@cgi.ca>.)
2153
21541999-08-16  Larry Jones  <larry.jones@sdrc.com>
2155
2156	client.c: Eliminate redundant #if.  (Patch submitted by Assar
2157	Westerlund <assar@sics.se>.)
2158
21591999-07-30  Larry Jones  <larry.jones@sdrc.com>
2160
2161	* rcs.c (RCS_checkin): Terminate cleanly if RCS_addbranch fails
2162	rather than blithely continuing on and crashing.
2163	* sanity.sh (basica): New tests, for this fix.
2164
21651999-07-29  Larry Jones  <larry.jones@sdrc.com>
2166
2167	* import.c (add_rcs_file): change "cannot lstat" message to include
2168	userfile (the actual file causing the problem) instead of user
2169	(which may or may not be the same).
2170
21711999-07-29  Eric Sink   <eric@sourcegear.com>
2172
2173	* version.c: Push version number to 1.10.7.1.
2174
2175	* version.c: Version 1.10.7.
2176
21771999-07-28  Eric Sink   <eric@sourcegear.com>
2178
2179	* sanity.sh: before running basicc-11, we need to see if
2180	the cwd has been deleted (by basicc-8).  If so, we
2181	recreate it to allow basicc-11 to proceed.  This may be
2182	something that only happens under the Linux 2.2 kernel.
2183
21841999-07-18  Karl Fogel  <kfogel@floss.red-bean.com>
2185
2186	* edit.c (notify_do): chop newline, if any, from the value
2187	obtained from CVSROOT/users.  Otherwise it just gets passed along
2188	in the argument to the notification program (usually mail), which
2189	will misinterpret it as signifying the end of the command.
2190
21911999-07-19  Larry Jones  <larry.jones@sdrc.com>
2192
2193	* rcs.c (RCS_delete_revs): In the WIN32 kludge, be sure that the result
2194	of RCS_getexpand is not NULL before trying to use what it points to.
2195	(Patch submitted by Timothy L. Taylor <ttaylor@mitre.org>.)
2196
21971999-07-16  Tom Tromey  <tromey@cygnus.com>
2198
2199	* admin.c (admin): Allow `-k' options to be used unrestricted.
2200
22011999-06-23  Jim Kingdon  <http://www.cyclic.com>
2202
2203	* sanity.sh (symlinks2): New test, for symlinks in working
2204	directory without PreservePermissions.  This test (modulo a few
2205	details not relevant to testing whether we are following symlinks)
2206	worked remote as of now, or either remote or local for CVS 1.9.
2207	* subr.c (get_file): Revert 1998-02-15 change to special-case
2208	symlinks.  This makes the above test work local too.
2209	* rcs.c (RCS_checkin): Move the logic to handle special-case
2210	symlinks (and other files other than regular files) here, and make
2211	it only happen if PreservePermissions is on.
2212
22131999-06-18  Larry Jones  <larry.jones@sdrc.com>
2214
2215	* sanity.sh (devcom3-9a): Be less specific about the expected
2216	error message (BSD/OS 4.0 has a bug that can cause exec* to fail
2217	with EACCES instead of ENOENT).
2218
22191999-06-08  Larry Jones  <larry.jones@sdrc.com>
2220
2221	* sanity.sh (diff-4, dirs2-10, tagf-13, importc-7, conflicts2-142b8):
2222	Use ${PROG} instead of "cvs".
2223
22241999-06-05  Jim Kingdon  <http://www.cyclic.com>
2225
2226	* recurse.c (do_recursion, do_dir_proc): Make the SERVER_ACTIVE
2227	#ifdef be only around the check for server_active.  Modulo a few
2228	cosmetic tweaks, same as a patch submitted by Johannes Stezenbach
2229	of propack-data.de.
2230
22311999-06-01  Jim Kingdon  <http://www.cyclic.com>
2232
2233	* sanity.sh: Add comment about rcs2-7 failures on certain days.
2234
2235	Make "cvs status -v" on a removed file work:
2236	* status.c (cvsstatus): Reindent the client code.
2237	(status_fileproc): Don't need a CVS/Entries listing to show the
2238	tags.
2239	* sanity.sh (rmadd2): New test rmadd2-16 tests the existing
2240	behavior with "cvs log"; new test rmadd2-17 tests the new behavior
2241	with "cvs status".
2242
2243	* sanity.sh (basicc): To match no output in dotest, put the empty
2244	regexp first.  Remove tests which check that first-dir exists,
2245	since that isn't true in the case where the OS let us delete it.
2246	(dotest_internal): Fix so that things work with two regexps, with
2247	an empty one first.
2248
22491999-05-28  Larry Jones  <larry.jones@sdrc.com>
2250
2251	* sanity.sh (server-4): Replace bogus directory with real one since
2252	the server now checks it.
2253
22541999-05-27  Jim Kingdon  <http://www.cyclic.com>
2255
2256	* sanity.sh (spacefiles): Clean up -c, top, and -b at end.
2257	(spacefiles, files): Fix bad references to CVSROOT_DIRNAME.
2258
2259	Fix two problems pointed out by Olaf Kirch of swb.de/caldera.de:
2260	* server.c (outside_root): New function, contains expanded version
2261	of code from serve_directory.
2262	(serve_directory): Call outside_root.
2263	(outside_dir): New function
2264	(serve_modified, serve_is_modified, serve_notify,
2265	serve_questionable, serve_unchanged): Call outside_dir.
2266	* sanity.sh (server2): New tests, for these fixes.
2267
22681999-05-26  Jim Kingdon  <http://www.cyclic.com>
2269
2270	* cvs.h, subr.c (xmalloc): Return void* not char*, like xrealloc
2271	has done for some time.
2272	* modules.c (do_module): If we find the module as a directory/file
2273	(rather than in the modules file), skip a bunch of processing
2274	which was unnecessary and also broken in most of the cases
2275	now tested for by the spacefiles sanity.sh test.
2276	* sanity.sh (spacefiles): New test, for specifying filenames
2277	(containing spaces, or starting with '-', or starting with '/') to
2278	"cvs co".
2279
22801999-05-25  Jim Kingdon  <http://www.cyclic.com>
2281
2282	* client.c (update_entries): Make the old DONT_USE_PATCH code the
2283	only code.  This means that if people are still on CVS 1.9
2284	servers, then CVS will fall back to transferring entire files.
2285	This is better than looking for an external "patch" program which
2286	causes no end of troubles (especially on Windows, but someone just
2287	posted to info-cvs about a problem with the Solaris patch).  (This
2288	change was run by devel-cvs and feedback was positive).
2289
2290	* subr.c (xmalloc, xrealloc): The new error.c does not support
2291	%lu; use sprintf instead.
2292
22931999-05-25 Derek Price
2294	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2295
2296	* sanity.sh (server): Escaped a few more newlines in
2297	another awk script.  Solaris awk still don't like 'em.
2298
22991999-05-25 Derek Price
2300	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2301	and Jim Kingdon
2302
2303	* log.c: Remove comment which said "you can delete [this line]"
2304	and which stuck around for over 3 years.
2305	* sanity.sh (errmsg2 & tagdate): Added tests to prove the
2306	current functionality with respect to combining -r and -D.
2307
23081999-05-20  Larry Jones  <larry.jones@sdrc.com>
2309
2310	* server.c (pserver_authenticate_connection): Previous changes
2311	broke verify_and_exit (reported by Robert Fitzsimons, thanks).
2312	* sanity.sh (pserver): New tests pserver-7 and pserver-8 for this.
2313
23141999-05-18 Derek Price
2315	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2316
2317	* sanity.sh (keyword2): Escaped a newline in an awk script.
2318	Apparently Solaris awk don't like 'em.
2319
23201999-05-18  Jim Kingdon  <http://www.cyclic.com>
2321
2322	* sanity.sh (basicc): Allow the behavior whereby unlink(".")
2323	succeeds.  Reported by Jeremy Buhler and Pavel Roskin.
2324
23251999-05-17  Steve Cameron of Compaq
2326
2327	* sanity.sh: Modified to no longer use "test -e" for existence
2328	test as it has turned out to be not portable enough.  Instead use
2329	"test -f", "test -d", etc.
2330	[SCO Unixware 7 apparently doesn't always support it -kingdon]
2331
23321999-05-17  Jim Kingdon  <http://www.cyclic.com>
2333
2334	* version.c: Push version number to 1.10.6.1.
2335
2336	* version.c: Version 1.10.6.
2337
23381999-05-16  Jim Kingdon  <http://www.cyclic.com>
2339
2340	* update.c (patch_file): When we are passing vn_rcs to
2341	RCS_checkout, pass vn_tag as well.
2342	* sanity.sh (keyword): In test keyword-22, test for the fixed
2343	behavior rather than the buggy behavior.  Adjust keyword-23.  Add
2344	test keyword-24, to see whether keyword-23 really worked.
2345
23461999-05-12  Larry Jones  <larry.jones@sdrc.com>
2347
2348	* sanity.sh (pserver-4, pserver-5): Bogus error messages from
2349	non-root initgroups on some 4.4BSD derived systems now show up
2350	in different places in the output.
2351
23521999-05-12  Jim Kingdon  <http://www.cyclic.com>
2353
2354	* import.c (import): Don't allow the user to supply a repository
2355	directory which takes us out of the cvsroot.
2356	* sanity.sh (importc): New tests importc-10 to importc-12, for this.
2357
23581999-05-11  Larry Jones  <larry.jones@sdrc.com>
2359
2360	* server.c (serve_notify): Allocate enough memory to hold the
2361	"misformed Notify request" message in pending_error_text.
2362
23631999-05-11  Jim Kingdon  <http://www.cyclic.com>
2364
2365	* server.c (switch_to_user): Ignore EPERM from initgroups.  Fixes
2366	pserver-4 in testsuite.
2367	(pserver_authenticate_connection): Only print "I LOVE YOU" after
2368	switch_to_user has come back successfully.
2369
2370	* server.c (pserver_authenticate_connection): Call error_exit
2371	rather than reinventing the wheel ourselves.
2372	(switch_to_user): Check for errors from setuid, setgid, and
2373	initgroups.  Fix the #ifdef's (the previous code would skip the
2374	setuid call if SETXID_SUPPORT).
2375
23761999-05-10  Jim Kingdon  <http://www.cyclic.com>
2377
2378	* server.c (serve_notify), edit.c (notify_do): Check for
2379	and reject characters which will get confused with delimiters.
2380	* sanity.sh (server): New tests server-7 through server-15 test
2381	for this and for other notify behaviors.
2382
2383	* rcs.c (RCS_tag2rev): Also look for a physical branch with
2384	RCS_getversion.
2385	* sanity.sh (tagf): Adjust tagf-12 and following tests to test for
2386	the fixed behavior rather than the broken behavior.
2387
23881999-05-07  Jim Kingdon  <http://www.cyclic.com>
2389
2390	* server.c (server_notify): Also set last_node to NULL.
2391	* sanity.sh (server): New tests server-6 and server-7, for this.
2392
23931999-05-05  Jim Kingdon  <http://www.cyclic.com>
2394
2395	* rcs.c (rcs_internal_lockfile): Remove unused variable lockfile.
2396
2397	* add.c (add): Look for directories with the same name in a
2398	different case where appropriate (analogous to fopen_case).
2399	In client code, add comment about how this doesn't do quite
2400	everything.
2401
24021999-05-03  Jim Meyering  <meyering@ascend.com>
2403
2404	Remove rcs-style ,file, lock files upon signal.
2405	* rcs.c (rcs_lockfile): New file-scoped global.
2406	(rcs_cleanup): New function (similar to patch_cleanup).
2407	(rcs_internal_lockfile): Register rcs_cleanup the first time this
2408	function is called.  Rename uses of local `lockfile' to refer to new
2409	global, `rcs_lockfile'.  Don't free the lock file name string, now
2410	that it's global.
2411	(rcs_internal_unlockfile): Rename `lockfile', as above, and carefully
2412	free and NULL-out the global, rcs_lockfile.
2413
24141999-04-30  Jim Kingdon  <http://www.cyclic.com>
2415
2416	* rcs.c (annotate_fileproc): Don't cast NULL in passing it to
2417	RCS_deltas.  Because there is a prototype in scope the cast is
2418	unnecessary (per HACKING's ANSI C or SunOS4 rule), and in fact it
2419	was causing failures on UNICOS because it cast to size_t instead
2420	of size_t*.  (Thanks to Dean Kopesky for reporting this).
2421
24221999-04-29  Jim Kingdon  <http://www.cyclic.com>
2423
2424	* sanity.sh: If invoked without any arguments, print a usage
2425	message (thanks to Pavel Roskin for a report/patch).
2426
2427	* run.c (piped_child): Make the error messages more verbose.
2428	(close_on_exec): Reindent.
2429	* sanity.sh (devcom3): Several errors are possible in devcom3-9a.
2430	Adjust for change to piped_child error message.
2431
24321999-04-28  Jim Kingdon  <http://www.cyclic.com>
2433
2434	* sanity.sh (devcom3): Add some tests of the CVS/Notify file and
2435	disconnected "cvs edit".
2436
2437	* main.c (opt_usage): Remove -b.
2438
24391999-04-20 Derek Price
2440	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2441
2442	* rcs.c (RCS_delete_revs):  RCS_delete_revs uses an
2443	RCS_checkout call to get a new copy of a revision to be
2444	used internally after old revisions were deleted and it was
2445	performing keyword substitutions.  This munged all the
2446	the revisions of the file on the branch containing the
2447	deleted revisions and its sub-branches, as the original they
2448	were being patched from was incorrect.  Corrected this by
2449	passing in "-ko" as an option to RCS_checkout.
2450	* sanity.sh (keywordlog):  modified this test to verify the
2451	correct behavior of 'cvs admin -o'.
2452	[Fixed use of \$ in keywordlog test; added code in RCS_delete_revs
2453	to abort on binary file on Windows -kingdon]
2454
24551999-04-21  Derek Price
2456	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2457	and Jim Kingdon
2458
2459	* tag.c (tag_check_valid): A bug was causing CVS to spin
2460	indefinately when -j:<date> was specified.  CVS now returns
2461	an error.
2462	* sanity.sh: Added a test (tagdate-12) to test this.
2463
24641999-04-19  Jim Kingdon  <http://www.cyclic.com>
2465
2466	* sanity.sh (backuprecover): Clean up the repository at the end.
2467
24681999-04-18  Derek Price
2469	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2470
2471	* sanity.sh added a test (backuprecover) to test cvs behavior
2472	with a repository that is out of date relative to the
2473	developer's workspaces.
2474	[Fix --keep code; move test to "Repository Storage" section since
2475	it doesn't really exercise the diff/diff3 library. -kingdon]
2476
24771999-04-13  Derek Price
2478	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2479
2480	* sanity.sh (diff):  Tests to verify correct operation of
2481	the --ifdef parameter to cvs diff.
2482	[indentation fixed -kingdon].
2483
24841999-04-13  Derek Price
2485	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2486	for Noah Friedman  <friedman@splode.com>
2487
2488        * diff.c (diff): Put "--ifdef=" in opts string, not "-D"; the
2489        latter is confused by pserver for a date spec.
2490
24911999-04-14  Jim Kingdon  <http://www.cyclic.com>
2492
2493	* fileattr.h: Adjust comments to reflect the official version of
2494	the fileattr format now being in cvs.texinfo.
2495
24961999-04-05  Jim Kingdon
2497
2498	* sanity.sh (watch5): Remove nonstandard --keep code.  Don't pass
2499	-f to rm when cleaning up (that tends to mask bugs).  Add watch5
2500	to list of tests at start.  Add comment explaining why we consider
2501	the behavior we test for the right one.  Rename a few tests which
2502	had been erroneously named watch6* instead of watch5*.
2503	* client.c (update_entries): Add comment with brief discussion of
2504	whether there is a better way.
2505
25061999-04-05  Derek Price
2507	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2508
2509	* client.c (update_entries):  Only call mark_up_to_date
2510	(which deletes the CVS/Base/<filename> file for watched
2511	and edited files) on commit.
2512	* sanity.sh:  Make sure the CVS/Base/<filename> file for
2513	a watched and edited file is not removed on a status or
2514	update of a touched/unmodfied file.
2515
25161999-03-30  Larry Jones  <larry.jones@sdrc.com>
2517
2518	* client.c (get_responses_and_close), commit.c (commit),
2519	update.c (do_update): If the sleep(1) call returns prematurely
2520	(due to the way wakeup is scheduled or receiving a signal), do
2521	it again.
2522
25231999-03-26  Jim Kingdon  <http://www.cyclic.com>
2524
2525	* server.c (server): Add comment about Gzip-stream vs. RQ_ROOTLESS.
2526
2527	* sanity.sh (modules3-11b): Adjust exact text of error message to
2528	reflect 1999-03-24 change to dirswitch.
2529
25301999-03-25  Jim Kingdon  <http://www.cyclic.com>
2531
2532	* admin.c (admin): Make argument to -e optional, to match the
2533	documentation.
2534	* sanity.sh (admin-19a-2): Test for this.
2535
2536	* server.c (serve_root): Update comment about checking for missing
2537	Root request.
2538
25391999-03-24  Jim Kingdon  <http://www.cyclic.com>
2540
2541	* server.c (dirswitch): Also check dir here, similar to
2542	what server_pathname_check does for other cases.
2543	* sanity.sh (files): Adjust files-14 to test for this.
2544
25451999-03-24  Derek Price
2546	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2547	and Jim Kingdon
2548
2549	* sanity.sh: added a test (files-13) to test .. indirection
2550	in a path and another (files-14) to make sure we still fail
2551	out when the '..' indirection takes us into the $CVSROOT
2552	directory or beyond.
2553
25541999-03-24  Larry Jones  <larry.jones@sdrc.com>
2555
2556	* rcs.c: Change enum constants ADD and DELETE to something less
2557	likely to run into conflicts.
2558
25591999-03-21  Jim Kingdon  <http://www.cyclic.com>
2560
2561	* sanity.sh (tagf): New test, tests for moving a branch tag to a
2562	non-branch tag and trying to recover.
2563
25641999-03-12  Jim Kingdon  <http://www.cyclic.com>
2565
2566	* sanity.sh (branches): Tweak test branches-5 to test the case in
2567	which one modifies a file and then branches it.
2568
25691999-03-09  John Bley of duke.edu
2570
2571	* mkmodules.c (filelist): Missed a NULL in this struct (should
2572	have 3 members, only had 2).
2573
25741999-03-07  Jim Kingdon  <http://www.cyclic.com>
2575
2576	* sanity.sh (Index): Rename new test from rm_CVS/Root to rmroot
2577	(we don't have a formal rule about funky punctuation in test names
2578	but both underscore and a slash is too funky for me :-)).
2579	Reindent a few tests which were off.
2580
2581	* root.c: Remove the sentence which had the improper English;
2582	there isn't really a need for that sentence and it isn't
2583	particularly accurate any more.
2584
25851999-02-27  Derek Price
2586	<http://www-personal.engin.umich.edu/~oberon/resume.html>
2587
2588	* sanity.sh:  Added rm_CVS/Root test to test that CVS uses
2589	$CVSROOT rather than dumping core when running remotely and
2590	the admin file CVS/Root is deleted from the workspace.
2591
2592	Also, altered a few 'cvs commit' 's in regular expressions to
2593	fit the .${PROG} commit. portability syntax.
2594
2595	* recurse.c:  Stopped CVS from dumping core in the case tested
2596	above.
2597
2598	* root.c:  Fixed somebody's improper english.
2599
26001999-02-25  Larry Jones  <larry.jones@sdrc.com>
2601
2602	* sanity.sh (keyword2-12): Use ${QUESTION} instead of ? in the
2603	expected result.
2604
26051999-02-24  Jim Kingdon  <http://www.cyclic.com>
2606
2607	* sanity.sh (keyword2): Restore the original \\\$ instead of $.
2608	The latter ends up working due to various kludgy semantics in the
2609	shell and regular expressions, but the former is cleaner.
2610
2611	* sanity.sh (keyword2): Protect keywords against accidental
2612	expansion in sanity.sh itself (most occurrences had this, but not
2613	all).
2614
26151999-02-23  Derek Price  <http://www.cyclic.com>
2616	and Jim Kingdon.
2617
2618	* sanity.sh (keyword2): New test, tests for merging with -kk.
2619
26201999-02-22  Jim Kingdon  <http://www.cyclic.com>
2621
2622	* version.c: Ease version number to 1.10.5.1.
2623
2624	* version.c: Version 1.10.5.
2625
26261999-02-18  Jim Kingdon  <http://www.cyclic.com>
2627
2628	* sanity.sh (files): New test, for a relatively obscure spurious
2629	"Up-to-date check failed" in client/server.
2630
2631	* main.c (lookup_command_attribute): Don't check for "history"
2632	twice.
2633
26341999-02-17  Jim Kingdon  <http://www.cyclic.com>
2635	    and Hallvard B Furuseth
2636
2637	* root.c (parse_cvsroot): Rearrange ifdefs to squelch possible
2638	warnings about statement not reached.
2639
26401999-02-16  Jim Kingdon  <http://www.cyclic.com>
2641
2642	* recurse.c (start_recursion): If we are skipping the current
2643	directory (due to it being from the wrong repository), also adjust
2644	the arguments we send to the server accordingly (like we already
2645	do for the case in which there is no CVS directory).
2646	* sanity.sh (multiroot4): New test, for this.  All these tests had
2647	passed locally, but remote multiroot4-12 tests for this fix.
2648	(multiroot): Adjust multiroot-diff-1, multiroot-update-2,
2649	multiroot-tag-1, multiroot-status-1, multiroot-update-3, and
2650	multiroot-log-1 to reflect the cosmetic change this produces (one
2651	less "Diffing ." message).
2652	(multiroot2): multiroot2-8 likewise.
2653
26541999-02-10  Jim Kingdon  <http://www.cyclic.com>
2655
2656	* tag.c (cvstag): Don't pass SEND_NO_CONTENTS if -c specified.
2657	* sanity.sh (tagc): New test, for various tag -c behaviors.
2658	Test tagc-6 tests for this fix.
2659
26601999-02-09  Jim Kingdon  <http://www.cyclic.com>
2661
2662	* error.c (error): Rewrite to no longer use vasprintf (see
2663	../lib/ChangeLog for rationale).  Note the slight change in
2664	interface - callers which want %8.8s or similar formats need to
2665	call sprintf.
2666	* lock.c (lock_wait, lock_obtained): Use sprintf.
2667
26681999-02-08  Jim Kingdon  <http://www.cyclic.com>
2669
2670	* rcs.c (RCS_delete_revs): Pass -a to diff_exec.
2671	* sanity.sh (binfiles3): New tests binfiles3-9 through
2672	binfiles3-13 test for this fix.
2673	* sanity.sh (binfiles): New tests binfiles-o4 and binfiles-o5
2674	(which don't test this bug, just on general principles).
2675
26761999-02-04  Jim Kingdon  <http://www.cyclic.com>
2677
2678	* lock.c (lock_name): Permissions of directories in LockDir
2679	shouldn't depend on the umask.
2680	* sanity.sh (lockfiles): Set umask and CVSUMASK, to test for this.
2681
26821999-02-01  Jim Kingdon  <http://www.cyclic.com>
2683
2684	* sanity.sh (keywordlog): New tests keywordlog-22 and
2685	keywordlog-23 test keyword expansion and $Log.  Adjust other tests
2686	so that revisions differ more from each other, so this is a
2687	better test.
2688
26891999-01-29  Jim Kingdon  <http://www.cyclic.com>
2690
2691	* commit.c (checkaddfile): If options is "", treat it the same as
2692	NULL.  Centralize this check, and the one for it starting with
2693	"-k", at the start of the function.
2694
2695	* rcs.c, rcs.h (RCS_setexpand): New function.
2696	* admin.c (admin_fileproc): Access keyword expansion field via
2697	RCS_getexpand and RCS_setexpand, rather than directly.
2698	* commit.c (checkaddfile): When resurrecting, set the keyword
2699	expansion mode.
2700	* sanity.sh (binfiles3): Adjust tests binfiles3-7 and binfiles3-8
2701	for the new behavior.
2702
27031999-01-27  Jim Kingdon  <http://www.cyclic.com>
2704
2705	* sanity.sh (multiroot3): Add new variant of multiroot3-10 test
2706	for RELATIVE_REPOS.  Move multiroot3-11 test out of the
2707	conditionals; it works the same for remote or local,
2708	RELATIVE_REPOS or no.
2709
2710	* options.h.in: Make RELATIVE_REPOS the default, as has been
2711	announced as a future direction since 1997-10-11.
2712	* sanity.sh (multiroot): Tweak multiroot-update-1a and
2713	multiroot-update-1b tests to work with either RELATIVE_REPOS or
2714	non-RELATIVE_REPOS.
2715
2716	* sanity.sh (client-9): Don't assume the time zone.
2717
27181999-01-26  Jim Kingdon  <http://www.cyclic.com>
2719
2720	Fix one facet of the "cvs add -kb" re-adding problem (the other
2721	known facet is tested for by binfiles3-8).
2722	* add.c (add): When re-adding a file, set the keyword expansion
2723	as we normally would.
2724	* sanity.sh (binfiles3): New test binfiles3-6a tests for this.
2725
27261999-01-22  Jim Kingdon  <http://www.cyclic.com>
2727
2728	* sanity.sh (rmadd2): New tests, for undoing a commit.
2729
27301999-01-21  Eric Mumpower  <nocturne@cygnus.com>
2731
2732	* sanity.sh (reposmv): Actually modify CVSROOT in current
2733	environment when calling functions, rather than trying to achieve
2734	the same effect with "CVSROOT=foo functionname". (Many common
2735	bourne shells, including those in SunOS and Solaris 2.4-2.7,
2736	do not properly handle "ENVVAR=foo command" when "command" is
2737	a user-defined shell function rather than an actual executable.)
2738
27391999-01-15  Jim Kingdon  <http://www.cyclic.com>
2740
2741	* sanity.sh (rcs3): Redirect awk's stdin to /dev/null like all the
2742	other awk invocations.  GNU awk seems not to read stdin in this
2743	case, but that behavior is hard to reconcile with the Single Unix
2744	Spec and some awks don't do it.
2745
2746	* sanity.sh (binfiles, binfiles2, binfiles3, server): Use the same
2747	tr trick as in rcs3.  People don't seem to have been complaining,
2748	and this should fix server-4 for HPUX.
2749
27501999-01-14  Jim Kingdon  <http://www.cyclic.com>
2751
2752	* client.c (recv_line): If the line we are reading contains a
2753	character which would sign-extend to EOF, don't treat it as end of
2754	file.  recv() doesn't report end of file this way and this might
2755	fix bugs with 0xff characters.
2756
27571999-01-14  Larry Jones  <larry.jones@sdrc.com>
2758
2759	* client.c (recv_line): Handle EOF from server.
2760
2761	* sanity.sh (importc-8, importc-9): Accept anything in the seconds
2762	fields of the timestamps since touch doesn't set it reliably.
2763	(This isn't great, but it's better than nothing.)
2764
27651999-01-14  Jim Kingdon  <http://www.cyclic.com>
2766
2767	* run.c (run_exec): Adjust comment about vfork; this isn't the place
2768	to get into a treatise about fork performance vs. vfork
2769	performance but it isn't quite as simple as whether one has
2770	copy-on-write.
2771
27721999-01-13  Larry Jones  <larry.jones@sdrc.com>
2773
2774	* sanity.sh (dotest_fail): Handle spurrious output from assert better.
2775
2776	* sanity.sh (rcs3-4, rcs3-5a): Handle even more variants of the
2777	assertion failure message.
2778
27791999-01-12  Larry Jones  <larry.jones@sdrc.com>
2780
2781	* sanity.sh (mtfr-3): ls behavior varies wildly on nonexistant files,
2782        just use echo instead.
2783
27841999-01-11  Jim Meyering  <meyering@ascend.com>
2785
2786	* sanity.sh (mkmodules-temp-file-removal): New test, for this.
2787	* mkmodules.c (mkmodules): Remove each `CVSROOT/.#[0-9]*' temporary
2788	file that's used to check out files listed in CVSROOT/checkoutlist.
2789	Remove extra semicolon at end of line.
2790
27911999-01-11  Larry Jones  <larry.jones@sdrc.com>
2792
2793	* sanity.sh (rcs3-5a): Allow for multiple lines of output before the
2794	assertion failure message.
2795
2796	* sanity.sh (lockfiles-6, client-8): Work around bug in HP-UX chmod
2797	(doesn't allow anything to follow omitted permissions).
2798
27991999-01-09  Jim Kingdon  <http://www.cyclic.com>
2800
2801	* client.c (set_sticky): Nonfatal error if we can't write it.
2802	* sanity.sh (dirs2-8 through dirs2-14): New tests, for this.
2803
2804	* sanity.sh (rcs3): Write NUL character with tr not awk, in
2805	accordance with Single Unix Specification.  Hopefully will fix
2806	rcs3-7 for HPUX.  Will not work on SunOS4, but then again neither
2807	did the old syntax.
2808
28091999-01-05  Jim Kingdon  <http://www.cyclic.com>
2810
2811	* client.c, update.c: Rename MD5* functions to cvs_MD5* per
2812	corresponding change to ../lib/md5.h.
2813
28141999-01-03  Jim Kingdon  <http://www.cyclic.com>
2815
2816	* sanity.sh (client): Give file1 a predictable mode so that the
2817	output in client-9 will not depend on the umask of the user
2818	running the tests.
2819
28201998-12-29  Jim Kingdon  <http://www.cyclic.com>
2821
2822	* client.c (client_senddate): Use date_to_internet rather than
2823	using our own "5/26/1997 13:01:40 GMT" date format.
2824	* main.c (date_to_internet): Check for errors from sscanf.  Always
2825	send a four digit year.  Send hours, minutes, and seconds as two
2826	digits per RFC822.
2827	* sanity.sh (client): New tests client-8 and client-9 test for this.
2828
2829	* sanity.sh (rcs2): New tests rcs2-6 through rcs2-8 test for fix
2830	to lib/getdate.y (before the fix, "100 months" or "8 years" would
2831	tend to mean the year 1969, thus the tests would give "cvs update:
2832	file1 is no longer in the repository").
2833
28341998-12-28  Larry Jones  <larry.jones@sdrc.com>
2835
2836	* entries.c (Register): Return if unable to open log file to avoid
2837	referencing the invalid file pointer.
2838	* sanity.sh (dirs2-7): With above change, no longer fails.
2839	* sanity.sh (rcs3-5a): Another assertion failure message.
2840	* sanity.sh (pserver-4, pserver-5): Some 4.4BSD derived systems spit
2841	out bogus error messages when initgroups is called as non-root.
2842
28431998-12-23  Larry Jones  <larry.jones@sdrc.com>
2844
2845	* sanity.sh (rcs3, dotest_fail): The assertion failure message varies
2846	wildly between different systems and the resulting abort call can
2847	even result in spurrious output.  Fix the regexp to accept nearly
2848	anything containing some kind of assertion failure and ensure that
2849	any spurrious output ends up in the output file instead of on the
2850	terminal.
2851
28521998-12-23  Jim Kingdon  <http://www.cyclic.com>
2853
2854	* admin.c, checkout.c, commit.c, cvsrc.c, expand_path.c,
2855	history.c, ignore.c, import.c, log.c, mkmodules.c, modules.c,
2856	myndbm.c, parseinfo.c, rcs.c, remove.c, rtag.c, status.c, subr.c,
2857	tag.c, wrapper.c: Cast all char's to unsigned char before passing
2858	them to ctype.h functions (isalpha, isgraph, isalnum, isspace,
2859	isdigit, isprint, isupper).  Whether using ctype.h is the right
2860	thing at all is unclear to me (having the server depend on locale
2861	seems wrong, as we don't necessarily have any good way to set the
2862	right locale, if there even is such a concept as 'right' locale in
2863	this context), but as long as we use ctype.h we might as use it
2864	according to the standards (this affects systems where plain char
2865	is signed but users supply characters with the 8th bit set).
2866	Thanks to Paul Eggert for suggesting this.
2867
28681998-12-22  Jim Kingdon  <http://www.cyclic.com>
2869
2870	* sanity.sh (rcs3): Oops, the earlier fix for srcdir only fixed
2871	the non-remote case, not the remote case.  Fix the other occurrence.
2872
28731998-12-22  Jim Kingdon
2874
2875	* sanity.sh (rcs3): The assertion failure message varies slightly
2876	depending on whether CVS was built with srcdir != ".".  Fix regexp.
2877
28781998-12-21  Jim Kingdon
2879
2880	* rcs.c (RCS_getdate): Reindent Jim Meyering's change; remove
2881	unused variable x_vers.
2882
2883	* rcs.c: When printing an unexpected character we found in the RCS
2884	file, print it in hex rather than as a character (see comment for
2885	rationale).
2886	* sanity.sh (rcs3): Adjust rcs3-2 and rcs3-7 tests accordingly.
2887
2888	* sanity.sh (rcs3): New test, for some error handling cases
2889	involving parsing RCS files.
2890
28911998-12-16  Jim Meyering  <meyering@ascend.com>
2892
2893	* rcs.c (RCS_getdate): Handle the case in which a file is first
2894	imported after its initial version has been created.
2895	* sanity.sh (import-after-initial): New test for that.
2896
28971998-12-17  Jim Kingdon
2898
2899	* server.c (serve_root): Pserver_Repos only exists if
2900	AUTH_SERVER_SUPPORT is defined.
2901
29021998-12-12  Jim Kingdon, and Derek R. Price of Stortek.
2903
2904	* sanity.sh (multiroot): Change + to ${PLUS}.
2905
29061998-12-12  Jim Kingdon, and Gary Young of Motorola
2907
2908	* sanity.sh (admin): In tests admin-13, admin-25, and admin-29,
2909	allow 4 digit year in addition to 2 digit year.
2910
29111998-12-12  Jim Kingdon
2912
2913	* sanity.sh (log): New tests log-14a and log-14b test for -rHEAD
2914	and for HEAD as (nonexistent) file name.
2915
29161998-12-02  Jim Kingdon
2917
2918	* version.c: Squish version number to 1.10.4.1.
2919
2920	* version.c: Version 1.10.4.
2921
29221998-11-24  Jim Kingdon
2923
2924	* recurse.c (do_file_proc): Check for errors from RCS_parse.
2925	* sanity.sh (rcslib-symlink-7 through rcslib-symlink-10): New
2926	tests, test for this.
2927
2928	* sanity.sh (reposmv-2): Adjust for 22-Nov change to Find_Names.
2929
2930	* entries.c (Register): If we can't write Entries.Log, make it a
2931	nonfatal error.
2932	* sanity.sh (dirs2): Test for this fix.
2933
2934	* sanity.sh (dirs2): Clean up working directory at end of test.
2935
29361998-11-23  Jim Kingdon
2937
2938	* sanity.sh (dirs2): New test, for some more cases involving
2939	deleting directories and such.
2940
2941	* sanity.sh (dirs): Update for yesterday's change in Find_Names
2942	error handling.  The error in dirs-4 is fairly different now; in
2943	dirs-3 and dirs-3a it is the obvious change.
2944
29451998-11-22  Jim Kingdon
2946
2947	* sanity.sh (release): Move the commments listing "cvs release"
2948	tests from modules2-6 to here.
2949	* release.c (release): Update comment to reflect "? foo" case.
2950
2951	* find_names.c (Find_Names): If we can't read the repository, make
2952	it a nonfatal error.  Tell the caller whether this happened.
2953	(find_rcs): Add comment regarding this behavior.
2954	* recurse.c (do_recursion): If Find_Names gives an error, skip
2955	the directory and print a message saying so.
2956	* sanity.sh (modes3): New test, for this.
2957
29581998-11-18  Jim Kingdon
2959
2960	* rtag.c (rtag_usage), tag.c (tag_usage): Use "-r rev"
2961	consistently.
2962
2963	* sanity.sh (conflicts3): Tests conflicts3-24 through
2964	conflicts3-28 test for another case similar to conflicts3-22.
2965
29661998-11-14  Jim Kingdon
2967
2968	* sanity.sh (diff): New test, for now just tests for the "I know
2969	nothing" message.
2970
2971	* sanity.sh (conflicts2-142b7 through conflicts2-142b11): New
2972	tests; resurrecting doesn't work from one level up.
2973
2974	* sanity.sh (mwrap-7): Remote prints the messages in a different
2975	order.
2976
29771998-11-13  Jim Kingdon
2978
2979	* tag.c (check_fileproc): Log tag deletions.
2980	* rtag.c (check_fileproc): Likewise.
2981	* sanity.sh (taginfo-14 through taginfo-18): New tests, for
2982	these behaviors.
2983
29841998-11-12  Jim Kingdon
2985
2986	* sanity.sh (mwrap-7): Update for the noexec fix.
2987
2988	* server.c (server_copy_file): Add comment about noexec.
2989
2990	* update.c (checkout_file): Handle noexec case involving revbuf
2991	and modes.
2992	(update_fileproc): In case T_NEEDS_MERGE, let merge_file take care
2993	of noexec, so it can tell the user if there would be conflicts.
2994	(merge_file): Print "conflicts found in FILE" message
2995	regardless of noexec.  Add comment about checking for whether the
2996	file already contained the changes, and noexec.
2997	* sanity.sh (conflicts-192a): New test, for this.
2998
29991998-10-20  Jim Kingdon
3000
3001	Use the gzip library on the server.  Probably doesn't speed things
3002	up as currently implemented, but does avoid hassles in terms of
3003	finding an external gzip program.
3004	* zlib.c, server.h (gunzip_and_write, read_and_gzip): Now returns
3005	whether a fatal error occurred, rather than expecting error (1,
3006	...) to work.
3007	* client.c (update_entries, send_modified): Change callers.
3008	* server.c (receive_file): Rewrite gzip code to use
3009	gunzip_and_write rather than filter_through_gunzip.
3010	(server_updated): Likewise, use read_and_gzip rather than
3011	filter_through_gzip.
3012	* client.c, client.h (filter_through_gzip, filter_through_gunzip),
3013	run.c, cvs.h (filter_stream_through_program): Removed; no longer used.
3014	* sanity.sh (server): New tests server-4 and server-5 test
3015	this feature (note that CVS 1.10 also passes these tests; the
3016	behavior is supposed to be unchanged).
3017
30181998-10-19  Jim Kingdon
3019
3020	* sanity.sh (multiroot3): New test, tests for a few more
3021	multiroot cases.
3022
3023	* lock.c (lock_name): Set the permissions on each directory we
3024	create to that of the parent directory.
3025	* sanity.sh (lockfiles): New chmod and tests lockfiles-7a and
3026	lockfiles-7b test for this.  Adjust lockfiles-5 for new text of
3027	error message.
3028
30291998-10-15  Jim Kingdon
3030
3031	* server.c (requests): Set RQ_ROOTLESS for "Set".
3032	* sanity.sh (info): Also clean up $HOME/.cvsrc.
3033	(server): Test that we can send Set before Root (had been tested
3034	by crerepos-6b, but only if you ran the info test first).  Tests
3035	for this fix.
3036
30371998-10-14  Jim Kingdon
3038
3039	* subr.c (expand_string): Tweak the algorithm so that the size
3040	that it allocates is generally a power of two.
3041
30421998-10-14  Eivind Eklund and Jim Kingdon
3043
3044	* commit.c (commit): For the client, don't worry about whether we
3045	are root.
3046
30471998-10-13  Jim Kingdon
3048
3049	* server.h (struct request): Change status field to flags and add
3050	RQ_ROOTLESS.
3051	* client.c (handle_valid_requests, supported_request): Change
3052	status to flags.
3053	* server.c (requests): Change status to flags.  Add RQ_ROOTLESS.
3054	* server.c (server): If not RQ_ROOTLESS, and we haven't gotten a
3055	Root request, give an error.
3056
30571998-10-12  Jim Kingdon
3058
3059	* version.c: Slide version number to 1.10.3.1.
3060
3061	* Version 1.10.3.
3062
3063	* sanity.sh (modules2-17): Update for 9 Oct 1998 change to
3064	update_dirent_proc.
3065
30661998-10-11  Jim Kingdon
3067
3068	* commit.c (checkaddfile, commit_fileproc): A numeric value for
3069	'tag' does not mean that we are adding on a branch.
3070	* sanity.sh (keywordlog): Adjust this test, to test for this
3071	(replaces comment saying we should be doing it).
3072	(rmadd): Likewise.
3073
3074	* sanity.sh (rmadd): New test, tests for various existing
3075	behaviors with "cvs ci -r".
3076
30771998-10-09  Jim Kingdon
3078
3079	* update.c (update_dirent_proc): For local CVS, if the directory
3080	does not exist in the working directory nor in the repository,
3081	just skip it.
3082	* sanity.sh (dirs): New tests dirs-3a, dirs-7 and dirs-8 test for
3083	this and related behaviors.  Note that the new behavior was also
3084	the previous behavior for remote; we are only changing it for local.
3085
3086	* wrapper.c, cvsrc.c, ignore.c: Add comments about ignoring .cvsrc
3087	and friends if we can't find a home directory.
3088	* expand_path.c (expand_path): If we can't find the home
3089	directory, give an error rather than a coredump (or worse).
3090	* login.c (construct_cvspass_filename): Don't use errno in error
3091	message; get_homedir doesn't set it.  Add comment about this
3092	message.
3093
30941998-10-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
3095
3096	* diff.c (diff): Set variables to NULL at the start, and free
3097	memory at the end.
3098	* sanity.sh (multiroot2): Add tests for this (before the fix,
3099	multiroot2-12 would abort with "no more than two revisions/dates
3100	can be specified").
3101
31021998-10-06  Jim Kingdon  <kingdon@harvey.cyclic.com>
3103
3104	* Makefile.in (installcheck check): Remove references to RCSBIN;
3105	they don't do anything now that RCSBIN is ignored.
3106
3107	* client.c: Clean up horrible confusion about whether stored_mode
3108	or stored_mode_valid (or nothing :-)) indicates whether
3109	stored_mode is allocated.  Should fix crashes (for example, on NT
3110	when the server has renamed multiple files from uppercase to
3111	lowercase).
3112
3113	* sanity.sh (dirs): New tests, tests for some cases involving
3114	admins who do surgery on the repository.
3115
31161998-10-03  Johannes Stezenbach <johannes.stezenbach@propack-data.de>
3117
3118	* vers_ts.c (Version_TS): If UTIME_EXPECTS_WRITABLE, if
3119	necessary change the file to be writable temporarily to set its
3120	modification time.
3121
31221998-10-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
3123
3124	* client.c (handle_error): Add comment about indicating which
3125	errors are from the server.
3126
31271998-10-01  Jim Kingdon  <kingdon@harvey.cyclic.com>
3128
3129	* sanity.sh (devcom-180): Allow one digit day.
3130
31311998-09-30  Jim Kingdon  <kingdon@harvey.cyclic.com>
3132
3133	* main.c (main): Don't call Name_Root if -d specified.
3134	* recurse.c (do_recursion, do_dir_proc): Don't check CVS/Root
3135	if -d was specified.
3136	* import.c (import): Indentation fix.
3137	* sanity.sh (multiroot): Update for this change.
3138	(reposmv): New test, tests for this.
3139
31401998-09-28  Jim Kingdon  <kingdon@harvey.cyclic.com>
3141
3142	* sanity.sh (multiroot2): New test, tests some nested directory
3143	cases.
3144
31451998-09-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
3146
3147	* sanity.sh (multiroot): Change a few comments which said modules
3148	when they meant directories.
3149
31501998-09-25  Jim Meyering  <meyering@ascend.com>
3151
3152	* sanity.sh (devcom-180): Add 0-9 to the range of characters allowed
3153	in hostname regexp.
3154
31551998-09-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
3156
3157	* sanity.sh (log2): New test log2-7a tests for one error handling
3158	case.  Add a comment about another.
3159
31601998-09-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
3161
3162	* sanity.sh: Change crerepos test back to :ext: (for several
3163	reasons; see comments).
3164
31651998-09-24  Noel Cragg  <noel@swish.red-bean.com>
3166
3167	* sanity.sh (rcslib-symlink-5, rcslib-symlink-6): new tests to
3168	check the operation of "tag" when there are symlinks in the
3169	repository.
3170
3171	* rcs.c (RCS_checkin): remove old code that resolved the symlink
3172	and call resolve_symlink instead.
3173	(RCS_rewrite): call resolve_symlink before doing anything else to
3174	make sure we're operating on the file and not the symlink.
3175
3176	* subr.c (resolve_symlink): new routine -- resolves a symbolic
3177	link chain to its destination.
3178	* cvs.h: add prototype.
3179
3180	* sanity.sh (basica-6.2, basica-6.3): changed match expressions to
3181	reflect new diff output.
3182
3183	* rcs.c (make_file_label): generate labels for files that include
3184	the pathname so that output from "cvs diff" is useable by patch.
3185	Looks like I came up with the mods as Andy Piper
3186	<andyp@parallax.co.uk>; his patch was on the Cyclic unofficial
3187	patches page.
3188
3189	* sanity.sh: change remote access method from ext to fork.  This
3190	results in a significant speed improvement when running the
3191	testsuite.  The ext method on my machine (i586 120MHz Linux 2.0.35
3192	with TCP wrappers installed) runs in 450% of the time of the local
3193	method while the fork method runs in only 150% of the time of the
3194	local method!  Yow!  Am I SWAPPING yet?!
3195	(crerepos-6a, crerepos-6b): change to reflect different error
3196	messages for fork method.
3197	(modes-15): same.
3198
3199	* client.c (connect_to_forked_server): new routine.
3200	(start_server): call the above when method is fork_method.
3201
3202	* root.c: add a new method named "fork".  This method uses the
3203	remote protocol, but does so by forking a "cvs server" process
3204	directly rather than doing "rsh host cvs server" (for example).
3205	This new method has few advantages for day-to-day use, but has
3206	three important benefits for debugging:
3207
3208	  1) Most secure installations these days don't allow rsh access.
3209	  With this new method, we can still test the remote protocol on
3210	  these machines because we don't need to be able to make a local
3211	  TCP connection.
3212
3213	  2) Even if installations allow rsh access, they almost always
3214	  have TCP wrappers to check permissions by IP/hostname.  This
3215	  causes a short delay for every connection.  For invocations from
3216	  the command line, this doesn't matter much, but it adds up to a
3217	  significant amount of time when running the testsuite.
3218
3219	  3) On machines that can't (or do not usually) provide rshd
3220	  access (I'm thinking of WNT/W95 in particular), we can now run
3221	  tests of the remote protocol using this method.  Indeed, we can
3222	  run remote protocol tests on any machine that has an
3223	  implementation of piped_child().
3224
3225	(parse_cvsroot): handle new method.
3226	(error_exit, xstrdup, isabsolute): new stub functions to use when
3227	compiling root.c with the DEBUG option.
3228	(main): fix a few typos.
3229	* cvs.h (CVSmethod): add fork_method.
3230
3231	* server.c (create_adm_p): use Emptydir as the placeholder
3232	directory instead of "." to avoid problems with "cvs update -d" et
3233	al.
3234
32351998-09-22  Noel Cragg  <noel@swish.red-bean.com>
3236
3237	* sanity.sh (devcom-180): fixed typo in regexp.
3238
3239	* main.c (main): remove need_to_create_root and related code
3240	(including CVS_IGNORE_REMOTE_ROOT environment variable).  The
3241	current implementation (just removed) of rewriting the contents of
3242	the CVS/Root file isn't desirable for a number of reasons:
3243
3244	  1) Only the top-level CVS/Root directory is updated.  If we're
3245	  really interested in pointing our WD at another CVSROOT, we
3246	  should have a separate command.
3247
3248	  2) With the new multiroot mods, we don't ever want to rewrite
3249	  CVS/Root files in the way the removed code did.  Consider:
3250
3251	    cvs -d repository1 co a
3252	    cd a
3253	    cvs -d repository2 co b
3254            cvs -d repository2 update b
3255
3256	  The update command would rewrite the contents of a/CVS/Root to
3257	  the incorrect value.  Bad.  We then wouldn't be talking to the
3258	  correct repository for files in a.
3259
3260	  3) The removed code seems to be a quick hack to support working
3261	  directories checked out from multiple repositories.  With the
3262	  CVS_IGNORE_REMOTE_ROOT variable set, one could perform commands
3263	  as in example 2, above, without worring about updating CVS/Root
3264	  files.  While in pre-1.10.1 recursive commands wouldn't handle
3265	  that working directory hierarchy, one could use commands like
3266	  "cvs foo -l" instead.  While not great, this allows you (with a
3267	  lot of manual interaction) to have a multiroot WD.  Since we now
3268	  have multiroot mods checked in, we don't need this code.
3269
3270	(lookup_command_attribute): while we don't need the
3271	CVS_CMD_USES_WORK_DIR flag anymore (since it only was supporting
3272	the need_to_create_root code), I'm leaving it in.  It may come in
3273	handy at some later date.
3274
32751998-09-18  Jim Kingdon  <kingdon@pennington.cyclic.com>
3276
3277	* version.c: Advance version number to 1.10.2.1.
3278
3279	* Version 1.10.2.
3280
32811998-09-13  Jim Kingdon  <kingdon@harvey.cyclic.com>
3282
3283	* client.c: Refuse to Copy-file to another directory
3284	* sanity.sh (client): New test, tests for this.
3285
3286	* edit.c (editors_fileproc), watch.c (watchers_fileproc): Use
3287	cvs_output rather than writing to stdout.
3288	* sanity.sh (devcom): Use dotest for tests 178, 180, and 183
3289	(tests that we preserve existing behavior on "cvs editors").
3290
3291	* commit.c (check_fileproc): Don't allow commits in Emptydir.
3292	* sanity.sh (emptydir-8): Test for this change in behavior.
3293
3294	* sanity.sh: Add some compatibility tests to TODO comments at end.
3295
32961998-09-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
3297
3298	* wrapper.c (wrap_add): Remove obsolete comment about -m.
3299
3300	* server.c (server_updated): Check for error from CVS_UNLINK.
3301
33021998-09-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
3303
3304	* server.c (serve_root): Allocate with malloc, not xmalloc.
3305
3306	* root.c (set_local_cvsroot): Move memory allocation from here...
3307	* server.c (serve_root): ...to here.  Fixes error handling.
3308
3309	* root.c (parse_cvsroot): Don't call check_root_consistent;
3310	parse_cvsroot is only used for local and client.
3311	* root.c (set_local_cvsroot): Move check_root_consistent
3312	functionality from here...
3313	* server.c (serve_root): ...to here.  Fixes error handling.  Also
3314	made the error more explicit, while I am at it.
3315	* server.c (Pserver_Repos): Now static.
3316	* cvs.h: Don't declare it.
3317	* root.c (check_root_consistent): Removed; no longer needed.
3318	* sanity.sh (pserver): New test, tests for this behavior and some
3319	other basic pserver stuff.
3320
3321	* update.c (merge_file): Use cvs_output for "already contains the
3322	differences" message.  Found this one when I actually observed the
3323	out-of-order bug in Real Life(TM).
3324
33251998-09-09  Jim Kingdon
3326
3327	* find_names.c (find_dirs): Make sure to zero errno before
3328	going around the loop again.
3329	* find_names.c (find_rcs): Make sure to set save_errno.
3330	(thanks to Alexandre Parenteau for reporting both problems).
3331
33321998-09-09  Jim Kingdon  <kingdon@harvey.cyclic.com> and Michael Pakovic
3333
3334	* edit.c (notify_do): Only free line if it is not NULL.
3335
33361998-09-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
3337
3338	* cvs.h: dirs_sent_to_server should not be inside
3339	AUTH_SERVER_SUPPORT (reported by both Richard Levitte and Murray
3340	Bishop, thanks).
3341
3342	* lock.c, cvs.h: New variable lock_dir.
3343	* parseinfo.c (parse_config): New option LockDir.
3344	* lock.c (lock_name): New function, abstracts out lock file naming
3345	and also supports LockDir.
3346	* lock.c (lock_simple_remove, Reader_Lock, write_lock, set_lock):
3347	Call it (6 places, to create/remove read/write/master locks).
3348	(Lock_Cleanup): Refuse to reenter this function.
3349	* sanity.sh (lockfiles): New test, tests for this feature.
3350
33511998-09-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
3352
3353	* sanity.sh (multiroot): Expect ${TESTDIR} in output instead of
3354	assuming it is /tmp/cvs-sanity (thanks to Mark D. Baushke of Cisco).
3355	Clean up working directory when done (fixes apparent thinko).
3356
3357	* server.c (create_adm_p): Fix one "return" which didn't return a
3358	value.
3359	(dirswitch): Check for errors from create_adm_p.
3360
3361	* sanity.sh: Set LC_ALL rather than just LC_COLLATE.
3362
3363Wed Sep  2 02:30:22 1998  Jim Kingdon  <kingdon@pennington.cyclic.com>
3364
3365	* version.c: Bump version number to 1.10.1.1.
3366
3367	* Version 1.10.1.
3368
33691998-09-01  Jim Kingdon  <kingdon@harvey.cyclic.com>
3370
3371	Administrative note regarding Noel's changes to allow one to
3372	switch from one CVS root to another in a single command: The
3373	ChangeLog entries for the changes which Noel just checked in
3374	appear for 1998-09-01, 1998-08-28, 1998-08-25, 1998-08-19, and
3375	1998-08-18, rather than being all together.
3376
3377	* main.c (set_root_directory): Fix whitespace.
3378	(main): Nuke new -m option and just have that message controlled
3379	by -t.
3380	* server.c (server): Revert the CVS_SERVER_SLEEP code back the way
3381	it was in CVS 1.10.  Attaching to the parent process is relatively
3382	boring (you can just run "cvs server" under a debugger instead),
3383	but connecting to the child process is what the old code was for.
3384	* recurse.c, server.c: Remove DEBUG_NJC code.
3385
33861998-09-01  Noel Cragg  <noel@swish.red-bean.com>
3387
3388	* server.c (do_cvs_command): add another environment variable,
3389	CVS_SERVER_SLEEP2, after forking to pause the program so one can
3390	attach a debugger.
3391
3392	* sanity.sh (crerepos): clean up crerepos-18 now that multiroot
3393	works in this case.
3394	(multiroot): finalize tests for local vs. remote operation.
3395
3396	* recurse.c (start_recursion): near the beginning, save the list
3397	of directories to spoof as command-line arguments, if necessary.
3398	Use that list near the end and call send_file_names to send those
3399	arguments to the server.
3400	(do_argument_proc): removed, since we call send_file_names now.
3401
3402	* main.c (main): re-initialize dirs_sent_to_server on each pass
3403	through the loop for each CVSROOT.
3404
3405	* cvs.h: add proto for global variable which keeps track of which
3406	directories have been sent to the server when in client mode.
3407
3408	* client.c (is_arg_a_parent_or_listed_dir): new function.
3409	(arg_should_not_be_sent_to_server): new function.  Tries to decide
3410	whether the given argument should be sent to the server, based on
3411	the current CVSROOT and the list of directories sent to the
3412	server.
3413	(send_repository): add the directory name to the list of
3414	directories sent to the server.
3415	(send_file_names): call arg_should_not_be_sent_to_server.
3416
3417	* add.c (add): switch the order of send_files and send_file_names
3418	to make multiple repository support possible.  send_files needs to
3419	create a list of directories being requested so that
3420	send_file_names can decide which command-line arguments to send to
3421	the server for the given current CVSROOT.
3422	* admin.c (admin): same.
3423	* commit.c (commit): same.
3424	* diff.c (diff): same.
3425	* edit.c (editors): same.
3426	* log.c (cvslog): same.
3427	* rcs.c (annotate): same.
3428	* remove.c (cvsremove): same.
3429	* status.c (cvsstatus): same.
3430	* tag.c (cvstag): same.
3431	* update.c (update): same.
3432	* watch.c (watch_addremove): same.
3433	(watchers): same.
3434
34351998-08-31  Jim Kingdon  <kingdon@harvey.cyclic.com>
3436
3437	* sanity.sh: Remove "debug" function; it was apparently checked
3438	in accidentally by Norbert Kiesel's change.
3439
34401998-08-31  Norbert Kiesel  <nk@iname.com>
3441
3442	* release.c (release): modify last patch to release so that
3443	save_cwd is called only once and restore_cwd is always called when
3444	neccessary.  Also fixed a tiny memory leak.
3445
3446	* sanity.sh (release): added some more tests for "cvs release"
3447	including a test with two dirs and a "no" for the first one (which
3448	fails without the above patch).
3449
34501998-08-28  Noel Cragg  <noel@swish.red-bean.com>
3451
3452	* sanity.sh (crerepos-18): add new comment and change test
3453	slightly to support multiroot.
3454	(multiroot): add more tests.
3455
3456	* server.c (create_adm_p): new function.
3457	(dirswitch): call create_adm_p.  Modify the code to always write a
3458	new CVSADM_REP file, since create_adm_p might have put a
3459	placeholder there and our value is guaranteed to be correct.
3460	(server): move the CVS_SERVER_SLEEP check here so we can debug
3461	things at an earlier stage.
3462
3463	* recurse.c (start_recursion): add large comment about the ideal
3464	solution to the "Argument xxx" problem.
3465
3466	* main.c (main): move position of debugging comment for -m flag.
3467
3468	* diff.c (diff): clear a static variable.
3469
3470	* client.c (send_file_names): check to see if we should send this
3471	argument to the server based on the contents of the appropriate
3472	CVSADM directory.  This avoids "nothing known about foo" messages
3473	and problems with duplicate modules names in multiple
3474	repositories.
3475	(send_a_repository): change method of calculating toplevel_repos
3476	to support multiple CVSROOTs.
3477	(start_server): clear some static variables.
3478
34791998-08-28  Jim Meyering  <meyering@ascend.com>
3480
3481	* sanity.sh (basicc-8, basicc-11): Use `.*' instead of explicit
3482	`Operation not permitted'.  Solaris2.5.1 gets a different error:
3483	`Invalid argument'.
3484
34851998-08-26  Eric M. Hopper
3486
3487	* sanity.sh: Set LC_COLLATE to "C".
3488
34891998-08-25  Noel Cragg  <noel@swish.red-bean.com>
3490
3491	* sanity.sh (multiroot): new set of tests to check the behavior of
3492	multiroot.
3493
3494	* diff.c (diff): set options value to NULL after freeing to reset
3495	the state for the next time around.
3496
34971998-08-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
3498
3499	Fix problems with trying to rename an open file:
3500	* rcs.c, rcs.h (RCS_setattic): New function.
3501	* commit.c (remove_file, checkaddfile): Call it.
3502
35031998-08-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
3504
3505	* release.c (release): Use save_cwd and restore_cwd to get back to
3506	where we started, rather than hoping that CVS_CHDIR ("..") will do
3507	something useful.  This removes the need for most of
3508	release_delete, so remove that function and inline what is left.
3509	* sanity.sh (basicc): Adjust tests for this fix, also some tests
3510	with multiple arguments to "cvs release" (in the non-"-d"-case, it
3511	would seem like the old code would CVS_CHDIR into directories and not
3512	CVS_CHDIR back, but I'm not going to investigate this and it
3513	should be a moot point with this fix.).
3514
3515	* sanity.sh (basicc): Add tests for a serious bug in "cvs release
3516	-d .".
3517
3518	More error handling fixes:
3519	* ignore.c (ignore_files): Check for errors from opendir and
3520	readdir.
3521	* find_names.c (Find_Names): Check for errors from find_rcs.
3522	(find_rcs, find_dirs): Comment error handling better; also return
3523	an error if we got one from readdir.
3524	* filesubr.c (deep_remove_dir): Also check for errors from readdir.
3525	* import.c (import_descend): Print message on error from opendir
3526	or readdir.
3527	* commit.c (remove_file): Check for errors from CVS_MKDIR and
3528	CVS_RENAME.
3529	(remove_file): No need to remove the file in the temporary
3530	directory; server.c now informs time_stamp_server of what is going
3531	on via CVS/Entries rather than a file with a kludged up timestamp.
3532	* client.c, entries.c, login.c, logmsg.c, mkmodules.c, patch.c,
3533	remove.c, update.c: Check for errors from unlink_file.
3534	* mkmodules.c (write_dbmfile, rename_dbfile, rename_rcsfile):
3535	Check for errors from fclose, CVS_RENAME, and CVS_STAT.
3536	* mkmodules.c (checkout_file): Clarify error handling convention.
3537	* mkmodules.c (mkmodules): Call checkout_file accordingly.
3538	* entries.c (Entries_Open): Check for errors from fclose.
3539
35401998-08-21  Ian Lance Taylor  <ian@cygnus.com>
3541
3542	* import.c (import): Output suggested merge command using
3543	cvs_output_tagged rather than just cvs_output.  Don't put
3544	CVSroot_cmdline in the log file.
3545	* client.c (importmergecmd): New static struct.
3546	(handle_mt): Handle +importmergecmd tag.
3547	* sanity.sh (import): Use an explicit -d in importb-2, to test
3548	whether it is reported in the suggested merge command.
3549
35501998-08-20  Ian Lance Taylor  <ian@cygnus.com>
3551
3552	* sanity.sh (import): Rewrite tests to use dotest.
3553
35541998-08-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
3555
3556	* sanity.sh: Add comments about binary files and cvs import.
3557
35581998-08-19  Jim Kingdon  <kingdon@harvey.cyclic.com>
3559
3560	* sanity.sh (importc): Use ${username} in one place where I had
3561	missed it.
3562
3563	Make import -d work client/server:
3564	* client.c, client.h (client_process_import_file): Take new
3565	argument, for whether -d is specified, and send Checkin-time
3566	request if it is set.
3567	* import.c (import_descend): Pass it.
3568	* main.c, cvs.h (date_to_internet): New function.
3569	* server.c (server_modtime): Call date_to_internet.
3570	* server.c (serve_checkin_time): New function.
3571	(requests): Add "Checkin-time" request.
3572	(serve_modified): If it was sent, set the timestamp in the
3573	temporary directory.
3574	* import.c (import): If the client sends a -d option, complain.
3575	(import): For the server, always use the timestamps from the temp
3576	directory.
3577	(import): Don't send a -d option to the server.
3578	* sanity.sh (importc): Add tests for import -d.
3579
3580Wed Aug 19 15:19:13 1998  Larry Jones  <larry.jones@sdrc.com>
3581
3582	* sanity.sh (unedit-without-baserev-5): use ${DOTSTAR} instead
3583	of .* since we expect to match multiple lines.
3584
35851998-08-19  Ian Lance Taylor  <ian@cygnus.com>
3586
3587	* cvs.h (CVSroot_cmdline): Declare.
3588	* root.c (CVSroot_cmdline): Define.
3589	* main.c (main): Set CVSroot_cmdline if the -d option is used.
3590	* import.c (import): If CVSroot_cmdline is not NULL, then mention
3591	an explicit -d option in the suggested merge command line.
3592
3593Wed Aug 19 00:28:50 1998  Noel Cragg  <noel@swish.red-bean.com>
3594
3595	* recurse.c (do_dir_proc): don't muck with CVS/Root directories
3596 	when running in server mode.
3597	(do_recursion): same.
3598
3599	* main.c (main): add the command-line option `m' to help debug the
3600 	multiroot environment; it prints out the value of CVSROOT for each
3601 	iteration through the main loop.  Also, changed the main loop so
3602 	that it gets executed only once when running in server mode (the
3603 	server will only deal with a single CVSROOT).
3604
3605	* recurse.c (do_recursion): change default for
3606 	PROCESS_THIS_DIRECTORY to true; we should always process a
3607 	directory's contents unless there's an existing CVS/Root file with
3608 	a different root than the current root to tell us otherwise.
3609	(do_dir_proc): same.
3610
3611Tue Aug 18 14:30:59 1998  Noel Cragg  <noel@swish.red-bean.com>
3612
3613	* recurse.c (do_recursion): check the current value of CVS/Root
3614 	and add it to our list of CVSROOTs if it doesn't exist.  Decide
3615 	whether or not to process files in this directory based based on
3616 	the value of CURRENT_ROOT.
3617	(do_dir_proc): same.
3618
3619	* main.c: add two new globals -- root_directories and current_root
3620 	-- which keep track of the values of CVSROOT we've seen and which
3621 	value of CVSROOT we're currently processing.
3622	(main): put the main loop for stepping through cvsroot values
3623 	here, since we might need to send command-specific arguments for
3624 	every unique non-local cvsroot.  Moved blocks of code around so
3625 	that one-time initializations happen first (outside the loop) and
3626 	the other stuff happens inside the loop.
3627	(set_root_directory): helper function.
3628
3629	* cvs.h: add prototypes for root_directories and current_root, two
3630 	new globals for keeping track of multiple CVSROOT information.
3631
36321998-08-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
3633
3634	* sanity.sh: Don't assume that the shell leaves $^ unexpanded in
3635	an unquoted here-document (suggested by Bart Schaefer to help when
3636	zsh is the shell).
3637
36381998-08-17  Ian Lance Taylor  <ian@cygnus.com>
3639
3640	* commit.c (checkaddfile): Don't call fix_rcs_modes.
3641	(fix_rcs_modes): Remove.
3642
36431998-08-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
3644
3645	* create_adm.c (Create_Admin): Don't condition traces on
3646	SERVER_SUPPORT; SERVER_SUPPORT shouldn't do (much of) anything
3647	independent of server_active.
3648
3649	* sanity.sh (binfiles3): New test, for yet another binary file
3650	bug (sigh).  Thanks to Jason Aten for reporting this one.
3651
36521998-08-15  Jim Kingdon  <kingdon@harvey.cyclic.com>
3653
3654	* rcscmds.c (call_diff_write_output): Update to reflect new
3655	calling convention for the write_output callback.
3656
36571998-08-15  Jim Meyering  <meyering@ascend.com>
3658
3659	* update.c (merge_file): Warn about failed unlink when not due
3660	to ENOENT.
3661
3662	* server.h (CLIENT_SERVER_STR): New macro
3663	* create_adm.c (Create_Admin): Use it.
3664	* entries.c (Scratch_Entry, Register): Use it.
3665	* filesubr.c (copy_file, xchmod, rename_file, unlink_file): Use it.
3666	* history.c (history_write): Use it.
3667	* modules.c (do_module): Use it.
3668	* no_diff.c (No_Difference): Use it.
3669	* run.c (run_popen): Use it.
3670	* server.c (server_register): Use it.
3671
36721998-08-14  Jim Meyering  <meyering@ascend.com>
3673
3674	* hardlink.c (lookup_file_by_inode): Use existence_error rather than
3675	comparing errno to ENOENT directly.
3676
3677	* client.c (copy_a_file): Unlink destination before doing copy.
3678	* sanity.sh (join-readonly-conflict): New test for this -- it would
3679	fail only in client/server mode.
3680
3681	* sanity.sh (rcsmerge-symlink-4): Don't use `test -L', it's not
3682	portable.  Instead, match against the output of `ls -l'.
3683	(dotest tag8k-16): Simplify tag-construction code and at the same
3684	time, avoid using expr's `length' and `substr' operators.  Not
3685	all versions of expr support those.
3686
36871998-08-14  Jim Kingdon  <kingdon@harvey.cyclic.com>
3688
3689	* version.c: Bump version number to 1.10.0.1.
3690
3691Thu Aug 13 11:15:24 1998  Noel Cragg  <noel@swish.red-bean.com>
3692
3693	* version.c: Change version number to 1.10 and name to `Halibut'.
3694
3695	* sanity.sh (rcslib): new tests to check behavior of symlinks in
3696 	the repository.
3697
3698Wed Aug 12 15:39:38 1998  Noel Cragg  <noel@swish.red-bean.com>
3699
3700	* main.c (lookup_command_attribute): the `annotate' command
3701 	shouldn't require access to the repository.  Add comment about
3702 	commands that do not use the working directory.
3703
3704Mon Aug 10 10:26:38 1998  Noel Cragg  <noel@swish.red-bean.com>
3705
3706	* version.c: Change version number to 1.9.30.
3707
3708Thu Aug  6 17:44:50 1998  Noel Cragg  <noel@swish.red-bean.com>
3709
3710	* server.c (serve_rdiff): change the name of the command (for
3711 	error reporting, etc.) from "patch" to "rdiff."
3712	(serve_remove): rename from "cvsremove" to "remove."
3713
3714	* main.c (lookup_command_attribute): the `rdiff' command shouldn't
3715 	require write access to the repository.
3716
37171998-08-06  David Masterson of kla-tencor.com
3718	and Jim Kingdon
3719
3720	* commit.c (commit_filesdoneproc): Don't call strlen ("CVSROOT")
3721	from within the assert statement.  Apparently HP's cc compiler on
3722	HPUX 10.20 has trouble with that.
3723
37241998-08-06  Jim Kingdon  <kingdon@harvey.cyclic.com>
3725
3726	* rcs.c (RCS_checkin): When adding branch, if there is a lock on
3727	the branchpoint owned by someone else, leave it alone.  This
3728	restores CVS 1.9 (RCS 5.7) behavior, fixing a core dump.
3729	* sanity.sh (reserved): New tests reserved-16 through reserved-19
3730	test for this fix.
3731
37321998-08-05  Jim Kingdon  <kingdon@harvey.cyclic.com>
3733
3734	* sanity.sh (unedit-without-baserev): Use ${QUESTION} not "?".
3735	This makes it work with GNU expr 1.12 as well as 1.16.
3736
3737Sun Aug  2 20:27:44 1998  Noel Cragg  <noel@swish.red-bean.com>
3738
3739	* mkmodules.c: add comment about TopLevelAdmin for the initial
3740 	contents of CVSROOT/config.
3741
37421998-07-29  Jim Kingdon  <kingdon@harvey.cyclic.com>
3743
3744	* rcs.c (RCS_checkin): Only try to call xreadlink if HAVE_READLINK
3745	is defined.
3746
3747Tue Jul 28 19:33:08 1998  Noel Cragg  <noel@swish.red-bean.com>
3748
3749	* version.c: Change version number to 1.9.29.
3750
3751	* rcs.c (RCS_checkin): add code to follow symbolic links in the
3752 	repository.
3753
3754Sun Jul 26 05:14:41 1998  Noel Cragg  <noel@swish.red-bean.com>
3755
3756	* This set of changes reverts the code to pre-1.9.2 behavior and
3757 	does not create CVS directories at top-level (except for the
3758 	obvious "cvs co .").  Added a new configuration option to switch
3759 	between 1.9 and 1.9.2 behavior.
3760
3761	* recurse.c (do_argument_proc): new function.
3762	(start_recursion): in the case that we've done a command from
3763 	top-level but have no CVS directory there, the behavior should be
3764 	the same as "cvs <cmd> dir1 dir2 dir3...".  Make sure that the
3765 	appropriate "Argument" commands are sent to the server by calling
3766 	walklist with do_argument_proc.
3767
3768	* client.c (call_in_directory): only create the top-level CVS
3769 	directory when we're checking out "." explicitly.  The server will
3770 	force creation of this directory in all other cases.
3771
3772	* checkout.c (checkout_proc): only generate the top-level
3773 	directory when the TopLevelAdmin=yes.  Also send a message to the
3774 	client to do the same.
3775
3776	* parseinfo.c (parse_config): handle TopLevelAdmin option.  Set
3777 	top_level_admin.
3778
3779	* main.c: add new variable top_level_admin.
3780	* cvs.h: add extern definition for above.
3781
3782	* sanity.sh: since we're reverting to pre 1.9.2 behavior for
3783 	top-level CVS directories, I needed to make changes to a bunch of
3784 	tests that made assumptions about said directories.
3785	(preamble): make sure to add read and execute access to everything
3786 	in TMPDIR before removing, since some tests make things read-only.
3787	(basicb-1a, basicb-1b, basicb-9a, basicb-9b): use dotest_fail
3788 	because these tests check for the non-existant top-level CVS
3789 	directory.
3790	(basicc-3, emptydir-6, emptydir-7, crerepos-6): use "rm -rf" so it
3791 	won't complain when trying to remove the non-existant top-level
3792 	CVS directory.
3793	(106.5): remove imported-f2-orig.tmp.
3794	(modules2-10, emptydir-4, abspath-1ba, abspath-1bb): cd into the
3795 	directory where files exist before using the "add" command so cvs
3796 	can find CVSROOT in CVS/Root.
3797	(cvsadm-2): look at a different CVS/Repository file, since the
3798 	top-level one doesn't exist.
3799	(taginfo-3): create the directory in the repository directly
3800 	rather than relying on the fact that the top-level CVS directory
3801 	was created in a previous test.
3802	(serverpatch-6): update first-dir explicity, rather than relying
3803 	on the non-existant top-level CVS/Entries file.
3804	(crerepos-18): look at CVS/Repository in a subdirectory rather
3805 	than in the non-existant top-level CVS directory.
3806	(toplevel): add code to set TopLevelAdmin=yes.
3807	(toplevel2): new tests -- same as toplevel, but TopLevelAdmin=no.
3808
38091998-07-21  Jim Meyering  <meyering@ascend.com>
3810
3811	* rcs.c (RCS_checkout): Hoist frees of rev and value.
3812	Warn and return 1 in several cases rather than exiting via
3813	`error (1, ...'.  The latter could abort a multi-file commit
3814	in mid-stream, leaving stale locks in the repository.
3815
38161998-07-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
3817
3818	* build_src.com (rcscmds.c): Also look for include files in
3819	[-.diff], just like Ian's 1998-06-18 change to Makefile.in
3820
38211998-07-14  Jim Kingdon  <kingdon@harvey.cyclic.com>
3822
3823	* tag.c (pretag_proc), rtag.c (pretag_proc): Don't pass RUN_REALLY
3824	to run_exec.  This means that taginfo does not get executed if the
3825	global -n option is specified.  Which makes it like loginfo, -i,
3826	-e, -o, -t, -u in modules, editinfo, and verifymsg and unlike
3827	commitinfo.  The old behavior was pretty bad in the sense that it
3828	doesn't provide any way to log only the tags which actually
3829	happen.
3830	* sanity.sh (taginfo): New tests taginfo-11 to taginfo-13, for this.
3831
38321998-07-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
3833
3834	* sanity.sh (ann-id): Write the test so that it tests for the
3835	current (buggy) behavior.
3836
3837	* sanity.sh (taginfo): Also clean up cvsroot/first-dir.
3838
38391998-07-12  Jim Meyering  <meyering@ascend.com>
3840
3841	* sanity.sh (ann-id): New (currently failing) test for bug in how
3842	rcs keywords are expanded in the output of `cvs annotate'.
3843
38441998-07-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
3845
3846	* sanity.sh (taginfo): Write the TESTDIR into the script rather
3847	than having the script look at the environment.  This means that
3848	it will work if TESTDIR is set by sanity.sh as well as if
3849	sanity.sh finds TESTDIR in the environment.
3850
38511998-07-11  Jim Kingdon  <kingdon@harvey.cyclic.com>
3852
3853	* tag.c (check_fileproc): Calculate the revision to be tagged the
3854	same way that tag_fileproc does.
3855	* sanity.sh (taginfo): New tests, test for this (before this fix,
3856	brtag had said 1.1 not 1.1.2.1).
3857
38581998-07-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
3859
3860	* sanity.sh (unedit-without-baserev): Also clean up "2" directory.
3861
38621998-07-08  Jim Kingdon  <kingdon@harvey.cyclic.com>
3863
3864	* edit.c (unedit_fileproc): If the Baserev file is missing, don't
3865	get the working file from CVS/Base.  The previous code could get
3866	you version 1.1 of the working file and put 1.2 in CVS/Entries.
3867	* sanity.sh (unedit-without-baserev): New tests test for this.
3868
38691998-07-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
3870
3871	* sanity.sh (unedit-without-baserev): Move the test itself to be
3872	in the same order as in the "tests" variable.
3873
38741998-07-02  Ian Lance Taylor  <ian@cygnus.com>
3875
3876	* rcscmds.c: Don't include <stdarg.h> or <vasprintf.h>.  Don't
3877	declare vasprintf.
3878	(call_diff_printf_output): Remove.
3879	(call_diff_stdout_callbacks): Don't initialize printf_output
3880	field--it has been removed from the interface.
3881	(call_diff_file_callbacks): Likewise.
3882
38831998-07-01  Jim Meyering  <meyering@ascend.com>
3884
3885	* edit.c (unedit_fileproc): Handle the case in which base_get
3886	returns a NULL baserev.  That happens when a file being `unedit'ed
3887	exists in the CVS/Base directory, but isn't listed in the CVS/Baserev
3888	file.  The one case I've seen had no Baserev file at all.  The symptom
3889	(if you're lucky) is a segmentation fault upon unedit.  If you use
3890	SunOS4.1.4 for which printf prints NULL pointers as `(null)', your
3891	unedit command will complete normally, but it will have corrupted
3892	your CVS/Entries file and a subsequent update may result in an
3893	assertion failure, a core dump, and a stale lock in the repository.
3894	* sanity.sh (unedit-without-baserev): New test for this.
3895
38961998-07-01  Andy Mortimer of aeat.co.uk
3897	and Jim Kingdon  <kingdon@harvey.cyclic.com>
3898
3899	* server.c (server_updated): Use a prototype if we are using them
3900	for declarations.
3901
39021998-06-29  Jim Kingdon  <kingdon@harvey.cyclic.com>
3903
3904	* sanity.sh (commit-readonly): Protect keyword against expansion
3905	in sanity.sh itself.  Keep the keyword in the file which we check
3906	in (or else this fails to test for the RCS_checkout change).
3907
39081998-06-27  Jim Meyering  <meyering@ascend.com>
3909
3910	* rcs.c (RCS_checkout): If opening the local workfile fails due to
3911	lack of write access, try to chmod the file and retry the open.
3912	Before, a commit could fail part way through merely because the
3913	open to rewrite with newly expanded rcs keywords would fail.  It's
3914	easy to make this happen if you use `cvs -r' or CVSREAD and you
3915	apply a patch to one of your read-only source files -- patch
3916	preserves the read-only setting for the file and your next commit
3917	will fail after committing that file, but before rewriting
3918	(checking out) your working copy.
3919	* sanity.sh (commit-readonly): New test for this.
3920
39211998-06-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
3922
3923	* update.c (patch_file): Update comments regarding context diffs
3924	to reflect diff library.
3925
39261998-06-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
3927
3928	* sanity.sh (modules4): Add tests for reversing the order of the
3929	"!first-dir/sdir" and "first-dir".
3930
39311998-06-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
3932	and Dave Wolfe@Motorola.
3933
3934	* sanity.sh (modes2): Touch the file before chmod'ing it.
3935
39361998-06-21  Ian Lance Taylor  <ian@cygnus.com>
3937
3938	* update.c (merge_files): Revert changes of 1998-06-19.  Instead,
3939	register a merged file with a dummy time stamp.  Only set
3940	last_register_time if we need to.
3941	(join_file): Likewise.  Always register a merged file, not just
3942	when the merge fails.
3943
39441998-06-21  Jim Kingdon  <kingdon@harvey.cyclic.com>
3945
3946	* call_diff_write_output, call_diff_printf_output,
3947	call_diff_flush_output, call_diff_write_stdout, call_diff_error,
3948	call_diff_stdout_callbacks, call_diff_file_callbacks): Re-indent.
3949
39501998-06-19  Ian Lance Taylor  <ian@cygnus.com>
3951
3952	* update.c (merge_file): Make sure the time stamp of the file is
3953	different from the time stamp we register in the Entries file.
3954	(join_file): Likewise.
3955
39561998-06-18  Ian Lance Taylor  <ian@cygnus.com>
3957
3958	* rcscmds.c: Include <stdio.h>.  Include either <stdarg.h> or
3959	<varargs.h>.  Declare vasprintf.
3960	(call_diff_write_output): New static function.
3961	(call_diff_printf_output): New static function.
3962	(call_diff_flush_output): New static function.
3963	(call_diff_write_stdout): New static function.
3964	(call_diff_error): New static function.
3965	(call_diff_stdout_callbacks): New static variable.
3966	(call_diff_file_callbacks): New static variable.
3967	(call_diff): Don't sleep.  Use a callback structure when calling
3968	the diff library.
3969	(call_diff3): Likewise.
3970
3971	* rcscmds.c: Include diffrun.h.
3972	(call_diff, call_diff3): Pass NULL callback parameter.
3973	(diff_run, diff3_run): Don't declare.
3974	* Makefile.in (rcscmds.o): New target, to use -I for diff
3975	directory.
3976	(zlib.o): Depend upon zlib.h.
3977
39781998-06-09  Mike Sutton@SAIC
3979
3980	Make it compile with Sun's bundled K&R C compiler:
3981	* rcs.c (count_delta_actions): Change to static to match
3982	declaration.
3983	* client.c (handle_wrapper_rcs_option): Rename error label to
3984	handle_error to avoid clash with function name.
3985
39861998-06-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
3987
3988	* rcs.c (RCS_delete_revs): If we are trying to delete all
3989	revisions, give an error rather than assertion failed.
3990	* sanity.sh (basicb): New tests basicb-o* test for this.
3991
39921998-06-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
3993
3994	* add.c (add): Only send "Directory" requests if we need to.
3995
39961998-06-02  Assar Westerlund  <assar@sics.se>
3997
3998	* client.c: Check for HAVE_GSS_C_NT_HOSTBASED_SERVICE rather than
3999	assuming that GSS_C_NT_HOSTBASED_SERVICE is a macro.
4000	* server.c: Likewise.
4001
40021998-06-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
4003
4004	* fileattr.c (fileattr_read): Check for NULL return from strchr.
4005	* sanity.sh (devcom3): New test devcom3-10 checks for this.
4006
40071998-06-01  Assar Westerlund  <assar@sics.se>
4008	and Ian Lance Taylor  <ian@cygnus.com>
4009
4010	* client.c: If HAVE_GSSAPI_H, include <gssapi.h>.  Only include
4011	<gssapi/gssapi.h> if HAVE_GSSAPI_GSSAPI_H.  Only include
4012	<gssapi/gssapi_generic.h> if HAVE_GSSAPI_GSSAPI_GENERIC_H.
4013	(GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
4014	(connect_to_gserver): Use GSS_C_NT_HOSTBASED_SERVICE instead of
4015	gss_nt_service_name.
4016	* server.c: Same header file changes.
4017	(GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
4018	(gserver_authenticate_connection): Use GSS_C_NT_HOSTBASED_SERVICE
4019	instead of gss_nt_service_name.
4020
40211998-06-01  Jim Meyering  <meyering@ascend.com>
4022
4023	* sanity.sh (tag8k): Add a test for the 1998-05-02 rcs.c bug fix.
4024
40251998-05-26  Jim Kingdon  <kingdon@harvey.cyclic.com>
4026
4027	* rcs.c (annotate): Call tag_check_valid like the other functions
4028	which have a -r option.
4029	* sanity.sh (ann): New test ann-14 tests for this.
4030
40311998-05-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
4032
4033	* sanity.sh (importc): New tests importc-5 through importc-8 test
4034	for a (fairly obscure) regression from CVS 1.9.
4035
40361998-05-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
4037
4038	* sanity.sh (modules2): Add comment listing cvs release tests.
4039	(info): New test info-cleanup-0 tests "cvs -n release".
4040
4041	* rcs.c (rcsbuf_getid): Remove semicolon at end of #undef.  I'm
4042	kind of surprised that compilers accepted this at all, but
4043	removing it squelches a warning for some compilers.
4044
4045	* version.c: Change version number to 1.9.28.1.
4046
4047	* Version 1.9.28.
4048
40491998-05-22  Jim Kingdon  <kingdon@harvey.cyclic.com>
4050
4051	* rcs.c (RCS_cmp_file): Check for errors from CVS_FOPEN.  This
4052	restores the CVS 1.9 behavior (fatal error if we can't open the
4053	file), and corrects an apparent oversight in Ian's 13 Apr 1997
4054	change.
4055	* sanity.sh (modes2): New test, tests for this.
4056
40571998-05-22  Ian Lance Taylor  <ian@cygnus.com>
4058
4059        * server.c (server_updated): Correct test for whether to unlink
4060        the file.
4061
40621998-05-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
4063
4064	* wrapper.c (wrap_add): Disable -t/-f wrappers at least until the
4065	serious bug can be fixed.
4066
40671998-05-15  Jim Kingdon  <kingdon@harvey.cyclic.com>
4068
4069	* checkout.c (checkout): Call server_pathname_check on the
4070	argument to "cvs co -d".
4071	* server.c (server_pathname_check): Add comment about how we could
4072	be handling absolute pathnames.
4073	* sanity.sh (abspath): Rewrite the tests which run "cvs co -d /foo"
4074	for remote, to reflect this.
4075
4076	* sanity.sh (abspath): Also do the "cannot rename" work-around for
4077	abspath-7d.
4078
40791998-05-13  Jim Kingdon  <kingdon@harvey.cyclic.com>
4080
4081	* commit.c (commit_filesdoneproc): Free admin_dir when done with it.
4082
40831998-05-13  Jim Meyering  <meyering@ascend.com>
4084
4085	* sanity.sh (editor): Change bogus sed command, `s/^/x&/g', to `s/^/x/'.
4086	The former exercised a bug in GNU sed-3.01-beta3.
4087	(emptydir-8): Add `Rebuilding administrative file database' message,
4088	since now it does that.
4089	* commit.c (commit_filesdoneproc): Pass only the admin directory
4090	pathname to mkmodules.
4091	Remove #if 0, now that it's fixed.
4092
4093	* status.c (cvsstatus): Rename from `status' to avoid shadowing
4094	lots of locals and parameters by the same name.
4095	* server.c (serve_status): Update caller.
4096	* main.c (cmds[]): Update table entry.
4097	* cvs.h: Update prototype.
4098
4099	* commit.c (commit_filesdoneproc): Remove trailing blanks.
4100	(commit) [CLIENT_SUPPORT]: Remove unnecessary (and local-shadowing)
4101	declaration of `err'.
4102	Rename global `tag' to `saved_tag' to avoid overshadowing `tag'
4103	parameters of three functions.
4104	Rename global `message' to `saved_message' to avoid overshadowing
4105	`message' parameter of a function.
4106	Rename global `ulist' to `saved_ulist' and move dcl up with others.
4107
41081998-05-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
4109
4110	* commit.c (commit_filesdoneproc): #if 0 the new code until it can
4111	be fixed.
4112
4113	* commit.c (commit_filesdoneproc): Add comment explaining last
4114	change.
4115
41161998-05-12  Jim Meyering  <meyering@ascend.com>
4117
4118	* commit.c (commit_filesdoneproc): Call mkmodules not just when
4119	committing a file directly under CVSROOT, but also when committing
4120	files in subdirectories of CVSROOT.
4121
41221998-05-08  Jim Meyering  <meyering@ascend.com>
4123
4124	* filesubr.c (xreadlink):  NUL-terminate the symbolic link name.
4125	Use a much smaller initial buffer length.
4126	Test errno only if readlink fails.
4127	Use xstrdup then free the original link name so we don't waste space.
4128
41291998-05-02  Jim Meyering  <meyering@ascend.com>
4130
4131	* rcs.c (rcsbuf_getword): Fix off-by-one error that would result in
4132	an abort (the first one in rcsbuf_getkey) when operating on on some
4133	,v files with over 8192 bytes of tag and branch info.
4134
41351998-05-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
4136
4137	* sanity.sh (ann): New tests ann-12 and ann-13 test for specifying
4138	a numeric branch.
4139
41401998-05-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
4141
4142	* rcs.c: Add comments about getting rid of rcsbuf_getid,
4143	rcsbuf_getword, and rcsbuf_getstring.
4144
4145	* sanity.sh (abspath): Revise the workarounds to deal with exit
4146	status.
4147
41481998-04-30  Jim Kingdon  <kingdon@harvey.cyclic.com>
4149
4150	* sanity.sh (abspath): Work around the "cannot rename" bug.
4151
41521998-04-27  Jim Kingdon  <kingdon@harvey.cyclic.com>
4153
4154	* classify.c (Classify_File): Add comments about checking whether
4155	command name is "update".
4156
41571998-04-22  Jim Kingdon  <kingdon@harvey.cyclic.com>
4158
4159	* version.c: Change version number to 1.9.27.1.
4160
4161	* Version 1.9.27.
4162
41631998-04-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
4164
4165	(This diff was run by devel-cvs and everyone seemed to like it).
4166	* diff.c (diff_file_nodiff): Make HEAD mean the head of the branch
4167	which contains the sticky tag, not the sticky tag itself.
4168	* rcs.c, rcs.h (RCS_branch_head): New function.
4169	* sanity.sh (head): Update for this changed behavior.
4170
41711998-04-19  Jim Kingdon  <kingdon@harvey.cyclic.com>
4172
4173	* sanity.sh: Move emptydir tests from basicb to new test emptydir.
4174	This is because we now need a module definition to create Emptydir;
4175	"co -d" doesn't cut it anymore.
4176
41771998-04-17  Petri Virkkula
4178
4179	* server.c (mkdir_p): Ignore EROFS error (like for EACCES).
4180
41811998-04-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
4182
4183	* checkout.c (checkout_proc): Don't create directories above the
4184	last one specified in "co -d".
4185	(build_dirs_and_chdir): Revert Noel's change of 17 Feb 1998.
4186	(struct dir_to_build): New field just_chdir.
4187	(build_dirs_and_chdir): Test it.
4188	* sanity.sh (abspath): New tests abspath-7* test for a bug which
4189	we fix, in which CVS would create bogus "D/////" entries in
4190	CVS/Entries.
4191	(abspath): Revise abspath-3* tests to test for the fact that we no
4192	longer create directories above the last one specified in "co -d".
4193	I checked that CVS 1.9 gives an error on this, so changing this
4194	behavior back should be OK.
4195	(cvsadm-2d3): Likewise (also checked CVS 1.9 for this case).
4196	(cvsadm-2d3d): Likewise (also checked CVS 1.9 for this case).
4197	(cvsadm-2d{4,5,6,7,8}, cvsadm-N2d{3,4,5,6,7,8}): Adjust for new
4198	behavior (same case as cvsadm-2d3).
4199	(cvsadm-2d{4,5,6,7,8}d, cvsadm-N2d{3,4,5,6,7,8}d): Remove test
4200	(same case as cvsadm-2d3d).
4201	(cvsadm): For remote, skip most these tests.
4202	(abspath): When cleaning up, delete mod1 and mod2 rather than mod1
4203	twice (longstanding bug, apparently only becomes visible if you
4204	run the tests in a certain order).
4205
42061998-04-14  Wilfredo Sanchez  <wsanchez@apple.com>
4207
4208	* rcs.c: variable "lockfile" was being referenced after being
4209	free'd.  Bad.  Moved the free() call down.
4210
42111998-04-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
4212
4213	* sanity.sh (rcs): Add test for annotate and the year 2000.
4214
4215	* server.c (do_cvs_command): If there are partial lines left when
4216	the child process is done, send them along.
4217	* sanity.sh (rcs, rcs2): Enable all tests for remote; tests for
4218	this fix.
4219
42201998-04-11  Jim Kingdon  <kingdon@harvey.cyclic.com>
4221
4222	* client.c (client_senddate): Pass SDATEFORM not DATEFORM to
4223	sscanf.  This fixes a Y2K bug.
4224
4225	* history.c (history, select_hrec): Change since_date from time_t
4226	to RCS format.  Use the usual machinery (in particular, Make_Date
4227	and client_senddate) so that it will work on VMS too.
4228	* main.c, cvs.h (date_from_time_t): New function.
4229	* sanity.sh (history): New test, to test that this didn't break
4230	anything (also tests client_senddate fix).
4231
42321998-04-11  Norbert Kiesel  <nk@iname.com>
4233
4234	* server.c (cvs_output_binary): Shut up "gcc -Wall" by removing
4235	unnecessary else if test.
4236	* server.c (check_password): Fix uninitialized memory read if
4237 	shadow passwords are used.  Also added some comments.
4238	* rcs.c (RCS_checkout): Make sure to call chown with -1 for uid or
4239	gid if they should not be changed
4240
42411998-04-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
4242
4243	* sanity.sh (rcs2): New test, tests for various Y2K cases.
4244	* rcs.c (getdelta): Value for "state" keyword is optional (bug
4245	discovered incidentally in writing rcs2 test).
4246
42471998-04-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
4248
4249	* filesubr.c, cvs.h (link_file): Remove; no longer used.
4250
42511998-04-08  Jim Kingdon  <kingdon@harvey.cyclic.com>
4252
4253	* recurse.c (do_dir_proc): Restore update_dir rather than a
4254	computation which appears to, but does not necessarily, restore it
4255	(reported by various people; this fix is from Greg Hudson).
4256	* sanity.sh (importc): New test, tests for this fix.
4257
42581998-03-27  Jim Kingdon  <kingdon@harvey.cyclic.com>
4259
4260	* rcs.c (RCS_lock): If the revision is already locked, give an
4261	error rather than dumping core.
4262	* sanity.sh (reserved): New test reserved-13c tests for this.
4263
42641998-03-25  Loren J. Rittle
4265
4266	* import.c (add_rev): Rewrite to use RCS_FLAGS_KEEPFILE option
4267	of RCS_checkin() to avoid damage to imported files instead of
4268	externally undoing damage after the fact.  The side effect is
4269	that callers of add_rev() may now incrementally walk the
4270	entries of the current directory without seeing gratuitous
4271	changes to the directory structure (under at least one file
4272	system under at least one OS).
4273
42741998-03-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
4275
4276	* error.c (error): Save and restore errno.  Should fix test case
4277	conflicts3-23 on SCO 5.0.2.  Reported by Steve Cameron.
4278
4279	* sanity.sh (admin): Rename admin-26-o* to admin-26-*; the "o"
4280	stands for "cvs admin -o".  Add comment about length of tests.
4281	Use ${PLUS}.
4282
42831998-03-05  Dan Wilder <dan@gasboy.com>
4284
4285 	* Fix problem with cvs admin in which -ntag:branch
4286 	option associated tag with the branch's head revision.
4287 	Should have used branch number.  Entailed in this fix,
4288 	the following.
4289
4290 	* Add new functions "RCS_exist_rev", "RCS_exist_tag",
4291 	"RCS_tag2rev", and "RCS_valid_rev" to rcs.c.  RCS_tag2rev
4292 	is similar to RCS_gettag, but does less interpretation.
4293
4294 	* Plug a small memory leak.
4295
4296 	* Add tests admin-26 through admin-29 to sanity.sh,
4297 	to test "cvs admin -n".
4298
42991998-03-17  Samuel Tardieu  <sam@inf.enst.fr>
4300
4301	* server.c (server_register): protect dereferencing timestamp in
4302	the trace message when it is null, to avoid a segmentation fault.
4303
43041998-03-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
4305
4306	* options.h.in (MY_NDBM): Rewrite the comment explaining this
4307	option.  It was not clear to everyone who "my" referred to, for
4308	example.
4309
4310	* hardlink.c (list_linked_files_on_disk): Remove unused variables
4311	err and p.
4312	(list_linked_files_on_disk): Add comment about memory allocation
4313	of return value.
4314	* rcs.c (rcsbuf_getword): Shut up gcc -Wall with a "return 0".
4315	(RCS_checkin): Remove unused variable fullpath.
4316	* sanity.sh (hardlinks): Remove comment about spurious warnings;
4317	the warnings are gone.
4318
43191998-03-12  Tim Pierce  <twp@skepsis.com>
4320
4321	New functions for parsing and writing hardlink fields.
4322	* rcs.c [PRESERVE_PERMISSIONS_SUPPORT] (puthardlink_proc): New
4323	function.
4324	(putdelta) [PRESERVE_PERMISSIONS_SUPPORT]: Use it.
4325	(rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): New functions.
4326	(getdelta): Call them, storing `hardlinks' field in vnode->hardlinks.
4327	(RCS_reparsercsfile): When setting rdata->desc, xstrdup value
4328	rather than rcsbuf_valcopying it (due to changes in how getdelta
4329	handles keys and values in newphrases).
4330
4331	* sanity.sh (hardlinks): Use uglier filenames.  Checking out
4332	hardlinked files no longer produces the same spurious diagnostics,
4333	so fix that test.
4334	(hardlinks-2.3): Renamed from hardlinks-2.2 (duplicate test name).
4335
4336	New infrastructure for managing hardlink lists internally...
4337	* hardlink.c, hardlink.h (list_linked_files_on_disk,
4338	compare_linkage_lists, find_checkedout_proc): New functions.
4339	* rcs.h (struct rcsversnode) [PRESERVE_PERMISSIONS_SUPPORT]: New
4340	member `hardlinks'.
4341	* update.c (special_file_mismatch): Get hardlinks from
4342	vp->hardlinks instead of from vp->other_delta.
4343	* rcs.c (free_rcsvers_contents): Comment about freeing hardlinks
4344	member.
4345	(RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Get hardlinks from
4346	vers->hardlinks list instead of vers->other_delta.
4347
4348	... and removed obsolete code from earlier revs.
4349	* hardlink.c, hardlink.h (list_files_linked_to,
4350	cache_hardlinks_proc, list_files_proc, set_hardlink_field_proc):
4351	Removed.
4352	* hardlink.h: Removed `links' member from hardlink_info struct.
4353	* commit.c (commit): Remove the call to cache_hardlinks_proc.
4354	(check_fileproc) [PRESERVE_PERMISSIONS_SUPPORT]: Removed reference
4355	to hlinfo->links.
4356	* hardlink.c (update_hardlink_info): Same.
4357	* update.c (get_linkinfo_proc): Same.
4358
4359	* rcs.c (RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Use
4360	vp->hardlinks and find_checkedout_proc to find recently-updated
4361	files that may be hardlinked.
4362	* update.c (special_file_mismatch): Use List * structures and
4363	compare_linkage_lists for rev1_hardlinks and rev2_hardlinks.
4364
43651998-03-16  Larry Jones  <larry.jones@sdrc.com>
4366
4367	* server.c (check_password): If shadow passwords are supported but no
4368	entry is found in the shadow file, check the regular password file.
4369
43701998-03-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
4371
4372	* sanity.sh: Rename permissions test to perms since that is what
4373	each of its individual tests are named.
4374	* sanity.sh (perms symlinks hardlinks): Change CVSROOT to
4375	CVSROOT_DIRNAME where appropriate.
4376	(perms symlinks hardlinks): Disable/adjust the meat of the tests for
4377	remote.
4378	(symlinks): Link to ${TESTDIR}/fumble rather than
4379	/fumble/mumble/grumble.  We shouldn't be making assumptions about
4380	what might exist in random directories outside ${TESTDIR}.
4381	* hardlink.c (cache_hardlinks_proc): Add comment about trimming
4382	whitespace.
4383
43841998-03-07  Tim Pierce  <twp@skepsis.com>
4385
4386	* rcs.c (RCS_checkout): Negation bug when checking out symlinks:
4387	existence_error should be !existence_error.
4388	* sanity.sh (permissions symlinks hardlinks): New tests, for
4389	PreservePermissions.
4390
43911998-03-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
4392
4393	* version.c: Change version number to 1.9.26.1.
4394
4395	* Version 1.9.26.
4396
4397	* entries.c, cvs.h (Entries_Open): New argument update_dir; use it
4398	in error message.
4399	* add.c, checkout.c, client.c, find_names.c, import.c, recurse.c,
4400	update.c: Pass it (as NULL except in call_in_directory).
4401	* entries.c (Subdirs_Known): Just return if there is no CVSADM
4402	directory (as in subdir_record).
4403	* sanity.sh (conflicts3): New tests conflicts3-20a and
4404	conflicts3-23 test for these fixes.
4405
4406	* commit.c (commit): Only set up hardlist if preserve_perms.
4407
4408	* commit.c, import.c, no_diff.c, parseinfo.c, rcs.c, rcscmds.c,
4409	update.c: Omit the preserve_perms code if
4410	PRESERVE_PERMISSIONS_SUPPORT is not defined.  Much of that code
4411	won't even compile on non-unix systems.
4412
4413	* hardlink.c, hardlink.h: Use the 'standard' copyright (as found
4414	in server.c).
4415	* commit.c, rcs.c: Minor whitespace changes to Tim's submission.
4416	* commit.c (check_fileproc), update.c (get_linkinfo_proc): Remove
4417	unused variable delta.
4418	* hardlink.c (set_hardlink_field_proc), update.c
4419	(get_linkinfo_proc): Return a value rather than falling off the
4420	end of the function.
4421
44221998-03-02  Tim Pierce  <twp@skepsis.com>
4423
4424	* update.c (special_file_mismatch): Compare the hard links of the
4425	two revisions.
4426
4427	* rcs.c (RCS_checkout):
4428
4429	* hardlink.c, hardlink.h: New files.
4430	(hardlink_info): New struct.
4431	(hardlist, working_dir): New variables.
4432	(list_files_proc, cache_hardlinks_proc, set_hardlink_field_proc,
4433	lookup_file_by_inode, update_hardlink_info, list_files_linked_to):
4434	New functions.
4435
4436	* Makefile.in (SOURCES): Add hardlink.c.
4437	(OBJECTS): Add hardlink.o.
4438	(HEADERS): Add hardlink.h.
4439	* commit.c: Include hardlink.h.
4440	(commit): Save the working directory before recursing.  Walk the
4441	hardlink list, calling set_hardlink_field_proc on each node.
4442	(check_fileproc): Add each file's link information to hardlist.
4443	* rcs.c: Include hardlink.h.
4444	(RCS_checkin): Save list of hardlinks in delta node.
4445	(RCS_checkout): Look up the file's `hardlinks' delta field, and
4446	see if any of the files linked to it have been checked out
4447	already.  Link to one of those files if so.
4448	* update.c: Include hardlink.h.
4449	(get_linkinfo_proc): New function.
4450	(do_update): Extra recursion to collect hardlink info.
4451	(special_file_mismatch): Reparse the RCS file if necessary.
4452
4453	fsortcmp is now used by several files, so let's make it extern.
4454	* hash.c, hash.h (fsortcmp): New function.
4455	* find_names.c (fsortcmp): Removed.
4456	* lock.c (fsortcmp): Removed.
4457
44581998-03-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
4459
4460	* sanity.sh (conflicts3): New tests conflicts3-14a,
4461	conflicts3-14b, and conflicts3-21, conflicts3-22 test that we can
4462	skip over a working directory with a CVSADM directory missing.
4463
44641998-02-26  Jim Kingdon  <kingdon@harvey.cyclic.com>
4465
4466	* sanity.sh (conflicts3): Tests conflicts3-16 and conflicts3-20
4467	test that we include update_dir in messages.  Rename test
4468	conflicts3-14 to fix typo.
4469
4470Sun Feb 22 23:14:25 1998  Steve Cameron  <steve.cameron@compaq.com>
4471	and Ian Lance Taylor  <ian@cygnus.com>
4472
4473	* update.c (tag_update_dir): New static variable.
4474	(update_dirent_proc): If no tag or date were specified when
4475	creating a subdirectory, use the tag and/or date of the parent
4476	directory.
4477	(update_dirleave_proc): If we set the tag and/or date in
4478	update_dirent_proc, reset them when we leave the directory.
4479	* sanity.sh (branches2): New set of tests for above patch, and
4480	related behaviour.
4481
4482Sun Feb 22 13:31:51 1998  Ian Lance Taylor  <ian@cygnus.com>
4483
4484	* commit.c (lock_RCS): Don't call RCS_rewrite.
4485
4486	* update.c (patch_file): If the revision is dead, let
4487	checkout_file handle it.
4488	* sanity.sh (death2): Add test for above patch: add
4489	death2-10a, death2-10b, death2-13a, and adjust
4490	death2-{2,4,5,11,14,diff-11,diff-12,19}.
4491
4492	* cvs.h (RCS_FLAGS_KEEPFILE): Define.
4493	* rcs.c (RCS_checkin): If RCS_FLAGS_KEEPFILE is set in the flags
4494	parameter, don't unlink the working file.
4495	* checkin.c (Checkin): Don't copy the file.  Instead pass
4496 	RCS_FLAGS_KEEPFILE to RCS_checkin, and only check the file out
4497	again if it has changed.
4498
44991998-02-21  Jim Kingdon  <kingdon@harvey.cyclic.com>
4500
4501	* rcs.c (rcs_internal_unlockfile, RCS_rewrite): Don't assume errno
4502	means anything just because ferror is set.
4503
4504Sat Feb 21 20:02:24 1998  Ian Lance Taylor  <ian@cygnus.com>
4505
4506	* Makefile.in (clean): Change "/bin/rm" to "rm".
4507
4508	* buffer.c (buf_append_buffer): Correct typo in comment.
4509	* rcs.c (RCS_putadmin): Likewise.
4510
4511Fri Feb 20 17:53:06 1998  Ian Lance Taylor  <ian@cygnus.com>
4512
4513	* rcs.c (rcs_internal_unlockfile): Pass errno when calling error
4514 	because ferror is true.
4515
45161998-02-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
4517
4518	* sanity.sh (abspath): Don't assume that we can't write to /; this
4519	is the kind of thing that is sure to break sooner or later
4520	(especially on Windows).
4521
4522	* sanity.sh: Add summary of which modules tests are which (at
4523	"modules").  Move cvsadm, abspath, and toplevel next to modules.
4524	Add comments to clarify the structure (such as it is).
4525
4526Fri Feb 20 12:47:14 1998  Larry Jones  <larry.jones@sdrc.com>
4527
4528	* admin.c (admin_fileproc): Better fix for -b.
4529
4530	* rcs.c (RCS_whatbranch): Back out previous change.
4531	(RCS_getversion): Ditto.
4532	(RCS_setbranch): Treat an empty revision string like a null pointer.
4533
45341998-02-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
4535
4536	* rcs.c (RCS_whatbranch): Fix indentation.
4537
4538	* patch.c (patch_fileproc): Check for errors from fclose; check
4539	for errors from fopen properly.
4540
4541Wed Feb 18 16:03:37 1998  Larry Jones  <larry.jones@sdrc.com>
4542
4543	* admin.c (admin_fileproc): Convert -b argument from symbolic name
4544	to revision number before storing in the RCS file.
4545	* rcs.c (RCS_whatbranch): Allow numeric as well as symbolic revision.
4546	(RCS_getversion): Take advantage of above.
4547	* sanity.sh (admin): Add/revise/renumber admin-10c, admin-11a,
4548	admin-12, and admin-12a to check above.
4549
4550	* commmit.c (lock_RCS): Minor clean-up.
4551
4552	* sanity.sh (abspath-6a): Don't depend on the sepcific contents of
4553	CVSROOT, it depends on which other tests have been run.
4554
4555Wed Feb 18 01:56:04 1998  Ian Lance Taylor  <ian@cygnus.com>
4556
4557	* rcs.c (putsymbol_proc): Use putc and fputs rather than fprintf.
4558	(RCS_putadmin): Don't call RCS_symbols if the symbols have not yet
4559	been converted to a list.
4560
4561	* rcs.c (rcsbuf_cache, rcsbuf_cache_open, rcsbuf_cache_close): New
4562	static functions to avoid closing and reopening the RCS file.
4563	(cached_rcs, cached_rcsbuf): New static variables.
4564 	(RCS_parse): Call rcsbuf_cache_close.  Don't call fclose.
4565	(RCS_parsercsfile): Likewise.
4566	(RCS_parsercsfile_i): Call rcsbuf_cache rather than
4567	rcsbuf_close.  Call fclose on error.  Remove comment about
4568	inefficiency of opening file twice.
4569	(RCS_reparsercsfile): Call rcsbuf_cache_open rather than fopen and
4570	rcsbuf_open.  Call rcsbuf_cache rather than rcsbuf_close and
4571	fclose.
4572	(RCS_fully_parse, RCS_checkout, RCS_deltas): Likewise.
4573	(RCS_rewrite): Likewise.
4574	(RCS_checkin): Call rcsbuf_cache_close.
4575
4576	* rcs.c (RCS_copydeltas): Fix code which checks for an extra
4577	newline in buffered data.
4578
4579	* rcs.c (rcsbuf_getkey): Save an indirection by using start rather
4580	than *valp when trimming trailing whitespace from value.
4581
4582	* rcs.c (rcsbuf_get_buffered): New static function.
4583	(RCS_copydeltas): After we have done all the required special
4584 	actions, and inserted any new revision, just copy the file bytes
4585 	directly, rather than interpreting all the data.
4586	(count_delta_actions): New static function.
4587	* sanity.sh (rcs): Add rcs-6a and rcs-6b to commit a new branch
4588	revision, to force CVS to interpret all the data, rather than just
4589	copying it.  Adjust rcs-5 to add a branch tag.  Adjust rcs-8a and
4590	rcs-14 for the changes created by rcs-6b.
4591
4592Tue Feb 17 18:34:01 1998  Ian Lance Taylor  <ian@cygnus.com>
4593
4594	* sanity.sh (cvsadm, diffmerge2): Remove directories at the end of
4595	the test.
4596
4597	* import.c (expand_at_signs): Rewrite to use memchr and fwrite
4598	rather than putc.
4599
4600	Rewrite RCS file reading routines for speed:
4601	* rcs.c (struct rcsbuffer): Define.
4602	(rcsbuf_open, rcsbuf_close, rcsbuf_getkey, rcsbuf_getrevnum,
4603	rcsbuf_fill, rcsbuf_valcopy, rcsbuf_valpolish,
4604	rcsbuf_valpolish_internal, rcsbuf_ftell): New static functions.
4605	(getrcskey, getrcsrev, getrevnum): Remove.
4606	(many functions): Change to use new rcsbuf functions instead of
4607	old getrcskey/getrcsrev/getrevnum functions.
4608	(RCS_reparsercsfile): Add rcsbufp parameter.  Change all callers.
4609	(RCS_deltas): Add rcsbuf parameter.  Change all callers.
4610	(getdelta): Change fp parameter to rcsbuf parameter.  Change all
4611	callers.
4612	(RCS_getdeltatext): Add rcsbuf parameter.  Change all callers.
4613	(RCS_copydeltas): Add rcsbufin parameter.  Change all callers.
4614	* rcs.h (RCS_reparsercsfile): Update declaration.
4615	* admin.c (admin_fileproc): Update calls to RCS_reparsercsfile for
4616	new parameters.
4617
46181998-02-17  Jim Kingdon  <kingdon@harvey.cyclic.com>
4619
4620	* sanity.sh (toplevel): Also clean up second-dir (not a new
4621	bug, but triggered by running tests as "toplevel abspath").
4622
4623	* create_adm.c (Create_Admin): Just print update_dir to tell the
4624	user where we are; not the whole xgetwd.  Cleaner than
4625	Noel's change (which also had problems in errno handling).
4626	* sanity.sh (toplevel-12): Update accordingly.
4627
4628Tue Feb 17 02:32:21 1998  Noel Cragg  <noel@swish.red-bean.com>
4629
4630	[These mods make "checkout" work with "-d /absolute/pathname"
4631	once again.]
4632
4633	* checkout.c (checkout_proc): the -d flag on the command line
4634 	should override the -d flag in the modules file if the latter is
4635 	an absolute path.  The loop that assembles the list of directories
4636 	to build has been reorganized slightly to prepare for rewriting
4637 	with last_component rather than assuming '/' as a path separator.
4638  	Also added to that loop was some code to handle absolute
4639 	pathnames.
4640	(build_dirs_and_chdir): add a new argument that tells this routine
4641 	whether or not to check before it creates and populates
4642 	directories or not.
4643
4644	* filesubr.c (last_component): return the top-level directory when
4645 	asked about the top-level directory.
4646
4647	* sanity.sh (toplevel-12): change test to reflect the new style of
4648 	this error message.
4649
4650	* create_adm.c (Create_Admin): include the directory in the error
4651 	message.
4652
46531998-02-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
4654
4655	* diff.c (diff_fileproc), import.c (import, add_rcs_file), rcs.c
4656	(RCS_cmp_file): Don't ignore errors from CVS_UNLINK and fclose.
4657
4658	* patch.c (patch_fileproc): Check for errors from fclose; if we
4659	get -1 from getline check for end of file vs. error.
4660
4661	* rcs.c (RCS_checkout): Comment return value (0/1, not -1).
4662	* commit.c, diff.c, mkmodules.c, patch.c, rcs.c, update.c: Update
4663	to match this convention.  Don't suppress errors based on
4664	quiet or really_quiet variables.
4665
4666	Fix a longstanding bug which also makes stamps-8kw in make
4667	remotecheck work again (it stopped working with Ian's 8 Feb 98
4668	checkin):
4669	* client.c, client.h (change_mode): If new argument respect_umask
4670	is set, then honor the umask.
4671	* client.c, server.c: Update callers.
4672
4673	Cleanups to Tim's checkin:
4674	* rcs.c (RCS_checkout): Use existence_error not ENOENT.
4675	* commit.c (checkaddfile): Remove comment about whether we want to
4676	check for errors from fclose; there is no reason not to.
4677	* rcs.c (RCS_checkout), update.c (special_file_mismatch): sscanf
4678	on %ld requires an unsigned long, not a dev_t.
4679	* update.c (special_file_mismatch): Remove unused variable
4680	check_devnums.
4681	* mkmodules.c (config_contents): Between two settings, use a blank
4682	line not a "#" line.
4683
46841998-02-15  Tim Pierce  <twp@skepsis.com>
4685
4686	[This is the code as submitted.  I'll be checking in my cleanups
4687	shortly.  This work sponsored by Abbott Labs.  -kingdon]
4688
4689	Support for device special files, symbolic links, user and group
4690	ownerships, and file permissions.
4691
4692	* parseinfo.c: (parse_config): Handle new config variable
4693	`PreservePermissions'.
4694	* mkmodules.c (config_contents): Add new PreservePermissions var.
4695
4696	* rcs.c, rcs.h (preserve_perms): New variable.
4697	(RCS_checkout, RCS_checkin): Support for newphrases `owner',
4698	`group', `permissions', `special', `symlink'.
4699	(RCS_checkout): If `workfile' and `sout' are symlinks, remove them
4700	before attempting to open them for writing.
4701	* import.c (add_rcs_file): Support for newphrases.  Do not attempt
4702	to read data from special files or symlinks.  Error message
4703	`cannot fstat' is now `cannot lstat'.
4704
4705	New metrics for deciding when two files are different:
4706
4707	* update.c, cvs.h (special_file_mismatch): New function.
4708	(merge_file, join_file): Call it.
4709	* no_diff.c (No_Difference): Call it.
4710
4711	* filesubr.c (xcmp): Consider files to be different if they are of
4712	different types; if they are symlinks which link to different
4713	pathnames; or if they are devices with different device numbers.
4714	Error message is now `cannot lstat'.
4715	* rcs.c (RCS_cmp_file): Use `xcmp' to compare files, simplifying
4716	the special handling for nonregular files.
4717
4718	* rcscmds.c (diff_exec, diff_execv): If asked to obtain diffs for
4719	special files, report no differences.
4720
4721	Miscellaneous changes to make special file support possible:
4722
4723	* commit.c (fix_rcs_modes): Don't attempt to `fix' permissions on
4724	a symlink.
4725
4726	* import.c (add_rcs_file): Don't try to close fpuser if it was
4727	never opened (e.g. when operating on a symlink).
4728
4729	* filesubr.c, cvs.h (isdevice, xreadlink): New functions.
4730	* filesubr.c (copy_file): Handle special files and symlinks.
4731	(xchmod): Do nothing if `preserve_perms' is set.
4732
4733	* commit.c (checkaddfile): Replace `copy_file (DEVNULL, ...)' with
4734	fopen/fclose calls.  Copy_file no longer attempts to read data
4735	from device files.
4736
4737	* filesubr.c (islink): Use CVS_LSTAT, not lstat.
4738	* vers_ts.c (time_stamp, time_stamp_server): Use CVS_LSTAT, not stat,
4739	to get symlinks right.
4740	* subr.c (get_file): Same.  Don't attempt to read from special
4741	files or symlinks.
4742
4743	* classify.c (Classify_File): Doc fix.
4744
4745Fri Feb 13 17:07:32 1998  Eric Mumpower  <nocturne@cygnus.com>
4746	and Ian Lance Taylor  <ian@cygnus.com>
4747
4748	Fix some file system ordering problems found on Irix 6.4:
4749	* sanity.sh (basic2): Use dotest_sort for test 56.
4750	(importb): Use dotest_sort for tests importb-1 and importb-2.
4751	(head): Use dotest_sort for test head-1.
4752
4753Thu Feb 12 15:15:33 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4754
4755	* import.c (add_rcs_file): If add_logfp is NULL, don't call fperror.
4756
475711 Feb 1998  Andy Piper
4758
4759	* server.c (cvs_output_binary): Use OPEN_BINARY not _O_BINARY.
4760
4761Mon Feb  9 18:34:39 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4762
4763	Tweaks to Ian's checkin:
4764	* update.c (merge_file): Remove comment about sending file to
4765	client before the message.  It doesn't apply to this code any more
4766	(it does apply to checkout_file, but I'm not sure it is important
4767	to have such a comment anyway).
4768	* buffer.c (buf_default_memory_error, buf_length): Reindent.
4769	* server.h: Declare struct buffer before use.
4770
4771Mon Feb  9 21:05:28 1998  Ian Lance Taylor  <ian@cygnus.com>
4772
4773	* rcs.c (RCS_fully_parse): Call getrevnum rather than getrcsrev.
4774	Don't bother with ungetc.
4775
4776	* rcs.c (getrcsrev): Rewrite to simply call getrevnum.
4777
4778Sun Feb  8 15:49:39 1998  Ian Lance Taylor  <ian@cygnus.com>
4779
4780	Don't have the server check out a revision into a file and then
4781	immediately read the file; just read into a buffer instead.
4782	* update.c: Include buffer.h.
4783	(update_fileproc): Let checkout_file call server_updated.
4784	(checkout_file): Add merging and update_server parameters.  Change
4785	all callers.  If server_active, don't mess with backup files.  If
4786	server_active, copy the revision into a buffer rather than a file
4787	when possible.  If update_server, call server_updated.  Fix
4788	handling of error status.
4789	(checkout_to_buffer): New static function used by checkout_file.
4790	(merge_file): Let checkout_file call server_updated.
4791	(join_file): Likewise.
4792	* server.c (server_updated): Change file_info parameter to mode
4793	parameter.  Add filebuf parameter.  Change all callers.  If
4794	filebuf is not NULL, don't read the file.
4795	* server.h (server_updated): Update declaration.
4796	* buffer.c (buf_free): New function.
4797	(buf_append_buffer): New function.
4798	(buf_length): New function.
4799	* buffer.h (buf_free, buf_append_buffer, buf_length): Declare.
4800
4801	* buffer.c: (buf_initialize): If the memory parameter is NULL, use
4802	buf_default_memory_error.
4803	(buf_default_memory_error): New static function.
4804	* buffer.h (BUFMEMERRPROC): Define typedef.
4805	* client.c (buf_memory_error): Remove.
4806	(start_server): Pass NULL rather than buf_memory_error as buffer
4807	memory error function.
4808
4809Sat Feb  7 16:27:30 1998  Ian Lance Taylor  <ian@cygnus.com>
4810
4811	* rcs.c (RCS_parsercsfile_i): Read the expand keyword from the RCS
4812	file.  We do this because Version_TS calls RCS_getexpand in many
4813	common cases, and we don't want to reopen the file just for that.
4814	(RCS_reparsercsfile): Skip the expand keyword.
4815	(RCS_getexpand): Don't call RCS_reparsercsfile.
4816
4817	* rcs.c (STREQ): New macro.  In all string equality tests in the
4818	file, replace strcmp with STREQ.
4819
4820Fri Feb  6 16:14:49 1998  Ian Lance Taylor  <ian@cygnus.com>
4821
4822	* update.c (checkout_file): If we've already removed the backup
4823	file once, don't try to remove it again.
4824
4825	* filesubr.c (unlink_file_dir): Call stat rather than isdir, and
4826	don't call unlink if the file does not exist.
4827
4828	* myndbm.c (mydbm_load_file): Rename line_len to line_size.  Call
4829	getstr rather than getline, to avoid any confusion between \n and
4830	\012.  Use the line length returned by getstr rather than calling
4831	strlen.  Remove local variable len.
4832
4833Fri Feb  6 13:23:46 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4834
4835	* rcs.c (RCS_parsercsfile_i): Don't suppress errors on
4836	really_quiet.
4837	(RCS_parsercsfile_i, RCS_reparsercsfile, RCS_fully_parse,
4838	RCS_deltas, getdelta, getrcskey, RCS_getdeltatext):
4839	Check for errors.  Include errno in error messages.  Include
4840	filename in error messages.  Pass new argument to getrcskey.
4841	(getrcskey): New argument NAME, so we can report errors ourself.
4842
4843Fri Feb  6 12:10:18 1998  Ian Lance Taylor  <ian@cygnus.com>
4844
4845	* rcs.c (RCS_reparsercsfile): Don't use ftell/fseek; just keep
4846	track of whether we've already read a key/value pair.  Use sizeof
4847	rather than strlen for a constant string.  Pass the current key
4848	and value to getdelta, and get them back as well.
4849	(getdelta): Add keyp and valp parameters.  Don't use ftell/fseek;
4850	just return the key/value pair to the caller.  Don't allocate
4851	vnode before we know we need it.  Check one getrcskey return
4852	value.  Use sizeof rather than strlen for a constant string.
4853
4854	* rcs.c (getrcskey): Correct comment describing return value.
4855
4856Thu Feb  5 22:51:13 1998  Ian Lance Taylor  <ian@cygnus.com>
4857
4858	* subr.c (getcaller): Cache the result, so that we don't keep
4859	searching the password file.
4860
4861Wed Feb  4 23:31:08 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4862
4863	* rcs.c (max_rev): Don't prototype.  Interesting that noone
4864	complained about this until now.
4865
48664 Feb 1998  Jim Kingdon
4867
4868	* rcs.c (RCS_checkin): When adding a new file, read it
4869	with "rb" if binary.
4870
4871Fri Jan 30 11:32:41 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4872
4873	* sanity.sh: Also test "first-dir" as the regexp in loginfo in
4874	addition to ALL.
4875
4876	* main.c (main): Update year in copyright notice to 1998.
4877
4878Thu Jan 29 00:01:05 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4879
4880	* version.c: Change version number to 1.9.25.
4881
4882	* Version 1.9.24.
4883
4884	* sanity.sh (multibranch2): File file2 and tests multibranch2-13
4885	through multibranch2-15 test a slightly different case than the
4886	rest of multibranch2.
4887
4888	* mkmodules.c (cvswrappers_contents): Rewrite.  The text didn't
4889	describe -k and had various other problems.
4890
489128 Jan 1998  Karl Fogel and Jim Kingdon
4892
4893	New feature to let server tell client about wrappers.
4894	* client.h (struct response): Add comment about args being
4895	'\0' terminated when passed to handle_* functions.
4896	* client.c (start_server): send "wrapper-sendme-rcsOptions" to
4897	server iff supported.
4898	(responses): new response "Wrapper-rcsOption"; allows the server
4899	to send certain lines from its cvswrappers file.
4900	(handle_wrapper_rcs_option): new func, handles "Wrapper-rcsOption"
4901	response from server.
4902	* server.c (serve_wrapper_sendme_rcs_options): new func, sends
4903	server side CVSROOT/cvswrappers rcs option lines to client.
4904	(requests): new request "wrapper-sendme-rcsOptions"; if received,
4905	we know we can send "Wrapper-rcsOption..." to the client.
4906	* wrapper.c (wrap_unparse_rcs_options): new func; repeated calls
4907	step down the wrapper list returning rcs option entries, but
4908	repackaged as cvswrappers lines.
4909	(wrap_setup): new guard variable `wrap_setup_already_done'; if
4910	this function has run already, just return having done nothing.
4911	Add comment concerning environment variable.
4912	* cvs.h: declare wrap_unparse_rcs_options().
4913
4914Tue Jan 27 18:27:19 1998  Ian Lance Taylor  <ian@cygnus.com>
4915
4916	* rtag.c (rtag_dirproc): Call ignore_directory, and skip the
4917	directory if it returns true.
4918	* sanity.sh (modules4): New set of tests to test some aspects of
4919	excluding directories in the modules file, including the above
4920	patch.
4921
4922Thu Jan 22 10:05:55 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4923
4924	* server.c (serve_kopt): Check for length of arg.  Based on
4925	inspection of the code, plugs a buffer overrun security hole which
4926	was introduced Monday.
4927
4928	* server.c (serve_is_modified): Don't call xmalloc; we aren't
4929	allowed to call error() here.  Remove duplicate (and potentially
4930	confusing) variable 'p'.
4931
4932	* log.c (log_fileproc): Look for first character of version
4933	'0' AND second character '\0', rather than OR.  I didn't try to
4934	come up with a test case but this looks like a simple thinko
4935	(albeit one which would show up in obscure cases if at all).
4936
4937Tue Jan 20 19:37:53 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4938
4939	* client.c (send_dirent_proc): Don't send nonexistent directories
4940	unless noexec.
4941	* sanity.sh (modules2): New tests modules2-13 through modules2-18
4942	test for this fix.
4943
4944Mon Jan 19 11:17:51 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4945
4946	* server.c (serve_kopt): New function.
4947	(requests): Add "Kopt" request.
4948	(kopt): New variable.
4949	(serve_is_modified): Write kopts from there into entries.
4950	(serve_modified): Call serve_is_modified so we do the same.
4951	Declare serve_modified and serve_is_modified.
4952	* vers_ts.c (Version_TS): Set ->options even for a dummy ("D"
4953	timestamp) entry.
4954	* import.c (process_import_file): Check for -k options.
4955	* client.c (client_process_import_file): Send Kopt request.
4956	(send_fileproc): Likewise, for "cvs add".
4957	* sanity.sh: Enable test binwrap3-sub2-add1 for remote.
4958	Add -I .cvswrappers to binwrap3-2a; adjust binwrap3-2d
4959	accordingly.  Tests for this fix.
4960
4961Mon Jan 19 08:48:59 1998  Larry Jones  <larry.jones@sdrc.com>
4962
4963	* sanity.sh (errmsg1): Append test 168 output to log file.
4964
4965Sat Jan 17 08:01:51 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4966
4967	* sanity.sh (ann-10, ann-11): Don't make assumptions about the
4968	number of characters in the username.
4969
4970Fri Jan 16 15:34:02 1998  Larry Jones  <larry.jones@sdrc.com>
4971
4972	* diff.c (diff_fileproc): Free label1 and label2 when finished.
4973
4974	* edit.c (editor_set): Don't free edlist until after we're
4975	done using it.
4976
4977	* rcscmds.c (RCS_merge): Free xrev1 and xrev2 when finished.
4978
4979	* subr.c (make_message_rcslegal): Don't access uninitialized or
4980	unallocated memory; only strip trailing blank lines.
4981	* sanity.sh (log-3): Enhance to test this fix.
4982
4983Fri Jan 16 12:41:03 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4984
4985	* sanity.sh: Add keywordlog to list of tests run by default.
4986
4987	* rcs.c (RCS_deltas): Don't call cvs_output if length is zero;
4988	passing zero length to cvs_output does not mean output zero
4989	bytes.  The 27 Dec 1997 change to no longer '\0'-terminate the
4990	->text field turned this from a time bomb to a user-visible bug.
4991	* sanity.sh (ann): New tests, test for this fix and other annotate
4992	behaviors.
4993
4994Thu Jan 15 23:52:00 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
4995
4996	* root.c (root_allow_ok): If inetd.conf didn't specify an
4997	--allow-root options at all, we know we are in trouble.  Give a
4998	specific error message.
4999
5000Thu Jan 15 21:24:59 1998  Ian Lance Taylor  <ian@cygnus.com>
5001
5002	* sanity.sh (dotest_sort): New variant of dotest which sorts the
5003	output, for use when the output depends upon details of the file
5004	system, typically when doing an import.
5005	(rdiff): Use dotest_sort for rdiff-1.
5006	(ignore): Use dotest_sort for 188a, 188b, 189d, 190, and 191.
5007
5008	* sanity.sh: (TESTSHELL): New variable.
5009	(editor, info, reserved): Use TESTSHELL in temporary script.
5010
5011	* sanity.sh (ignore): Do all tests in subdirectory, to avoid
5012	conflict between cvsroot and CVSROOT on Windows.
5013	(binwrap3, mwrap, info, config): Likewise.
5014
5015	* sanity.sh (binfiles2): Correct test name binfile2-7-brmod to
5016	binfiles2-7-brmod.
5017
5018	* release.c (release_delete): If __CYGWIN32__ is defined, don't
5019 	worry about mismatched inodes.  This is a hack, but then I think
5020 	the test is rather peculiar anyhow.
5021
5022Thu Jan 15 16:07:36 1998  Larry Jones  <larry.jones@sdrc.com>
5023
5024	* sanity.sh (reserved-9): Use ${PROG} instead of "cvs".
5025
5026Wed Jan 14 15:43:13 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5027
5028	* Split ChangeLog into ChangeLog-97 and ChangeLog.
5029	* Makefile.in (DISTFILES): Add ChangeLog-97.
5030
503113 Jan 1998  Jim Kingdon
5032
5033	* client.c: Declare handle_mt.
5034
5035Tue Jan 13 22:21:30 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5036
5037	* sanity.sh: Add comment about how pwd and /bin/pwd often differ
5038	in behavior (but are not guaranteed to).
5039
5040Tue Jan 13 13:49:53 1998  Ian Lance Taylor  <ian@cygnus.com>
5041
5042	* sanity.sh: When setting TMPPWD use just pwd, not /bin/pwd.
5043
5044	* update.c (checkout_file): Don't pass set_time as true to
5045	Version_TS if the file is dead.
5046	* sanity.sh (modules): Add tests modules-155c6 through
5047 	modules-155c8 to test for above patch (without the above patch,
5048 	modules-155c8 will fail when remote).
5049
5050Tue Jan 13 10:37:02 1998  Larry Jones  <larry.jones@sdrc.com>
5051
5052	* client.c (send_modified): Change bufsize and newsize from int
5053	to size_t to avoid type clashes in call to read_and_gzip.
5054
5055Tue Jan 13 10:33:02 1998  Larry Jones  <larry.jones@sdrc.com>
5056
5057	* zlib.c (read_and_gzip): Set finish to 0; it was uninitialized.
5058
5059Tue Jan 13 10:26:43 1998  Larry Jones  <larry.jones@sdrc.com>
5060
5061	* add.c, rcs.c: Plug memory leaks.
5062
5063Mon Jan 12 10:45:27 1998  Larry Jones  <larry.jones@sdrc.com>
5064
5065	* server.c (mkdir_p): Don't try to create nameless directories
5066	(i.e., given "/foo//bar", don't try to create "/foo/",
5067	just "/foo" and "/foo//bar") since it isn't necessary and
5068	it fails on some systems in unexpected ways.
5069
50701998-01-11  enami tsugutomo  <enami@but-b.or.jp>
5071
5072	* rcs.c (linevector_copy): Delete lines before overwriting them.
5073
5074Sat Jan 10 11:05:40 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5075
5076	* cvsrc.c, entries.c, login.c, logmsg.c, myndbm.c, patch.c,
5077	release.c, server.c: Check for errors from getline, CVS_FOPEN,
5078	fprintf, CVS_UNLINK and fclose.  Note that the new errors are
5079	nonfatal.  This is because of conservatism more than because
5080	it is always the best thing.
5081	* login.c (get_cvs_password): Close the file when done with it.
5082	* client.c (notified_a_file): If -1 return from getline, check
5083	feof rather than assuming errno is set.
5084
5085Fri Jan  9 14:38:54 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5086
5087	* server.c (expand_proc): Also output server_dir in
5088	"Module-expansion", not just in output_dir ("Created", &c).
5089	* sanity.sh (modules2): New tests modules2-9 through modules2-12
5090	test for this.
5091
5092Thu Jan  8 12:56:55 1998  Yasutoshi Hiroe  <hiroe@rgk.ricoh.co.jp>
5093
5094	* import.c (import): Don't strcat on uninitialized memory.  Fixes
5095	possible SIGSEGV with zero-length message.
5096
5097Tue Jan  6 22:56:29 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5098
5099	* sanity.sh (crerepos): Fix mistaken variable name which caused us
5100	not to clean up at the end of the test.
5101
5102Mon Dec 22 01:40:57 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>
5103
5104	* add.c (add): Also look for .cvswrappers files.
5105	* sanity.sh (binwrap3): New tests binwrap3-2*, binwrap3-sub2-add*
5106	test for this.
5107
5108Tue Jan  6 11:50:38 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5109
5110	* sanity.sh (crerepos): New tests crerepos-8 through crerepos-18
5111	test behaviors when mixing repositories.
5112
5113Sun Jan  4 17:40:22 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
5114
5115	* version.c: Change version number to 1.9.23.
5116
5117	* Version 1.9.22.
5118
5119
5120For older changes see ChangeLog-97.
5121