]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/cvs/src/ChangeLog
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / cvs / src / ChangeLog
1 2008-03-10  Mark D. Baushke  <mdb@gnu.org>
2
3         * mkmodules.c, parseinfo.c: Update copyright.
4
5         * parseinfo.c (parse_config): Add support for new
6         "IgnoreUnknownConfigKeys" configuration key.
7         * mkmodules.c (config_contents): Add text about the
8         "IgnoreUnknownConfigKeys" option.
9         * sanity.sh (config): Test that IgnoreUnknownConfigKeys=yes works.
10
11 2008-01-30  Derek R. Price  <derek@ximbiot.com>
12
13         * update.c (join_file): Use local copy to detect deletion conflicts,
14         as opposed to the base revision.  Restore freeing of rev2 to its
15         original location.  Use simpler conflict message.
16         * sanity.sh: Update to compensate.
17
18 2008-01-29  Derek R. Price  <derek@ximbiot.com>
19
20         * update.c (join_file): Remove trace that is no longer needed.
21
22 2008-01-29  Derek R. Price  <derek@ximbiot.com>
23             Paul Edwards  <fight.subjugation@gmail.com>
24
25         * update.c (join_file): Detect deletion conflicts.
26         * sanity.sh (join, join4): Adjusted for this fix.
27           (join8, join9): Add new tests for conflicts.
28
29 2008-01-27  Mark D. Baushke  <mdb@gnu.org>
30
31         * filesubr.c (xreadlink): s/128/BUFSIZ/ avoid magic numbers.
32
33         * client.c (start_rsh_server): Use CVS_SSH for the :extssh:
34         method or fall back to "ssh" as set using the --with-ssh flag to
35         configure.
36
37         * client.h, log.c, main.c, recurse.c, root.c: Update copyright for
38         2008.
39
40 2008-01-24  Mark D. Baushke  <mdb@gnu.org>
41
42         * log.c (cvslog): New -n option to revert the -N switch.
43         (log_usage): Add -n to the help string.
44         * main.c (cmds[]): Add "blame" as a synonym for the
45         "annotate" command.
46         * sanity.sh (cvs-log): New tests for 'cvs log -N -n' validation.
47         (ann-10w1blame): Test the 'cvs blame' synonym for annotate.
48         (Patch suggested by "David O'Brien" <obrien@FreeBSD.org>)
49
50         * edit.c (notify_check): Rename to...
51         (cvs_notify_check): ...this to avoid Mac OSX symbol conflicts.
52         * client.h, edit.h, recurse.c: Change all references.
53
54         * client.c (start_rsh_server): Use RSH_DFLT not a hardcoded "rsh"
55         * root.c (parse_cvsroot): Fix parsing for the :extssh: method.
56
57         * sanity.sh (expr_set_DASHDASH): Fix for non-POSIX expr
58         implementations.
59         (CVSROOTDIR): Use 'cvsrootdir' instead of 'cvsroot' to
60         avoid problems on case preserving and/or case insensitive
61         filesystems (e.g., HFS+).
62         (CVSROOT_DIRNAME): Use ${TESTDIR}/${CVSROOTDIR} instead of
63         ${TESTDIR}/cvsroot to avoid filesystem case sensitivity problems.
64         (crerepos-extssh): Clone of crerepos tests, but use the :extssh:
65         method.
66
67 2007-12-19  Larry Jones  <lawrence.jones@siemens.com>
68
69         * client.c, import.c, lock.c, login.c, mkmodules.c, modules.c,
70         rcs.c, server.c: Fix gcc -Wall warnings.
71
72 2007-12-16  Larry Jones  <lawrence.jones@siemens.com>
73
74         * rcs.c (HAVE_MMAP): Fall back to stdio if mmap fails.
75
76 2007-12-13  Larry Jones  <lawrence.jones@siemens.com>
77
78         * rcs.c (rcsbuf_ftell): Avoid potential overflow.
79
80 2007-12-12  Larry Jones  <lawrence.jones@siemens.com>
81
82         * vers_ts.c (time_stamp): Add warnings for [l]stat failures
83         other than no such file.
84
85 2007-08-26  Derek Price  <derek@ximbiot.com>
86
87         * mkmodules.c (in_root): Rename to...
88         (in_repository): ...this.
89
90 2007-08-26  Larry Jones  <lawrence.jones@ugs.com>
91
92         * mkmodules.c (in_root, init): Unmix declarations and code.
93
94 2007-08-22  Derek Price  <derek@ximbiot.com>
95
96         * add.c (add): Check last component of argument paths instead of the
97         entire argument.
98         * sanity.sh (add-restricted): Test indirect paths to `CVS' dir with
99         add.
100
101         * server.c (serve_init): Remove unnecessary argument to printf style
102         function.
103
104         * mkmodules.c (in_root): New function.
105         (init): Verify that new roots are not created inside others.
106         * sanity.sh (init-3): New test for same.
107
108 2007-08-16  Derek Price  <derek@ximbiot.com>
109
110         * root.c (root_allow_used): New function and...
111         * root.h (root_allow_used): ...its prototype.
112         * server.c (serve_root): Backport --allow-root test for `cvs server'.
113         * sanity.sh (server2-5, server2-6): New tests for the above.
114
115 2007-06-18  Derek Price  <derek@ximbiot.com>
116
117         * client.c (send_repository): Don't attempt to send metadata from CVS
118         subdirectories when importing.
119
120 2007-06-15  Derek Price  <derek@ximbiot.com>
121
122         * import.c (import): Check more carefully for files and directories
123         named "CVS".
124         * sanity.sh (import-1b): New test for same.
125         (import-2): Test files named "CVS", in addition to directories.
126
127 2007-05-22  Larry Jones  <lawrence.jones@ugs.com>
128
129         * rcs.c (RCS_fully_parse): Include revision in error message.
130
131 2007-05-07  Derek Price  <derek@ximbiot.com>
132
133         * mkmodules.c (init): Assert that the server is not active.
134         * server.c (serve_init): Send error message when the init command is
135         received from a client.
136
137         * sanity.sh (*): Avoid using remote init.
138         (skip_always, localonly, restore_adm): New convenience functions.       
139
140 2007-03-08  Larry Jones  <lawrence.jones@ugs.com>
141
142         * rcs.c (findmagictag): Cast node->data before doing arithmetic
143         since it's now (void *).
144
145 2007-03-05  Larry Jones  <lawrence.jones@ugs.com>
146
147         * rcs.c (RCS_delete_revs): When checking for tagged revisions,
148         include magic branch tags.
149
150 2007-03-01  Larry Jones  <lawrence.jones@ugs.com>
151
152         * import.c (import_descend_dir): Correct error message.
153         * sanity.sh (pserver-3a): New test.
154
155 2006-09-14  Derek Price  <derek@ximbiot.com>
156
157         * sanity.sh (server3, client2): New tests.
158
159 2006-09-07  Derek Price  <derek@ximbiot.com>
160
161         [bug #17560]
162         * rcs.c (apply_rcs_changes): Improve comments.  Restore repaired error
163         handling.
164
165 2006-09-06  Larry Jones  <lawrence.jones@ugs.com>
166
167         * rcs.c (apply_rcs_changes): Improve linked list handling.  Remove
168         unused variables and unreachable error handling code.  Avoid unneeded
169         dynamic allocation of temp linevector.  Minor stylistic code clean up.
170
171 2006-09-06  Derek Price  <derek@ximbiot.com>
172
173         [bug #17560]
174         * rcs.c (apply_rcs_changes): Improve header block comment.  Clean up
175         unused linevector on non-fatal error.
176
177 2006-09-06  Derek Price  <derek@ximbiot.com>
178
179         [bug #17560]
180         * rcs.c (apply_rcs_changes): Remove an unecessary memcpy.  Avoid some
181         other processing on error.
182         (linevector_delete): Remove - it's no longer used.
183
184 2006-09-06  Mark D. Baushke  <mdb@gnu.org>
185
186         [bug #17560]
187         * rcs.c (apply_rcs_changes): Fix the merge algorithm from O(n^2)
188         to O(n).
189         (Based on a patch submitted by "Michael J. Smith"
190         <msmith@ideorlando.org>)
191
192 2006-08-28  Derek Price  <derek@ximbiot.com>
193
194         * recurse.c (do_recursion): Remove misguided assertion.
195         * sanity.sh (dottedroot-3): Add test for the above.
196         (Thanks to report from Paul Eggert <eggert@CS.UCLA.EDU>.)
197
198         [bug #17168]
199         * classify.c (Classify_File): Use T_PATCH for changed keywords instead
200         of T_CHECKOUT to conserver bandwidth.  Don't sticky check when marking
201         files for update anyhow.
202         * sanity.sh: Update to compensate (s/^U /[UP] /).
203
204 2006-08-25  Derek Price  <derek@ximbiot.com>
205
206         [bug #17168]
207         * classify.c (Classify_file): Mark files with potential keyword
208         substitution changes as needing update.
209         * sanity.sh: Update to compensate.
210         (keyword, keywordname, serverpatch): Update to compensate, removing
211         the last few "checksum failed" tests.
212
213         * classify.c (Classify_File): Remove hacks which worked around checksum
214         failures from bug #17032.
215
216 2006-08-24  Derek Price  <derek@ximbiot.com>
217
218         [bug #17032]
219         * update.c (patch_file): Correctly recreate client working files
220         containing the RCS `Name' keyword before generating patches.
221         * sanity.sh (keyword-23r): Merge with local case to compensate.
222
223 2006-08-17  Larry Jones  <lawrence.jones@ugs.com>
224
225         * hash.h: Rename structs node and list to hashnode and hashlist
226         to avoid name clashes.
227
228 2006-07-25  Mark D. Baushke  <mdb@gnu.org>
229
230         * login.c (free_cvs_password): New function to control freeing of
231         the static get_cvs_passwd() returned storage.
232         (login): Call it.
233         * cvs.h (free_cvs_password): Add prototype for it.
234         * client.c (auth_server): Call it.
235         [Alter the previous NetBSD coverity cid-3404 patch.]
236         
237 2006-07-11  Larry Jones  <lawrence.jones@ugs.com>
238
239         * log.c (log_usage): Fix misleading description of -b (it selects
240         revisions on the default branch *in addition to* revisions selected
241         with -r).
242
243 2006-06-29  Derek Price  <derek@ximbiot.com>
244
245         * client.c (is_arg_a_parent_or_listed_dir): Strip trailing slashes from
246         dir name defore searching for it.  Partially addresses TODO #205.
247         * sanity.sh (trailingslashes): Update to compensate.
248
249 2006-06-28  Derek Price  <derek@ximbiot.com>
250
251         [bug #16961]
252         * login.c (get_cvs_password): Return copy of global variable.
253         (Patch from <mbarabas@redhat.com>.)
254
255 2006-06-23  Larry Jones  <lawrence.jones@ugs.com>
256
257         * server.c (do_cvs_command): Remove unused variable.
258
259 2006-06-22  Larry Jones  <lawrence.jones@ugs.com>
260
261         * mkmodules.c (modules_contents): Remove defunct -i option.
262
263 2006-06-10  Derek Price  <derek@ximbiot.com>
264
265         * sanity.sh (conflicts4): Don't expect specific file permissions.  Use
266         $PLUS.
267
268 2006-06-08  Derek Price  <derek@ximbiot.com>
269
270         * sanity.sh (conflicts4): Test that the client honors Empty-conflicts.
271
272         * server.c (requests): Add "Empty-conflicts" marker.
273         * client.c (send_fileproc): Send contents of all files with conflicts
274         unless the server can handle the conflict marker in the Entry.
275
276         * sanity.sh (conflicts4): New tests.
277         (Original patch from Mark D. Baushke <mdb@gnu.org>.)
278
279 2006-06-07  Mark D. Baushke  <mdb@gnu.org>
280
281         * modules.c (my_module): Remove unused variable xvalue.
282         [Fixes NetBSD coverity cid-705.]
283         
284 2006-05-31  Mark D. Baushke  <mdb@gnu.org>
285
286         * add.c (add): Fix memory leak.
287         [Fixes NetBSD coverity cid-3751.]
288         (add_directory): Fix memory leak.
289         [Fixes NetBSD coverity cid-3640.]
290
291         * checkin.c (Checkin): Avoid possible NULL dereference.
292         [Fixes NetBSD coverity cid-2425.]
293
294         * client.c (auth_server): Fix memory leak.
295         [Fixes NetBSD coverity cid-3404.]
296
297         * commit.c (remove_file): Fix memory leak.
298         [Fixes NetBSD coverity cid-3752.]
299
300         * rcs.c (RCS_checkin): Add assert (tip).
301         [Fixes NetBSD coverity cid-2424.]
302
303 2006-05-26  Mark D. Baushke  <mdb@gnu.org>
304
305         * add.c (add): Do not leak memory.
306         [Fixes NetBSD coverity cid-2199.]
307
308         * edit.c (onoff_fileproc): Do not leak memory.
309         [Fixes NetBSD coverity cid-2201.]
310
311         * edit.c (onoff_filesdoneproc): Do not leak memory.
312         [Fixes NetBSD coverity cid-2202.]
313
314         * lock.c (readers_exist): Add assert (lockdir).
315         [Fixes NetBSD coverity cid-2411.]
316
317         * rcs.c (RCS_findlock_or_tip): Do not leak memory.
318         [Fixes NetBSD coverity cid-2198.]
319
320         * rcs.c (RCS_getdate): Avoid possible NULL dereference.
321         [Fixes NetBSD coverity cid-2412.]
322
323         * server.c (serve_sticky): Do not leak file descriptors.
324         [Fixes NetBSD coverity cid-2197.]
325
326         * server.c (do_cvs_command): Do not leak memory.
327         [Fixes NetBSD coverity cid-2204.]
328
329         * tag.c (add_to_val_tags): Do not leak memory.
330         [Fixes NetBSD coverity cid-2071.]
331
332 2006-05-25  Derek Price  <derek@ximbiot.com>
333
334         * client.c (start_rsh_server): Default rsh client to RSH_DFLT.  Remove
335         verbose comment attempting to justify the previous default.
336
337 2006-05-24  Larry Jones  <lawrence.jones@ugs.com>
338
339         * sanity.sh: Add -v|--verbose option to echo test names.  Clean
340         up help message.
341         Remove val-tags files for cleanup instead of truncating since the
342         truncation code doesn't work right on Solaris.  Always use -f when
343         removing val-tags.
344
345 2006-05-22  Derek Price  <derek@ximbiot.com>
346
347         * rcs.c (RCS_reparsercsfile, RCS_fully_parse, RCS_checkout, RCS_deltas,
348         RCS_getdeltatext, RCS_copydeltas): Verify input revision numbers.
349         (rcs6): Update to compensate.
350
351         * sanity.sh (rcs6): New test.
352
353 2006-05-16  Derek Price  <derek@ximbiot.com>
354
355         * main.c: Update copyright for 2006.
356
357 2006-05-12  Mark D. Baushke  <mdb@gnu.org>
358
359         * log.c (log_expand_revlist): Add assert (r->first). It should
360         only be possible for both r->first == NULL && r->last == NULL
361         which would have been handled.
362         [Fixes NetBSD coverity cid-1063.]
363
364         * server.c (do_cvs_command): Protect close (dev_null_fd) against
365         invalid fd value in error_exit.
366         [Fixes NetBSD coverity cid-1307.]
367         
368         * rcs.c (RCS_isdead): Assert that the first argument is not NULL.
369         [Fixes NetBSD coverity cid-1058.]
370
371         * commit.c (checkaddfile): Do not dereference NULL on call to
372         error().
373         [Fixes NetBSD coverity cid-1061.]
374
375         * log.c (cvslog): Assert p->start && p->end instead of masking the
376         problem.
377         * server.c (server_updated): Assert findnode_fn results instead of
378         masking the problem.
379         
380         * add.c (add_directory): Revert previous change. The xstrdup()
381         function already deals a NULL argument.
382         * client.c (handle_mt): Ditto.
383         * entries.c (Entnode_Create): Ditto.
384         (Entries_Open): Ditto.
385         * logmsg.c (fmt_proc): Ditto.
386         * vers_ts.c (Version_TS): Ditto.
387         
388 2006-05-11  Mark D. Baushke  <mdb@gnu.org>
389
390         * add.c (add_directory): Protect tag from NULL dereference.
391         [Fixes NetBSD cid-1054.]
392
393         * client.c (handle_mt): Deal with missing text argument.
394         [Fixes NetBSD cid-924.]
395
396         * entries.c (Entnode_Create): Protect date, tag and ts_conflict
397         from possible NULL dereference.
398         [Fixes NetBSD coverity cid-994, cid-995, cid-1055, cid-1057.]
399
400         * entries.c (Entries_Open): Protect dirtag and dirdate from
401         possible NULL dereference.
402         [Fixes NetBSD coverity cid-996.]
403
404         * log.c (cvslog): Validate start and end args to
405         date_to_internet().
406         [Fixes NetBSD coverity cid-2427 and cid-2428.]
407
408         * logmsg.c (fmt_proc): Protect li->tag from NULL dereference.
409         [Fixes NetBSD coverity cid-997.]
410
411         * vers_ts.c (Version_TS): Protect tag and vers_ts->tag from NULL
412         dereference.
413         [Fixes NetBSD coverity cid-1053.]
414
415 2006-05-04  Mark D. Baushke  <mdb@gnu.org>
416
417         * filesubr.c (cvs_temp_file): Avoid keeping pointers to free()'d
418         storage laying around.
419         * commit.c (commit): Handle possible NULL filename values
420         returned from cvs_temp_file().
421         * filesubr.c (cvs_temp_name): Ditto.
422         * import.c (import): Ditto.
423         * login.c (password_entry_operation): Ditto.
424         * logmsg.c (do_verify): Ditto.
425         * patch.c (patch_fileproc): Ditto.
426         [Fixes NetBSD coverity cid-2545.]
427
428         * buffer.c (packetizing_buffer_output): Initialize outdata.
429         [Fixes NetBSD coverity cid-2474.]
430
431         * server.c (server_updated): Check for NULL return from
432         findnode_fn(). [Fixes NetBSD coverity cid-1352.]
433
434 2006-04-19  Larry Jones  <lawrence.jones@ugs.com>
435
436         * history.c (sort_order): Back out previous change - not needed.
437
438 2006-04-15  Larry Jones  <lawrence.jones@ugs.com>
439
440         * history.c (sort_order): Add prototype.
441         * server.c (template_proc): Add prototype and make args const.
442         * update.c (RegisterMerge): Make static to match prototype.
443
444 2006-04-07  Derek Price  <derek@ximbiot.com>
445
446         * client.c (strto_file_size): New function which checks for errors when
447         parsing protocol input.
448         (read_counted_file, update_entries, handle_mbinary): Use new function.
449         Remove FIXME.
450         (Thanks to a report from Brendan Harrison
451         <brendan.harrison@klocwork.com>.)
452
453         * client.c (send_a_repository): Add assertion.
454         (Thanks to an incorrect report from Brendan Harrison
455         <brendan.harrison@klocwork.com>.)
456
457 2006-04-06  Derek Price  <derek@ximbiot.com>
458
459         * filesubr.c (last_component, expand_wild), rcs.c (RCS_deltas,
460         RCS_rewrite), server.c (server_checked_in): Add assertions.
461         (Thanks to an incorrect report from Brendan Harrison
462         <brendan.harrison@klocwork.com>.)
463
464 2006-03-31  Mark D. Baushke  <mdb@gnu.org>
465
466         * cvsrc.c (read_cvsrc): Deal with \r\n (DOS) line endings in
467         .cvsrc files.
468
469 2006-03-07  Derek Price  <derek@ximbiot.com>
470
471         * tag.c (rtag_proc): Search the Attic when -F is used.
472         * sanity.sh (tests): Run death-rtag.
473         (death-rtag): Expect success.
474
475         * sanity.sh (death-rtag): Add failing force tag move test.
476
477 2006-03-06  Derek Price  <derek@ximbiot.com>
478
479         * tag.c (rtag_proc): Always search in the attic when -r is used.
480
481         * sanity.sh (death-rtag): New test.
482         (Original report from C. Michael Pilato <cmpilato@collab.net>.)
483
484 2006-03-01  Derek Price  <derek@ximbiot.com>
485
486         * sanity.sh: Set MALLOC_CHECK_ in hopes of exposing common memory
487         errors when CVS is linked with glibc 2.x.
488
489 2006-02-27  Derek Price  <derek@ximbiot.com>
490
491         * lock.c (internal_lock): Back out previous change, we don't change
492         user visible output on stable unless absolutely necessary.
493
494         * lock.c (internal_lock): Improve error message.
495
496 2006-02-26  Derek Price  <derek@ximbiot.com>
497
498         * client.c (call_in_directory): Remove unneeded code.
499         * sanity.sh (toplevel-12): Compensate by failing to expect a redundant
500         error message.
501
502 2006-02-24  Mark D. Baushke  <mdb@gnu.org>
503
504         * client.c (gzip_level): Move to...
505         * main.c (gzip_level): ...here.
506         (main): Revert previous change in '-z' argument processing and
507         remove CLIENT_SUPPORT ifdef/endif.
508         * sanity.h (crerepos-6a): Deal with --disable-client output.
509
510         * main.c (main): Validate the gzip compression level for
511         --disable-client configurations.
512
513 2006-02-13  Derek Price  <derek@ximbiot.com>
514
515         * server.c (do_cvs_command): Skip server_cleanup in the child process.
516
517         * sanity.sh (sshstdio-6): Rewrite using more portable sed script.
518
519 2006-02-02  Derek Price  <derek@ximbiot.com>
520
521         * sanity.sh (sshstdio): Attempt to ignore spurious SSH output.
522
523         * main.c (main), release.c (release), server.c (do_cvs_command): Always
524         call the cleanup hooks before exit.
525
526 2006-02-01  Derek Price  <derek@ximbiot.com>
527
528         * tag.c (add_to_val_tags): When a tag turns out to exist in the db when
529         it isn't expected, release the lock.
530
531         * history.c (save_user, save_file, save_mod, read_hrecs): Avoid
532         overflow.
533
534 2006-01-30  Derek Price  <derek@ximbiot.com>
535
536         * server.c (do_cvs_command): Set flow control pipe to blocking mode
537         before waiting for it to close.
538         (set_block_fd): New function.
539         (Original patch from Garrett Rooney <grooney@collab.net>.)
540
541 2006-01-13  Larry Jones  <lawrence.jones@ugs.com>
542
543         * mkmodules.c (config_contents): Change SystemAuth to yes to match
544         the default value.  Add missing newline in RereadLogAfterVerify.
545
546 2006-01-09  Larry Jones  <lawrence.jones@ugs.com>
547
548         * commit.c (remove_file): Record correct revision in history file.
549         (Reported by Chris Reed <cr@progress.com>.)
550
551 2005-12-07  Derek Price  <derek@ximbiot.com>
552
553         * client.c (start_server), root.c (method_names), root.h (CVSmethod):
554         Handle :extssh: as a kindness to Eclipse users.
555         (Suggestion from Joseph P. Skudlarek <Jskud@Jskud.com>.)
556
557 2005-12-06  Mark D. Baushke  <mdb@gnu.org>
558
559         * buffer.c (stdio_buffer_shutdown): No longer assert() the
560         fstat(). Use error (0, ...) instead of error (1, ...) to avoid
561         infinite loops. (patch #4678)
562         Patch adapted from "Allan L. Bazinet" <allan.bazinet@gmail.com>
563
564 2005-11-10  Larry Jones  <lawrence.jones@ugs.com>
565
566         * commit.c (commit): Complain about obsolete -n option if not in
567         server mode.
568
569 2005-11-09  Derek Price  <derek@ximbiot.com>
570
571         * sanity.sh (pserver-4.2): Accept a "no such sytem user" message when
572         a root attempt is made.
573
574 2005-09-30  Larry Jones  <lawrence.jones@ugs.com>
575
576         * expand_path.c (expand_path): Fix memory leaks.
577
578 2005-09-29  Paul Eggert  <eggert@CS.UCLA.EDU>
579             Derek Price  <derek@ximbiot.com>
580
581         * client.c (handle_m, handle_e): Remove incomplete workaround for
582         O_NONBLOCK problem; no longer needed because of the fix below.
583         (start_rsh_server): We need the O_NONBLOCK fix, so pass 'true' to
584         piped_child to enable the workaround.
585         * cvs.h (piped_child): New bool argument saying whether O_NONBLOCK
586         fix is needed.  All uses changed.
587         * run.c (work_around_openssh_glitch): New function.
588         (piped_child): Use it if the fix is requested.  Avoid call call to
589         vfork with undefined behavior.
590
591 2005-09-26  Conrad T. Pino  <Conrad@Pino.com>
592
593         * rcs.c: Use "#ifdef HAVE_FSYNC" just like every where else.
594
595 2005-09-25  Derek Price  <derek@ximbiot.com>
596
597         * rcs.c (rcs_internal_unlockfile): Fsync files before renaming them.
598         Patch from Rahul Bhargava <rahul@wandisco.com>.
599
600 2005-09-24  Derek Price  <derek@ximbiot.com>
601
602         * update.c (merge_file): Check for RCS_checkout errors.
603
604 2005-09-23  Larry Jones  <lawrence.jones@ugs.com>
605
606         * checkout.c (export_usage): Note that -r requires a tag.
607
608 2005-09-22  Larry Jones  <lawrence.jones@ugs.com>
609
610         * patch.c (patch_usage): Document -k option.
611
612 2005-09-22  Derek Price  <derek@ximbiot.com>
613
614         * classify.c (Classify_File): If a file had a conflict and the
615         timestamp hasn't changed, it still has a conflict.  Add comment about
616         how T_MODIFIED could later turn out to have conflict markers and why
617         it should not be checked in this function.
618         * client.c (send_fileproc): Don't send contents for files known to have
619         conflicts unless this is for `cvs diff'.
620         * commit.c (check_fileproc): T_CONFLICT should be handled like
621         T_MODIFIED, since force could be requested.  Simplify logic since
622         T_CONFLICT can now be trusted.
623         * cvs.h (file_has_conflict): Remove proto.
624         * rcs.c (RCS_Checkout): Comment noexec behavior in header block.
625         * server.c (serve_unchanged, serve_is_modified): Handle conflicts.
626         * status.c (status_fileproc): Trust T_CONFLICT to simplify.
627         * subr.c (file_has_conflict): Removed.
628         * update.c (update_fileproc): Trust T_CONFLICT.
629         (RegisterMerge): New function factored from...
630         (merge_file, join_file): ...these two functions.
631         * vers_ts.c (time_stamp_server): Handle = conflict timestamps in server
632         entdata.
633         * sanity.sh (files-12): Account for slight behavior improvement.
634         (status, conflicts, mwrap): Account for corrected behavior.
635         (join-readonly-conflict-10): Correct comment.
636         (binfiles-con1b): New test for correct behavior.
637
638 2005-09-19  Derek Price  <derek@ximbiot.com>
639
640         * sanity.sh (modules5-8): Rename...
641         (modules5-8r): ...to this and comment Mac OS X failure.
642         Comment Solaris 9 failure below with a `FIXME?' tag.
643
644         * sanity.sh: Remove previous hack in favor of setting TESTDIR on
645         Solaris (and Mac OS X) until problem is solved correctly.
646
647 2005-09-15  Derek Price  <derek@ximbiot.com>
648
649         * sanity.sh: Use /bin/pwd to verify current dir since Solaris 9 is
650         sometimes resolving symlinked paths.
651
652 2005-09-14  Derek Price  <derek@ximbiot.com>
653
654         * edit.c (edit_usage, unedit_usage, editors_usage), watch.c
655         (watch_usage, watchers_usage): Add quotes and reword for clarity and
656         consistency.
657
658         * edit.c (edit_usage): Add missing syntax.  Reword description for
659         clarity.  Mention default behavior.
660
661 2005-09-13  Derek Price  <derek@ximbiot.com>
662
663         * sanity.sh: Split $username into $username & $username8.  Rename
664         $author as $anyusername.
665
666 2005-09-12  Derek Price  <derek@ximbiot.com>
667
668         * sanity.sh (binfiles-con1b): Back out accidental addition.
669
670         * sanity.sh (username): Cut $username down to 8 characters when longer,
671         since that is all that appears in output.
672
673 2005-09-07  Derek Price  <derek@ximbiot.com>
674
675         Close <http://savannah.nongnu.org/bugs/?func=detailitem&item_id=14462>.
676         * rcs.c (RCS_parse): Free variable *after* using it for the last time.
677
678 2005-09-06  Derek Price  <derek@ximbiot.com>
679
680         * rcs.c (RCS_putdtree): Remove unused variable.
681
682 2005-09-06  Mark D. Baushke  <mdb@gnu.org>
683
684         Close <https://savannah.nongnu.org/bugs/?func=detailitem&item_id=14435>.
685         * rcs.c (RCS_putdtree): Avoid stack overflow which may be
686         possible with excessive recursive calls to RCS_putdtree().
687         (Patch from Serg Masyutin.)
688
689 2005-09-03  Derek Price  <derek@ximbiot.com>
690
691         * add.c (add_usage): Standardize usage message somewhat.
692
693 2005-09-02  Larry Jones  <lawrence.jones@ugs.com>
694
695         * commit.c (checkaddfile): Improve error messages for lock_RCS failure.
696         * release.c (release): Improve error message for pclose failure.
697
698         * root.h (struct cvsroot_s): Always declare isremote to simplify
699         other code.  Simplify referencing code.
700         * root.c (new_cvsroot_t): Always initialize isremote.
701         * server.h: Always declare server_active to simplify other code.
702         Simplify referencing code.
703         * server.c: Always define server_active.
704
705 2005-09-01  Derek Price  <derek@ximbiot.com>
706
707         * main.c, wrapper.c: Update links.
708
709 2005-09-01  Derek Price  <derek@ximbiot.com>
710
711         * recurse.c: Update bug report email address.
712
713 2005-08-30  Larry Jones  <lawrence.jones@ugs.com>
714
715         * import.c (import_descend): Lock repository directory during import.
716
717 2005-07-12  Derek Price  <derek@ximbiot.com>
718
719         * buffer.c, buffer.h, client.h, expand_path.c, history.c, myndbm.h,
720         release.c: Add copyright notices.
721
722 2005-07-11  Derek Price  <derek@ximbiot.com>
723
724         * buffer.c, buffer.h, client.h, expand_path.c, history.c, myndbm.h,
725         release.c: Update license notices.
726
727 2005-06-22  Larry Jones  <lawrence.jones@ugs.com>
728
729         * vers_ts (Version_TS): Don't allow command line keyword expansion
730         modes to override binary mode.
731         * sanity.sh (): Tests for the above.
732         (Merged from trunk.)
733
734 2005-06-06  Conrad T. Pino  <Conrad@Pino.com>
735
736         * cvs.h: Reverse patch committed 2005-05-27 by Conrad T. Pino.
737         * run.c: Reverse patch committed 2005-05-27 by Conrad T. Pino.
738
739 2005-06-02  Derek Price  <derek@ximbiot.com>
740
741         * zlib.c (compress_buffer_shutdown_input): Don't attempt to read EOF
742         from the client during shutdown.  It might never be sent.
743         * sanity.sh (abspath2): Test for this.
744
745 2005-05-31  Derek Price  <derek@ximbiot.com>
746         for Alexander Taler <alex@0--0.org>
747
748         * rcscmds.c: Change type of call_diff_argc_allocated from int to
749         size_t, to match the prototype of run_add_arg_p().  This fixes a
750         bus error in OpenBSD 3.6 sparc64.
751
752 2005-05-27  Conrad T. Pino  <Conrad@Pino.com>
753
754         * cvs.h: Replace "run_arg" function with "#define run_arg run_add_arg",
755         add "run_add_arg" prototype, change "piped_child" prototype to be same
756         as feature branch to reflect "(os2,src,windows-NT)/run.c" changes.
757         * run.c: Remove "run_arg" to synchronize with "../windows-NT/run.c".
758         Function "run_add_arg" scope was "static" and is now "extern" scope.
759         Synchronize "piped_child" function arguments with feature branch.
760
761 2005-05-27  Derek Price  <derek@ximbiot.com>
762
763         * client.c (send_arg): Make arg const.
764         (send_option_string): Rename to...
765         (send_options): ...this and accept argc/argv in place of string.
766         * client.h: Update protos to match the changes to client.c.
767         * cvs.h (RCS_exec_rcsdiff, diff_exec): Update protos.
768         (run_add_arg_p, run_arg_free_p): New protos.
769         * diff.c (opts, opts_allocated): Replace with...
770         (diff_argv, diff_argc, diff_arg_allocated): ...these.
771         (add_diff_args): New convenience function.
772         (diff): Use new constructs and APIs.
773         * patch.c (patch_fileproc, RCS_checkin, RCS_delete_revs), rcscmds.c
774         (call_diff_add_arg, call_diff_setup, RCS_merge, RCS_exec_rcsdiff,
775         diff_exec, RCS_output_diff_options), update.c (patch_file): Use new
776         APIs.
777         * run.c (run_add_arg_p, run_arg_free_p): New functions.
778         (run_argc_allocated): Make size_t.
779         (run_setup, run_add_arg): Use new functions.
780         * sanity.sh: Accomodate above changes.
781         (rcslib-diffrgx-3): Slip in test for space splitting.
782
783 2005-05-02  Derek Price  <derek@ximbiot.com>
784
785         Remove unnecessary level of indirection.
786         * lock.c (L_HISTORY_LOCK, L_VAL_TAGS_LOCK): Remove macros.
787         (internal_lock, internal_clear_lock): Accept lock as argument.
788         (history_lock, clear_history_lock, val_tags_lock, clear_val_tags_lock):
789         Replace old macro arg with an actual lock pointer.
790
791 2005-05-02  Derek Price  <derek@ximbiot.com>
792
793         * lock.c (internal_lock, internal_clear_lock): Add protos.
794         (history_lock, val_tags_lock): Return the chartered true/false status.
795
796 2005-05-02  Derek Price  <derek@ximbiot.com>
797
798         * cvs.h (CVSHISTLCK): Rename macro to...
799         (CVSHISTORYLCK): ...this.
800         (CVSVALTAGSLCK): New macro.
801         (val_tags_lock, clear_val_tags_lock): New functions.
802         * lock.c (global_val_tags_lock): New global.
803         (Lock_Cleanup): Clean up after val-tags lock if necessary.
804         (L_HISTORY_LOCK, L_VAL_TAGS_LOCK): New local macros.
805         (internal_lock, internal_clear_lock, val_tags_lock,
806         clear_val_tags_lock): New functions.
807         (history_lock, clear_history_lock): Use new internal functions.
808         * tag.c (is_in_val_tags, add_to_val_tags): New functions using the
809         write-lock for val-tags and factored from...
810         (tag_check_valid): ...this function.
811         * sanity.sh (lockfiles-22): Add val-tags lock test.
812
813 2005-04-28  Derek Price  <derek@ximbiot.com>
814
815         * cvs.h (history_lock, clear_history_lock): New protos.
816         * lock.c (struct lock): Add lockdirname.
817         (global_history_lock): New global.
818         (global_read_lock): Initialize.
819         (lock_name): Handle const args.
820         (lock_simple_remove): Factor out code in favor of clear_lock call.
821         (set_lock): Handle variable lockdirname.
822         (lock_filesdoneproc): Set new lockdirname.
823         (history_lock, clear_history_lock): New functions.
824         (clear_lock): Avoid segfault on missing lock.
825         (Lock_Cleanup): Clean up history locks when necessary.
826         * history.c (history_write): Use new lock.
827         * sanity.sh (lockfiles-20): Test new lock.
828
829 2005-04-28  Derek Price  <derek@ximbiot.com>
830
831         * sanity.sh (lockfiles): Port some locking tests over from 1.12.x.
832
833 2005-04-28  Derek Price  <derek@ximbiot.com>
834
835         * lock.c (clear_lock): Improve comment.
836
837 2005-04-28  Derek Price  <derek@ximbiot.com>
838
839         * lock.c (struct lock): Store lockdir name.
840         (masterlock): Remove global.
841         (remove_lock_files, clear_lock, set_lock): Update to compensate.
842
843 2005-04-20  Derek Price  <derek@ximbiot.com>
844
845         * sanity.sh (rcs5): Minor cosmetic change.
846
847 2005-04-20  Derek Price  <derek@ximbiot.com>
848
849         * sanity.sh (tests): Add rcs4.
850         (rcs5): Add comments.
851
852 2005-04-20  Derek Price  <derek@ximbiot.com>
853
854         * rcs.c (expand_keywords): Avoid buffer overflow.
855         (Original patch from Stewart Brodie <stewart@eh.org>.)
856
857         * sanity.sh (rcs5): New tests for the above.
858
859 2005-03-17  Derek Price  <derek@ximbiot.com>
860
861         * login.c (password_entry_parseline): Avoid using uninitialized
862         variable.
863         * rcs.c (RCS_deltas): Avoid buffer overflow.
864         (RCS_checkout): Avoid using uninitialized loglen.
865         * patch.c (patch_fileproc): Free original pointer, not one that may
866         have been incremented.
867         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
868
869 2005-03-17  Derek Price  <derek@ximbiot.com>
870
871         * commit.c (checkaddfile): Avoid dereferencing a NULL pointer in
872         response to a rare error.
873         * admin.c (admin_fileproc), log.c (log_expand_revlist), mkmodules.c
874         (checkout_file), rcs.c (RCS_getdate, RCS_deltas, RCS_findlock_or_tip,
875         RCS_tag2rev): Avoid dereferencing NULL pointer.
876         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
877
878 2005-03-17  Derek Price  <derek@ximbiot.com>
879
880         * rcs.c (RCS_reparsercsfile): Avoid memory leak.
881         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
882
883 2005-03-17  Derek Price  <derek@ximbiot.com>
884
885         * log.c (log_expand_revlist): Suppress message and not error handling
886         when really_quiet.
887
888 2005-03-17  Derek Price  <derek@ximbiot.com>
889
890         * client.c (call_in_directory): Put function call after var decls.
891
892 2005-03-16  Derek Price  <derek@ximbiot.com>
893
894         * client.c (call_in_directory), commit.c (commit_filesdoneproc), log.c
895         (log_expand_revlist, log_version), logmsg.c (logfile_write), modules
896         (my_module), no_diff.c (No_Difference), parseinfo.c (Parse_Info), rcs.c
897         (RCS_deltas, RCS_checkin, RCS_addbranch, do_locks, do_symbols),
898         rcscmds.c (RCS_merge), root.c (parse_cvsroot, normalize_cvsroot),
899         update.c (merge_file): Verify assumptions via assertions.
900         (Thanks to (probably) incorrect reports from Alen Zukich
901         <alen.zukich@klocwork.com>.)
902
903 2005-03-16  Derek Price  <derek@ximbiot.com>
904
905         * server.c (create_adm_p, serve_entry), tag.c (rtag_proc): Avoid memory
906         leaks.
907         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
908
909 2005-03-15  Mark D. Baushke  <mdb@cvshome.org>
910
911         * history.c (select_hrec): Avoid possible memory leak.
912
913 2005-03-15  Derek Price  <derek@ximbiot.com>
914
915         * patch.c (patch_proc): Avoid memory leak.
916         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
917
918 2005-03-11  Mark D. Baushke  <mdb@cvshome.org>
919
920         * modules.c (my_module): Protect against free (NULL) code path.
921
922 2005-03-11  Derek Price  <derek@ximbiot.com>
923
924         * annotate.c (rannotate_proc), fileattr.c (fileattr_write), rcs.c
925         (RCS_deltas), server.c (check_repository_password), update.c (update):
926         Avoid memory leaks.
927         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
928
929 2005-03-09  Derek Price  <derek@ximbiot.com>
930
931         * add.c (add, add_directory), buffer.c (allocate_buffer_datas),
932         client.c (update_entries), commit.c (checkaddfile), entries.c
933         (Entries_Open), fileattr.c (fileattr_read), ignore.c (ign_add),
934         import.c (import), main.c (main), parseinfo.c (parse_config), rcs.c
935         (RCS_reparsercsfile, RCS_getbranchpoint, RCS_checkout,
936         RCS_delete_revs, apply_rcs_changes): Avoid memory leaks.
937         (Thanks to report from Alen Zukich <alen.zukich@klocwork.com>.)
938
939         * hardlink.c, hardlink.h: Avoid compiling entire contents of these
940         files w/o preserve permissions support.
941
942 2005-03-09  Mark D. Baushke  <mdb@cvshome.org>
943
944         * history.c (history, save_file): Cleanup the API to match the
945         comments.
946
947 2005-02-27  Jim Meyering  <jim@meyering.net>
948
949         * login.c (password_entry_operation): Exit nonzero when
950         failing to close a just-appended-to .cvspass file.
951
952 2005-02-26  Larry Jones  <lawrence.jones@ugs.com>
953
954         * release.c (release): Remove unneeded code.
955
956 2005-02-22 Derek Price <derek@ximbiot.com>
957
958         * edit.c: Load watch settings before setting new ones with
959         `cvs watch on/off'.
960         (Original patch from Jim Hyslop <jhyslop@ieee.org>.)
961
962         * sanity.sh (watch6): New tests for same.
963         (Outline from Jim Hyslop <jhyslop@ieee.org>.)
964
965 2005-02-21  Mark D. Baushke  <mdb@cvshome.org>
966
967         * import.c (import): Avoid using assert with side effects it may
968         be configured away using NDEBUG.
969         (Patch from Frank Hemer <frank@hemer.org>.)
970
971 2005-02-08 Derek Price <derek@ximbiot.com>
972
973         * build_src.com: Build stack.c on VMS.
974         (Suggestion from Piet Schuermans <pschuermans@mac.com>.)
975
976 2005-02-01  Larry Jones  <lawrence.jones@ugs.com>
977
978         * log.c (log_fileproc, log_expand_revlist): Add support for BASE tag.
979         * sanity.sh (log): New tests for above.
980
981 2005-01-31 Derek Price <derek@ximbiot.com>
982
983         * main.c: Update year in copyright notice to match GNU standards.
984         * sanity.sh (version-1): Update to match.
985
986 2005-01-31 Derek Price <derek@ximbiot.com>
987
988         * main.c: Rephrase --version message.
989         * sanity.sh (version-1): Update to match.
990
991 2005-01-31 Derek Price <derek@ximbiot.com>
992
993         * Makefile.am, add.c, admin.c, annotate.c, checkin.c, checkout.c,
994         classify.c, commit.c, create_adm.c, cvs.h, cvsrc.c, diff.c, entries.c,
995         find_names.c, hash.c, hash.h, history.h, import.c, lock.c, log.c,
996         login.c, logmsg.c, main.c, mkmodules.c, modules.c, myndbm.c, no_diff.c,
997         parseinfo.c, patch.c, rcs.c, rcs.h, rcscmds.c, recurse.c, remove.c,
998         repos.c, root.c, root.h, server.h, stack.c, stack.h, status.c, subr.c,
999         tag.c, update.c, vers_ts.c, version.c: Update copyright notices.
1000
1001 2005-01-29 Derek Price <derek@ximbiot.com>
1002
1003         * log.c (log_usage): Add note about using -S with revision info
1004         supression and selection.
1005         (Suggestion from Dan Peterson <dbpete@aol.com>.)
1006
1007 2004-12-19  Larry Jones  <lawrence.jones@ugs.com>
1008
1009         * expand_path.c (expand_path): Rewrite using offsets instead of
1010         pointers to simplify and avoid reallocation bugs.
1011         (Inspired by Jeremy Bopp <jeremy@motive.com>.)
1012
1013 2004-12-09 Derek Price <derek@ximbiot.com>
1014
1015         * sanity.sh (tests): Add modules7.
1016
1017 2004-12-09 Derek Price <derek@ximbiot.com>
1018
1019         * sanity.sh (modules7): New test group.
1020         (Based on a patch from Mark D. Baushke <mdb@cvshome.org>, based on a
1021         report from Richard Verhoeven <Richard_Verhoeven@WestLB.de>.)
1022
1023 2004-11-18  Mark D. Baushke  <mdb@cvshome.org>
1024
1025         * checkout.c (checkout_proc): Passing the repository to
1026         tag_check_valid seems to stop the assertion failure in recurse.c
1027         do_recursion.
1028         * sanity.sh (basic2-21a): Removed.
1029         (basic2-21b): Fixed.
1030
1031 2004-11-17  Mark D. Baushke  <mdb@cvshome.org>
1032
1033         * sanity.sh (basic2-21a): The val-tags file should have
1034         at least 'rtagged-by-head y' in it.
1035         (basic2-21b): New test showing a cvs bug when val-tags
1036         is not properly updated.
1037         (Report from "John Elgin" <John@JCElgin.com>.)
1038
1039 2004-11-17  Mark D. Baushke  <mdb@cvshome.org>
1040
1041         * client.c (handle_m, handle_e): Winsock is returning
1042         SOCK_ERRNO == WSAENOTSOCK for select() problems and not
1043         setting errno. Do not bother with printing an error from a
1044         select() that is not returning an non-zero errno.
1045         (Report from Conrad T. Pino <Conrad@Pino.com>.)
1046
1047 2004-11-10 Derek Price <derek@ximbiot.com>
1048
1049         * sanity.sh: Maintain pass/skip/warn status and output at end.
1050         (usage): Note new functionality of -e.
1051         (warn): New function.
1052         (verify_tmp_empty): Warn instead of failing.  Delete turds if warn()
1053         doesn't exit.
1054
1055 2004-11-10 Derek Price <derek@ximbiot.com>
1056
1057         * sanity.sh (verify_tmp_empty): New function.
1058         (dotest_internal_*): Call verify_tmp_empty as needed.
1059
1060 2004-11-09  Mark D. Baushke  <mdb@cvshome.org>
1061
1062         * sanity.sh: Backport find_tool changes from 1.12.9.1.
1063         (SEARCHPATH): New list of PATH directories to search.
1064         (Which): Use $SEARCHPATH. Support -a switch.
1065         (badtools,set_bad_tool,is_bad_tool): Keep track of tools that do
1066         not work for us.
1067         (version_test): Obtain the version of tools under test if
1068         possible.
1069         (tool_find): Rewrite. API changed to allow a list of
1070         tests to be used against a list of possible command names found on
1071         the SEARCHPATH.
1072         (id_tool_test): Check that 'id -u' and 'id -un' work.
1073         (expr_tooltest1): Check for NextStep 3.3 expr bug.
1074         (expr_tooltest2): Check for SunOS expr multi-line pattern bug.
1075         (expr_create_bar): Create a test file for expr testing.
1076         (expr_tooltest3): Use it and test for big multi-line identity
1077         matches.
1078         (expr_set_ENDANCHOR): Find and set the right value for ENDANCHOR.
1079         (expr_set_DOTSTAR): Find and set the right value for DOTSTAR.
1080         (expr_tooltest_DOTSTAR): Ensure that DOTSTAR works with big
1081         matches.
1082         (tr_tooltest1): Verify that tr handles NUL bytes.
1083         (awk_tooltest1): Verify that awk the BEGIN clause works properly.
1084         (awk_tooltest2): Verify that print %c format item works properly.
1085
1086 2004-11-02  Mark D. Baushke  <mdb@cvshome.org>
1087
1088         * filesubr.c (MAXSIZE): New macro.
1089         (xreadlink): Ensure initial buffer size does not exceed MAXSIZE.
1090         Avoid cast. If readlink fails with buffer size just under MAXSIZE,
1091         try again with MAXSIZE.
1092
1093 2004-11-02  Mark D. Baushke  <mdb@cvshome.org>
1094
1095         * filesubr.c (xreadlink): AIX and HP-UX readlink() returns ERANGE
1096         when there is not enough room in the buffer.
1097
1098 2004-11-01 Derek Price <derek@ximbiot.com>
1099
1100         * sanity.sh (rcslib): Fix typo in path.
1101
1102 2004-11-01 Derek Price <derek@ximbiot.com>
1103
1104         * sanity.sh (rcslib): Test a link to a path longer than 128
1105         characters.
1106
1107 2004-10-29 Derek Price <derek@ximbiot.com>
1108
1109         * filesubr.c (xreadlink): Make sure allocation is tried once at the
1110         maximum buffer size.  Protect against overflow.
1111
1112 2004-10-29  Mark D. Baushke  <mdb@cvshome.org>
1113
1114         * filesubr.c (SIZE_MAX, SSIZE_MAX): Use #include "xsize.h" instead.
1115         (xreadlink): Use xrealloc instead of xmalloc/free.
1116
1117 2004-10-29  Mark D. Baushke  <mdb@cvshome.org>
1118
1119         * filesubr.c (SIZE_MAX, SSIZE_MAX): New constants.
1120         (xreadlink): Deal with symlinks longer than 127 bytes.
1121         (Problem reported as issue 190 by Gottfried Ganssauge
1122         <gotti@cvshome.org>.)
1123
1124 2004-10-28  Mark D. Baushke  <mdb@cvshome.org>
1125
1126         * release.c (release): Allow builds of cvs with --disable-server
1127         --disable-client both used for local installation configuration.
1128         * root.c (Name_Root): Ditto.
1129         * update.c (checkout_file): Ditto.
1130         (Problem reported by Jean Olivier Caron <jecar@mlab.t.u-tokyo.ac.jp>.)
1131
1132 2004-10-27  Mark D. Baushke  <mdb@cvshome.org>
1133
1134         * cvs.h (RCS_FLAGS_USETIME): New flag.
1135         * rcs.c (RCS_checkin): Add citime argument.
1136         * rcs.h (RCS_checkin): Ditto.
1137         * checkin.c (Checkin): Pass new RCS_checkin argument.
1138         * commit.c (remove_file, checkaddfile): Ditto.
1139         * import.c (add_rev): Ditto.
1140
1141         * sanity.sh (tagdate): Delete tagdate-19b as an incorrect test.
1142
1143 2004-10-27  Mark D. Baushke  <mdb@cvshome.org>
1144
1145         * sanity.sh (tagdate): Provide more output.
1146
1147 2004-10-26  Mark D. Baushke  <mdb@cvshome.org>
1148
1149         * commit.c (checkaddfile): Create a dead version for a new file
1150         added to a branch. Fixes FIXCVS for tagdate tests.
1151         * sanity.sh (tagdate): Update to expect correct results.
1152         (death2, branch-after-import, join, ignore-on-branch): Ditto.
1153
1154 2004-10-26 Derek Price <derek@ximbiot.com>
1155
1156         * client.c (connect_to_gserver): Avoid truncating error messages from
1157         the GSSAPI server.
1158         (Report from Dan Peterson <dbpete@aol.com>.)
1159
1160 2004-10-26 Derek Price <derek@ximbiot.com>
1161
1162         * sanity.sh (import-quirks): Test an even branch number.
1163
1164 2004-10-25 Derek Price <derek@ximbiot.com>
1165
1166         * import.c (import): Repair regex for regressions introduced in last
1167         commit.
1168         * sanity.sh (import-quirks): Test a few branch numbers import shouldn't
1169         have a problem with.
1170
1171 2004-10-25 Derek Price <derek@ximbiot.com>
1172
1173         * import.c (import): Anchor and simplify branch verification regex.
1174         * sanity.sh (import-quirks): Test another pattern that should fail.
1175
1176 2004-10-25  Mark D. Baushke  <mdb@cvshome.org>
1177
1178         * sanity.sh (tagdate): Added some additional tests and FIXCVS
1179         comments for dealing properly with a 'cvs add' of a file to
1180         a branch that already exists on the mainline.
1181         (Problem reported by Renny Barrett <rbarrett@curamsoftware.com>.)
1182
1183         * sanity.sh (getrlogdate): New shell function.
1184         (tagdate-{13,14,16}): Use it to avoid 'sleep 60' by using
1185         the exact 1.1.4.1 timestamp for tagdate-14 and tagdate-16.
1186
1187 2004-10-22  Mark D. Baushke  <mdb@cvshome.org>
1188
1189         * sanity.sh (tagdate): Fix typo.
1190
1191 2004-10-19 Derek Price <derek@ximbiot.com>
1192
1193         * add.c (add): Avoid attempting to resurrect a dead rev 1.1.
1194         * sanity.sh (resurrection): Add test for the above.
1195         (Report from Dan Peterson <dbpete@aol.com>.)
1196
1197 2004-10-14 Derek Price <derek@ximbiot.com>
1198
1199         * import.c (import): Verify branch specifications more thoroughly.
1200         * sanity.sh (importb): Adapt to new error message.
1201         (import-quirks): New test.
1202
1203 2004-10-04 Derek Price <derek@ximbiot.com>
1204
1205         * cvs.h (CVSROOT_DFLT): Undef rather than defining to NULL.
1206         * main.c (main): Untangle parsing of CVSROOT, eliminating several
1207         variables in the process.  Simplify xmalloc/sprintf with asnprintf.
1208
1209 2004-10-01  Mark D. Baushke  <mdb@cvshome.org>
1210
1211         * main.c (main): Initialize CVSroot before it is used.
1212         (Report and patch by Martin Neitzel <neitzel@sco.gaertner.de>.)
1213         * sanity.sh (status): Test it.
1214
1215 2004-09-25  Mark D. Baushke  <mdb@cvshome.org>
1216
1217         * sanity.sh (parseroot2): Correct two test names.  Restore CVSROOT.
1218
1219         * sanity.sh (parseroot2): Expand dokeep inline.
1220
1221 2004-09-24  Derek Price <derek@ximbiot.com>
1222
1223         * sanity.sh (tests): Add parseroot2.
1224
1225 2004-09-24  Derek Price <derek@ximbiot.com>
1226
1227         * sanity.sh (parseroot2): New test for root parsing consistency.
1228         (Original patch from Alexander Taler <dissent@cvshome.org>.)
1229
1230         * cvs.h (Name_Root, free_cvsroot_t, parse_cvsroot, local_cvsroot,
1231         Create_Root, root_allow_add, root_allow_free, root_allow_ok): Move
1232         these protos to...
1233         * root.h: ...here.
1234         * client.c (arg_should_not_be_sent_to_server), recurse.c
1235         (start_recusrion, do_recursion): Use new Name_Root API.
1236         * main.c (current_root): Remove global.
1237         (set_root_directory): Set current_parsed_root directly.
1238         (main): Use new Name_Root API.  Restore deletion of root directories
1239         list.
1240         * root.c (Name_Root): Return a parsed cvsroot_t rather than a string.
1241
1242 2004-09-23  Derek Price <derek@ximbiot.com>
1243
1244         * sanity.sh (depends_on_ssh, sshstdio): Don't use skip() to skip
1245         remote-only tests.
1246
1247 2004-09-23  Mark D. Baushke  <mdb@cvshome.org>
1248
1249         * server.c (cvs_output, cvs_output_binary): fflush (stderr)
1250         here to avoid problems with 'cvs status 2>&1'.
1251         (Report by Frank Hemer <frank@hemer.org>.)
1252
1253 2004-09-23  Derek Price <derek@ximbiot.com>
1254
1255         * sanity.sh (crerepos, sshstdio): Minor modifications to make use of
1256         the new depends_on_?sh API.
1257
1258 2004-09-23  Derek Price <derek@ximbiot.com>
1259
1260         * sanity.sh: Accept new -e option to interpret non-fatal calls to skip
1261         as errors.
1262         (skip, depends_on_rsh, depends_on_ssh): New functions.
1263
1264 2004-09-12  Mark D. Baushke  <mdb@cvshome.org>
1265
1266         * rcs.c (RCS_checkout): Allow noexec to do checkouts when
1267         server_active is true.
1268         * sanity.sh (join7): Test above change (fixes a FIXCVS).
1269
1270 2004-09-08  Mark D. Baushke  <mdb@cvshome.org>
1271
1272         * sanity.sh (join7): Fix if-then-else conditional.
1273
1274         * server.c (server_updated): Deal with cvs -n update -jt1 -jt2
1275         "protocol error: uncounted data discarded" problem.
1276         * sanity.sh (join7): New test for this case.
1277
1278 2004-08-24  Derek Price <derek@ximbiot.com>
1279
1280         * recurse.c (start_recursion): Don't shorten //. to / (use //).
1281
1282 2004-08-24  Derek Price <derek@ximbiot.com>
1283
1284         * recurse.c (start_recursion): Strip trailing CWD indirections on
1285         repository.
1286         * sanity.sh (rstar-toplevel): Update to account for new behavior.
1287         (Report from Dan Peterson <dbpete@aol.com>.)
1288
1289 2004-08-24  Mark D. Baushke  <mdb@cvshome.org>
1290
1291         * recurse.c (do_recursion): Correct test for calling
1292         server_pause_check to occur when locktype != CVS_LOCK_WRITE.
1293         (Patch suggested by Ian Lance Taylor <ian@wasabisystems.com>
1294         in bug#198).
1295
1296 2004-08-24  Derek Price <derek@ximbiot.com>
1297
1298         * rcs.c (translate_symtag): Prevent infinite loop.
1299         * tag.c (tag_check_valid): Check tag syntax before searching for tags.
1300         * sanity.sh (tag-space): Some tests for the above.
1301         (Report from Dan Peterson <dbpete@aol.com>.)
1302
1303 2004-08-24  Mark D. Baushke  <mdb@cvshome.org>
1304
1305         * ignore.c (ignore_directory): Include the terminating NUL
1306         character in the directory name comparison to avoid matching
1307         substrings of directories by accident.
1308         (Report and suggested fix from James E Wilson
1309         <wilson@specifixinc.com>.)
1310         * sanity.sh (modules4): Add some more tests testing the above
1311         change.
1312
1313 2004-08-17  Mark D. Baushke  <mdb@cvshome.org>
1314
1315         * sanity.sh (sshstdio): Fix comment typo plus gratuitous
1316         reformatting.
1317
1318         * client.c (handle_m): Workaround to deal with stdio getting put
1319         into non-blocking via redirection of stderr and interaction with
1320         ssh on some platforms. On those boxes, stdio can put stdout
1321         unexpectedly into non-blocking mode which may lead to fwrite() or
1322         fflush() failing with EAGAIN, but cvs not checking for the error.
1323         (Patch suggested by Frank Hemer <frank@hemer.org>.)
1324
1325         * client.c (handle_e): Similar fix for stderr.
1326         * sanity.sh (sshstdio): New test for non-blocking stdio via ssh.
1327
1328 2004-08-11  Derek Price <derek@ximbiot.com>
1329
1330         * sanity.sh (basicc): Work around a problem in Linux 2.2 & Bash 2.05b
1331         which prevents a `cd ..' from a deleted directory from working.
1332         (Original patch from Matthew Ogilvie <mmo9317bd@mailcan.com>.)
1333
1334 2004-06-22  Derek Price  <derek@ximbiot.com>
1335
1336         * wrapper.c: Add explicit "void" return type to "wrap_clean_fmt_str"
1337         definition.
1338         (Patch from Conrad T. Pino <Conrad@Pino.com>.)
1339
1340 2004-06-09  Derek Price  <derek@ximbiot.com>
1341
1342         * commit.c, filesubr.c, history.c, server.c, wrapper.c: Various
1343         security fixes.
1344         (Original patch from Stefan Essler <s.esser@e-matters.de> & Sebastian
1345         Krahmer <krahmer@suse.de>.)
1346
1347         * cvs.h: Include xsize.h.
1348
1349 2004-06-09  Derek Price  <derek@ximbiot.com>
1350
1351         * server.c (serve_entry, serve_is_modified, serve_unchanged): Protect
1352         against malformed entries.
1353         * sanity.sh (server): Tests for same.
1354
1355 2004-06-07  Larry Jones  <lawrence.jones@ugsplm.com>
1356
1357         * sanity.sh (basica): More tests for string-based revision inc.
1358
1359 2004-06-04  Larry Jones  <lawrence.jones@ugsplm.com>
1360
1361         * subr.c (increment_revnum): Rewrite ala RCS to work directly on
1362         the string rather than converting to int to avoid overflow.
1363         * sanity.sh (basica): New tests for above, update others to match.
1364
1365 2004-05-19  Derek Price  <derek@ximbiot.com>
1366
1367         * server.c (serve_unchanged, serve_is_modified): Overwrite existing
1368         data in timefields.  Fixes CAN-2004-0396.
1369
1370 2004-05-14  Derek Price  <derek@ximbiot.com>
1371
1372         * subr.c (file_has_conflict), vers_ts.c (time_stamp_server): Don't
1373         require '=' to be the only character here, as this is potentially
1374         destabilizing.
1375
1376 2004-05-14  Mark D. Baushke  <mdb@cvshome.org>
1377
1378         * sanity.sh (trailingslashes): During cleanup remove topfile,v to
1379         avoid problems in later tests (editor-1).
1380
1381 2004-05-13  Derek Price  <derek@ximbiot.com>
1382
1383         * sanity.sh (trailingslashes): Note TODO item #205 in the comment.
1384
1385 2004-05-13  Derek Price  <derek@ximbiot.com>
1386
1387         * sanity.sh (trailingslashes): New tests to expose a bug in CVS when
1388         paths are specified with trailing slashes.  This relates to TODO #205.
1389
1390 2004-05-12  Derek Price  <derek@ximbiot.com>
1391
1392         * subr.c (file_has_conflict), vers_ts.c (time_stamp_server): Only
1393         special case "=" when it is the only character in a timestamp field.
1394         Gratuitous reformatting.
1395         * vers_ts.c (time_stamp_server): Check for NULL in a consistent manner.
1396         Gratuitous reformatting.
1397
1398 2004-05-10  Derek Price  <derek@ximbiot.com>
1399
1400         * sanity.sh (top-level): Rename to...
1401         (rstar-toplevel): ...this for clarity.
1402
1403 2004-05-10  Derek Price  <derek@ximbiot.com>
1404
1405         * sanity.sh (dirs2-10ar): Remove unnecessary empty argument.
1406
1407 2004-05-02  Larry Jones  <lawrence.jones@ugsplm.com>
1408
1409         * log.c (log_expand_revlist): Suppress warnings if really_quiet.
1410
1411 2004-05-07  Derek Price  <derek@ximbiot.com>
1412
1413         * sanity.sh (basica): Remove unnecessary empty arguments.
1414
1415 2004-05-07  Derek Price  <derek@ximbiot.com>
1416
1417         * cvs.h (fopen_case): Remove obsolescent prototype.
1418
1419 2004-05-05  Derek Price  <derek@ximbiot.com>
1420
1421         * sanity.sh: Wait a second and retry if cvs-serv* directories are
1422         discovered to avoid race conditions on some systems.
1423         (Patch from Pavel Roskin <proski@gnu.org>.)
1424
1425 2004-05-05  Derek Price  <derek@ximbiot.com>
1426
1427         * commit.c: Some gratuitous reformatting.
1428
1429 2004-05-04  Derek Price  <derek@ximbiot.com>
1430
1431         * update.c: Some gratuitous reformatting.
1432
1433 2004-05-04  Derek Price  <derek@ximbiot.com>
1434
1435         * add.c (add): Remove obsolete FIXME comment.
1436         (*): Some gratuitous reformatting.
1437
1438 2004-04-26  Derek Price  <derek@ximbiot.com>
1439
1440         * client.c (start_rsh_server): Don't rely on GNU argument processing
1441         capabilities in the RSH command.
1442         (Report from Mark Andrews <Mark_Andrews@isc.org>.)
1443
1444 2004-04-19  Derek Price  <derek@ximbiot.com>
1445
1446         * ignore.c: Gratuitous reformatting.
1447
1448 2004-04-11  Derek Price  <derek@ximbiot.com>
1449
1450         * client.c (call_in_directory): Check paths the server sends us to make
1451         sure they are within a sandbox the user requested be updated.
1452         (is_valid_client_path, path_list_prefixed): New functions.
1453
1454 2004-04-11  Derek Price  <derek@ximbiot.com>
1455
1456         * modules.c (do_module): Don't allow up-level references in paths to
1457         step out of the repository.
1458         * sanity.sh (multiroot3): Update tests and add a few more.
1459
1460 2004-04-07  Derek Price  <derek@ximbiot.com>
1461
1462         * sanity.sh (parseroot): Replace hard path with $HOME.
1463
1464 2004-04-07  Derek Price  <derek@ximbiot.com>
1465
1466         * sanity.sh (parseroot): s/oberon/$username/.
1467
1468 2004-04-07  Derek Price  <derek@ximbiot.com>
1469
1470         * client.c (start_tcp_server): Use xstrdup rather than
1471         xmalloc(strlen)/strcpy.
1472
1473 2004-04-07  Derek Price  <derek@ximbiot.com>
1474
1475         * root.c (parse_cvsroot): Ignore method options.
1476         * sanity.sh (parseroot): Verify that method options are ignored.
1477
1478 2004-04-06  Derek Price  <derek@ximbiot.com>
1479
1480         * root.h (cvsroot_t): Move username, password, hostname, port inside
1481         CLIENT_SUPPORT ifdefs.
1482         * buffer.c, root.c, server.c: Add #ifdefs as necessary so that this
1483         will compile without client support and the root.h change.  Some
1484         gratuitous restyling.
1485
1486 2004-04-06  Derek Price  <derek@ximbiot.com>
1487
1488         * log.c, tag.c: Gratuitous restyling.
1489
1490 2004-04-04  Derek Price  <derek@ximbiot.com>
1491
1492         * filesubr.c (isabsolute): Move...
1493         * subr.c: ...here and use new ISABSOLUTE macro.
1494
1495 2004-04-04  Derek Price  <derek@ximbiot.com>
1496
1497         * client.c (send_file_names): Cast out an unneeded const to avoid a
1498         warning.
1499
1500 2004-04-03  Larry Jones  <lawrence.jones@ugsplm.com>
1501
1502         * client.c (send_file_names): Remove unused variables.
1503
1504 2004-04-02  Derek Price  <derek@ximbiot.com>
1505
1506         * sanity.sh (client): Honor $keep.
1507
1508 2004-04-02  Derek Price  <derek@ximbiot.com>
1509
1510         * log.c, patch.c, rcs.c: Gratuitous restyling.
1511
1512 2004-04-02  Derek Price  <derek@ximbiot.com>
1513
1514         * import.c (import): Use ISDIRSEP rather than testing paths against `/'
1515         directly.  Some gratuitos reformatting.
1516
1517 2004-04-02  Derek Price  <derek@ximbiot.com>
1518
1519         * sanity.sh: Note the effectiveness of `tail -f check.log' in providing
1520         running status.
1521
1522 2004-04-02  Derek Price  <derek@ximbiot.com>
1523
1524         * client.c (send_file_names): Move code which calculates and sends
1525         Max-dotdot...
1526         (send_max_dotdot): ...to this new function.
1527         (send_files): Call send_max_dotdot.
1528         * sanity.sh (files-14): Expect .. in paths to work now.
1529         (status): Add a few new tests using `..'.
1530
1531 2004-04-01  Derek Price  <derek@ximbiot.com>
1532
1533         * lock.c: Gratuitous restyling.
1534
1535 2004-04-01  Derek Price  <derek@ximbiot.com>
1536
1537         * cvs.h, server.c: Gratuitous restyling.
1538         * run.c (run_exec): Ditto, plus call cvs_flush{out,err}() instead of
1539         flushing stderr & stdout directly.
1540
1541 2004-03-29  Derek Price  <derek@ximbiot.com>
1542
1543         * server.c: Gratuitous restyling.
1544
1545 2004-03-29  Derek Price  <derek@ximbiot.com>
1546
1547         * login.c: Gratuitous restyling.
1548
1549 2004-03-22  Derek Price  <derek@ximbiot.com>
1550
1551         * sanity.sh (toplevel): Remove FIXME type comment and unneeded
1552         Emtptydir removal.
1553
1554 2004-03-22  Derek Price  <derek@ximbiot.com>
1555
1556         * update.c: Some minor style cleanup.
1557
1558 2004-03-22  Derek Price  <derek@ximbiot.com>
1559
1560         * sanity.sh (top-level): Don't match most of the assertion since this
1561         string is often system dependent.
1562         (Thanks to Larry Jones <lawrence.jones@ugsplm.com>.)
1563
1564 2004-03-22  Derek Price  <derek@ximbiot.com>
1565
1566         * sanity.sh (top-level): Don't match the assertion's line number.
1567
1568 2004-03-22  Derek Price  <derek@ximbiot.com>
1569
1570         * sanity.sh (top-level): New test to confirm assertion failure.
1571
1572 2004-03-22  Derek Price  <derek@ximbiot.com>
1573
1574         * sanity.sh: Only verify argument to -f when -f was passed.  Check for
1575         $TMPDIR/cvsXXXXXX temp files after each test.
1576
1577 2004-03-22  Derek Price  <derek@ximbiot.com>
1578
1579         * sanity.sh: Verify that the argument to -f is really a test.
1580
1581 2004-03-20  Larry Jones  <lawrence.jones@ugsplm.com>
1582
1583         * cvs.h: Change command_name to cvs_command_name to avoid conflict
1584         on HP-UX (incredibly, it declares a global command_name in prot.h,
1585         which is included from shadow.h, which we include in server.c).
1586         Change all references.
1587
1588         * subr.c (previous_rev): Fix == vs = typo.
1589
1590         * buffer.h: Add prototype for buf_empty.
1591
1592         * add.c (add): Remove unused variable.
1593
1594 2004-03-20  Derek Price  <derek@ximbiot.com>
1595
1596         * add.c (add, add_directory, build_entry), admin.c (admin_dirproc),
1597         checkin.c (Checkin), checkout.c (safe_location, build_dirs_and_chdir),
1598         client.c (add_prune_candidate, send_repository, send_a_repository,
1599         send_to_server, start_rsh_server, send_arg, send_modified,
1600         send_ignproc, send_filesdone_proc, send_dirent_proc,
1601         send_dirleave_proc, client_notify), commit.c (check_direntproc,
1602         check_filesdoneproc, checkaddfile, commit_direntproc,
1603         commit_dirleaveproc, lock_RCS, precommit_proc, find_data,
1604         find_dirent_proc, find_ignproc, find_filesdoneproc), create_adm.c
1605         (Create_Admin), cvsrc.c (read_cvsrc), diff.c (diff_dirproc,
1606         diff_filesdoneproc, diff_dirleaveproc), edit.c (onoff_filesdoneproc,
1607         mark_up_to_date, editor_set, notify_proc_args, notify_proc, notify_do,
1608         notify_check), entries.c (Scratch_Entry, Register, WriteTag),
1609         expand_path.c (expand_variable, expand_path), fileattr.c
1610         (fileattr_startdir), filesubr.c (mkdir_if_needed, xchmod,
1611         last_component), history.c (history_write), ignore.c (ignore_directory,
1612         ignore_files), import.c (get_comment, add_rcs_file, expand_at_signs),xi
1613         lock.c (lock_filesdoneproc), log.c (log_dirproc), logmsg.c
1614         (logfile_write, rcsinfo_proc, update_logfile_proc, editinfo_proc,
1615         verifymsg_proc, do_editor, do_verify, Update_Logfile), main.c (main
1616         program_name, program_path, command_name), parseinfo.c (Parse_Info),
1617         patch.c (patch_dirproc), rcs.c (RCS_getdatebranch, rcs_lockfilename,
1618         RCS_parse, RCS_setattic, RCS_getversion, RCS_gettag, RCS_getbranch,
1619         RCS_getdate, RCS_datecmp, RCS_getrevtime, RCS_setexpand,
1620         expand_keywords, RCS_checkout, RCS_addbranch, RCS_checkin, RCS_lock,
1621         RCS_cmp_file, RCS_deltas, rcs_lockfilename, make_file_label),
1622         rcscmds.c (RCS_output_diff_options, call_diff, RCS_merge,
1623         RCS_exec_rcsdiff, diff_exec), recurse.c (start_recursion, do_recursion,
1624         do_file_proc), remove.c (remove_dirproc), repos.c (Name_Repository,
1625         Short_Repository), root.c (Name_Root, Create_Root), run.c
1626         (piped_child), server.c (output_dir, server_register,
1627         server_checked_in, server_update_entries, server_copy_file,
1628         server_set_entstat, server_clear_entstat, server_set_sticky,
1629         server_template, cvs_output_tagged), status.c (status_dirproc), subr.c
1630         (make_message_rcslegal), tag.c (pretag_proc, tag_dirproc,
1631         check_fileproc, check_filesdoneproc, tag_fileproc, val_direntproc),
1632         update.c (update_dirent_proc, update_dirleave_proc, update_ignproc,
1633         update_filesdone_proc, isemptydir), vers_ts.c (time_stamp_server,
1634         time_stamp), watch.c (watch_modify_watchers, addremove_filesdoneproc),
1635         zlib.c (read_and_gzip): Make most string args const, mainly in the
1636         interest of preserving repository & updatedir but including some
1637         collateral damage.  Update a few functions to comply with new
1638         requirement.  Some style fixes.
1639         * client.h, cvs.h, edit.h, fileattr.h, rcs.h, server.h, update.h,
1640         watch.h: Update prototypes to match.
1641
1642 2004-03-20  Derek Price  <derek@ximbiot.com>
1643
1644         * sanity.sh (conflicts2): s/cvs/$testcvs/.
1645
1646 2004-03-20  Derek Price  <derek@ximbiot.com>
1647
1648         * add.c (add): Correct longstanding resurrection bugs.  Remove FIXME
1649         comment to this effect.  Set mode and Entries timestamps of resurrected
1650         files correctly.
1651         * sanity.sh (basica, binfiles, conflicts2, recase, resurrection,
1652         update-p): Update tests to compensate.  Remove FIXCVS comments.
1653
1654 2004-03-19  Mark D. Baushke  <mdb@cvshome.org>
1655
1656         * server.c (gserver_authenticate_connection): Handle large
1657         GSSAPI packets dynamically.
1658         (Bug report from Douglas Engert <DEEngert@anl.gov>)
1659
1660 2004-03-19  Derek Price  <derek@ximbiot.com>
1661
1662         * cvs.h (pathname_levels, previous_rev): Remove leading underscore from
1663         prototype arguments to avoid potential conflicts with implementations.
1664
1665 2004-03-18  Derek Price  <derek@ximbiot.com>
1666
1667         * cvs.h (pathname_levels): Make string argument const.
1668         * subr.c (pathname_levels): Simplify function.
1669
1670 2004-03-17  Derek Price  <derek@ximbiot.com>
1671
1672         * subr.c (pathname_levels): Get it right this time.
1673
1674 2004-03-17  Derek Price  <derek@ximbiot.com>
1675
1676         * subr.c (pathname_levels): Remove incorrect assertion and just
1677         return 0 when pathname is NULL.
1678
1679 2004-03-17  Derek Price  <derek@ximbiot.com>
1680
1681         * subr.c (pathname_levels): Use ISDIRSEP() instead of strchr('/')
1682         and remove FIXME comment to that effect.
1683
1684 2004-03-16  Derek Price  <derek@ximbiot.com>
1685
1686         * main.c (main): Update the --version Copyright (c) string to
1687         include 2004.
1688
1689 2004-03-15  Mark D. Baushke  <mdb@cvshome.org>
1690
1691         * release.c (release): Add missing xmalloc of update_cmd.
1692
1693 2004-03-15  Derek Price  <derek@ximbiot.com>
1694
1695         * release.c (release): Enable authentication and encryption for a child
1696         update process when necessary.
1697         (Original patch from Dan Russell <russelld@aol.net> via Hal Mahaffey
1698         <HMahaffey@aol.com>.)
1699
1700 2004-03-14  Derek Price  <derek@ximbiot.com>
1701
1702         * add.c (add): Only call server_updated() when we actual have a new
1703         resurrected file for the client.
1704
1705 2004-03-14  Derek Price  <derek@ximbiot.com>
1706
1707         * cvs.h (previous_rev, write_letter): New prototypes.
1708         (struct file_info): Move to before the write_letter prototype.
1709         * add.c (add): Allow resurrection of files which used to exist on a
1710         branch.
1711         * subr.c (previous_rev): New function.
1712         * update.c: Consolidate like pragmas.
1713          (write_letter): Remove prototype.  Remove static declaration.
1714         * sanity.sh (resurrection): New tests.
1715
1716 2004-03-14  Derek Price  <derek@ximbiot.com>
1717
1718         * commit.c (remove_file): Print the actual previous revision instead of
1719         a branch number.
1720         * sanity.sh: Update to match.
1721
1722 2004-03-14  Derek Price  <derek@ximbiot.com>
1723
1724         * rcs.c (RCS_cmp_file): Print the actual name of the file we failed to
1725         open in the error message.
1726
1727 2004-03-14  Derek Price  <derek@ximbiot.com>
1728
1729         * diff.c (diff_fileproc): Allow diffing of new files against arbitrary
1730         revisions instead of assuming that there is no RCS archive file.
1731
1732 2004-03-03  Derek Price  <derek@ximbiot.com>
1733
1734         * import.c (import): Check that the module name specified by the user
1735         does not contain `CVS' as a directory name.
1736         * ignore.c (ign_add): Never cease ignoring "CVS" - it is a reserved
1737         name.
1738         (Original patch from Dan Peterson <dbpete@aol.com>.)
1739
1740         * sanity.sh (import-CVS): New tests for the above.
1741
1742 2004-02-29  Larry Jones  <lawrence.jones@ugsplm.com>
1743
1744         * import.c (expand_at_signs): Change type of len to size_t.
1745         * subr.c (resolve_symlink): Move declaration of newname inside
1746         #ifdef, clean up coding style.
1747         * zlib.c (gunzip_and_write): Fix up potential overlow problems.
1748         (read_and_gzip): Add explicit casts to placate paranoid compilers.
1749
1750 2004-02-28  Larry Jones  <lawrence.jones@ugsplm.com>
1751
1752         * sanity.sh (join6): New tests for previous fix.
1753
1754         * update.c (join_file): One more fix to avoid dereferencing NULL.
1755         (Reported by Steve McIntyre <steve@einval.com>.)
1756         * sanity.sh (join6): New tests for above.
1757
1758 2004-02-25  Larry Jones  <lawrence.jones@ugsplm.com>
1759
1760         * update.c (join_file): Fix optimization to avoid dereferencing NULL.
1761         (Reported by Steve McIntyre <steve@einval.com>.)
1762
1763 2004-02-25  Derek Price  <derek@ximbiot.com>
1764
1765         * buffer.c (buf_empty): New function.
1766         * server.c (server): Check for unread data in buffer before closing.
1767
1768 2004-02-25  Derek Price  <derek@ximbiot.com>
1769
1770         * release.c (release): Restore the initial directory before and after
1771         calling various sections of code that expect it to prevent corruption
1772         of CVS/Entries files on release of a subdir and tell unedit() what to
1773         release.
1774         * sanity.sh: Add test case for release.c fix.
1775         (Original patch from Matthew Ogilvie  <mmo9317bd@mailcan.com>.)
1776
1777         * client.c (last_entries): Move global variable...
1778         (call_in_directory): ...here (now a local variable).  Remove test that
1779         always evaluates to true.
1780         (last_dir_name): Remove unused global variable.
1781
1782 2004-02-24  Larry Jones  <lawrence.jones@ugsplm.com>
1783
1784         * filesubr.c (xresolvepath): Fix crash in error case.
1785         (Reported by Reinhard Zierke <zierke@informatik.uni-hamburg.de>.)
1786
1787 2004-02-24  Derek Price  <derek@ximbiot.com>
1788
1789         * sanity.sh (crerepos): Minor stylistic changes to previous change.
1790
1791 2004-02-24  Derek Price  <derek@ximbiot.com>
1792
1793         * sanity.sh (crerepos): Fix it so that it ignores the user's
1794         .cvsrc file (.cvsrc "checkout -r" used to cause the "rm -r 1"
1795         command to print warnings and wait for input).
1796         (Original patch from Matthew Ogilvie  <mmo9317bd@mailcan.com>.)
1797
1798         * sanity.sh (reposmv, parseroot, devcom3, binwrap3):
1799         s/_SAVED\>/_save/ for consistency.
1800
1801 2004-02-20  Derek Price  <derek@ximbiot.com>
1802
1803         * subr.c (set_nonblock_fd): Move back to...
1804         * server.c: ...here.
1805         * cvs.h: Remove protos for the above two functions.
1806         * buffer.c (stdio_buffer_shutdown): Remove unexessary and possibly
1807         dangerous check for unread data on a pipe with a nonblock read.
1808
1809 2004-02-20  Derek Price  <derek@ximbiot.com>
1810
1811         * ChangeLog, commit.c, filesubr.c, rcs.c, root.c, sanity.sh, subr.c,
1812         update.c: Remove VIM editor commands.
1813
1814 2004-02-20  Larry Jones  <lawrence.jones@ugsplm.com>
1815
1816         * hash.h (struct node): Change data from char * to void *, change
1817         all callers.
1818
1819 2004-02-19  Larry Jones  <lawrence.jones@ugsplm.com>
1820
1821         * login.c (password_entry_operation): Initialize line.
1822
1823 2004-02-19  Derek Price  <derek@ximbiot.com>
1824
1825         * sanity.sh (crerepos): Correct comment.
1826
1827 2004-02-19  Derek Price  <derek@ximbiot.com>
1828
1829         * sanity.sh (crerepos): Don't create directories named `tmp' in
1830         $TESTDIR to avoid conflicts with the default value of $TMPDIR.
1831
1832 2004-02-19  Derek Price  <derek@ximbiot.com>
1833
1834         * sanity.sh (directory_cmp): Use $TESTDIR for temporary files, like the
1835         dotest functions.
1836
1837 2004-02-19  Derek Price  <derek@ximbiot.com>
1838
1839         * sanity.sh: No longer allow user override of $tmp.  Set $TMPDIR to a
1840         directory under $TESTDIR, as for $HOME, but still allowing for user
1841         override.  Check for cvs-serv* directories under $TMPDIR rather than
1842         $tmp at the end of the script.
1843
1844 2004-02-17  Derek Price  <derek@ximbiot.com>
1845
1846         * sanity.sh: Check for $PWD != $TESTDIR after each set of tests rather
1847         than once at the end.  Check that there are no cvs-serv* directories in
1848         $tmp after each set of remote tests.
1849
1850 2004-02-17  Derek Price  <derek@ximbiot.com>
1851
1852         * sanity.sh: Don't check for an empty $TESTDIR - if $TESTDIR was empty
1853         then the preceding call to mkdir would have failed anyhow.
1854
1855 2004-02-17  Larry Jones  <lawrence.jones@ugsplm.com>
1856
1857         * log.c (rlog_proc): Fix (harmless) uninitialized variable.
1858
1859         * sanity.sh (basicc): Add tests pointing out defective handling
1860         of the Entries file.
1861
1862 2004-02-17  Derek Price  <derek@ximbiot.com>
1863
1864         * checkout.c (build_dir_and_chdir): Expand header comment.
1865
1866 2004-02-15  Mark D. Baushke  <mdb@cvshome.org>
1867
1868         * annotate.c (rannotate_proc): Plug a memory leak.
1869         * log.c (log_fileproc): Ditto.
1870         * tag.c (tag_fileproc): Ditto.
1871         * update.c (checkout_file): Ditto.
1872         * server.c (server_updated): Do not buf_free (filebuf) here.
1873
1874 2004-02-13  Larry Jones  <lawrence.jones@ugsplm.com>
1875
1876         * rcs.c (locate_rcs): Remove unused variables.
1877
1878 2004-02-12  Mark D. Baushke  <mdb@cvshome.org>
1879
1880         * lock.c (readers_exist): Plug a memory leak.
1881
1882 2004-02-12  Mark D. Baushke  <mdb@cvshome.org>
1883
1884         * server.c (do_cvs_command): Plug a memory leak.
1885
1886 2004-02-12  Derek Price  <derek@ximbiot.com>
1887
1888         * modules.c: Reformat comment and line to fit in 80 chars.
1889
1890 2004-02-12  Larry Jones  <lawrence.jones@ugsplm.com>
1891
1892         * modules.c (_do_module): Rename to my_module to avoid reserved name.
1893         * stack.c (_push, _pop, _unshift, _shift): Rename to do_*.
1894
1895 2004-02-11  Larry Jones  <lawrence.jones@ugsplm.com>
1896
1897         * root.c (parse_cvsroot): Set hostname in fork mode for error messages.
1898         * buffer.c (stdio_buffer_shutdown): Undo previous change.
1899
1900 2004-02-11  Mark D. Baushke  <mdb@cvshome.org>
1901
1902         * buffer.c (buf_free): Plug a memory leak.
1903         * commit.c (checkaddfile): Ditto.
1904
1905         * server.c (fd_buffer_shutdown): Avoid a double free().
1906
1907         * parseinfo.c (parse_config): Fix comments.
1908
1909 2004-02-11  Derek Price  <derek@ximbiot.com>
1910
1911         * buffer.c (stdio_buffer_shutdown): Add logic to avoid attempting to
1912         print current_parsed_root->hostname when using the fork method.
1913
1914 2004-02-11  Derek Price  <derek@ximbiot.com>
1915
1916         * server.c (do_cvs_command): Simplify stream & pipe closing.
1917         (Suggestion from Eric Siegerman <erics@telepres.com>.)
1918
1919         * cvs.h, subr.c (set_block_fd): Remove this unnecessary function.
1920
1921 2004-02-11  Derek Price  <derek@ximbiot.com>
1922
1923         * checkout.c (checkout_proc): s/is_absolute/isabsolute/.
1924
1925 2004-02-11  Derek Price  <derek@ximbiot.com>
1926
1927         * checkout.c (checkout_proc): Remove unneeded variable and enclosing
1928         block.
1929         * modules.c (_do_modules): Minor whitespace change.
1930
1931 2004-02-10  Derek Price  <derek@ximbiot.com>
1932
1933         * server.c (do_cvs_command): s/FIXCVS/FIXME/ in comment.
1934         (set_block_fd, set_nonblock_fd): Move to...
1935         * subr.c: ...here.
1936         * cvs.h: Add protos for the above two functions.
1937         * buffer.c (stdio_buffer_shutdown): Replace fgetc() which checked for
1938         unread data on a pipe with a nonblock read.
1939
1940 2004-02-10  Derek Price  <derek@ximbiot.com>
1941
1942         * server.c (do_cvs_command): Have the server child close all the pipes
1943         but the flow control pipe and wait on an EOF on the flow control pipe
1944         from the parent when done to avoid a race condition that could
1945         otherwise generate a SIGPIPE for the parent before the SIGCHILD when
1946         the other pipes were so full after a child exited that the parent
1947         attempted to write a stop byte to the flow control pipe.
1948         (Original report from <jesse_off@stchome.com>.)
1949
1950 2004-02-10  Derek Price  <derek@ximbiot.com>
1951
1952         * buffer.c (stdio_buffer_shutdown): Add a helpful comment.
1953
1954 2004-02-09  Derek Price  <derek@ximbiot.com>
1955
1956         * sanity.sh (co-d): Update comments and tests to reflect the current
1957         state of my side of my discussion with Larry Jones on how these
1958         commands should behave.
1959
1960 2004-02-09  Derek Price  <derek@ximbiot.com>
1961
1962         * sanity.sh (emptydir): Add two new tests for how modules -d behaves
1963         when a directory already exists in the user's workspace.
1964         (emptydir): Add --keep functionality.
1965
1966 2004-02-09  Derek Price  <derek@ximbiot.com>
1967
1968         * sanity.sh (co-d): New test to prove `co -d' failure case.
1969
1970 2004-02-05  Derek Price  <derek@ximbiot.com>
1971
1972         * sanity.sh (recase): Fix typo that creeped in somehow between my last
1973         test run and my commit.
1974
1975 2004-02-04  Derek Price  <derek@ximbiot.com>
1976
1977         * stack.c (shift, shift_string): Make sure these functions return their
1978         result.
1979
1980 2004-02-04  Derek Price  <derek@ximbiot.com>
1981
1982         * modules.c (do_modules): Move content to and make this function a
1983         wrapper for...
1984         (_do_modules): ...this new function which can watch for infinite loops
1985         in alias modules.
1986         * stack.c (_push, _pop, _unshift, _shift, push_string, pop_string,
1987         unshift_string, shift_string): New
1988         functions.
1989         * stack.h (push_string, pop_string, unshift_string, shift_string: New
1990         prototypes.
1991         * sanity.sh (modules): Add check for nested alias loops.
1992
1993 2004-02-04  Derek Price  <derek@ximbiot.com>
1994
1995         * sanity.sh (recase): Update test names and comments for clarity and
1996         consistency.
1997
1998 2004-02-03  Derek Price  <derek@ximbiot.com>
1999
2000         Preserve the case of checked out directories in a path as well as file
2001         names for client communication with the server.
2002
2003         * Makefile.am (cvs_SOURCES): Add stack.c & stack.h.
2004         * stack.c, stack.h: New files.
2005         * cvs.h: Include stack.h.
2006         * client.c (send_file_names): Preserve the case of directories in a
2007         path as well as file names for communication with the server.
2008
2009         * Makefile.in: Regenerated.
2010
2011 2004-02-02  Derek Price  <derek@ximbiot.com>
2012
2013         * sanity.sh (join-rm): New test for issue #104 & #159.
2014
2015 2004-02-02  Derek Price  <derek@ximbiot.com>
2016
2017         Continue removal from server of handling of case insensitive clients.
2018
2019         * cvs.h: Remove extern declaration of ign_case.
2020         * ignore.c (ign_case): Remove declaration.
2021         (ign_name): Remove support for ign_case.
2022         * server.c (serve_case): Ditto.
2023         (requests): No longer support the "Case" request.
2024         * rcs.c (locate_rcs): Remove reference to GLOBAL in function header
2025         comment.
2026
2027 2004-02-02  Derek Price  <derek@ximbiot.com>
2028
2029         * add.c, client.c, cvs.h, rcs.c, subr.c: Remove server support for case
2030         insensitivity.
2031
2032 2004-01-25  Derek Price  <derek@ximbiot.com>
2033
2034         * server.c (kserver_authenticate_connection): Fix call to
2035         switch_to_user().
2036         (Original patch from Alexey Mahotkin <alexm@hsys.msk.ru>.)
2037
2038 2004-01-22  Derek Price  <derek@ximbiot.com>
2039
2040         * modules.c (do_module): Strip trailing slashes before checking for
2041         infinite alias loops.
2042         * sanity.sh (modules): Tests for response to infinite alias loops.
2043
2044 2004-01-17  Mark D. Baushke  <mdb@cvshome.org>
2045
2046         * logmsg.c (do_verify): Eliminate double-free bug.
2047         (Original patch from Gerald Combs.)
2048
2049 2004-01-07  Larry Jones  <lawrence.jones@ugsplm.com>
2050
2051         * checkout.c (safe_location): Remove unused variable(s).
2052         * lock.c (lock_tree_for_write): Ditto.
2053         * rcs.c (RCS_checkin): Ditto.
2054         * subr.c (compare_revnums): Ditto.
2055         * tag.c (tag_check_valid): Ditto.
2056         * mkmodules.c (init): Initialize err and return it rather than 0.
2057         * server.c (do_cvs_command): Only define and set max_command_fd if
2058         we're actually going to use it.
2059
2060 2004-01-01  Larry Jones  <lawrence.jones@ugsplm.com>
2061
2062         * zlib.c (read_and_gzip, gunzip_and_write): Fix potential buffer
2063         overruns, use names for magic numbers.
2064         (Original patch from Jeff Downs <heydowns@borg.com>.)
2065
2066 2003-12-18  Derek Price  <derek@ximbiot.com>
2067
2068         * server.c (switch_to_user): SysLog attempts to root from pserver.
2069
2070 2003-12-18  Derek Price  <derek@ximbiot.com>
2071
2072         * server.c (switch_to_user): Don't allow CVS to run as root in pserver
2073         mode.
2074         (Original patch from Wichert Akkerman via Bradley M Kuhn
2075          <bkuhn@fsf.org>.)
2076         * sanity.sh (pserver): Check for bad root error message.
2077
2078 2003-12-17  Larry Jones  <lawrence.jones@eds.com>
2079
2080         * run.c (close_on_exec): fcntl is not documented to return 0 for
2081         success (and QNX doesn't), only -1 for error.
2082         (Patch from George Refseth <george.refseth@arxi.no>.)
2083
2084 2003-12-09  Mark D. Baushke  <mdb@cvshome.org>
2085
2086         * server.c (template_proc): Fix broken Template protocol code.
2087         Must call send buf_send_counted() for Template files to avoid
2088         "Protocol error: uncounted data discarded" messages in some
2089         circumstances.
2090         (Problem reported by "Jim.Hyslop" <Jim.Hyslop@Leitch.com>.)
2091
2092 2003-12-03  Derek Price  <derek@ximbiot.com>
2093
2094         * sanity.sh (recase-8csss): rename to...
2095         (recase-8sscs): ...this to match the convention.
2096
2097 2003-12-03  Derek Price  <derek@ximbiot.com>
2098
2099         * sanity.sh (recase): Add some clarifying comments.
2100
2101 2003-12-03  Larry Jones  <lawrence.jones@eds.com>
2102
2103         * expand_path.c (expand_variable): Expand ${CVSROOT} to just the
2104         directory like it's supposed to be.
2105         (Reported by Michael S. Tsirkin <cvs1@misha.eml.cc>.)
2106
2107 2003-11-26  Derek Price  <derek@ximbiot.com>
2108
2109         * sanity.sh (modules3-2): Simplify syntax that may have given Cygwin
2110         intermittent conniptions.
2111
2112 2003-11-25  Mark D. Baushke  <mdb@cvshome.org>
2113
2114         * sanity.sh (recase-17sscs): Use ${CVSROOT_DIRNAME} in pattern.
2115
2116 2003-11-25  Derek Price  <derek@ximbiot.com>
2117
2118         * sanity.sh (release): Perform forgotten cleanup.
2119
2120 2003-11-25  Derek Price  <derek@ximbiot.com>
2121
2122         * commit.c (commit_fileproc): Reword comment.
2123
2124 2003-11-25  Derek Price  <derek@ximbiot.com>
2125
2126         * add.c (add): Disable ign_case for the purposes of adding a file so
2127         that recasing the name of a file is possible from a case insensitive
2128         client.
2129         * sanity.sh (recase): New tests for behavior which varies when the
2130         client and/or the server are case insensitive.
2131
2132 2003-11-25  Derek Price  <derek@ximbiot.com>
2133
2134         * sanity.sh (devcom3-9ar): Ignore the stderr output since it varies
2135         considerably between platforms.
2136
2137 2003-11-24  Larry Jones  <lawrence.jones@eds.com>
2138
2139         * diff.c (diff_file_nodiff): use_rev1 does *not* imply that diff_rev1
2140         is not null, diff_date1 could be set instead (ditto for use_rev2).
2141         (Reported by <jnelson-cvsbug@jamponi.net>.)
2142
2143 2003-11-24  Derek Price  <derek@ximbiot.com>
2144
2145         * sanity.sh (modes3): Skip modes3-5 entirely under Cygwin since
2146         permisions are broken there.  This change removes most of the earlier
2147         Cygwin differentiation in this test ($cygwin_hack & $cygwin_hack2) in
2148         favor of skipping the test entirely.
2149
2150 2003-11-21  Larry Jones  <lawrence.jones@eds.com>
2151
2152         * hash.c (printnode, printlist): Cast %p arguments to void * as
2153         required by the C standard.
2154
2155 2003-11-21  Derek Price  <derek@ximbiot.com>
2156
2157         * sanity.sh: Add `-h <hostname>' option to enable testing across a
2158         :ext: connection to another host.  Warn when `-h' is specified without
2159         $TESTDIR.  Leave $TESTDIR intact when it looks absolute since it may
2160         contain symlinks.  Allow $CVS_SERVER to be overridden via the
2161         environment for `-h'.  Default $CVS_RSH to `rsh'.
2162         (*): Use $CVS_RSH to perform certain commands on the remote host (esp.
2163         `ln -s' and `chmod') when `-h' is specified to work around
2164         incompatibilities with CygWin & Samba.  Add a few other minor
2165         workarounds for Cygwin bugs.
2166
2167         (newroot): New function.
2168         (*): Use newroot when appropriate.
2169
2170 2003-11-19  Larry Jones  <lawrence.jones@eds.com>
2171
2172         * rcs.c (RCS_getrevtime): Add error checking; cleanup.
2173
2174 2003-11-18  Derek Price  <derek@ximbiot.com>
2175
2176         * modules.c (do_module): Reject absolute paths.
2177         (Report and suggested fix from Tony Hoyle <tmh@nodomain.org>.)
2178
2179         * sanity.sh (abspath2): Check for the above.
2180         (spacefiles): Remove tests that expect absolute paths to files in the
2181         top level repository directory to work.
2182         (tests): Add abspath2.
2183
2184 2003-11-13  Derek Price  <derek@ximbiot.com>
2185
2186         * rcs.c (RCS_delete_revs): It's `&&', not `and'.
2187
2188 2003-11-13  Derek Price  <derek@ximbiot.com>
2189
2190         * sanity.sh: Create the empty log to make it easier to tail immediately
2191         after the script is started.
2192
2193 2003-11-13  Derek Price  <derek@ximbiot.com>
2194
2195         * sanity.sh (exit_help): Correct help to specify `-H' and not `-h' as
2196         the help option.
2197
2198 2003-11-13  Derek Price  <derek@ximbiot.com>
2199
2200         * rcs.c (RCS_delete_revs): Don't use the WOE32 kludge which refuses to
2201         delete revisions from bvinary files on Cygwin.  I'm not sure what the
2202         kludge was trying to avoid, but commenting it out causes the test suite
2203         to pass.
2204
2205 2003-11-10  Derek Price  <derek@ximbiot.com>
2206
2207         * commit.c (check_fileproc, find_fileproc): Don't leak memory.
2208
2209 2003-11-10  Derek Price  <derek@ximbiot.com>
2210
2211         * commit.c (find_fileproc, check_fileproc):  Refuse to remove files
2212         when the file exists in the sandbox.  This used to cause data loss.
2213         (Report from Andreas Reifschneider <andyreif@studcs.uni-sb.de>.)
2214
2215         * sanity.sh (rmadd3): Update to match.  Expand comments.
2216
2217 2003-11-10  Derek Price  <derek@ximbiot.com>
2218
2219         * sanity.sh (rmadd3): Test the behavior of commit after the
2220         add/replace.
2221         (Report from Andreas Reifschneider <andyreif@studcs.uni-sb.de>.)
2222
2223 2003-11-10  Mark D. Baushke  <mdb@cvshome.org>
2224
2225         * Backport symlink bugfix from cvs 1.12.1.1 feature release
2226         as written by Derek Price <derek@ximbiot.com>. (This fixes
2227         the Issue 142 bug.)
2228
2229         * recurse.c (start_recursion): Accept new repository argument so
2230         that the working directory may be tracked by do_recursion without
2231         using xgetwd(), which returned a value different from the one the
2232         user requested when symlinks were in use. Pass repository_in to
2233         do_recursion() as part of the recursion frame.
2234
2235         * cvs.h (xreadlink): #ifdef HAVE_READLINK proto.
2236         (xresolvepath): New proto.
2237         (start_recursion): Add repository to proto.
2238
2239         * checkout.c (safe_location): Add more complete header comment.
2240         Add trace.  Use new xresolvepath() function.  Always return true
2241         in client mode since checking our destination path against the
2242         CVSROOT path is usually meaningless in client/server mode.
2243         (checkout_proc): Pass repository to do_update() for later use with
2244         start_recursion().
2245
2246         * admin.c (admin): Use new definition of start_recursion().
2247         * annotate.c (rannotate_proc): Ditto.
2248         * client.c (send_files): Ditto.
2249         * commit.c (commit): Ditto.
2250         * diff.c (diff): Ditto.
2251         * edit.c (watch_onoff, send_notifications, edit, unedit, editors):
2252         Ditto.
2253         * lock.c (lock_tree_for_write): Ditto.
2254         * log.c (rlog_proc): Ditto.
2255         * patch.c (patch_proc): Ditto.
2256         * remove.c (cvsremove): Ditto.
2257         * tag.c (rtag_proc): Ditto.
2258         * update.c (do_update): Ditto.
2259         * watch.c (watch_addremove, watchers): Ditto.
2260
2261         * patch.c (patch_proc): Call tag_check_valid with repository
2262         instead of NULL.
2263
2264         * filesubr.c (xreadlink): #ifdef HAVE_READLINK this function.  Add
2265         more complete header comment.
2266         (xresolvepath): New function.
2267
2268         * recurse.c (do_recursion): Call Lock_Cleanup() only repository
2269         was set.
2270
2271         * update.c (do_update): Accept new repository argument so that the
2272         working directory may be tracked.
2273         (update): Pass NULL repository to do_update().
2274         * update.c (do_update): Add repository to proto.
2275
2276         * checkout.c (checkout_proc): Use new definition of do_update().
2277         * update.c (update): Ditto.
2278
2279         * sanity.sh: Add new -l option to test symlinked roots.
2280         (checkout_repository-1): Add server error messages about absolute
2281         paths since the client now skips destination validity checks.
2282         (check_repository-2): Test renamed to checkout_repository-2.
2283         (checkout_repository-2): Process client error messages about
2284         CVSROOT files being in the way since the client skips destination
2285         validity checks since it should be rare that a client is running
2286         in client/server mode on the server and CVS has no current way to
2287         check if it is running on the server.
2288         (check_repository-3): Test renamed to checkout_repository-3.
2289         (dottedroot): New test to check that a CVSROOT with a "." in the
2290         name will work.
2291
2292 2003-11-10  Derek Price  <derek@ximbiot.com>
2293
2294         * sanity.sh (rmadd3): Add whitespace after end of test for readability.
2295
2296 2003-11-10  Derek Price  <derek@ximbiot.com>
2297
2298         * sanity.sh (rmadd3): New tests that confirms that CVS refuses to
2299         delete a file it thinks was already removed.
2300         (Report and test from Andreas Reifschneider
2301         <andyreif@studcs.uni-sb.de>.)
2302
2303 2003-11-03  Derek Price  <derek@ximbiot.com>
2304
2305         * sanity.sh (server): Test that the global `-l' option is ignored
2306         nonfatally.
2307
2308 2003-11-01  Larry Jones  <lawrence.jones@eds.com>
2309
2310         * ignore.c (ignore_files): Use CVS_LSTAT() instead of lstat().
2311         * filesubr.c (xcmp): Make sure S_ISLNK exists before calling it.
2312         (Reported by Paul Edwards <fight.subjugation@gmail.com>.)
2313
2314 2003-10-31  Derek Price  <derek@ximbiot.com>
2315
2316         * sanity.sh (checkout_repository): Name tests consistently.
2317
2318 2003-10-31  Derek Price  <derek@ximbiot.com>
2319
2320         * sanity.sh: s/${TESTDIR}/cvsroot/${CVSROOT_DIRNAME}/.
2321
2322 2003-10-28  Derek Price  <derek@ximbiot.com>
2323
2324         * sanity.sh (devcom): s/cvs/$PROG/.
2325
2326 2003-10-28  Derek Price  <derek@ximbiot.com>
2327
2328         * sanity.sh (devcom): Renumber tests and use dotest function.
2329
2330 2003-10-28  Derek Price  <derek@ximbiot.com>
2331
2332         * sever.h: Add the standard copyright notice.
2333
2334 2003-10-28  Derek Price  <derek@ximbiot.com>
2335
2336         * lock.c: Remove some suggestions which have already been implemented
2337         or which have become obsolete from the header comment.
2338
2339 2003-10-26  Derek Price  <derek@ximbiot.com>
2340
2341         * sanity.sh (join6): Fix a few typos in the last test and remove a
2342         misplaced test.
2343
2344 2003-10-25  Mark D. Baushke  <mdb@cvshome.org>
2345
2346         * sanity.sh (parseroot): Perform this test in a subdirectory.
2347         It should avoid problems on case-insensitive systems where
2348         CVSROOT and cvsroot are the same directory (eg, MacOS X).
2349
2350 2003-10-24  Derek Price  <derek@ximbiot.com>
2351
2352         * update.c (join_file): Restore the optimization Mark recently removed,
2353         but fix it.  Move one other optimization up since it needs to be
2354         checked for first.  Add bew status messages like merge_file produces
2355         when the requested diff has already been applied to the destination.
2356         Expand header comment.
2357         * sanity.sh (join6): Add tests for the new error messages.
2358         (import-113, join-admin-2, diffmerge1): Fix collateral damage.
2359
2360 2003-10-23  Mark D. Baushke  <mdb@cvshome.org>
2361
2362         * update.c (join_file): Do the -jrev1 -jrev2 merge even when
2363         the file is already at rev2.
2364         * sanity.sh (join6): New testcase for above.
2365         (Suggested by Paul Edwards, from somewhere in Australia.)
2366         (import): Fix collateral damage.
2367
2368 2003-10-23  Derek Price  <derek@ximbiot.com>
2369
2370         * sanity.sh (fail): Refer the user to the `TESTS' and `check.log' files
2371         on failure.
2372
2373 2003-10-19  Mark D. Baushke  <mdb@cvshome.org>
2374
2375         * sanity.sh (admin-31): Fix more typos.
2376
2377 2003-10-18  Mark D. Baushke  <mdb@cvshome.org>
2378
2379         * sanity.sh (admin): Fix a typo.
2380
2381         * admin.c (admin_fileproc): Restore the ':' character in the
2382         -mtag:message admin argument even if the tag does not exist so
2383         that other files with the tag will be found. Also, be more
2384         paranoid that a symbolic tag actually points to a version that
2385         exists.
2386         (Reported by Rodolfo Schulz de Lima <rodolfo@rodsoft.org>.)
2387         * sanity.sh (admin): Test these changes.
2388
2389 2003-10-17  Mark D. Baushke  <mdb@cvshome.org>
2390
2391         * admin.c (admin_fileproc): Force tag match on admin
2392         -mversion:message rather than altering the wrong log message.
2393         (Patch from "Rodolfo Schulz de Lima" <rodsoft@uol.com.br>.)
2394         * sanity.sh (admin): Test case for it.
2395
2396 2003-10-15  Larry Jones  <lawrence.jones@eds.com>
2397
2398         * commit.c (commit_fileproc, finaladd): Don't call fixaddfile()
2399         if the RCS file didn't get created at all.
2400         (Reported by David Wood <David.Wood@thestreet.com>.)
2401
2402 2003-10-14  Derek Price  <derek@ximbiot.com>
2403
2404         Port to pedantic POSIX 1003.1-2001 hosts, such as Debian GNU/Linux
2405         testing with _POSIX2_VERSION=200112 in the environment.
2406
2407         * sanity.sh: Use 'sed 1q', not 'head -1'.
2408         (Patch from Paul Eggert <eggert@twinsun.com>.)
2409
2410 2003-10-10  Derek Price  <derek@ximbiot.com>
2411
2412         * lock.c (set_lock): Clarify comment.
2413
2414 2003-10-08  Derek Price  <derek@ximbiot.com>
2415
2416         * Makefile.am (cvs_SOURCES): Add history.h.
2417         * history.c: Include history.h.  Add the `P' record types to more
2418         comments. s/ALL_REC_TYPES/ALL_HISTORY_REC_TYPES/.
2419         (usage): Reference ALL_HISTORY_REC_TYPES rather than using a separate
2420         string literal.
2421         (report_hrecs): Handle `P' record type.
2422         (ALL_REC_TYPES): Rename and move...
2423         * history.h (ALL_HISTORY_REC_TYPES): ...here.
2424         * mkmodules.c: Include history.h.
2425         (config_contents): Update contents of and references to LogHistory
2426         records to use ALL_HISTORY_REC_TYPES.
2427         * sanity.sh (basic2-64): Update to include history records of type `P'.
2428
2429         * Makefile.in: Regenerated.
2430
2431 2003-10-08  Derek Price  <derek@ximbiot.com>
2432
2433         * update.c (patch_file): Correct spelling and punctuation in comment.
2434         Update some lines to fit in 80 characters.
2435
2436 2003-10-08  Larry Jones  <lawrence.jones@eds.com>
2437
2438         * history.c (history): Don't conflate -e with -x since the client's
2439         idea of what -e means may not match the server's.
2440         (Reported by Frank Hemer <frank@hemer.org>.)
2441
2442 2003-10-07  Larry Jones  <lawrence.jones@eds.com>
2443
2444         * sanity.sh: Use dotest_fail instead of dotest_status for diff tests
2445         since CVS only returns success/fail rather than 0/1/2 like diff does.
2446
2447 2003-10-07  Derek Price  <derek@ximbiot.com>
2448
2449         Fix a client/server bug introduced via the data loss fix of 2003-03-17.
2450         Basically, the server was reporting ambiguous filename requests when it
2451         should have been trusting the user to type the intended case or using
2452         the case the client preserved in CVS/Entries before it tried to look
2453         anything up in case insensitive mode.
2454
2455         * rcs.c (locate_rcs): Use the filename exactly as cased before
2456         investigating a case insensitive lookup, per the client/server protocol
2457         specification.  Expand comments.
2458         * subr.c (locate_file_in_dir): This function only needs to locate files
2459         case insensitively.  Expand comments.
2460         * cvs.h (locate_file_in_dir): Only prototype when servers which need to
2461         handle case insensitivity are being compiled.
2462
2463 2003-10-07  Derek Price  <derek@ximbiot.com>
2464
2465         * rcs.c (locate_rcs): Declare static.  Move to an earlier location in
2466         file to avoid prototyping.
2467         * rcs.h (locate_rcs): Remove proto.
2468
2469 2003-10-03  Derek Price  <derek@ximbiot.com>
2470
2471         * server.c (serve_global_option): Warn that -l is being ignored rather
2472         than exiting fatally due to backwards compatibility complaints from
2473         administrators.
2474
2475 2003-09-29  Derek Price  <derek@ximbiot.com>
2476
2477         * rcs.c (make_file_label): Make a failure to stat a file a fatal error
2478         since it signals that a later read will also fail.
2479
2480 2003-09-26  Derek Price  <derek@ximbiot.com>
2481
2482         * diff.c (diff): Add a FIXME re spaces in diff arguments.
2483
2484 2003-09-25  Mark D. Baushke  <mdb@cvshome.org>
2485
2486         * rcs.c (make_file_label): Do not return an uninitialized label.
2487         (Reported by "Todd C. Miller" <Todd.Miller@courtesan.com>)
2488
2489 2003-09-12  Derek Price  <derek@ximbiot.com>
2490
2491         * sanity.sh (mkmodules): Correct comments.
2492
2493 2003-09-12  Derek Price  <derek@ximbiot.com>
2494
2495         * mkmodules.c (mkmodules): Do not pass a string which came from the
2496         checkoutlist file directly to error as a format string since we don't
2497         want to trust any user with access to checkoutlist with creating printf
2498         format strings.  I already claimed I did this in the NEWS file.
2499         (Thanks to Larry Jones for spotting my mistake.)
2500         * sanity.sh (mkmodules): Test for the above.
2501
2502 2003-09-12  Derek Price  <derek@ximbiot.com>
2503
2504         * mkmodules.c (checkoutlist_contents): Document the optional portions
2505         of this file format more accurately.
2506         (mkmodules): Ditto, in comments.  Fix bug that always failed to ignore
2507         whitespace before error messages.
2508         * sanity.sh (mkmodules-temp-file-removal): Rename to...
2509         (mkmodules): ...this and add a test of the checkoutlist error message.
2510         Add cleanup step to restore checkoutlist.
2511
2512 2003-08-27  Larry Jones  <lawrence.jones@eds.com>
2513
2514         * history.c: 'P' is a valid record type and has been for a long time.
2515         Add it to the comments, usage message, and, most important,
2516         ALL_REC_TYPES so it gets recorded by default.
2517         * server.c (do_cvs_command): Set global command_name to the real
2518         command name rather than leaving it set to "server".
2519         * sanity.sh: Update to match.
2520         (Reported by Dmitry Ryzhkov <rdim_outside@softhome.net>.)
2521
2522 2003-08-13  Larry Jones  <lawrence.jones@eds.com>
2523
2524         * server.c (server_cleanup): Don't shutdown buf_from_net if it's
2525         null.
2526         (Reported by Scott Mitchell <scott@fishballoon.org>.)
2527
2528 2003-08-01  Derek Price  <derek@ximbiot.com>
2529
2530         * sanity.sh (join5): Use $PROG consistently and escape a `.'.
2531
2532 2003-08-01  Derek Price  <derek@ximbiot.com>
2533
2534         * sanity.sh (join5): Use `[a-z]*' as opposed to `update'.
2535
2536 2003-07-31  Derek Price  <derek@ximbiot.com>
2537
2538         * add.c (add_directory): Restore a malloc I shouldn't have altered on
2539         the stable branch.
2540
2541 2003-07-31  Derek Price  <derek@ximbiot.com>
2542
2543         * rcscmds.c (RCS_merge): Pass `--' before the filename arguments to
2544         diff so that filenames starting with `-' can be merged.
2545         * sanity.sh (join5): New test for same.
2546
2547 2003-07-31  Derek Price  <derek@ximbiot.com>
2548
2549         * add.c (add_directory): Don't print status information in really_quiet
2550         mode.
2551
2552 2003-07-29  Derek Price  <derek@ximbiot.com>
2553
2554         * commit.c (checkaddfile): Simplify the logic here, using assumptions
2555         already made later in the function to remove calls to locate_rcs and
2556         some conditionals.  Use same assumptions to remove some variables.
2557
2558 2003-07-29  Derek Price  <derek@ximbiot.com>
2559
2560         * login.c: Remove GETPASS & HAVE_GETPASSPHRASE cruft in favor of always
2561         using the GNULIB getpass since the system getpass was removed from the
2562         POSIX.2 specification.
2563
2564 2003-07-28  Derek Price  <derek@ximbiot.com>
2565
2566         * subr.c (strip_trailiing_newlines): Use size_t rather than int to
2567         count string length.
2568         (Suggestion from Paul Edwards, who provides a broken return email
2569         address in Tonga.  I believe he is actually from Australia.)
2570
2571 2003-07-28  Derek Price  <derek@ximbiot.com>
2572
2573         * checkout.c (checkout): Remove out-of-date comment about Checkin.prog
2574         and Update.prog.
2575
2576 2003-07-25  Derek Price  <derek@ximbiot.com>
2577
2578         * rcs.c (RCS_parsercsfile): Declare rcsfile argument as const.
2579         * rcs.h (RCS_parsercsfile): Update prototype to match.
2580         * commit.c (fixaddfile): Accept a single path to an rcs file as an
2581         argument rather than trying to look it up again when it is not
2582         necessary.
2583
2584 2003-07-25  Derek Price  <derek@ximbiot.com>
2585
2586         * commit.c (finaladd): But don't free variables we no longer allocate.
2587
2588 2003-07-25  Derek Price  <derek@ximbiot.com>
2589
2590         * checkin.c (Checkin): The rcs argument is unecessary since we know
2591         that the parsed RCS data always exists as part of finfo by the time
2592         this function gets called.
2593         * commit.c (commit_fileproc, finaladd):  Use new Checkin() API.
2594         * cvs.h (Checkin): Update prototype.
2595
2596 2003-07-25  Derek Price  <derek@ximbiot.com>
2597
2598         * subr.c (strip_trailing_newlines): Check len b4 str[len] to avoid
2599         exceeding the array bounds when the string length == 0.
2600         (Report from John Tytgat <JoTy@esko-graphics.com>.)
2601
2602 2003-07-25  Derek Price  <derek@ximbiot.com>
2603
2604         * subr.c (strip_trailing_newlines): Generalize this function to watch
2605         len so that it cannot walk past the beginning of the string passed in.
2606         (Report from John Tytgat <JoTy@esko-graphics.com>.)
2607
2608 2003-07-25  Derek Price  <derek@ximbiot.com>
2609
2610         * subr.c (strip_trailing_newlines): Leave the K&R function decl on this
2611         branch.
2612
2613 2003-07-25  Derek Price  <derek@ximbiot.com>
2614
2615         * cvs.h (strip_trailing_newlines): Update prototype.
2616         * subr.c (strip_trailing_newlines): Return true when newlines are
2617         removed.
2618         * server.c (pserver_authenticate_connection): Don't give a DOS attack a
2619         chance to authenticate accidentally because I like to be paranoid.
2620         * sanity.sh (pserver): New test for same.
2621
2622 2003-07-20  Derek Price  <derek@ximbiot.com>
2623
2624         * wrapper.c: Remove mention of obsolete -f and -t wrapper options from
2625         a comment.
2626
2627 2003-07-12  Larry Jones  <lawrence.jones@eds.com>
2628
2629         * sanity.sh (diffnl): New tests for diff on files with no newline
2630         at end.
2631         (Patch from Andrew Moise <chops@demiurgestudios.com>.)
2632
2633 2003-07-09  Larry Jones  <lawrence.jones@eds.com>
2634
2635         * add.c (add): Update "re-adding" message to have quotes around
2636         the file name like all the other similar messages.
2637         * sanity.sh: Update to match.
2638
2639         * update.c (join_file): Handle locally removed but not yet committed
2640         files.
2641         (Reported by Larry Lords <LordsLL@ldschurch.org>.)
2642         * sanity.sh (join, join4): New tests for above.
2643
2644 2003-06-28  Larry Jones  <lawrence.jones@eds.com>
2645
2646         * commit.c (fixaddfile): Bail out if locate_rcs() fails.  Make
2647         parameters const.
2648
2649         * add.c (add): Fix -Wall complaints.
2650         * diff.c (diff_file_nodiff): Ditto.
2651         * filesubr.c (cvs_casecmp): Ditto.
2652         * patch.c (patch_fileproc): Ditto.
2653         * rcs.c (RCS_cmp_file): Ditto.
2654         * root.c (parse_cvsroot): Ditto.
2655         * subr.c (locate_file_in_dir): Ditto.
2656         * cvs.h (cvs_casecmp, locate_file_in_dir): Update prototypes.
2657
2658 2003-06-27  Larry Jones  <lawrence.jones@eds.com>
2659
2660         * lock.c (readers_exist): Use LockDir rather than always looking
2661         in the repository.
2662         (Original patch from Robert Ambalu <Robert.Ambalu@gs.com>.)
2663         Remove vestigial lock promotion code.
2664
2665 2003-06-26  Larry Jones  <lawrence.jones@eds.com>
2666
2667         * hash.c (sortlist): Avoid crash when list is null.
2668
2669 2003-06-23  Derek Price  <derek@ximbiot.com>
2670
2671         * patch.c (patch_fileproc): Output revision number of the original
2672         revision in the removed case.
2673         (Idea from Paul Edwards <kerravon@w3.to>.)
2674
2675         * sanity.sh (rdiff-add-remove-nodiff): Rename to...
2676         (rdiff-short): ...this.  Test for the above changes.  Add some tests
2677         for when rev2 defaults to the trunk.  Expand comments.
2678
2679 2003-06-23  Derek Price  <derek@ximbiot.com>
2680
2681         * add.c (add): Fix xmalloc's strlen() of wrong variable.
2682         * checkout.c (safe_location): leak: reused where_location without free.
2683         * log.c (rlog_proc): leak: free where before exit.
2684         * logmsg.c (do_verify): leak: free verifymsg_script before exit.
2685         (Original patch from Kenneth Lorber <keni@his.com>.)
2686
2687 2003-06-20  Derek Price  <derek@ximbiot.com>
2688
2689         * client.c: Remove silly comment.
2690         (Patch from Alexey Mahotkin  <alexm@hsys.msk.ru>.)
2691
2692 2003-06-13  Derek Price  <derek@ximbiot.com>
2693
2694         * subr.c (file_has_conflict): Fix comment.
2695         (Patch from Paul Edwards <kerravon@w3.to>.)
2696
2697 2003-06-13  Derek Price  <derek@ximbiot.com>
2698
2699         * subr.c (xrealloc): Trivial comment fix.
2700         (Patch from Kenneth Lorber <keni@his.com>.)
2701
2702 2003-06-13  Derek Price  <derek@ximbiot.com>
2703
2704         * diff.c (diff_fileproc): Fix memory leak.
2705         (Patch from Kenneth Lorber <keni@his.com>.)
2706
2707 2003-06-12  Derek Price  <derek@ximbiot.com>
2708
2709         * root.c (parse_cvsroot, local_cvsroot): Parse trailing '/'s off the
2710         end of cvsroots.  Make arguments const.
2711         * cvs.h: Update prototypes to match.
2712         (Idea from Miles Zarathustra <shiva@aranyaka.org>.)
2713
2714 2003-06-11  Larry Jones  <lawrence.jones@eds.com>
2715
2716         * sanity.sh: Change warning messages to note that defective tools
2717         can result in defective results, both pass and fail.  Also change
2718         "which" to "that" for errant grammar pedants.
2719
2720 2003-06-09  Derek Price  <derek@ximbiot.com>
2721
2722         * rcs.c (RCS_delete_revs): Reference WOE32 rather than WIN32 in
2723         accordance with the GNU convention to avoid implying that we consider
2724         the Microsoft Windows Operating Environment any sort of "win".
2725
2726 2003-06-09  Derek Price  <derek@ximbiot.com>
2727
2728         * filesubr.c (cvs_temp_file): Tidy a comment.
2729
2730 2003-06-09  Derek Price  <derek@ximbiot.com>
2731
2732         * patch.c (patch_fileproc): Don't assume the content of files is
2733         different just because the revision number is different.
2734         * sanity.sh (rdiff-add-remove-nodiff): New tests for the above.
2735         (Report & original patches from Paul Edwards <kerravon@w3.to>.)
2736
2737 2003-06-04  Derek Price  <derek@ximbiot.com>
2738
2739         * cvs.h (locate_file_in_dir): New proto.
2740         (locate_rcs): Move proto...
2741         * rcs.h: ...here.
2742         * filesubr.c (locate_rcs): Move function...
2743         * rcs.c: ...here for Windows.
2744         * filesubr.c (locate_file_in_dir): Move function...
2745         * subr.c: ...here for Windows.
2746
2747 2003-06-02  Derek Price  <derek@ximbiot.com>
2748
2749         * diff.c (diff_file_nodiff): Don't assume that because two specified
2750         revision numbers are different, the contents are different.
2751         (Original report & patch from Paul Edwards <kerravon@w3.to>.)
2752
2753         * diff.c (diff_file_nodiff): Pass through rev1_cache to be filled in
2754         by RCS_cmp_file when it needs to check out revision 1 into a file.  Add
2755         some more informative error messages.  Cleanup for efficiency &
2756         readability.
2757         (diff_fileproc): Pass the cached revision to RCS_exec_diff().  Clean up
2758         the error exit code.  Remove code killed by the changes to
2759         diff_file_nodiff().
2760         * rcscmds.c (RCS_exec_rcsdiff): Accept and use new cached revision text
2761         if present.
2762         * rcs.c (RCS_cmp_file): Accept a second revision number and cache the
2763         first revision if it needs to be checked out.
2764
2765         * checkin.c (Checkin): Use new RCS_cmp_file().
2766         * import.c (update_rcs_file): Ditto.
2767         * no_diff.c (No_Difference): Ditto.
2768
2769         * cvs.h (RCS_exec_rcsdiff): New proto to match above changes.
2770         * rcs.h (RCS_cmp_file): Ditto.
2771
2772         * sanity.sh: Minor corrections to handle the above changes.
2773
2774 2003-05-29  Derek Price  <derek@ximbiot.com>
2775
2776         * client.c (start_server): Don't send -l to server.
2777         * history.c (history_write): Fix comment.
2778         * main.c (main): Don't process -l.
2779         * server.c (serve_global_option): Ditto.
2780         (Suggestion from Rob Lanphier <robla@real.com>.)
2781
2782 2003-05-23  Larry Jones  <lawrence.jones@eds.com>
2783
2784         * sanity.sh (info-cleanup-verifymsg): Avoid race in output.
2785
2786 2003-05-22  Larry Jones  <lawrence.jones@eds.com>
2787
2788         * commit.c (commit): Fix leading zero stripping code to not strip
2789         unless there's a following digit.
2790
2791         * parseinfo.c (Parse_Info): Warn if multiple DEFAULT lines found.
2792         * sanity.sh (info): New test for above.
2793
2794 2003-05-21  Derek Price  <derek@ximbiot.com>
2795
2796         * Makefile.in: Regenerate with Automake version 1.7.5.
2797
2798 2003-05-20  Larry Jones  <lawrence.jones@eds.com>
2799
2800         * parseinfo.c (Parse_Info): Fix stupid memory management error.
2801
2802         * logmsg.c (do_verify): Treate Parse_Info errors as failure.
2803         * parseinfo.c (Parse_Info): Don't call expand_path until executing
2804         the command so that errors in unexecuted commands aren't reported.
2805         * sanity.sh (info): New tests for above.
2806
2807 2003-05-18  Mark D. Baushke  <mdb@gnu.org>
2808
2809         * Makefile.am (localcheck,remotecheck): Use cvs$(EXEEXT) not cvs.
2810         * Makefile.in: Regenerated.
2811         * sanity.sh (status-init-7): Use ${PROG} not cvs in tests.
2812         (branch-after-import-5): Ditto.
2813         (keywordname-update-11): Ditto.
2814
2815 2003-05-18  Larry Jones  <lawrence.jones@eds.com>
2816
2817         * server.h (kserver_authenticate_connection,
2818         pserver_authenticate_connection): Add prototypes.
2819
2820         * client.c (update_entries): Set file's access time to the current
2821         time rather than the same as the modification time.
2822         * vers_ts.c (Version_TS): Ditto.
2823
2824 2003-05-01  Derek Price  <derek@ximbiot.com>
2825
2826         * main.c (main): Ignore -z when CLIENT_SUPPORT is not defined.
2827         (Report from Jim Salter <jsalterjim@earthlink.net>.)
2828
2829 2003-05-01  Derek Price  <derek@ximbiot.com>
2830
2831         * repos.c (Sanitize_Repository_Name): Remove some old comments about
2832         the defunct RELATIVE_REPOS macro.
2833         * server.c (outside_root): Ditto.
2834
2835 2003-04-30  Derek Price  <derek@ximbiot.com>
2836
2837         * add.c (add): Fix a possible, if unlikely, memory out of bounds error.
2838
2839 2003-04-28  Derek Price  <derek@ximbiot.com>
2840
2841         * client.c (save_prog): Remove unneeded struct.
2842         (checkin_progs, update_progs): Remove these unneeded globals.
2843         (handle_set_checkin_prog, handle_set_update_prog, do_deferred_progs):
2844         Remove these functions.
2845         (send_repository): Remove checkin and update prog support.
2846         (responses): Remove Set-checkin-prog and Set-update-prog.
2847         (get_responses_and_close): Don't call do_deferred_prog().
2848         * commit.c (commit_usage): Remove reference to -n.
2849         (commit): Don't set and send run_module_prog via -n.  Don't run
2850         Checkin.prog or Checkout.prog in local mode.
2851         * modules.c (CVSMODULE_OPTS): Remove -i and -u.
2852         (do_module): Don't process -i and -u options to set checkin and update
2853         progs, respectively.
2854         * server.c (server_prog, serve_checkin_prog, server_update_prog):
2855         Remove unused functions.
2856         (requests): Remove Checkin-prog and Update-prog.
2857         * update.c (update_dirleave_proc): Remove update prog functionality.
2858
2859         * cvs.h (CVSADM_CIPROG, CVSADM_UPROG): Remove unneeded defines.
2860         * server.h (server_prog): Remove proto.
2861         (progs): Remove enum.
2862
2863         * sanity.sh (modules5): Remove tests for checkin and update programs.
2864
2865 2003-04-10  Larry Jones  <lawrence.jones@eds.com>
2866
2867         * Makefile.in: Regenerated.
2868
2869 2003-03-27  Mark D. Baushke  <mdb@cvshome.org>
2870
2871         * sanity.sh (rdiff2): Add new test case for SEGV problem reported
2872         against cvs 1.11.5.
2873         (Report from James Cribb)
2874
2875 2003-03-26  Derek Price  <derek@ximbiot.com>
2876
2877         * client.c: Fix, reorganize, and comment ifdefs for AUTH_CLIENT_SUPPORT
2878         and HAVE_GSSAPI.
2879         * client.h: Ditto.  Remove some unecessary server function prototypes.
2880
2881 2003-03-26  Derek Price  <derek@ximbiot.com>
2882
2883         * client.c: Include the net headers for HAVE_GSSAPI.
2884         (Report from Jim Salter <jsalterjim@earthlink.net>.)
2885
2886 2003-03-26  Derek Price  <derek@ximbiot.com>
2887
2888         * main.c (main): Verify the argument to -z when running without
2889         CLIENT_SUPPORT since Eric Siegerman complained about being bit
2890         by a run of `cvs -z -n up' which parsed the -n as the argument to
2891         -z.
2892         * sanity.sh (opterrmsg): New tests for -z argument checking.
2893
2894 2003-03-26  Larry Jones  <lawrence.jones@eds.com>
2895
2896         * main.c (main): Use strtol() instead of atoi() when parsing -z
2897         to detect errors.
2898         (Reported by Eric Siegerman <erics@telepres.com>.)
2899
2900 2003-03-24  Derek Price  <derek@ximbiot.com>
2901
2902         * Makefile.am: Update copyright notice.
2903
2904         * Makefile.in: Regenerated.
2905
2906 2003-03-19  Larry Jones  <lawrence.jones@eds.com>
2907
2908         * filesubr.c (mkdir_if_needed): Save errno since isdir() can clobber.
2909         (Patch from Brian Poole <raj@cerias.purdue.edu>.)
2910         * sanity.sh (abspath-4): Update to match.
2911
2912         * filesubr.c (locate_rcs): Fix gcc warning.
2913
2914 2003-03-17  Derek Price  <derek@ximbiot.com>
2915
2916         * add.c: Correct comment.
2917         * client.c: Ditto.
2918         * checkin.c (Checkin): Pass work file name to RCS_checkin so that this
2919         function works properly in the case insensitive mode.
2920         * commit.c (checkaddfile): Fix and factor add logic so that the
2921         correct files and directories are created in the case insensitive mode.
2922         Reuse code in RCS_parse() below.  This avoids a problem that could
2923         cause corrupted RCS files to be created on an add from a case
2924         insensitive system.  Corrupted RCS files could cause later assertion
2925         failures for everyone.
2926         (locate_rcs): Move this function...
2927         * filesubr.c (locate_rcs): ...here and rewrite it.
2928         (fopen_case): Remove this function.
2929         (locate_file_in_dir): New function.
2930         * cvs.h (locate_rcs): Prototype new function.
2931         * rcs.c (RCS_parse): Factor out file location into locate_rcs.
2932
2933 2003-03-17  Larry Jones  <lawrence.jones@eds.com>
2934
2935         * server.c (switch_to_user): Add syslog calls for setgid/setuid
2936         failure.
2937
2938 2003-03-07  Derek Price  <derek@ximbiot.com>
2939
2940         * sanity.sh (help): Add explanation of CVS-TO-TEST and edit for
2941         consistency.
2942
2943 2003-03-07  Derek Price  <derek@ximbiot.com>
2944
2945         * sanity.sh (usage): Show users long --help rather than less
2946         informative -h.
2947
2948 2003-03-07  Derek Price  <derek@ximbiot.com>
2949
2950         * sanity.sh: Add support for long options.
2951         (exit_usage): Move the actual generation of usage text to...
2952         (usage): ...this new function and improve the usage message.
2953         (exit_help): New function.
2954
2955 2003-03-07  Larry Jones  <lawrence.jones@eds.com>
2956
2957         * commit.c (check_fileproc): Remove unused variables.
2958
2959         * patch.c (patch): Pass local to do_module so that -l actually works.
2960         (Reported by John Coers <coers@intrinsity.com>.)
2961         (patch_fileproc): Fix uninitialized variables.
2962         * sanity.sh: Define a DATE pattern for rdiff and use it.
2963         (basic2-24a): New test for above.
2964
2965 2003-03-06  Derek Price  <derek@ximbiot.com>
2966
2967         * subr.c (file_has_conflict): New file.
2968         * commit.c (check_fileproc): Factor code into new file_has_conflict()
2969         function.
2970         * update.c (update_fileproc): Ditto.
2971         * status.c (status_fileproc): Use new file_has_conflict() function.
2972         (Report from Bernd Kuemmerlen <bkuemmer@mevis.de>.)
2973
2974         * sanity.sh (status): New test for same.
2975
2976 2003-03-05  Mark D. Baushke  <mdb@cvshome.org>
2977
2978         * rcs.c (RCS_magicrev): Backout CVS_LOCAL_BRANCH_NUM feature.
2979
2980         * rcs.c (RCS_magicrev): CVS_LOCAL_BRANCH_NUM feature.
2981         Port of the FreeBSD hack for setting the next magic branch number
2982         to be used. The original patch was written by Peter Wemm
2983         <peter@FreeBSD.org> and may be found by visiting the URL:
2984         http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/cvs/src/rcs.c.diff?r1=1.1&r2=1.2
2985         Implement a horrible (but simple) hack to allow some control over the
2986         branch number that is assigned. This is specifically to support the
2987         local commit feature of cvsup. If one sets $CVS_LOCAL_BRANCH_NUM to
2988         (say) 1000 then branches the local repository, the revision numbers
2989         will look like 1.66.1000.xx. This is almost a dead-set certainty that
2990         there will be no conflicts with version numbers.
2991         (This needs to be something more than an option to 'cvs tag' or 'cvs
2992         rtag' as various parts of cvs "know" how to automatically branch files
2993         (eg: cvs add). Trying to remember state is getting "Too Hard (TM)")
2994         * sanity.sh (branches3): Test the CVS_LOCAL_BRANCH_NUM feature.
2995
2996 2003-03-04  Derek Price  <derek@ximbiot.com>
2997
2998         * history.c (history_write): Remove unneeded O_CREAT in the call to
2999         open() since we abort a few lines earlier if the file doesn't exist.
3000         Add a comment to the effect that this is not the optimal method of
3001         doing things and needs fixed.
3002
3003 2003-02-28  Derek Price  <derek@ximbiot.com>
3004
3005         * root.c (parse_cvsroot): s/no_passwd/no_password/ in comments.
3006
3007 2003-02-28  Derek Price  <derek@ximbiot.com>
3008
3009         * root.c (parse_cvsroot): Set no_password for :gserver: and :kserver:
3010         as tokens should already be obtained via external sources.
3011         * update.c (update_fileproc): Remove redundant code.
3012
3013 2003-02-28  Larry Jones  <lawrence.jones@eds.com>
3014
3015         * lock.c (set_lock): If possible, try a short wait with no message
3016         before calling lock_wait() to optimize master lock contention.
3017
3018 2003-02-26  Larry Jones  <lawrence.jones@eds.com>
3019
3020         * checkout.c (checkout): Send "--" before file names.
3021         * sanity.sh (spacefiles): Remote now works just like local.
3022
3023 2003-02-25  Derek Price  <derek@ximbiot.com>
3024
3025         * sanity.sh (rcs4): Use UTC to work across timezones.
3026
3027 2003-02-25  Derek Price  <derek@ximbiot.com>
3028
3029         * rcs.c (RCS_getdate): Fix a bug that shows up when checking out
3030         files by date with the "-D date" command line option. There is
3031         code in the original to handle a special case. If the date search
3032         finds revision 1.1 it is supposed to check whether revision
3033         1.1.1.1 has the same date stamp, which would indicate that the
3034         file was originally brought in with "cvs import". In that case it
3035         is supposed to return the vendor branch version 1.1.1.1.
3036
3037         However, there was a bug in the code. It actually compares the date
3038         of revision 1.1 for equality with the date given on the command
3039         line -- clearly wrong. This commit fixes the coding bug.
3040
3041         Note: There is an additional bug which is _not_ fixed in this
3042         commit. The date comparison should not be a strict equality test.
3043         It should allow a fudge factor of, say, 2-3 seconds. Old versions
3044         of CVS created the two revisions with two separate invocations of
3045         the RCS "ci" command. We have many old files in the tree in which
3046         the dates of revisions 1.1 and 1.1.1.1 differ by 1 second.
3047
3048         This bug was discovered and fixed for FreeBSD cvs. See v 1.21 of
3049         <http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/cvs/src/rcs.c.diff>
3050         for more information.
3051
3052         * sanity.sh (rcs4): Tests for same.
3053         (Patch from Mark D. Baushke <mdb@cvshome.org>.)
3054
3055 2003-02-25  Derek Price  <derek@ximbiot.com>
3056
3057         * logmsg.c (logfile_write): Do not pass a NULL pointer to
3058         fprintf() when we have an empty log message.
3059         * sanity.sh (editor): Add new tests to verify correct behavior of
3060         empty log messages.
3061         (Patch from Mark D. Baushke <mdb@cvshome.org>, original report from
3062         Piotr KUCHARSKI <chopin@sgh.waw.pl>.)
3063
3064 2003-02-25  Derek Price  <derek@ximbiot.com>
3065
3066         * cvsbug.in: Import use of mktemp function from RedHat 8.0's
3067         CVS 1.11.2 RPM.  Use new MKTEMP configure variable.  Use new
3068         SENDMAIL from configure.
3069
3070         * Makefile.in: Regenerated.
3071
3072 2003-02-25  Derek Price  <derek@ximbiot.com>
3073
3074         * watch.c (watch_usage): Use {} rather than () for literals.
3075
3076 2003-02-14  Derek Price  <derek@ximbiot.com>
3077
3078         * watch.c (watch_usage): Make the repeatability of -a part of the
3079         usage spec.
3080
3081 2003-02-14  Derek Price  <derek@ximbiot.com>
3082
3083         * watch.c (watch_usage): Mention default for -a.  Mention multiple
3084         invocations of -a.  Mention -R as default.  Use required () rather than
3085         optional [] around watch subcommand list in invocation spec.  Use
3086         `path' instead of `file'.  Put variable <> around `action' and `path'.
3087
3088 2003-02-07  Derek Price  <derek@ximbiot.com>
3089
3090         * commit.c (checkaddfile): Do not lose the vendor branch when
3091         adding files to a new branch. Avoids extranious conflicts for
3092         future vendor imports. This was found and fixed in FreeBSD cvs.
3093         See http://www.freebsd.org/cgi/query-pr.cgi?pr=4033 for details.
3094         * sanity.sh (branch-after-import): New test.
3095         (Thanks to Mark D Baushke <mdb@cvshome.org> for forwarding the
3096         patch and writing the test cases!)
3097
3098         * sanity.sh (branch-after-import): Misc portablility and standard
3099         changes.
3100
3101 2003-02-12  Derek Price  <derek@ximbiot.com>
3102
3103         * main.c (main): Update copyright message to 2003.
3104
3105 2003-02-21  Larry Jones  <lawrence.jones@eds.com>
3106
3107         * server.c (switch_to_user): Update comment, change error message
3108         so it's not an exact duplicate of the one in check_password.
3109         (check_repository_password): Add syslog call for password mismatches.
3110         (check_password): Add syslog call for password mismatches, rearrange
3111         code to simplify and eliminate redundancy.
3112         (pserver_authenticate_connection): Remove syslog call, now done by
3113         lower-level routines.
3114
3115 2003-02-19  Larry Jones  <lawrence.jones@eds.com>
3116
3117         * sanity.sh (admin-10): Add test for repository files not in
3118         working directory.
3119
3120         * admin.c (admin_fileproc): Fix crash when no rcs file, return
3121         failure status for bogus files.
3122         * sanity.sh (admin-4a): Test for above.
3123         (Original patch submitted by Mark D. Baushke <mdb@cvshome.org>).
3124
3125 2003-02-14  Larry Jones  <lawrence.jones@eds.com>
3126
3127         * log.c (log_expand_revlist): Fix crashes in error cases.
3128         (Reported by Bart Santy <Bart.Santy@switch.be>.)
3129         * sanity.sh (log): New tests for above.
3130
3131 2003-02-01  Larry Jones  <lawrence.jones@eds.com>
3132
3133         * buffer.c (stdio_buffer_shutdown): Handle EINTR from waitpid.
3134         (Patch from Johannes Grødem <johs+n@ifi.uio.no>.)
3135
3136 2003-02-08  Derek Price  <derek@ximbiot.com>
3137
3138         * rcs.c (RCS_checkout): Supply the full function name in the trace
3139         output.
3140         * update.c (checkout_file, join_file): Supply tag properly to
3141         RCS_checkout more often.
3142         (patch_file): Ditto.  Fill out comments.
3143         * sanity.sh (keyword, keywordname): Some changes to accomodate the fact
3144         that the above changes cause patches generated by patch_file to fail
3145         occassionally.
3146
3147 2003-02-06  Derek Price  <derek@ximbiot.com>
3148
3149         * client.c: Use the complete path to the CVSADM_TEMPLATE file in
3150         error messages.  Remove related FIXME.
3151
3152 2003-01-31  Derek Price  <derek@ximbiot.com>
3153
3154         * sanity.sh (keywordname): Change a "FIXME" comment to "FIXCVS".
3155
3156 2003-01-30  Derek Price  <derek@ximbiot.com>
3157
3158         * sanity.sh (keywordname): New test.
3159
3160 2003-01-23  Larry Jones  <lawrence.jones@eds.com>
3161
3162         * diff.c (diff_fileproc): Restructure code to simplify and eliminate
3163         redundant tests.
3164
3165         * server.c (do_cvs_command): Use WCOREDUMP macro rather than hard
3166         coding test for core file.
3167
3168 2003-01-21  Larry Jones  <lawrence.jones@eds.com>
3169
3170         * root.c (method_name): Redefine as a 2D array.
3171         * root.h (method_name): Ditto.
3172
3173 2003-01-21  Jim Meyering  <jim@meyering.net>
3174
3175         * add.c (add): Rename local-shadowing `i' to `j'.
3176
3177         * root.c (method_names): Declare to be a const array of const strings.
3178         (Name_Root): Save errno so it doesn't get clobbered
3179         by the intervening error call.
3180         Use getline's return value, mainly to save a call to strrchr.
3181
3182 2003-01-20  Larry Jones  <lawrence.jones@eds.com>
3183
3184         * myndbm.c (O_ACCMODE): Parenthesize the replacement string so that
3185         it parses correctly.
3186         (Reported by Andres Bertens <abertens@entelchile.net>.)
3187
3188 2003-01-15  Karl Fogel  <kfogel@collab.net>
3189
3190         * server.c (dirswitch): Don't free dir_name until right before
3191         allocating it again.  This removes a potential double-free
3192         problem, whereby this function could free dir_name and then
3193         immediately return due to invalid directory syntax (without ever
3194         reassigning dir_name), then reenter and free dir_name again.
3195
3196         Thanks to Stefan Esser <s.esser@e-matters.de> for the fix.
3197
3198 2003-01-08  Larry Jones  <lawrence.jones@eds.com>
3199
3200         * client.c (update_entries): Only "0" is a special version number;
3201         other numbers starting with 0 (like 0.1) are normal version numbers.
3202         * commit.c (find_fileproc): Ditto.  Also reorganize the code to
3203         simplify the conditions.
3204         (Reported by Michele Zamparelli <michele.zamparelli@eso.org>.)
3205
3206 2003-01-02  Larry Jones  <lawrence.jones@eds.com>
3207
3208         * rcs.c (getdelta): Use RCSDEAD rather than literal "dead".
3209
3210 2002-12-27  Derek Price  <derek@ximbiot.com>
3211
3212         * admin.c: s/LOCK_(NONE|WRITE|READ)/CVS_$&/g; since the definition of
3213         LOCK_WRITE clashes with a definition in objidl.h on Windoze platforms.
3214         * annotate.c: Ditto.
3215         * client.c: Ditto.
3216         * commit.c: Ditto.
3217         * cvs.h: Ditto.
3218         * diff.c: Ditto.
3219         * edit.c: Ditto.
3220         * lock.c: Ditto.
3221         * log.c: Ditto.
3222         * patch.c: Ditto.
3223         * recurse.c: Ditto.
3224         * remove.c: Ditto.
3225         * status.c: Ditto.
3226         * tag.c: Ditto.
3227         * update.c: Ditto.
3228         * watch.c: Ditto.
3229         * myndbm.c: Ditto & define O_ACCMODE when it isn't defined, as under
3230         Windoze.
3231         (Thanks to Stephane Rouleau <s.rouleau@videotron.ca>,
3232          Cristopher Seawood <cls@seawood.org>, and
3233          Frederico Costa <frederico.costa@tiscali.no> for all their hints,
3234          tips, and patches for this problem.)
3235
3236 2002-12-20  Derek Price  <derek@ximbiot.com>
3237
3238         * client.c (send_a_repository): Suppress a warning under Windoze.
3239
3240 2002-12-19  Derek Price  <derek@ximbiot.com>
3241
3242         * Makefile.am: Remove reference to options.h.
3243         * cvs.h: Ditto.
3244         * options.h: Remove this obsolete file.
3245         * sanity.sh: Remove comment about external diffs causing tests to fail
3246         since CVS hasn't used external diffs in years.
3247
3248         * Makefile.in: Regenerated.
3249
3250 2002-12-16  Derek Price  <derek@ximbiot.com>
3251
3252         * admin.c: Disable cvsadmin group checking on the client.
3253         (Reported by Dan Peterson <dbpete@aol.com>.)
3254
3255 2002-12-06  Derek Price  <derek@ximbiot.com>
3256
3257         * buffer.c: Replace calls to malloc with calls to xmalloc and calls to
3258         realloc with calls to xrealloc.
3259         * parseinfo.c: Ditto.
3260         * root.c: Ditto.
3261         * server.c: Ditto.
3262         * zlib.c: Ditto.
3263         * scramble.c: Change some comments to refer to xmalloc rather than
3264         malloc.
3265         (Reported by Dan Peterson <dbpete@aol.com>.)
3266
3267 2002-12-04  Derek Price  <derek@ximbiot.com>
3268
3269         * options.h: Remove CVS_ADMIN_GROUP.
3270
3271 2002-12-02  Larry Jones  <lawrence.jones@eds.com>
3272
3273         * commit.c (commit): Strip leading zeros from numeric revision
3274         in addition to trailing dots.
3275         (Reported by Peter Meszaros <pme@prolan.hu>.)
3276
3277 2002-11-22  Larry Jones  <lawrence.jones@eds.com>
3278
3279         * sanity.sh: Note that the tests run for a long time.
3280
3281         * checkout.c (safe_location): Use xstrdup, not strdup.
3282         (Reported by Terrence Enger <tenger@iSeries-guru.com>.)
3283
3284 2002-11-19  Larry Jones  <lawrence.jones@eds.com>
3285
3286         * log.c (log_expand_revlist): Fix cross-branch correction code.
3287
3288         * sanity.sh: Set $LANG for systems that ignore $LC_ALL.
3289         (rcs2-7): Change date offset from 100 months to 96 months to reduce
3290         periodic problems with invalid dates.
3291
3292 2002-11-12  Derek Price  <derek@ximbiot.com>
3293
3294         * sanity.sh (rcslib-symlink): Use rm -f rather than a simple rm when
3295         removing links because under some configurations of RH Linux 8.0 the
3296         script pauses to ask for removal approval.
3297
3298 2002-11-08  Derek Price  <derek@ximbiot.com>
3299
3300         * sanity.sh (importc): Update the use of the touch command to be
3301         compliant with POSIX 1003.1-2001, SUS2, and SUS3 now that GNU touch
3302         supports this.  If this breaks any test platforms we should test
3303         the behavior of touch like we do for other tools.
3304
3305 2002-11-03  Derek Price  <derek@ximbiot.com>
3306
3307         * sanity.sh (rcs2-7): Notate with a wild untested hypothesis.
3308
3309 2002-11-03  Derek Price  <derek@ximbiot.com>
3310
3311         * sanity.sh (rcs2-7): Notate with three more failure dates.
3312
3313 2002-10-25  Derek Price  <derek@ximbiot.com>
3314
3315         * root.c: Change some calls to SYSTEM_CLEANUP() and then exit() to
3316         more appropriate calls to error_exit().
3317         * server.c: Ditto.
3318         * tag.c: Ditto.
3319
3320 2002-10-24  Derek Price  <derek@ximbiot.com>
3321
3322         * buffer.c (stdio_buffer_shutdown): Remove the getc() call used to
3323         detect spurious output from clients since getc() would sometimes
3324         block and hang indefinately if the client kept the conection open but
3325         sent no data.  Bug reports state that this hapened frequently with
3326         older clients connecting to 1.11.2 servers, especially when
3327         compression is enabled.
3328         (Original report from Mark D. Baushke <mdb@juniper.net>.
3329          Original patch from Ralf S. Engelschall <rse@engelschall.com>
3330          via Peter Wemm <peter@freebsd.org>.)
3331
3332 2002-10-05  Larry Jones  <lawrence.jones@eds.com>
3333
3334         * recurse.c (start_recursion, do_recursion): Allow write locking
3335         in addition to read locking.  Change all callers.
3336         * cvs.h: Change prototype to match, add lock types.
3337         * tag.c (rtag_proc, rtag_fileproc, tag_fileproc): Have start_recursion
3338         use write locks rather than calling lock_dir_for_write to avoid deadly
3339         embrace.
3340
3341 2002-10-04  Larry Jones  <lawrence.jones@eds.com>
3342
3343         * client.c (get_responses_and_close, connect_to_pserver): Set
3344         to_server and from_server to NULL after freeing.
3345         * main.c (main): Clear server_active when finished.  Also neaten
3346         up the SERVER_SUPPORT ifdef's.
3347         * server.c (do_cvs_command): Set protocol_inbuf, stderrbuf, and
3348         stdoutbuf to NULL after freeing.
3349         (server_cleanup): Free buf_from_net and buf_to_set and set to NULL.
3350         Also reset error_use_protocol.
3351         (server): Don't SIG_register server_cleanup.  main_cleanup (which
3352         is already registered) outputs a fatal error which causes it to
3353         be called; registering it directly results in it being called twice.
3354         (cvs_output): Don't try to use buf_to_net or protocol if they're NULL.
3355
3356 2002-10-03  Larry Jones  <lawrence.jones@eds.com>
3357
3358         * lock.c (readers_exist): Ignore our own read lock, if any, to
3359         allow upgrading an existing read lock to a write lock.
3360         * tag.c (rtag_proc, rtag_fileproc, tag_fileproc): Rather than
3361         locking the entire tree, have start_recursion establish read
3362         locks and then upgrade the read lock to a write lock (so only
3363         one directory is locked at a time).
3364
3365 2002-09-27  Larry Jones  <lawrence.jones@eds.com>
3366
3367         * add.c (add): Send "--" before file names.
3368         * admin.c (admin): Ditto.
3369         * annotate.c (annotate): Ditto.
3370         * commit.c (commit): Ditto.
3371         * diff.c (diff): Ditto.
3372         * edit.c (watch_onoff, editors): Ditto.
3373         * log.c (cvslog): Ditto.
3374         * remove.c (cvsremove): Ditto.
3375         * status.c (cvsstatus): Ditto.
3376         * tag.c (cvstag): Ditto.
3377         * update.c (update): Ditto.
3378         * watch.c (watch_addremove, watchers): Ditto.
3379
3380         * sanity.sh (client-9): Update to match.
3381
3382 2002-09-24  Derek Price  <derek@ximbiot.com>
3383
3384         * options.h: Remove prototype of STDC exit() function.  If this breaks
3385         a build, this should be detected in configure.in somehow rather than
3386         restoring the line to this file.
3387
3388 2002-09-24  Derek Price  <derek@ximbiot.com>
3389
3390         * options.h: Move definition of AUTH_CLIENT_SUPPORT into configure.in.
3391
3392 2002-09-24  Derek Price  <derek@ximbiot.com>
3393
3394         * options.h: Move definition of FORCE_USE_EDITOR into configure.in.
3395
3396 2002-09-24  Derek Price  <derek@ximbiot.com>
3397
3398         * options.h: Move definition of UMASK_DFLT into configure.in.
3399
3400 2002-09-24  Derek Price  <derek@ximbiot.com>
3401
3402         * Makefile.in: Regenerated using Automake 1.6.3.
3403
3404 2002-09-24  Larry Jones  <lawrence.jones@eds.com>
3405
3406         * filesubr.c, history.c, import.c, rcs.c, update.c: Use
3407         HAVE_STRUCT_STAT_ST_BLKSIZE and HAVE_STRUCT_STAT_ST_RDEV instead of
3408         the obsolete HAVE_ST_BLKSIZE and HAVE_ST_RDEV.
3409
3410 2002-09-24  Derek Price  <derek@ximbiot.com>
3411
3412         * options.h: Move definition of TMPDIR_DFLT into configure.in.
3413
3414 2002-09-24  Derek Price  <derek@ximbiot.com>
3415
3416         * options.h: Move defininition of EDITOR_DFLT into configure.in.
3417
3418         * Makefile.in: Regenerated.
3419
3420 2002-09-23  Jim Meyering  <meyering@lucent.com>
3421
3422         If `cvs -d REPO commit ...' was used to override CVS/Root,
3423         then modified files in the directory from which cvs is invoked
3424         would not be committed.
3425         * client.c (arg_should_not_be_sent_to_server): The above would happen
3426         because this function would throw out a file name when CVS/Root
3427         did not match the current server.  Fix by allowing the command-line-
3428         specified repository to take precedence over the value returned
3429         by Name_Root.  Patch by Simon Walton <simonw@lucent.com>.
3430         * sanity.sh (commit-d): New tests for the above.
3431         Patch by Simon Walton <simonw@lucent.com>.
3432
3433 2002-09-20  Derek Price  <derek@ximbiot.com>
3434
3435         * options.h: Move definition of SERVER_FLOWCONTROL, SERVER_HI_WATER,
3436         and SERVER_LO_WATER into configure.in.
3437
3438 2002-09-20  Derek Price  <derek@ximbiot.com>
3439
3440         * options.h: Move definition of PATCH_PROGRAM to configure.in.
3441
3442 2002-09-18  Larry Jones  <lawrence.jones@eds.com>
3443
3444         * client.c (call_in_directory): Don't create admin directory when
3445         exporting into an existing directory.
3446         (Reported by Jens Engel <Jens.Engel@marconi.com>.)
3447         * sanity.sh (basic2): New tests for above.
3448
3449 2002-09-16  Jim Meyering  <meyering@lucent.com>
3450
3451         * server.c (do_cvs_command): Move declarations of locals, timeout and
3452         timeout_ptr, `up', out of enclosing `#ifdef SERVER_FLOWCONTROL' block.
3453         Otherwise, this file would not compile with SERVER_FLOWCONTROL
3454         turned off.  Patch by Ed Santiago <esm@ascend.com>.
3455
3456 2002-09-15  Larry Jones  <lawrence.jones@eds.com>
3457
3458         * myndbm.c (mydbm_open): Open the file read/write rather than read-
3459         only if that's what the user asked for to ensure that the later open
3460         for write will succeed.
3461         (Patch submitted by Josh Lehan <cvs@krellan.com>.)
3462
3463 2002-08-28  Larry Jones  <lawrence.jones@eds.com>
3464
3465         * logmsg.c (do_editor): Fix bug which prevented reusing log messages.
3466         (Reported by Eric Siegerman <erics@telepres.com>.)
3467
3468 2002-08-16  Derek Price  <derek@ximbiot.com>
3469
3470         * create_adm.c (Create_Admin): Assume RELATIVE_REPOS is set.
3471         * server.c (outside_root): Add comment.
3472         * options.h: Remove RELATIVE_REPOS & CVS_BADROOT.
3473         * sanity.sh: Remove a lot of !RELATIVE_REPOS cruft from tests.
3474
3475 2002-08-14  Derek Price  <oberon@umich.edu>
3476
3477         * server.c (server): Dispose of the correct pointer.  Tidy comment.
3478
3479 2002-08-13  Derek Price  <oberon@umich.edu>
3480
3481         * client.c (get_cvs_port_number): Fix typo in comment.  Add comments.
3482         * server.c (server): Fix a FIXME.  Remove an errant "const" directive.
3483         Remove some redundant memory allocation and error handling code.
3484
3485 2002-08-08  Derek Price  <oberon@umich.edu>
3486
3487         * import.c (import): Surrounded `server_active' with
3488         #ifdef SERVER_SUPPORT/#endif.
3489         * commit.c (commit_fileproc, commit_direntproc): Likewise.
3490         (Patch from John Tytgat  <John.Tytgat@aaug.net>.)
3491
3492 2002-07-31  Derek Price  <oberon@umich.edu>
3493
3494         * filesubr.c: Add a line so VIM can determine tab stops and shift widths.
3495         * root.c: Ditto.
3496         * (parse_cvsroot): Add comments and tidy slightly.
3497
3498 2002-07-31  Derek Price  <oberon@umich.edu>
3499
3500         * sanity.sh: Add another date to the comment about rcs2-7 failing.
3501
3502 2002-07-26  Jim Meyering  <meyering@lucent.com>
3503
3504         * commit.c (find_fileproc): When committing in client mode,
3505         arrange to fail if a `cvs add'ed file no longer exists in the
3506         working directory.
3507         * sanity.sh (commit-add-missing): New test for above.
3508
3509 2002-07-25  Larry Jones  <lawrence.jones@eds.com>
3510
3511         * sanity.sh: Set $TMPDIR if it's not already set and use it rather
3512         than /tmp for the expected server temp directory path.
3513
3514 2002-07-09  Larry Jones  <lawrence.jones@eds.com>
3515
3516         * vers_ts.c (time_stamp_server, time_stamp): Eliminate unneeded
3517         struct_tm copying.
3518
3519         * lock.c (lock_wait, lock_obtained): Display time in UTC if possible
3520         to reduce confusion in client/server mode.
3521         (Original patch from Eduardo Perez Ureta <eperez@it.uc3m.es>.)
3522
3523 2002-06-26  Larry Jones  <lawrence.jones@eds.com>
3524
3525         * tag.c (check_fileproc): When checking up-to-date, T_REMOVE_ENTRY
3526         is also a valid status.
3527         (Reported by David Everly <David.Everly@wcom.com>.)
3528         * sanity.sh (tagc): New tests for above.
3529
3530 2002-06-18  Larry Jones  <lawrence.jones@eds.com>
3531
3532         * update.c (patch_file): Don't patch if diff bigger than file.
3533         Don't bother adjusting the permission on the diff output if
3534         we're not going to use it.
3535
3536
3537 2002-06-18  Derek Price  <oberon@umich.edu>
3538
3539         * server.c: Handle HPUX password expiration fields in the passwd
3540         string in case we are set up on a server with NIS passwords served
3541         from HPUX.
3542         (Original patch from John Cavanaugh <john_cavanaugh@agilent.com>.)
3543
3544 2002-06-17  Larry Jones  <lawrence.jones@eds.com>
3545             and Jonathan Kamens  <jik@kamens.brookline.ma.us>
3546
3547         * commit.c (commit_fileproc, commit_direntproc): Don't try to call
3548         an editor to get the log message if running as a server.  Instead,
3549         just use an empty log message.
3550         * import.c (import): Ditto.
3551
3552         * import.c (import): In client mode, always send a message to the
3553         server, even if it's empty (this parallels a change made by Larry
3554         Jones to commit.c on May 7).
3555
3556 2002-05-31  Larry Jones  <lawrence.jones@eds.com>
3557
3558         * rcs.c: Conditionally define MAP_FAILED for old systems that don't
3559         have it in <mman.h>.
3560         (Reported by jeremy brand <jeremy@earth.care2.com>.)
3561
3562 2002-05-24  Larry Jones  <lawrence.jones@eds.com>
3563
3564         * rcscmds.c (diff_exec): Add a -- before the first file name just
3565         in case it looks like an option.
3566         (Reported by Zooko <zooko@zooko.com>.)
3567
3568         * rcscmds.c (diff_execv): Remove -- same as diff_exec.  Change
3569         only caller.
3570         * cvs.h: Ditto.
3571
3572 2002-05-23  Larry Jones  <lawrence.jones@eds.com>
3573
3574         * cvs.h (strcat_filename_onto_homedir): Make arguments const.
3575         * filesubr.c (strcat_filename_onto_homedir): Make arguments const,
3576         move more code here from callers, change all callers.
3577
3578 2002-05-22  Derek Price  <oberon@umich.edu>
3579
3580         * cvs.h: Add prototype for this...
3581         * filesubr.c (strcat_filename_onto_homedir): new function.
3582         * login.c (): Use new function.
3583
3584         * cvsrc.c (read_cvsrc): Use new function due to problems on VMS.
3585         * ignore.c (ign_setup): Ditto.
3586         * wrapper.c (wrap_setup): Ditto.
3587         (Original patch from Karsten Spang <ksp@dannet.dk>.)
3588
3589 2002-05-21  Larry Jones  <lawrence.jones@eds.com>
3590
3591         * rcs.c (rcsbuf_getkey): Correct off-by-one error in ptr assertion
3592         and add a similar assertion for ptrend.
3593         (Reported by Rebecca Young <raygirl@cvshome.org>.)
3594         (rcsbuf_fill): Remove redundant code.
3595
3596 2002-05-20  Derek Price  <oberon@umich.edu>
3597
3598         * buffer.h: New prototype for...
3599         * buffer.c (stdio_buffer_get_file): this new function to abstract
3600         access to a buffer's file descriptor.
3601         * client.c (auth_server): Use the new function.
3602         (Original patch from Jonathan Kamens <jik@kamens.brookline.ma.us>.)
3603
3604 2002-05-20  Derek Price  <oberon@umich.edu>
3605
3606         * main.c (main): Add 2002 to the copyright years output with the
3607         version string.
3608
3609 2002-05-15  Larry Jones  <lawrence.jones@eds.com>
3610
3611         * log.c (log_parse_list): Fix off-by-one error which caused
3612         incorrect handling of 'cvs log -wuser1,user2 foo.c' command.
3613         (Patch from Alexey Mahotkin <alexm@hsys.msk.ru>,
3614         reported by Alex Morozov <morozov@novosoft.ru>.)
3615
3616 2002-05-09  Larry Jones  <lawrence.jones@eds.com>
3617
3618         * login.c (password_entry_operation): Get cvsroot_canonical before
3619         trying to read the user's password file so we have it even if the
3620         file doesn't exist.
3621         (Reported by Sarah Thompson <sthompson@fsl.noaa.gov>.)
3622
3623 2002-05-08  Derek Price  <oberon@umich.edu>
3624
3625         * Makefile.am (cvs_SOURCES): Add options.h explicitly - since we
3626         stopped generating it dynamically, Automake stopped noticing it and
3627         including it in dists.  See TODO item #214 for notes.
3628
3629 2002-05-08  Derek Price  <oberon@umich.edu>
3630
3631         * cvs.h: Use the HAVE_CONFIG_H define.
3632
3633 2002-05-07  Larry Jones  <lawrence.jones@eds.com>
3634
3635         * filesubr.c (isaccessible): Set errno before returning failure
3636         in the SETXID_SUPPORT code.
3637
3638         * logmsg (do_verify): Avoid even more work if there's no verifymsg
3639         script to run.
3640
3641         * logmsg: Use fputs/putc rather than fprintf where appropriate.
3642         (do_verify): Run the verifymsg script even if there's no log
3643         message.  (Reported by Andy Baker <Andy.Baker2@t-mobile.co.uk>.)
3644         Don't reread the log message unless a verifymsg script was run.
3645
3646         * commit.c (commit): Always send -m to the server, even if there's
3647         no message.
3648
3649         * create_adm.c (Create_Admin): Add dotemplate parameter to trace.
3650         Remove unreachable code.
3651
3652 2002-05-03  Larry Jones  <lawrence.jones@eds.com>
3653
3654         * server.c (serve_watch_on, serve_watch_off, serve_watch_add,
3655          serve_watch_remove): Just pass "watch" as the command name
3656          to do_cvs_command to avoid unknown command errors.
3657          (Reported by Gary Hennigan <gary@ieee.org>.)
3658
3659         * rcs.c (RCS_checkin): Fix bad call to error () in buggy
3660         PRESERVE_PERMISSIONS code.
3661         (rcs_internal_unlockfile): Include current value of errno in error
3662         message even though it may well be irrelevant (it's still better
3663         than nothing).
3664
3665 2002-05-02  Derek Price  <oberon@umich.edu>
3666
3667         * .cvsignore: Remove lines for files obsoleted by new autotools.
3668
3669 2002-05-02  Derek Price  <oberon@umich.edu>
3670
3671         * stamp-h2.in: Remove this uneeded file.
3672
3673 2002-05-01  Derek Price  <oberon@umich.edu>
3674
3675         * options.h.in: Move to...
3676         * options.h: here.
3677
3678 2002-04-30  Derek Price  <oberon@umich.edu>
3679
3680         * version.h.in: Remove this file.
3681         * version.h: Ditto.
3682
3683         * Makefile.am: Remove references to version.h.
3684         * cvs.h: Use <> rather than "" around the config.h #include.  I didn't
3685         quite bother to understand why, but autoconf recommends it.
3686         * cvsbug.in: Use PACKAGE_BUGREPORT defined by configure for the bug
3687         report email address.
3688         * version.c (version): Use PACKAGE_STRING defined in config.h instead
3689         of the version_string that used to be defined in version.h.
3690
3691         * Makefile.in: Regenerated with automake 1.6.
3692
3693 2002-04-28  Derek Price  <oberon@umich.edu>
3694
3695         * cvs.h: Use `"'s around includes when we mean a local file.
3696
3697 2002-04-28  Derek Price  <oberon@umich.edu>
3698
3699         * cvs.h: #define new names for functions and variables when they
3700         might conflict with system definitions (namely on Mac OS X 10.1 with
3701         the most recent dev packages - This should be removable after the Mac
3702         dev packages are fixed.).
3703
3704 2002-04-26  Larry Jones  <larry.jones@sdrc.com>
3705
3706         * logmsg.c (do_editor): Fix assertion when CLIENT_SUPPORT not defined.
3707         (Reported by Matthias Andree <matthias.andree@stud.uni-dortmund.de>.)
3708
3709 2002-04-19  Larry Jones  <larry.jones@sdrc.com>
3710
3711         * log.c (log_expand_revlist): First cut at code to allow logging
3712         between a revision and *any* ancestor, not just one explicitly on
3713         the same branch (e.g., from 1.1 to 4.1.2.3.6.1).
3714
3715         * subr.c (gca): Simplify and optimize.
3716
3717 2002-04-19  Jim Meyering  <meyering@lucent.com>
3718         and Ed Santiago <easm@lucent.com>
3719
3720         * classify.c (Classify_File): Fix it so that `cvs update -p -r...'
3721         works, even under some slightly unusual (though perfectly legitimate)
3722         circumstances.
3723         * sanity.sh (update-p): New tests for this.
3724
3725 2002-04-18  Derek Price  <oberon@umich.edu>
3726
3727         * sanity.sh: Move test for regex metacharacters in username until
3728         after we're sure we found the version of expr that we're going to use.
3729
3730 2002-04-18  Larry Jones  <larry.jones@sdrc.com>
3731
3732         * admin.c (admin_fileproc): Allow admin to be used on RCS files with
3733         no local version (e.g., removed files) like most other subcommands.
3734
3735         * wrapper.c (wrap_add): Update URL of -t/-f wrapper discussion.
3736
3737 2002-04-18  Derek Price  <oberon@umich.edu>
3738
3739         * version.h: Regenerated for 1.11.2.1 version update.
3740
3741 2002-04-17  Derek Price  <oberon@umich.edu>
3742
3743         * version.h: Regenerated for 1.11.2.
3744
3745 2002-04-03  Derek Price  <oberon@umich.edu>
3746
3747         * stamp-h2.in: Regenerate with recent version of Autoconf.
3748
3749 2002-04-03  Derek Price  <oberon@umich.edu>
3750
3751         * sanity.sh (TR): Send the stderr of one of the tool setup (tr) tests
3752         to /dev/null to avoid spurious output on some operating systems
3753         (notably Mac OS X).
3754
3755 2002-03-22  Larry Jones  <larry.jones@sdrc.com>
3756
3757         * sanity.sh (rcslib): Correct new tests to use ${testcvs} instead
3758         of cvs.
3759
3760 2002-03-21  Derek Price  <oberon@umich.edu>
3761
3762         * vers_ts.c (time_stamp): Return the timestamp for the newer of the
3763         link and the link's source when the file is a link.
3764         (Patch from RedHat cvs-1.11.1p1-7 SRPM.)
3765
3766         * sanity.sh (rcslib): Test for same.
3767
3768 2002-03-17  Larry Jones  <larry.jones@sdrc.com>
3769
3770         * log.c (cvslog, log_fileproc): Add -S option to suppress head or
3771         file name if no revisions selected.
3772         * sanity.sh (log): New tests for above.
3773
3774 2002-03-13  Derek Price  <oberon@umich.edu>
3775
3776         * main.c (usg): Correct a spelling mistake in a comment.
3777         (Thanks to Matt Kraai <kraai@alumni.cmu.edu>.)
3778
3779 2002-03-09  Larry Jones  <larry.jones@sdrc.com>
3780
3781         * import.c (import): Change the suggested merge message to use
3782         rev tags instead of the branch tag with a date.
3783         * sanity.sh (import, importb): Change to match.
3784
3785         * remove.c (remove_fileproc): Disallow removing files with sticky
3786         dates for the same reason we already disallow sticky numeric tags.
3787         * sanity.sh (sticky): New test for above.
3788
3789 2002-02-27  Larry Jones  <larry.jones@sdrc.com>
3790
3791         * diff.c (diff_fileproc): Treat dead revisions as nonexistent.
3792
3793 2002-02-26  Larry Jones  <larry.jones@sdrc.com>
3794
3795         * diff.c (diff): Remove -V and --paginate options: they aren't valid.
3796         (diff_usage): Document all the diff options.
3797
3798 2002-02-13  Larry Jones  <larry.jones@sdrc.com>
3799
3800         * rcs.c (RCS_gettag): Do not interpret an empty tag as HEAD (nothing
3801         else does and I don't see any documentation that says it should).
3802         (translate_symtag): Break out of loop at end of symbols to prevent
3803         looping forever when tag is "".
3804         (Reported by Alain ENOUT <aln00@udcast.com>
3805         via Eric Gillespie <epg@pretzelnet.org>.)
3806
3807 2002-02-11  Larry Jones  <larry.jones@sdrc.com>
3808
3809         * server.c (server_cleanup): Set buf_to_net back to blocking mode
3810         and flush it (in case there are any error messages pending) before
3811         shutting down buf_from_net and again right before shutting it down.
3812
3813 2002-02-08  Larry Jones  <larry.jones@sdrc.com>
3814
3815         * main.c (lookup_command_attribute): Throw a fatal error if the
3816         command is not found.
3817         * server.c (server_tag): Use the correct command name.
3818
3819 2002-01-30  Larry Jones  <larry.jones@sdrc.com>
3820
3821         * error.h (error_exit): Remove unintended prototype.
3822
3823         * server.c (serve_root): Remove check for impossible condition.
3824         (serve_init): Save and restore current_parsed_root.
3825
3826 2002-01-29  Larry Jones  <larry.jones@sdrc.com>
3827
3828         * error.h (error_exit): Declare __noreturn__ to avoid spurious
3829         warnings.
3830
3831         * server.c (serve_root): If the specified root doesn't match the
3832         pserver root, return before changing current_parsed_root to prevent
3833         subsequent commands from accessing an unchecked root directory.
3834         (server_init): Check specified root against the pserver root and
3835         complain if they don't match.  Also, if there are pending errors,
3836         print them and return before changing current_parsed_root to prevent
3837         subsequent commands from accessing an unchecked root directory.
3838         * sanity.sh (pserver): New tests for above.
3839
3840 2002-01-10  Larry Jones  <larry.jones@sdrc.com>
3841
3842         * log.c (log_version_requested): Change :: in revision spec to be
3843         exclusive just on the low end (so -r tag1::tag2 gives revisions
3844         after tag1 but up to and including tag2), which is much more useful
3845         than the previous (exclusive at both ends) behavior.
3846         (log_usage): Update to match.
3847         * sanity.sh (log): Update to match.
3848
3849 2002-01-02  Larry Jones  <larry.jones@sdrc.com>
3850
3851         * server.c (LOG_DAEMON): Define if needed.
3852         (Patch from John David Anglin <dave@hiauly1.hia.nrc.ca>.)
3853
3854         * server.c (pserver_authenticate_connection): Add a specific error
3855         message for EOF at protocol start and syslog if available.
3856         * sanity.sh (pserver-bufinit): Update to match.
3857
3858 2001-12-10  Larry Jones  <larry.jones@sdrc.com>
3859
3860         * log.c (log_usage): Note that -r and -d take lists, not just a
3861         single specification.
3862         (log_expand_revlist): Don't dereference null pointers when one end
3863         of a revision range is a non-existent tag.
3864
3865 2001-12-03  Larry Jones  <larry.jones@sdrc.com>
3866
3867         * annotate.c (annotate, annotate_fileproc): Don't annotate binary
3868         files unless new -F option given.
3869         * sanity.sh (basica, ann, ann-id, rcs, keywordlog, tagdate): Update
3870         to match.
3871
3872 2001-11-30  Larry Jones  <larry.jones@sdrc.com>
3873
3874         * admin.c (admin): Allow unrestricted usage of -q in addition to -k.
3875
3876 2001-10-25  Larry Jones  <larry.jones@sdrc.com>
3877
3878         * log.c (log_expand_revlist): Make erroneous or inconsistent revision
3879         specs select no revisions rather than all revisions.
3880
3881 2001-10-23  Larry Jones  <larry.jones@sdrc.com>
3882
3883         * import.c (add_rcs_file): Don't put an expand entry into the file
3884         for the default expansion mode (kv).
3885         * wrapper.c (wrap_send, wrap_unparse_rcs_options): Process entries
3886         with default expansion mode since they may be needed to avoid matching
3887         a more general entry later.
3888         (wrap_add): Set rcsOption to NULL for default (kv).
3889         (wrap_add_entry): Use structure assignment to copy entries rather
3890         that copying members by hand.
3891         * sanity.sh (binwrap3): Revise to test wrapper entries that don't
3892         specify any non-default options but just prevent matching later,
3893         more general entries.
3894
3895 2001-10-02  Larry Jones  <larry.jones@sdrc.com>
3896
3897         * rcs.c (RCS_fully_parse): Add revision number to more error messages.
3898
3899 2001-09-27  Larry Jones  <larry.jones@sdrc.com>
3900
3901         * rcs.c (RCS_fully_parse, RCS_getdeltatext): Add the missing revision
3902         number to the "mismatch" error message.
3903
3904         * sanity.sh (multiroot2-9a): Update to match changes to lock.c.
3905
3906 2001-09-26  Larry Jones  <larry.jones@sdrc.com>
3907
3908         * lock.c (Lock_Cleanup, Reader_Lock, write_lock): Add trace messages.
3909
3910 2001-09-24  Derek Price  <dprice@collab.net>
3911
3912         * find_names.c (add_entries_proc): Leave closure specified as such in the
3913         function definition for clarity.
3914
3915         * find_names.c (Find_Names): Use 'closure' feature of walklist()
3916         to eliminate the static variable.
3917         (add_entries_proc): Expect closure to be the file list.
3918         (Patch from Alexey Mahotkin  <alexm@hsys.msk.ru>.)
3919
3920 2001-09-19  Derek Price  <dprice@collab.net>
3921
3922         * rcs.c (rcsbuf_valpolish_internal): Restore one of the
3923         "if ( ... ) abort();" sequences since it seems to check the validity of
3924         the RCS file rather than for a programming error.  Also added a FIXME
3925         comment to the effect that we should explain the RCS file error to the
3926         user as such if it is such.
3927         (Thanks to Larry Jones  <scjones@sdrc.com>.)
3928
3929 2001-09-19  Derek Price  <dprice@collab.net>
3930
3931         * rcs.c (rcsbuf_getkey, rcsbuf_valpolish_internal): Replace some code
3932         of the form "if ( ... ) abort();" with equivalent calls to assert().
3933
3934 2001-09-17  Derek Price  <dprice@collab.net>
3935
3936         * myndbm.c (mydbm_load_file): Fix buffer overflow error and make error
3937         messages more informative.
3938         * sanity.sh (modules6): New test.
3939         (Original report from Taska <taska@collab.net> and others.)
3940
3941 2001-09-14  Derek Price  <dprice@collab.net>
3942
3943         * logmsg.c (do_verify): Dispose memory when finished with it.
3944
3945 2001-09-07  Larry Jones  <larry.jones@sdrc.com>
3946
3947         * mkmodules.c (notify_contents): In the example, move the %s to
3948         the end since many, if not most, versions of mail insist on
3949         options coming before addresses.
3950
3951 2001-09-06  Derek Price  <dprice@collab.net>
3952
3953         * login.c (login): Deal with NULL return value from getpass.
3954
3955 2001-09-04  Derek Price  <dprice@collab.net>
3956
3957         * Makefile.in: Regenerated with automake 1.5.
3958         * stamp-h2.in: Ditto.
3959
3960 2001-09-04  Derek Price  <dprice@collab.net>
3961
3962         * main.c (main): Fix empty CVSROOT message to specify `valid' instead
3963         of `legal'.
3964
3965 2001-09-04  Derek Price  <dprice@collab.net>
3966
3967         * server.c (pserver_authenticate_connection): Back out changes from the
3968         30th and...
3969         * getline.c (getstr): init the buffer instead.
3970
3971 2001-08-31  Derek Price  <dprice@collab.net>
3972
3973         * Makefile.in: Backed out accidental commit from yesterday.
3974
3975 2001-08-30  Derek Price  <dprice@collab.net>
3976
3977         * server.c (pserver_authenticate_connection): Don't print from the
3978         NULL pointer in the error message string in the case where the client
3979         didn't send any data.
3980         * sanity.sh (pserver): Test for this case.
3981         (Report from Mark Welch <mark@collab.net>).
3982
3983 2001-08-24  Derek Price  <dprice@collab.net>
3984
3985         * logmsg.c (do_editor): Add comment and assertion.
3986         * import.c (import): Don't call do_editor with a repository argument
3987         in client mode.
3988         (Report and original patch from darkness <darkness@invado.com>.)
3989
3990 2001-08-24  Larry Jones  <larry.jones@sdrc.com>
3991
3992         * log.c (log_expand_revlist): Arrange for nil revision specs to
3993         select nothing instead of everything.
3994         * sanity.sh (log): New tests for above.
3995
3996 2001-08-24  Derek Price  <dprice@collab.net>
3997
3998         * parseinfo.c (Parse_Info): Change the function name in the trace
3999         and add the client/server string.
4000
4001 2001-08-24  Derek Price  <dprice@collab.net>
4002
4003         * Implement RereadLogAfterVerify CVSROOT/config option to control
4004         FreeBSD read-write of log messages in the verification script.
4005         * logmsg.c: RereadLogAfterVerify defaults to LOGMSG_REREAD_NEVER
4006         to preserve the status quo.
4007         * parseinfo.c (parse_config): Add parsing for RereadLogAfterVerify
4008         option. Possible values are: no | never | yes | always | stat
4009         * cvs.h: Add extern for RereadLogAfterVerify and new value macros
4010         LOGMSG_REREAD_NEVER, LOGMSG_REREAD_ALWAYS, LOGMSG_REREAD_STAT for
4011         its values.
4012         (Patch from Mark D. Baushke  <mdb@cvshome.org>.)
4013
4014         * Apply changes from FreeBSD cvs sources to implement a read-write
4015         user-defined verification script.
4016         * logmsg.c (do_verify): Update do_verify to expect a pointer
4017         to the saved message. The log file passed to the verifymsg_script
4018         should be re-read after the user-defined verification script has
4019         been run. The user-defined verification script is allowed to
4020         modify the message.  This allows the script to add extra
4021         information to the log message or to remove template lines that
4022         are not needed.
4023         * cvs.h: Update prototype for do_verify prototype to expect a
4024         pointer to the saved_message.
4025         * commit.c (commit, commit_fileproc, commit_direntproc): Update
4026         calls to do_verify as the saved_message arg is now read-write.
4027         * import.c (import):  Update calls to do_verify as the
4028         saved_message arg is now read-write.
4029         * sanity.sh (info-v4-[12]): Rename the old info-v4 test to info-v5
4030         and add a new info-v4 test case have the verification script
4031         modify the log message to test the above changes.
4032         (Patch from Mark D. Baushke  <mdb@cvshome.org>.)
4033
4034         * logmsg.c: Change RereadLogAfterVerify default to always.
4035         (do_verify): Reformat and make minor fixes to Mark's patch.
4036         * mkmodules.c (config_constants): Add comment about
4037         RereadLogAfterVerify.
4038         * sanity.sh (info-rereadlog): Rename the tests from Mark's patch and
4039         reformat them a bit.
4040
4041 2001-08-23  Derek Price  <dprice@collab.net>
4042
4043         * sanity.sh (info): Demonstrate that the verifymsg scripts can
4044         sometimes, but not always, retreive information on which directory is
4045         being committed to.
4046
4047 2001-08-22  Derek Price  <dprice@collab.net>
4048
4049         * logmsg.c: Back out the last change - the repository which is passed
4050         in is actually the directory and changes with each call to do_verify.
4051         If a verifymsg script is using `pwd`, this could change the operation.
4052         * cvs.h: Ditto.
4053         * commit.c: Ditto.
4054         * import.c: Ditto.
4055
4056 2001-08-22  Derek Price  <dprice@collab.net>
4057
4058         * logmsg.c (do_editor): Return reused_message.
4059         (do_verify): Don't verify the same log message more than once.
4060         * cvs.h: Update prototypes for do_verify and do_editor.
4061         * commit.c (commit_fileproc, commit_direntproc): Use the new functionality.
4062         * import.c (import): Ditto.
4063
4064 2001-08-22  Derek Price  <dprice@collab.net>
4065
4066         * logmsg.c (do_verify): Remove an unecessary "else" clause following an
4067         exit and unindent the former contents.
4068
4069 2001-08-22  Derek Price  <dprice@collab.net>
4070
4071         * commit.c (commit): Don't call do_verify in client mode since we know
4072         do_verify will just return anyhow.
4073
4074 2001-08-20  Derek Price  <dprice@collab.net>
4075
4076         * Makefile.am (cvs_SOURCES): Add version.c and version.h.
4077         (BUILT_SOURCES): Add version.h.
4078         (Maintainer Targets): Remove version.h.
4079         * version.c: Remove @VERSION@ dependant bits.
4080         * version.c.in: Removed.
4081         * version.h.in: New file.
4082         (Original patch from Alexey Mahotkin <alexm@hsys.msk.ru>.)
4083
4084         * Makefile.am: Various modifications to make Automake, make dist, and
4085         windows targets work like they are supposed to.
4086         * version.h: New (generated) file.
4087
4088         * Makefile.in: Regenerated.
4089
4090 2001-08-09  Derek Price  <dprice@collab.net>
4091
4092         * client.c (socket_buffer_shutdown): Use recv instead of read and
4093         return 0 on success.
4094         (Patch from "Manfred Klug" <manklu@web.de>.)
4095
4096 2001-08-09  Derek Price  <dprice@collab.net>
4097
4098         * buffer.c (stdio_buffer_shutdown): Assume the buffer is not a socket
4099         when NO_SOCKET_TO_FD is defined.
4100         * client.c (make_bufs_from_fds): Add is_sock argument and remove fstat
4101         call and reference to S_ISSOCK since these functions aren't available
4102         under Windows.
4103         (connect_to_forked_server, connect_to_pserver, start_tcp_server,
4104         start_server, start_rsh_server): Use new argument.
4105         (Patch from "Manfred Klug" <manklu@web.de>.)
4106
4107         * buffer.c (stdio_buffer_shutdown): Various reformattings, fix bug
4108         where rsh pipes weren't being closed.
4109
4110 2001-08-09  Derek Price  <dprice@collab.net>
4111
4112         * sanity.sh (rmadd, rm-update-message, join-two-branch,
4113         ignore-on-branch): Change a few references to `cvs' to `$PROG'.
4114
4115 2001-08-07  Derek Price  <dprice@collab.net>
4116
4117         * build_src.com: Add annotate.c/annotate.obj,verify, correct zlib name.
4118         * patch.c: VMS time_t appears to be unsigned.   Add a cast when testing
4119         for (time_t)-1.
4120         * subr.c: #else,#endif for no symlinks should be moved.
4121         (Patch from Mike Marciniszyn <Mike.Marciniszyn@sanchez.com>.)
4122
4123 2001-08-06  Derek Price  <dprice@collab.net>
4124
4125         * Makefile.in: Regenerated.
4126
4127 2001-08-01  Derek Price  <dprice@collab.net>
4128
4129         * diff.c (diff): Send long option for side-by-side diffs to the server
4130         rather than '-y', for backwards compatibility with old servers.
4131         (Original patch from Peter Mathiasson <peter@mathiasson.nu>.)
4132
4133 2001-07-19  Larry Jones  <larry.jones@sdrc.com>
4134
4135         * mkmodules.c (cvswrappers_contents): Remove -t/-f since they're
4136         disabled in wrapper.c.
4137
4138         * checkout.c (checkout): Don't complain about checking out into the
4139         repository when piping output.
4140         (Reported by der Mouse <mouse@Rodents.Montreal.QC.CA>.)
4141         * sanity.sh (checkout_repository): New tests for above.
4142
4143 2001-07-10  Larry Jones  <larry.jones@sdrc.com>
4144
4145         * sanity.sh (importc-7): Now works correctly in local mode.
4146
4147         * commit.c (commit_dirleaveproc): We're still in the directory when
4148         this is called, so the first argument to Name_Repository needs to
4149         be NULL, not dir.
4150         * sanity.sh (rmadd): New tests for above.
4151
4152         * commit.c (commit): Reword error messages for committing as root.
4153
4154 2001-07-08  Larry Jones  <larry.jones@sdrc.com>
4155
4156         * rcs.c (RCS_checkout): Correct scanf format to allow for trailing
4157         NUL terminator.
4158         * update.c (special_file_mismatch): Ditto.
4159         (Reported by Pekka Savola <pekkas@netcore.fi>.)
4160
4161 2001-07-05  Larry Jones  <larry.jones@sdrc.com>
4162
4163         * client.c, root.c: Fix -Wall warnings.
4164
4165         * buffer.c: #include socket header to declare shutdown().
4166
4167         * rcs.c (rcsbuf_open): Use getpagesize() instead of sysconf() for
4168         portability.
4169         (RCS_copydeltas, rcsbuf_fill): Fix -Wall warnings.
4170
4171 2001-07-04  Derek Price  <dprice@collab.net>
4172
4173         * Makefile.in: Regenerated with new Automake release candidate 1.4h.
4174
4175 2001-07-03  Derek Price  <dprice@collab.net>
4176
4177         * rcs.c (rcsbuf_open): Reduce memory consumption still further by not
4178         mmapping the entire file when pos is specified.
4179         (rcsbuf_cache_open): Add FIXME comment wrt read-only mmaps and rcsbuf
4180         caching.
4181
4182 2001-07-03  Derek Price  <dprice@collab.net>
4183
4184         * rcs.c (rcsbuf_open): Use mmap when possible to reduce memory
4185         consumption, especially with large (e.g. binary) files.
4186         (rcsbuf_close): Call munmap.
4187         (rcsbuf_getkey): Remove the buffer fill code when using mmap.
4188         (rcsbuf_getrevnum): Ditto.
4189         (rcsbuf_fill): Remove this function when using mmap.
4190         (rcsbuf_cache_open): Mostly don't use this function with mmap.
4191         (RCS_copydeltas): Don't depend on the file pointer with mmap.
4192
4193         * stamp-h2.in: Regenerated.
4194
4195 2001-07-03  Derek Price  <dprice@collab.net>
4196
4197         * update.c: Indent compiler directives.
4198
4199 2001-07-02  Larry Jones  <larry.jones@sdrc.com>
4200
4201         * import.c (update_rcs_file): Use -kb instead of -ko when comparing
4202         binary files.
4203         (Reported by Gyula Faller <gfaller@graphisoft.hu>.)
4204
4205 2001-06-28  Larry Jones  <larry.jones@sdrc.com>
4206
4207         * checkout.c (checkout): Explicitly initialize all the static options
4208         so that multiple calls work right.  Also fix potential memory leaks.
4209         (Reported by Dr. Dieter Maurer <dieter@sz-sb.de>.)
4210
4211 2001-06-28  Derek Price  <dprice@collab.net>
4212
4213         * Makefile.in: Regenerated with new version of Automake.
4214
4215 2001-06-28  Larry Jones  <larry.jones@sdrc.com>
4216
4217         * checkout.c (checkout): Set history_name for export as well as
4218         checkout.
4219         (checkout_proc): Use it.
4220
4221         * checkout.c (safe_location): Add missing argument in error message.
4222
4223 2001-06-26  Larry Jones  <larry.jones@sdrc.com>
4224
4225         * recurse.c (start_recursion): Use strip_trailing_slashes instead
4226         of doing it by hand.
4227
4228         * server.c (pserver_authenticate_connection): Don't clear out
4229         descrambled_password until *after* it's (potentially) logged.
4230         (Reported by Eric Hanchrow <offby1@blarg.net>.)
4231
4232 2001-06-25  Larry Jones  <larry.jones@sdrc.com>
4233
4234         * recurse.c (start_recursion): Deal with at least some of the cases
4235         where trailing slashes cause confusion.
4236         (Reported by Malcolm Fernandes <fernande@redback.com>.)
4237         * sanity.sh (basica, basicb): Tweak existing tests to check this.
4238
4239 2001-06-22  Larry Jones  <larry.jones@sdrc.com>
4240
4241         * sanity.sh (modules5): New tests with -d on command line.
4242
4243 2001-06-21  Larry Jones  <larry.jones@sdrc.com>
4244
4245         * modules.c (do_module): Use run_module_prog and server_active to
4246         determine when to call server_prog instead of using server_expanding
4247         so that we get the right paths in the replies as long as we take
4248         mwhere into account in addition to where.
4249         (Reported by Pascal Bourguignon <pjb@informatimago.com>.)
4250         * server.c (server_prog): Use protocol pipe instead of buf_to_net.
4251         * sanity.sh (modules5): Remove FIXCVS comment and update to match.
4252         * server.c, server.h: Remove server_expanding since now unused.
4253
4254 2001-06-21  Larry Jones  <larry.jones@sdrc.com>
4255         for Stephen Rasku  <stephen@tgivan.com>
4256
4257         * admin.c: Corrected spelling mistakes in help.
4258
4259 2001-06-20  Derek Price  <dprice@collab.net>
4260
4261         * client.c (socket_buffer_shutdown): Fix untested typos.
4262         (Reported by "Jerzy Kaczorowski" <jerzyk@wndtabs.com>.)
4263
4264         * buffer.c (stdio_buffer_shutdown): Put the call to SHUTDOWN_SERVER in
4265         the correct place.
4266
4267 2001-06-20  Derek Price  <dprice@collab.net>
4268
4269         * logmsg.c (do_editor): Abort in the case that the file has only
4270         comment lines.
4271         (Original patch from Mark Valentine <mark@thuvia.demon.co.uk>.)
4272
4273         * logmsg.c (do_editor): Fix rare memory leak.
4274         * sanity.sh (editor): Add tests for aborted log messages.
4275
4276 2001-06-20  Larry Jones  <larry.jones@sdrc.com>
4277
4278         * server.c (switch_to_user): Only set $CVS_USER if
4279         AUTH_SERVER_SUPPORT is defined.
4280         (Reported by Nalin Dahyabhai <nalin@blade.devel.redhat.com>.)
4281
4282 2001-06-13  Derek Price  <dprice@collab.net>
4283
4284         * client.c: Fix incorrect fixed-size buffer usage in
4285         connect_to_gserver().
4286         (Minor changes to a patch from Alexey Mahotkin  <alexm@hsys.msk.ru>.)
4287
4288 2001-06-11  Derek Price  <dprice@collab.net>
4289
4290         * main.c (main): Always print $CVSROOT when parse_cvsroot fails.
4291         * root.c (parse_cvsroot): Tidy error messages and provide more
4292         consistent behavior.
4293         * sanity.sh (crerepos): Adapt to new error messages.
4294         (Suggested by  Alexey Mahotkin <alexm@hsys.msk.ru>.)
4295
4296 2001-06-08  Derek Price  <dprice@collab.net>
4297
4298         * sanity.sh (tagf-28): Use $CVSROOT_DIRNAME.
4299
4300 2001-06-07  Larry Jones  <larry.jones@sdrc.com>
4301
4302         * rcs.c (RCS_unlock): Reverse kj's change of 1999-10-18: a bare -u
4303         should never break locks, you have to specify a specific revision
4304         to do that.  Also add an informative message for a bare -u when
4305         the user doesn't hold any locks.
4306         * commit.c (unlockrcs): Make RCS_unlock quiet, like RCS_lock.
4307         * sanity.sh (rmadd-24): Update to match.
4308
4309         * sanity.sh (crerepos-6a): Set CVS_RSH for ${testcvs}, not for
4310         dotest_fail.  Allow for "broken pipe" rather than "end of file".
4311
4312 2001-06-07  Derek Price  <dprice@collab.net>
4313
4314         * sanity.sh (tagf): Use $CVSROOT_DIRNAME rather than
4315         /tmp/cvs-sanity/cvsroot.
4316
4317 2001-06-06  Derek Price  <dprice@collab.net>
4318
4319         (Reformatting, bug fixes, tests, and comments to a
4320         patch from Stephen Cameron <steve.cameron@compaq.com>.)
4321
4322         * tag.c: (rtag_fileproc, rtag_delete, tag_fileproc)
4323           Changed behavior of "cvs tag -F", "cvs tag -d", "cvs rtag -F"
4324           and "cvs rtag -d" so that they will not disturb existing
4325           branch tags unless a new "-B" option is given.
4326         * sanity.sh (tagf-16 - tagf-33): Added tests for new -B option
4327           to "cvs tag" and "cvs rtag"
4328
4329 2001-06-06  Derek Price  <dprice@collab.net>
4330
4331         * sanity.sh (crerepos-6a): Set CVS_RSH=false and only for the actual
4332         test call at Larry's suggestion.  Also, test the error message since
4333         it's fixed now.
4334
4335 2001-06-05  Larry Jones  <larry.jones@sdrc.com>
4336
4337         * rcs.c (RCS_unlock): Note when breaking someone else's lock.
4338         (Reported by MURVAI-BUZOGANY Laszlo
4339         <Laszlo.MURVAI-BUZOGANY@gt-systems.hu>.)
4340         * sanity.sh (reserved-14): Update to match.
4341
4342 2001-06-05  Derek Price  <dprice@collab.net>
4343
4344         * sanity.sh (crerepos-6a): Set CVS_RSH=/bin/false...  this is a local
4345         mode only test anyhow.
4346         (Thanks to Larry Jones and Morgan Burke <morgan@sitka.triumf.ca>.)
4347
4348 2001-05-31  Derek Price  <dprice@collab.net>
4349
4350         * sanity.sh (rcs2-7): Add today to the list of failure dates for rcs2-7
4351         in the hopes that the data will eventually prove useful to someone
4352         motivated enough to fix the problem.
4353
4354 2001-05-30  Derek Price  <dprice@collab.net>
4355
4356         * stamp-h2.in: Regenerated.
4357
4358 2001-05-30  Derek Price  <dprice@collab.net>
4359
4360         * *: Various bug fixes and comments for the following
4361         patch from Donald Sharp <sharpd@cisco.com>:
4362
4363         * checkout.c (safe_location): cvs co -d <directory> still had
4364         failure modes from the way the -d option works.
4365         * sanity.sh: Misc error message resynching.
4366
4367 2001-05-29  Derek Price  <dprice@collab.net>
4368
4369         * Makefile.am (cvs_SOURCES): Add root.h.
4370
4371         * Makefile.in: Regenerated.
4372         * stamp-h2.in: Regenerated.
4373
4374 2001-05-29  Derek Price  <dprice@collab.net>
4375
4376         * checkout.c (safe_location): Correct formatting.
4377
4378 2001-05-29  Derek Price  <dprice@collab.net>
4379
4380         * root.c (parse_cvsroot): Fix a comment.
4381
4382 2001-05-26  Larry Jones  <larry.jones@sdrc.com>
4383
4384         * checkout.c (safe_location): Use old-style definition to keep
4385         non-ANSI compilers happy.
4386
4387         * sanity.sh (check_respository): Use ${CVSROOT_DIRNAME} instead
4388         of /tmp/cvs-sanity/cvsroot.
4389
4390 2001-05-25  Larry Jones  <larry.jones@sdrc.com>
4391
4392         * sanity.sh (modules5): Add sleep to script to help avoid out of
4393         order messages.
4394
4395         * filesubr.c (mkdir_if_needed): Return 1 if the directory exists
4396         reguardless of what errno is set to.
4397         (Reported by "Robinson, Greg" <greg.robinson@dsto.defence.gov.au>.)
4398
4399 2001-05-25  Derek Price  <dprice@collab.net>
4400         for Donald Sharp  <sharpd@cisco.com>
4401
4402         * checkout.c:  Modified safe_location() to refuse checkout if
4403         the -d option to co specifies inside of the repository.
4404         * import.c:  New parameter to safe_location needed to be added.
4405         * cvs.h:  New parameter to safe_location needed to be added.
4406         * sanity.sh:  Test case to test for failure mode.
4407
4408 2001-05-23  Larry Jones  <larry.jones@sdrc.com>
4409
4410         * checkout.c (checkout_proc): Don't build top_level_admin directory
4411         when exporting.
4412         (Reported by Tony Byrne <tonyb@directski.com>.)
4413
4414 2001-05-21  Derek Price  <dprice@collab.net>
4415
4416         * client.c: Fix a mispelling in a comment.
4417         (Patch from Alexey Mahotkin <alexm@hsys.msk.ru>).
4418
4419 2001-05-05  Larry Jones  <larry.jones@sdrc.com>
4420
4421         * login.c (password_entry_operation): Only warn if unable to open
4422         .cvspass for reading: may be initial login and it doesn't exist yet.
4423
4424 2001-05-15  Derek Price  <dprice@collab.net>
4425
4426         * client.c (start_tcp_server): Use the struct sockaddr_in declared in
4427         the function.
4428         (Reported by Emil Isberg <isberg@dynarc.se>.)
4429
4430 2001-05-05  Larry Jones  <larry.jones@sdrc.com>
4431
4432         * annotate.c (annotate): Pass local to do_module and rannotate_proc
4433         so that -l actually works.
4434         * log.c (cvslog): Ditto.
4435         * patch.c (patch): Ditto; make local local instead of global.
4436         (patch_proc): Use local_specified parameter instead of global.
4437         * tag.c (cvstag, rtag_proc): Ditto.
4438
4439 2001-05-05  Larry Jones  <larry.jones@sdrc.com>
4440
4441         * client.h: Declare "struct buffer" outside prototype for __STDC__
4442         compilers.
4443
4444 2001-05-04  Derek Price  <dprice@collab.net>
4445
4446         * client.c:  General refactoring.  Removed several global variables in
4447         favor of passing locals and/or dynamic evaluation.
4448         (recv_line): Removed this function.
4449         (make_bufs_from_fds): New function with factored code.
4450         (connect_to_forked_server): New prototype.  Use new functions.
4451         (connect_to_pserver): New prototype.  Use new functions.
4452         (connect_to_gserver): New prototype.  Use new API.
4453         (auth_server): Factored this portion of the pserver code so it can be
4454         shared.  Rewrote to use buffers rather than depending on a socket.
4455         (start_rsh_server): New prototype.  Use new API.
4456         (start_tcp_server): New prototype.  Use new API.
4457         (start_server): Factor some code.  Use new API.
4458         * client.h: New prototypes.
4459         * cvs.h: Gratuitous reformatting.  Use new root.h.
4460         * login.c (login): Use new connect_to_pserver API.
4461         * root.h: New file.  Contains some code that used to be in cvs.h.
4462
4463 2001-05-04  Derek Price  <dprice@collab.net>
4464
4465         * client.c: Gratuitous reformatting.
4466         * client.h: Ditto.
4467
4468 2001-05-04  Derek Price  <dprice@collab.net>
4469
4470         * zlib.c (compress_buffer_shutdown_input): Use new buffer shutdown
4471         prototype.
4472         (compress_buffer_shutdown_output): Ditto.
4473         (Thanks to Pavel Roskin <proski@gnu.org>.)
4474
4475 2001-05-03  Derek Price  <dprice@collab.net>
4476
4477         * buffer.c (struct stdio_buffer_closure): New structure to hold a
4478         FILE * and the child's PID when necessary.
4479         (stdio_buffer_initialize): Change proto to accept PID.  Set up new
4480         closure.  Pass new stdio_buffer_shutdown to buf_initialize.
4481         (stdio_buffer_input): Use new closure.
4482         (stdio_buffer_output): Ditto.
4483         (stdio_buffer_flush): Ditto.
4484         (stdio_buffer_shutdown): New function.  Teach buffer to close itself.
4485         (packetizing_buffer_shutdown): Use new buffer shutdown proto.
4486         * buffer.h (struct buffer): New buffer shutdown proto.
4487         (stdio_buffer_initialize): New proto.
4488         * client.c (log_buffer_shutdown): Use new proto.
4489         (socket_buffer_initialize): Pass shutdown func.
4490         (socket_buffer_shutdown): New function.
4491         * server.c (get_responses_and_close): Remove most of the guts.  Rely
4492         on the buffer shutdown function from now on.
4493         (start_rsh_server): Return child PID.
4494
4495 2001-05-03  Larry Jones  <larry.jones@sdrc.com>
4496
4497         * history.c (history_write): Handle the case where the user's home
4498         directory doesn't exist gracefully instead of erroring out.
4499         (Reported by David Hoover <dhoover@cadence.com>.)
4500
4501 2001-05-03  Derek Price  <dprice@collab.net>
4502
4503         * cvs.h: s/allocate_and_strcat/xrealloc_and_strcat/ since that is what
4504         I wrote in the ChangeLog, oh, so long ago.
4505         * diff.c (diff): Ditto.
4506         * subr.c (allocate_and_strcat, xrealloc_and_strcat): Ditto.
4507
4508 2001-05-02  Larry Jones  <larry.jones@sdrc.com>
4509
4510         * rcs.c (RCS_getdate): Handle the (unusual!) case where we
4511         can't find any revisions at all.
4512         (Reported by Ryan Grow <rgrow@Dbdoctor.net>.)
4513
4514 2001-04-30  Larry Jones  <larry.jones@sdrc.com>
4515
4516         * sanity.sh (multiroot2-9a): Rename (from multiroot2-9) to avoid
4517         duplicate names; fix to work without SERVER_SUPPORT defined.
4518         (Reported by Pavel Roskin <proski@gnu.org>.)
4519
4520 2001-04-29  Derek Price  <dprice@collab.net>
4521
4522         * Makefile.am (check-local): Make dependent on localcheck and
4523         remotecheck and move old check target...
4524         (localcheck): here.
4525
4526         * Makefile.in: Regenerated.
4527
4528 2001-04-27  Larry Jones  <larry.jones@sdrc.com>
4529
4530         * sanity.sh (pserver): Add tests for readers and writers.
4531
4532 2001-04-27  Derek Price  <dprice@collab.net>
4533
4534         * sanity.sh (version-2r): Update to handle patch releases in version
4535         numbers.
4536
4537 2001-04-27  Derek Price  <dprice@collab.net>
4538
4539         * version.c: Regenerated.
4540
4541 2001-04-27  Derek Price  <dprice@collab.net>
4542
4543         * version.c: Regenerated.
4544
4545 2001-04-27  Larry Jones  <larry.jones@sdrc.com>
4546
4547         * main.c (lookup_command_attribute): Lookup specified command, not
4548         whatever's in the global command_name.
4549
4550 2001-04-25  Derek Price  <dprice@collab.net>
4551
4552         * Makefile.in: Regenerated using AM 1.4e as of today at 18:10 -0400.
4553         * version.c: Regenerated.
4554
4555 2001-04-22  Larry Jones  <larry.jones@sdrc.com>
4556
4557         * tag.c (tag_check_valid): Make an unwritable val-tags file a
4558         warning instead of a fatal error.
4559
4560 2001-04-20  Larry Jones  <larry.jones@sdrc.com>
4561
4562         * annotate.c (annotate_usage): -r and -D are not mutually exclusive.
4563         * main.c (cmd_usage): Add missing version subcommand.
4564         * update.c (update_usage): Add missing -C option.
4565
4566         * sanity.sh (death2): New tests for previous change.
4567
4568         * classify.c (Classify_File): Treat a dead revision like the RCS
4569         file doesn't exist.
4570         * sanity.sh: Update to match.
4571
4572 2001-04-16  Larry Jones  <larry.jones@sdrc.com>
4573
4574         * checkout.c, update.c: Fix usage messages: -r and -D are not
4575         mutually exclusive.
4576         (Suggested by David L. Martin <dlmart2@home.com>.)
4577
4578         * logmsg.c (do_editor): Don't add a blank line to the message.
4579         * sanity.sh (editor-log-file*): Update to match.
4580
4581         * checkout.c, update.c: Note in usage message that -k is sticky.
4582
4583         * server.c: (server_cleanup, wait_sig): Remove ancient SunOS kludge.
4584         (Suggested by Rob Saccoccio <robs@chelsea.net>.)
4585
4586 2001-04-04  Larry Jones  <larry.jones@sdrc.com>
4587
4588         * sanity.sh (dotest, dotest_lit, dotest_fail, dotest_status,
4589         dotest_sort): Don't count on $? being set in then or else clauses.
4590
4591         * ignore.c (ignore_files): Collect unignored files into a list and
4592         sort it before calling PROC to avoid order dependencies.  Rewrite
4593         the while loop to allow normal continues instead of goto.
4594
4595 2001-04-04  Derek Price  <dprice@collab.net>
4596
4597         * sanity.sh (ignore-on-branch-3): Fix in the remote case.
4598
4599 2001-04-03  Larry Jones  <larry.jones@sdrc.com>
4600
4601         * update.c (update_fileproc): Remove unused variable (resurrecting).
4602
4603 2001-04-03  Derek Price  <dprice@collab.net>
4604             Larry Jones  <larry.jones@sdrc.com>
4605             reported by Jakob Bøhm  <JB@Danware.dk>
4606
4607         * update.c (update_fileproc): Don't store a file with T_UNKNOWN status
4608         in ignlist if present in the sandbox.
4609         * sanity.sh (ignore-on-branch): New test.
4610         (ignore): Tidy this test.
4611
4612 2001-04-02  Derek Price  <dprice@collab.net>
4613
4614         * sanity.sh: Make sure the test for `id' fails when a nonstandard `id'
4615         is used and the user is root.  Fix some quoting in error messages.
4616         (fork): Take `cvs' out of the PATH.
4617         (TODO): Add note about the test suite not working with user names over
4618         eight characters in length.
4619
4620 2001-04-02  Derek Price  <dprice@collab.net>
4621
4622         * sanity.sh (fork): New test for CVS_SERVER default.
4623         (TODO): Note about eventually removing most of the references to
4624         CVS_SERVER.
4625
4626 2001-04-02  Larry Jones  <larry.jones@sdrc.com>
4627
4628         * client.c (connect_to_forked_server): Use program_path as the default
4629         server instead of "cvs".
4630
4631 2001-04-02  Derek Price  <dprice@collab.net>
4632
4633         * sanity.sh: Use less obfuscated English in my comment about sanity
4634         checking sanity.sh.
4635
4636 2001-04-02  Derek Price  <dprice@collab.net>
4637
4638         * sanity.sh (rm-update-message): Create a test directory again but
4639         change back to the correct directory upon completion this time.
4640
4641 2001-04-02  Derek Price  <dprice@collab.net>
4642
4643         * sanity.sh: Change last two '[.*]'s to 'test's for
4644         consistency and remove...
4645         (TODO): the note from the TODO list.
4646
4647 2001-04-02  Derek Price  <dprice@collab.net>
4648
4649         * sanity.sh: Add test for PWD before successful exit.
4650
4651 2001-03-30  Larry Jones  <larry.jones@sdrc.com>
4652
4653         * sanity.sh (rm-update-message): Remove duplicate code.
4654
4655 2001-03-30  Derek Price  <dprice@collab.net>
4656
4657         * sanity.sh (rm-update-message): New test for local/client-server
4658         warning message discrepency.
4659
4660 2001-03-30  Larry Jones  <larry.jones@sdrc.com>
4661
4662         * annotate.c: Move annotate() here from rcs.c, support rannotate.
4663         * Makefile.am, Makefile.in: Add annotate.c.
4664         * main.c (cmds[], cmd_usage[]): Add rannotate.
4665         * rcs.c: Move declarations of rcs_delta_op and RCS_deltas to...
4666         * rcs.h:    ... here.
4667         * server.c (serve_rannotate): New.
4668         (requests[]): Add rannotate.
4669         * sanity.sh (ann): New tests for rannotate.
4670
4671         * log.c (rlog_proc): Remove dead code.
4672
4673 2001-03-30  Derek Price  <dprice@collab.net>
4674
4675         * sanity.sh (join-readonly-conflict): Run more of this through dotest.
4676
4677 2001-03-30  Larry Jones  <larry.jones@sdrc.com>
4678
4679         * log.c (log_fileproc): Don't output working file for rlog.
4680         * sanity.sh (log): New tests for rlog.
4681
4682         * cvs.h (mtype): Add MISC type.
4683         * log.c (cvslog): Support rlog as well as log.
4684         (rlog_proc): New.
4685         * main.c (cmds[], cmd_usage[]): Add rlog.
4686         (main): Remove old rlog warning message.
4687         * server.c (serve_rlog): New.
4688         (requests[]): Add rlog.
4689
4690 2001-03-29  Derek Price  <dprice@collab.net>
4691
4692         * sanity.sh: cd to $TESTDIR once after it is normalized.  Make TODO
4693         on history and symlinks more specific.  Tested properly this time.
4694
4695 2001-03-29  Larry Jones  <larry.jones@sdrc.com>
4696
4697         * main.c (cmds[], lookup_command_attribute, main): Include the
4698         command attributes in the global command table instead of inferring
4699         them from the command names.  Change the sense of the
4700         CVS_CMD_IGNORE_ADMROOT attribute to match its name.
4701
4702 2001-03-29  Derek Price  <dprice@collab.net>
4703
4704         * sanity.sh (*, basic2-64): Remove references to TMPPWD.  Fix FIXME
4705         at end of script now that $TESTDIR can't be relative.
4706
4707 2001-03-29  Derek Price  <dprice@collab.net>
4708
4709         * sanity.sh: Normalize TESTDIR even when the user set it.
4710
4711 2001-03-29  Larry Jones  <larry.jones@sdrc.com>
4712
4713         * client.c (connect_to_pserver, start_tcp_server): Add IP address
4714         to connect failed message.
4715         (connect_to_forked_server, connect_to_pserver, start_tcp_server): Add
4716         trace messages ala start_rsh_server.
4717         (start_rsh_server): Include entire command in trace message for
4718         START_RSH_WITH_POPEN_RW like ! START_RSH_WITH_POPEN_RW does.
4719
4720 2001-03-29  Derek Price  <dprice@collab.net>
4721
4722         * sanity.sh: Global search & replace ${TESTDIR}/cvsroot with
4723         ${CVSROOT_DIRNAME} for consistency.
4724
4725 2001-03-29  Derek Price  <dprice@collab.net>
4726
4727         * sanity.sh (conflicts-12[68].5): Remove sanity hack which has allowed
4728         for a CVS bug since May 96/97.  Not sure when the bug went bye-bye, but
4729         the tests broke when $TESTDIR != $TMPPWD.
4730
4731 2001-03-26  Larry Jones  <larry.jones@sdrc.com>
4732
4733         * classify.c (Classify_File): Don't report a conflict for a removed
4734         file when piping.  Also simplify the code structure.
4735         (Reported by Milos Kleint <milos.kleint@netbeans.com>.)
4736         * sanity.sh (rmadd2-14[abc]): New tests for above.
4737
4738 2001-03-24  Noel Cragg  <noel@shave.cnet.com>
4739
4740         * diff.c: mods to allow `-T' and `-y' options to be passed through
4741         to the diff library.  This wasn't allowed earlier because of a
4742         similarly named options that got passed through to the old rcs
4743         programs.  We've long since stopped sending `-T' to any rcs
4744         utility and have never used `-y'.  Any users of moldly CVS
4745         versions which used to support `-T' have (hopefully) upgraded to
4746         one where that option isn't supported.  It seems reasonable to
4747         enable them again and pass them through.  (sanity.sh still works
4748         anyways...)
4749         (longopts): add short option equivalents for --initial-tab and
4750         --side-by-side.
4751         (diff): add new short options to getopt string and switch
4752         statement.
4753
4754 2001-03-22  Larry Jones  <larry.jones@sdrc.com>
4755
4756         * sanity.sh: Add check for ${DOTSTAR} with large matches.
4757
4758 2001-03-23  Derek Price  <dprice@collab.net>
4759
4760         * sanity.sh: Do the same as below for $keep.
4761
4762 2001-03-23  Derek Price  <dprice@collab.net>
4763
4764         * sanity.sh: Replace 'remote=(yes|no)' with 'remote=(:|false)' since
4765         often 'false' and more often ':' are shell builtins.  This makes the
4766         succinct, 'if $remote; then' faster than 'if test $remote = yes; then'.
4767         Alter tests in the rest of the script to match the new usage.  Added
4768         a suffix of 'r' to remote test names when it was appropriate and I
4769         remembered.  Some reformatting.
4770
4771 2001-03-22  Larry Jones  <larry.jones@sdrc.com>
4772
4773         * sanity.sh (diffmerge1_yours, diffmerge1_mine): Check for exact
4774         output instead of using wildcards to avoid buffer overflows in some
4775         versions of expr.
4776
4777 2001-03-21  Derek Price  <dprice@collab.net>
4778
4779         * sanity.sh: cd to '/tmp' again rather than $HOME since HOME was set to
4780         a value inside ${TESTDIR} by the script.
4781
4782 2001-03-20  Derek Price  <dprice@collab.net>
4783
4784         * sanity.sh (diffmerge1): Minor formatting and syntax changes.
4785
4786             for Jacob Burckhardt  <bjacob@ca.metsci.com>
4787
4788         * sanity.sh (diffmerge1): More merging behavior tests.  Specifically,
4789         test some cases which broke before in Karl Tomlinson's diff fix was
4790         checked in today.
4791
4792 2001-03-20  Derek Price  <dprice@collab.net>
4793
4794         * sanity.sh: Don't use unescaped parens in sh outside of quotes.
4795
4796 2001-03-20  Derek Price  <dprice@collab.net>
4797
4798         * sanity.sh: Don't remove ${TESTDIR} when -k (keep) set.
4799
4800 2001-03-20  Derek Price  <dprice@collab.net>
4801
4802         * sanity.sh: Change usage to match the new getopts format and comment.
4803
4804 2001-03-16  Derek Price  <dprice@collab.net>
4805
4806         * sanity.sh (modules2-nestedrename): New test.  Verifies behavior of
4807         renames nested under an ampersand module.
4808         (modules2-ampertag): New test.  Verifies an error condition which
4809         prevents some ampersand modules from being checked out when a tag
4810         is specified.
4811
4812 2001-03-16  Derek Price  <dprice@collab.net>
4813
4814         * sanity.sh (modules2): Additional test for ampersand module behavior
4815         with '-d'.
4816
4817             for Greg Klanderman  <greg@itasoftware.com>
4818
4819         * checkout.c (build_one_dir): Fix typo where clauses of two
4820         conditionals were reversed in call to Create_Admin.  This caused
4821         the CVS/Tag file to be removed in cases where it should have been
4822         set, and vice-versa.  It only surfaced in rare cases as this code
4823         is only invoked when using the -d option to build the path to
4824         check out in.  Further, the bug would only matter when checking
4825         out a module containing ampersand modules within it, via
4826         client/server CVS.
4827
4828 2001-03-16  Derek Price  <dprice@collab.net>
4829
4830         * sanity.sh (admin-28-5): Confirm that a missing tag during an
4831         'admin -n' operation is not a fatal error.
4832
4833 2001-03-16  Derek Price  <dprice@collab.net>
4834
4835         * admin.c (admin_data): Remove 'quiet' member.
4836         (admin_fileproc): Use global 'really_quiet' rather than
4837         admin_data->quiet.
4838
4839 2001-03-16  Derek Price  <dprice@collab.net>
4840
4841         * sanity.sh (admin): Replace hardcoded testdir path with the variable.
4842
4843 2001-03-15  Derek Price  <derek.price@openavenue.com>
4844
4845         * sanity.sh (basica, binfiles, head, admin): Adjust for new messages.
4846         * admin.c (admin_fileproc): Only print messages when not in
4847         really_quiet mode.
4848
4849             for Stephen Rasku  <stephen@tgivan.com>
4850
4851         * rcs.c (RCS_tag2rev): Make a missing tag a survivable error.
4852
4853 2001-03-15  Larry Jones  <larry.jones@sdrc.com>
4854
4855         * subr.c (sleep_past): Fix various bugs that would result in a
4856         negative sleep time if it weren't unsigned; since it is, it would
4857         result in a very large sleep time.  Ensure that us is always less
4858         than 1000000.  Don't try to sleep for more 1 sec with usleep.
4859         Cast NULL select arguments to correct type just in case.
4860
4861 2001-03-14  Derek Price  <derek.price@openavenue.com>
4862
4863         * subr.c (sleep_past): New function.
4864         * client.c (get_responses_and_close): Use new function.
4865         * commit.c (commit): Ditto.
4866         * update.c (do_update): Ditto.
4867         * cvs.h: Prototype new function.
4868
4869         * stamp-h2.in: Regenerated.
4870
4871 2001-03-14  Derek Price  <derek.price@openavenue.com>
4872
4873         * Makefile.in: Regenerated.
4874         * stamp-h2.in: Ditto.
4875
4876 2001-03-14  Larry Jones  <larry.jones@sdrc.com>
4877
4878         * commit.c (check_fileproc): Allow adding on the trunk when there's
4879         an existing non-Attic RCS file as long as the head revision is dead.
4880         This can happen due to an aborted resurrection.
4881         (commit_fileproc): When resurrecting, consider the dead revision
4882         along with the other files' revisions.
4883         (findmaxrev): Avoid unnecessary work.
4884         (checkaddfile): Only warn if file isn't in Attic as expected.
4885         (Reported by Ross Burton <r.burton@180sw.com>.)
4886         * sanity.sh (basica-r*): New tests for above.
4887         (basica-o4): Update to match.
4888
4889 2001-03-09  Larry Jones  <larry.jones@sdrc.com>
4890
4891         * edit.c (edit_fileproc, unedit_fileproc): Some implementations of
4892         asctime/ctime apparently use a leading zero on the date instead
4893         of the space required by the C Standard.  Correct for this so that
4894         shared working directories work without hassle.
4895         (Reported by David L. Martin <dlmart2@home.com>.)
4896         * entries.c (fgetentent): Ditto.
4897         * vers_ts.c (time_stamp_server, time_stamp) Ditto.
4898
4899 2001-03-07  Larry Jones  <larry.jones@sdrc.com>
4900
4901         * sanity.sh (basica, binfiles2, head, admin): Update to match
4902         change to admin.c.
4903
4904 2001-03-06  Larry Jones  <larry.jones@sdrc.com>
4905
4906         * client.c (recv_bytes): Handle EOF as in recv_line().
4907         (Reported by Pavel Roskin <proski@gnu.org>.)
4908
4909         * admin.c (admin_fileproc): Change final error message to clarify
4910         that CVS refused to modify the RCS file rather than being unable to.
4911
4912 2001-02-28  Jim Meyering  <meyering@lucent.com>
4913
4914         * commit.c (commit_usage): Use `-F logfile' (rather than -F file') in
4915         the description of that option, to be consistent with the `-F logfile'
4916         in the Usage: line.  Use spaces instead of TAB characters, and realign.
4917
4918 2001-03-02  Derek Price  <derek.price@openavenue.com>
4919
4920         * sanity.sh (crerepos): Make failed ${CVS_RSH-rsh} attempt print the
4921         name of the command it actually used rather than 'rsh'.
4922
4923 2001-02-27  Derek Price  <derek.price@openavenue.com>
4924
4925         * sanity.sh (modules2-ampermod-*): Added these tests to make sure the
4926         top level directory is created in an ampermodule when '-n' is passed to
4927         checkout.
4928
4929         original bug report from
4930             Wolfgang Haefelinger <Wolfgang.Haefelinger@Dresdner-Bank.com>
4931
4932 2001-02-27  Derek Price  <derek.price@openavenue.com>
4933
4934         * sanity.sh (version-[12]): replace ' (client/server)' with .* in these
4935         two tests so that 'make check' works with whatever client/server
4936         options the executable was compiled with.
4937
4938 2001-02-23  Derek Price  <derek.price@openavenue.com>
4939
4940         * main.c (main): Only check a cvsroot_t's isremote member when client
4941         support is enabled.
4942         * server.c: Include GSSAPI headers with client support as well as
4943         server support.
4944
4945 2001-02-21  Larry Jones  <larry.jones@sdrc.com>
4946
4947         * modules.c, cvs.h (do_module): Add build_dirs argument and use it
4948         instead of run_module_prog.  Change all callers.
4949         * tag.c (cvstag): For rtag, don't build directories.
4950         * sanity.sh (modules3): Update to match.
4951
4952 2001-02-20  Derek Price  <derek.price@openavenue.com>
4953
4954         * client.c: Use xgssapi.h.
4955         * server.c: Ditto.
4956
4957 2001-02-15  Derek Price  <derek.price@openavenue.com>
4958
4959         * Makefile.am (cvs_SOURCES): Correct error from yesterday.
4960         * Makefile.in: Regenerated.
4961
4962 2001-02-14  Derek Price  <derek.price@openavenue.com>
4963
4964         * server.c: Include xselect.h.
4965         * update.c (do_update): Use best available sleep function.
4966
4967 2001-02-14  Derek Price  <derek.price@openavenue.com>
4968
4969         * Makefile.am (cvs_SOURCES): Alphabetize and split to one/line.
4970         (cvs_LDADD): Alphabetize and split to one/line.
4971         * Makefile.in: Regenerated.
4972
4973 2001-02-14  Larry Jones  <larry.jones@sdrc.com>
4974
4975         * build_src.com: Remove references to rtag.c & rtag.obj.
4976
4977 2001-02-13  Derek Price  <derek.price@openavenue.com>
4978
4979         * main.c (date_to_tm): New function to convert an RCS date string to a
4980         struct tm.
4981         (tm_to_internet): New function to convert a struct tm to a date string
4982         as specified by RFC822 and amended by RFC 1123.
4983         (date_to_internet): Use the above two functions and a struct tm
4984         intermediary for conversion.
4985         * patch.c (patch_fileproc): Answer somebody's comment and use the new
4986         diff_exec API.
4987         * rcs.c (RCS_checkin): Use new diff_exec API.
4988         (RCS_delete_revs): Use new diff_exec API.
4989         (make_file_label): If the file name is DEVNULL, date it the Epoch for
4990         compatibility with the POSIX.2 spec and Larry Wall's patch
4991         implementation.
4992         * rcscmds.c (diff_exec): Accept new label arguments.
4993         * sanity.sh (death2): Update some diff tests to accept the new format.
4994         * update.c (patch_file): Use new diff_exec API.
4995         * diff.c (diff_fileproc): Create header labels appropriate for
4996         compatibility with the Larry Wall version of patch.
4997         (diff): Rename calls to strcat_and_allocate.
4998         (strcat_and_allocate): Rename and move...
4999         * subr.c (xrealloc_and_strcat): here.
5000         * cvs.h: Update prototypes to match.
5001
5002 2001-02-13  Derek Price  <derek.price@openavenue.com>
5003
5004         * Makefile.am (cvs_SOURCES): Remove rtag.c.
5005
5006 2001-02-07  Larry Jones  <larry.jones@sdrc.com>
5007
5008         * sanity.sh (directory_cmp): Return status rather than setting ISDIFF.
5009         (basic2): Rewrite using dotest.
5010
5011 2001-02-06  Larry Jones  <larry.jones@sdrc.com>
5012
5013         * tag.c, rtag.c: Merge with tag.c being the surviving file.
5014         * Makefile.in: Update to match.
5015         * main.c (cmds): rtag() => cvstag().
5016         * server.c (serve_rtag): Ditto, and set command name.
5017
5018 2001-02-06  Derek Price  <derek.price@openavenue.com>
5019             Rex Jolliff  <Rex_Jolliff@notes.ymp.gov>
5020             Shawn Smith  <Shawn_Smith@notes.ymp.gov>
5021
5022         * add.c: Replace opendir, closedir, & readdir calls with CVS_OPENDIR,
5023         CVS_CLOSEDIR, & CVS_READDIR in support of changes to handle VMS DEC C
5024         5.7 {open,read,close}dir problems.  Check today's entry in the vms
5025         subdir for more.
5026         * filesubr.c: ditto
5027         * find_names.c: ditto
5028         * ignore.c: ditto
5029         * import.c: ditto
5030         * lock.c: ditto
5031         * update.c: ditto
5032
5033 2001-02-02  Larry Jones  <larry.jones@sdrc.com>
5034
5035         * error.h: Changed include guard macro from _error_h_ to ERROR_H;
5036         names beginning with underscore are reserved.
5037         * login.c (password_entry_parseline, password_entry_operation,
5038         password_entry_operation_e, password_entry_operation_t): Removed
5039         leading underscore(s).
5040         (password_entry_parseline): Corrected error messages.
5041         (password_entry_operation): Fixed uninitialized variable (password).
5042         (login): Removed unused variable (found_password).
5043
5044         * rtag.c (rtag_proc): Call lock_tree_for_write() before calling
5045         start_recursion.  This fixes a serious problem where do_recursion
5046         was reading and caching RCS files without any locks in place and
5047         that information was subsequently being used to rewrite the file
5048         causing any intermediate changes to be lost.
5049         (rtag_filesdoneproc): Defunct.
5050         (Reported by Karl Tomlinson <k.tomlinson@auckland.ac.nz>.)
5051         * tag.c (cvstag, tag_filesdoneproc): Ditto.
5052         * lock.c (lock_tree_for_write): Add which argument, change all
5053         callers to pass W_LOCAL.
5054         * rcs.h: Ditto.
5055
5056 2001-01-29  Derek Price  <derek.price@openavenue.com>
5057
5058         * client.c (get_cvs_port_number): change the prototype to accept a
5059         const cvsroot_t * as input and add a FIXME comment
5060         * cvs.h: new prototypes for get_cvs_port_number & normalize_cvsroot
5061         * login.c (_password_entry_operation): consolidate all the ~/.cvspass
5062         access into a single new function which reads ~/.cvspass in a backwards
5063         compatible manner
5064         (logout): use the new _password_entry_operation function
5065         (login): ditto
5066         (get_cvs_password): ditto
5067         * root.c (normalize_cvsroot): move knowledge of default port & username
5068         values inside
5069
5070 2001-01-29  Larry Jones  <larry.jones@sdrc.com>
5071
5072         * subr.c (shell_escape): New function.
5073         * cvs.h: Declare it.
5074         * logmsg.c (logfile_write): Use it to avoid problems with filenames
5075         containing "'".
5076         (Reported by Gerhard Ahuis <gerhard@ats.xs4all.nl>.)
5077
5078         * server.c (outbuf_memory_error, pserver_authenticate_connection,
5079         kserver_authenticate_connection): If available, use syslog() to
5080         record some errors.
5081
5082 2001-01-25  Larry Jones  <larry.jones@sdrc.com>
5083
5084         * server.c (do_cvs_command): If there's a partial output line left
5085         over and the client doesn't support MT, go ahead and send it in an
5086         M response instead of just dropping it.
5087         (Reported by Milos Kleint <Milos.Kleint@netbeans.com>.)
5088
5089         * update.c (update_fileproc): Handle toss_local_changes in the
5090         T_NEEDS_MERGE case.
5091         (Inspired by Noel L Yap <yap_noel@jpmorgan.com>.)
5092         * sanity.sh (clean): New tests for above.
5093
5094 2001-01-23  Derek Price  <derek.price@openavenue.com>
5095
5096         * run.c (run_exec): flush, if used, stderr and stdout before exit
5097         * server.c (cvs_flusherr): flush stderr & send a stderr flush command
5098         on the protocol pipe
5099         (cvs_flushout): like above, for stdout
5100         (do_cvs_command): handle flushes properly
5101         * sanity.sh (reserved): make the commitinfo script echo errors to
5102         stderr rather than stdin
5103
5104 2001-01-18  Larry Jones  <larry.jones@sdrc.com>
5105
5106         * log.c (option_revlist, revlist, log_usage, cvslog,
5107         log_parse_revlist, log_expand_revlist, log_version_requested): Add
5108         support for :: for exclusive ranges.
5109         * admin.c (admin_usage): Reorder -o to be parallel to log -r.
5110         * sanity.sh (log): New tests for above.
5111
5112 2001-01-18  Derek Price  <derek.price@openavenue.com>
5113
5114         * main.c: Add '2001' to the range of copyright years listed by the
5115         --version option
5116         * version.c.in (version): check current_parsed_root before its isremote
5117         member to avoid a core dump
5118         * sanity.sh (version): add a test for the version command
5119
5120         * version.c: regenerated
5121
5122 2001-01-12  Larry Jones  <larry.jones@sdrc.com>
5123
5124         * rcs.c, rcs.h (RCS_lock, RCS_unlock): Use RCS_gettag to find the
5125         correct revision so that symbolic tags work correctly.  (This
5126         requires removing the "const" from the rev parameter since it's
5127         passed to RCS_gettag which might modify it.)
5128         (Reported by irina sturm <irina.sturm@st.com>.)
5129
5130 2001-01-11  Larry Jones  <larry.jones@sdrc.com>
5131
5132         * run.c (close_on_exec): Remove check for FD_CLOEXEC.  As far as I
5133         can see, it's *never* been defined, which defeats the whole point.
5134         If F_SETFD is defined, it's probably safe to use it.
5135
5136         * server.c (do_cvs_command): Call close_on_exec on the protocol and
5137         flow control pipes in the child process so they don't get inherited
5138         by any subsidiary processes.
5139         (Reported by Tristan Gingold <tgi@netgem.com>.)
5140
5141         * cvs.h (free_cvsroot_t): Spell correctly (was free_CVSroot_t).
5142
5143 2001-01-10  Derek Price  <derek.price@openavenue.com>
5144             Rex Jolliff  <Rex_Jolliff@notes.ymp.gov>
5145
5146         * build_src.com: VMS changes
5147         * filesubr.c: replace calls to unlink() with CVS_UNLINK() for VMS
5148         * rcs.c: ditto
5149
5150 2001-01-10  Derek Price  <derek.price@openavenue.com>
5151
5152         * main.c (current_root): explicitly list this as a static global
5153
5154 2001-01-10  Derek Price  <derek.price@openavenue.com>
5155
5156         * cvs.h (get_cvs_port_number): change name & prototype from
5157         get_port_number
5158         * client.c (get_cvs_port_number): new function which returns a port
5159         number based on a cvsroot_t rather than requiring all possible sources
5160         passed in
5161         (connect_to_pserver): use new get_cvs_port_number function
5162         (connect_to_server): ditto
5163         * login.c (get_password): use new get_cvs_port_number function
5164         (login): ditto
5165         (logout): ditto
5166
5167 2001-01-10  Derek Price  <derek.price@openavenue.com>
5168
5169         * Makefile.am ($(srcdir)/version.c): specify $(srcdir) for all subparts
5170         of the build since some systems don't allow mv's across partitions
5171         * Makefile.in: regenerated
5172
5173 2001-01-10  Derek Price  <derek.price@openavenue.com>
5174
5175         * Makefile.am (version.c): specify $(srcdir) explicitly in target rule
5176         so version.c gets built properly for all makes.
5177         (version.o): specify $(srcdir)/version.c explicitly so dependency is
5178         found and built properly
5179         * Makefile.in: regenerated
5180
5181 2001-01-09  Derek Price  <derek.price@openavenue.com>
5182
5183         * version.c: updated timestamp
5184
5185 2001-01-09  Larry Jones  <larry.jones@sdrc.com>
5186
5187         * server.c (server): Change to server_temp_dir immediately after
5188         creating it so that any stray files that happen to be created go
5189         there instead of in the server's initial directory, wherever that
5190         may be.
5191         * sanity.sh (modules5-15): Update to match.
5192
5193         * version.c.in: Update to match Derek's change to version.c.
5194
5195 2001-01-09  Derek Price  <derek.price@openavenue.com>
5196
5197         * cvs.h: Remove the various CVSroot_* bits and replace them with a
5198         single structure of type cvsroot_t (current_parsed_root)
5199
5200         * root.c (parse_cvsroot): return pointer to a new cvsroot_t rather than
5201         altering global variables
5202         (local_cvsroot): return a pointer to a new cvsroot_t rather than
5203         setting globals.  changed the name of this function from
5204         set_local_cvsroot to better explain new functionality
5205         (new_cvsroot_t): new initializer function
5206         (free_cvsroot_t): new function
5207         (others): use current_parsed_root rather than the old CVSroot_* globals
5208
5209         * add.c: use current_parsed_root rather than the old CVSroot_* globals
5210         * admin.c: ditto
5211         * checkout.c: ditto
5212         * client.c: ditto
5213         * commit.c: ditto
5214         * create_adm.c: ditto
5215         * diff.c: ditto
5216         * edit.c: ditto
5217         * expand_path.c: ditto
5218         * find_names.c: ditto
5219         * history.c: ditto
5220         * ignore.c: ditto
5221         * import.c: ditto
5222         * lock.c: ditto
5223         * log.c: ditto
5224         * login.c: ditto
5225         * logmsg.c: ditto
5226         * main.c: ditto
5227         * mkmodules.c: ditto
5228         * modules.c: ditto
5229         * parseinfo.c: ditto
5230         * patch.c: ditto
5231         * rcs.c: ditto
5232         * recurse.c: ditto
5233         * release.c: ditto
5234         * remove.c: ditto
5235         * repos.c: ditto
5236         * rtag.c: ditto
5237         * server.c: ditto
5238         * status.c: ditto
5239         * tag.c: ditto
5240         * update.c: ditto
5241         * version.c: ditto
5242         * watch.c: ditto
5243         * wrapper.c: ditto
5244
5245 2001-01-05  Derek Price  <derek.price@openavenue.com>
5246
5247         * cvs.h (enum CVSmethod): add null_method
5248         * root.c (method_names): correlate null_method & "undefined"
5249         (parse_cvsroot): make two error cases non fatal
5250         * sanity.sh (crerepos-6b): account for new error message, re above
5251
5252 2001-01-05  Derek Price  <derek.price@openavenue.com>
5253
5254         * src/Makefile.am (cvsbug, cvsbug_EXTRA_DIST, EXTRA_DIST): move cvsbug
5255         target to configure.in - see ../ChangeLog for more
5256         * src/cvsbug.in: Rename from cvsbug.sh
5257         * src/cvsbug.sh: Rename to cvsbug.in
5258
5259 2001-01-04  Larry Jones  <larry.jones@sdrc.com>
5260
5261         * Makefile.am (cvsbug): Explicitly list input file ($< is only
5262         valid in inference rules).
5263         * Makefile.in: Ditto.
5264
5265 2001-01-04  Derek Price  <derek.price@openavenue.com>
5266
5267         * sanity.sh: use getopts rather than getopt for portability reasons
5268
5269 2001-01-03  Derek Price  <derek.price@openavenue.com>
5270
5271         * Makefile.am (remotecheck): depend on 'all'
5272         * Makefile.in: regenerated
5273
5274 2000-12-29  Derek Price  <derek.price@openavenue.com>
5275
5276         * sanity.sh: remove explicit "$@" from last checkin and move the 'do'
5277         to the line following the 'for'.  Apparently this is more portable.
5278
5279 2000-12-29  Derek Price  <derek.price@openavenue.com>
5280
5281         * sanity.sh: make "$@" explicit in 'for' statement since Solaris 5.6's
5282         implementation of Bourne shell doesn't seem to implement this default
5283         behavior.
5284
5285 2000-12-27  Derek Price  <derek.price@openavenue.com>
5286
5287         * sanity.sh: add a -f option for continuing from a particular test
5288         and shorten --keep to -k so we can use the getopt function.
5289
5290 2000-12-27  Derek Price  <derek.price@openavenue.com>
5291
5292         * Makefile.am (remotecheck): Make remotecheck dependant on all
5293         * Makefile.in: regenerated
5294
5295 2000-12-26  Derek Price  <derek.price@openavenue.com>
5296
5297         * Makefile.in: update timestamp
5298         * stamp-h2.in: ditto
5299         * version.c: ditto
5300
5301 2000-12-26  Derek Price  <derek.price@openavenue.com>
5302
5303         * Makefile.am: new target for version.c
5304         (EXTRA_DIST): add version.c.in & version.c so builds work when
5305         configure doesn't
5306         * Makefile.in: Regenerated
5307         * stamp-h2.in: update timestamp
5308         * version.c: ditto
5309
5310 2000-12-26  Derek Price  <derek.price@openavenue.com>
5311
5312         * Makefile.am (INCLUDES): add zlib
5313         * Makefile.in: Regenerated
5314
5315 2000-12-22  Derek Price  <derek.price@openavenue.com>
5316
5317         * Makefile.am (DISTCLEANFILES): added a few files
5318         (INCLUDES): commented
5319         * Makefile.in: Regenerated
5320
5321 2000-12-21  Derek Price  <derek.price@openavenue.com>
5322
5323         * .cvsignore: Added .deps directory and a new stamp file
5324         * Makefile.am: New file needed by Automake
5325         * Makefile.in: Regenerated
5326         * stamp-h2.in: New stamp file created by Automake
5327         * version.c.in: use configure to generate version.c
5328
5329 2000-12-16  Derek Price  <derek.price@openavenue.com>
5330
5331         * server.c (server_update): Keep the vers structure up to date after
5332         sending a Remove or Remove-entry command to the client
5333         * update.c (update): remove call to server_updated() after
5334         scratch_file()
5335         (scratch_file): in server mode, call server_updated(), otherwise keep
5336         the vers structure up to date
5337         (join_file): add a trace, save the revision to Register() on a remove
5338         before calling server_scratch & server_updated
5339         * sanity.sh (join): Add test for a remove/add caused by an update
5340         to a new branch and a join in the same step.
5341
5342 2000-12-15  Larry Jones  <larry.jones@sdrc.com>
5343
5344         * error.c (error): Add %ld and %lu.
5345
5346         * history.c: Change hrec.idx from int to long, reformat NEXT_BAR
5347         for readability, add hrec_idx.
5348         (fill_hrec): Change initialization to be portable and always set
5349         idx so it can be used as a line number in error messages; improve
5350         parsing and error checking.
5351         (read_hrecs): Initialize hrec_idx, handle embedded NULs, warn about
5352         no newline at end of file.
5353         (select_hrec): Add basic validity checking.
5354
5355 2000-12-07  Larry Jones  <larry.jones@sdrc.com>
5356
5357         * history.c (history): Allow multiple -m options as documented.
5358
5359 2000-11-29  Derek Price  <derek.price@openavenue.com>
5360
5361         * root.c (parse_cvsroot): back out yesterday's redundant changes
5362         * main.c (main): fix CVSROOT trace message to look like other trace
5363         messages
5364         * sanity.sh (multiroot2-9): expect new trace message
5365
5366 2000-11-28  Derek Price  <derek.price@openavenue.com>
5367
5368         * root.c (parse_cvsroot): add trace on this function
5369         * client.c (get_port_number): make trace print look like others
5370
5371 2000-11-16  Derek Price  <derek.price@openavenue.com>
5372
5373         * filesubr.c (cvs_temp_file): back out the previous change in the
5374         interests of portability, add an assertion, and fix the header comment
5375
5376 2000-11-16  Derek Price  <derek.price@openavenue.com>
5377
5378         * filesubr.c (cvs_temp_file): refine the exit behavior to notice if
5379         the out param was passed in NULL and, if so, avoid setting it and delete
5380         the temp file for later
5381
5382 2000-11-16  Derek Price  <derek.price@openavenue.com>
5383
5384         * filesubr.c (cvs_temp_file): fixed a garble or two, added some
5385         additional error checking, and added a comment
5386
5387 2000-11-15  Derek Price  <derek.price@openavenue.com>
5388
5389         * filesubr.c (cvs_temp_file): added cvs_temp_file
5390         function to use mkstemp rather than one of the other temp file
5391         generators as gcc keeps complaining I should.
5392         (cvs_temp_name): altered this function to simply wrap cvs_temp_file
5393         and deprecated it
5394         * cvs.h: added prototype for cvs_temp_file
5395         * commit.c (commit): use the new function instead of the old and plug
5396         an old (though related) memory leak.
5397         * import.c (import): use the new function
5398         * login.c (login): Ditto
5399         * logmsg.c (do_editor, do_verify): Ditto
5400         * patch.c (patch_fileproc): Ditto
5401
5402 2000-11-14  Larry Jones  <larry.jones@sdrc.com>
5403
5404         * update.c, update.h (do_update): Add xdotemplate parameter.
5405         Change all callers.
5406         (update_dirent_proc): Use dotemplate for Create_Admin, not 1.
5407         * checkout.c (checkout_proc): Don't create CVS/Template if
5408         exporting.
5409         (Reported by Andrey Podkolzin <mdh@zenon.net>.)
5410
5411 2000-11-08  Larry Jones  <larry.jones@sdrc.com>
5412
5413         * admin.c (admin): Use getgroups() to check for membership in
5414         CVS_ADMIN_GROUP if it exists.  In any event, check the user's
5415         primary group in addition to any additional groups.
5416         (Reported by Thomas Okken <TOkken@refco.com>.)
5417
5418 2000-11-06  Jim Meyering  <meyering@lucent.com>
5419
5420         Compile with gcc's -Wformat and fix the exposed problems.
5421         * root.c (parse_cvsroot) [! HAVE_KERBEROS]: Provide an argument
5422         for the %s error format spec.
5423         [! HAVE_GSSAPI]: Likewise.
5424         (normalize_cvsroot): Put comment delimiters around token after `#endif'.
5425
5426 2000-11-03  Larry Jones  <larry.jones@sdrc.com>
5427
5428         * sanity.sh: Some versions of sed require a space between -e and
5429         the value.
5430
5431 2000-10-27  Larry Jones  <larry.jones@sdrc.com>
5432
5433         * checkout.c (checkout): Don't check for a safe location if just
5434         cat'ing the module database.
5435         (Reported by Ilya Martynov <m_ilya@agava.com>.)
5436         Have -s set cat as well as status; it simplifies the code.
5437
5438 2000-10-26  Larry Jones  <larry.jones@sdrc.com>
5439
5440         * sanity.sh (join-admin-2): Check output from all commands instead
5441         of (mostly) discarding.  (Some of the tests used to produce stray
5442         output in remote mode.)
5443
5444         * sanity.sh (dotest_line_by_line): Handle empty lines in pattern
5445         (expr doesn't distingish between successfully matching nothing
5446         and failing to match anything).
5447
5448         * sanity.sh (dotest_internal): Rearrange and use elif to simplify.
5449
5450 2000-10-24  Jim Meyering  <meyering@lucent.com>
5451
5452         Fix a bug, introduced with my fix of 2000-07-10, whereby -kk would
5453         sometimes be ignored for some of the files involved in an update.
5454
5455         * update.c (join_file): Restore the original value of `options'
5456         right after calling checkout_file.
5457         * sanity.sh (join-admin-2): New test for this.
5458
5459 2000-10-23  Derek Price  <derek.price@openavenue.com>
5460             James Youngman  <jay@gnu.org>
5461
5462         * sanity.sh: it's /gnu/bin, not /gun/bin.  Thanks go to James Youngman
5463         <jay@gnu.org> for the bug report and patch.
5464
5465 2000-10-20  Jim Kingdon  <http://sourceforge.net/users/kingdon/>
5466
5467         * server.c (switch_to_user): Set CVS_USER.  Patch from Sudish
5468         Joseph and popularized by dozens (e.g. mozilla.org, also others).
5469
5470 2000-10-20  Derek Price  <derek.price@openavenue.com>
5471             KOIE Hidetaka  <hide@koie.org>
5472
5473         * root.c (normalize_cvsroot): plug a memory leak.  Thanks to
5474         KOIE Hidetaka <hide@koie.org>
5475
5476 2000-10-18  Derek Price  <derek.price@openavenue.com>
5477
5478         * client.c (connect_to_pserver): added a close brace the lack of which
5479         was preventing compilation when gssapi was enabled.  Removed a
5480         redundant check for HAVE_KERBEROS.
5481
5482 2000-10-18  Derek Price  <derek.price@openavenue.com>
5483
5484         * root.c (normalize_cvsroot): removed references to free_port_s and the
5485         now useless call to free now that port_s is on the stack.  Thanks to
5486         Jon Miner.
5487
5488 2000-10-18  Derek Price  <derek.price@openavenue.com>
5489
5490         * root.c (normalize_cvsroot): remove calls to snprintf for
5491         compatibility with M$ Windoze.
5492
5493 2000-10-18  Derek Price  <derek.price@openavenue.com>
5494
5495         * sanity.sh (crerepos-6a, crerepos-6a-r): fix a "?" in a regex & pipe
5496         the output of a test to /dev/null since we don't know what error
5497         messages specific rsh implementations will output.
5498
5499 2000-10-17  Derek Price  <derek.price@openavenue.com>
5500
5501         * cvs.h: added CVSroot_password variable. Provided prototypes for
5502         get_port_number & normalize_cvsroot.
5503         * client.c (get_port_number): Fixed an ANSI prototype I had included
5504         for get_port_number.
5505         * login.c (login, logout): Removed two checks for a non-null
5506         CVSroot_username since parse_cvsroot now supplies a default in pserver
5507         mode. allow for a password in CVSROOT
5508         (get_cvs_passsword): return CVSroot_password if it was supplied
5509         in the CVSROOT.
5510         * root.c (parse_cvsroot): Changed CVSROOT spec from
5511         :method:user@host/port:/cvsroot to
5512         :method:[[user][:password]@]host[:[port]]/cvsroot
5513         Removed the xstrdup function since we'd rather have the error checking
5514         from the version in subr.c anyhow.  Moved some error messages which
5515         looked like they would print the wrong error message after a failed
5516         connect_to_gserver call.
5517         (normalize_cvsroot): return a normalized CVSROOT for use in the
5518         .cvspass file.
5519         * sanity.sh (crerepos-6): fix a test which was expecting an old error
5520         message.
5521
5522         * client.c (connect_to_pserver): Moved some error messages which looked like they
5523         would print the wrong error message after a failed connect_to_gserver
5524         call.
5525
5526         * login.c (login): Paranoiacly zero a password in memory.
5527
5528 2000-10-12  Derek Price  <derek.price@openavenue.com>
5529
5530         * client.c (auth_server_port_number -> get_port_number, start_pserver,
5531         start_tcp_server): use a port specified in CVSROOT instead of the
5532         default port.  Failing that, use the CVS_CLIENT_PORT environment
5533         variable.
5534         * cvs.h: Added global CVSroot_port & renamed auth_server_port_number.
5535         * root.c (parse_cvsroot): Parse the new CVSROOT format properly.
5536         Incidentally reformated some error messages for uniformity and
5537         readability.
5538         * sanity.sh (crerepos): fix two tests which were now expecting the
5539         wrong error message.
5540
5541 2000-10-11  Larry Jones  <larry.jones@sdrc.com>
5542
5543         * server.c (pserver_authenticate_connection): Fix stupid mistake
5544         in previous change.
5545
5546 2000-10-11  Derek Price  <derek.price@openavenue.com>
5547
5548         * main.c (main): Dispose old CVSroot when parsing a '-d' option if
5549         free_CVSroot is set.
5550         * root.c (parse_cvsroot): remove references to 'cvsroot_parsed', a
5551         static boolean I expect hasn't been used since CVS learned to handle
5552         multiple CVSROOTs.
5553
5554 2000-10-10  Larry Jones  <larry.jones@sdrc.com>
5555
5556         * server.c (print_error): Make up a message if strerror fails.
5557
5558         * server.c (pserver_authenticate_connection): Give a real error
5559         message for an invalid repository.
5560
5561 2000-10-06  Derek Price  <derek.price@openavenue.com>
5562
5563         * add.c (add): Made quiet mode affect some warning messages as seemed
5564         appropriate.  Specifically, some of the messages which a user might
5565         want to ignore so they don't have to be quite so specific on the
5566         command line: files added twice, files already in the repository and
5567         check out properly (i.e. but picked up by 'cvs add *'), & files which
5568         are readded in place of a dead revision or onto a branch.  '-q' will
5569         not change the non-zero exit code for the cases where at least one
5570         passed in file name was already in the Entries file.  There seems to
5571         be a precedent in remove.c.
5572         * remove.c (cvsremove): switched the "use cvs ci to make these changes
5573         permanent message" to only print w/o '-Q' to match the new behavior of
5574         add.  This seems appropriate as '-Q' is defined to restrict messages
5575         to critical errors.
5576         * sanity.sh (adderrmsg): Added some tests for the above behavior.
5577
5578 2000-10-05  Larry Jones  <larry.jones@sdrc.com>
5579
5580         * client.c (call_in_directory): Create CVSADM directory if it doesn't
5581         exist in the directory.  This makes client/server work more like
5582         standalone when checking out into an existing (non-CVS) directory.
5583         * sanity.sh (dirs2, conflicts3, toplevel): Update to match.
5584
5585 2000-10-03  Larry Jones  <larry.jones@sdrc.com>
5586
5587         * filesubr.c (get_homedir): Ignore $HOME when running in server mode.
5588
5589 2000-10-02  Larry Jones  <larry.jones@sdrc.com>
5590
5591         * cvs.h: Define (and use) T_PATCH as a valid file classification
5592         even when SERVER_SUPPORT isn't defined -- it simplifies the code.
5593         * classify.c (Classify_File): Ditto.
5594         * commit.c (check_fileproc): Ditto.
5595         * status.c (status_fileproc): Ditto.
5596         * update.c (update_fileproc): Ditto.
5597         * tag.c (check_fileproc): Accept T_PATCH in addition to T_CHECKOUT.
5598         * sanity.sh (tagc-10): Update to match.
5599
5600 2000-09-29  Larry Jones  <larry.jones@sdrc.com>
5601
5602         * client.c (get_responses_and_close): Reset server_fd to -1 after
5603         shutting down.
5604         (Reported by Joerg Thoennes <Joerg.Thoennes@data-sciences.de>.)
5605
5606 2000-09-27  Larry Jones  <larry.jones@sdrc.com>
5607
5608         * commit.c (commit): Don't sleep before returning in server mode,
5609         just let the client do it.
5610         * update.c (do_update): Ditto.
5611
5612         * sanity.sh (find_tool): Correct method of checking for GNU tools.
5613
5614         * checkout.c (checkout_proc): Match up user directories with
5615         repository directories instead of using Emptydir.
5616         * sanity.sh (cvsadm, emptydir): Update to match.
5617
5618 2000-09-19  Larry Jones  <larry.jones@sdrc.com>
5619
5620         * version.c: Push version number to 1.11.0.1.
5621
5622         * version.c: Version 1.11.
5623
5624 2000-09-07  Larry Jones  <larry.jones@sdrc.com>
5625
5626         * Makefile.in: Use @bindir@, @libdir@, @infodir@, and @mandir@
5627         from autoconf.
5628
5629 2000-08-23  Larry Jones  <larry.jones@sdrc.com>
5630
5631         * mkmodules.c (init): Create an empty val-tags file if it doesn't
5632         already exist to avoid problems with users not having sufficient
5633         permissions to create it later.
5634
5635 2000-09-06  Jim Kingdon  <jkingdon@dhcp-net200-89.su.valinux.com>
5636
5637         * main.c (lookup_command_attribute): Add "release" to commands
5638         which can be done by a read-only user.
5639
5640 2000-08-23  Larry Jones  <larry.jones@sdrc.com>
5641
5642         * repos.c (Name_Repository): Use pathname_levels to detect attempts
5643         to get above the repository instead of checking for leading ..
5644         which isn't reliable.
5645         * sanity.sh (multiroot3-12 to multiroot3-15): New tests for above.
5646
5647 2000-08-21  Larry Jones  <larry.jones@sdrc.com>
5648
5649         * rcs.c (expand_keywords): Handle the unusual case of log == NULL.
5650         (Reported by Craig Metz <cmetz@inner.net>.)
5651
5652 2000-08-01  Larry Jones  <larry.jones@sdrc.com>
5653
5654         * subr.c (pathname_levels): Fix bug that miscounts adjacent
5655         slashes.
5656         (Patch submitted by Tanaka Akira <akr@m17n.org>.)
5657
5658         * loginc.c (login): If available, use getpassphrase instead of
5659         getpass to support long passwords on Solaris.
5660
5661 2000-07-28  Larry Jones  <larry.jones@sdrc.com>
5662
5663         * server.c (server_noop): Avoid do_cvs_command() overhead.
5664         (requests): Make noop RQ_ROOTLESS.
5665
5666 2000-07-27  Noel Cragg  <noel@red-bean.com>
5667
5668         * root.c (parse_cvsroot): change fork method to behave like other
5669         remote methods -- let the server check that the repository
5670         directory is an absolute pathname.
5671
5672 2000-07-27  Larry Jones  <larry.jones@sdrc.com>
5673
5674         * lock.c (set_lock): Include actual lock directory in error message.
5675         * sanity.sh (multiroot3-10): Change to match.
5676
5677         * sanity.sh (client-3): Allow for a potential "broken pipe".
5678
5679 2000-07-26  Larry Jones  <larry.jones@sdrc.com>
5680
5681         * commit.c (commit_filesdoneproc): Flush stdout before running script.
5682         * modules.c (do_module): Ditto.
5683         * update.c (update_dirleave_proc): Ditto.
5684         * server.c (do_cvs_command): Give input from the protocol pipe
5685         precedence over input from stdout/stderr.  There's no particularly
5686         good justification for this other than helping to avoid out-of-order
5687         messages in sanity.sh.
5688
5689         * admin.c (admin_usage): Add the supported options.
5690
5691         * sanity.sh (info): Try to avoid out-of-order messages.
5692
5693         * sanity.sh (info): Fix problems when running twice in a row.
5694
5695 2000-07-17  Larry Jones  <larry.jones@sdrc.com>
5696
5697         * sanity.sh (modules5-7, cvsadm-1e, emptydir-2): Allow for a nil
5698         commit (can happen if the test is run twice in a row).
5699
5700 2000-07-19  Pavel Roskin  <proski@gnu.org>
5701         and Larry Jones  <larry.jones@sdrc.com>
5702
5703         * mkmodules.c (config_contents): Add a commented out example for
5704         LockDir. Don't suggest PreservePermissions unless it's enabled.
5705
5706 2000-07-17  Larry Jones  <larry.jones@sdrc.com>
5707
5708         * login.c (get_cvs_password): Handle malformed ~/.cvspass more
5709         gracefully.
5710
5711 2000-07-12  Larry Jones  <larry.jones@sdrc.com>
5712
5713         * sanity.sh (modules5): New tests for module programs.
5714
5715 2000-07-11  Larry Jones  <larry.jones@sdrc.com>
5716
5717         * filesubr.c (copy_file, xcmp): Handle systems (like Plan 9) that
5718         don't support mknod() and/or st_rdev.
5719         * import.c (add_rcs_file): Ditto.
5720         * rcs.c (RCS_checkout, RCS_checkin): Ditto.
5721         * update.c (special_file_mismatch): Ditto.
5722
5723 2000-07-10  Larry Jones  <larry.jones@sdrc.com>
5724
5725         * zlib.c (gunzip_and_write): Fix type clashes.
5726
5727         * main.c (main): Remove unused variables.
5728
5729 2000-07-10  Jim Meyering  <meyering@lucent.com>
5730
5731         When a command like `cvs update -kk -jT1 -jT2' creates a new file
5732         (because it had the T2 tag, but not T1), the subsequent commit of
5733         that just-added file would effectively set the admin `-kk' option
5734         for that file in the repository.
5735
5736         * update.c (join_file): Rename global-shadowing local `options'
5737         to `t_options'.
5738         Set file-scoped global `options' to NULL just before
5739         check-out.
5740         * sanity.sh (join-admin): New test for this.
5741
5742 2000-07-08  Larry Jones  <larry.jones@sdrc.com>
5743
5744         * version.c, cvs.h (version): New function.
5745         * main.c (cmds[]): Add version command to invoke it.
5746         (main): Also use it in -v.
5747         * server.c (serve_version): New function.
5748         (requests[]): Add version command to invoke it.
5749
5750 2000-07-06  Karl Fogel  <kfogel@red-bean.com>
5751
5752         * sanity.sh (pserver-14): remove this test for portability
5753         reasons (it was only recently added for the 2000-07-04 change).
5754
5755 2000-07-06  Larry Jones  <larry.jones@sdrc.com>
5756
5757         sanity.sh (modules-148): Don't test for specific revisions.
5758
5759         * main.c (main): Catch SIGABRT to try to clean up after assertion
5760         failures.  Don't bother SIG_register'ing Lock_Cleanup because
5761         main_cleanup calls it indirectly anyway.
5762         * patch.c (patch): Catch SIGABRT.
5763         * rcs.c (rcs_internal_lockfile): Ditto.
5764         * server.c (server): Ditto.
5765
5766         * fileattr.c (fileattr_write): Don't delete the unrecog_head list
5767         when writing...
5768         (fileattr_free): Delete it when freeing!
5769
5770 2000-07-05  Larry Jones  <larry.jones@sdrc.com>
5771
5772         * admin.c (admin): Handle -t in client so reading from files works
5773         correctly in client/server mode.
5774         * sanity.sh (log2): Update to match.
5775
5776 2000-07-04  Karl Fogel  <kfogel@red-bean.com>
5777
5778         * server.c (pserver_authenticate_connection): use new
5779         getline_safe() during authentication phase, to avoid a
5780         denial-of-service attack in which client sends arbitrary
5781         amounts of data with no newlines.
5782         (Reported by <jpmg@eng.cam.ac.uk>.)
5783
5784         * sanity.sh: new test pserver-14 for above.
5785
5786         * myndbm.c: #include getline.h.
5787         (mydbm_load_file): pass new GETLINE_NO_LIMIT flag to getstr().
5788
5789 2000-07-03  Larry Jones  <larry.jones@sdrc.com>
5790
5791         * sanity.sh (modules): Rewrite using dotest.  Add "modules-"
5792         prefix to test names.
5793
5794 2000-06-28  Larry Jones  <larry.jones@sdrc.com>
5795
5796         * error.c (error_exit): Call rcs_cleanup () to release any rcs locks.
5797         * rcs.c, rcs.h (rcs_cleanup): Make public, close file before trying
5798         to remove (some systems won't remove open files).
5799         (RCS_putdtree): Don't worry about cleaning up before call error
5800         since it now does it for us.
5801         (rcs_internal_lockfile, rcs_internal_unlockfile): Keep track of
5802         lock file fd for rcs_cleanup ().
5803
5804         * client.c (handle_set_checkin_prog, handle_set_update_prog):
5805         Just ignore the request when exporting.
5806
5807 2000-06-27  Larry Jones  <larry.jones@sdrc.com>
5808
5809         * create_adm.c, cvs.h (Create_Admin): Add dotemplate argument.
5810         Change all callers.
5811         * checkout.c (checkout_proc): Don't create CVS/Template if
5812         exporting.
5813
5814 2000-06-26  Pavel Roskin <proski@gnu.org>
5815         and Larry Jones  <larry.jones@sdrc.com>
5816
5817         * server.c (switch_to_user): Only set CVS_Username if
5818         AUTH_SERVER_SUPPORT is defined.
5819
5820 2000-06-23  Larry Jones  <larry.jones@sdrc.com>
5821
5822         * client.c (send_dirent_proc): Don't allocate ignlist if you're
5823         going to skip the directory (plugs memory leak).
5824         (send_dirleave_proc): New function.
5825         (send_files): Use it (plugs memory leak).
5826         * root.c (root_allow_free): Plug memory leaks.
5827         * server.c (serve_directory, serve_notify, check_password,
5828         pserver_authenticate_connection): Ditto.
5829         * update.c (update): Ditto.
5830
5831         This completes the memory leak shoot-out -- the Purify'ed version
5832         of CVS now runs the entire test suite, both local and remote (except
5833         for remote crerepos, which causes Purify to choke) with *no* memory
5834         leaks.
5835
5836         * server.c (pserver_authenticate_connection): Don't free null pointer.
5837
5838 2000-06-21  Larry Jones  <larry.jones@sdrc.com>
5839
5840         * client.c (update_entries, get_responses_and_close): Plug memory leaks.
5841         * commit.c (find_fileproc, commit): Ditto.
5842         * import.c (import): Ditto.
5843         * log.c (cvslog): Ditto.
5844         * recurse.c (start_recursion): Ditto.
5845         * remove.c (cvsremove): Ditto.
5846         * server.c (fd_buffer_initialize, server_notify, do_cvs_command): Ditto.
5847         (fd_buffer_shutdown): New function.
5848
5849 2000-06-20  Larry Jones  <larry.jones@sdrc.com>
5850
5851         * root.c (parse_cvsroot): Put the terminating NUL byte into the
5852         string *before* copying it, not after. :-(
5853
5854 2000-06-19  Larry Jones  <larry.jones@sdrc.com>
5855
5856         * main.c (main): Plug memory leaks.
5857         * root.c (parse_cvsroot, set_local_cvsroot): Ditto.
5858         * server.c (serve_root): Ditto.
5859
5860 2000-06-16  Larry Jones  <larry.jones@sdrc.com>
5861
5862         * fileattr.c (fileattr_read): Plug memory leak.
5863         * rcs.c (RCS_whatbranch): Ditto.
5864         * update.c (update_dirleave_proc): Ditto.
5865
5866         * ignore.c (ign_dir_add): Duplicate string so caller can free.
5867
5868         * modules.c (do_module): Don't write into dbm's memory!
5869
5870 2000-06-15  Larry Jones  <larry.jones@sdrc.com>
5871
5872         * checkout.c (checkout_proc): Fix non-ANSI code in call to
5873         findslash(), minor cleanups.
5874
5875 2000-06-14  Larry Jones  <larry.jones@sdrc.com>
5876
5877         * tag.c (val_direntproc): Return R_PROCESS instead of 0.
5878
5879         * client.c (update_entries): Fix type clash calling gunzip_and_write().
5880         * server.c (receive_file): Fix type clash calling gunzip_and_write().
5881         (server_updated): Fix type clash calling buf_output().
5882         * error.c (error): Make buf char instead of unsigned char to avoid
5883         type clashes.
5884
5885         * modules.c (do_module): Change callback_proc to pass argc by
5886         value instead of by reference: callback procs shouldn't be
5887         messing with the callers argc/argv, it makes correct memory
5888         management impossible.  Plug memory leaks.
5889         * cvs.h: Change to match.
5890         * checkout.c (checkout_proc): Ditto; use a local argv array instead
5891         of messing with caller's.
5892         * modules.c (callback_proc): Ditto.
5893         * patch.c (patch_proc): Ditto; use a local argv array instead
5894         of messing with caller's.
5895         * rtag.c (rtag_proc): Ditto; use a local argv array instead
5896         of messing with caller's.
5897         * server.c (expand_proc): Ditto.
5898         * subr.c (line2argv): Change initial argv_allocated back to 1.
5899
5900         * checkout.c (findslash): Fix non-ANSI code.
5901
5902         * sanity.sh (modes3): Fix test names.
5903
5904 2000-06-13  Larry Jones  <larry.jones@sdrc.com>
5905
5906         * add.c (add): Plug memory leaks.
5907         * admin.c (admin_fileproc): Ditto.
5908         * checkout.c (build_dirs_and_chdir): Ditto.
5909         * edit.c (editors_fileproc): Ditto.
5910         * log.c (cvslog, log_parse_revlist, log_parse_date): Ditto.
5911         * rcs.c (RCS_addaccess): Ditto.
5912         * tag.c (check_fileproc): Ditto.
5913         * vers_ts.c (Version_TS): Ditto.
5914         * watch.c (watchers_fileproc): Ditto.
5915
5916 2000-06-12  Larry Jones  <larry.jones@sdrc.com>
5917
5918         * rcs.c (rcsbuf_valword): Set rcsbuf->vlen to keep rcsbuf_valcopy()
5919         from allocating more memory than needed for @ strings.  Don't declare
5920         unless PRESERVE_PERMISSIONS_SUPPORT (since not defined).
5921
5922         * rcs.c (RCS_abandon): New function to abandon changes.
5923         * rcs.h: Declare it.
5924         * admin.c (admin_fileproc): Use it instead of RCS_reparsercsfile.
5925
5926         * commit.c (commit_fileproc): Fix memory leaks.
5927         * patch.c (patch_fileproc): Ditto.
5928         * rcs.c (RCS_nodeisbranch, RCS_copydeltas): Ditto.
5929         * tag.c (tag_fileproc): Ditto.
5930         * update.c (update): Ditto.
5931
5932 2000-06-09  Larry Jones  <larry.jones@sdrc.com>
5933
5934         * rcs.c (RCS_reparsercsfile, RCS_fully_parse, getdelta,
5935         RCS_getdeltatext): Handle newphrases with composite values.
5936         (rcsbuf_getkey): Don't remove @s in composite values -- it makes
5937         it impossible to parse the value!  Set special flag to indicate
5938         a composite value.
5939         (rcsbuf_valcopy, rcsbuf_valpolish_internal): Handle composite values.
5940         (putrcsfield): Write composite values.
5941         (RCS_checkin): Set node types in other_delta list.
5942         * hash.h: Add RCSCMPFLD.
5943         * hash.c (nodetypestring): Ditto.
5944
5945         * rcs.c (getdelta): Never allocate space for value, just return
5946         pointer into rcsbuf (fixes memory leaks).  Use rcsbuf_getkey to
5947         read a key and value and then parse the value if needed rather
5948         than trying to read it in bits and pieces with rcsbuf_getid,
5949         rcsbuf_getstring, and rcsbuf_getword.
5950         (RCS_reparsercsfile): Change callers to compensate.
5951         (rcsbuf_valcmp, rcsbuf_valword): New functions.
5952         (rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): Deleted.
5953         * sanity.sh (rcs3-1): Now get slightly different error message.
5954
5955 2000-06-08  Larry Jones  <larry.jones@sdrc.com>
5956
5957         * main.c (usg): Update CVS home page URL.
5958
5959         * main.c (main): Provide an actual error message for an unknown
5960         command in addition to the usage message.
5961
5962 2000-06-07  Larry Jones  <larry.jones@sdrc.com>
5963
5964         * server.c (serve_root, dirswitch, serve_repository,
5965         serve_static_directory, serve_sticky, receive_partial_file,
5966         receive_file, serve_modified, server_write_entries, serve_notify,
5967         serve_checkin_prog, serve_update_prog, server): Don't set
5968         pending_error before calling alloc_pending, it makes it fail;
5969         use alloc_pending instead of malloc when reasonable; be sure to
5970         save errno before calling functions that might change it.
5971         (Patch submitted by Dietmar Petras <dietmar.petras@elsa.de>.)
5972
5973 2000-06-03  Larry Jones  <larry.jones@sdrc.com>
5974
5975         * commit.c (checkaddfile): Plug memory leak.
5976         * rcs.c (RCS_checkin): Plug memory leaks.
5977         * server.c (do_cvs_command): Plug file descriptor leaks.
5978         * tag.c (check_fileproc): Plug memory leak.
5979
5980 2000-05-26  Larry Jones  <larry.jones@sdrc.com>
5981
5982         * recurse.c (unroll_files_proc): Plug memory leak.
5983
5984         * recurse.c (addfile): Fix nonportable pointer cast.
5985
5986         * rcs.c (rcsbuf_getstring, rcsbuf_getword, getdelta): Plug memory
5987         leaks.
5988
5989 2000-05-25  Larry Jones  <larry.jones@sdrc.com>
5990
5991         * checkout.c (checkout, build_one_dir, checkout_proc): Move m_type
5992         to file scope and use it instead of continually doing strcmp on
5993         command_name.
5994         (build_one_dir, checkout_proc): Don't allow export if CVSADM
5995         directory already exists.
5996
5997 2000-05-23  Larry Jones  <larry.jones@sdrc.com>
5998
5999         * rcs.c (RCS_checkin, RCS_cmp_file): Plug memory leaks.  (Patch
6000         submitted by Chris G. Demetriou <cgd@sibyte.com>.)
6001
6002 2000-05-20  Ian Lance Taylor  <ian@zembu.com>
6003
6004         * client.c (connect_to_gserver): Handle server error messages
6005         reasonably.
6006
6007 2000-05-19  Larry Jones  <larry.jones@sdrc.com>
6008
6009         * server.c (requests): Make Global_option RQ_ROOTLESS so it can be
6010         used with init.
6011
6012 2000-05-18  Larry Jones  <larry.jones@sdrc.com>
6013
6014         * client.c (start_server): Don't do encryption, authentication,
6015         compression, or case insensitivity when doing init because init
6016         is ROOTLESS and they're not.
6017
6018         * client.c (connect_to_pserver): Include repository and username in
6019         authorization failed message -- if a directory tree crosses multiple
6020         repositories, it can be quite difficult for the user to figure out
6021         which one is the problem.
6022
6023 2000-05-17  Larry Jones  <larry.jones@sdrc.com>
6024
6025         * main.c (main): Use full set of options when looking for -f to
6026         avoid misparsing options that take values (previously, -sVAR=foo
6027         was incorrectly parsed as though it were -s -V -A -R -= -f -o -o
6028         because it didn't know that -s takes a value).
6029         * sanity.sh (info-6b): New test for above.
6030
6031         * sanity.sh (conflicts-status): Fix tests so they work remotely, too.
6032
6033 2000-05-17  Jim Meyering  <meyering@lucent.com>
6034
6035         * sanity.sh (TESTDIR): Fix braino in last change:
6036         cd to /tmp before invoking pwd.
6037
6038         * sanity.sh: Set TESTDIR so that `make check' passes even when /tmp
6039         is a symlink.
6040         (join-36): Use $TESTDIR rather than hard-coding `/tmp/cvs-sanity'.
6041         (conflicts-132): Remove unnecessary `rm aa'.
6042
6043 2000-05-16  Jim Kingdon  <kingdon@redhat.com>
6044
6045         * cvs.h, checkout.c (safe_location): Make extern.
6046         * import.c (import): Call it rather than reimplementing
6047         (incompletely) the same check.
6048
6049 2000-05-16  Larry Jones  <larry.jones@sdrc.com>
6050
6051         * rcs.h, subr.c (file_has_markers): Check for any of the three
6052         conflict marker lines, not just one.
6053         * sanity.sh (conflicts-status): New tests for above.
6054         * sanity.sh: Revise to avoid tripping the above check when merging
6055         changes into sanity.sh itself.
6056
6057 2000-05-15  Larry Jones  <larry.jones@sdrc.com>
6058
6059         * update.c (join_file): When registering the result of the merge,
6060         make sure that the version number is valid (vers->vn_rcs may be
6061         null if the file doesn't exist on the branch yet).  (Patch submitted
6062         by Robert de Vries <rhdv@rhdv.cistron.nl>.)
6063         * update.c (join_file): Correct diagnostics (previous change was not
6064         correct -- the file *does* exist in the specified revision, it just
6065         doesn't exist in the sandbox).
6066         * sanity.sh (import-113, join): New tests and changes for above.
6067
6068 2000-05-04  Larry Jones  <larry.jones@sdrc.com>
6069
6070         * sanity.sh: Look for a useful id program.  Since we're getting
6071         the real username for some tests anyway, use it for all the
6072         tests instead of a generic regular expression that may or may
6073         not match the actual username.
6074
6075 2000-05-04  Larry Jones  <larry.jones@sdrc.com>
6076
6077         * server.c: More error messages.
6078
6079 2000-05-02  Donald Sharp <sharpd@cisco.com>
6080         and Larry Jones  <larry.jones@sdrc.com>
6081
6082         * history.c (report_hrecs): Added code to print out year instead of
6083         just month/day.
6084         * sanity.sh (basic2-64, history): Update to match.
6085
6086 2000-04-19  Larry Jones  <larry.jones@sdrc.com>
6087
6088         * server.c (dirswitch): Set pending_error_text in addition to
6089         pending_error to aid in problem determination.
6090
6091 2000-03-23  Larry Jones  <larry.jones@sdrc.com>
6092
6093         * mkmodules.c (mkmodules): Return without doing anything if noexec
6094         is set to avoid trashing existing files.
6095
6096 2000-03-23  Larry Jones  <larry.jones@sdrc.com>
6097
6098         * main.c: Alphabetize cmds[] and cmd_usage[] and add server
6099         commands to cmd_usage[].
6100
6101 2000-03-21  Larry Jones  <larry.jones@sdrc.com>
6102
6103         * sanity.sh (client-1): May get "Broken pipe" message from the
6104         "server" in addition to the expected output.
6105
6106 2000-03-17  Larry Jones  <larry.jones@sdrc.com>
6107
6108         * server.c (switch_to_user): Set CVS_Username if it hasn't already
6109         been set elsewhere.  (Patch submitted by Gordon Matzigkeit
6110         <gord@fig.org>).
6111
6112 2000-03-13  Larry Jones  <larry.jones@sdrc.com>
6113
6114         * parseinfo.c: Add extern to logHistory declaration.  (Reported by
6115         <John.Tytgat@aaug.net>.)
6116         (parse_config): Reformat logHistory code.
6117
6118 2000-03-10  Larry Jones  <larry.jones@sdrc.com>
6119
6120         * add.c (add): Don't try to set cvsroot_len until after checking
6121         for help only -- CVSroot_directory isn't set in that case.
6122
6123 2000-03-03  Larry Jones  <larry.jones@sdrc.com>
6124
6125         * mkmodules.c (init): Use mkdir_if_needed to create CVSROOT/Emptydir
6126         so we don't fail if run multiple times.  (Reported by KOIE Hidetaka
6127         <hide@koie.org>.)
6128         * sanity.sh (1a): New test for above.
6129
6130 2000-03-02  Larry Jones  <larry.jones@sdrc.com>
6131
6132         * main.c: Use identical #if's in the command table and the code
6133         for pserver and kserver to prevent "peculiar" configurations from
6134         having really perverse behavior because the command table entries
6135         are present but the related code isn't.
6136
6137 2000-03-01  Larry Jones  <larry.jones@sdrc.com>
6138
6139         * import.c (import): Don't allow importing the repository.
6140         * sanity.sh (errmsg2-20, errmsg2-21): New tests for above.
6141
6142 2000-03-01  Larry Jones  <larry.jones@sdrc.com>
6143
6144         * main.c (main): Update year in copyright message.
6145
6146 2000-03-01  Larry Jones  <larry.jones@sdrc.com>
6147
6148         * logmsg.c (do_editor): Correct previous change.
6149
6150 2000-02-29  Larry Jones  <larry.jones@sdrc.com>
6151
6152         * logmsg.c (do_editor): When reading temp file, check that message
6153         buffer is large enough to hold the next line and expand if needed.
6154
6155 2000-02-28  Larry Jones  <larry.jones@sdrc.com>
6156
6157         * commit.c (commit): Use get_file() to read log file correctly
6158         and in text mode rather than binary mode.
6159
6160         * subr.c (get_file): Ignore bufsize if buf is NULL.  Include
6161         terminating NUL byte when estimating required buffer size.
6162
6163 2000-02-28  Larry Jones  <larry.jones@sdrc.com>
6164
6165         * sanity.sh (find_tool): New function to replace duplicated code.
6166
6167 2000-02-25  Larry Jones  <larry.jones@sdrc.com>
6168
6169         * import.c (add_rcs_file): Don't abort just because lstat fails.
6170
6171 2000-02-16  Jim Meyering  <meyering@lucent.com>
6172
6173         Avoid race condition whereby a catchable signal could
6174         end up corrupting the repository.
6175         * commit.c (checkaddfile): Put a critical section around the code
6176         that handles the first commit on the trunk of a file that's already
6177         been committed on a branch.
6178         * cvs.h (Sig_inCrSect): Declare new function.
6179
6180 2000-02-21  Karl Fogel  <kfogel@red-bean.com>
6181
6182         * main.c (main): still check for repository, but not history file
6183         (correction to 2000-02-18 change -- that's what I get for
6184         believing the comment rather than the code).
6185
6186 2000-02-21  K.J. Paradise <kj@sourcegear.com>
6187
6188         * history.c mkmodules.c parseinfo.c: control which actions
6189         get logged to the cvs history file via CVSROOT/config file
6190         and LogHistory keyword. (John P Cavanaugh <cavanaug@sr.hp.com>)
6191
6192 2000-02-18  Karl Fogel  <kfogel@red-bean.com>
6193
6194         * history.c (history_write): don't die if history file not
6195         writable, just warn (unless `really_quiet') and skip out.
6196
6197         * main.c (main): don't bother checking if history file is
6198         writable.
6199
6200         * server.c (serve_root): same.
6201
6202 2000-02-17  Larry Jones  <larry.jones@sdrc.com>
6203
6204         * sanity.sh (perms symlinks symlinks2 hardlinks): Don't run by
6205         default since PreservePermissions code is now disabled.
6206
6207 2000-02-17  Larry Jones  <larry.jones@sdrc.com>
6208
6209         * sanity.sh (import-113): Revise to match Jim Meyering's fix.
6210
6211 2000-02-16  Larry Jones  <larry.jones@sdrc.com>
6212
6213         * add.c (add): Don't allow adding files or directories to Emptydir.
6214         (Patch submitted by Chris Cameron <chris.cameron@ot.co.nz>.)
6215         * sanity.sh (emptydir): Revise (emptydir-7 and emptydir-8) for this.
6216
6217 2000-02-16  Jim Meyering  <meyering@lucent.com>
6218
6219         * update.c (join_file): Correct typo in diagnostic:
6220         change `file %s is present...' to `file %s is not present...'.
6221
6222 2000-02-10  Larry Jones  <larry.jones@sdrc.com>
6223
6224         * parseinfo.c (Parse_Info): Treat matching lines with bad expansions
6225         as errors rather than just ignoring.
6226
6227 2000-02-10  Larry Jones  <larry.jones@sdrc.com>
6228
6229         * edit.c (edit): Check for invalid characters in hostname and CurDir.
6230         (Reported by "Andrew S. Townley" <atownley@informix.com>.)
6231         * sanity.sh (devcom2): New tests for above.
6232
6233 2000-02-10  Larry Jones  <larry.jones@sdrc.com>
6234
6235         * cvs.h: Always #include "server.h" to prevent compile errors when
6236         neither CLIENT_SUPPORT nor SERVER_SUPPORT is defined.
6237         (Reported by "Crow, Ian" <ian.crow@linklaters.com>.)
6238         * log.c (send_one, send_arg_list): Only define when CLIENT_SUPPORT
6239         is defined to prevent link errors.
6240
6241         * server.c (server): Always create a new temporary directory, don't
6242         try to reuse an existing one since we might not have correct
6243         permissions.  Also, include directory name in error messages.
6244
6245 2000-01-29  Jim Kingdon  <http://developer.redhat.com/>
6246
6247         * ignore.c (ignore_files): Correctly set errno to 0 when we go
6248         back to the top of the loop.  Fixes spurious errors like "cvs
6249         update: error reading current directory: No such file or
6250         directory".
6251
6252 2000-01-26  Larry Jones  <larry.jones@sdrc.com>
6253
6254         * run.c (run_exec): Conditionalize K.J.'s change so that it only
6255         applies when SETXID_SUPPORT is defined since some platforms don't
6256         have setegid().
6257
6258 2000-01-26  Larry Jones  <larry.jones@sdrc.com>
6259
6260         * sanity.sh: Make TESTDIR earlier then use it to check for versions
6261         of expr that don't work right with long expressions.
6262
6263         * sanity.sh (dotest_line_by_line): Have wc read from stdin so it
6264         doesn't output the file name and confuse expr.  Make the output a
6265         bit less verbose and easier to read.
6266
6267 2000-01-24  K.J. Paradise <kj@sourcegear.com>
6268
6269         * run.c :> prevents a user from creating a privileged shell from the
6270         text editor when the SETXID_SUPPORT option is selected.  This came from
6271         Bob Colle <bcolle@ilx.com>, and is his completely.
6272
6273 2000-01-22  Jim Kingdon  <http://developer.redhat.com/>
6274
6275         * sanity.sh (emptydir): Add a case in which one might hope for a
6276         non-Emptydir result, but which result?
6277
6278 2000-01-18  Larry Jones  <larry.jones@sdrc.com>
6279
6280         * main.c (main): Allow -z0 to disable gzip compression.
6281
6282 2000-01-17  Larry Jones  <larry.jones@sdrc.com> for
6283         K.J. Paradise (kj@sourcegear.com)
6284
6285         * version.c: Push version number to 1.10.8.1.
6286
6287         * version.c: Version 1.10.8.
6288
6289 2000-01-17  Larry Jones  <larry.jones@sdrc.com>
6290
6291         * mkmodules.c (init): Create CVSROOT/Emptydir to avoid problems
6292         with users not having sufficient permissions to create it later.
6293
6294 2000-01-04  Larry Jones  <larry.jones@sdrc.com>
6295
6296         * client.c (get_responses_and_close): Simplify time-stamp race
6297         avoidance code.
6298         * commit.c (commit): Ditto.
6299         * update.c (do_update): Ditto.
6300         (Prompted by patch submitted by Pavel Roskin
6301         <pavel_roskin@geocities.com>.)
6302
6303         * hardlink.c: sizeof (char) is 1, by definition.
6304         * logmsg.c: Ditto.
6305         * rcs.c: Ditto.
6306
6307 2000-01-03  Karl Fogel  <kfogel@red-bean.com>
6308
6309         * filesubr.c, subr.c (backup_file): moved this function from
6310         filesubr.c to subr.c, at JimK's suggestion.
6311
6312 2000-01-03  Jim Kingdon  <http://developer.redhat.com/>
6313
6314         * sanity.sh (clean): Test the contents of the .#cleanme.txt.1.1
6315         file, not just its existence.
6316
6317 2000-01-03  Karl Fogel  <kfogel@red-bean.com>
6318
6319         * cvs.h, filesubr.c (backup_file): use `const' for suffix too;
6320         correct suffix length calculation and appending behavior; discard
6321         unnecessary `void' cast.  Thanks to Jim Meyering for noticing.
6322
6323 2000-01-03  Larry Jones <larry.jones@sdrc.com>
6324
6325         * sanity.sh (clean): Fix up expected output.
6326
6327 2000-01-02  John P Cavanaugh <cavanaug@sr.hp.com>
6328         and Karl Fogel <kfogel@red-bean.com>
6329
6330         New -C option to update: overwrites local changes with clean
6331         copies from the repository.  (This is an unreversion of the
6332         1999-12-10 change, further modified to work remotely.)
6333
6334         * client.h (BACKUP_MODIFIED_FILES): new #define.
6335
6336         * client.c (struct send_data): new element `backup_modified'.
6337         (send_files): set above element if BACKUP_MODIFIED_FILES flag is
6338         present.
6339
6340         * filesubr.c (backup_file): new function.
6341
6342         * cvs.h: prototype for new function `backup_file'.
6343
6344         * update.c (toss_local_changes): new file-scoped global.
6345         (update): set toss_local_changes if -C flag seen.  If
6346         client_active, send "-C" to server, and set SEND_NO_CONTENTS and
6347         BACKUP_MODIFIED_FILES flags before calling send_files().
6348
6349         (update_fileproc): if file is modified and toss_local_changes is
6350         set, then back the file up and then check out a fresh copy from
6351         the repository.  Also, fixed indentation and formatting for a
6352         particularly bad stretch of code near (but unrelated to) these
6353         changes.
6354
6355         * sanity.sh: new test `clean', for update -C option.
6356
6357 1999-12-29  Jim Kingdon  <http://developer.redhat.com/>
6358
6359         * history.c (read_hrecs): st_blksize is unsigned long, not int.
6360         This isn't just cosmetic - getting it wrong will cause coredumps
6361         and such on 64 bit machines.
6362
6363         * import.c (import_descend), ignore.c (ignore_files): Placate gcc
6364         -Wall by parenthesizing foo || (bar && baz).
6365
6366 1999-12-24  Larry Jones <larry.jones@sdrc.com>
6367
6368         * release.c (release): Use fputs to echo lines from update instead
6369         of printf to avoid problems with lines containing "%".  (Reported
6370         by Jean-Luc Simard <Jean-Luc.Simard@matrox.com>.)
6371
6372         * history.c (read_hrecs): Allocate a single 2-block buffer instead
6373         of allocating and freeing a buffer for each block.
6374         (fill_hrec): Remove redundant code.
6375         (select_hrec): Plug memory leak.
6376
6377 1999-12-22  Larry Jones <larry.jones@sdrc.com>
6378
6379         * history.c (history): For "modified" or "checkout", sort on
6380         file if user specified -l, even if user also specified a date-
6381         oriented flag.
6382         * sanity.sh (history): Update to match; add new tests.
6383
6384 1999-12-15  Pavel Roskin <pavel_roskin@geocities.com>
6385         and Larry Jones <larry.jones@sdrc.com>
6386
6387         * lock.c (lock_name): fixed assertion failure for the
6388         top-level CVS directory when LockDir is used
6389         * sanity.sh (lockfiles-9): new test for this case
6390
6391 1999-12-11  Karl Fogel  <kfogel@red-bean.com>
6392
6393         * Revert previous change -- it doesn't work remotely yet.
6394
6395 1999-12-10  John P Cavanaugh <cavanaug@sr.hp.com>
6396         and Karl Fogel <kfogel@red-bean.com>
6397
6398         * update.c: new -C option to update, overwrites local changes with
6399         clean copies from the repository.
6400         Also, fixed indentation and formatting for a particularly bad
6401         stretch of code near these changes in update_fileproc().
6402
6403         * sanity.sh: test new update -C option.
6404
6405 1999-12-10  Larry Jones <larry.jones@sdrc.com>
6406
6407         * commit.c (remove_file): Call history_write with update_dir NULL
6408         like Checkin() does for add and modify.
6409         * sanity.sh (basic2-64): Update to match, add "R" records to expected
6410         remote output.
6411
6412 1999-12-09  K.J. Paradise (kj@sourcegear.com)
6413
6414         * history.c, commit.c, sanity.sh: found (I think) final
6415         cause of seg fault in history command.  Also, added the "R"
6416         history functionality.  Fixed basic2-64 so it looks correct for
6417         the change.
6418
6419 1999-11-30  K.J. Paradise (kj@sourcegear.com)
6420
6421         * history.c: fixed seg fault caused by 11-03 changes.
6422         off by one in block memory allocations.
6423
6424 1999-11-29  Karl Fogel  <kfogel@red-bean.com>
6425
6426         * login.c (logout): free `tmp_name' when done.
6427         Correct a comment.
6428
6429 1999-11-29  Larry Jones <larry.jones@sdrc.com>
6430
6431         * cvs.h, error.c, import.c: Rename fperror to avoid name clash
6432         on LynxOS.  (Reported by Markus Braun <MarkusBraun@gmx.de>.)
6433
6434 1999-11-23  Larry Jones <larry.jones@sdrc.com>
6435
6436         * checkout.c (checkout_proc): Split declaration and initialization
6437         of rp to placate neurotic compilers that gripe about jumping past
6438         an initialization, even when the variable is not subsequently used.
6439
6440 1999-11-19  Larry Jones <larry.jones@sdrc.com>
6441
6442         * server.c (switch_to_user): Correct setgid error messages.
6443
6444 1999-11-19  Karl Fogel  <kfogel@red-bean.com>
6445
6446         * edit.c (unedit_usage, unedit): new struct, use it.  Now "cvs
6447         unedit" prints an accurate usage message (formerly it printed the
6448         message for "cvs edit", even though the two commands do not have
6449         identical usages).
6450
6451 1999-11-19  Larry Jones <larry.jones@sdrc.com>
6452
6453         * history.c: Move -e documentation from Flags to Reports.
6454         (history): Add -e to list of report types in error message.
6455
6456         * history.c (history): Process file arguments before client/server
6457         processing so they get sent to the server.
6458         * sanity.sh (history): New tests for above.  (Also remove comments
6459         about variable spacing -- history output is in variable-width
6460         columns with exactly one space between.)
6461
6462 1999-11-19  Larry Jones <larry.jones@sdrc.com>
6463
6464         * sanity.sh: Reestablish check for running as root (using ``id -u''
6465         instead of ``whoami'').
6466
6467         * sanity.sh(dotest, dotest_lit, dotest_fail, dotest_status,
6468         dotest_sort): Eval the command so quoting and pipes work right.
6469         (spacefiles, dirs, rcslib, modules, unedit-without-baserev,
6470         ignore, rcs, rcs2, history, tagdate, pserver, server, server2)
6471         Simplify various tests based on above.
6472
6473 1999-11-19  Karl Fogel  <kfogel@red-bean.com>
6474
6475         * mkmodules.c (init): make history file world-writeable after
6476         creating it, since it needs to be writeable for virtually any
6477         CVS operation.
6478
6479 1999-11-10  Jim Kingdon  <http://developer.redhat.com/>
6480
6481         * admin.c: Revert change to add -H command option.  The help
6482         invocation is "cvs -H admin" not "cvs admin -H" (see cvs.texinfo,
6483         basicb-21 in sanity.sh; fix to cvs.1)
6484
6485 1999-11-08  Jim Kingdon  <http://developer.redhat.com/>
6486
6487         * log.c (cvslog): If client_active, send options to the server
6488         based on our parsed options rather than trying to send the exact
6489         strings specified (using canonical forms, like RFC822/1123
6490         dates, in the protocol is just cleaner).
6491         (send_one, send_arg_list): New functions, helpers for above.
6492         * sanity.sh (logopt-6a): New test, for this fix.
6493
6494 1999-11-09  K.J. Paradise <kj@sourcegear.com>
6495
6496         * admin.c: made the -H option do what it is documented to
6497         do.  a
6498
6499 1999-11-08  Tom Tromey  <tromey@cygnus.com>
6500
6501         * client.c (connect_to_gserver): Print more error text if gssapi
6502         initialization fails.  From Assar Westerlund <assar@sics.se>.
6503
6504 1999-11-06  Larry Jones <larry.jones@sdrc.com>
6505
6506         *sanity.sh(rcs3-5): Remote output can be out-of-order, so need a
6507         more general pattern to match the assertion failure.
6508
6509 1999-11-05  K.J. Paradise (kj@sourcegear.com)
6510
6511         * history.c: Added a trap to verify that if a
6512         read(file, buffer,blocksize) returns less than blocksize,
6513         that we really are at the end of the file.  I can't easily
6514         come up with a test case where this code gets touched, so
6515         it may cause problems.  All sanity tests still pass though.
6516
6517 1999-11-05  Jim Kingdon  <http://developer.redhat.com/>
6518
6519         * sanity.sh (logopt): New test, for Larry's fix.
6520         * sanity.sh (log-18a, rcs-15 to rcs-19): New tests, to test -d
6521         and -r more thoroughly.
6522
6523 1999-11-05  Larry Jones <larry.jones@sdrc.com>
6524
6525         * log.c (cvslog): Fix -s and -d with spaces on client side.
6526         (log_usage): Revert Karl's change once again.
6527         sanity.sh(rcs3-5): No longer get different results from local
6528         and client/server.
6529
6530 1999-11-04  Karl Fogel  <kfogel@red-bean.com>
6531
6532         * log.c (log_usage): Revert Jim Kingdon's reversion of my change
6533         of 1999-11-03.  Allowing a space between option and argument
6534         results in lossage; here is a reproduction recipe: run this from
6535         the top of a remote copy of the cvs source tree
6536
6537            cvs log -d '>1999-03-01' > log-out.with-space
6538
6539         and then run this (note there's no space after -d now):
6540
6541            cvs log -d'>1999-03-01' > log-out.no-space
6542
6543         The resulting files differ; furthermore, a glance at the output of
6544         cvs shows that the first command failed to recurse into
6545         subdirectories.  Until this misbehavior can be fixed in the source
6546         code, the documentation should reflect the true state of affairs:
6547         if one simply omits the space, everything works fine.
6548
6549 1999-11-04  Jim Kingdon  <http://developer.redhat.com/>
6550
6551         * log.c (log_usage): Revert Karl's change regarding -d and
6552         -s.  A space is allowed (see sanity.sh for example).
6553
6554 1999-11-03  K.J. Paradise (kj@sourcegear.com>
6555
6556         * history.c: cleaned up my prior change a bit, per Larry Jones'
6557         comments, and John O'Conner's additional comments about bits of
6558         non MS-Visual C++ compliancy of my code.
6559
6560 1999-11-04  Larry Jones <larry.jones@sdrc.com>
6561
6562         * sanity.sh: Check that tr that correctly handles NULs; if not, try
6563         to find a version that does; if none can be found, warn user.
6564         Also fix warnings for defective expr.
6565
6566 1999-11-04  Karl Fogel  <kfogel@red-bean.com>
6567
6568         Changes for empty/random passwords in anon pserver access:
6569
6570         * server.c (check_repository_password): if password empty, grant
6571         access no matter what password is received; this is so anon CVS no
6572         longer requires a password but remains backwards-compatible with
6573         all those clients out there.
6574
6575         * client.c (connect_to_pserver): proceed with login even if
6576         password not found in .cvspass file -- just use empty string as
6577         password.  And if such a login fails, print a descriptive error.
6578
6579         * login.c (get_cvs_password): don't complain if file or password
6580         not found.  That condition is no longer a showstopper, now that
6581         empty passwords are permissible.
6582         Cleaned up conditional chaining a bit, too.
6583
6584         * sanity.sh (pserver-9, pserver-10, pserver-11, pserver-12,
6585         pserver-13): new tests, about empty-password pserver access.
6586
6587 1999-11-03  K.J. Paradise (kj@sourcegear.com>
6588
6589         * history.c:  modify parsing routines to parse the history
6590         file a block at a time, rather than all at once.  This allows
6591         people with large history files and small amount of memory
6592         to still get some functionality out of the history file.
6593
6594 1999-11-03  Karl Fogel  <kfogel@red-bean.com>
6595
6596         * log.c (log_usage): correct usage message for -d and -s options.
6597         Because the space between the option letter and its argument has
6598         been eliminated, I capitalized the argument portion to distinguish
6599         it from the option letter.  This makes it slightly inconsistent
6600         with other such usage summaries, but at least it is now both
6601         correct and readable.
6602
6603 1999-10-22  Larry Jones  <larry.jones@sdrc.com>
6604
6605         * sanity.sh (dotest_sort): Old versions of tr don't understand \t
6606         so use a literal tab instead.
6607
6608 1999-10-21  Larry Jones  <larry.jones@sdrc.com>
6609
6610         * sanity.sh (dotest_sort): Convert any tabs in the output into spaces
6611         before sorting to avoid POSIX.2 sort weirdness.
6612         (import-106, importb-2): Change expected output per above.
6613
6614 1999-10-18  K.J. Paradise <kj@sourcegear.com>
6615
6616         Bug: users 'stan' and 'cartman' both have full read/write access
6617         to the cvs repository.  'cartman' does a 'cvs admin -l foo.c'.
6618         'stan' then does a 'cvs admin -u foo.c'.  The lock wouldn't be
6619         removed, and no warning/error would be given.  This is now fixed.
6620         * rcs.c:(c.6157) remove caller/user check on the multiple lock
6621         detection routines.  Sanity.sh runs with no errors after this fix.
6622
6623 1999-10-14  Larry Jones  <larry.jones@sdrc.com>
6624
6625         Make "cvs admin -e" (with no list of users) work:
6626         * admin.c (admin): Remove error message.
6627         (admin_fileproc): If no args for -e, call RCS_delaccess with NULL user.
6628         * rcs.c (RCS_delaccess): Interpret NULL user as request to delete
6629         entire access list.
6630         * sanity.sh (admin-19a-*): Test.
6631
6632 1999-09-29  Larry Jones  <larry.jones@sdrc.com>
6633
6634         * entries.c (Subdirs_Known): Use entfilename when opening CVSADM_ENTLOG
6635         like everywhere else.  Although this isn't strictly necessary (since
6636         we immediately close it again), it keeps the code consistent and fixes
6637         a bug where an open error reported the wrong file name.
6638
6639 1999-09-16  Larry Jones  <larry.jones@sdrc.com>
6640
6641         * log.c (log_parse_revlist): Handle peculiar revision specs like
6642         "-r.", "-r:", and "-r," correctly.  (Thanks to Pavel Roskin
6643         <pavel_roskin@geocities.com> for submitting a patch, this fix is
6644         somewhat different.)
6645         * sanity.sh (log): New tests for above.
6646
6647 1999-09-15  Larry Jones  <larry.jones@sdrc.com>
6648
6649         * sanity.sh (basica-8b1): New test to check fix for bad diff options
6650         causing cvs to crash.
6651
6652 1999-09-02  Larry Jones  <larry.jones@sdrc.com>
6653
6654         * modules.c (do_module): Handle case where module definition has
6655         options and special options but no directory; fix potential problems
6656         running off beginning of string while stripping trailing blanks.
6657         * sanity.sh (modules2): New tests for above.
6658
6659 1999-08-26  Larry Jones  <larry.jones@sdrc.com>
6660
6661         * lock.c (lock_name): Remove side-effects from assert() expression
6662         since they won't occur if NDEBUG is defined (not that that's a good
6663         thing to do).  (Reported by KOIE Hidetaka <hide@koie.org>.)
6664
6665 1999-08-25  Larry Jones  <larry.jones@sdrc.com>
6666
6667         * sanity.sh: Use "${AWK}" instead of "awk" to make it easier for
6668         people to use nawk/gawk/etc.; use an explicit "-print" with find
6669         since some older version don't assume it; rename tests to avoid
6670         duplicate importc-8.  (Changes along these lines suggested by
6671         Chris Cameron <chris.cameron@ot.co.nz>.)
6672
6673 1999-08-24  Larry Jones  <larry.jones@sdrc.com>
6674
6675         * commit.c (check_fileproc): Don't crash when a file has no
6676         repository, just treat it as unknown.  (Reported by Stefaan
6677         Diericx <stefaan.diericx@argenta.be>.)
6678         * sanity.sh (errmsg2): New tests, for this fix.
6679
6680 1999-08-18  Larry Jones  <larry.jones@sdrc.com>
6681
6682         * update.c (special_file_mismatch): Initialize *_hardlinks to
6683         avoid trying to free garbage later on.  (Reported by Jan
6684         Scheffczyk <herta@Xterminator.StudFB.UniBw-Muenchen.de>.)
6685
6686 1999-08-17  Larry Jones  <larry.jones@sdrc.com>
6687
6688         * sanity.sh (basicc-11): Older versions of sh don't understand
6689         ``if ! test...''.  (Patch submitted by David J N Begley
6690         <david@avarice.nepean.uws.edu.au>.)
6691
6692 1999-08-17  Larry Jones  <larry.jones@sdrc.com>
6693
6694         * client.c, hardlink.c, hash.c, hash.h, main.c, recurse.c: Change
6695         enum constant UNKNOWN to avoid conflicts on HPUX 11.0.  (Reported
6696         by Laurent Duperval <laurent.duperval@cgi.ca>.)
6697
6698 1999-08-16  Larry Jones  <larry.jones@sdrc.com>
6699
6700         client.c: Eliminate redundant #if.  (Patch submitted by Assar
6701         Westerlund <assar@sics.se>.)
6702
6703 1999-07-30  Larry Jones  <larry.jones@sdrc.com>
6704
6705         * rcs.c (RCS_checkin): Terminate cleanly if RCS_addbranch fails
6706         rather than blithely continuing on and crashing.
6707         * sanity.sh (basica): New tests, for this fix.
6708
6709 1999-07-29  Larry Jones  <larry.jones@sdrc.com>
6710
6711         * import.c (add_rcs_file): change "cannot lstat" message to include
6712         userfile (the actual file causing the problem) instead of user
6713         (which may or may not be the same).
6714
6715 1999-07-29  Eric Sink   <eric@sourcegear.com>
6716
6717         * version.c: Push version number to 1.10.7.1.
6718
6719         * version.c: Version 1.10.7.
6720
6721 1999-07-28  Eric Sink   <eric@sourcegear.com>
6722
6723         * sanity.sh: before running basicc-11, we need to see if
6724         the cwd has been deleted (by basicc-8).  If so, we
6725         recreate it to allow basicc-11 to proceed.  This may be
6726         something that only happens under the Linux 2.2 kernel.
6727
6728 1999-07-18  Karl Fogel  <kfogel@floss.red-bean.com>
6729
6730         * edit.c (notify_do): chop newline, if any, from the value
6731         obtained from CVSROOT/users.  Otherwise it just gets passed along
6732         in the argument to the notification program (usually mail), which
6733         will misinterpret it as signifying the end of the command.
6734
6735 1999-07-19  Larry Jones  <larry.jones@sdrc.com>
6736
6737         * rcs.c (RCS_delete_revs): In the WIN32 kludge, be sure that the result
6738         of RCS_getexpand is not NULL before trying to use what it points to.
6739         (Patch submitted by Timothy L. Taylor <ttaylor@mitre.org>.)
6740
6741 1999-07-16  Tom Tromey  <tromey@cygnus.com>
6742
6743         * admin.c (admin): Allow `-k' options to be used unrestricted.
6744
6745 1999-06-23  Jim Kingdon  <http://www.cyclic.com>
6746
6747         * sanity.sh (symlinks2): New test, for symlinks in working
6748         directory without PreservePermissions.  This test (modulo a few
6749         details not relevant to testing whether we are following symlinks)
6750         worked remote as of now, or either remote or local for CVS 1.9.
6751         * subr.c (get_file): Revert 1998-02-15 change to special-case
6752         symlinks.  This makes the above test work local too.
6753         * rcs.c (RCS_checkin): Move the logic to handle special-case
6754         symlinks (and other files other than regular files) here, and make
6755         it only happen if PreservePermissions is on.
6756
6757 1999-06-18  Larry Jones  <larry.jones@sdrc.com>
6758
6759         * sanity.sh (devcom3-9a): Be less specific about the expected
6760         error message (BSD/OS 4.0 has a bug that can cause exec* to fail
6761         with EACCES instead of ENOENT).
6762
6763 1999-06-08  Larry Jones  <larry.jones@sdrc.com>
6764
6765         * sanity.sh (diff-4, dirs2-10, tagf-13, importc-7, conflicts2-142b8):
6766         Use ${PROG} instead of "cvs".
6767
6768 1999-06-05  Jim Kingdon  <http://www.cyclic.com>
6769
6770         * recurse.c (do_recursion, do_dir_proc): Make the SERVER_ACTIVE
6771         #ifdef be only around the check for server_active.  Modulo a few
6772         cosmetic tweaks, same as a patch submitted by Johannes Stezenbach
6773         of propack-data.de.
6774
6775 1999-06-01  Jim Kingdon  <http://www.cyclic.com>
6776
6777         * sanity.sh: Add comment about rcs2-7 failures on certain days.
6778
6779         Make "cvs status -v" on a removed file work:
6780         * status.c (cvsstatus): Reindent the client code.
6781         (status_fileproc): Don't need a CVS/Entries listing to show the
6782         tags.
6783         * sanity.sh (rmadd2): New test rmadd2-16 tests the existing
6784         behavior with "cvs log"; new test rmadd2-17 tests the new behavior
6785         with "cvs status".
6786
6787         * sanity.sh (basicc): To match no output in dotest, put the empty
6788         regexp first.  Remove tests which check that first-dir exists,
6789         since that isn't true in the case where the OS let us delete it.
6790         (dotest_internal): Fix so that things work with two regexps, with
6791         an empty one first.
6792
6793 1999-05-28  Larry Jones  <larry.jones@sdrc.com>
6794
6795         * sanity.sh (server-4): Replace bogus directory with real one since
6796         the server now checks it.
6797
6798 1999-05-27  Jim Kingdon  <http://www.cyclic.com>
6799
6800         * sanity.sh (spacefiles): Clean up -c, top, and -b at end.
6801         (spacefiles, files): Fix bad references to CVSROOT_DIRNAME.
6802
6803         Fix two problems pointed out by Olaf Kirch of swb.de/caldera.de:
6804         * server.c (outside_root): New function, contains expanded version
6805         of code from serve_directory.
6806         (serve_directory): Call outside_root.
6807         (outside_dir): New function
6808         (serve_modified, serve_is_modified, serve_notify,
6809         serve_questionable, serve_unchanged): Call outside_dir.
6810         * sanity.sh (server2): New tests, for these fixes.
6811
6812 1999-05-26  Jim Kingdon  <http://www.cyclic.com>
6813
6814         * cvs.h, subr.c (xmalloc): Return void* not char*, like xrealloc
6815         has done for some time.
6816         * modules.c (do_module): If we find the module as a directory/file
6817         (rather than in the modules file), skip a bunch of processing
6818         which was unnecessary and also broken in most of the cases
6819         now tested for by the spacefiles sanity.sh test.
6820         * sanity.sh (spacefiles): New test, for specifying filenames
6821         (containing spaces, or starting with '-', or starting with '/') to
6822         "cvs co".
6823
6824 1999-05-25  Jim Kingdon  <http://www.cyclic.com>
6825
6826         * client.c (update_entries): Make the old DONT_USE_PATCH code the
6827         only code.  This means that if people are still on CVS 1.9
6828         servers, then CVS will fall back to transferring entire files.
6829         This is better than looking for an external "patch" program which
6830         causes no end of troubles (especially on Windows, but someone just
6831         posted to info-cvs about a problem with the Solaris patch).  (This
6832         change was run by devel-cvs and feedback was positive).
6833
6834         * subr.c (xmalloc, xrealloc): The new error.c does not support
6835         %lu; use sprintf instead.
6836
6837 1999-05-25 Derek Price
6838         <http://www-personal.engin.umich.edu/~oberon/resume.html>
6839
6840         * sanity.sh (server): Escaped a few more newlines in
6841         another awk script.  Solaris awk still don't like 'em.
6842
6843 1999-05-25 Derek Price
6844         <http://www-personal.engin.umich.edu/~oberon/resume.html>
6845         and Jim Kingdon
6846
6847         * log.c: Remove comment which said "you can delete [this line]"
6848         and which stuck around for over 3 years.
6849         * sanity.sh (errmsg2 & tagdate): Added tests to prove the
6850         current functionality with respect to combining -r and -D.
6851
6852 1999-05-20  Larry Jones  <larry.jones@sdrc.com>
6853
6854         * server.c (pserver_authenticate_connection): Previous changes
6855         broke verify_and_exit (reported by Robert Fitzsimons, thanks).
6856         * sanity.sh (pserver): New tests pserver-7 and pserver-8 for this.
6857
6858 1999-05-18 Derek Price
6859         <http://www-personal.engin.umich.edu/~oberon/resume.html>
6860
6861         * sanity.sh (keyword2): Escaped a newline in an awk script.
6862         Apparently Solaris awk don't like 'em.
6863
6864 1999-05-18  Jim Kingdon  <http://www.cyclic.com>
6865
6866         * sanity.sh (basicc): Allow the behavior whereby unlink(".")
6867         succeeds.  Reported by Jeremy Buhler and Pavel Roskin.
6868
6869 1999-05-17  Steve Cameron of Compaq
6870
6871         * sanity.sh: Modified to no longer use "test -e" for existence
6872         test as it has turned out to be not portable enough.  Instead use
6873         "test -f", "test -d", etc.
6874         [SCO Unixware 7 apparently doesn't always support it -kingdon]
6875
6876 1999-05-17  Jim Kingdon  <http://www.cyclic.com>
6877
6878         * version.c: Push version number to 1.10.6.1.
6879
6880         * version.c: Version 1.10.6.
6881
6882 1999-05-16  Jim Kingdon  <http://www.cyclic.com>
6883
6884         * update.c (patch_file): When we are passing vn_rcs to
6885         RCS_checkout, pass vn_tag as well.
6886         * sanity.sh (keyword): In test keyword-22, test for the fixed
6887         behavior rather than the buggy behavior.  Adjust keyword-23.  Add
6888         test keyword-24, to see whether keyword-23 really worked.
6889
6890 1999-05-12  Larry Jones  <larry.jones@sdrc.com>
6891
6892         * sanity.sh (pserver-4, pserver-5): Bogus error messages from
6893         non-root initgroups on some 4.4BSD derived systems now show up
6894         in different places in the output.
6895
6896 1999-05-12  Jim Kingdon  <http://www.cyclic.com>
6897
6898         * import.c (import): Don't allow the user to supply a repository
6899         directory which takes us out of the cvsroot.
6900         * sanity.sh (importc): New tests importc-10 to importc-12, for this.
6901
6902 1999-05-11  Larry Jones  <larry.jones@sdrc.com>
6903
6904         * server.c (serve_notify): Allocate enough memory to hold the
6905         "misformed Notify request" message in pending_error_text.
6906
6907 1999-05-11  Jim Kingdon  <http://www.cyclic.com>
6908
6909         * server.c (switch_to_user): Ignore EPERM from initgroups.  Fixes
6910         pserver-4 in testsuite.
6911         (pserver_authenticate_connection): Only print "I LOVE YOU" after
6912         switch_to_user has come back successfully.
6913
6914         * server.c (pserver_authenticate_connection): Call error_exit
6915         rather than reinventing the wheel ourselves.
6916         (switch_to_user): Check for errors from setuid, setgid, and
6917         initgroups.  Fix the #ifdef's (the previous code would skip the
6918         setuid call if SETXID_SUPPORT).
6919
6920 1999-05-10  Jim Kingdon  <http://www.cyclic.com>
6921
6922         * server.c (serve_notify), edit.c (notify_do): Check for
6923         and reject characters which will get confused with delimiters.
6924         * sanity.sh (server): New tests server-7 through server-15 test
6925         for this and for other notify behaviors.
6926
6927         * rcs.c (RCS_tag2rev): Also look for a physical branch with
6928         RCS_getversion.
6929         * sanity.sh (tagf): Adjust tagf-12 and following tests to test for
6930         the fixed behavior rather than the broken behavior.
6931
6932 1999-05-07  Jim Kingdon  <http://www.cyclic.com>
6933
6934         * server.c (server_notify): Also set last_node to NULL.
6935         * sanity.sh (server): New tests server-6 and server-7, for this.
6936
6937 1999-05-05  Jim Kingdon  <http://www.cyclic.com>
6938
6939         * rcs.c (rcs_internal_lockfile): Remove unused variable lockfile.
6940
6941         * add.c (add): Look for directories with the same name in a
6942         different case where appropriate (analogous to fopen_case).
6943         In client code, add comment about how this doesn't do quite
6944         everything.
6945
6946 1999-05-03  Jim Meyering  <meyering@ascend.com>
6947
6948         Remove rcs-style ,file, lock files upon signal.
6949         * rcs.c (rcs_lockfile): New file-scoped global.
6950         (rcs_cleanup): New function (similar to patch_cleanup).
6951         (rcs_internal_lockfile): Register rcs_cleanup the first time this
6952         function is called.  Rename uses of local `lockfile' to refer to new
6953         global, `rcs_lockfile'.  Don't free the lock file name string, now
6954         that it's global.
6955         (rcs_internal_unlockfile): Rename `lockfile', as above, and carefully
6956         free and NULL-out the global, rcs_lockfile.
6957
6958 1999-04-30  Jim Kingdon  <http://www.cyclic.com>
6959
6960         * rcs.c (annotate_fileproc): Don't cast NULL in passing it to
6961         RCS_deltas.  Because there is a prototype in scope the cast is
6962         unnecessary (per HACKING's ANSI C or SunOS4 rule), and in fact it
6963         was causing failures on UNICOS because it cast to size_t instead
6964         of size_t*.  (Thanks to Dean Kopesky for reporting this).
6965
6966 1999-04-29  Jim Kingdon  <http://www.cyclic.com>
6967
6968         * sanity.sh: If invoked without any arguments, print a usage
6969         message (thanks to Pavel Roskin for a report/patch).
6970
6971         * run.c (piped_child): Make the error messages more verbose.
6972         (close_on_exec): Reindent.
6973         * sanity.sh (devcom3): Several errors are possible in devcom3-9a.
6974         Adjust for change to piped_child error message.
6975
6976 1999-04-28  Jim Kingdon  <http://www.cyclic.com>
6977
6978         * sanity.sh (devcom3): Add some tests of the CVS/Notify file and
6979         disconnected "cvs edit".
6980
6981         * main.c (opt_usage): Remove -b.
6982
6983 1999-04-20 Derek Price
6984         <http://www-personal.engin.umich.edu/~oberon/resume.html>
6985
6986         * rcs.c (RCS_delete_revs):  RCS_delete_revs uses an
6987         RCS_checkout call to get a new copy of a revision to be
6988         used internally after old revisions were deleted and it was
6989         performing keyword substitutions.  This munged all the
6990         the revisions of the file on the branch containing the
6991         deleted revisions and its sub-branches, as the original they
6992         were being patched from was incorrect.  Corrected this by
6993         passing in "-ko" as an option to RCS_checkout.
6994         * sanity.sh (keywordlog):  modified this test to verify the
6995         correct behavior of 'cvs admin -o'.
6996         [Fixed use of \$ in keywordlog test; added code in RCS_delete_revs
6997         to abort on binary file on Windows -kingdon]
6998
6999 1999-04-21  Derek Price
7000         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7001         and Jim Kingdon
7002
7003         * tag.c (tag_check_valid): A bug was causing CVS to spin
7004         indefinately when -j:<date> was specified.  CVS now returns
7005         an error.
7006         * sanity.sh: Added a test (tagdate-12) to test this.
7007
7008 1999-04-19  Jim Kingdon  <http://www.cyclic.com>
7009
7010         * sanity.sh (backuprecover): Clean up the repository at the end.
7011
7012 1999-04-18  Derek Price
7013         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7014
7015         * sanity.sh added a test (backuprecover) to test cvs behavior
7016         with a repository that is out of date relative to the
7017         developer's workspaces.
7018         [Fix --keep code; move test to "Repository Storage" section since
7019         it doesn't really exercise the diff/diff3 library. -kingdon]
7020
7021 1999-04-13  Derek Price
7022         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7023
7024         * sanity.sh (diff):  Tests to verify correct operation of
7025         the --ifdef parameter to cvs diff.
7026         [indentation fixed -kingdon].
7027
7028 1999-04-13  Derek Price
7029         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7030         for Noah Friedman  <friedman@splode.com>
7031
7032         * diff.c (diff): Put "--ifdef=" in opts string, not "-D"; the
7033         latter is confused by pserver for a date spec.
7034
7035 1999-04-14  Jim Kingdon  <http://www.cyclic.com>
7036
7037         * fileattr.h: Adjust comments to reflect the official version of
7038         the fileattr format now being in cvs.texinfo.
7039
7040 1999-04-05  Jim Kingdon
7041
7042         * sanity.sh (watch5): Remove nonstandard --keep code.  Don't pass
7043         -f to rm when cleaning up (that tends to mask bugs).  Add watch5
7044         to list of tests at start.  Add comment explaining why we consider
7045         the behavior we test for the right one.  Rename a few tests which
7046         had been erroneously named watch6* instead of watch5*.
7047         * client.c (update_entries): Add comment with brief discussion of
7048         whether there is a better way.
7049
7050 1999-04-05  Derek Price
7051         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7052
7053         * client.c (update_entries):  Only call mark_up_to_date
7054         (which deletes the CVS/Base/<filename> file for watched
7055         and edited files) on commit.
7056         * sanity.sh:  Make sure the CVS/Base/<filename> file for
7057         a watched and edited file is not removed on a status or
7058         update of a touched/unmodfied file.
7059
7060 1999-03-30  Larry Jones  <larry.jones@sdrc.com>
7061
7062         * client.c (get_responses_and_close), commit.c (commit),
7063         update.c (do_update): If the sleep(1) call returns prematurely
7064         (due to the way wakeup is scheduled or receiving a signal), do
7065         it again.
7066
7067 1999-03-26  Jim Kingdon  <http://www.cyclic.com>
7068
7069         * server.c (server): Add comment about Gzip-stream vs. RQ_ROOTLESS.
7070
7071         * sanity.sh (modules3-11b): Adjust exact text of error message to
7072         reflect 1999-03-24 change to dirswitch.
7073
7074 1999-03-25  Jim Kingdon  <http://www.cyclic.com>
7075
7076         * admin.c (admin): Make argument to -e optional, to match the
7077         documentation.
7078         * sanity.sh (admin-19a-2): Test for this.
7079
7080         * server.c (serve_root): Update comment about checking for missing
7081         Root request.
7082
7083 1999-03-24  Jim Kingdon  <http://www.cyclic.com>
7084
7085         * server.c (dirswitch): Also check dir here, similar to
7086         what server_pathname_check does for other cases.
7087         * sanity.sh (files): Adjust files-14 to test for this.
7088
7089 1999-03-24  Derek Price
7090         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7091         and Jim Kingdon
7092
7093         * sanity.sh: added a test (files-13) to test .. indirection
7094         in a path and another (files-14) to make sure we still fail
7095         out when the '..' indirection takes us into the $CVSROOT
7096         directory or beyond.
7097
7098 1999-03-24  Larry Jones  <larry.jones@sdrc.com>
7099
7100         * rcs.c: Change enum constants ADD and DELETE to something less
7101         likely to run into conflicts.
7102
7103 1999-03-21  Jim Kingdon  <http://www.cyclic.com>
7104
7105         * sanity.sh (tagf): New test, tests for moving a branch tag to a
7106         non-branch tag and trying to recover.
7107
7108 1999-03-12  Jim Kingdon  <http://www.cyclic.com>
7109
7110         * sanity.sh (branches): Tweak test branches-5 to test the case in
7111         which one modifies a file and then branches it.
7112
7113 1999-03-09  John Bley of duke.edu
7114
7115         * mkmodules.c (filelist): Missed a NULL in this struct (should
7116         have 3 members, only had 2).
7117
7118 1999-03-07  Jim Kingdon  <http://www.cyclic.com>
7119
7120         * sanity.sh (Index): Rename new test from rm_CVS/Root to rmroot
7121         (we don't have a formal rule about funky punctuation in test names
7122         but both underscore and a slash is too funky for me :-)).
7123         Reindent a few tests which were off.
7124
7125         * root.c: Remove the sentence which had the improper English;
7126         there isn't really a need for that sentence and it isn't
7127         particularly accurate any more.
7128
7129 1999-02-27  Derek Price
7130         <http://www-personal.engin.umich.edu/~oberon/resume.html>
7131
7132         * sanity.sh:  Added rm_CVS/Root test to test that CVS uses
7133         $CVSROOT rather than dumping core when running remotely and
7134         the admin file CVS/Root is deleted from the workspace.
7135
7136         Also, altered a few 'cvs commit' 's in regular expressions to
7137         fit the .${PROG} commit. portability syntax.
7138
7139         * recurse.c:  Stopped CVS from dumping core in the case tested
7140         above.
7141
7142         * root.c:  Fixed somebody's improper english.
7143
7144 1999-02-25  Larry Jones  <larry.jones@sdrc.com>
7145
7146         * sanity.sh (keyword2-12): Use ${QUESTION} instead of ? in the
7147         expected result.
7148
7149 1999-02-24  Jim Kingdon  <http://www.cyclic.com>
7150
7151         * sanity.sh (keyword2): Restore the original \\\$ instead of $.
7152         The latter ends up working due to various kludgy semantics in the
7153         shell and regular expressions, but the former is cleaner.
7154
7155         * sanity.sh (keyword2): Protect keywords against accidental
7156         expansion in sanity.sh itself (most occurrences had this, but not
7157         all).
7158
7159 1999-02-23  Derek Price  <http://www.cyclic.com>
7160         and Jim Kingdon.
7161
7162         * sanity.sh (keyword2): New test, tests for merging with -kk.
7163
7164 1999-02-22  Jim Kingdon  <http://www.cyclic.com>
7165
7166         * version.c: Ease version number to 1.10.5.1.
7167
7168         * version.c: Version 1.10.5.
7169
7170 1999-02-18  Jim Kingdon  <http://www.cyclic.com>
7171
7172         * sanity.sh (files): New test, for a relatively obscure spurious
7173         "Up-to-date check failed" in client/server.
7174
7175         * main.c (lookup_command_attribute): Don't check for "history"
7176         twice.
7177
7178 1999-02-17  Jim Kingdon  <http://www.cyclic.com>
7179             and Hallvard B Furuseth
7180
7181         * root.c (parse_cvsroot): Rearrange ifdefs to squelch possible
7182         warnings about statement not reached.
7183
7184 1999-02-16  Jim Kingdon  <http://www.cyclic.com>
7185
7186         * recurse.c (start_recursion): If we are skipping the current
7187         directory (due to it being from the wrong repository), also adjust
7188         the arguments we send to the server accordingly (like we already
7189         do for the case in which there is no CVS directory).
7190         * sanity.sh (multiroot4): New test, for this.  All these tests had
7191         passed locally, but remote multiroot4-12 tests for this fix.
7192         (multiroot): Adjust multiroot-diff-1, multiroot-update-2,
7193         multiroot-tag-1, multiroot-status-1, multiroot-update-3, and
7194         multiroot-log-1 to reflect the cosmetic change this produces (one
7195         less "Diffing ." message).
7196         (multiroot2): multiroot2-8 likewise.
7197
7198 1999-02-10  Jim Kingdon  <http://www.cyclic.com>
7199
7200         * tag.c (cvstag): Don't pass SEND_NO_CONTENTS if -c specified.
7201         * sanity.sh (tagc): New test, for various tag -c behaviors.
7202         Test tagc-6 tests for this fix.
7203
7204 1999-02-09  Jim Kingdon  <http://www.cyclic.com>
7205
7206         * error.c (error): Rewrite to no longer use vasprintf (see
7207         ../lib/ChangeLog for rationale).  Note the slight change in
7208         interface - callers which want %8.8s or similar formats need to
7209         call sprintf.
7210         * lock.c (lock_wait, lock_obtained): Use sprintf.
7211
7212 1999-02-08  Jim Kingdon  <http://www.cyclic.com>
7213
7214         * rcs.c (RCS_delete_revs): Pass -a to diff_exec.
7215         * sanity.sh (binfiles3): New tests binfiles3-9 through
7216         binfiles3-13 test for this fix.
7217         * sanity.sh (binfiles): New tests binfiles-o4 and binfiles-o5
7218         (which don't test this bug, just on general principles).
7219
7220 1999-02-04  Jim Kingdon  <http://www.cyclic.com>
7221
7222         * lock.c (lock_name): Permissions of directories in LockDir
7223         shouldn't depend on the umask.
7224         * sanity.sh (lockfiles): Set umask and CVSUMASK, to test for this.
7225
7226 1999-02-01  Jim Kingdon  <http://www.cyclic.com>
7227
7228         * sanity.sh (keywordlog): New tests keywordlog-22 and
7229         keywordlog-23 test keyword expansion and $Log.  Adjust other tests
7230         so that revisions differ more from each other, so this is a
7231         better test.
7232
7233 1999-01-29  Jim Kingdon  <http://www.cyclic.com>
7234
7235         * commit.c (checkaddfile): If options is "", treat it the same as
7236         NULL.  Centralize this check, and the one for it starting with
7237         "-k", at the start of the function.
7238
7239         * rcs.c, rcs.h (RCS_setexpand): New function.
7240         * admin.c (admin_fileproc): Access keyword expansion field via
7241         RCS_getexpand and RCS_setexpand, rather than directly.
7242         * commit.c (checkaddfile): When resurrecting, set the keyword
7243         expansion mode.
7244         * sanity.sh (binfiles3): Adjust tests binfiles3-7 and binfiles3-8
7245         for the new behavior.
7246
7247 1999-01-27  Jim Kingdon  <http://www.cyclic.com>
7248
7249         * sanity.sh (multiroot3): Add new variant of multiroot3-10 test
7250         for RELATIVE_REPOS.  Move multiroot3-11 test out of the
7251         conditionals; it works the same for remote or local,
7252         RELATIVE_REPOS or no.
7253
7254         * options.h.in: Make RELATIVE_REPOS the default, as has been
7255         announced as a future direction since 1997-10-11.
7256         * sanity.sh (multiroot): Tweak multiroot-update-1a and
7257         multiroot-update-1b tests to work with either RELATIVE_REPOS or
7258         non-RELATIVE_REPOS.
7259
7260         * sanity.sh (client-9): Don't assume the time zone.
7261
7262 1999-01-26  Jim Kingdon  <http://www.cyclic.com>
7263
7264         Fix one facet of the "cvs add -kb" re-adding problem (the other
7265         known facet is tested for by binfiles3-8).
7266         * add.c (add): When re-adding a file, set the keyword expansion
7267         as we normally would.
7268         * sanity.sh (binfiles3): New test binfiles3-6a tests for this.
7269
7270 1999-01-22  Jim Kingdon  <http://www.cyclic.com>
7271
7272         * sanity.sh (rmadd2): New tests, for undoing a commit.
7273
7274 1999-01-21  Eric Mumpower  <nocturne@cygnus.com>
7275
7276         * sanity.sh (reposmv): Actually modify CVSROOT in current
7277         environment when calling functions, rather than trying to achieve
7278         the same effect with "CVSROOT=foo functionname". (Many common
7279         bourne shells, including those in SunOS and Solaris 2.4-2.7,
7280         do not properly handle "ENVVAR=foo command" when "command" is
7281         a user-defined shell function rather than an actual executable.)
7282
7283 1999-01-15  Jim Kingdon  <http://www.cyclic.com>
7284
7285         * sanity.sh (rcs3): Redirect awk's stdin to /dev/null like all the
7286         other awk invocations.  GNU awk seems not to read stdin in this
7287         case, but that behavior is hard to reconcile with the Single Unix
7288         Spec and some awks don't do it.
7289
7290         * sanity.sh (binfiles, binfiles2, binfiles3, server): Use the same
7291         tr trick as in rcs3.  People don't seem to have been complaining,
7292         and this should fix server-4 for HPUX.
7293
7294 1999-01-14  Jim Kingdon  <http://www.cyclic.com>
7295
7296         * client.c (recv_line): If the line we are reading contains a
7297         character which would sign-extend to EOF, don't treat it as end of
7298         file.  recv() doesn't report end of file this way and this might
7299         fix bugs with 0xff characters.
7300
7301 1999-01-14  Larry Jones  <larry.jones@sdrc.com>
7302
7303         * client.c (recv_line): Handle EOF from server.
7304
7305         * sanity.sh (importc-8, importc-9): Accept anything in the seconds
7306         fields of the timestamps since touch doesn't set it reliably.
7307         (This isn't great, but it's better than nothing.)
7308
7309 1999-01-14  Jim Kingdon  <http://www.cyclic.com>
7310
7311         * run.c (run_exec): Adjust comment about vfork; this isn't the place
7312         to get into a treatise about fork performance vs. vfork
7313         performance but it isn't quite as simple as whether one has
7314         copy-on-write.
7315
7316 1999-01-13  Larry Jones  <larry.jones@sdrc.com>
7317
7318         * sanity.sh (dotest_fail): Handle spurrious output from assert better.
7319
7320         * sanity.sh (rcs3-4, rcs3-5a): Handle even more variants of the
7321         assertion failure message.
7322
7323 1999-01-12  Larry Jones  <larry.jones@sdrc.com>
7324
7325         * sanity.sh (mtfr-3): ls behavior varies wildly on nonexistant files,
7326         just use echo instead.
7327
7328 1999-01-11  Jim Meyering  <meyering@ascend.com>
7329
7330         * sanity.sh (mkmodules-temp-file-removal): New test, for this.
7331         * mkmodules.c (mkmodules): Remove each `CVSROOT/.#[0-9]*' temporary
7332         file that's used to check out files listed in CVSROOT/checkoutlist.
7333         Remove extra semicolon at end of line.
7334
7335 1999-01-11  Larry Jones  <larry.jones@sdrc.com>
7336
7337         * sanity.sh (rcs3-5a): Allow for multiple lines of output before the
7338         assertion failure message.
7339
7340         * sanity.sh (lockfiles-6, client-8): Work around bug in HP-UX chmod
7341         (doesn't allow anything to follow omitted permissions).
7342
7343 1999-01-09  Jim Kingdon  <http://www.cyclic.com>
7344
7345         * client.c (set_sticky): Nonfatal error if we can't write it.
7346         * sanity.sh (dirs2-8 through dirs2-14): New tests, for this.
7347
7348         * sanity.sh (rcs3): Write NUL character with tr not awk, in
7349         accordance with Single Unix Specification.  Hopefully will fix
7350         rcs3-7 for HPUX.  Will not work on SunOS4, but then again neither
7351         did the old syntax.
7352
7353 1999-01-05  Jim Kingdon  <http://www.cyclic.com>
7354
7355         * client.c, update.c: Rename MD5* functions to cvs_MD5* per
7356         corresponding change to ../lib/md5.h.
7357
7358 1999-01-03  Jim Kingdon  <http://www.cyclic.com>
7359
7360         * sanity.sh (client): Give file1 a predictable mode so that the
7361         output in client-9 will not depend on the umask of the user
7362         running the tests.
7363
7364 1998-12-29  Jim Kingdon  <http://www.cyclic.com>
7365
7366         * client.c (client_senddate): Use date_to_internet rather than
7367         using our own "5/26/1997 13:01:40 GMT" date format.
7368         * main.c (date_to_internet): Check for errors from sscanf.  Always
7369         send a four digit year.  Send hours, minutes, and seconds as two
7370         digits per RFC822.
7371         * sanity.sh (client): New tests client-8 and client-9 test for this.
7372
7373         * sanity.sh (rcs2): New tests rcs2-6 through rcs2-8 test for fix
7374         to lib/getdate.y (before the fix, "100 months" or "8 years" would
7375         tend to mean the year 1969, thus the tests would give "cvs update:
7376         file1 is no longer in the repository").
7377
7378 1998-12-28  Larry Jones  <larry.jones@sdrc.com>
7379
7380         * entries.c (Register): Return if unable to open log file to avoid
7381         referencing the invalid file pointer.
7382         * sanity.sh (dirs2-7): With above change, no longer fails.
7383         * sanity.sh (rcs3-5a): Another assertion failure message.
7384         * sanity.sh (pserver-4, pserver-5): Some 4.4BSD derived systems spit
7385         out bogus error messages when initgroups is called as non-root.
7386
7387 1998-12-23  Larry Jones  <larry.jones@sdrc.com>
7388
7389         * sanity.sh (rcs3, dotest_fail): The assertion failure message varies
7390         wildly between different systems and the resulting abort call can
7391         even result in spurrious output.  Fix the regexp to accept nearly
7392         anything containing some kind of assertion failure and ensure that
7393         any spurrious output ends up in the output file instead of on the
7394         terminal.
7395
7396 1998-12-23  Jim Kingdon  <http://www.cyclic.com>
7397
7398         * admin.c, checkout.c, commit.c, cvsrc.c, expand_path.c,
7399         history.c, ignore.c, import.c, log.c, mkmodules.c, modules.c,
7400         myndbm.c, parseinfo.c, rcs.c, remove.c, rtag.c, status.c, subr.c,
7401         tag.c, wrapper.c: Cast all char's to unsigned char before passing
7402         them to ctype.h functions (isalpha, isgraph, isalnum, isspace,
7403         isdigit, isprint, isupper).  Whether using ctype.h is the right
7404         thing at all is unclear to me (having the server depend on locale
7405         seems wrong, as we don't necessarily have any good way to set the
7406         right locale, if there even is such a concept as 'right' locale in
7407         this context), but as long as we use ctype.h we might as use it
7408         according to the standards (this affects systems where plain char
7409         is signed but users supply characters with the 8th bit set).
7410         Thanks to Paul Eggert for suggesting this.
7411
7412 1998-12-22  Jim Kingdon  <http://www.cyclic.com>
7413
7414         * sanity.sh (rcs3): Oops, the earlier fix for srcdir only fixed
7415         the non-remote case, not the remote case.  Fix the other occurrence.
7416
7417 1998-12-22  Jim Kingdon
7418
7419         * sanity.sh (rcs3): The assertion failure message varies slightly
7420         depending on whether CVS was built with srcdir != ".".  Fix regexp.
7421
7422 1998-12-21  Jim Kingdon
7423
7424         * rcs.c (RCS_getdate): Reindent Jim Meyering's change; remove
7425         unused variable x_vers.
7426
7427         * rcs.c: When printing an unexpected character we found in the RCS
7428         file, print it in hex rather than as a character (see comment for
7429         rationale).
7430         * sanity.sh (rcs3): Adjust rcs3-2 and rcs3-7 tests accordingly.
7431
7432         * sanity.sh (rcs3): New test, for some error handling cases
7433         involving parsing RCS files.
7434
7435 1998-12-16  Jim Meyering  <meyering@ascend.com>
7436
7437         * rcs.c (RCS_getdate): Handle the case in which a file is first
7438         imported after its initial version has been created.
7439         * sanity.sh (import-after-initial): New test for that.
7440
7441 1998-12-17  Jim Kingdon
7442
7443         * server.c (serve_root): Pserver_Repos only exists if
7444         AUTH_SERVER_SUPPORT is defined.
7445
7446 1998-12-12  Jim Kingdon, and Derek R. Price of Stortek.
7447
7448         * sanity.sh (multiroot): Change + to ${PLUS}.
7449
7450 1998-12-12  Jim Kingdon, and Gary Young of Motorola
7451
7452         * sanity.sh (admin): In tests admin-13, admin-25, and admin-29,
7453         allow 4 digit year in addition to 2 digit year.
7454
7455 1998-12-12  Jim Kingdon
7456
7457         * sanity.sh (log): New tests log-14a and log-14b test for -rHEAD
7458         and for HEAD as (nonexistent) file name.
7459
7460 1998-12-02  Jim Kingdon
7461
7462         * version.c: Squish version number to 1.10.4.1.
7463
7464         * version.c: Version 1.10.4.
7465
7466 1998-11-24  Jim Kingdon
7467
7468         * recurse.c (do_file_proc): Check for errors from RCS_parse.
7469         * sanity.sh (rcslib-symlink-7 through rcslib-symlink-10): New
7470         tests, test for this.
7471
7472         * sanity.sh (reposmv-2): Adjust for 22-Nov change to Find_Names.
7473
7474         * entries.c (Register): If we can't write Entries.Log, make it a
7475         nonfatal error.
7476         * sanity.sh (dirs2): Test for this fix.
7477
7478         * sanity.sh (dirs2): Clean up working directory at end of test.
7479
7480 1998-11-23  Jim Kingdon
7481
7482         * sanity.sh (dirs2): New test, for some more cases involving
7483         deleting directories and such.
7484
7485         * sanity.sh (dirs): Update for yesterday's change in Find_Names
7486         error handling.  The error in dirs-4 is fairly different now; in
7487         dirs-3 and dirs-3a it is the obvious change.
7488
7489 1998-11-22  Jim Kingdon
7490
7491         * sanity.sh (release): Move the commments listing "cvs release"
7492         tests from modules2-6 to here.
7493         * release.c (release): Update comment to reflect "? foo" case.
7494
7495         * find_names.c (Find_Names): If we can't read the repository, make
7496         it a nonfatal error.  Tell the caller whether this happened.
7497         (find_rcs): Add comment regarding this behavior.
7498         * recurse.c (do_recursion): If Find_Names gives an error, skip
7499         the directory and print a message saying so.
7500         * sanity.sh (modes3): New test, for this.
7501
7502 1998-11-18  Jim Kingdon
7503
7504         * rtag.c (rtag_usage), tag.c (tag_usage): Use "-r rev"
7505         consistently.
7506
7507         * sanity.sh (conflicts3): Tests conflicts3-24 through
7508         conflicts3-28 test for another case similar to conflicts3-22.
7509
7510 1998-11-14  Jim Kingdon
7511
7512         * sanity.sh (diff): New test, for now just tests for the "I know
7513         nothing" message.
7514
7515         * sanity.sh (conflicts2-142b7 through conflicts2-142b11): New
7516         tests; resurrecting doesn't work from one level up.
7517
7518         * sanity.sh (mwrap-7): Remote prints the messages in a different
7519         order.
7520
7521 1998-11-13  Jim Kingdon
7522
7523         * tag.c (check_fileproc): Log tag deletions.
7524         * rtag.c (check_fileproc): Likewise.
7525         * sanity.sh (taginfo-14 through taginfo-18): New tests, for
7526         these behaviors.
7527
7528 1998-11-12  Jim Kingdon
7529
7530         * sanity.sh (mwrap-7): Update for the noexec fix.
7531
7532         * server.c (server_copy_file): Add comment about noexec.
7533
7534         * update.c (checkout_file): Handle noexec case involving revbuf
7535         and modes.
7536         (update_fileproc): In case T_NEEDS_MERGE, let merge_file take care
7537         of noexec, so it can tell the user if there would be conflicts.
7538         (merge_file): Print "conflicts found in FILE" message
7539         regardless of noexec.  Add comment about checking for whether the
7540         file already contained the changes, and noexec.
7541         * sanity.sh (conflicts-192a): New test, for this.
7542
7543 1998-10-20  Jim Kingdon
7544
7545         Use the gzip library on the server.  Probably doesn't speed things
7546         up as currently implemented, but does avoid hassles in terms of
7547         finding an external gzip program.
7548         * zlib.c, server.h (gunzip_and_write, read_and_gzip): Now returns
7549         whether a fatal error occurred, rather than expecting error (1,
7550         ...) to work.
7551         * client.c (update_entries, send_modified): Change callers.
7552         * server.c (receive_file): Rewrite gzip code to use
7553         gunzip_and_write rather than filter_through_gunzip.
7554         (server_updated): Likewise, use read_and_gzip rather than
7555         filter_through_gzip.
7556         * client.c, client.h (filter_through_gzip, filter_through_gunzip),
7557         run.c, cvs.h (filter_stream_through_program): Removed; no longer used.
7558         * sanity.sh (server): New tests server-4 and server-5 test
7559         this feature (note that CVS 1.10 also passes these tests; the
7560         behavior is supposed to be unchanged).
7561
7562 1998-10-19  Jim Kingdon
7563
7564         * sanity.sh (multiroot3): New test, tests for a few more
7565         multiroot cases.
7566
7567         * lock.c (lock_name): Set the permissions on each directory we
7568         create to that of the parent directory.
7569         * sanity.sh (lockfiles): New chmod and tests lockfiles-7a and
7570         lockfiles-7b test for this.  Adjust lockfiles-5 for new text of
7571         error message.
7572
7573 1998-10-15  Jim Kingdon
7574
7575         * server.c (requests): Set RQ_ROOTLESS for "Set".
7576         * sanity.sh (info): Also clean up $HOME/.cvsrc.
7577         (server): Test that we can send Set before Root (had been tested
7578         by crerepos-6b, but only if you ran the info test first).  Tests
7579         for this fix.
7580
7581 1998-10-14  Jim Kingdon
7582
7583         * subr.c (expand_string): Tweak the algorithm so that the size
7584         that it allocates is generally a power of two.
7585
7586 1998-10-14  Eivind Eklund and Jim Kingdon
7587
7588         * commit.c (commit): For the client, don't worry about whether we
7589         are root.
7590
7591 1998-10-13  Jim Kingdon
7592
7593         * server.h (struct request): Change status field to flags and add
7594         RQ_ROOTLESS.
7595         * client.c (handle_valid_requests, supported_request): Change
7596         status to flags.
7597         * server.c (requests): Change status to flags.  Add RQ_ROOTLESS.
7598         * server.c (server): If not RQ_ROOTLESS, and we haven't gotten a
7599         Root request, give an error.
7600
7601 1998-10-12  Jim Kingdon
7602
7603         * version.c: Slide version number to 1.10.3.1.
7604
7605         * Version 1.10.3.
7606
7607         * sanity.sh (modules2-17): Update for 9 Oct 1998 change to
7608         update_dirent_proc.
7609
7610 1998-10-11  Jim Kingdon
7611
7612         * commit.c (checkaddfile, commit_fileproc): A numeric value for
7613         'tag' does not mean that we are adding on a branch.
7614         * sanity.sh (keywordlog): Adjust this test, to test for this
7615         (replaces comment saying we should be doing it).
7616         (rmadd): Likewise.
7617
7618         * sanity.sh (rmadd): New test, tests for various existing
7619         behaviors with "cvs ci -r".
7620
7621 1998-10-09  Jim Kingdon
7622
7623         * update.c (update_dirent_proc): For local CVS, if the directory
7624         does not exist in the working directory nor in the repository,
7625         just skip it.
7626         * sanity.sh (dirs): New tests dirs-3a, dirs-7 and dirs-8 test for
7627         this and related behaviors.  Note that the new behavior was also
7628         the previous behavior for remote; we are only changing it for local.
7629
7630         * wrapper.c, cvsrc.c, ignore.c: Add comments about ignoring .cvsrc
7631         and friends if we can't find a home directory.
7632         * expand_path.c (expand_path): If we can't find the home
7633         directory, give an error rather than a coredump (or worse).
7634         * login.c (construct_cvspass_filename): Don't use errno in error
7635         message; get_homedir doesn't set it.  Add comment about this
7636         message.
7637
7638 1998-10-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
7639
7640         * diff.c (diff): Set variables to NULL at the start, and free
7641         memory at the end.
7642         * sanity.sh (multiroot2): Add tests for this (before the fix,
7643         multiroot2-12 would abort with "no more than two revisions/dates
7644         can be specified").
7645
7646 1998-10-06  Jim Kingdon  <kingdon@harvey.cyclic.com>
7647
7648         * Makefile.in (installcheck check): Remove references to RCSBIN;
7649         they don't do anything now that RCSBIN is ignored.
7650
7651         * client.c: Clean up horrible confusion about whether stored_mode
7652         or stored_mode_valid (or nothing :-)) indicates whether
7653         stored_mode is allocated.  Should fix crashes (for example, on NT
7654         when the server has renamed multiple files from uppercase to
7655         lowercase).
7656
7657         * sanity.sh (dirs): New tests, tests for some cases involving
7658         admins who do surgery on the repository.
7659
7660 1998-10-03  Johannes Stezenbach <johannes.stezenbach@propack-data.de>
7661
7662         * vers_ts.c (Version_TS): If UTIME_EXPECTS_WRITABLE, if
7663         necessary change the file to be writable temporarily to set its
7664         modification time.
7665
7666 1998-10-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
7667
7668         * client.c (handle_error): Add comment about indicating which
7669         errors are from the server.
7670
7671 1998-10-01  Jim Kingdon  <kingdon@harvey.cyclic.com>
7672
7673         * sanity.sh (devcom-180): Allow one digit day.
7674
7675 1998-09-30  Jim Kingdon  <kingdon@harvey.cyclic.com>
7676
7677         * main.c (main): Don't call Name_Root if -d specified.
7678         * recurse.c (do_recursion, do_dir_proc): Don't check CVS/Root
7679         if -d was specified.
7680         * import.c (import): Indentation fix.
7681         * sanity.sh (multiroot): Update for this change.
7682         (reposmv): New test, tests for this.
7683
7684 1998-09-28  Jim Kingdon  <kingdon@harvey.cyclic.com>
7685
7686         * sanity.sh (multiroot2): New test, tests some nested directory
7687         cases.
7688
7689 1998-09-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
7690
7691         * sanity.sh (multiroot): Change a few comments which said modules
7692         when they meant directories.
7693
7694 1998-09-25  Jim Meyering  <meyering@ascend.com>
7695
7696         * sanity.sh (devcom-180): Add 0-9 to the range of characters allowed
7697         in hostname regexp.
7698
7699 1998-09-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
7700
7701         * sanity.sh (log2): New test log2-7a tests for one error handling
7702         case.  Add a comment about another.
7703
7704 1998-09-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
7705
7706         * sanity.sh: Change crerepos test back to :ext: (for several
7707         reasons; see comments).
7708
7709 1998-09-24  Noel Cragg  <noel@swish.red-bean.com>
7710
7711         * sanity.sh (rcslib-symlink-5, rcslib-symlink-6): new tests to
7712         check the operation of "tag" when there are symlinks in the
7713         repository.
7714
7715         * rcs.c (RCS_checkin): remove old code that resolved the symlink
7716         and call resolve_symlink instead.
7717         (RCS_rewrite): call resolve_symlink before doing anything else to
7718         make sure we're operating on the file and not the symlink.
7719
7720         * subr.c (resolve_symlink): new routine -- resolves a symbolic
7721         link chain to its destination.
7722         * cvs.h: add prototype.
7723
7724         * sanity.sh (basica-6.2, basica-6.3): changed match expressions to
7725         reflect new diff output.
7726
7727         * rcs.c (make_file_label): generate labels for files that include
7728         the pathname so that output from "cvs diff" is useable by patch.
7729         Looks like I came up with the mods as Andy Piper
7730         <andyp@parallax.co.uk>; his patch was on the Cyclic unofficial
7731         patches page.
7732
7733         * sanity.sh: change remote access method from ext to fork.  This
7734         results in a significant speed improvement when running the
7735         testsuite.  The ext method on my machine (i586 120MHz Linux 2.0.35
7736         with TCP wrappers installed) runs in 450% of the time of the local
7737         method while the fork method runs in only 150% of the time of the
7738         local method!  Yow!  Am I SWAPPING yet?!
7739         (crerepos-6a, crerepos-6b): change to reflect different error
7740         messages for fork method.
7741         (modes-15): same.
7742
7743         * client.c (connect_to_forked_server): new routine.
7744         (start_server): call the above when method is fork_method.
7745
7746         * root.c: add a new method named "fork".  This method uses the
7747         remote protocol, but does so by forking a "cvs server" process
7748         directly rather than doing "rsh host cvs server" (for example).
7749         This new method has few advantages for day-to-day use, but has
7750         three important benefits for debugging:
7751
7752           1) Most secure installations these days don't allow rsh access.
7753           With this new method, we can still test the remote protocol on
7754           these machines because we don't need to be able to make a local
7755           TCP connection.
7756
7757           2) Even if installations allow rsh access, they almost always
7758           have TCP wrappers to check permissions by IP/hostname.  This
7759           causes a short delay for every connection.  For invocations from
7760           the command line, this doesn't matter much, but it adds up to a
7761           significant amount of time when running the testsuite.
7762
7763           3) On machines that can't (or do not usually) provide rshd
7764           access (I'm thinking of WNT/W95 in particular), we can now run
7765           tests of the remote protocol using this method.  Indeed, we can
7766           run remote protocol tests on any machine that has an
7767           implementation of piped_child().
7768
7769         (parse_cvsroot): handle new method.
7770         (error_exit, xstrdup, isabsolute): new stub functions to use when
7771         compiling root.c with the DEBUG option.
7772         (main): fix a few typos.
7773         * cvs.h (CVSmethod): add fork_method.
7774
7775         * server.c (create_adm_p): use Emptydir as the placeholder
7776         directory instead of "." to avoid problems with "cvs update -d" et
7777         al.
7778
7779 1998-09-22  Noel Cragg  <noel@swish.red-bean.com>
7780
7781         * sanity.sh (devcom-180): fixed typo in regexp.
7782
7783         * main.c (main): remove need_to_create_root and related code
7784         (including CVS_IGNORE_REMOTE_ROOT environment variable).  The
7785         current implementation (just removed) of rewriting the contents of
7786         the CVS/Root file isn't desirable for a number of reasons:
7787
7788           1) Only the top-level CVS/Root directory is updated.  If we're
7789           really interested in pointing our WD at another CVSROOT, we
7790           should have a separate command.
7791
7792           2) With the new multiroot mods, we don't ever want to rewrite
7793           CVS/Root files in the way the removed code did.  Consider:
7794
7795             cvs -d repository1 co a
7796             cd a
7797             cvs -d repository2 co b
7798             cvs -d repository2 update b
7799
7800           The update command would rewrite the contents of a/CVS/Root to
7801           the incorrect value.  Bad.  We then wouldn't be talking to the
7802           correct repository for files in a.
7803
7804           3) The removed code seems to be a quick hack to support working
7805           directories checked out from multiple repositories.  With the
7806           CVS_IGNORE_REMOTE_ROOT variable set, one could perform commands
7807           as in example 2, above, without worring about updating CVS/Root
7808           files.  While in pre-1.10.1 recursive commands wouldn't handle
7809           that working directory hierarchy, one could use commands like
7810           "cvs foo -l" instead.  While not great, this allows you (with a
7811           lot of manual interaction) to have a multiroot WD.  Since we now
7812           have multiroot mods checked in, we don't need this code.
7813
7814         (lookup_command_attribute): while we don't need the
7815         CVS_CMD_USES_WORK_DIR flag anymore (since it only was supporting
7816         the need_to_create_root code), I'm leaving it in.  It may come in
7817         handy at some later date.
7818
7819 1998-09-18  Jim Kingdon  <kingdon@pennington.cyclic.com>
7820
7821         * version.c: Advance version number to 1.10.2.1.
7822
7823         * Version 1.10.2.
7824
7825 1998-09-13  Jim Kingdon  <kingdon@harvey.cyclic.com>
7826
7827         * client.c: Refuse to Copy-file to another directory
7828         * sanity.sh (client): New test, tests for this.
7829
7830         * edit.c (editors_fileproc), watch.c (watchers_fileproc): Use
7831         cvs_output rather than writing to stdout.
7832         * sanity.sh (devcom): Use dotest for tests 178, 180, and 183
7833         (tests that we preserve existing behavior on "cvs editors").
7834
7835         * commit.c (check_fileproc): Don't allow commits in Emptydir.
7836         * sanity.sh (emptydir-8): Test for this change in behavior.
7837
7838         * sanity.sh: Add some compatibility tests to TODO comments at end.
7839
7840 1998-09-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
7841
7842         * wrapper.c (wrap_add): Remove obsolete comment about -m.
7843
7844         * server.c (server_updated): Check for error from CVS_UNLINK.
7845
7846 1998-09-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
7847
7848         * server.c (serve_root): Allocate with malloc, not xmalloc.
7849
7850         * root.c (set_local_cvsroot): Move memory allocation from here...
7851         * server.c (serve_root): ...to here.  Fixes error handling.
7852
7853         * root.c (parse_cvsroot): Don't call check_root_consistent;
7854         parse_cvsroot is only used for local and client.
7855         * root.c (set_local_cvsroot): Move check_root_consistent
7856         functionality from here...
7857         * server.c (serve_root): ...to here.  Fixes error handling.  Also
7858         made the error more explicit, while I am at it.
7859         * server.c (Pserver_Repos): Now static.
7860         * cvs.h: Don't declare it.
7861         * root.c (check_root_consistent): Removed; no longer needed.
7862         * sanity.sh (pserver): New test, tests for this behavior and some
7863         other basic pserver stuff.
7864
7865         * update.c (merge_file): Use cvs_output for "already contains the
7866         differences" message.  Found this one when I actually observed the
7867         out-of-order bug in Real Life(TM).
7868
7869 1998-09-09  Jim Kingdon
7870
7871         * find_names.c (find_dirs): Make sure to zero errno before
7872         going around the loop again.
7873         * find_names.c (find_rcs): Make sure to set save_errno.
7874         (thanks to Alexandre Parenteau for reporting both problems).
7875
7876 1998-09-09  Jim Kingdon  <kingdon@harvey.cyclic.com> and Michael Pakovic
7877
7878         * edit.c (notify_do): Only free line if it is not NULL.
7879
7880 1998-09-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
7881
7882         * cvs.h: dirs_sent_to_server should not be inside
7883         AUTH_SERVER_SUPPORT (reported by both Richard Levitte and Murray
7884         Bishop, thanks).
7885
7886         * lock.c, cvs.h: New variable lock_dir.
7887         * parseinfo.c (parse_config): New option LockDir.
7888         * lock.c (lock_name): New function, abstracts out lock file naming
7889         and also supports LockDir.
7890         * lock.c (lock_simple_remove, Reader_Lock, write_lock, set_lock):
7891         Call it (6 places, to create/remove read/write/master locks).
7892         (Lock_Cleanup): Refuse to reenter this function.
7893         * sanity.sh (lockfiles): New test, tests for this feature.
7894
7895 1998-09-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
7896
7897         * sanity.sh (multiroot): Expect ${TESTDIR} in output instead of
7898         assuming it is /tmp/cvs-sanity (thanks to Mark D. Baushke of Cisco).
7899         Clean up working directory when done (fixes apparent thinko).
7900
7901         * server.c (create_adm_p): Fix one "return" which didn't return a
7902         value.
7903         (dirswitch): Check for errors from create_adm_p.
7904
7905         * sanity.sh: Set LC_ALL rather than just LC_COLLATE.
7906
7907 Wed Sep  2 02:30:22 1998  Jim Kingdon  <kingdon@pennington.cyclic.com>
7908
7909         * version.c: Bump version number to 1.10.1.1.
7910
7911         * Version 1.10.1.
7912
7913 1998-09-01  Jim Kingdon  <kingdon@harvey.cyclic.com>
7914
7915         Administrative note regarding Noel's changes to allow one to
7916         switch from one CVS root to another in a single command: The
7917         ChangeLog entries for the changes which Noel just checked in
7918         appear for 1998-09-01, 1998-08-28, 1998-08-25, 1998-08-19, and
7919         1998-08-18, rather than being all together.
7920
7921         * main.c (set_root_directory): Fix whitespace.
7922         (main): Nuke new -m option and just have that message controlled
7923         by -t.
7924         * server.c (server): Revert the CVS_SERVER_SLEEP code back the way
7925         it was in CVS 1.10.  Attaching to the parent process is relatively
7926         boring (you can just run "cvs server" under a debugger instead),
7927         but connecting to the child process is what the old code was for.
7928         * recurse.c, server.c: Remove DEBUG_NJC code.
7929
7930 1998-09-01  Noel Cragg  <noel@swish.red-bean.com>
7931
7932         * server.c (do_cvs_command): add another environment variable,
7933         CVS_SERVER_SLEEP2, after forking to pause the program so one can
7934         attach a debugger.
7935
7936         * sanity.sh (crerepos): clean up crerepos-18 now that multiroot
7937         works in this case.
7938         (multiroot): finalize tests for local vs. remote operation.
7939
7940         * recurse.c (start_recursion): near the beginning, save the list
7941         of directories to spoof as command-line arguments, if necessary.
7942         Use that list near the end and call send_file_names to send those
7943         arguments to the server.
7944         (do_argument_proc): removed, since we call send_file_names now.
7945
7946         * main.c (main): re-initialize dirs_sent_to_server on each pass
7947         through the loop for each CVSROOT.
7948
7949         * cvs.h: add proto for global variable which keeps track of which
7950         directories have been sent to the server when in client mode.
7951
7952         * client.c (is_arg_a_parent_or_listed_dir): new function.
7953         (arg_should_not_be_sent_to_server): new function.  Tries to decide
7954         whether the given argument should be sent to the server, based on
7955         the current CVSROOT and the list of directories sent to the
7956         server.
7957         (send_repository): add the directory name to the list of
7958         directories sent to the server.
7959         (send_file_names): call arg_should_not_be_sent_to_server.
7960
7961         * add.c (add): switch the order of send_files and send_file_names
7962         to make multiple repository support possible.  send_files needs to
7963         create a list of directories being requested so that
7964         send_file_names can decide which command-line arguments to send to
7965         the server for the given current CVSROOT.
7966         * admin.c (admin): same.
7967         * commit.c (commit): same.
7968         * diff.c (diff): same.
7969         * edit.c (editors): same.
7970         * log.c (cvslog): same.
7971         * rcs.c (annotate): same.
7972         * remove.c (cvsremove): same.
7973         * status.c (cvsstatus): same.
7974         * tag.c (cvstag): same.
7975         * update.c (update): same.
7976         * watch.c (watch_addremove): same.
7977         (watchers): same.
7978
7979 1998-08-31  Jim Kingdon  <kingdon@harvey.cyclic.com>
7980
7981         * sanity.sh: Remove "debug" function; it was apparently checked
7982         in accidentally by Norbert Kiesel's change.
7983
7984 1998-08-31  Norbert Kiesel  <nk@iname.com>
7985
7986         * release.c (release): modify last patch to release so that
7987         save_cwd is called only once and restore_cwd is always called when
7988         neccessary.  Also fixed a tiny memory leak.
7989
7990         * sanity.sh (release): added some more tests for "cvs release"
7991         including a test with two dirs and a "no" for the first one (which
7992         fails without the above patch).
7993
7994 1998-08-28  Noel Cragg  <noel@swish.red-bean.com>
7995
7996         * sanity.sh (crerepos-18): add new comment and change test
7997         slightly to support multiroot.
7998         (multiroot): add more tests.
7999
8000         * server.c (create_adm_p): new function.
8001         (dirswitch): call create_adm_p.  Modify the code to always write a
8002         new CVSADM_REP file, since create_adm_p might have put a
8003         placeholder there and our value is guaranteed to be correct.
8004         (server): move the CVS_SERVER_SLEEP check here so we can debug
8005         things at an earlier stage.
8006
8007         * recurse.c (start_recursion): add large comment about the ideal
8008         solution to the "Argument xxx" problem.
8009
8010         * main.c (main): move position of debugging comment for -m flag.
8011
8012         * diff.c (diff): clear a static variable.
8013
8014         * client.c (send_file_names): check to see if we should send this
8015         argument to the server based on the contents of the appropriate
8016         CVSADM directory.  This avoids "nothing known about foo" messages
8017         and problems with duplicate modules names in multiple
8018         repositories.
8019         (send_a_repository): change method of calculating toplevel_repos
8020         to support multiple CVSROOTs.
8021         (start_server): clear some static variables.
8022
8023 1998-08-28  Jim Meyering  <meyering@ascend.com>
8024
8025         * sanity.sh (basicc-8, basicc-11): Use `.*' instead of explicit
8026         `Operation not permitted'.  Solaris2.5.1 gets a different error:
8027         `Invalid argument'.
8028
8029 1998-08-26  Eric M. Hopper
8030
8031         * sanity.sh: Set LC_COLLATE to "C".
8032
8033 1998-08-25  Noel Cragg  <noel@swish.red-bean.com>
8034
8035         * sanity.sh (multiroot): new set of tests to check the behavior of
8036         multiroot.
8037
8038         * diff.c (diff): set options value to NULL after freeing to reset
8039         the state for the next time around.
8040
8041 1998-08-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
8042
8043         Fix problems with trying to rename an open file:
8044         * rcs.c, rcs.h (RCS_setattic): New function.
8045         * commit.c (remove_file, checkaddfile): Call it.
8046
8047 1998-08-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
8048
8049         * release.c (release): Use save_cwd and restore_cwd to get back to
8050         where we started, rather than hoping that CVS_CHDIR ("..") will do
8051         something useful.  This removes the need for most of
8052         release_delete, so remove that function and inline what is left.
8053         * sanity.sh (basicc): Adjust tests for this fix, also some tests
8054         with multiple arguments to "cvs release" (in the non-"-d"-case, it
8055         would seem like the old code would CVS_CHDIR into directories and not
8056         CVS_CHDIR back, but I'm not going to investigate this and it
8057         should be a moot point with this fix.).
8058
8059         * sanity.sh (basicc): Add tests for a serious bug in "cvs release
8060         -d .".
8061
8062         More error handling fixes:
8063         * ignore.c (ignore_files): Check for errors from opendir and
8064         readdir.
8065         * find_names.c (Find_Names): Check for errors from find_rcs.
8066         (find_rcs, find_dirs): Comment error handling better; also return
8067         an error if we got one from readdir.
8068         * filesubr.c (deep_remove_dir): Also check for errors from readdir.
8069         * import.c (import_descend): Print message on error from opendir
8070         or readdir.
8071         * commit.c (remove_file): Check for errors from CVS_MKDIR and
8072         CVS_RENAME.
8073         (remove_file): No need to remove the file in the temporary
8074         directory; server.c now informs time_stamp_server of what is going
8075         on via CVS/Entries rather than a file with a kludged up timestamp.
8076         * client.c, entries.c, login.c, logmsg.c, mkmodules.c, patch.c,
8077         remove.c, update.c: Check for errors from unlink_file.
8078         * mkmodules.c (write_dbmfile, rename_dbfile, rename_rcsfile):
8079         Check for errors from fclose, CVS_RENAME, and CVS_STAT.
8080         * mkmodules.c (checkout_file): Clarify error handling convention.
8081         * mkmodules.c (mkmodules): Call checkout_file accordingly.
8082         * entries.c (Entries_Open): Check for errors from fclose.
8083
8084 1998-08-21  Ian Lance Taylor  <ian@cygnus.com>
8085
8086         * import.c (import): Output suggested merge command using
8087         cvs_output_tagged rather than just cvs_output.  Don't put
8088         CVSroot_cmdline in the log file.
8089         * client.c (importmergecmd): New static struct.
8090         (handle_mt): Handle +importmergecmd tag.
8091         * sanity.sh (import): Use an explicit -d in importb-2, to test
8092         whether it is reported in the suggested merge command.
8093
8094 1998-08-20  Ian Lance Taylor  <ian@cygnus.com>
8095
8096         * sanity.sh (import): Rewrite tests to use dotest.
8097
8098 1998-08-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
8099
8100         * sanity.sh: Add comments about binary files and cvs import.
8101
8102 1998-08-19  Jim Kingdon  <kingdon@harvey.cyclic.com>
8103
8104         * sanity.sh (importc): Use ${username} in one place where I had
8105         missed it.
8106
8107         Make import -d work client/server:
8108         * client.c, client.h (client_process_import_file): Take new
8109         argument, for whether -d is specified, and send Checkin-time
8110         request if it is set.
8111         * import.c (import_descend): Pass it.
8112         * main.c, cvs.h (date_to_internet): New function.
8113         * server.c (server_modtime): Call date_to_internet.
8114         * server.c (serve_checkin_time): New function.
8115         (requests): Add "Checkin-time" request.
8116         (serve_modified): If it was sent, set the timestamp in the
8117         temporary directory.
8118         * import.c (import): If the client sends a -d option, complain.
8119         (import): For the server, always use the timestamps from the temp
8120         directory.
8121         (import): Don't send a -d option to the server.
8122         * sanity.sh (importc): Add tests for import -d.
8123
8124 Wed Aug 19 15:19:13 1998  Larry Jones  <larry.jones@sdrc.com>
8125
8126         * sanity.sh (unedit-without-baserev-5): use ${DOTSTAR} instead
8127         of .* since we expect to match multiple lines.
8128
8129 1998-08-19  Ian Lance Taylor  <ian@cygnus.com>
8130
8131         * cvs.h (CVSroot_cmdline): Declare.
8132         * root.c (CVSroot_cmdline): Define.
8133         * main.c (main): Set CVSroot_cmdline if the -d option is used.
8134         * import.c (import): If CVSroot_cmdline is not NULL, then mention
8135         an explicit -d option in the suggested merge command line.
8136
8137 Wed Aug 19 00:28:50 1998  Noel Cragg  <noel@swish.red-bean.com>
8138
8139         * recurse.c (do_dir_proc): don't muck with CVS/Root directories
8140         when running in server mode.
8141         (do_recursion): same.
8142
8143         * main.c (main): add the command-line option `m' to help debug the
8144         multiroot environment; it prints out the value of CVSROOT for each
8145         iteration through the main loop.  Also, changed the main loop so
8146         that it gets executed only once when running in server mode (the
8147         server will only deal with a single CVSROOT).
8148
8149         * recurse.c (do_recursion): change default for
8150         PROCESS_THIS_DIRECTORY to true; we should always process a
8151         directory's contents unless there's an existing CVS/Root file with
8152         a different root than the current root to tell us otherwise.
8153         (do_dir_proc): same.
8154
8155 Tue Aug 18 14:30:59 1998  Noel Cragg  <noel@swish.red-bean.com>
8156
8157         * recurse.c (do_recursion): check the current value of CVS/Root
8158         and add it to our list of CVSROOTs if it doesn't exist.  Decide
8159         whether or not to process files in this directory based based on
8160         the value of CURRENT_ROOT.
8161         (do_dir_proc): same.
8162
8163         * main.c: add two new globals -- root_directories and current_root
8164         -- which keep track of the values of CVSROOT we've seen and which
8165         value of CVSROOT we're currently processing.
8166         (main): put the main loop for stepping through cvsroot values
8167         here, since we might need to send command-specific arguments for
8168         every unique non-local cvsroot.  Moved blocks of code around so
8169         that one-time initializations happen first (outside the loop) and
8170         the other stuff happens inside the loop.
8171         (set_root_directory): helper function.
8172
8173         * cvs.h: add prototypes for root_directories and current_root, two
8174         new globals for keeping track of multiple CVSROOT information.
8175
8176 1998-08-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
8177
8178         * sanity.sh: Don't assume that the shell leaves $^ unexpanded in
8179         an unquoted here-document (suggested by Bart Schaefer to help when
8180         zsh is the shell).
8181
8182 1998-08-17  Ian Lance Taylor  <ian@cygnus.com>
8183
8184         * commit.c (checkaddfile): Don't call fix_rcs_modes.
8185         (fix_rcs_modes): Remove.
8186
8187 1998-08-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
8188
8189         * create_adm.c (Create_Admin): Don't condition traces on
8190         SERVER_SUPPORT; SERVER_SUPPORT shouldn't do (much of) anything
8191         independent of server_active.
8192
8193         * sanity.sh (binfiles3): New test, for yet another binary file
8194         bug (sigh).  Thanks to Jason Aten for reporting this one.
8195
8196 1998-08-15  Jim Kingdon  <kingdon@harvey.cyclic.com>
8197
8198         * rcscmds.c (call_diff_write_output): Update to reflect new
8199         calling convention for the write_output callback.
8200
8201 1998-08-15  Jim Meyering  <meyering@ascend.com>
8202
8203         * update.c (merge_file): Warn about failed unlink when not due
8204         to ENOENT.
8205
8206         * server.h (CLIENT_SERVER_STR): New macro
8207         * create_adm.c (Create_Admin): Use it.
8208         * entries.c (Scratch_Entry, Register): Use it.
8209         * filesubr.c (copy_file, xchmod, rename_file, unlink_file): Use it.
8210         * history.c (history_write): Use it.
8211         * modules.c (do_module): Use it.
8212         * no_diff.c (No_Difference): Use it.
8213         * run.c (run_popen): Use it.
8214         * server.c (server_register): Use it.
8215
8216 1998-08-14  Jim Meyering  <meyering@ascend.com>
8217
8218         * hardlink.c (lookup_file_by_inode): Use existence_error rather than
8219         comparing errno to ENOENT directly.
8220
8221         * client.c (copy_a_file): Unlink destination before doing copy.
8222         * sanity.sh (join-readonly-conflict): New test for this -- it would
8223         fail only in client/server mode.
8224
8225         * sanity.sh (rcsmerge-symlink-4): Don't use `test -L', it's not
8226         portable.  Instead, match against the output of `ls -l'.
8227         (dotest tag8k-16): Simplify tag-construction code and at the same
8228         time, avoid using expr's `length' and `substr' operators.  Not
8229         all versions of expr support those.
8230
8231 1998-08-14  Jim Kingdon  <kingdon@harvey.cyclic.com>
8232
8233         * version.c: Bump version number to 1.10.0.1.
8234
8235 Thu Aug 13 11:15:24 1998  Noel Cragg  <noel@swish.red-bean.com>
8236
8237         * version.c: Change version number to 1.10 and name to `Halibut'.
8238
8239         * sanity.sh (rcslib): new tests to check behavior of symlinks in
8240         the repository.
8241
8242 Wed Aug 12 15:39:38 1998  Noel Cragg  <noel@swish.red-bean.com>
8243
8244         * main.c (lookup_command_attribute): the `annotate' command
8245         shouldn't require access to the repository.  Add comment about
8246         commands that do not use the working directory.
8247
8248 Mon Aug 10 10:26:38 1998  Noel Cragg  <noel@swish.red-bean.com>
8249
8250         * version.c: Change version number to 1.9.30.
8251
8252 Thu Aug  6 17:44:50 1998  Noel Cragg  <noel@swish.red-bean.com>
8253
8254         * server.c (serve_rdiff): change the name of the command (for
8255         error reporting, etc.) from "patch" to "rdiff."
8256         (serve_remove): rename from "cvsremove" to "remove."
8257
8258         * main.c (lookup_command_attribute): the `rdiff' command shouldn't
8259         require write access to the repository.
8260
8261 1998-08-06  David Masterson of kla-tencor.com
8262         and Jim Kingdon
8263
8264         * commit.c (commit_filesdoneproc): Don't call strlen ("CVSROOT")
8265         from within the assert statement.  Apparently HP's cc compiler on
8266         HPUX 10.20 has trouble with that.
8267
8268 1998-08-06  Jim Kingdon  <kingdon@harvey.cyclic.com>
8269
8270         * rcs.c (RCS_checkin): When adding branch, if there is a lock on
8271         the branchpoint owned by someone else, leave it alone.  This
8272         restores CVS 1.9 (RCS 5.7) behavior, fixing a core dump.
8273         * sanity.sh (reserved): New tests reserved-16 through reserved-19
8274         test for this fix.
8275
8276 1998-08-05  Jim Kingdon  <kingdon@harvey.cyclic.com>
8277
8278         * sanity.sh (unedit-without-baserev): Use ${QUESTION} not "?".
8279         This makes it work with GNU expr 1.12 as well as 1.16.
8280
8281 Sun Aug  2 20:27:44 1998  Noel Cragg  <noel@swish.red-bean.com>
8282
8283         * mkmodules.c: add comment about TopLevelAdmin for the initial
8284         contents of CVSROOT/config.
8285
8286 1998-07-29  Jim Kingdon  <kingdon@harvey.cyclic.com>
8287
8288         * rcs.c (RCS_checkin): Only try to call xreadlink if HAVE_READLINK
8289         is defined.
8290
8291 Tue Jul 28 19:33:08 1998  Noel Cragg  <noel@swish.red-bean.com>
8292
8293         * version.c: Change version number to 1.9.29.
8294
8295         * rcs.c (RCS_checkin): add code to follow symbolic links in the
8296         repository.
8297
8298 Sun Jul 26 05:14:41 1998  Noel Cragg  <noel@swish.red-bean.com>
8299
8300         * This set of changes reverts the code to pre-1.9.2 behavior and
8301         does not create CVS directories at top-level (except for the
8302         obvious "cvs co .").  Added a new configuration option to switch
8303         between 1.9 and 1.9.2 behavior.
8304
8305         * recurse.c (do_argument_proc): new function.
8306         (start_recursion): in the case that we've done a command from
8307         top-level but have no CVS directory there, the behavior should be
8308         the same as "cvs <cmd> dir1 dir2 dir3...".  Make sure that the
8309         appropriate "Argument" commands are sent to the server by calling
8310         walklist with do_argument_proc.
8311
8312         * client.c (call_in_directory): only create the top-level CVS
8313         directory when we're checking out "." explicitly.  The server will
8314         force creation of this directory in all other cases.
8315
8316         * checkout.c (checkout_proc): only generate the top-level
8317         directory when the TopLevelAdmin=yes.  Also send a message to the
8318         client to do the same.
8319
8320         * parseinfo.c (parse_config): handle TopLevelAdmin option.  Set
8321         top_level_admin.
8322
8323         * main.c: add new variable top_level_admin.
8324         * cvs.h: add extern definition for above.
8325
8326         * sanity.sh: since we're reverting to pre 1.9.2 behavior for
8327         top-level CVS directories, I needed to make changes to a bunch of
8328         tests that made assumptions about said directories.
8329         (preamble): make sure to add read and execute access to everything
8330         in TMPDIR before removing, since some tests make things read-only.
8331         (basicb-1a, basicb-1b, basicb-9a, basicb-9b): use dotest_fail
8332         because these tests check for the non-existant top-level CVS
8333         directory.
8334         (basicc-3, emptydir-6, emptydir-7, crerepos-6): use "rm -rf" so it
8335         won't complain when trying to remove the non-existant top-level
8336         CVS directory.
8337         (106.5): remove imported-f2-orig.tmp.
8338         (modules2-10, emptydir-4, abspath-1ba, abspath-1bb): cd into the
8339         directory where files exist before using the "add" command so cvs
8340         can find CVSROOT in CVS/Root.
8341         (cvsadm-2): look at a different CVS/Repository file, since the
8342         top-level one doesn't exist.
8343         (taginfo-3): create the directory in the repository directly
8344         rather than relying on the fact that the top-level CVS directory
8345         was created in a previous test.
8346         (serverpatch-6): update first-dir explicity, rather than relying
8347         on the non-existant top-level CVS/Entries file.
8348         (crerepos-18): look at CVS/Repository in a subdirectory rather
8349         than in the non-existant top-level CVS directory.
8350         (toplevel): add code to set TopLevelAdmin=yes.
8351         (toplevel2): new tests -- same as toplevel, but TopLevelAdmin=no.
8352
8353 1998-07-21  Jim Meyering  <meyering@ascend.com>
8354
8355         * rcs.c (RCS_checkout): Hoist frees of rev and value.
8356         Warn and return 1 in several cases rather than exiting via
8357         `error (1, ...'.  The latter could abort a multi-file commit
8358         in mid-stream, leaving stale locks in the repository.
8359
8360 1998-07-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
8361
8362         * build_src.com (rcscmds.c): Also look for include files in
8363         [-.diff], just like Ian's 1998-06-18 change to Makefile.in
8364
8365 1998-07-14  Jim Kingdon  <kingdon@harvey.cyclic.com>
8366
8367         * tag.c (pretag_proc), rtag.c (pretag_proc): Don't pass RUN_REALLY
8368         to run_exec.  This means that taginfo does not get executed if the
8369         global -n option is specified.  Which makes it like loginfo, -i,
8370         -e, -o, -t, -u in modules, editinfo, and verifymsg and unlike
8371         commitinfo.  The old behavior was pretty bad in the sense that it
8372         doesn't provide any way to log only the tags which actually
8373         happen.
8374         * sanity.sh (taginfo): New tests taginfo-11 to taginfo-13, for this.
8375
8376 1998-07-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
8377
8378         * sanity.sh (ann-id): Write the test so that it tests for the
8379         current (buggy) behavior.
8380
8381         * sanity.sh (taginfo): Also clean up cvsroot/first-dir.
8382
8383 1998-07-12  Jim Meyering  <meyering@ascend.com>
8384
8385         * sanity.sh (ann-id): New (currently failing) test for bug in how
8386         rcs keywords are expanded in the output of `cvs annotate'.
8387
8388 1998-07-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
8389
8390         * sanity.sh (taginfo): Write the TESTDIR into the script rather
8391         than having the script look at the environment.  This means that
8392         it will work if TESTDIR is set by sanity.sh as well as if
8393         sanity.sh finds TESTDIR in the environment.
8394
8395 1998-07-11  Jim Kingdon  <kingdon@harvey.cyclic.com>
8396
8397         * tag.c (check_fileproc): Calculate the revision to be tagged the
8398         same way that tag_fileproc does.
8399         * sanity.sh (taginfo): New tests, test for this (before this fix,
8400         brtag had said 1.1 not 1.1.2.1).
8401
8402 1998-07-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
8403
8404         * sanity.sh (unedit-without-baserev): Also clean up "2" directory.
8405
8406 1998-07-08  Jim Kingdon  <kingdon@harvey.cyclic.com>
8407
8408         * edit.c (unedit_fileproc): If the Baserev file is missing, don't
8409         get the working file from CVS/Base.  The previous code could get
8410         you version 1.1 of the working file and put 1.2 in CVS/Entries.
8411         * sanity.sh (unedit-without-baserev): New tests test for this.
8412
8413 1998-07-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
8414
8415         * sanity.sh (unedit-without-baserev): Move the test itself to be
8416         in the same order as in the "tests" variable.
8417
8418 1998-07-02  Ian Lance Taylor  <ian@cygnus.com>
8419
8420         * rcscmds.c: Don't include <stdarg.h> or <vasprintf.h>.  Don't
8421         declare vasprintf.
8422         (call_diff_printf_output): Remove.
8423         (call_diff_stdout_callbacks): Don't initialize printf_output
8424         field--it has been removed from the interface.
8425         (call_diff_file_callbacks): Likewise.
8426
8427 1998-07-01  Jim Meyering  <meyering@ascend.com>
8428
8429         * edit.c (unedit_fileproc): Handle the case in which base_get
8430         returns a NULL baserev.  That happens when a file being `unedit'ed
8431         exists in the CVS/Base directory, but isn't listed in the CVS/Baserev
8432         file.  The one case I've seen had no Baserev file at all.  The symptom
8433         (if you're lucky) is a segmentation fault upon unedit.  If you use
8434         SunOS4.1.4 for which printf prints NULL pointers as `(null)', your
8435         unedit command will complete normally, but it will have corrupted
8436         your CVS/Entries file and a subsequent update may result in an
8437         assertion failure, a core dump, and a stale lock in the repository.
8438         * sanity.sh (unedit-without-baserev): New test for this.
8439
8440 1998-07-01  Andy Mortimer of aeat.co.uk
8441         and Jim Kingdon  <kingdon@harvey.cyclic.com>
8442
8443         * server.c (server_updated): Use a prototype if we are using them
8444         for declarations.
8445
8446 1998-06-29  Jim Kingdon  <kingdon@harvey.cyclic.com>
8447
8448         * sanity.sh (commit-readonly): Protect keyword against expansion
8449         in sanity.sh itself.  Keep the keyword in the file which we check
8450         in (or else this fails to test for the RCS_checkout change).
8451
8452 1998-06-27  Jim Meyering  <meyering@ascend.com>
8453
8454         * rcs.c (RCS_checkout): If opening the local workfile fails due to
8455         lack of write access, try to chmod the file and retry the open.
8456         Before, a commit could fail part way through merely because the
8457         open to rewrite with newly expanded rcs keywords would fail.  It's
8458         easy to make this happen if you use `cvs -r' or CVSREAD and you
8459         apply a patch to one of your read-only source files -- patch
8460         preserves the read-only setting for the file and your next commit
8461         will fail after committing that file, but before rewriting
8462         (checking out) your working copy.
8463         * sanity.sh (commit-readonly): New test for this.
8464
8465 1998-06-25  Jim Kingdon  <kingdon@harvey.cyclic.com>
8466
8467         * update.c (patch_file): Update comments regarding context diffs
8468         to reflect diff library.
8469
8470 1998-06-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
8471
8472         * sanity.sh (modules4): Add tests for reversing the order of the
8473         "!first-dir/sdir" and "first-dir".
8474
8475 1998-06-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
8476         and Dave Wolfe@Motorola.
8477
8478         * sanity.sh (modes2): Touch the file before chmod'ing it.
8479
8480 1998-06-21  Ian Lance Taylor  <ian@cygnus.com>
8481
8482         * update.c (merge_files): Revert changes of 1998-06-19.  Instead,
8483         register a merged file with a dummy time stamp.  Only set
8484         last_register_time if we need to.
8485         (join_file): Likewise.  Always register a merged file, not just
8486         when the merge fails.
8487
8488 1998-06-21  Jim Kingdon  <kingdon@harvey.cyclic.com>
8489
8490         * call_diff_write_output, call_diff_printf_output,
8491         call_diff_flush_output, call_diff_write_stdout, call_diff_error,
8492         call_diff_stdout_callbacks, call_diff_file_callbacks): Re-indent.
8493
8494 1998-06-19  Ian Lance Taylor  <ian@cygnus.com>
8495
8496         * update.c (merge_file): Make sure the time stamp of the file is
8497         different from the time stamp we register in the Entries file.
8498         (join_file): Likewise.
8499
8500 1998-06-18  Ian Lance Taylor  <ian@cygnus.com>
8501
8502         * rcscmds.c: Include <stdio.h>.  Include either <stdarg.h> or
8503         <varargs.h>.  Declare vasprintf.
8504         (call_diff_write_output): New static function.
8505         (call_diff_printf_output): New static function.
8506         (call_diff_flush_output): New static function.
8507         (call_diff_write_stdout): New static function.
8508         (call_diff_error): New static function.
8509         (call_diff_stdout_callbacks): New static variable.
8510         (call_diff_file_callbacks): New static variable.
8511         (call_diff): Don't sleep.  Use a callback structure when calling
8512         the diff library.
8513         (call_diff3): Likewise.
8514
8515         * rcscmds.c: Include diffrun.h.
8516         (call_diff, call_diff3): Pass NULL callback parameter.
8517         (diff_run, diff3_run): Don't declare.
8518         * Makefile.in (rcscmds.o): New target, to use -I for diff
8519         directory.
8520         (zlib.o): Depend upon zlib.h.
8521
8522 1998-06-09  Mike Sutton@SAIC
8523
8524         Make it compile with Sun's bundled K&R C compiler:
8525         * rcs.c (count_delta_actions): Change to static to match
8526         declaration.
8527         * client.c (handle_wrapper_rcs_option): Rename error label to
8528         handle_error to avoid clash with function name.
8529
8530 1998-06-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
8531
8532         * rcs.c (RCS_delete_revs): If we are trying to delete all
8533         revisions, give an error rather than assertion failed.
8534         * sanity.sh (basicb): New tests basicb-o* test for this.
8535
8536 1998-06-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
8537
8538         * add.c (add): Only send "Directory" requests if we need to.
8539
8540 1998-06-02  Assar Westerlund  <assar@sics.se>
8541
8542         * client.c: Check for HAVE_GSS_C_NT_HOSTBASED_SERVICE rather than
8543         assuming that GSS_C_NT_HOSTBASED_SERVICE is a macro.
8544         * server.c: Likewise.
8545
8546 1998-06-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
8547
8548         * fileattr.c (fileattr_read): Check for NULL return from strchr.
8549         * sanity.sh (devcom3): New test devcom3-10 checks for this.
8550
8551 1998-06-01  Assar Westerlund  <assar@sics.se>
8552         and Ian Lance Taylor  <ian@cygnus.com>
8553
8554         * client.c: If HAVE_GSSAPI_H, include <gssapi.h>.  Only include
8555         <gssapi/gssapi.h> if HAVE_GSSAPI_GSSAPI_H.  Only include
8556         <gssapi/gssapi_generic.h> if HAVE_GSSAPI_GSSAPI_GENERIC_H.
8557         (GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
8558         (connect_to_gserver): Use GSS_C_NT_HOSTBASED_SERVICE instead of
8559         gss_nt_service_name.
8560         * server.c: Same header file changes.
8561         (GSS_C_NT_HOSTBASED_SERVICE): Define if not defined.
8562         (gserver_authenticate_connection): Use GSS_C_NT_HOSTBASED_SERVICE
8563         instead of gss_nt_service_name.
8564
8565 1998-06-01  Jim Meyering  <meyering@ascend.com>
8566
8567         * sanity.sh (tag8k): Add a test for the 1998-05-02 rcs.c bug fix.
8568
8569 1998-05-26  Jim Kingdon  <kingdon@harvey.cyclic.com>
8570
8571         * rcs.c (annotate): Call tag_check_valid like the other functions
8572         which have a -r option.
8573         * sanity.sh (ann): New test ann-14 tests for this.
8574
8575 1998-05-24  Jim Kingdon  <kingdon@harvey.cyclic.com>
8576
8577         * sanity.sh (importc): New tests importc-5 through importc-8 test
8578         for a (fairly obscure) regression from CVS 1.9.
8579
8580 1998-05-23  Jim Kingdon  <kingdon@harvey.cyclic.com>
8581
8582         * sanity.sh (modules2): Add comment listing cvs release tests.
8583         (info): New test info-cleanup-0 tests "cvs -n release".
8584
8585         * rcs.c (rcsbuf_getid): Remove semicolon at end of #undef.  I'm
8586         kind of surprised that compilers accepted this at all, but
8587         removing it squelches a warning for some compilers.
8588
8589         * version.c: Change version number to 1.9.28.1.
8590
8591         * Version 1.9.28.
8592
8593 1998-05-22  Jim Kingdon  <kingdon@harvey.cyclic.com>
8594
8595         * rcs.c (RCS_cmp_file): Check for errors from CVS_FOPEN.  This
8596         restores the CVS 1.9 behavior (fatal error if we can't open the
8597         file), and corrects an apparent oversight in Ian's 13 Apr 1997
8598         change.
8599         * sanity.sh (modes2): New test, tests for this.
8600
8601 1998-05-22  Ian Lance Taylor  <ian@cygnus.com>
8602
8603         * server.c (server_updated): Correct test for whether to unlink
8604         the file.
8605
8606 1998-05-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
8607
8608         * wrapper.c (wrap_add): Disable -t/-f wrappers at least until the
8609         serious bug can be fixed.
8610
8611 1998-05-15  Jim Kingdon  <kingdon@harvey.cyclic.com>
8612
8613         * checkout.c (checkout): Call server_pathname_check on the
8614         argument to "cvs co -d".
8615         * server.c (server_pathname_check): Add comment about how we could
8616         be handling absolute pathnames.
8617         * sanity.sh (abspath): Rewrite the tests which run "cvs co -d /foo"
8618         for remote, to reflect this.
8619
8620         * sanity.sh (abspath): Also do the "cannot rename" work-around for
8621         abspath-7d.
8622
8623 1998-05-13  Jim Kingdon  <kingdon@harvey.cyclic.com>
8624
8625         * commit.c (commit_filesdoneproc): Free admin_dir when done with it.
8626
8627 1998-05-13  Jim Meyering  <meyering@ascend.com>
8628
8629         * sanity.sh (editor): Change bogus sed command, `s/^/x&/g', to `s/^/x/'.
8630         The former exercised a bug in GNU sed-3.01-beta3.
8631         (emptydir-8): Add `Rebuilding administrative file database' message,
8632         since now it does that.
8633         * commit.c (commit_filesdoneproc): Pass only the admin directory
8634         pathname to mkmodules.
8635         Remove #if 0, now that it's fixed.
8636
8637         * status.c (cvsstatus): Rename from `status' to avoid shadowing
8638         lots of locals and parameters by the same name.
8639         * server.c (serve_status): Update caller.
8640         * main.c (cmds[]): Update table entry.
8641         * cvs.h: Update prototype.
8642
8643         * commit.c (commit_filesdoneproc): Remove trailing blanks.
8644         (commit) [CLIENT_SUPPORT]: Remove unnecessary (and local-shadowing)
8645         declaration of `err'.
8646         Rename global `tag' to `saved_tag' to avoid overshadowing `tag'
8647         parameters of three functions.
8648         Rename global `message' to `saved_message' to avoid overshadowing
8649         `message' parameter of a function.
8650         Rename global `ulist' to `saved_ulist' and move dcl up with others.
8651
8652 1998-05-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
8653
8654         * commit.c (commit_filesdoneproc): #if 0 the new code until it can
8655         be fixed.
8656
8657         * commit.c (commit_filesdoneproc): Add comment explaining last
8658         change.
8659
8660 1998-05-12  Jim Meyering  <meyering@ascend.com>
8661
8662         * commit.c (commit_filesdoneproc): Call mkmodules not just when
8663         committing a file directly under CVSROOT, but also when committing
8664         files in subdirectories of CVSROOT.
8665
8666 1998-05-08  Jim Meyering  <meyering@ascend.com>
8667
8668         * filesubr.c (xreadlink):  NUL-terminate the symbolic link name.
8669         Use a much smaller initial buffer length.
8670         Test errno only if readlink fails.
8671         Use xstrdup then free the original link name so we don't waste space.
8672
8673 1998-05-02  Jim Meyering  <meyering@ascend.com>
8674
8675         * rcs.c (rcsbuf_getword): Fix off-by-one error that would result in
8676         an abort (the first one in rcsbuf_getkey) when operating on on some
8677         ,v files with over 8192 bytes of tag and branch info.
8678
8679 1998-05-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
8680
8681         * sanity.sh (ann): New tests ann-12 and ann-13 test for specifying
8682         a numeric branch.
8683
8684 1998-05-02  Jim Kingdon  <kingdon@harvey.cyclic.com>
8685
8686         * rcs.c: Add comments about getting rid of rcsbuf_getid,
8687         rcsbuf_getword, and rcsbuf_getstring.
8688
8689         * sanity.sh (abspath): Revise the workarounds to deal with exit
8690         status.
8691
8692 1998-04-30  Jim Kingdon  <kingdon@harvey.cyclic.com>
8693
8694         * sanity.sh (abspath): Work around the "cannot rename" bug.
8695
8696 1998-04-27  Jim Kingdon  <kingdon@harvey.cyclic.com>
8697
8698         * classify.c (Classify_File): Add comments about checking whether
8699         command name is "update".
8700
8701 1998-04-22  Jim Kingdon  <kingdon@harvey.cyclic.com>
8702
8703         * version.c: Change version number to 1.9.27.1.
8704
8705         * Version 1.9.27.
8706
8707 1998-04-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
8708
8709         (This diff was run by devel-cvs and everyone seemed to like it).
8710         * diff.c (diff_file_nodiff): Make HEAD mean the head of the branch
8711         which contains the sticky tag, not the sticky tag itself.
8712         * rcs.c, rcs.h (RCS_branch_head): New function.
8713         * sanity.sh (head): Update for this changed behavior.
8714
8715 1998-04-19  Jim Kingdon  <kingdon@harvey.cyclic.com>
8716
8717         * sanity.sh: Move emptydir tests from basicb to new test emptydir.
8718         This is because we now need a module definition to create Emptydir;
8719         "co -d" doesn't cut it anymore.
8720
8721 1998-04-17  Petri Virkkula
8722
8723         * server.c (mkdir_p): Ignore EROFS error (like for EACCES).
8724
8725 1998-04-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
8726
8727         * checkout.c (checkout_proc): Don't create directories above the
8728         last one specified in "co -d".
8729         (build_dirs_and_chdir): Revert Noel's change of 17 Feb 1998.
8730         (struct dir_to_build): New field just_chdir.
8731         (build_dirs_and_chdir): Test it.
8732         * sanity.sh (abspath): New tests abspath-7* test for a bug which
8733         we fix, in which CVS would create bogus "D/////" entries in
8734         CVS/Entries.
8735         (abspath): Revise abspath-3* tests to test for the fact that we no
8736         longer create directories above the last one specified in "co -d".
8737         I checked that CVS 1.9 gives an error on this, so changing this
8738         behavior back should be OK.
8739         (cvsadm-2d3): Likewise (also checked CVS 1.9 for this case).
8740         (cvsadm-2d3d): Likewise (also checked CVS 1.9 for this case).
8741         (cvsadm-2d{4,5,6,7,8}, cvsadm-N2d{3,4,5,6,7,8}): Adjust for new
8742         behavior (same case as cvsadm-2d3).
8743         (cvsadm-2d{4,5,6,7,8}d, cvsadm-N2d{3,4,5,6,7,8}d): Remove test
8744         (same case as cvsadm-2d3d).
8745         (cvsadm): For remote, skip most these tests.
8746         (abspath): When cleaning up, delete mod1 and mod2 rather than mod1
8747         twice (longstanding bug, apparently only becomes visible if you
8748         run the tests in a certain order).
8749
8750 1998-04-14  Wilfredo Sanchez  <wsanchez@apple.com>
8751
8752         * rcs.c: variable "lockfile" was being referenced after being
8753         free'd.  Bad.  Moved the free() call down.
8754
8755 1998-04-12  Jim Kingdon  <kingdon@harvey.cyclic.com>
8756
8757         * sanity.sh (rcs): Add test for annotate and the year 2000.
8758
8759         * server.c (do_cvs_command): If there are partial lines left when
8760         the child process is done, send them along.
8761         * sanity.sh (rcs, rcs2): Enable all tests for remote; tests for
8762         this fix.
8763
8764 1998-04-11  Jim Kingdon  <kingdon@harvey.cyclic.com>
8765
8766         * client.c (client_senddate): Pass SDATEFORM not DATEFORM to
8767         sscanf.  This fixes a Y2K bug.
8768
8769         * history.c (history, select_hrec): Change since_date from time_t
8770         to RCS format.  Use the usual machinery (in particular, Make_Date
8771         and client_senddate) so that it will work on VMS too.
8772         * main.c, cvs.h (date_from_time_t): New function.
8773         * sanity.sh (history): New test, to test that this didn't break
8774         anything (also tests client_senddate fix).
8775
8776 1998-04-11  Norbert Kiesel  <nk@iname.com>
8777
8778         * server.c (cvs_output_binary): Shut up "gcc -Wall" by removing
8779         unnecessary else if test.
8780         * server.c (check_password): Fix uninitialized memory read if
8781         shadow passwords are used.  Also added some comments.
8782         * rcs.c (RCS_checkout): Make sure to call chown with -1 for uid or
8783         gid if they should not be changed
8784
8785 1998-04-10  Jim Kingdon  <kingdon@harvey.cyclic.com>
8786
8787         * sanity.sh (rcs2): New test, tests for various Y2K cases.
8788         * rcs.c (getdelta): Value for "state" keyword is optional (bug
8789         discovered incidentally in writing rcs2 test).
8790
8791 1998-04-09  Jim Kingdon  <kingdon@harvey.cyclic.com>
8792
8793         * filesubr.c, cvs.h (link_file): Remove; no longer used.
8794
8795 1998-04-08  Jim Kingdon  <kingdon@harvey.cyclic.com>
8796
8797         * recurse.c (do_dir_proc): Restore update_dir rather than a
8798         computation which appears to, but does not necessarily, restore it
8799         (reported by various people; this fix is from Greg Hudson).
8800         * sanity.sh (importc): New test, tests for this fix.
8801
8802 1998-03-27  Jim Kingdon  <kingdon@harvey.cyclic.com>
8803
8804         * rcs.c (RCS_lock): If the revision is already locked, give an
8805         error rather than dumping core.
8806         * sanity.sh (reserved): New test reserved-13c tests for this.
8807
8808 1998-03-25  Loren J. Rittle
8809
8810         * import.c (add_rev): Rewrite to use RCS_FLAGS_KEEPFILE option
8811         of RCS_checkin() to avoid damage to imported files instead of
8812         externally undoing damage after the fact.  The side effect is
8813         that callers of add_rev() may now incrementally walk the
8814         entries of the current directory without seeing gratuitous
8815         changes to the directory structure (under at least one file
8816         system under at least one OS).
8817
8818 1998-03-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
8819
8820         * error.c (error): Save and restore errno.  Should fix test case
8821         conflicts3-23 on SCO 5.0.2.  Reported by Steve Cameron.
8822
8823         * sanity.sh (admin): Rename admin-26-o* to admin-26-*; the "o"
8824         stands for "cvs admin -o".  Add comment about length of tests.
8825         Use ${PLUS}.
8826
8827 1998-03-05  Dan Wilder <dan@gasboy.com>
8828
8829         * Fix problem with cvs admin in which -ntag:branch
8830         option associated tag with the branch's head revision.
8831         Should have used branch number.  Entailed in this fix,
8832         the following.
8833
8834         * Add new functions "RCS_exist_rev", "RCS_exist_tag",
8835         "RCS_tag2rev", and "RCS_valid_rev" to rcs.c.  RCS_tag2rev
8836         is similar to RCS_gettag, but does less interpretation.
8837
8838         * Plug a small memory leak.
8839
8840         * Add tests admin-26 through admin-29 to sanity.sh,
8841         to test "cvs admin -n".
8842
8843 1998-03-17  Samuel Tardieu  <sam@inf.enst.fr>
8844
8845         * server.c (server_register): protect dereferencing timestamp in
8846         the trace message when it is null, to avoid a segmentation fault.
8847
8848 1998-03-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
8849
8850         * options.h.in (MY_NDBM): Rewrite the comment explaining this
8851         option.  It was not clear to everyone who "my" referred to, for
8852         example.
8853
8854         * hardlink.c (list_linked_files_on_disk): Remove unused variables
8855         err and p.
8856         (list_linked_files_on_disk): Add comment about memory allocation
8857         of return value.
8858         * rcs.c (rcsbuf_getword): Shut up gcc -Wall with a "return 0".
8859         (RCS_checkin): Remove unused variable fullpath.
8860         * sanity.sh (hardlinks): Remove comment about spurious warnings;
8861         the warnings are gone.
8862
8863 1998-03-12  Tim Pierce  <twp@skepsis.com>
8864
8865         New functions for parsing and writing hardlink fields.
8866         * rcs.c [PRESERVE_PERMISSIONS_SUPPORT] (puthardlink_proc): New
8867         function.
8868         (putdelta) [PRESERVE_PERMISSIONS_SUPPORT]: Use it.
8869         (rcsbuf_getid, rcsbuf_getstring, rcsbuf_getword): New functions.
8870         (getdelta): Call them, storing `hardlinks' field in vnode->hardlinks.
8871         (RCS_reparsercsfile): When setting rdata->desc, xstrdup value
8872         rather than rcsbuf_valcopying it (due to changes in how getdelta
8873         handles keys and values in newphrases).
8874
8875         * sanity.sh (hardlinks): Use uglier filenames.  Checking out
8876         hardlinked files no longer produces the same spurious diagnostics,
8877         so fix that test.
8878         (hardlinks-2.3): Renamed from hardlinks-2.2 (duplicate test name).
8879
8880         New infrastructure for managing hardlink lists internally...
8881         * hardlink.c, hardlink.h (list_linked_files_on_disk,
8882         compare_linkage_lists, find_checkedout_proc): New functions.
8883         * rcs.h (struct rcsversnode) [PRESERVE_PERMISSIONS_SUPPORT]: New
8884         member `hardlinks'.
8885         * update.c (special_file_mismatch): Get hardlinks from
8886         vp->hardlinks instead of from vp->other_delta.
8887         * rcs.c (free_rcsvers_contents): Comment about freeing hardlinks
8888         member.
8889         (RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Get hardlinks from
8890         vers->hardlinks list instead of vers->other_delta.
8891
8892         ... and removed obsolete code from earlier revs.
8893         * hardlink.c, hardlink.h (list_files_linked_to,
8894         cache_hardlinks_proc, list_files_proc, set_hardlink_field_proc):
8895         Removed.
8896         * hardlink.h: Removed `links' member from hardlink_info struct.
8897         * commit.c (commit): Remove the call to cache_hardlinks_proc.
8898         (check_fileproc) [PRESERVE_PERMISSIONS_SUPPORT]: Removed reference
8899         to hlinfo->links.
8900         * hardlink.c (update_hardlink_info): Same.
8901         * update.c (get_linkinfo_proc): Same.
8902
8903         * rcs.c (RCS_checkout) [PRESERVE_PERMISSIONS_SUPPORT]: Use
8904         vp->hardlinks and find_checkedout_proc to find recently-updated
8905         files that may be hardlinked.
8906         * update.c (special_file_mismatch): Use List * structures and
8907         compare_linkage_lists for rev1_hardlinks and rev2_hardlinks.
8908
8909 1998-03-16  Larry Jones  <larry.jones@sdrc.com>
8910
8911         * server.c (check_password): If shadow passwords are supported but no
8912         entry is found in the shadow file, check the regular password file.
8913
8914 1998-03-07  Jim Kingdon  <kingdon@harvey.cyclic.com>
8915
8916         * sanity.sh: Rename permissions test to perms since that is what
8917         each of its individual tests are named.
8918         * sanity.sh (perms symlinks hardlinks): Change CVSROOT to
8919         CVSROOT_DIRNAME where appropriate.
8920         (perms symlinks hardlinks): Disable/adjust the meat of the tests for
8921         remote.
8922         (symlinks): Link to ${TESTDIR}/fumble rather than
8923         /fumble/mumble/grumble.  We shouldn't be making assumptions about
8924         what might exist in random directories outside ${TESTDIR}.
8925         * hardlink.c (cache_hardlinks_proc): Add comment about trimming
8926         whitespace.
8927
8928 1998-03-07  Tim Pierce  <twp@skepsis.com>
8929
8930         * rcs.c (RCS_checkout): Negation bug when checking out symlinks:
8931         existence_error should be !existence_error.
8932         * sanity.sh (permissions symlinks hardlinks): New tests, for
8933         PreservePermissions.
8934
8935 1998-03-04  Jim Kingdon  <kingdon@harvey.cyclic.com>
8936
8937         * version.c: Change version number to 1.9.26.1.
8938
8939         * Version 1.9.26.
8940
8941         * entries.c, cvs.h (Entries_Open): New argument update_dir; use it
8942         in error message.
8943         * add.c, checkout.c, client.c, find_names.c, import.c, recurse.c,
8944         update.c: Pass it (as NULL except in call_in_directory).
8945         * entries.c (Subdirs_Known): Just return if there is no CVSADM
8946         directory (as in subdir_record).
8947         * sanity.sh (conflicts3): New tests conflicts3-20a and
8948         conflicts3-23 test for these fixes.
8949
8950         * commit.c (commit): Only set up hardlist if preserve_perms.
8951
8952         * commit.c, import.c, no_diff.c, parseinfo.c, rcs.c, rcscmds.c,
8953         update.c: Omit the preserve_perms code if
8954         PRESERVE_PERMISSIONS_SUPPORT is not defined.  Much of that code
8955         won't even compile on non-unix systems.
8956
8957         * hardlink.c, hardlink.h: Use the 'standard' copyright (as found
8958         in server.c).
8959         * commit.c, rcs.c: Minor whitespace changes to Tim's submission.
8960         * commit.c (check_fileproc), update.c (get_linkinfo_proc): Remove
8961         unused variable delta.
8962         * hardlink.c (set_hardlink_field_proc), update.c
8963         (get_linkinfo_proc): Return a value rather than falling off the
8964         end of the function.
8965
8966 1998-03-02  Tim Pierce  <twp@skepsis.com>
8967
8968         * update.c (special_file_mismatch): Compare the hard links of the
8969         two revisions.
8970
8971         * rcs.c (RCS_checkout):
8972
8973         * hardlink.c, hardlink.h: New files.
8974         (hardlink_info): New struct.
8975         (hardlist, working_dir): New variables.
8976         (list_files_proc, cache_hardlinks_proc, set_hardlink_field_proc,
8977         lookup_file_by_inode, update_hardlink_info, list_files_linked_to):
8978         New functions.
8979
8980         * Makefile.in (SOURCES): Add hardlink.c.
8981         (OBJECTS): Add hardlink.o.
8982         (HEADERS): Add hardlink.h.
8983         * commit.c: Include hardlink.h.
8984         (commit): Save the working directory before recursing.  Walk the
8985         hardlink list, calling set_hardlink_field_proc on each node.
8986         (check_fileproc): Add each file's link information to hardlist.
8987         * rcs.c: Include hardlink.h.
8988         (RCS_checkin): Save list of hardlinks in delta node.
8989         (RCS_checkout): Look up the file's `hardlinks' delta field, and
8990         see if any of the files linked to it have been checked out
8991         already.  Link to one of those files if so.
8992         * update.c: Include hardlink.h.
8993         (get_linkinfo_proc): New function.
8994         (do_update): Extra recursion to collect hardlink info.
8995         (special_file_mismatch): Reparse the RCS file if necessary.
8996
8997         fsortcmp is now used by several files, so let's make it extern.
8998         * hash.c, hash.h (fsortcmp): New function.
8999         * find_names.c (fsortcmp): Removed.
9000         * lock.c (fsortcmp): Removed.
9001
9002 1998-03-03  Jim Kingdon  <kingdon@harvey.cyclic.com>
9003
9004         * sanity.sh (conflicts3): New tests conflicts3-14a,
9005         conflicts3-14b, and conflicts3-21, conflicts3-22 test that we can
9006         skip over a working directory with a CVSADM directory missing.
9007
9008 1998-02-26  Jim Kingdon  <kingdon@harvey.cyclic.com>
9009
9010         * sanity.sh (conflicts3): Tests conflicts3-16 and conflicts3-20
9011         test that we include update_dir in messages.  Rename test
9012         conflicts3-14 to fix typo.
9013
9014 Sun Feb 22 23:14:25 1998  Steve Cameron  <steve.cameron@compaq.com>
9015         and Ian Lance Taylor  <ian@cygnus.com>
9016
9017         * update.c (tag_update_dir): New static variable.
9018         (update_dirent_proc): If no tag or date were specified when
9019         creating a subdirectory, use the tag and/or date of the parent
9020         directory.
9021         (update_dirleave_proc): If we set the tag and/or date in
9022         update_dirent_proc, reset them when we leave the directory.
9023         * sanity.sh (branches2): New set of tests for above patch, and
9024         related behaviour.
9025
9026 Sun Feb 22 13:31:51 1998  Ian Lance Taylor  <ian@cygnus.com>
9027
9028         * commit.c (lock_RCS): Don't call RCS_rewrite.
9029
9030         * update.c (patch_file): If the revision is dead, let
9031         checkout_file handle it.
9032         * sanity.sh (death2): Add test for above patch: add
9033         death2-10a, death2-10b, death2-13a, and adjust
9034         death2-{2,4,5,11,14,diff-11,diff-12,19}.
9035
9036         * cvs.h (RCS_FLAGS_KEEPFILE): Define.
9037         * rcs.c (RCS_checkin): If RCS_FLAGS_KEEPFILE is set in the flags
9038         parameter, don't unlink the working file.
9039         * checkin.c (Checkin): Don't copy the file.  Instead pass
9040         RCS_FLAGS_KEEPFILE to RCS_checkin, and only check the file out
9041         again if it has changed.
9042
9043 1998-02-21  Jim Kingdon  <kingdon@harvey.cyclic.com>
9044
9045         * rcs.c (rcs_internal_unlockfile, RCS_rewrite): Don't assume errno
9046         means anything just because ferror is set.
9047
9048 Sat Feb 21 20:02:24 1998  Ian Lance Taylor  <ian@cygnus.com>
9049
9050         * Makefile.in (clean): Change "/bin/rm" to "rm".
9051
9052         * buffer.c (buf_append_buffer): Correct typo in comment.
9053         * rcs.c (RCS_putadmin): Likewise.
9054
9055 Fri Feb 20 17:53:06 1998  Ian Lance Taylor  <ian@cygnus.com>
9056
9057         * rcs.c (rcs_internal_unlockfile): Pass errno when calling error
9058         because ferror is true.
9059
9060 1998-02-20  Jim Kingdon  <kingdon@harvey.cyclic.com>
9061
9062         * sanity.sh (abspath): Don't assume that we can't write to /; this
9063         is the kind of thing that is sure to break sooner or later
9064         (especially on Windows).
9065
9066         * sanity.sh: Add summary of which modules tests are which (at
9067         "modules").  Move cvsadm, abspath, and toplevel next to modules.
9068         Add comments to clarify the structure (such as it is).
9069
9070 Fri Feb 20 12:47:14 1998  Larry Jones  <larry.jones@sdrc.com>
9071
9072         * admin.c (admin_fileproc): Better fix for -b.
9073
9074         * rcs.c (RCS_whatbranch): Back out previous change.
9075         (RCS_getversion): Ditto.
9076         (RCS_setbranch): Treat an empty revision string like a null pointer.
9077
9078 1998-02-18  Jim Kingdon  <kingdon@harvey.cyclic.com>
9079
9080         * rcs.c (RCS_whatbranch): Fix indentation.
9081
9082         * patch.c (patch_fileproc): Check for errors from fclose; check
9083         for errors from fopen properly.
9084
9085 Wed Feb 18 16:03:37 1998  Larry Jones  <larry.jones@sdrc.com>
9086
9087         * admin.c (admin_fileproc): Convert -b argument from symbolic name
9088         to revision number before storing in the RCS file.
9089         * rcs.c (RCS_whatbranch): Allow numeric as well as symbolic revision.
9090         (RCS_getversion): Take advantage of above.
9091         * sanity.sh (admin): Add/revise/renumber admin-10c, admin-11a,
9092         admin-12, and admin-12a to check above.
9093
9094         * commmit.c (lock_RCS): Minor clean-up.
9095
9096         * sanity.sh (abspath-6a): Don't depend on the sepcific contents of
9097         CVSROOT, it depends on which other tests have been run.
9098
9099 Wed Feb 18 01:56:04 1998  Ian Lance Taylor  <ian@cygnus.com>
9100
9101         * rcs.c (putsymbol_proc): Use putc and fputs rather than fprintf.
9102         (RCS_putadmin): Don't call RCS_symbols if the symbols have not yet
9103         been converted to a list.
9104
9105         * rcs.c (rcsbuf_cache, rcsbuf_cache_open, rcsbuf_cache_close): New
9106         static functions to avoid closing and reopening the RCS file.
9107         (cached_rcs, cached_rcsbuf): New static variables.
9108         (RCS_parse): Call rcsbuf_cache_close.  Don't call fclose.
9109         (RCS_parsercsfile): Likewise.
9110         (RCS_parsercsfile_i): Call rcsbuf_cache rather than
9111         rcsbuf_close.  Call fclose on error.  Remove comment about
9112         inefficiency of opening file twice.
9113         (RCS_reparsercsfile): Call rcsbuf_cache_open rather than fopen and
9114         rcsbuf_open.  Call rcsbuf_cache rather than rcsbuf_close and
9115         fclose.
9116         (RCS_fully_parse, RCS_checkout, RCS_deltas): Likewise.
9117         (RCS_rewrite): Likewise.
9118         (RCS_checkin): Call rcsbuf_cache_close.
9119
9120         * rcs.c (RCS_copydeltas): Fix code which checks for an extra
9121         newline in buffered data.
9122
9123         * rcs.c (rcsbuf_getkey): Save an indirection by using start rather
9124         than *valp when trimming trailing whitespace from value.
9125
9126         * rcs.c (rcsbuf_get_buffered): New static function.
9127         (RCS_copydeltas): After we have done all the required special
9128         actions, and inserted any new revision, just copy the file bytes
9129         directly, rather than interpreting all the data.
9130         (count_delta_actions): New static function.
9131         * sanity.sh (rcs): Add rcs-6a and rcs-6b to commit a new branch
9132         revision, to force CVS to interpret all the data, rather than just
9133         copying it.  Adjust rcs-5 to add a branch tag.  Adjust rcs-8a and
9134         rcs-14 for the changes created by rcs-6b.
9135
9136 Tue Feb 17 18:34:01 1998  Ian Lance Taylor  <ian@cygnus.com>
9137
9138         * sanity.sh (cvsadm, diffmerge2): Remove directories at the end of
9139         the test.
9140
9141         * import.c (expand_at_signs): Rewrite to use memchr and fwrite
9142         rather than putc.
9143
9144         Rewrite RCS file reading routines for speed:
9145         * rcs.c (struct rcsbuffer): Define.
9146         (rcsbuf_open, rcsbuf_close, rcsbuf_getkey, rcsbuf_getrevnum,
9147         rcsbuf_fill, rcsbuf_valcopy, rcsbuf_valpolish,
9148         rcsbuf_valpolish_internal, rcsbuf_ftell): New static functions.
9149         (getrcskey, getrcsrev, getrevnum): Remove.
9150         (many functions): Change to use new rcsbuf functions instead of
9151         old getrcskey/getrcsrev/getrevnum functions.
9152         (RCS_reparsercsfile): Add rcsbufp parameter.  Change all callers.
9153         (RCS_deltas): Add rcsbuf parameter.  Change all callers.
9154         (getdelta): Change fp parameter to rcsbuf parameter.  Change all
9155         callers.
9156         (RCS_getdeltatext): Add rcsbuf parameter.  Change all callers.
9157         (RCS_copydeltas): Add rcsbufin parameter.  Change all callers.
9158         * rcs.h (RCS_reparsercsfile): Update declaration.
9159         * admin.c (admin_fileproc): Update calls to RCS_reparsercsfile for
9160         new parameters.
9161
9162 1998-02-17  Jim Kingdon  <kingdon@harvey.cyclic.com>
9163
9164         * sanity.sh (toplevel): Also clean up second-dir (not a new
9165         bug, but triggered by running tests as "toplevel abspath").
9166
9167         * create_adm.c (Create_Admin): Just print update_dir to tell the
9168         user where we are; not the whole xgetwd.  Cleaner than
9169         Noel's change (which also had problems in errno handling).
9170         * sanity.sh (toplevel-12): Update accordingly.
9171
9172 Tue Feb 17 02:32:21 1998  Noel Cragg  <noel@swish.red-bean.com>
9173
9174         [These mods make "checkout" work with "-d /absolute/pathname"
9175         once again.]
9176
9177         * checkout.c (checkout_proc): the -d flag on the command line
9178         should override the -d flag in the modules file if the latter is
9179         an absolute path.  The loop that assembles the list of directories
9180         to build has been reorganized slightly to prepare for rewriting
9181         with last_component rather than assuming '/' as a path separator.
9182         Also added to that loop was some code to handle absolute
9183         pathnames.
9184         (build_dirs_and_chdir): add a new argument that tells this routine
9185         whether or not to check before it creates and populates
9186         directories or not.
9187
9188         * filesubr.c (last_component): return the top-level directory when
9189         asked about the top-level directory.
9190
9191         * sanity.sh (toplevel-12): change test to reflect the new style of
9192         this error message.
9193
9194         * create_adm.c (Create_Admin): include the directory in the error
9195         message.
9196
9197 1998-02-16  Jim Kingdon  <kingdon@harvey.cyclic.com>
9198
9199         * diff.c (diff_fileproc), import.c (import, add_rcs_file), rcs.c
9200         (RCS_cmp_file): Don't ignore errors from CVS_UNLINK and fclose.
9201
9202         * patch.c (patch_fileproc): Check for errors from fclose; if we
9203         get -1 from getline check for end of file vs. error.
9204
9205         * rcs.c (RCS_checkout): Comment return value (0/1, not -1).
9206         * commit.c, diff.c, mkmodules.c, patch.c, rcs.c, update.c: Update
9207         to match this convention.  Don't suppress errors based on
9208         quiet or really_quiet variables.
9209
9210         Fix a longstanding bug which also makes stamps-8kw in make
9211         remotecheck work again (it stopped working with Ian's 8 Feb 98
9212         checkin):
9213         * client.c, client.h (change_mode): If new argument respect_umask
9214         is set, then honor the umask.
9215         * client.c, server.c: Update callers.
9216
9217         Cleanups to Tim's checkin:
9218         * rcs.c (RCS_checkout): Use existence_error not ENOENT.
9219         * commit.c (checkaddfile): Remove comment about whether we want to
9220         check for errors from fclose; there is no reason not to.
9221         * rcs.c (RCS_checkout), update.c (special_file_mismatch): sscanf
9222         on %ld requires an unsigned long, not a dev_t.
9223         * update.c (special_file_mismatch): Remove unused variable
9224         check_devnums.
9225         * mkmodules.c (config_contents): Between two settings, use a blank
9226         line not a "#" line.
9227
9228 1998-02-15  Tim Pierce  <twp@skepsis.com>
9229
9230         [This is the code as submitted.  I'll be checking in my cleanups
9231         shortly.  This work sponsored by Abbott Labs.  -kingdon]
9232
9233         Support for device special files, symbolic links, user and group
9234         ownerships, and file permissions.
9235
9236         * parseinfo.c: (parse_config): Handle new config variable
9237         `PreservePermissions'.
9238         * mkmodules.c (config_contents): Add new PreservePermissions var.
9239
9240         * rcs.c, rcs.h (preserve_perms): New variable.
9241         (RCS_checkout, RCS_checkin): Support for newphrases `owner',
9242         `group', `permissions', `special', `symlink'.
9243         (RCS_checkout): If `workfile' and `sout' are symlinks, remove them
9244         before attempting to open them for writing.
9245         * import.c (add_rcs_file): Support for newphrases.  Do not attempt
9246         to read data from special files or symlinks.  Error message
9247         `cannot fstat' is now `cannot lstat'.
9248
9249         New metrics for deciding when two files are different:
9250
9251         * update.c, cvs.h (special_file_mismatch): New function.
9252         (merge_file, join_file): Call it.
9253         * no_diff.c (No_Difference): Call it.
9254
9255         * filesubr.c (xcmp): Consider files to be different if they are of
9256         different types; if they are symlinks which link to different
9257         pathnames; or if they are devices with different device numbers.
9258         Error message is now `cannot lstat'.
9259         * rcs.c (RCS_cmp_file): Use `xcmp' to compare files, simplifying
9260         the special handling for nonregular files.
9261
9262         * rcscmds.c (diff_exec, diff_execv): If asked to obtain diffs for
9263         special files, report no differences.
9264
9265         Miscellaneous changes to make special file support possible:
9266
9267         * commit.c (fix_rcs_modes): Don't attempt to `fix' permissions on
9268         a symlink.
9269
9270         * import.c (add_rcs_file): Don't try to close fpuser if it was
9271         never opened (e.g. when operating on a symlink).
9272
9273         * filesubr.c, cvs.h (isdevice, xreadlink): New functions.
9274         * filesubr.c (copy_file): Handle special files and symlinks.
9275         (xchmod): Do nothing if `preserve_perms' is set.
9276
9277         * commit.c (checkaddfile): Replace `copy_file (DEVNULL, ...)' with
9278         fopen/fclose calls.  Copy_file no longer attempts to read data
9279         from device files.
9280
9281         * filesubr.c (islink): Use CVS_LSTAT, not lstat.
9282         * vers_ts.c (time_stamp, time_stamp_server): Use CVS_LSTAT, not stat,
9283         to get symlinks right.
9284         * subr.c (get_file): Same.  Don't attempt to read from special
9285         files or symlinks.
9286
9287         * classify.c (Classify_File): Doc fix.
9288
9289 Fri Feb 13 17:07:32 1998  Eric Mumpower  <nocturne@cygnus.com>
9290         and Ian Lance Taylor  <ian@cygnus.com>
9291
9292         Fix some file system ordering problems found on Irix 6.4:
9293         * sanity.sh (basic2): Use dotest_sort for test 56.
9294         (importb): Use dotest_sort for tests importb-1 and importb-2.
9295         (head): Use dotest_sort for test head-1.
9296
9297 Thu Feb 12 15:15:33 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9298
9299         * import.c (add_rcs_file): If add_logfp is NULL, don't call fperror.
9300
9301 11 Feb 1998  Andy Piper
9302
9303         * server.c (cvs_output_binary): Use OPEN_BINARY not _O_BINARY.
9304
9305 Mon Feb  9 18:34:39 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9306
9307         Tweaks to Ian's checkin:
9308         * update.c (merge_file): Remove comment about sending file to
9309         client before the message.  It doesn't apply to this code any more
9310         (it does apply to checkout_file, but I'm not sure it is important
9311         to have such a comment anyway).
9312         * buffer.c (buf_default_memory_error, buf_length): Reindent.
9313         * server.h: Declare struct buffer before use.
9314
9315 Mon Feb  9 21:05:28 1998  Ian Lance Taylor  <ian@cygnus.com>
9316
9317         * rcs.c (RCS_fully_parse): Call getrevnum rather than getrcsrev.
9318         Don't bother with ungetc.
9319
9320         * rcs.c (getrcsrev): Rewrite to simply call getrevnum.
9321
9322 Sun Feb  8 15:49:39 1998  Ian Lance Taylor  <ian@cygnus.com>
9323
9324         Don't have the server check out a revision into a file and then
9325         immediately read the file; just read into a buffer instead.
9326         * update.c: Include buffer.h.
9327         (update_fileproc): Let checkout_file call server_updated.
9328         (checkout_file): Add merging and update_server parameters.  Change
9329         all callers.  If server_active, don't mess with backup files.  If
9330         server_active, copy the revision into a buffer rather than a file
9331         when possible.  If update_server, call server_updated.  Fix
9332         handling of error status.
9333         (checkout_to_buffer): New static function used by checkout_file.
9334         (merge_file): Let checkout_file call server_updated.
9335         (join_file): Likewise.
9336         * server.c (server_updated): Change file_info parameter to mode
9337         parameter.  Add filebuf parameter.  Change all callers.  If
9338         filebuf is not NULL, don't read the file.
9339         * server.h (server_updated): Update declaration.
9340         * buffer.c (buf_free): New function.
9341         (buf_append_buffer): New function.
9342         (buf_length): New function.
9343         * buffer.h (buf_free, buf_append_buffer, buf_length): Declare.
9344
9345         * buffer.c: (buf_initialize): If the memory parameter is NULL, use
9346         buf_default_memory_error.
9347         (buf_default_memory_error): New static function.
9348         * buffer.h (BUFMEMERRPROC): Define typedef.
9349         * client.c (buf_memory_error): Remove.
9350         (start_server): Pass NULL rather than buf_memory_error as buffer
9351         memory error function.
9352
9353 Sat Feb  7 16:27:30 1998  Ian Lance Taylor  <ian@cygnus.com>
9354
9355         * rcs.c (RCS_parsercsfile_i): Read the expand keyword from the RCS
9356         file.  We do this because Version_TS calls RCS_getexpand in many
9357         common cases, and we don't want to reopen the file just for that.
9358         (RCS_reparsercsfile): Skip the expand keyword.
9359         (RCS_getexpand): Don't call RCS_reparsercsfile.
9360
9361         * rcs.c (STREQ): New macro.  In all string equality tests in the
9362         file, replace strcmp with STREQ.
9363
9364 Fri Feb  6 16:14:49 1998  Ian Lance Taylor  <ian@cygnus.com>
9365
9366         * update.c (checkout_file): If we've already removed the backup
9367         file once, don't try to remove it again.
9368
9369         * filesubr.c (unlink_file_dir): Call stat rather than isdir, and
9370         don't call unlink if the file does not exist.
9371
9372         * myndbm.c (mydbm_load_file): Rename line_len to line_size.  Call
9373         getstr rather than getline, to avoid any confusion between \n and
9374         \012.  Use the line length returned by getstr rather than calling
9375         strlen.  Remove local variable len.
9376
9377 Fri Feb  6 13:23:46 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9378
9379         * rcs.c (RCS_parsercsfile_i): Don't suppress errors on
9380         really_quiet.
9381         (RCS_parsercsfile_i, RCS_reparsercsfile, RCS_fully_parse,
9382         RCS_deltas, getdelta, getrcskey, RCS_getdeltatext):
9383         Check for errors.  Include errno in error messages.  Include
9384         filename in error messages.  Pass new argument to getrcskey.
9385         (getrcskey): New argument NAME, so we can report errors ourself.
9386
9387 Fri Feb  6 12:10:18 1998  Ian Lance Taylor  <ian@cygnus.com>
9388
9389         * rcs.c (RCS_reparsercsfile): Don't use ftell/fseek; just keep
9390         track of whether we've already read a key/value pair.  Use sizeof
9391         rather than strlen for a constant string.  Pass the current key
9392         and value to getdelta, and get them back as well.
9393         (getdelta): Add keyp and valp parameters.  Don't use ftell/fseek;
9394         just return the key/value pair to the caller.  Don't allocate
9395         vnode before we know we need it.  Check one getrcskey return
9396         value.  Use sizeof rather than strlen for a constant string.
9397
9398         * rcs.c (getrcskey): Correct comment describing return value.
9399
9400 Thu Feb  5 22:51:13 1998  Ian Lance Taylor  <ian@cygnus.com>
9401
9402         * subr.c (getcaller): Cache the result, so that we don't keep
9403         searching the password file.
9404
9405 Wed Feb  4 23:31:08 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9406
9407         * rcs.c (max_rev): Don't prototype.  Interesting that noone
9408         complained about this until now.
9409
9410 4 Feb 1998  Jim Kingdon
9411
9412         * rcs.c (RCS_checkin): When adding a new file, read it
9413         with "rb" if binary.
9414
9415 Fri Jan 30 11:32:41 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9416
9417         * sanity.sh: Also test "first-dir" as the regexp in loginfo in
9418         addition to ALL.
9419
9420         * main.c (main): Update year in copyright notice to 1998.
9421
9422 Thu Jan 29 00:01:05 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9423
9424         * version.c: Change version number to 1.9.25.
9425
9426         * Version 1.9.24.
9427
9428         * sanity.sh (multibranch2): File file2 and tests multibranch2-13
9429         through multibranch2-15 test a slightly different case than the
9430         rest of multibranch2.
9431
9432         * mkmodules.c (cvswrappers_contents): Rewrite.  The text didn't
9433         describe -k and had various other problems.
9434
9435 28 Jan 1998  Karl Fogel and Jim Kingdon
9436
9437         New feature to let server tell client about wrappers.
9438         * client.h (struct response): Add comment about args being
9439         '\0' terminated when passed to handle_* functions.
9440         * client.c (start_server): send "wrapper-sendme-rcsOptions" to
9441         server iff supported.
9442         (responses): new response "Wrapper-rcsOption"; allows the server
9443         to send certain lines from its cvswrappers file.
9444         (handle_wrapper_rcs_option): new func, handles "Wrapper-rcsOption"
9445         response from server.
9446         * server.c (serve_wrapper_sendme_rcs_options): new func, sends
9447         server side CVSROOT/cvswrappers rcs option lines to client.
9448         (requests): new request "wrapper-sendme-rcsOptions"; if received,
9449         we know we can send "Wrapper-rcsOption..." to the client.
9450         * wrapper.c (wrap_unparse_rcs_options): new func; repeated calls
9451         step down the wrapper list returning rcs option entries, but
9452         repackaged as cvswrappers lines.
9453         (wrap_setup): new guard variable `wrap_setup_already_done'; if
9454         this function has run already, just return having done nothing.
9455         Add comment concerning environment variable.
9456         * cvs.h: declare wrap_unparse_rcs_options().
9457
9458 Tue Jan 27 18:27:19 1998  Ian Lance Taylor  <ian@cygnus.com>
9459
9460         * rtag.c (rtag_dirproc): Call ignore_directory, and skip the
9461         directory if it returns true.
9462         * sanity.sh (modules4): New set of tests to test some aspects of
9463         excluding directories in the modules file, including the above
9464         patch.
9465
9466 Thu Jan 22 10:05:55 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9467
9468         * server.c (serve_kopt): Check for length of arg.  Based on
9469         inspection of the code, plugs a buffer overrun security hole which
9470         was introduced Monday.
9471
9472         * server.c (serve_is_modified): Don't call xmalloc; we aren't
9473         allowed to call error() here.  Remove duplicate (and potentially
9474         confusing) variable 'p'.
9475
9476         * log.c (log_fileproc): Look for first character of version
9477         '0' AND second character '\0', rather than OR.  I didn't try to
9478         come up with a test case but this looks like a simple thinko
9479         (albeit one which would show up in obscure cases if at all).
9480
9481 Tue Jan 20 19:37:53 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9482
9483         * client.c (send_dirent_proc): Don't send nonexistent directories
9484         unless noexec.
9485         * sanity.sh (modules2): New tests modules2-13 through modules2-18
9486         test for this fix.
9487
9488 Mon Jan 19 11:17:51 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9489
9490         * server.c (serve_kopt): New function.
9491         (requests): Add "Kopt" request.
9492         (kopt): New variable.
9493         (serve_is_modified): Write kopts from there into entries.
9494         (serve_modified): Call serve_is_modified so we do the same.
9495         Declare serve_modified and serve_is_modified.
9496         * vers_ts.c (Version_TS): Set ->options even for a dummy ("D"
9497         timestamp) entry.
9498         * import.c (process_import_file): Check for -k options.
9499         * client.c (client_process_import_file): Send Kopt request.
9500         (send_fileproc): Likewise, for "cvs add".
9501         * sanity.sh: Enable test binwrap3-sub2-add1 for remote.
9502         Add -I .cvswrappers to binwrap3-2a; adjust binwrap3-2d
9503         accordingly.  Tests for this fix.
9504
9505 Mon Jan 19 08:48:59 1998  Larry Jones  <larry.jones@sdrc.com>
9506
9507         * sanity.sh (errmsg1): Append test 168 output to log file.
9508
9509 Sat Jan 17 08:01:51 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9510
9511         * sanity.sh (ann-10, ann-11): Don't make assumptions about the
9512         number of characters in the username.
9513
9514 Fri Jan 16 15:34:02 1998  Larry Jones  <larry.jones@sdrc.com>
9515
9516         * diff.c (diff_fileproc): Free label1 and label2 when finished.
9517
9518         * edit.c (editor_set): Don't free edlist until after we're
9519         done using it.
9520
9521         * rcscmds.c (RCS_merge): Free xrev1 and xrev2 when finished.
9522
9523         * subr.c (make_message_rcslegal): Don't access uninitialized or
9524         unallocated memory; only strip trailing blank lines.
9525         * sanity.sh (log-3): Enhance to test this fix.
9526
9527 Fri Jan 16 12:41:03 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9528
9529         * sanity.sh: Add keywordlog to list of tests run by default.
9530
9531         * rcs.c (RCS_deltas): Don't call cvs_output if length is zero;
9532         passing zero length to cvs_output does not mean output zero
9533         bytes.  The 27 Dec 1997 change to no longer '\0'-terminate the
9534         ->text field turned this from a time bomb to a user-visible bug.
9535         * sanity.sh (ann): New tests, test for this fix and other annotate
9536         behaviors.
9537
9538 Thu Jan 15 23:52:00 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9539
9540         * root.c (root_allow_ok): If inetd.conf didn't specify an
9541         --allow-root options at all, we know we are in trouble.  Give a
9542         specific error message.
9543
9544 Thu Jan 15 21:24:59 1998  Ian Lance Taylor  <ian@cygnus.com>
9545
9546         * sanity.sh (dotest_sort): New variant of dotest which sorts the
9547         output, for use when the output depends upon details of the file
9548         system, typically when doing an import.
9549         (rdiff): Use dotest_sort for rdiff-1.
9550         (ignore): Use dotest_sort for 188a, 188b, 189d, 190, and 191.
9551
9552         * sanity.sh: (TESTSHELL): New variable.
9553         (editor, info, reserved): Use TESTSHELL in temporary script.
9554
9555         * sanity.sh (ignore): Do all tests in subdirectory, to avoid
9556         conflict between cvsroot and CVSROOT on Windows.
9557         (binwrap3, mwrap, info, config): Likewise.
9558
9559         * sanity.sh (binfiles2): Correct test name binfile2-7-brmod to
9560         binfiles2-7-brmod.
9561
9562         * release.c (release_delete): If __CYGWIN32__ is defined, don't
9563         worry about mismatched inodes.  This is a hack, but then I think
9564         the test is rather peculiar anyhow.
9565
9566 Thu Jan 15 16:07:36 1998  Larry Jones  <larry.jones@sdrc.com>
9567
9568         * sanity.sh (reserved-9): Use ${PROG} instead of "cvs".
9569
9570 Wed Jan 14 15:43:13 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9571
9572         * Split ChangeLog into ChangeLog-97 and ChangeLog.
9573         * Makefile.in (DISTFILES): Add ChangeLog-97.
9574
9575 13 Jan 1998  Jim Kingdon
9576
9577         * client.c: Declare handle_mt.
9578
9579 Tue Jan 13 22:21:30 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9580
9581         * sanity.sh: Add comment about how pwd and /bin/pwd often differ
9582         in behavior (but are not guaranteed to).
9583
9584 Tue Jan 13 13:49:53 1998  Ian Lance Taylor  <ian@cygnus.com>
9585
9586         * sanity.sh: When setting TMPPWD use just pwd, not /bin/pwd.
9587
9588         * update.c (checkout_file): Don't pass set_time as true to
9589         Version_TS if the file is dead.
9590         * sanity.sh (modules): Add tests modules-155c6 through
9591         modules-155c8 to test for above patch (without the above patch,
9592         modules-155c8 will fail when remote).
9593
9594 Tue Jan 13 10:37:02 1998  Larry Jones  <larry.jones@sdrc.com>
9595
9596         * client.c (send_modified): Change bufsize and newsize from int
9597         to size_t to avoid type clashes in call to read_and_gzip.
9598
9599 Tue Jan 13 10:33:02 1998  Larry Jones  <larry.jones@sdrc.com>
9600
9601         * zlib.c (read_and_gzip): Set finish to 0; it was uninitialized.
9602
9603 Tue Jan 13 10:26:43 1998  Larry Jones  <larry.jones@sdrc.com>
9604
9605         * add.c, rcs.c: Plug memory leaks.
9606
9607 Mon Jan 12 10:45:27 1998  Larry Jones  <larry.jones@sdrc.com>
9608
9609         * server.c (mkdir_p): Don't try to create nameless directories
9610         (i.e., given "/foo//bar", don't try to create "/foo/",
9611         just "/foo" and "/foo//bar") since it isn't necessary and
9612         it fails on some systems in unexpected ways.
9613
9614 1998-01-11  enami tsugutomo  <enami@but-b.or.jp>
9615
9616         * rcs.c (linevector_copy): Delete lines before overwriting them.
9617
9618 Sat Jan 10 11:05:40 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9619
9620         * cvsrc.c, entries.c, login.c, logmsg.c, myndbm.c, patch.c,
9621         release.c, server.c: Check for errors from getline, CVS_FOPEN,
9622         fprintf, CVS_UNLINK and fclose.  Note that the new errors are
9623         nonfatal.  This is because of conservatism more than because
9624         it is always the best thing.
9625         * login.c (get_cvs_password): Close the file when done with it.
9626         * client.c (notified_a_file): If -1 return from getline, check
9627         feof rather than assuming errno is set.
9628
9629 Fri Jan  9 14:38:54 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9630
9631         * server.c (expand_proc): Also output server_dir in
9632         "Module-expansion", not just in output_dir ("Created", &c).
9633         * sanity.sh (modules2): New tests modules2-9 through modules2-12
9634         test for this.
9635
9636 Thu Jan  8 12:56:55 1998  Yasutoshi Hiroe  <hiroe@rgk.ricoh.co.jp>
9637
9638         * import.c (import): Don't strcat on uninitialized memory.  Fixes
9639         possible SIGSEGV with zero-length message.
9640
9641 Tue Jan  6 22:56:29 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9642
9643         * sanity.sh (crerepos): Fix mistaken variable name which caused us
9644         not to clean up at the end of the test.
9645
9646 Mon Dec 22 01:40:57 1997  Jim Kingdon  <kingdon@harvey.cyclic.com>
9647
9648         * add.c (add): Also look for .cvswrappers files.
9649         * sanity.sh (binwrap3): New tests binwrap3-2*, binwrap3-sub2-add*
9650         test for this.
9651
9652 Tue Jan  6 11:50:38 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9653
9654         * sanity.sh (crerepos): New tests crerepos-8 through crerepos-18
9655         test behaviors when mixing repositories.
9656
9657 Sun Jan  4 17:40:22 1998  Jim Kingdon  <kingdon@harvey.cyclic.com>
9658
9659         * version.c: Change version number to 1.9.23.
9660
9661         * Version 1.9.22.
9662
9663
9664 For older changes see ChangeLog-97.