12019-05-06  James Youngman  <jay@gnu.org>
2
3	Fix more compiler warnings.
4	* src/what.cc: Forward-declare usage().
5	* src/sccsfile.h: Declare print_flag2() functions.
6	* src/get.cc (main): Format the (unsigned in) line count with %u
7	instead of %d.
8	* src/environment.cc (max_sfile_line_len): Simplify a complex
9	boolean expression to silence a compiler warning suggesting
10	parentheses.
11	* src/writesubst.cc (write_subst): Print the output line number
12	with %u since it is an unsigned int.
13	* src/sf-write.cc (write_delta): Remove unsed variables "len" and
14	"i".
15	(write): Likewise, also "s".
16
17	Fix some compiler warnings. Also turn off warning options which
18	themselves just generate warnings.
19	* src/run.cc (run): Avoid mixing signed/unsigned quantities.
20	* src/sf-get2.cc (get): Avoid variable 'd' shadowing a variable of
21	the same name in an outer scope.
22	* src/sccsfile.h: Declare print_flag().
23	* src/cap.cc (cap_min): Simplify this function; we only use it for
24	trivially copyable types anyway.
25	* configure.ac: Disable some warnings known to the manywarnings
26	module (thus enabled with --enable-warnings) but which aren't
27	suitable for C++ compilation.  We disable them so that we don't
28	get a warning message from GCC about the inappropriate warning
29	option.
30
31	Use block I/O for encoded streams.
32	* src/encoding.cc (encode_line): return the number of bytes
33	output.
34	(encode_stream): Use the count returned by encode_line to perform
35	block I/O (with fwrite) instead of string I/O (with fprintf).
36
37	Move the implementation details of uuencoding/decoding into a
38	separate namespace.
39	* src/encoding.cc (encode): Put into an encoding_impl namespace to
40	emphasize that it is not intended as a public API for the rest of
41	the program to use.  It's not in an unnamed namespace since the
42	unit test still needs to use it.
43	* src/bodyio.h (encoding_impl): Put declarations of encode and
44	decode into this namespace.
45	* unit-tests/test_encoding.cc: Use the namespace-qualified names
46	for encode and decode.
47
48	Delete mylist.h.
49	* src/mylist.h: Delete mylist.h
50	* src/Makefile.am (noinst_HEADERS): Delete mylist.h
51	* src/sccsfile.cc: Don't include mylist.h.
52	* src/l-split.cc: Don't include mylist.h.
53	(split_comments): use std::vector<T> instead of mylist<T>.
54	* unit-tests/test_bigfile.cc: use std::vector<T> instead of
55	mylist<T>. Don't include mylist.h.
56	* unit-tests/test_delta.cc: Likewise.
57	* unit-tests/test_mylist.cc: Delete.
58	* unit-tests/Makefile.am (unit_tests): Remove test_mylist.
59
60	Switch class sccs_file from mylist<T> to vector<T>.
61	* src/sccsfile.h: use std::vector<T> instead of mylist<T>.
62	* src/sf-val.cc: Likewise.
63	* src/cdc.cc (main): Likewise.
64	* src/sf-prt.cc: Likewise.
65	* src/admin.cc (main): Likewise.
66	* src/sf-cdc.cc: Likewise.
67	* src/sf-admin.cc: Likewise.
68	* src/sf-write.cc: Likewise.
69	* src/get.cc (print_id_list): Likewise.
70	* src/sf-get.cc (prepare_seqstate_1): Likewise.
71	* src/sf-prs.cc (print_seq_list): Likewise.
72	* src/sf-rmdel.cc (is_seqlist_member): Likewise.
73
74	Switch test_delta-table.cc from mylist to vector.
75	* unit-tests/test_delta-table.cc: Switch data structures from
76	mylist<T> to std:vector<T> (for which mylist is an alias anyway).
77
782019-05-05  James Youngman  <jay@gnu.org>
79
80	Switch class release_list from using mylist<T> to vector<T>.
81	* src/rel_list.h: Switch data structures from mylist<T> to
82	std:vector<T> (for which mylist is an alias anyway).
83	* src/rl-merge.cc (remove): Likewise.
84
85	Switch class sccs_file_iterator from using mylist<T> to
86	vector<T>.
87	* src/fileiter.h: Switch data structures from mylist<T> to
88	std:vector<T> (for which mylist is an alias anyway).
89
90	Switch class delta from using mylist<T> to vector<T>.
91	* src/delta.h: Switch data structures from mylist<T> to
92	std:vector<T> (for which mylist is an alias anyway).
93	* src/delta.cc (delta_main): Likewise.
94	* src/sf-delta.cc (add_delta): Likewise.
95
962019-05-05  Martin Wilck  <mwilck@suse.com>  (tiny change)
97
98	sccs: comply with POSIX POS36-C rule.
99	POS36-C compliance requires that setgid() is called before
100	setuid(), and both called after relinquishing extra groups with
101	setgroups(). See
102	https://wiki.sei.cmu.edu/confluence/display/c/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges
103	* configure.ac: check for setgroups()
104	* src/sccs.c (drop_privs): correct call order: setgroups, setgid,
105	setuid.
106
1072019-05-05  James Youngman  <jay@gnu.org>
108
109	Suggest setting CSSC_DISABLE_VALGRIND=1 if system binaries cause
110	tests to fail.
111	* README (--disable-valgrind): point out that occasionally, a
112	system binary will cause Valgrind checking to make tests
113	fail. Explain how to work around this problem.
114
115	Include config.h before other files.
116	* build-aux/find-out-of-order-includes.sh: Script for identifying
117	source files which include other headers before "config.h", which
118	gnulib doesn't like.
119	* src/version.cc: Include "config.h" before <stdio.h> to avoid
120	complaints from gnulib.
121
1222016-03-01  James Youngman  <jay@gnu.org>
123
124	Don't distrubite unit-tests/googletest/Makefile.in.
125	* unit-tests/Makefile.am (EXTRA_DIST): Don't include
126	googletest/Makefile.in, since we don't create that file, as
127	googletest is not in SUBDIRS.
128
1292016-02-28  James Youngman  <jay@gnu.org>
130
131	Add tests covering p-file validity checks in sact.
132	* src/pfile.cc (sccs_pfile): Validate the delta SID (instead of
133	only the gotten SID).  When rejecting an invalid date, say
134	"date/time", since it may in fact be the time field which is
135	incorrect.
136	* tests/common/test-common: New options to docommand,
137	--stderr_regex and stdout_regex, allowing regex (egrep) matching
138	of tool output.  Each has a --no* counterpart which turns the
139	option off again (this is useful for deteating the defaults
140	provided by functions which wrap docommand).
141	* tests/sact/pfile_corruption.sh: New test, covering the p-file
142	validity checks in sact.
143
1442016-02-24  James Youngman  <jay@gnu.org>
145
146	Don't use unique_ptr on the result of strdup, and other cleanup.
147	* src/sccsdate.cc (y2k_window): move all year windowing
148	calculations into this new function.
149	(is_leapyear): fix typo in comment.
150	(get_two_digits): Add specialization which takes a constr
151	string&.
152	(sccs_date::sccs_date): Use y2k_window.  Also, instead of using
153	unique_ptr on a pointer returned by strdup, just use a std::string
154	instance.
155	* src/sccsdate.h (class sccs_date): Remove the daysecond field.
156
157	Fix a number of problems identified by "make syntax-check".
158	* src/get.cc: Remove trailing blanks.
159	* src/Makefile.am: Likewise.
160	* src/l-split.cc: Likewise.
161	* src/get.cc: Likewise.
162	* src/prs.cc: Likewise.
163	* src/run.cc: Likewise.
164	* src/sccsfile.cc: Likewise.
165	* src/sccsfile.h: Likewise.
166	* Makefile.am (distcheck-hook): Remove trailing blank.
167	* src/sccs.c (gstrncat): Avoid spurious warning about reference to
168	strncpy() in a comment.
169	* tests/val/historical.sh: Remove empty lines at EOF.
170	* unit-tests/test_linebuf.cc: Likewise.
171	* build-aux/check-googletest-files.sh: Remove empty lines at EOF.
172	(deleteprefix): Remove trailing blanks.
173	* NEWS: Change "the the" to "the" in item for CSSC-1.3.2.  Remove
174	trailing blanks.
175	* src/sccsdate.cc (sccs_date::sccs_date): Avoid the use of strncpy.
176	* docs/cssc.texi (Admin Options): Don't say "see also @xref".
177	(Executable File Support): Remove trailing blanks.
178	* src/sf-prs.cc (prs): Don't use the space-tab combination.
179	* src/file.cc (get_mode_bits): Remove trailing blanks.
180	(is_writable): Likewise.
181
182	Make mylist a simple synonym for std::vector.
183	* src/mylist.h: Make mylist a simple synonym for std::vector.
184
185	Don't require mylist<T>::operator[] to assert on index errors.
186	* unit-tests/test_mylist.cc: Remove tests which verify that
187	mylist<T>::operator[] assert-fails when an index is out of range
188	(since std::vector does not do this).
189
190	Stop depending on mylist not actually being a synonym for std::vector.
191	* src/sf-prs.cc (print_string_list): Remove the two versions of
192	this function for std::vector<string> and mylist<string>.
193	Instead, implement a single template function which takes a range
194	of iterators.  This allows us not to care wither mylist is simply
195	compatible with std::vector, or actually is std::vector.
196	(print_delta): Update callers of print_string_list.
197
198	Include <algorithm> where it is needed, and not where it is not.
199	* src/sf-rmdel.cc: include the <algorithm> header since we use
200	std::find.
201	* src/mylist.h: Don't include <algorithm>, the transitive
202	inclusion of which sf-rmsel.cc was previously takign advantage
203	of.
204
205	Replace constructor from const set& with a range of iterators.
206	* src/mylist.h (mylist::mylist): Add constructor from a range of
207	input iterators, allowing initialization from any container.
208	Remove the special-purpose constructor from const set&.  This
209	change provides closer compatibility with std::vector<T>,
210	* src/delta.h (delta::delat): Initialize included_ and excluded
211	using the iterator range instead of plain const set&.
212
2132016-02-23  James Youngman  <jay@gnu.org>
214
215	Remove mylist<T>::operator+=(), implementing insert() instead.
216	* src/mylist.h (mylist::insert): add insert() method, forwarding
217	to std::vector<T>::insert(), as a replacement for
218	mylist::operator+=() (and that method is removed).
219	(mylist::cbegin): add, forwarding to items_.cbegin().
220	(mylist::cend): add, forwarding to items_.cend().
221	* src/delta.h (delta::prepend_comments): Implement.
222	* src/sf-cdc.cc (sccs_file::cdc): Call mylist::insert() instead of
223	the removed mylist<T>::operator+=().  Also use
224	delta::prepend_comments() to prepend comments instead of copying
225	the old comments, modifying the list and callign set_comments().
226	* unit-tests/test_mylist.cc (MylistTest::Catenate::TestBody): use
227	the new insert method to perform the concatenation, instead of the
228	removed method operator+=.
229
2302016-02-21  James Youngman  <jay@gnu.org>
231
232	Avoid unnecessary for loop in mylist::operator+=(const mylist&).
233	* src/mylist.h (mylist): Implement operator+= with a range insert
234	on the underlying vector.
235
236	Remove mylist<T>::operator-=(const mylist<T>&).
237	* src/mylist.h (mylist): remove mylist<T>::operator-=(const
238	mylist<T>&).
239
240	* unit-tests/test_mylist.cc: Remove tests of
241	mylist<T>::operator-=(const mylist<T>&).
242	* src/sccsfile.h (sccs_file::admin): change the type of
243	erase_users from mylist<string> to
244	std::unordered_set<std::string>.  This allows the implementation
245	to be more efficient without affecting the ordering of the
246	resulting user list.
247	* src/admin.cc (main): Update the type of erase_users
248	accordingly.
249	* src/sf-admin.cc (admin): take advantage of the efficiency of
250	std::unordered_set<T>::find() when computing the updated
251	authorized user list.  Hence we no longer need to call
252	mylist<T>::operator-=(const mylist<T>&).
253
254	Delete mylist<T>::add(), preferring push_back() instead.
255	* src/mylist.h (mylist): Delete mylist<T>::add() since we prefer
256	push_back().
257	* unit-tests/test_mylist.cc: Don't use or test .add(), but use or
258	test .push_back() there was previously .add().
259	* unit-tests/test_delta.cc: Don't use mylist<T>::add(), use
260	mylist<T>::push_back() instead.
261	* src/rl-merge.cc (merge): Use mylist<T>::push_back() instead of
262	mylist<T>::add().
263	* src/delta.h (delta::add_include): Likewise.
264	(delta::add_exclude): Likewise.
265	(delta::add_ignore): Likewise.
266	(delta::add_comment): Likewise.
267	* src/l-split.cc (split_comments): Likewise.
268	* src/rel_list.cc (release_list): Likewise.
269	* src/fileiter.cc (sccs_file_iterator): Likewise.
270	* src/sccsfile.cc (sccs_file::sccs_file): Likewise.
271	* src/sf-get2.cc (sccs_file::get): Likewise.
272	* src/sf-delta.cc (sccs_file::add_delta): Likewise.
273	* src/sf-admin.cc (sccs_file::admin): Likewise.
274	(sccs_file::create): Likewise.
275	* src/sf-cdc.cc (process_mrs): Likewise.
276	(sccs_file::cdc): Likewise.
277	* src/admin.cc (main): Likewise.
278
279	Remove mylist<T>::select(size_type).
280	* src/mylist.h (mylist): remove mylist<T>::select().
281	* unit-tests/test_mylist.cc: remove tests for mylist<T>::select().
282
283	Remove mylist<T>::operator=(void*).
284	* src/mylist.h (mylist): remove mylist<T>::operator=(void*).  The
285	effect of this method was to clear the list, so add a clear()
286	method instead, for closer matching to std::vector.n
287	* unit-tests/test_mylist.cc: remove tests for
288	mylist<T>::operator=(void*).
289
290	* src/sf-admin.cc (sccs_file::admin): use clear() to clear an
291	instance of mylist<T>, not assignment to NULL.
292
293	Remove mylist<T>::length().
294	* src/mylist.h (mylist::length): delete this method (size() should
295	be used instead).
296
297	Avoid using mylist<T>::length().
298	* src/sf-get2.cc (get): Use a range-based for loop instead of
299	indexing up to mylist<T>::length().
300	* src/sf-cdc.cc (cdc): Use mylist<T>::empty() rather than
301	comparing the result of length() against 0.
302	* src/sf-get3.cc (authorised): Use a range-based for loop instead
303	of indexing up to mylist<T>::length().
304	* src/sf-prs.cc (print_seq_list): Prefer mylist::size() to
305	mylist::length().
306	(print_delta): Use mylist<T>::empty() rather than comparing the
307	result of length() against 0.
308	* src/fileiter.cc (next): Prefer mylist::size() to
309	mylist::length().
310	* src/sf-admin.cc (sccs_file): Likewise.
311	* src/sf-val.cc (validate_seq_lists): Likewise, factoring repeated
312	code out into a new function, validate_seq_numbers.
313	* src/sf-rmdel.cc (is_seqlist_member): use std::find instead of
314	iterating over list members ourselves.
315	* src/sf-prt.cc (print_seq_list): use a range-based for loop
316	rather than iterating over the indexes in a mylist<seq_no>.
317	(sccs_file): Instead of checking mylist<T>::length() against 0,
318	use the empty() method.
319
3202016-02-20  James Youngman  <jay@gnu.org>
321
322	Prefer mylist::size() to mylist::length().
323	* unit-tests/test_delta.cc: Don't use mylist::length().
324	* unit-tests/test_bigfile.cc (emit_comments_or_mrs): Don't use
325	mylist::length().
326
327	Prefer mylist::size() to mylist::length().
328	* unit-tests/test_mylist.cc: Use the size() method instead of the
329	length() method, for better compatibility with (and so simpler
330	transition to) std::vector.
331
332	Avoid bash-specific [[...]].
333	* build-aux/check-googletest-files.sh (findproblems): Avoid
334	[[...]] since that is a Bash feature, and this is a /bin/sh
335	script.
336
337	Add a menu for "admin", correcting a Texinfo build failure.
338	* docs/cssc.texi: Updated copyright years.
339	(admin): Added a menu for the sections relating to "admin".
340
3412016-02-09  James Youngman  <jay@gnu.org>
342
343	* src/sf-prs.cc (print_seq_list): Use a range-based for loop for
344	iterating over sequence numbers.
345	* src/sf-val.cc (validate_seq_lists): Factor out the repeated
346	logic into a local function, validate_seq_numbers.
347	* src/sf-get2.cc (get): Use a range-based for loop for iterating
348	over the comments.
349
3502016-02-08  James Youngman  <jay@gnu.org>
351
352	Don't gratuitously count elements of mylist<T>.
353	* src/sf-admin.cc (create): Prefer !mylist<T>::empty() over
354	mylist<T>::length() != 0.
355
356	Use range-based for in get.cc.
357	* src/get.cc (print_id_list): Use a range-based for loop to print
358	a sid list.
359
360	Use range-based for loops in the release_list implementation.
361	* src/rel_list.cc (member): Search with std::find, rather
362	than coding it manually.
363	(print): Use a range-based for loop.
364
365	Use mylist<T>::size() in preference to .length().
366	* src/sf-get.cc (prepare_seqstate_1): Use the size() method of
367	mylist, instead of length(), for better std::vector
368	compatibility.
369
370	Use range-based for loops in print_seqs and sccs_file::write.
371	* src/sf-write.cc (print_seqs): Iterate over sequence numbers with
372	a range-based for loop.
373	(sccs_file::write): Iterate over users with a range-based for loop.
374	(sccs_file::write): Iterate over comments with a range-based for
375	loop.
376
377	Support and used range-based for for release_list instances.
378	* src/rl-merge.cc (merge): Use a range-based for loop to iterate
379	over release_list instances.
380	(remove): Likewise.
381	* src/rel_list.h (release_list): Implement begin() and end() and
382	empty().
383
384	Use a range-based for loop for iterating over deltas.
385	* src/sf-get.cc (prepare_seqstate_1): Use a range-based for loop
386	for iterating over included/excluded/ignored deltas.
387
388	sccs_delta: Use empty() to find out if a mylist is empty.
389	* src/delta.h: use mylist<T>.empty() instead of .length() == 0.
390
391	Implement mylist<T>::push_back.
392	* src/mylist.h (mylist): Implement a push_back method and add TODO
393	comments for methods which aren't shared by std::vector.
394
395	State that a C++11 compiler is needed.
396	* README: Mention the need for a C++11 capable compiler.
397	* NEWS: Likewise.
398
399	Store MRs as std::vector<std::string> (not mylist<std::string>).
400	* unit-tests/test_bigfile.cc: (emit_comments_or_mrs): Convert to a
401	template so that we can use it to print a std::vector<std::string>
402	or a mylist<std::string>.
403	(emit_delta): Pass MRs as a vector not a mylist.
404	(make_delta): Likewise.
405	* unit-tests/test_delta-table.cc: Update to take account of the
406	change in representation of MR lists from mylist<std::string> to
407	std::vector<std::string>.
408	* unit-tests/test_delta.cc: Likewise.
409	* src/sf-write.cc (write_delta): Change the way we loop over the
410	MRs and the comments to use a range-based for loop (hence
411	accomodating the change in type of the MR list.
412	* src/sf-prt.cc (print_string_list): Convert this function to a
413	template so that it can be used to print a
414	std::vector<std::string> or a mylist<std::string>.
415	* src/sf-prs.cc (print_string_list): Add an override of
416	print_string_list for printing an instance of const
417	std::vector<std::string>&.
418	* src/sf-delta.cc (sccs_file::add_delta): Update the type of the
419	mrs parameter to std::vector<std::string>.
420	* src/sf-cdc.cc (process_mrs): Update the parameter list to use
421	std::vector<std::string> instead of mylist<std::string>.  Change
422	the type of the to_delete parameter to const
423	std::unordered_set<std::string>& for greater efficiency.
424	* src/sf-admin.cc (sccs_file::create): Update type of mrs
425	parameter.
426	* src/sccsfile.h (sccs_file::check_mrs): Update the type of the
427	mrs parameter to std::vector<std::string>&.
428	(sccs_file::admin): update type of the mrs parameter.
429	(sccs_file::create): Likewise.
430	(::split_mrs): Likewise.
431	* src/sf-chkmr.h (check_mrs): Update the type of the mrs
432	parameter.
433	* src/run.cc (run): Update to take a vector<const char*> instead
434	of a mylist<const char*>.
435	(run_mr_checker): Change the type of the mrs parameter from
436	mylist<std::string> to std::vector<std::string>.
437	* src/run.h: Update declarations accordingly.
438	* src/mylist.h (mylist): Add method size() and empty() for
439	consistency with std::vector<T> so that we can define template
440	functions which will act on a mylist or a std::vector.
441	* src/l-split.cc (split_mrs): represent MRs as
442	std::vector<std::string>.
443	* src/delta.h (class delta): Change type of mrs_ member from
444	mylist<std::string> to std::vector<std::string>.
445	(delta::delta): change constructor parameters similarly.
446	(delta::mrs()): now returns std::vector<std::string>.
447	* src/admin.cc (main): Change type of mr_list from
448	mylist<std::string> to std::vector<std::string>.
449	* src/cdc.cc (main): Likewise.
450	* src/delta.cc (delta_main): Likewise.
451	(main): Simplify.
452
4532016-02-07  James Youngman  <jay@gnu.org>
454
455	Use std::string rather than mystring.
456	We also use range-based for loops to iterate over instances of
457	mylist<std::string>.
458	* src/mystring.h: Delete this file.
459	* src/Makefile.am (noinst_HEADERS): Remove mystring.h.
460	* src/admin.cc (main): Update to use string rather than mystring.
461	* src/cdc.cc: Likewise.
462	* src/canonify.cc (get_current_directory): Update to return string
463	* src/cssc.h: Likewise.
464	* src/delta.cc: Likewise.
465	* src/delta.h: Likewise.
466	* src/file.cc: Likewise.
467	* src/file.h: Likewise.
468	* src/file.h: Update function parameters and return types to be string rather than mystring.
469	* src/filediff.cc: Likewise.
470	* src/filediff.h: Likewise.
471	* src/fileiter.cc: Likewise.
472	* src/fileiter.h: Likewise.
473	* src/filelock.h: Likewise.
474	* src/fnsplit.cc: Likewise.
475	* src/get.cc: Likewise.
476	* src/l-split.cc: Likewise.
477	* src/pfile.h: Likewise.
478	* src/pf-del.cc: Likewise.
479	* src/prompt.cc: Likewise.
480	* src/prs.cc: Likewise.
481	* src/run.cc: Likewise.
482	* src/run.h: Likewise.
483	* src/sccsdate.h (sccs_date::as_string()): Likewise.
484	* src/sccsfile.cc: Likewise.
485	* src/sccsfile.h: Likewise.
486	* src/sccsname.cc: Likewise.
487	* src/sccsname.h (sccs_name): Likewise (and attributes).
488	* src/sf-admin.h: Likewise.
489	* src/sf-cdc.cc: Likewise.
490	* src/sf-chkmr.h (check_mrs): Likewise.
491	* src/sf-delta.cc: Likewise.
492	* src/sf-get.cc (get): Likewise.
493	* src/sf-get2.cc: Likewise.
494	* src/sf-get3.cc (authorised): Use string instead of mystring.
495	* src/sf-prs.cc: Likewise.
496	* src/sf-prt.cc: Likewise.
497	* src/sf-val.cc: Likewise.
498	* src/sf-write.cc: Likewise.
499	* src/sid.h (class sid): the as_string method now returns a string instead of a mystring.
500	* src/sid.cc: Use string instead of mystring.
501	* src/unget.cc: Likewise.
502	* src/writesubst.cc: Likewise.
503	* unit-tests/test_delta-table.cc: Likewise.
504	* unit-tests/test_delta.cc: Likewise.
505	* unit-tests/test_bigfile.cc: Use std::string instead of
506	mystring.
507	* src/mylist.h (mylist): Provide begin() and end() methods.
508
509	Delete myset.h, and switch to using std::set instead.  Use C++11.
510	* src/sccsfile.h (substitued_flag_letters): change from
511	myset<char> to std::set<char>.
512	* src/sccsfile.cc (set_expanded_keyword_flag): update
513	implementation now that substitued_flag_letters is std::set<char>.
514	(print_subsituted_flags_list): Likewise.
515	* src/sf-write.cc (write): Likewise.
516	* src/writesubst.cc (expand_keyletter): Likewise.
517	* src/sf-admin.cc (admin): Likewise.
518	* src/sf-prt.cc (prt): Likewise.
519	* src/sf-val.cc (validate): Likewise, using a range-based for
520	loop.
521	* bootstrap.conf (gnulib_modules): Add std-gnu11 (to compile
522	C++11).
523	* src/mylist.h (mylist): Add constructor from const std::set<TYPE>&.
524	* unit-tests/Makefile.am (unit_tests): Remove test_myset.
525	(test_myset_SOURCES): Remove.
526	* src/Makefile.am (noinst_HEADERS): Remove myset.h.
527	* myset.h: delete this file.
528	* unit-tests/test_myselt.cc: delete this file.
529	* src/delta.h (delta): included and excluded deltas are now
530	std::set<seq_no> rather than myset<seq_no>.
531	* unit-tests/test_delta.cc (DeltaTest::Constructor): Update the
532	call to the constructor of delta, to pass in std::set<seqno> for
533	the included and excluded deltas.
534	* src/sf-delta.cc (add_delta): Switch from using myset<seq_no> to
535	using std::set<seq_no> for the included and excluded deltas.
536
537	Remove obsolete code from mylist.h.
538	* src/mylist.h (mylist): Remove the obsolete implementation of
539	mylist (which was disabled via the preprocessor anyway).
540
541	Mention that gnulib has been updated.
542	* NEWS: mention this.
543
5442014-09-08  James Youngman  <jay@gnu.org>
545
546	Always include config.h first; eliminate some compiler warnings.
547	* auxfiles/firstinclude.sed: New.  Script which determines what
548	the first file #included in a C/C++ source file is.
549	* auxfiles/Makefile.am (EXTRA_DIST): Distribute firstinclude.sed.
550	* src/Makefile.am (check-include-order): Check that each source
551	file includes <config.h> before any other include file.
552	* src/admin.cc: Inlude <config.h> first.  Include system headers
553	before our own headers.
554	* src/bodyio.cc: Likewise.
555	* src/cap.cc: Likewise.
556	* src/cdc.cc: Likewise.
557	* src/delta-iterator.cc: Likewise.
558	* src/delta-table.cc: Likewise.
559	* src/delta.cc: Likewise.
560	* src/dtbl-prepend.cc: Likewise.
561	* src/encoding.cc: Likewise.
562	* src/environment.cc: Likewise.
563	* src/fatalsig.cc: Likewise.
564	* src/fdclosed.cc: Likewise.
565	* src/fnsplit.cc: Likewise.
566	* src/l-split.cc: Likewise.
567	* src/linebuf.cc: Likewise.
568	* src/get.cc: Likewise.
569	* src/pf-add.cc: Likewise.
570	* src/pfile.cc: Likewise.
571	* src/prompt.cc: Likewise.
572	* src/prs.cc: Likewise.
573	* src/prt.cc: Likewise.
574	* src/quit.cc: Likewise.
575	* src/rel_list.cc: Likewise.
576	* src/rmdel.cc: Likewise.
577	* src/run.cc: Likewise.
578	* src/sact.cc: Likewise.
579	* src/sccs-delta.cc: Likewise.
580	* src/rl-merge.cc: Likewise.
581	* src/sccsdate.cc: Likewise.
582	* src/sccsfile.cc: Likewise.
583	* src/sccsname.cc: Likewise.
584	* src/seqstate.cc: Likewise.
585	* src/sf-add.cc: Likewise.
586	* src/sf-admin.cc: Likewise.
587	* src/sf-cdc.cc: Likewise.
588	* src/sf-chkid.cc: Likewise.
589	* src/sf-delta.cc: Likewise.
590	* src/sf-get.cc: Likewise.
591	* src/sf-get2.cc: Likewise.
592	* src/sf-get3.cc: Likewise.
593	* src/sf-kw.cc: Likewise.
594	* src/sf-prs.cc: Likewise.
595	* src/sf-prt.cc: Likewise.
596	* src/sf-rmdel.cc: Likewise.
597	* src/sf-write.cc: Likewise.
598	* src/sid.cc: Likewise.
599	* src/sf-val.cc: Likewise.
600	* src/unget.cc: Likewise.
601	* src/val.cc: Likewise.
602	* src/writesubst.cc: Likewise.
603	* src/file.cc: Likewise.  Also move the definition of unprivileged
604	out of the #if in order to avoid a compiler warning.
605	* src/file.h: #include "mystring.h" since we use that class in
606	this header.
607	* src/filelock.h: Likewise.
608
6092014-07-28  James Youngman  <jay@gnu.org>
610
611	Support executable history files (=> g-files executable on get).
612	* src/sf-admin.cc (create): Open any file specified with the -i
613	command-line option before calling start_update, and using the
614	open file pointer, call set_sfile_executable if the history file
615	should be created with execute bits set.
616	* src/sf-write.cc (start_update): Use sfile_should_be_executable
617	rather than flags.executable in order to decide whether the
618	updated history file should be executable.
619	* NEWS: Mention that the 'x' flag no longer determines the mode of
620	the updated history file.
621	* src/sccsfile.h (sfile_executable): new boolean member variable.
622	If true, the history file, when we create it, should be
623	executable.
624	(set_sfile_executable): setter for sfile_executable.
625	(sfile_should_be_executable): getter for sfile_executable.
626	(gfile_should_be_executable): new method; when true, the gotten
627	file should be executable.
628	* src/sccsfile.cc (sccs_file): Point out that setting the 'x' flag
629	is not the most portable way to make gotten files executable.
630	(set_sfile_executable): Implement (sets the sfile_executable
631	member variable).
632	(gfile_should_be_executable): Implement (when this method returns
633	true, the gotten file should be executable).
634	(sfile_should_be_executable): Implement (when this method returns
635	true, the (updated) history file should be executable).
636	(sccs_file): If the history file is executable, remember this so
637	that the gotten file is created with the relevant execute bits
638	set.
639	* src/get.cc (main): The gotten file should be executable if
640	sccs_file::gfile_should_be_executable() returns true (that is, if
641	either the 'x' flag is set or the history file is executable).
642	* src/sf-delta.cc (add_delta): When greating gotten files (for
643	diffing) use gfile_should_be_executable rather than
644	flags.executable.
645	* docs/cssc.texi (Executable File Support): Document the fact that
646	the execute bits of the history file's mode are now copied to the
647	gotten file's mode (subject to umask) and in the reverse direction
648	in the case of admin -i.
649	(admin): Document the same behaviour.
650	(Flags): Mention the mode of the history file as an alternative to
651	setting the 'x' flag.
652	(SCCS Version Differences): Mention this behaviour (which follows
653	Solaris) for admin and get.
654	(Data Keywords): Add missing comma after @xref.
655	* tests/admin/executable.sh: New test file; verifies that the
656	execute bits of the file offered via admin -i are copied to the
657	history file.  Verify that setting the 'x' flag cuases the g-file
658	to be created executable, and that not setting it does not (when
659	the history file is not executable).  Verify that the history file
660	can still be set as executable when the initial body is presented
661	on stdin.
662	* tests/common/test-common (docommand): pass through the exit
663	status of the child command.  Log the return value, stdout and
664	stderr in command.log.
665	* src/file.cc (get_mode_bits): New function; Factors stat call out
666	of is_writable.
667	(get_open_file_xbits): New function; populate an output flag as
668	true IFF the FILE* argument is open on a file which has an execute
669	bit set.
670	* src/file.h: Declare get_open_file_xbits.
671	* tests/get/executable.sh: New test file; verify that the
672	executable bit is copied from the history file to the gotten
673	file.
674
675	Process test files in a consistent order for a case where this matters.
676	* tests/get/middle-fail.sh (e3): List the history files explicitly
677	so that we know that SCCS/s.b is definitely the second file of
678	three processed.
679
680	Show the label of the test command in the command.log file.
681	* tests/common/test-common (docommand): Show the label for the
682	current command in command.log.
683	(do_output): Likewise
684
685	Update version number.
686	* configure.ac: Move on from version 1.4.0.
687	* NEWS: Add a new section for changes in CSSC-1.4.1-rc1.
688
6892014-07-11  James Youngman  <jay@gnu.org>
690
691	Release CSSC-1.4.0.
692	* configure.ac (AC_INIT): Update the version number.
693	* NEWS: Describe the new release.
694
6952014-06-30  James Youngman  <jay@gnu.org>
696
697	Release CSSC-1.3.2.
698	* configure.ac: Change version number to 1.3.2.
699	* NEWS: Update the version number of the first section.
700
701	Update googletest unit test framework from r424 to r690.
702	* gl/lib/.gitignore: Add the files generated by the pthread module
703	(since we now depend on that).
704	* bootstrap.conf (bootstrap_epilogue): Upgrade from r424 to r690
705	of the googletest test framework.
706	(buildreq): Update tool versions to the ones I'm actually using
707	now, since these are really the only tools I test with routinely.
708	(gnulib_modules): Depend on the pthread module.  Download
709	googletest before we run gnulib-tool (instead of in the epilogue),
710	so that the googletest/m4 directory is available to autoconf.
711	* configure.ac: Include the googletest m4 library,
712	unit-tests/googletest/m4.  Turn on the Automake option 'tar-ustar'
713	which switches the dist file format from v7 Unix to the selects
714	the ustar format defined by POSIX 1003.1-1988.  We need to do this
715	since the distribution now contains path names longer than 99
716	characters and the v7 format (or its consumers) cannot reliably
717	deal with this.  Also make explicit some of the options which in
718	any case are implied by the "gnits" option, since we would want to
719	keep them even if turning off gnits.  Add configure tests required
720	by the googletest framework.
721
722	* NEWS: Point out the change of tar file format used for the
723	distribution file.  Also mention the recent updates to googletest
724	and gnulib.
725	* unit-tests/Makefile.am: Update the build rules used to build the
726	googletest unit test framework.  Don't build the samples.  Build
727	libgtest by compiling individual source files, instead of only
728	libgtest-all.cc (this fixes a problem in which "make distcheck"
729	would otherwise fail due to dependency rule files being left
730	around.  Also, don't compile the sample programs.  Remove the
731	rules for fusing the sources.  We don't use them, and the rules
732	themselves are still available in googletest/Makefile.am.
733	* Makefile.am (ACLOCAL_AMFLAGS): Include the googletest m4
734	library.
735	(distcheck-hook): Call build-aux/check-googletest-files.sh
736	(this is described below).
737	* build-aux/check-googletest-files.sh: New script; verifies that
738	all the files for the "googletest" C++ Unit test framework are
739	included in the distribution.  This script is called from
740	distcheck-hook.
741	* .gitignore: Don't ignore build-aux.
742
7432014-06-22  James Youngman  <jay@gnu.org>
744
745	Update gnulib.
746	* bootstrap: Update from current gnulib.
747	* bootstrap.conf: Remove second (and wrong) --tests-base
748	argument.  Don't munge include paths in gl/tests/Makefile.am
749	(since now, doing that breaks the build and whatever made it
750	necessary before no longer does).
751	* src/canonify.cc: Include <config.h> before (gnulib's replacement
752	of) <unistd.h>.
753
754	* src/file.h: Include <sys/types.h> for gid_t.
755
7562013-04-20  James Youngman  <jay@gnu.org>
757
758	Typo fix.
759	* COPYING.bsd: Fix typo 'modifiactions'.
760
7612011-11-19  James Youngman  <jay@gnu.org>
762
763	Fix Savannah bug #33633 (coredump in prs -d:GB:)
764	* src/sf-prs.cc (sccs_file::get): pass in the correct delta
765	information for keyword expansion instead of a blank (that is,
766	invalid) delta.  This fixes Savannah bug #33633.
767	* tests/prs/sv33633.sh: New file, test for this bug.
768	* tests/prs/s.sv33633.txt: Test input for the new test.
769	* NEWS: Mention this bug fix.
770
7712011-05-22  James Youngman  <jay@gnu.org>
772
773	Add unit test for cssc_linebuf.
774	* unit-tests/Makefile.am (unit_tests): Add test_linebuf.
775	(test_linebuf_SOURCES): Build test_linebuf.
776	* unit-tests/test_linebuf.cc: New unit test file.
777
7782011-05-21  James Youngman  <jay@gnu.org>
779
780	Print clearer test labels.
781	* tests/common/test-common (docommand): Print the test directory
782	and the test script as part of the label of each test, for
783	additional clarity and because many of them are actually not
784	unique.
785	* tests/get/sf111140.sh (label_prefix): Print qualified labels (as
786	for docommand).
787
788	Source the command-names script only once per test script.
789	* tests/common/real-thing: Instead of sourcing the command-names
790	script unconditionally, just complain if it was not already
791	sourced.
792	* tests/common/command-names: Error out if the command-names
793	script is sourced twice.
794	* tests/common/config-data: Don't source the command-names script
795	more than once.
796	* tests/common/need-prt: Likewise.
797
798	* tests/Makefile.am (test-*): Indicate the full path of each test
799	script.
800
801	Set TZ=GMT in the y2k tests.
802	* tests/year-2000/ext.sh: Set $TZ to GMT in order to make it
803	possible for implementations which convert SCCS file dates to
804	time_t values (but which otherwise have no bugs) to pass the
805	tests.
806	* tests/year-2000/prs-y2k.sh: Likewise.
807
808	Remove spurious space in definition of admin.
809	* tests/common/command-names (admin): remove spurious space.
810
811	Move on from release 1.3.1.
812	* configure.ac: Update version number to 1.3.2-git, to indicate
813	that compiled versions of this code are no longer identical to the
814	1.3.1 release.
815	* NEWS: Likewise.
816
8172011-05-10  James Youngman  <jay@gnu.org>
818
819	Release version 1.3.1.
820	* NEWS: Update version number to 1.3.1.
821	* configure.ac: Likewise.
822
823	Check we distributed all the tests.  Remove redundant Makefile.am files.
824	* auxfiles/check-testfiles.sh: New script (copied from GNU
825	findutils e66802375963941b3b54a0e038d18eccde449e14 with some
826	adaptations for CSSC) for checking that we installed all the test
827	scripts in "make dist".
828	* tests/Makefile.am (dist-hook): Invoke the
829	auxfiles/check-testfiles.sh script.
830	* tests/common/Makefile.am: remove unreferenced file;
831	tests/Makefile.am does not recurse.
832	* tests/delta/Makefile.am, tests/prs/Makefile.am: Likewise.
833	* tests/prt/Makefile.am, tests/sact/Makefile.am: Likewise.
834	* tests/admin/Makefile.am, tests/unget/Makefile.am: Likewise.
835	* tests/val/Makefile.am, tests/what/Makefile.am: Likewise.
836
8372011-05-03  James Youngman  <jay@gnu.org>
838
839	Modify "prs -d :DI:" to print ignored deltas.
840	* tests/prs/delta_ixg.sh: New test script for "prs -d :DI:".
841	* tests/prs/s.delta_ixg: New test input file for delta_ixg.sh.
842	* src/sf-prs.cc (print_delta): For :DI:, also print ignored
843	deltas.  Follow the conventions of OpenSolaris 2009.06 on the
844	question of how many slashes to produce.
845	* docs/cssc.texi (Data Keywords): Describe in more detail just how
846	the keyword :DI: is expanded.
847	(SCCS Version Differences): Explain how the expansion of :DI:
848	varies across implementations.
849	* NEWS: Mention this change.
850
8512011-04-30  James Youngman  <jay@gnu.org>
852
853	Accept entirely empty comment lines (lacking the initial space).
854	* src/sccsfile.cc (read_delta): Accept comment lines containing
855	nothing at all (not even a space after the 'c').  Some historis
856	versions of SCCS seem to have produced these, and later versions
857	tolerate it.
858
859	Fix Savannah bug bug #33153: "prs" includes "AUTO NULL DELTA"s.
860	* src/prs.cc (main): Change type of all_deltas from int to bool.
861	(main): Move detection of errors writing to stdout to here,
862	instead of sccs_file::prs().  Likewise diagnosis of the fact that
863	no deltas were matched.
864	* src/sf-prs.cc (prs): Add an output parameter, "matched", which
865	is set if any delta was matched (and printed).
866	(prs): Rewrite this method to evaluate the earlier/later cutoff in
867	terms of SIDs where this is necessary.  That is, avoid the
868	assumption that different SIDs have different timestamps.
869	* src/sccsfile.h (sccs_file::prs): Modify the declaration
870	of sccs_file::prs() to add the output parameter, "matched".
871	* tests/prs/sv33153.sh: New test.
872	* tests/prs/s.sv33153: New test input file.
873	* NEWS: Mention this bugfix.
874
8752011-04-29  James Youngman  <jay@gnu.org>
876
877	* testutils/mogrify.awk: Preserve comment lines which have no
878	space (that is, \001Ac\n).
879
8802011-04-26  James Youngman  <jay@gnu.org>
881
882	Fix some minor issues identified by 'make syntax-check'.
883	* testutils/uu_decode.c: avoid including unnecessary header
884	<stddef.h>.
885	* src/sf-delta.cc (add_delta): Remove doubled word in a comment.
886	* docs/cssc.texi (Other Variables): Remove doubled word.
887	(Year 2000 Summary): Likewise.
888	* cfg.mk: Modify spelling of a comment in order not to have a
889	false positive from the sc_makefile_at_at_check syntax check.
890	* tests/year-2000/ext.sh: Remove blank line at the end of the
891	file.
892	* tests/year-2000/prs-y2k.sh: Likewise.
893	* .x-sc_unmarked_diagnostics: Likewise.
894	* unit-tests/testwrapper.sh.in: Add final newline.
895	* README-hacking: Remove space-tab combinations.
896
897	Update hacking instructions to explain the git submodule.
898	* README-hacking: Update instructions detailing how to collect
899	gnulib (since we now use it as a submodule).
900
901	Update gnulib.
902	* gnulib: update to current HEAD.
903
904	Various minor fixes suggested by 'make syntax-check'.
905	* docs/.ispell_english: Remove blank line from end of document.
906	* src/Makefile.am: Remove blank space from end of line.
907	* src/file.cc (atomic_nfs_create): Likewise.
908	* src/sf-prs.cc (prs): Likewise.
909	* testutils/lndir.c: Likewise.
910
911	Change output order in "sccs unedit" to match OpenSolaris.
912	* tests/bsd-sccs/driver-basic.sh (h1): Modify the ordering of the
913	expected ouput to match OpenSolaris 2009.06.
914	* src/sccs.c (command): For the UNEDIT case, flush stdout before
915	invoking 'get' in order to pass the changed test.
916	* NEWS: Mention this change.
917
9182011-04-25  James Youngman  <jay@gnu.org>
919
920	Allow non-CSSC implementations to XFAIL for tricky dates.
921	* tests/year-2000/prs-y2k.sh: Divide tests into "easy" (which any
922	y2k-compliant version of SCCS must pass) and "harder" (which
923	require correct implementation of the windowing scheme and correct
924	conversion of dates at the limits of a 32-bit time_t).  Require
925	CSSC to pass all tests, but allow other implementations to XFAIL
926	on the hader tests.
927	* tests/year-2000/ext.sh: Correct the mechanism by which we figure
928	out if we are testing CSSC itself.
929	* tests/common/test-common (fail): return false on XFAIL.
930
931	Move source and documentation out of bsd/ into src/ and docs/.
932	* COPYING.bsd: Move from bsd/COPYING.bsd.
933	* bsd/sccs.1: move to docs/sccs.1
934	* bsd/sccs.c: move to src/sccs.c
935	* tests/common/command-names: Locate the sccs binary in its new
936	location.
937	* src/Makefile.am (generic_CPPFLAGS): Put preprocessor flags here
938	so that AM_CPPFLAGS and AM_CFLAGS can both refer to it, now that
939	we have both C and C++ sources in this directory.
940	(LDADD): Link against gnulib.
941	(AM_CFLAGS): #define PREFIX for the benefit of sccs.c.
942	(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Exempt the binaries from the
943	gnits install check which requires them to support --version and
944	--help.
945	* AUTHORS: Mention the new location of the COPYING.bsd file.
946	* THANKS: Point to COPYING.bsd in its new location.
947	* docs/.ispell_english: Incorporate contents of bsd/.ispell_english.
948	* docs/Makefile.am: Add sccs.1 and sccs.me.
949	* bsd/.ispell_english, bad/Makefile.am, bsd/Makefile.bsd: Delete.
950	* bsd/sccs.me: move to docs/sccs.me
951	* configure.ac: refer to src/sccs.c instead of bsd/sccs.c
952	* Makefile.am (SUBDIRS): Remove bsd from SUBDIRS.
953	* README: sccs no longer lives in bsd/sccs.
954
955	Allow an empty MR list to be passed to admin.
956	* tests/admin/init-mr.sh: Don't expect "admin -m" to interpret
957	a plain "-m" as meaning an empty MR list.  Distinguishing the
958	absence of an argument to -m requires a traditional SCCS argument
959	processor, and this behaviour is incompatible with modern
960	implementations of SCCS (for example OpenSolaris).
961	* tests/admin/flags.sh: Likewise.
962	* src/admin.cc (main): Allow an empty list of MRs to be specified
963	to admin, for example "admin -fv -m' '".  OpenSolaris allows
964	this, and we can no longer use the previous method which was to
965	omit the optional argument.  Elminiate doubled space in error
966	message.
967	* docs/cssc.texi (admin): document this clearly.
968	* NEWS: mention this change.
969
970	Fix delta summary; when it goes to stdout, send other to stderr.
971	* tests/get/delta-summary.sh: OpenSolaris get emits the delta
972	summary (produced by get -L) to stdout and the SID of the gotten
973	delta and the number of body lines to stderr.  Expect this
974	behaviour.
975	* tests/get/delta-summary.sh (L2e): Check that the "new delta"
976	message also goes to stderr when we are using "get -e -L" (since
977	the delta summary goes to stdout).
978	* src/get.cc (print_id_list): New parameter, fp: the file handle
979	to print the IDs to.
980	(main): rename use_stdout to send_body_to_stdout (being a more
981	accurate description).
982	(main): add variable commentary, the file descriptor on which we
983	announce which delta we're getting and so forth.   This is usually
984	stdout, but if stdout needs to be used for something else (for
985	example the delta summary), commentary can be set to stderr.
986	* src/sf-get2.cc (get): Correct the spacing before the items in
987	the delta summary.  Add a trailing newline.
988	* NEWS: Mention this change.
989
990	Produce better test diagnostics when a command unexpectedly fails.
991	* tests/common/test-common (docommand): when the return value is
992	zero, print any error message that had been issued on stderr.
993
994	Update sccsdiff to work like sccsdiff on OpenSolaris.
995	* tests/sccsdiff/rap.sh: Update the tests to match the results we
996	actually get from sccsdiff on OpenSolaris.
997	* src/sccsdiff.sh.in: Update to pass the modified tests.
998	Specifically, use a different header for the case where -p is
999	specified and when it's not.
1000	* NEWS: Mention this change.
1001
1002	Call ${admin} in test preparations, not "admin".
1003	* tests/admin/y-flag.sh: when trying to deduce the properties of
1004	the admin command we're testing, invoke ${admin} (i.e. the thing
1005	we are testing) as opposed to "admin" (i.e. the system's
1006	already-installed version).  Add extra checks to verify that the
1007	right thing happened.
1008
1009	Avoid assuming Unix semantics for st_nlinks in lndir.
1010	* testutils/lndir.c (quit): Accept errno argument; include the
1011	error string in the error message if it is nonzero.  Call vmsg
1012	instead of calling vfprintf directly.
1013	(mperror): Accept the errno value as a function argument.
1014	(vmsg): make a static function.
1015	(dodir): Eliminate n_dirs subdirectory counter; this is unreliable
1016	on filesystems which don't have Unix-like semantics for the
1017	directory link count (for example, ISO9660 on Solaris, VirtualBox
1018	shared folders on Solaris).  Also word error messages more
1019	explicitly.
1020
1021	Avoid retrying link(2) when errno is set to ENOSYS.
1022	* src/file.cc (atomic_nfs_create): If link(2) fails with ENOSYS,
1023	there is no point in retrying.
1024
1025	Bugfix for lndir on OpenSolaris: ignore . and ..
1026	* testutils/lndir.c (dodir): Ignore . and .. (on systems where
1027	readdir returns them).
1028
10292011-04-24  James Youngman  <jay@gnu.org>
1030	Tell the user to run "bootstrap" instead of "autogen.sh".
1031	* README: "autogen.sh" has been replaced by "bootstrap".
1032
1033	Adopt Automake's "gnits" rules.
1034	* configure.ac: Use the "gnits" rules.
1035	* docs/CREDITS: Rename to THANKS to comply with the gnits rules.
1036	* docs/CREDITS.short.txt: Add missing final newline.
1037
1038	Modernise configure.ac initialisation.
1039	* configure.ac: Use the new-style Autoconf/Automake initialisation
1040	which passes the version number to AC_INIT rather than to
1041	AM_INIT_AUTOMAKE.
1042
1043	Update the version number.
1044	* configure.ac: Update version number to make a distinction
1045	between the tar file which results form "make dist" and the
1046	released 1.3.0 tar file.
1047	* NEWS: Similarly update the version number.
1048
1049	Fix SF bug #1300722 (prs succeeds even if the SID is not found).
1050	* tests/prs/wrongsid.sh: New file; tests for "prs -r" when the
1051	specified SID does not exist.
1052	* tests/prs/default.sh: New file; tests the default behaviour of
1053	prs, both with -d and with no options at all.
1054	* tests/prs/cutoff.sh: New file; tests for "prs -e" and "prs -l".
1055	* src/prs.cc (main): Add a comment pointing out that specifying -d
1056	changes the default behaviour around which deltas are selected.
1057	* src/sf-prs.cc (prs): return a failure status if a SID was
1058	specified but not matched.
1059	* NEWS: mention this bugfix.
1060
10612011-04-22  Yann Dirson  <dirson@debian.org>  (tiny change)
1062
1063	Fix SourceForge bug #1317916.
1064	* bsd/sccs.1: Avoid a groff warning in sccs.1 by removing some
1065	unnecessary blank lines.
1066
10672010-11-07  James Youngman  <jay@gnu.org>
1068
1069	Prepare to release 1.3.0.
1070	* configure.ac (AM_INIT_AUTOMAKE): Update the version number.
1071	This release is otherwise identical to 1.3.0rc1.
1072	* NEWS: Mention this.
1073
10742010-05-16  James Youngman  <jay@gnu.org>
1075
1076	Prepare to release 1.3.0rc1.
1077	* NEWS: Update version to 1.3.0rc1
1078	* configure.ac: Update version to 1.3.0rc1
1079	* docs/cssc.texi: Update VERSION, EDITION and last-update time.
1080
1081	Remove exceptions for now-deleted googletest/ files.
1082	* .x-sc_prohibit_empty_lines_at_EOF: Remove exceptions for
1083	nonexistent files.
1084	* .x-sc_prohibit_magic_number_exit: Likewise.
1085	* .x-sc_useless_cpp_parens: Likewise.
1086	* .x-sc_the_the: Likewise.
1087	* .x-sc_file_system: Likewise.
1088	* .x-sc_m4_quote_check: Delete this file, since the only entry in
1089	it has also been deleted.
1090
1091	Remove some trailing blanks.
1092	* src/file.cc (create): Remove trailing blanks.
1093
1094	Distribute ChangeLog.2.
1095	* Makefile.am (ACLOCAL_AMFLAGS): Set to -I m4 to avoid a warning.
1096	(EXTRA_DIST): Add ChangeLog.2, which previously wasn't
1097	distributed.
1098
1099	Don't use #pragma interface/implementation, they're not useful
1100	with GCC 2.7.2+.
1101	* src/quit.h, src/sccsdate.h, src/sccsname.h, src/sid_list.h,
1102	src/filediff.h, src/fileiter.h, src/filelock.h: Don't use #pragma
1103	interface.
1104	* src/file.cc, src/fileiter.cc, src/linebuf.cc, src/my-getopt.cc,
1105	src/my-getopt.h, src/quit.cc, src/sccsdate.cc, src/sccsname.cc,
1106	src/sf-get.cc, src/sf-kw.cc: Don't use #pragma implementation.
1107
1108	Remove support for CONFIG_MSDOS_FILES and lock methods other than
1109	CONFIG_PID_LOCKING.
1110	* src/fileiter.cc (sccs_file_iterator): Remove support for
1111	CONFIG_MSDOS_FILES.
1112	* src/sysdep.h: Remove support for CONFIG_MSDOS_FILES.
1113	* src/filelock.h (cleanup): Remove support for CONFIG_NO_LOCKING.
1114	* src/file.cc (create): Remove support for CONFIG_MSDOS_FILES.
1115	(create): Remove support for CONFIG_SHARE_LOCKING.
1116	(do_lock): Remove support for CONFIG_SHARE_LOCKING.
1117	* src/defaults.h: Remove support for types of locking other than
1118	CONFIG_PID_LOCKING.  Remove support for CONFIG_MSDOS_FILES.
1119	* src/file.h (enum create_mode): Likewise.
1120
1121	Generate config.h.in by running bootstrap.
1122	* configure.ac: Call AC_CONFIG_HEADERS instead of the obsolete
1123	AM_CONFIG_HEADERS.  This causes bootstrap to call autoheader,
1124	which needs to happen for config.h.in to be generated.
1125
1126	Eliminate stack.h and the stack<T> template, since it is not used.
1127	* unit-tests/Makefile.am (unit_tests): Remove test_stack.  Also
1128	eliminate test_stack_SOURCES.
1129	* src/seqstate.h: Don't include stack.h.
1130	* src/stack.h: Remove.
1131	* unit-tests/test_stack.cc: Remove.
1132	* src/Makefile.am (noinst_HEADERS): Remove stack.h.
1133
11342010-05-15  James Youngman  <jay@gnu.org>
1135
1136	Remove trailing blanks from most files.
1137	* .x-sc_trailing_blank: Remove trailing-blank exceptions for most
1138	files.
1139	* Makefile.am, NEWS, README, auxfiles/CSSC.spec.in,
1140	bsd/Makefile.bsd, bsd/sccs.1, bsd/sccs.c, configure.ac, docs/BUGS,
1141	docs/CREDITS, docs/Makefile.am, docs/Platforms, docs/TODO,
1142	docs/URLs, docs/cssc.texi, docs/mailing-list.txt, docs/style.txt,
1143	docs/tests-todo.txt, gl/Makefile.am, sccs-cgi/sccs.cgi,
1144	src/Makefile.am, src/admin.cc, src/bodyio.cc, src/bodyio.h,
1145	src/canonify.cc, src/cap.cc, src/cdc.cc, src/cleanup.h,
1146	src/cssc-assert.h, src/cssc.h, src/defaults.h,
1147	src/delta-iterator.cc, src/delta-iterator.h, src/delta-table.cc,
1148	src/delta-table.h, src/delta.cc, src/delta.h, src/dtbl-prepend.cc,
1149	src/encoding.cc, src/environment.cc, src/except.h,
1150	src/fatalsig.cc, src/fdclosed.cc, src/file.cc, src/file.h,
1151	src/filediff.cc, src/filediff.h, src/fileiter.cc, src/fileiter.h,
1152	src/filelock.h, src/filepos.h, src/fnsplit.cc, src/get.cc,
1153	src/ioerr.h, src/l-split.cc, src/linebuf.cc, src/linebuf.h,
1154	src/my-getopt.cc, src/my-getopt.h, src/mylist.h, src/myset.h,
1155	src/mystring.h, src/pf-add.cc, src/pf-del.cc, src/pfile.cc,
1156	src/pfile.h, src/prompt.cc, src/prs.cc, src/prt.cc, src/quit.cc,
1157	src/quit.h, src/rel_list.cc, src/rel_list.h, src/release.h,
1158	src/relvbr.h, src/rl-merge.cc, src/rmdel.cc, src/run.cc,
1159	src/run.h, src/sact.cc, src/sccs-delta.cc, src/sccsdate.cc,
1160	src/sccsdate.h, src/sccsdiff.sh.in, src/sccsfile.cc,
1161	src/sccsfile.h, src/sccsname.cc, src/sccsname.h, src/seqstate.cc,
1162	src/seqstate.h, src/sf-add.cc, src/sf-admin.cc, src/sf-cdc.cc,
1163	src/sf-chkid.cc, src/sf-chkmr.h, src/sf-delta.cc, src/sf-get.cc,
1164	src/sf-get2.cc, src/sf-get3.cc, src/sf-kw.cc, src/sf-prs.cc,
1165	src/sf-prt.cc, src/sf-rmdel.cc, src/sf-val.cc, src/sf-write.cc,
1166	src/showconfig.cc, src/sid.cc, src/sid.h, src/sid_list.h,
1167	src/sl-merge.h, src/stack.h, src/sysdep.h, src/unget.cc,
1168	src/val.cc, src/valcodes.h, src/version.h, src/what.cc,
1169	src/writesubst.cc, testutils/compare_gets.sh,
1170	testutils/condense-valgrind.pl, testutils/decompress_stdin.sh.in,
1171	testutils/ekko.c, testutils/gcov-util.sh, testutils/last-time.c,
1172	testutils/lndir.c, testutils/lndir.man, testutils/mogrify.awk,
1173	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
1174	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
1175	unit-tests/Makefile.am, unit-tests/get-gtest.sh,
1176	unit-tests/test_bigfile.cc, unit-tests/test_delta-table.cc,
1177	unit-tests/test_delta.cc, unit-tests/test_encoding.cc,
1178	unit-tests/test_encoding2.cc, unit-tests/test_mylist.cc,
1179	unit-tests/test_myset.cc, unit-tests/test_rel_list.cc,
1180	unit-tests/test_release.cc, unit-tests/test_relvbr.cc,
1181	unit-tests/test_sccsdate.cc, unit-tests/test_sid.cc,
1182	unit-tests/test_sid_list.cc, unit-tests/test_stack.cc: Remove
1183	trailing blanks.
1184
1185	Eliminate some syntax-check warnings.
1186	* testutils/yes.c (main): Don't #define EXIT_FAILURE.
1187	* docs/borrowed-files.txt: Remove trailing blanks.
1188	* bsd/sccs.c: Don't define WEXITSTATUS, sys/wait.h does that.
1189	* tests/common/command-names: Convert TABs to spaces to avoid
1190	syntax-check warnings.
1191
11922010-05-14  James Youngman  <jay@gnu.org>
1193
1194	Don't configure in unit-tests/googletest, it's gone.
1195	* configure.ac: remove call to
1196	AC_CONFIG_SUBDIRS(unit-tests/googletest).
1197
1198	Disable pthread support (since we don't use pthreads).
1199	* unit-tests/Makefile.am (AM_CPPFLAGS): Pass -DGTEST_HAS_PTHREAD=0.
1200	* configure.ac: Don't include
1201	unit-tests/googletest/m4/acx_pthread.m4. Remove --with-pthreads.
1202	* gl/lib/.gitignore: Remove gnulib.mk, dummy.c.
1203
1204	Update Google C++ Test Framework version at bootstrap time.
1205	* bootstrap.conf (bootstrap_epilogue): call get-gtest.sh at
1206	bootstrap time.
1207
1208	* unit-tests/get-gtest.sh: Use svn's --non-interactive option.
1209
1210	Configure and build googletest in our own configure/Makefile.
1211	* unit-tests/Makefile.am: Build the Google C++ Testing Framework
1212	code in this Makefile rather than forcing it to have its own
1213	configure.
1214	(EXTRA_DIST): Distribute the googletest copyright notice
1215	etc. too.
1216	(gtest_headers): List all the header files.
1217	(libgtest_a_SOURCES): List the source files separately, and the
1218	header files.
1219	(libgtest_main_a_SOURCES): List the header files too.
1220	* bootstrap.conf (bootstrap_epilogue): googletest now has no
1221	separate configure step, so no need to bootstrap in that directory
1222	either.
1223	* unit-tests/get-gtest.sh: Script for checking out the google unit
1224	test code.
1225
1226	Move googletest to unit-tests/googletest.
1227	* unit-tests/Makefile.am (SUBDIRS): Recurse into googletest.
1228	Update paths to liibgtest.la.
1229	* bootstrap.conf (bootstrap_epilogue): bootstrap in uni-tests/googletest.
1230	* configure.ac: Configure in unit-tests/googletest.
1231	* Makefile.am (SUBDIRS): Remove googletest (since we moved it).
1232	* googletest/*: move to unit-tests/googletest/.
1233
1234	Remove some redundant scripts and .cvsignore files.
1235	* scripts/rev-freq.sh: Remove unused file.
1236	* show-disp.sh: Remove unused file.
1237	* scripts/change-suffix: Remove unused file.
1238	* .cvsignore, auxfiles/.cvsignore, bsd/.cvsignore,
1239	docs/.cvsignore, sccs-cgi/.cvsignore, tests/.cvsignore,
1240	testutils/.cvsignore, unused/.cvsignore: Remove unused files.
1241
1242	Move CSSC source code to src/ subdirectory.
1243	* configure.ac: move CSSC source to subdirectory src/.
1244	* Makefile.am: rename to src/Makefile.am.  The remaining makefile
1245	just sets SUBDIRS and EXTRA_DIST.
1246	* admin.cc: moved to src/admin.cc
1247	* bodyio.cc: moved to src/bodyio.cc
1248	* bodyio.h: moved to src/bodyio.h
1249	* canonify.cc: moved to src/canonify.cc
1250	* cap.cc: moved to src/cap.cc
1251	* cdc.cc: moved to src/cdc.cc
1252	* cleanup.h: moved to src/cleanup.h
1253	* cssc-assert.h: moved to src/cssc-assert.h
1254	* cssc.h: moved to src/cssc.h
1255	* defaults.h: moved to src/defaults.h
1256	* delta-iterator.cc: moved to src/delta-iterator.cc
1257	* delta-iterator.h: moved to src/delta-iterator.h
1258	* delta-table.cc: moved to src/delta-table.cc
1259	* delta-table.h: moved to src/delta-table.h
1260	* delta.cc: moved to src/delta.cc
1261	* delta.h: moved to src/delta.h
1262	* dtbl-prepend.cc: moved to src/dtbl-prepend.cc
1263	* encoding.cc: moved to src/encoding.cc
1264	* environment.cc: moved to src/environment.cc
1265	* except.h: moved to src/except.h
1266	* fatalsig.cc: moved to src/fatalsig.cc
1267	* fdclosed.cc: moved to src/fdclosed.cc
1268	* file.cc: moved to src/file.cc
1269	* file.h: moved to src/file.h
1270	* filediff.cc: moved to src/filediff.cc
1271	* filediff.h: moved to src/filediff.h
1272	* fileiter.cc: moved to src/fileiter.cc
1273	* fileiter.h: moved to src/fileiter.h
1274	* filelock.h: moved to src/filelock.h
1275	* filepos.h: moved to src/filepos.h
1276	* fnsplit.cc: moved to src/fnsplit.cc
1277	* get.cc: moved to src/get.cc
1278	* ioerr.h: moved to src/ioerr.h
1279	* l-split.cc: moved to src/l-split.cc
1280	* linebuf.cc: moved to src/linebuf.cc
1281	* linebuf.h: moved to src/linebuf.h
1282	* my-getopt.cc: moved to src/my-getopt.cc
1283	* my-getopt.h: moved to src/my-getopt.h
1284	* mylist.h: moved to src/mylist.h
1285	* myset.h: moved to src/myset.h
1286	* mystring.h: moved to src/mystring.h
1287	* pf-add.cc: moved to src/pf-add.cc
1288	* pf-del.cc: moved to src/pf-del.cc
1289	* pfile.cc: moved to src/pfile.cc
1290	* pfile.h: moved to src/pfile.h
1291	* prompt.cc: moved to src/prompt.cc
1292	* prs.cc: moved to src/prs.cc
1293	* prt.cc: moved to src/prt.cc
1294	* quit.cc: moved to src/quit.cc
1295	* quit.h: moved to src/quit.h
1296	* rel_list.cc: moved to src/rel_list.cc
1297	* rel_list.h: moved to src/rel_list.h
1298	* release.h: moved to src/release.h
1299	* relvbr.h: moved to src/relvbr.h
1300	* rl-merge.cc: moved to src/rl-merge.cc
1301	* rmdel.cc: moved to src/rmdel.cc
1302	* run.cc: moved to src/run.cc
1303	* run.h: moved to src/run.h
1304	* sact.cc: moved to src/sact.cc
1305	* sccs-delta.cc: moved to src/sccs-delta.cc
1306	* sccsdate.cc: moved to src/sccsdate.cc
1307	* sccsdate.h: moved to src/sccsdate.h
1308	* sccsdiff.sh.in: moved to src/sccsdiff.sh.in
1309	* sccsfile.cc: moved to src/sccsfile.cc
1310	* sccsfile.h: moved to src/sccsfile.h
1311	* sccsname.cc: moved to src/sccsname.cc
1312	* sccsname.h: moved to src/sccsname.h
1313	* seqstate.cc: moved to src/seqstate.cc
1314	* seqstate.h: moved to src/seqstate.h
1315	* sf-add.cc: moved to src/sf-add.cc
1316	* sf-admin.cc: moved to src/sf-admin.cc
1317	* sf-cdc.cc: moved to src/sf-cdc.cc
1318	* sf-chkid.cc: moved to src/sf-chkid.cc
1319	* sf-chkmr.h: moved to src/sf-chkmr.h
1320	* sf-delta.cc: moved to src/sf-delta.cc
1321	* sf-get.cc: moved to src/sf-get.cc
1322	* sf-get2.cc: moved to src/sf-get2.cc
1323	* sf-get3.cc: moved to src/sf-get3.cc
1324	* sf-kw.cc: moved to src/sf-kw.cc
1325	* sf-prs.cc: moved to src/sf-prs.cc
1326	* sf-prt.cc: moved to src/sf-prt.cc
1327	* sf-rmdel.cc: moved to src/sf-rmdel.cc
1328	* sf-val.cc: moved to src/sf-val.cc
1329	* sf-write.cc: moved to src/sf-write.cc
1330	* showconfig.cc: moved to src/showconfig.cc
1331	* sid.cc: moved to src/sid.cc
1332	* sid.h: moved to src/sid.h
1333	* sid_list.h: moved to src/sid_list.h
1334	* sl-merge.h: moved to src/sl-merge.h
1335	* stack.h: moved to src/stack.h
1336	* sysdep.h: moved to src/sysdep.h
1337	* unget.cc: moved to src/unget.cc
1338	* val.cc: moved to src/val.cc
1339	* valcodes.h: moved to src/valcodes.h
1340	* version.cc.in: moved to src/version.cc.in
1341	* version.h: moved to src/version.h
1342	* what.cc: moved to src/what.cc
1343	* writesubst.cc: moved to src/writesubst.cc
1344	* unit-tests/Makefile.am (LDADD): Fix relative path
1345	of libcssc.a.
1346	(test_bigfile_LDADD): Likewise.
1347	(AM_CPPFLAGS): Fix relative path to the include files.
1348	* tests/common/command-names (dir): Update relative path to the binaries.
1349	(sccsprog): Set a variable for the path to the sccs binary.
1350	(sccs): Correct the sccs command (use ${sccsprog}).
1351
13522010-05-13  James Youngman  <jay@gnu.org>
1353
1354	Fix some compiler warnigns about shadowing names or integer conversions.
1355	* sf-delta.cc (add_delta): Rename some variables to avoid
1356	shadowing class members or other local variables.n
1357	* sf-prs.cc (get): Likewise.
1358	(print_delta): Likewise.
1359	(prs): Likewise.
1360	* sf-cdc.cc (cdc): Rename parameters to avoid shadowing the names
1361	of class members.
1362	* sf-admin.cc (admin): Remove unused variable which was causing
1363	shadowing warnings.
1364	* sccsdate.cc (sccs_date): Avoid warning about implicit cast from
1365	int to char, by using an explicit cast.
1366	* linebuf.cc (read_line): Avoid a compiler warning: explicitly
1367	cast the length parameter passed to fgets from size_t to int.
1368	* fileiter.h (s): Correct the type of pos (it's in index into
1369	mylist<mystring>, so use mylist<mystring>::size_type).
1370	* cdc.cc (plural): Fix warning about type conversion in call to plural().
1371	* fileiter.cc (sccs_file_iterator): Avoid shadowoing a class member.
1372	* what.cc (xread): return ssize_t rather than int.
1373	(main): store the result of xread in a ssize_t variable, not an int.
1374
1375	Fix more compiler warnings.
1376	* sf-val.cc (validate_seq_lists): Use size_type for indexes into mylist,
1377	not int.
1378	(validate): Likewise.
1379	* sf-prs.cc (print_seq_list): Likewise.
1380	(print_string_list): Likewise.
1381	* sf-cdc.cc (inlist): Likewise.
1382	(process_mrs): Likewise.
1383	(sccs_file::cdc): Likewise.
1384	* sf-rmdel.cc (is_seqlist_member): Likewise.
1385	* sf-prt.cc (print_string_list): Likewise.
1386	(print_seq_list): Likewise.
1387	* delta.cc (delta_main): Make static.
1388	* sf-get2.cc (test_locks): Avoid shadowing a class member.
1389	* get.cc (print_id_list): Use size_type for indexes into mylist,
1390	not int.
1391	* showconfig.cc: Include version.h for the declarations of
1392	functions in this module.
1393	* quit.cc (v_errormsg_with_errno): Make static; nobody else uses it.
1394	* fnsplit.cc: Include file.h for declaration of split_filename,
1395	since we define it in this file.
1396	* sccsdate.cc (count_digits): Avoid casting argument of is_digit
1397	to unsigned char, since is_digit takes a char.
1398	* sid.cc (matches): Be more explicit about avoidingn signed overflow.
1399
1400	Fix warnings in file.cc.
1401	* file.cc (maybe_wait_a_bit): Fix type of first parameter to avoid
1402	a compiler warning.  Also type of argument to sleep.
1403	(eaccess): Remove unused function.
1404	(unlink_file_if_present): Remove unused function.
1405	(create): Make this function static.
1406
1407	Fix some more compiler warnings.
1408	* bodyio.cc (body_insert_binary): Explicitly qualify
1409	::check_id_keywords as being in the global namespace.
1410	* run.cc (operator+=): Change type of index variables to size_type
1411	to fix a compiler warning.
1412	(run_mr_checker): Likewise.
1413	* sf-write.cc (print_seqs): Likewise.
1414	(write_delta): Likewise.
1415	(rehack_encoded_flag): Avoid shadowing the name of a class member.
1416	* sccsfile.cc: Remove unused macro 'f'.
1417	(strict_atoul_idu): Remove unused variable 'c'.
1418	(read_line_param): Avoid shadowing the name of a class member.
1419	* rel_list.h (class release_list): Define typedef size_type.
1420	* rel_list.cc (member): Use size_type for index variables to avoid
1421	(justified) compiler warnings.
1422	(print): Likewise.
1423	* fileiter.cc (sccs_file_iterator): Use size_t to represent the
1424	result of strlen, not int.
1425	* file.cc (is_writable): Make static, it's not used elsewhere.
1426	(old_is_writable): Unused; remove.
1427
1428	* sf-chkid.cc (check_id_keywords): Assume we have memchr.  Avoid
1429	possible access beyond the end of the string.
1430	* sf-kw.cc (no_id_keywords): Avoid shadowing the name of a class
1431	member.
1432	(check_keywords_in_file): Likewise.
1433	* l-split.cc: #include "sccsfile.h" to get declarations of the
1434	functions in this file.
1435
1436	Fix or minimise some compiler warnings.
1437	* sid_list.h (range_list): Avoid long-to-size_t compiler warning.
1438	* encoding.cc (encode): Move the function definition here from
1439	bodyio.h since it's only used in this file.
1440	(decode): Likewise.
1441	(decode_line): Be more explicit about casts between char and
1442	size_t in order to avoid compiler warnings.
1443	(encode_line): Likewise.
1444	* bodyio.h: Remove bodies of encode() and decode().  Declare
1445	encode and decode so that unit-tests/test_encoding can execute
1446	them.
1447	* sf-get3.cc (authorised): Change the types of 'len' and 'i' from
1448	int to size_type, because they are offsets into a list.  Add FIXME
1449	comment for use of atoi.
1450	* bodyio.cc (body_insert_binary): Change the type of 'len' from
1451	int to size_t, because it is a length.
1452
1453	Separate EOF detection from SCCS-line-type detection.
1454	* sccsfile.h (sccs_file::read_line): Change prototype to separate
1455	EOF detection from detection of what type of line we just read.
1456	* sccsfile.cc (read_line): Update the implementation to match.
1457	(read_delta): Update caller.
1458	(sccs_file): Update caller.
1459	* sf-delta.cc (add_delta): Update caller.
1460	* sf-get.cc (get): Update caller.
1461	* sf-prs.cc (print_delta): Update caller.
1462	* sf-rmdel.cc (rmdel): Update caller.
1463
1464	Avoid issuing warnings for things in system headers.
1465	* configure.ac: Disable warnigns for system headers.
1466
1467	Fix some commpiler warnings.
1468	* bodyio.h (decode_line): return size_t, not int, for a length.
1469	(encode_line): take a size_t parameter, not int, for a length.
1470	* encoding.cc (decode_line): Use a size_t value for offsets in the
1471	buffer.
1472	* bodyio.cc (body_insert_text): Add casts where we know
1473	conversions are safe to avoid compiler warnings.
1474	(copy_data): Mark as a static function.
1475
14762010-05-12  James Youngman  <jay@gnu.org>
1477
1478	Remove unused file list.cc.
1479	* Makefile.am (EXTRA_DIST): Remove list.cc, since it is unused.
1480	* list.cc: Delete.
1481
1482	Prune obsolete items in docs/TODO.
1483	* docs/TODO: Tests for sact and val exist.  Remove that TODO item.
1484
1485	Some TODO housekeeping.
1486	* sf-prs.cc (print_delta): Explain more clearly what get do for
1487	:BD: in prs if we fail to seek to the body.
1488	* sccsfile.h (s): Add TODO comment suggesting we use something
1489	more efficient than mylist<string> for authoried users.
1490	(sccs_file::admin): Likewise for set_flags and unset_flags
1491	parameters to this method.
1492
1493	Remove mylist_delta_list; use more appropriate types for
1494	loop/length variables.
1495	* delta-table.h (mylist_delta_list::build_seq_table): Use more
1496	appropriate (i.e. matching) types for loop variables.
1497	Get rid of mylist_delta_list and abstract_delta_list.
1498	* delta-table.cc (delta_at_seq_exists): There is no need for a
1499	const qualifier for a bool return type; remove it.
1500	(next_seqno): Just increment the result rather than adding an
1501	unsigned int, as this simplifies the type combination.
1502	* sf-get.cc (prepare_seqstate_1): Use size_type types for indexes and
1503	length variables.
1504
1505	Use mylist<T>::size_type instead of int.
1506	* mylist.h (mylist): Introduce size_type, and use it in method
1507	parameters.
1508	* rl-merge.cc (merge): Use mylist<release>::size_type.
1509
1510	Avoid a 'local variable shadows class member' warning.
1511	* delta-table.h (abstract_delta_list): Avoid having a local shadow
1512	an instance variable, by renaming the local.
1513
1514	Weed out some warning options that make sense for C but not C++.
1515	* configure.ac (UNWANTED_WARNINGS): remove a bunch of warning
1516	options that don't make sense for C++.
1517
1518	Remove rundundant call to AC_PROG_RANLIB.
1519	* configure.ac: Don't call AC_PROG_RANLIB since we're using libtool.
1520
1521	Make more uses of sccs_pfile const (now that iterating won't
1522	mutate it).
1523	* pfile.h (sccs_pfile::find_locked): Make const.
1524	(sccs_pfile::is_locked): Make const.
1525	(sccs_pfile::find_to_be_created): Make const.
1526	(sccs_pfile::is_to_be_created): Make const.
1527	(sccs_pfile::print_lock_sid): Make const.
1528	(sccs_pfile::update): Make const.
1529	* pfile.cc (sccs_pfile::find_locked): Make const.
1530	(find_to_be_created): Make const.
1531	(print_lock_sid): Make const.
1532	* pf-del.cc (sccs_pfile::update): Make const.
1533
1534	Make some references to sccs_pfile const now that iterating
1535	doesn't mutate.
1536	* sccsfile.h (sccs_file::find_next_sid): take a const reference to
1537	sccs_pfile, since iterating over a sccs_pfile no longer needs to
1538	mutate the container.
1539	(sccs_file::sid_in_use): Likewise.
1540	* sf-get2.cc (sid_in_use): Make the corresponding change in the
1541	implementation.
1542	(find_next_sid): Likewise.
1543
1544	Remove the built-in sccs_pfile iterator.  Use an STL iterator.
1545	* pfile.h (sccs_pfile::edit_locks): change type from
1546	mylist<edit_lock> to std::list<edit_lock> and remove the built-in
1547	iterator.
1548	(sccs_pfile::find_sid): Since there is no built-in iterator,
1549	return the position of the lock we found as the second half of a
1550	pair.
1551	* pf-del.cc (find_sid): Make the corresponding change to the
1552	implementation.
1553	(update): Use the STL iterator rather than sccs_pfile::pos.
1554	* delta.cc (delta_main): Update to the new signature of
1555	sccs_pfile::find_sid.
1556	* pfile.cc (sccs_pfile::sccs_pfile): Remove pos.
1557	(sccs_pfile): Use list::push_back() instead of mylist::add().
1558	(find_to_be_created): Rename from is_to_be_created.  Use the STL
1559	iterator.
1560	(find_locked): Rename from is_locked.  Use the STL iterator.
1561	(print_lock_sid): Since there is no built-in position, take a
1562	const_iterator as an argument.
1563	* pf-add.cc (add_lock): Use list::empty() instead of
1564	checking mylist::length() for zero-ness.
1565	(add_lock): Use list::push_back() instead of mylist::add().
1566	* rmdel.cc (is_locked): Use the STL iterator over sccs_pfile.
1567	* sact.cc (main): Likewise.
1568	* sccsfile.h (s): Now that iterating over the locks is not a
1569	mutating operation on sccs_pfile, sccsfile::test_locks can take a
1570	const reference to the sccs_pfile.
1571	(add_delta): Since there is no built-in iteration position in
1572	sccs_pfile, we also need to pass in an iterator.
1573	Also #include pfile.h for sccs_pfile::iterator.
1574
1575	* sf-delta.cc (add_delta): Make the correspondingn change to the
1576	implementation of sccs_file::add_delta.
1577	* sf-get2.cc (sid_in_use): Use an STL iterator.
1578	* unget.cc (main): Adapt to the new signature of
1579	sccs_pfile::find_sid.
1580
15812010-05-11  James Youngman  <jay@gnu.org>
1582
1583	Fix some compilation warnings for val.o.
1584	* sccsfile.h (subst_parms::subst_parms): Change the type of the
1585	'l' parameter to avoid type conversion in the constructor.
1586	* configure.ac (UNWANTED_WARNINGS): we don't want -Wnested-externs
1587	since that is only useful for Objective C, which we are not using.
1588	* release.h (release::operator unsigned long): Ass that the data is
1589	non-negative before casting it.  Include cssc-assert.h.
1590
15912010-05-09  James Youngman  <jay@gnu.org>
1592
1593	Update to the current version of the Google C++ Testing Framework.
1594	* bootstrap.conf (bootstrap_epilogue): Run autotools in
1595	./googletest once we're done bootstrapping in the top-level
1596	directory.
1597	* googletest/*: update to version 424 of the Google C++ Testing
1598	Framework.
1599
16002010-05-06  James Youngman  <jay@gnu.org>
1601
1602	Mention some recent changes.
1603	* NEWS: Mention some recent changes.
1604
1605	Various updates in docs/*
1606	* docs/patches.txt: Modernise the diff-preparation instructions
1607	(to ask people to use git).
1608	* docs/Platforms: Mention the recent versions of Debian we've
1609	tested on.  Change configure.in to configure.ac.  Indicate that
1610	CSSC is known to work with GCC 4.4.
1611	* docs/FIXED: Remove.
1612	* docs/Makefile.am (EXTRA_DIST): Don't distribute docs/FIXED.
1613	* auxfiles/CSSC.spec.in (%files): Remove docs/FIXED.
1614	* docs/borrowed-files.txt: Mention that bootstrap is taken from
1615	coreutils.  Mention that the GPL version is now 3.  Don't mention
1616	-unused/move-if-change, since we removed it.
1617
16182010-05-05  James Youngman  <jay@gnu.org>
1619
1620	Use the correct type in calls to release::release().
1621	* sccsfile.cc (sccs_file): release floor and ceiling should be
1622	initialised from shorts not ints.
1623	* sf-admin.cc (admin): Likewise.
1624
1625	Make "make"'s idea of the m4 macro directory consistent with "bootstrap"
1626	* Makefile.am (ACLOCAL_AMFLAGS): m4 files are in ./m4.  This is
1627	now consistent with what "bootstrap" thinks.
1628	* configure.ac: Likewise.
1629
1630	Fix a number of compiler warnings.
1631	* mylist.h (mylist): mylist::operator=() should return a reference
1632	to *this, so change it so that it does.
1633	(mylist): Make mylist::length() return a size_t rather than an int.
1634	* delta.h (delta::delta): List the initalisers in the order they
1635	are actually performed.
1636	* defaults.h (NORETURN): Don't define "NORETURN" to "volatile void".
1637	* configure.ac: Disable warnings about aggregate return types and
1638	missed inlined opportunities.
1639	* release.h (release::release(int)): Change parameter to a short
1640	int instead to avoid an implicit conversion.
1641	* relvbr.h (relvbr::relvbr): initialise from short ints, not
1642	regular ints, to avoid implicit casts.
1643	* sccsname.h (sccsname::valid): Avoid cast from size_t to int by
1644	changing the return type from int to bool.
1645
16462010-05-03  James Youngman  <jay@gnu.org>
1647
1648	Enable many compiler warnings.
1649	* bootstrap.conf (gnulib_modules): Add warnings and manywarnings.
1650	* Makefile.am: Add WARN_CFLAGS to AM_CXXFLAGS.
1651	* configure.ac: Enable all the warnings available from
1652	gl_MANYWARN_ALL_GCC, except -Wundef -Wpadded -Wredundant-decls.
1653
1654	Assume the availability of strerror.
1655	* configure.ac: Don't check header files for declarations of
1656	sys_nerr or sys_errlist, since we no longer need those.
1657
1658	* quit.cc (print_err): Assume strerror is available.
1659	Don't include sysnerr.h.
1660	* Makefile.am (noinst_HEADERS): Remove sysnerr.h.
1661	* sysnerr.h: Delete.
1662
1663	Don't declare rename, remove.  Include <cstdio> where we use it.
1664	* file.h: Avoid declaring rename and remove.
1665	* version.h: Include <cstdio>
1666	* prompt.cc: Likewise.
1667	* environment.cc: Likewise.
1668	* linebuf.cc: Likewise.
1669	* quit.cc: Likewise.
1670	* fileiter.cc: Likewise.
1671	* run.cc: Likewise.
1672	* showconfig.cc: Include <cstdio>.  Update copyright year.
1673
1674	Avoid #if defined(FOO), use #if defined FOO instead.
1675	* .x-sc_useless_cpp_parens: Exempt files in the Google C++ Testing
1676	Framework.
1677	Also exempt ekko.c, since it's better to preserve the similarity
1678	with the code it was originally taken from.
1679	* defaults.h: Avoid #if defined(FOO), use #if defined FOO
1680	instead.
1681	* cssc.h: Likewise.
1682	* file.cc: Likewise.
1683	* filelock.h: Likewise.
1684	* quit.cc: Likewise.
1685	* quit.h: Likewise.
1686	* run.cc: Likewise.
1687	* run.h: Likewise.
1688	* sccsfile.cc: Likewise.
1689	* sf-write.cc: Likewise.
1690	* sysdep.h: Likewise.
1691
1692	Exempt programs that don't use error() from using error().
1693	* .x-sc_unmarked_diagnostics: Exempt sccs.cgi and what.cc.
1694
1695	Skip sc_two_space_separator_in_usage for things that aren't code.
1696	* .x-sc_two_space_separator_in_usage: Don't check docs/Platforms,
1697	it's not a program.
1698
1699	Skip trailing-blank check, there are too many violations for now.
1700	* .x-sc_trailing_blank: Skip this test.
1701
1702	Correct "the the" to "the".
1703	* get.cc (main): correct "the the" to "the".
1704	* sf-prs.cc: Likewise.
1705	* docs/cssc.texi (@copying): Likewise.
1706	(Top): Likewise.
1707	(Delta Table): Likewise.
1708	(PROJECTDIR): Likewise.
1709	* .x-sc_the_the: Exempt googletest/src/gtest.cc.
1710
1711	Pacify the sc_makefile_TAB_only_indentation syntax check.
1712	* tests/Makefile.am: Replaced sequences of 8 spaces with a single
1713	TAB.
1714
1715	Remove obsolete replacements for missing library files.
1716	* strerror.c: Remove obsolete file.
1717	* strstr.c: Remove obsolete file.
1718	* configure.ac: Don't refer to strerror or strstr via
1719	AC_REPLACE_FUNCS.
1720
1721	Remove space-tab sequences.
1722	* .x-sc_space_tab: Exempt NEWS, ChangeLog files and
1723	tests/prt/all.expected.Z
1724	* docs/Platforms: Avoid space-tab sequences.
1725	* docs/TODO: Likewise.
1726	* docs/tests-todo.txt: Likewise.
1727	* pfile.h: Likewise.
1728	* sccsfile.cc: Likewise.
1729	* tests/Makefile.am: Likewise.
1730	* tests/common/test-common: Likewise.
1731	* tests/admin/flags.sh: Likewise.
1732	* tests/binary/auto.sh: Likewise.
1733	* tests/binary/binbasic.sh: Likewise.
1734	* unit-tests/test_bigfile.cc: Likewise.
1735	* unit-tests/test_myset.cc: Likewise.
1736	* tests/admin/locks.sh: Likewise.
1737	* tests/delta/nulldelta.sh: Likewise.
1738	* tests/delta/basic.sh: Likewise.
1739	* tests/delta/MRs.sh: Likewise.
1740
1741	Remove unused source files.
1742	* rename.c: Remove unused file.
1743	* remove.c: Remove unused file.
1744	* configure.ac: Don't refer to these files with AC_REPLACE_FUNCS.
1745
1746	Fix lint errors caused by failure to include <config.h>.
1747	* testutils/yes.c: Include <config.h> instead of "config.h".
1748	* testutils/ekko.c: Likewise.
1749	* testutils/lndir.c: Likewise.
1750	* testutils/seeker.c: Likewise.
1751	* testutils/user.c: Likewise.
1752	* testutils/uu_decode.c: Likewise.
1753	* testutils/yammer.c: Likewise.
1754	* testutils/last-time.c: Include <config.h>
1755	* rename.c: Likewise.
1756	* remove.c: Likewise.
1757
1758	Avoid non-portable [ x -a y ] test usage.
1759	* scripts/rev-freq.sh (scale): Change [ x -a y ] to [ x ] && [ y ].
1760	* tests/make-links (common_files): Likewise.
1761
1762	Exempt ourselves from SRTEQ for all C and C++ files.
1763	* .x-sc_prohibit_strcmp: We don't want to use STREQ, so suppress
1764	this warning for C and C++ files.
1765
1766	Ignore existing instances of magic contstants in calls to exit.
1767	* .x-sc_prohibit_magic_number_exit: Ignore existing instances of
1768	magic contstants in calls to exit.
1769
1770	Remove trailing blank lines.
1771	* tests/admin/Makefile.am: Remove trailing blank lines.
1772	* tests/admin/abspath.sh: Likewise.
1773	* tests/admin/flags.sh: Likewise.
1774	* tests/admin/hardlinks.sh: Likewise.
1775	* tests/admin/i-option.sh: Likewise.
1776	* tests/admin/init-mr.sh: Likewise.
1777	* tests/admin/locks.sh: Likewise.
1778	* tests/admin/r-option.sh: Likewise.
1779	* tests/admin/t-option.sh: Likewise.
1780	* tests/admin/users.sh: Likewise.
1781	* tests/admin/y-flag.sh: Likewise.
1782	* tests/binary/auto.sh: Likewise.
1783	* tests/binary/binbasic.sh: Likewise.
1784	* tests/binary/diff.sh: Likewise.
1785	* tests/bsd-sccs/driver-basic.sh: Likewise.
1786	* tests/cdc/1general.sh: Likewise.
1787	* tests/cdc/2comment.sh: Likewise.
1788	* tests/cdc/3MRs.sh: Likewise.
1789	* tests/cdc/4order.sh: Likewise.
1790	* tests/common/not-root: Likewise.
1791	* tests/delta/MRs.sh: Likewise.
1792	* tests/delta/Makefile.am: Likewise.
1793	* tests/delta/basic.sh: Likewise.
1794	* tests/delta/errorcase.sh: Likewise.
1795	* tests/delta/nulldelta.sh: Likewise.
1796	* tests/delta/options.sh: Likewise.
1797	* tests/get/branch.sh: Likewise.
1798	* tests/get/create.sh: Likewise.
1799	* tests/get/defsid.sh: Likewise.
1800	* tests/get/errorcases.sh: Likewise.
1801	* tests/get/gg_get_ix.sh: Likewise.
1802	* tests/get/optorder.sh: Likewise.
1803	* tests/get/writable.sh: Likewise.
1804	* tests/initial/root.sh: Likewise.
1805	* tests/large/admin.sh: Likewise.
1806	* tests/make-links: Likewise.
1807	* tests/prs/Makefile.am: Likewise.
1808	* tests/prs/s_foo_bd_output.txt: Likewise.
1809	* tests/prt/TODO: Likewise.
1810	* tests/prt/all-512.sh: Likewise.
1811	* tests/prt/reportmr.sh: Likewise.
1812	* tests/rmdel/basic.sh: Likewise.
1813	* tests/rmdel/edit.sh: Likewise.
1814	* tests/sccsdiff/rap.sh: Likewise.
1815	* tests/unget/Makefile.am: Likewise.
1816	* tests/unget/exists.sh: Likewise.
1817	* tests/unget/output.sh: Likewise.
1818	* tests/val/Makefile.am: Likewise.
1819	* tests/what/Makefile.am: Likewise.
1820	* testutils/compare_gets.sh: Likewise.
1821	* testutils/last-time.c: Likewise.
1822	* testutils/lndir.c: Likewise.
1823	* testutils/realpwd.cc: Likewise.
1824	* testutils/user.c: Likewise.
1825	* testutils/uu_decode.c: Likewise.
1826	* testutils/yes.c: Likewise.
1827	* unit-tests/test_delta-table.cc: Likewise.
1828	* unit-tests/test_encoding2.cc: Likewise.
1829	* unit-tests/test_mylist.cc: Likewise.
1830	* unit-tests/test_sccsdate.cc: Likewise.
1831	* unit-tests/test_sid_list.cc: Likewise.
1832	* version.cc.in: Likewise.
1833	* version.h: Likewise.
1834	* AUTHORS: Likewise.
1835	* sid_list.h: Likewise.
1836	* tests/README: Likewise.
1837	* sid.h: Likewise.
1838	* seqstate.h: Likewise.
1839	* sccsdiff.sh.in: Likewise.
1840	* remove.c: Likewise.
1841	* bsd/sccs.c: Likewise.
1842	* bsd/Makefile.bsd: Likewise.
1843	* delta.cc: Likewise.
1844	* rel_list.h: Likewise.
1845	* release.h: Likewise.
1846	* docs/style.txt: Likewise.
1847	* docs/config-info.texi.in: Likewise.
1848	* docs/URLs: Likewise.
1849	* docs/Platforms: Likewise.
1850	* .x-sc_prohibit_empty_lines_at_EOF: Ignore trailing blank lines
1851	at EOF for files in the Google C++ Testing Framework.
1852
1853	Add temporary exceptions for atoi checks.
1854	* .x-sc_prohibit_atoi_atof: Temporary exemption for files where we
1855	still use atoi() and so on.  Ignore atoi in ChangeLog.
1856
1857	Don't configure separately in testutils.
1858	* testutils/ekko.c: Include "config.h", don't use include guards.
1859	* testutils/lndir.c: Include "config.h", don't use include guards.
1860	(dodir): Don't use NAMLEN (since the replacement dirent.h does not
1861	define it).
1862	* testutils/seeker.c: Remove useless HAVE_FOO_H checks.  Assume
1863	fseek is available (gnulib provides it).
1864	* testutils/user.c: Remove useless HAVE_FOO_H checks.
1865	* testutils/uu_decode.c: Remove useless HAVE_FOO_H checks.
1866	* testutils/yammer.c: Likewise.
1867	* testutils/yes.c: Likewise.
1868	* testutils/realpwd.cc: Likewise.
1869	* gl/lib/.gitignore: Ignore fseek.c, fseeko.c, lseek.c, stdio-impl.h.
1870	* testutils/configure.ac: Delete.
1871	* testutils/NEWS: Delete.
1872	* testutils/AUTHORS: Delete.
1873	* testutils/COPYING: Delete.
1874	* testutils/ChangeLog: Delete.
1875	* testutils/INSTALL: Delete.
1876	* configure.ac: Don't run configure in ./testutils.
1877	AC_CONFIG_FILES: generate testutils/Makefile.
1878	* bootstrap.conf (gnulib_modules): Use the fseek module.
1879	* testutils/Makefile.am: Search for headers and libraries in ../gl/lib.
1880
18812010-05-02  James Youngman  <jay@gnu.org>
1882
1883	Remove redundant inclusion guards for unistd.h and string.h.
1884	* configure.ac: When deciding whether or not _POSIX_SAVED_IDS is
1885	defined, include unistd.h unconditionally, since if the inclusion
1886	fails, the answer will still be no.
1887	* cssc.h: Don't use ifdef HAVE_UNISTD_H.  Since we're using
1888	gnulib's unistd.h module, we will be able to include <unistd.h>
1889	unconditionally.
1890	* rename.c: Likewise.
1891	* remove.c: Likewise.
1892	* strstr.c: Likewise for HAVE_STRING_H and <string.h>, since the
1893	latter is provided by gnulib's string module.
1894
1895	Disable some spurious errors about failure to call set_program_name.
1896	* .x-sc_program_name: Don't require the test tools to call
1897	set_program_name, since they don't link with gnulib.
1898
1899	Use the gnulib module progname.
1900	* bsd/sccs.c: Include progname.h.
1901	Remove unused variable MyName.
1902	(show_version): Use program_name not MyName.
1903	(usage): Likewise.
1904	(callprog): Likewise.
1905	(usrerr): Likewise.
1906	(syserr): Likewise.
1907	(main): Call set_program_name.
1908
1909	* bsd/Makefile.am: Link against gnulib.
1910	* bootstrap.conf (gnulib_name): Give the gnulib library a sensible
1911	name (instead of lib.a).
1912	(gnulib_modules): Import the progname module.
1913	* gl/lib/.gitignore: Ignore files from the progname module.
1914
1915	Use $(FOO) in Makefile.am rather than @FOO@.
1916	* tests/Makefile.am: Automake defines $(VALGRIND) from @VALGRIND@
1917	automatically anyway.
1918	* cfg.mk (_makefile_at_at_check_exceptions): Exempt a couple of
1919	usages by the Google C++ Testing Framework.
1920	* Makefile.am: Use $(LIBOBJS) instead of @LIBOBJS@.
1921	* unit-tests/Makefile.am (AM_LIBS): Likewise for $(PTHREAD_LIBS).
1922	(AM_CXXFLAGS): Likewise for  $(PTHREAD_CFLAGS).
1923
1924	Silence an error about m4 quoting in the Google C++ Testing Framework.
1925	* .x-sc_m4_quote_check: Silence error message about insufficient
1926	quoting in googletest/m4/acx_pthread.m4.  We do this rather than
1927	fixing the quoting in order to avoid subsequent merge problems and
1928	spurious diffs.
1929
1930	Silence a spurious error about changing old NEWS entries.
1931	* cfg.mk (old_NEWS_hash): Set old_NEWS_hash to the md5sum of a
1932	zero-length input in order to silence a spurious error about
1933	changing old NEWS entries.
1934
1935	Standardise on the use of "file system" rather than "filesystem".
1936	* docs/cssc.texi (Filenames): Spell "filesystem" as "file system",
1937	following the example of the POSIX standard.
1938	* docs/Platforms: Likewise.
1939	* file.cc (atomic_nfs_create): Likewise.
1940	* tests/admin/hardlinks.sh: Likewise.
1941	* tests/admin/.x-sc_file_system: Exempt the Google Unit Test code
1942	from this requirement, since that will make later updates hard to
1943	merge.
1944	Also exempt ChangeLog files.
1945
1946	Ignore some maintainer-makefile lint complaints I don't plan to fix.
1947	* .x-sc_error_message_period: Avoid syntax-check errors for error
1948	messages ending in a full stop.  Some error messages contain more
1949	than one sentence.
1950	* .x-sc_error_message_uppercase: Avoid syntax-check errors for
1951	error messages starting with a capital letter.
1952
1953	Fix a maintainer-makefile if-before-free lint issue.
1954	* bsd/sccs.c (set_prefix): Remove useless if-before-free.
1955
1956	Adopt the use of the gnulib maintainer-makefile module.
1957	(gnulib_modules): Add maintainer-makefile.
1958
1959	Update to GNU Free Documentation License, Version 1.3 (from 1.2).
1960	* docs/cssc.texi (@copying): Update from FDL 1.2 to FDL 1.3.
1961	* bootstrap.conf (gnulib_modules): Import module fdl.
1962
1963	* docs/fdl.texi: Symlink to ../gl/doc/fdl.texi.
1964	* NEWS: Mention this change.
1965
1966	Don't create a spurious directory.
1967	* bootstrap.conf (local_gl_dir): Don't create {m4_base}.  Create
1968	${m4_base} instead.
1969
1970	Remove obsolete file gnulib-tests/.gitignore.
1971	* gnulib-tests/.gitignore: Remove.
1972
1973	Clean up core files in the unit test directory.
1974	* unit-tests/Makefile.am (COREFILES): Clean up "vgcore.*" files
1975	for distclean.
1976	* unit-tests/testwrapper.sh.in: Clean up core files once the test
1977	is complete, unless the core file signals a valgrind failure.
1978	Also inhibit core file generation int he first place (though this
1979	probably won't work for valgrind).
1980
19812010-05-01  James Youngman  <jay@gnu.org>
1982
1983	Put the gnulib code, etc. into ./gl
1984	* bootstrap.conf (doc_base): Override doc_base, m4_base,
1985	source_base, tests_base, local_gl_dir.
1986	(gnulib_mk): Use Makefile.am, not gnulib.mk.
1987	(gnulib_tool_option_extras): Tests are in gl/tests.
1988	(bootstrap_epilogue): Use gl/tests/Makefile.am, not gnulib-tests/gnulib.mk.
1989
1990	* configure.ac (SUBDIRS): Rename the gnulib source directory from
1991	lib to gl/lib.
1992	(AC_CONFIG_FILES): generate gl/Makefile gl/lib/Makefile
1993	gl/doc/Makefile gl/tests/Makefile.
1994	* Makefile.am (AM_CPPFLAGS): Pass -I gl/lib.
1995	* bsd/Makefile.am (AM_CPPFLAGS): Pass -I ../gl/lib.
1996
1997	Adopt the use of the first gnulib module: dirent.
1998	* gnulib-tests/.gitignore: Ignore gnulib test files (since they're
1999	imported rather than checked into git).
2000	* lib/.gitignore: Ignore gnulib source files (for the same reason).
2001	* configure.ac (AC_CONFIG_FILES): generate lib/Makefile.a
2002	* Makefile.am (SUBDIRS): Add "lib", which is where the gnulib code is.
2003
2004	* bsd/sccs.c: Remove HAVE_XXX_H header guards.
2005	Include dirent-safer.h.  Remove the hand-hacked dirent portability
2006	macros (and remove NAMLEN as a side-effect).
2007	(do_clean): Don't assume the NAMLEN macro is defined.
2008	* file.cc: Include dirent-safer.h.  Remove the hand-hacked dirent
2009	portability macros (and remove NAMLEN as a side-effect).
2010	(is_directory): Move this function here from fileiter.cc.
2011	* fileiter.cc: Include dirent-safer.h.  Remove the hand-hacked
2012	dirent portability macros (and remove NAMLEN as a side-effect).
2013
2014	Show the value of $(VALGRIND) at the start of regression testing.
2015	* tests/Makefile.am (test-initial): echo $(VALGRIND).
2016
2017	Add unit test verifying that we don't read uninitialised data in encode.
2018	* unit-tests/test_encoding2.cc: New unit test file.  Verifies that
2019	we don't read uninitialised data when we reach the end of the
2020	encoding input.
2021	* unit-tests/Makefile.am (unit_tests): Add test_encoding2.
2022
2023	Avoid reading uninitialised input.
2024	* encoding.cc (encode_line): Encode the tail of the input without
2025	running over the end of in[].
2026
2027	Handling of directories in get is mandatory in POSIX, so remove CONFIG_NO_DIRECTORY.
2028	* fileiter.cc: don't define CONFIG_NO_DIRECTORY
2029	(sccs_file_iterator::sccs_file_iterator): don't check CONFIG_NO_DIRECTORY
2030	* fileiter.h (class sccs_file_iterator): Likewise.
2031	* file.cc: don't define CONFIG_NO_DIRECTORY
2032
20332010-04-29  James Youngman  <jay@gnu.org>
2034
2035	Delete unused file split.cc.
2036	* split.cc: Delete unused file.
2037	* Makefile.am (libcssc_a_SOURCES): Remove split.cc.
2038
2039	Removed some unused code.
2040	* delta.cc (delta_main): Removed some unused '#if 0' code.
2041	* sf-write.cc (update_checksum): Likewise.
2042	* my-getopt.cc (reorder): Likewise.
2043	* file.cc (file_lock): Likewise.
2044	* sccsname.cc (valid_filename): Likewise.
2045	(create): Likewise.
2046	(sub_file): Likewise.
2047	(make_valid): Likewise.
2048	* seqstate.cc (decide_disposition): Likewise.
2049	* sf-get3.cc (authorised): Likewise.
2050	* sid.cc (invalid_range): Likewise.
2051	* what.cc (main): Likewise.
2052
20532010-04-28  James Youngman  <jay@gnu.org>
2054
2055	Use STL to implement mylist<T>.
2056	* mylist.h (mylist): Implement mylist<T> as std::vector<T>.
2057	* delta-table.h (mylist<T>::select(i)): delegate to l[i].
2058	* unit-tests/test_mylist.cc: Drop the requirement that the
2059	mylist<T> implementation does not need there to be a T::T(const
2060	T&) copy constructor.
2061	* mylist.h (mylist): Implement mylist<T>::operator==(const
2062	mylist<T>&) const, which the unit tests need.
2063
2064	Inline delta::removed(), for a small performance boost.
2065	* delta.h (class delta): Inline delta::removed().
2066	* sccs-delta.cc: Remove the non-inline version.
2067
2068	Call strtoul to do the actual conversion, for a small performance boost.
2069	* sccsfile.cc (strict_atoul_idu): Call strtoul to perform the
2070	conversion itself.
2071
2072	Generate a larger test file.
2073	* unit-tests/test_bigfile.cc (main): Increase the number of deltas
2074	in the produced file to about 30,000.
2075
2076	Switch to using an STL data structure to represent the delta list.
2077	* delta-table.h (stl_delta_list): Reimplement delta_list using
2078	STL, reducing the time it takes to validate an SCCS file with
2079	30,000 deltas from 45s to 3s.   Separate the cssc_delta_table
2080	class from the data structure (a typedef delta_list) for looser
2081	coupling.  Retain the old data structure in the unused class
2082	mylist_delta_list.
2083	* delta-table.cc (delta_at_seq_exists): Delegate to the
2084	delta_list.
2085	(delta_at_seq): Likewise.
2086	(cssc_delta_table::~cssc_delta_table()): Since we no longer have a
2087	pointer member, the destructor no longer needs to do anything.
2088	(cssc_delta_table::build_seq_table): Push down into
2089	mylist_delta_list.
2090	(cssc_delta_table::add(const delta&)): Don't call update_highest
2091	since this work is done in delta_list::add(const delta&).
2092	(cssc_delta_table::update_highest): Remove obsolete function.
2093	* dtbl-prepend.cc (prepend): Don't call obsolete method
2094	update_highest, and use the correct (updated) type for the class
2095	member l (delta_list).
2096
2097	Performance improvement for val.
2098	* sf-val.cc (check_loop_free): Use an O(N) method of
2099	consistency-checking the delta graph, rather than the old O(N^2)
2100	method.
2101	* delta.h (class delta): Make accessor functions id(), date(),
2102	user(), seq() and prev_seq() inline.
2103
21042010-04-27  James Youngman  <jay@gnu.org>
2105
2106	Avoid touching missing sequence numbers in 'get'.
2107	* sf-get2.cc (get): Don't call delta_table->delta_at_seq() for
2108	sequence numbers for which delta_table->delta_at_seq_exists()
2109	returns false.
2110
2111	When generating the test output file, set the checksum correctly.
2112	* unit-tests/test_bigfile.cc: Set the file's checksum correctly.
2113
21142010-04-26  James Youngman  <jay@gnu.org>
2115
2116	Add a tool for creating (large) SCCS files.
2117	* unit-tests/Makefile.am: Build test_bigfile.
2118	* unit-tests/test_bigfile.cc: New test program; produces a large
2119	SCCS file.
2120	* sid.h (class sid): Make sid::sid(short,short,short,short)
2121	public, so that we can use it from one of the test programs.
2122
21232010-04-25  James Youngman  <jay@gnu.org>
2124
2125	Allow the user to disable valgrind after running configure.
2126	* README (--enable-max-line-length): Document this configure
2127	option.  Explain how to make the other formats of manual (PDF,
2128	HTML).  Explain how to use CSSC_DISABLE_VALGRIND.
2129	* unit-tests/Makefile.am (TESTS_ENVIRONMENT): Invoke the unit
2130	tests via 'testwrapper.sh'.
2131	* unit-tests/testwrapper.sh.in: New file; used to invoke the unit
2132	tests.
2133	Make sure error tests don't pass if there is a valgrind problem;
2134	allow the user to disable valgrind.
2135	* tests/common/command-names: Allow the user to disable Valgrind
2136	by setting the environment variable CSSC_DISABLE_VALGRIND.
2137	* configure.ac: Make valgrind exit with status 10 when there is a
2138	problem, so tests which exercise failure cases in CSSC don't
2139	mistakenly pass when there is a valgrind problem.  Create
2140	unit-tests/testwrapper.sh from unit-tests/testwrapper.sh.in.
2141
2142	Enable the y2k tests.
2143	* tests/Makefile.am (test-year-2000): Actually run the y2k tests.
2144
2145	Use valgrind for y2k tests.
2146	* tests/year-2000/ext.sh: Use valgrind.
2147	* tests/year-2000/prs-y2k.sh: Likewise.
2148
2149	Use valgrind for what tests.
2150	* tests/what/whatbasic.sh: Use valgrind.
2151
2152	Use valgrind for val tests.
2153	* tests/val/valbasic.sh: Use valgrind.
2154	* tests/val/y2k.sh: Likewise.
2155
2156	Use valgrind for unget tests.
2157	* tests/unget/exists.sh: Use valgrind.
2158	* tests/unget/output.sh: Likewise.
2159
2160	Use valgrind for sact tests.
2161	* tests/sact/sactbasic.sh: Use valgrind.
2162	* tests/sact/sf513800.sh: Likewise.
2163
2164	Use valgrind for rmdel tests.
2165	* tests/rmdel/basic.sh: Use valgrind.
2166	* tests/rmdel/exists.sh: Likewise.
2167	* tests/rmdel/edit.sh: Likewise.
2168
2169	Use valgrind for prt tests.
2170	* tests/prt/default.sh: Use valgrind.
2171	* tests/prt/nodel.sh: Likewise.
2172	* tests/prt/exists.sh: Likewise.
2173	* tests/prt/reportmr.sh: Likewise.n
2174
2175	Use valgrind for prs tests.
2176	* tests/prs/keywords.sh: Use valgrind.
2177	* tests/prs/format.sh: Likewise.
2178	* tests/prs/exists.sh: Likewise.
2179	* tests/prs/body.sh: Likewise.
2180
2181	Use valgrind for large tests.
2182	* tests/large/admin.sh: Use valgrind.
2183
2184	Use valgrind for get tests.
2185	* tests/get/annotate.sh: Use valgrind.
2186	* tests/get/a-option.sh: Likewise.
2187	* tests/get/branch.sh: Likewise.
2188	* tests/get/create.sh: Likewise.
2189	* tests/get/defsid.sh: Likewise.
2190	* tests/get/delta-summary.sh: Likewise.
2191	* tests/get/errorcases.sh: Likewise.
2192	* tests/get/excl_ig_1.sh: Likewise.
2193	* tests/get/excl_ig_2.sh: Likewise.
2194	* tests/get/gg_get_ix.sh: Likewise.
2195	* tests/get/included.sh: Likewise.
2196	* tests/get/middle-fail.sh: Likewise.
2197	* tests/get/no-sfile.sh: Likewise.
2198	* tests/get/only-one.sh: Likewise.
2199	* tests/get/optorder.sh: Likewise.
2200	* tests/get/removed-delta.sh: Likewise.
2201	* tests/get/sep_subst.sh: Likewise.
2202	* tests/get/sf111140.sh: Likewise.
2203	* tests/get/sf479916.sh: Likewise.
2204	* tests/get/sf664900.sh: Likewise.
2205	* tests/get/sf865422.sh: Likewise.
2206	* tests/get/sid-select.sh: Likewise.
2207	* tests/get/sid-select2.sh: Likewise.
2208	* tests/get/subst.sh: Likewise.
2209	* tests/get/t-option.sh: Likewise.
2210
2211	Use valgrind for delta tests.
2212	* tests/delta/basic.sh: Use valgrind.
2213	* tests/delta/errorcase.sh: Likewise.
2214	* tests/delta/n-option.sh: Likewise.
2215	* tests/delta/options.sh: Likewise.
2216	* tests/delta/nulldelta.sh: Likewise
2217
2218	Use valgrind for binary file tests, sccs tests and cdc tests.
2219	* tests/binary/auto.sh: Use valgrind.
2220	* tests/binary/binbasic.sh: Likewise.
2221	* tests/binary/eightbit.sh: Likewise.
2222	* tests/binary/seeking.sh: Likewise.
2223	* tests/bsd-sccs/sf595594.sh: Likewise.
2224	* tests/bsd-sccs/driver-basic.sh: Likewise.
2225	* tests/bsd-sccs/delsfile.sh: Likewise.
2226	* tests/cdc/1general.sh: Use valgrind.
2227	* tests/cdc/2comment.sh: Likewise.
2228	* tests/cdc/3MRs.sh: Likewise.
2229	* tests/cdc/4order.sh: Likewise.
2230
2231	Support running the regression tests under valgrind.
2232	* configure.ac: Allow the user to specify --without-valgrind.
2233	* tests/admin/admin-hz.sh: Use valgrind.
2234	* tests/admin/abspath.sh: Likewise.
2235	* tests/admin/comment.sh: Likewise.
2236	* tests/admin/flags.sh: Likewise.
2237	* tests/admin/hardlinks.sh: Likewise.
2238	* tests/admin/i-option.sh: Likewise.
2239	* tests/admin/init-mr.sh: Likewise.
2240	* tests/admin/locks.sh: Likewise.
2241	* tests/admin/r-option.sh: Likewise.
2242	* tests/admin/t-option.sh: Likewise.
2243	* tests/admin/users.sh: Likewise.
2244	* tests/admin/y-flag.sh: Likewise.
2245	* tests/common/command-names: Define vg_... versions of $admin,
2246	$get, etc.  These invoke the named command under valgrind (it
2247	would be too slow to invoke everything under valgrind).
2248	* tests/Makefile.am (VALGRIND): substitute this variable and
2249	export it to the tests.
2250
2251	Run the unit tests under valgrind.
2252	* configure.ac: Check for the presence of valgrind.  If we find
2253	it, use valgrind -q --trace-children=yes.
2254
2255	* unit-tests/Makefile.am (TESTS_ENVIRONMENT): Run the tests under
2256	valgrind.
2257	* tests/README: Explain that these are regression tests and point
2258	to the unit tests.
2259
2260	Remove explicit template instantiations.
2261	* admin.cc: Remove explicit template instantiations.
2262	* cap.cc: Likewise.
2263	* cdc.cc: Likewise.
2264	* delta.cc: Likewise.
2265	* dtbl-prepend.cc: Likewise.
2266	* fileiter.cc: Likewise.
2267	* get.cc: Likewise.
2268	* prs.cc: Likewise.
2269	* prt.cc: Likewise.
2270	* rel_list.cc: Likewise.
2271	* rmdel.cc: Likewise.
2272	* sact.cc: Likewise.
2273	* sccs-delta.cc: Likewise.
2274	* sccsfile.cc: Likewise.
2275	* sf-prs.cc: Likewise.
2276	* unget.cc: Likewise.
2277	* val.cc: Likewise.
2278	* filediff.cc: Trimmed some blank lines.
2279	* sf-kw.cc: Likewise.
2280
2281	Isolate directory-handling logic in fileiter.cc.
2282	* fileiter.cc: Move the complex logic around trying to include
2283	<dirent.h> out of fileiter.h and into fileiter.cc.
2284	* fileiter.h: Make the corresponding deletion and remove the
2285	#error trap which demanded that <cofnig.h> had been included.
2286	* delta.cc: Remove the now-obsolete explanatory comment.
2287	* file.cc: Move is_directory into fileiter.cc, since it also needs
2288	opendir.
2289
2290	Produce a compile failiure when config.h was not included before
2291	fileiter.h.  Doing things the other way around produces a
2292	regression test failure.
2293	* fileiter.h: Force a compilation failure if config.h was not included.
2294	* delta.cc: Include config.h before fileiter.h.
2295
2296	Remove some obsolete preprocessor macros.
2297	* cssc.h (CONFIG_WAIT_IS_A_USELESS_MACRO): Remove obsolete macro.
2298	* sysdep.h: Assume wait is declared in sys/wait.h.
2299	* cssc.h (CONFIG_DJGPP): Remove obsolete macro.
2300
2301	Remove some obsolete manual declarations of functions.
2302	* file.cc: Don't manually declare stat.  Likewise for getpwuid.
2303	* cssc.h: Don't undefine the TESTING macro; nobody defines it
2304	either.  Don't undefine CONFIG_DECLARE_STAT,
2305	CONFIG_DECLARE_GETPWUID, CONFIG_DECLARE_TIMEZONE,
2306	CONFIG_DECLARE_TZSET,
2307
2308
2309	* sysdep.h: Don't manually declare fdopen.
2310
2311	Include cssc headers where they are needed, not in cssc.h.
2312	* my-getopt.cc: Include quit.h but not cssc.h.
2313	* linebuf.cc: Include ioerr.h.
2314	* writesubst.cc: Likewise.
2315	* sccsfile.cc: Likewise.
2316	* sf-add.cc: Likewise.
2317	* sid.cc: Likewise.
2318	* fileiter.cc: Include file.h and quit.h.
2319	* file.cc: Include quit.h and ioerr.h.
2320	* sccsdate.h: Likewise.
2321	* sf-write.cc: Likewise.
2322	* rel_list.cc: Likewise.
2323	* cdc.cc: Include file.h.
2324	* sf-csc.cc: Likewise.
2325	* sccsname.cc: Likewise.
2326	* sf-get3.cc: Likewise.
2327	* sf-delta.cc: Likewise.
2328	* val.cc: Likewise.
2329	* unget.cc: Likewise.
2330	* rmdel.cc: Likewise.
2331	* delta.cc: Likewise.
2332	* filediff.cc: Likewise.
2333	* pf-add.cc: Likewise.
2334	* pf-del.cc: Likewise.
2335	* sf-admin.cc: Likewise.
2336	* prompt.cc: Likewise.
2337	* fdclosed.cc: Include defaults.h.
2338	* run.cc: Include quit.h
2339
23402010-04-24  James Youngman  <jay@gnu.org>
2341
2342	Include system headers where they are needed, not in cssc.h.
2343	* except.h: Add a multiple-include guard.  #include <cstdlib>.
2344	* environment.cc: #include <cstdlib>, <cstring>, <cerrno>
2345	* bodyio.cc: #include <cstring>, ioerr.h, file.h.
2346	* fileiter.cc: Likewise.
2347	* linebuf.cc: Likewise.
2348	* prompt.cc: Likewise.
2349	* sccsdate.cc: Likewise.
2350	* fatalsig.cc: #include <cstdlib>
2351	* filepos.h: #include <cerrno>.
2352	* quit.cc: #include <cerrno> instead of <errno.h>.  Include
2353	<cstring> also.
2354	* cssc.h: Don't include standard headers: stdio.h, stdlib.h,
2355	stddef.h, string.h, ctype.h, errno.h.
2356	Unconditionally include <config.h>.
2357	Don't include quit.h or file.h.
2358
2359	Further include-what-you-use fixes.
2360	* delta.cc: Include cleanup.h, and ioerr.h.  Include delta.h earlier.
2361
2362	Run the uu(en|de)coding self-test as part of the unit tests.
2363	* bodyio.h: Move a couple of inline functions to here (out of
2364	encoding.cc) so that I can use them in the self-test.
2365	* encoding.cc: Make the corresponding deletion.  Move the test
2366	code itself into test_encodingcc.
2367	* unit-tests/test_encoding.cc: Moved the encoding self-test to
2368	here instead of leaving it in encding.c, where it was not used.
2369	* unit-tests/Makefile.am (check_PROGRAMS): Add test_encoding.
2370	Also define test_encoding_SOURCES.  Modify the usage semantics of
2371	the test program so that the default is to run the self-test.
2372
2373	Avoid redundant inclusion of cssc.h, sccsfile.h, delta.h.
2374	* dtbl-prepend.cc: Don't include cssc.h or sccsfile.h, since we
2375	don't use them.
2376	* delta-table.cc: Avoid including cssc.h, sccsfile.h, delta.h
2377	since we don't use them.
2378
2379	Various include-what-you-use fixes.
2380	* delta-iterator.cc: Don't include cssc.h, sccsfile.h or delta.h,
2381	since we don't use them.  Do include cssc-assert.h, since we do
2382	use that.
2383	* delta-iterator.h: add forward declarations of cssc_delta_table
2384	and delta.
2385	* bodyio.cc: Include what you use; include bodyio.h first.
2386	* bodyio.h: Include <cstdio>.
2387	* canonify.cc: Don't include cssc.h.  Include sccsname.h first.
2388	Include file.h.
2389	* cleanup.h: Move class cleanup into this separate file (out of quit.h).
2390	* quit.h: Don't declare class cleanup (we moved it).
2391	* filelock.h: Include cleanup.h.
2392	* sccsname.h: Include mystring.h and filelock.h.
2393	* cssc.h: Move declaration of split_filename into file.h.
2394	* file.h: Declare split_filename.
2395	* pfile.h: Include ioerr.h.
2396
2397	Include what you use; include sid_list.h first.
2398	* unit-tests/test_sid_list.cc: Include only what we use; don't
2399	include cssc.h or sid.h.
2400
2401	Include what you use; make it possible to include quit.h first or
2402	sccsdate.h first.
2403	* sccsdate.h: Include <cstdio> and mystring.h.
2404	* quit.h: Include cssc-assert.h (for ASSERT).
2405	* unit-tests/test_sccsdate.cc: Include sccsdate.h first.
2406
2407	Include what you use; make it possible to use class relvbr by
2408	including only relvbr.h.
2409	* unit-tests/test_relvbr.cc: Include relvbr.h first, don't include
2410	release.h or sid.h.
2411	* relvbr.h: Include <cstdio>.
2412
2413	Include what you use; make it possible to use class release by
2414	including only release.h and release_list by including only
2415	rel_list.h.
2416	* release.h: Include <cstdio>.
2417	* unit-tests/test_release.cc: Don't include cssc.h.
2418	* unit-tests/test_rel_list.cc: Likewise for rel_list.h.
2419
2420	Include what you use; include delta-table.h first in the unit test.
2421	* unit-tests/test_delta-table.cc: Include delta-table.h first.
2422
2423	Include what you use; make it possible to use delta by
2424	including only delta.h.
2425	* delta.h: Include sid.h, sccsdate.h, mystring.h, mylist.h.
2426	Move typedef of seq_no to here from cssc.h
2427	* cssc.h: Move typesef of seq_no from here to delta.h.
2428	* sccsfile.h: Include delta.h.
2429	* seqstate.h: Likewise.
2430	* unit-tests/test_delta.cc: Include delta.h first.  Don't include cssc.h.
2431
2432	Include what you use; make it possible to use range_list<T> by
2433	including only sid_list.h.
2434	* unit-tests/test_sid.cc: Include sid.h first.   Don't include cssc.h.
2435	* sid_list.h: Include cstdio, cstring, and qui.t.h (for ctor_fail).
2436	* sid.h: Include mystring.h.
2437
2438	Include what you use; make it possible to use stack<T> by
2439	including only stack.h.
2440	* unit-tests/test_stack.cc: Include what you use: include
2441	"stack.h" but not "cssc.h".
2442
2443	Include what you use; make it possible to use myset<T> by
2444	including only myset.h.
2445	* unit-tests/test_myset.cc: Include myset.h first.
2446	* myset.h: Include mylist.h since we use mylist<T>.
2447
2448	Include what you use; make it possible to use mylist<> by
2449	including only mylist.h.
2450	* cssc-assert.h: New file; defines the ASSERT macro.
2451	* quit.h: Delete old definition of ASSERT and declaration of
2452	assert_failed.
2453	* mylist.h: Include cssc-assert.h to define ASSERT, and
2454	<cstdlib> for NULL.
2455	* unit-tests/test_mylist.cc: Don't include "cssc.h" any more.
2456	* quit.cc: Include cssc-assert.h for ASSERT and declaration of assert_failed.
2457	* fatalsig.cc: Include cssc-assert.h since we use ASSERT.
2458	* file.cc: Likewise.
2459	* filediff.cc: Likewise.
2460	* fnsplit.cc: Likewise.
2461	* linebuf.cc: Likewise.
2462	* sccsdate.cc: Likewise.
2463	* sccsname.cc: Likewise.
2464	* sid.h: Likewise.
2465	* stack.h: Likewise.
2466
2467	Move CONFIG_LIST_CHUNK_SIZE from cssc.h to mylist.h.
2468	* cssc.h (CONFIG_LIST_CHUNK_SIZE): Move into mylist.h.
2469	* mylist.h (mylist): Relocate CONFIG_LIST_CHUNK_SIZE here from
2470	cssc.h, but convert it to an enum.
2471
2472	Add/correct some comments.
2473	* delta-table.cc: Correct the comment giving the location of
2474	dtbl-prepend.cc.
2475	* delta-table.h (class cssc_delta_table): Add a comment explaining
2476	why cssc_delta_table::delta_at_seq_exists and
2477	cssc_delta_table::delta_at_seq are not const.
2478
2479	Add unit tests for delta-table.h.
2480	* unit-tests/test_delta-table.cc: New file, contains unit tests
2481	for delta-table.h.
2482	* unit-tests/Makefile.am (test_delta_table_SOURCES): New
2483	variable.
2484	(check_PROGRAMS): Add test_delta-table.
2485	* unit-tests/TODO.txt: Remove delta-table.h; there are tests for
2486	it now.
2487
2488	Cosmetic fixes for stack.h.
2489	* stack.h: Remove obsolete version comment.
2490	(stack::operator=): Correct indentation.
2491
2492	Make the data members of struct delta private.
2493	* delta.h (delta): Make all the data members private and add
2494	accessor and mutator methods.  Rename the data members to have a
2495	trailing underscore.
2496	(delta::id): Accessor for id_.
2497	(delta::set_id): Mutator for id_.
2498	(delta::date): Accessor for date_.
2499	(delta::set_date): Mutator for date_.
2500	(delta::user): Accessor for user_.
2501	(delta::set_user): Mutator for user_.
2502	(delta::seq): Accessor for seq_.
2503	(delta::set_seq): Mutator for set_seq.
2504	(delta::prev_seq): Accessor for prev_seq_.
2505	(delta::set_prev_seq): Mutator for prev_seq_.
2506	(delta::inserted): Accessor for inserted_.
2507	(delta::set_inserted): Mutator for inserted_.
2508	(delta::deleted): Accessor for deleted_ (there is no mutator).
2509	(delta::unchanged): Accessor for unchanged (there is no mutator).
2510	(delta::set_idu): Set inserted_, deleted_, unchanged_ all at once.
2511	(delta::increment_inserted): Increments inserted_.
2512	(delta::increment_deleted): Increments deleted_.
2513	(delta::increment_unchanged): Increments unchanged_.
2514	(delta::get_included_seqnos): Accessor for included_.
2515	(delta::get_excluded_seqnos): Accessor for excluded_.
2516	(delta::get_ignored_seqnos): Accessor for ignored_.
2517	(delta::has_includes): Accessor for have_includes_.
2518	(delta::set_has_includes): Mutator for have_includes_.
2519	(delta::add_include): Add an item to included_.
2520	(delta::has_excludes): Accessor for have_excludes_.
2521	(delta::set_has_excludes): Mutator for have_excludes_.
2522	(delta::add_exclude): Add an item to excluded_.
2523	(delta::has_ignores): Accessor for have_ignores_.
2524	(delta::set_has_ignores): Mutator for have_ignores_.
2525	(delta::add_ignore): Add an item to ignored_.
2526	(delta::mrs): Accessor for mrs_.
2527	(delta::set_mrs): Mutator for mrs_.
2528	(delta::add_mr): Add an item to mrs_.
2529	(delta::comments): Accessor for comments_.
2530	(delta::set_comments): Mutator for comments_.
2531	(delta::add_comment): Add an item to comments_.
2532	* unit-tests/test_delta.cc (DeltaTest.Constructor): Modify unit
2533	test to use the new accessor methods.
2534	(DeltaTest.Assignment): Likewise.
2535	(DeltaTest.Mutators): New unit test for the new mutator methods.
2536	* sccs-delta.cc (delta::operator=): Use the new member names.
2537	(removed): Likewise.
2538	* delta-table.cc: Use the new accessor functions.
2539	* sccsfile.cc: Likewise.
2540	* writesubst.cc: Likewise.
2541	* sf-add.cc: Likewise.
2542	* sf-admin.cc: Likewise.
2543	* sf-write.cc: Likewise.
2544	* sf-get.cc: Likewise.
2545	* sf-get2.cc: Likewise.
2546	* sf-get3.cc: Likewise.
2547	* sf-delta.cc: Likewise.
2548	(add_delta): Instead of zeroing inserted/deleted/unchanged counts,
2549	simply verify that the constructor did that.
2550	* sf-cdc.cc : Use the new accessor functions.
2551	(process_mrs): Since delta no longer offers access to a mutable
2552	list of MRs, modify process_mrs to return the updates list of MRs.
2553	The deleted flag which used to be the return value is now an
2554	output parameter.
2555	(cdc): Change the type of mrs_deleted from int to bool.
2556	* sf-prs.cc (print_delta): Use the new accessor functions.  Also
2557	fix a typo in a comment.
2558	(prs): Use the new accessor functions.
2559	* sf-prt.cc (cutoff::excludes_delta): Use the new accessor functions.
2560	(cutoff::print): Likewise.
2561	(sccs_file::prt): Likewise.
2562	* sf-rmdel.cc (sccs_file::rmdel): Use the new accessor functions.
2563	* sf-val.cc (sccs_file::validate_seq_lists): Use the new accessor functions.
2564	(sccs_file::validate_isomorphism): Likewise.
2565	(validate): Likewise.
2566	* unit-tests/TODO.txt: delta.h has tests now, remove it from the
2567	TODO list.
2568
25692010-04-23  James Youngman  <jay@gnu.org>
2570
2571	Rename delta::type to delta_type, make it private, validate it.
2572	* delta.h (struct delta): Rename the 'type' member to 'delta_type'
2573	and make it private, to support better data validation.
2574	(delta::delta()): Initialise delta_type to 'D' rather than leaving
2575	it uninitialised.  Also initialise members id, seq and prev_seq.
2576	(delta::delta(...): Set have_includes and have_excludes to true if
2577	the relevant list is starting off non-empty.
2578	(delta::get_type, delta::set_type): New accessor/mutator methods.
2579	* unit-tests/test_delta.cc: Verify that have_includes and
2580	have_excludes are true if the delta was constructed with
2581	(respectively) includes or excludes.
2582	(DeltaDeathTest.Includes): verify that invalid delta types are
2583	diagnosed.
2584	(delta::is_valid_delta_type): new method, validates delta::delta_type.
2585	* sf-rmdel.cc (rmdel): Use the accessor method to access
2586	delta::delta_type.
2587	* sccsfile.cc (read_delta): Delegate delta type validation to
2588	delta::is_valid_delta_type.
2589	* sccs-delta.cc (delta::operator=): delta::type renamed to
2590	delta::delta_type.
2591	(delta::removed): Likewise.
2592	* sf-prs.cc (print_delta): Likewise.
2593	* sf-prt.cc (prt): Likewise.
2594	* sf-write.cc (write_delta): Likewise.
2595	* sf-val.cc (validate): There is no longer a need to validate
2596	delta::type, as this field is validater by the delta(...)
2597	constructors and by delta::set_type().
2598
25992010-04-22  James Youngman  <jay@gnu.org>
2600
2601	Add a unit test for delta.h.
2602	* unit-tests/test_delta.cc: New file.
2603	* unit-tests/Makefile.am (check_PROGRAMS): Add test_delta.
2604
2605	Implement equality test for mylist<T>.
2606	* mylist.h (operator==): Implement operator==.
2607	* unit-tests/test_mylist.cc (MylistTest): Add unit tests for
2608	operator==.
2609
2610	Remove some obsolete comments.
2611	* mylist.h: Remove a spurious extra "Local Variables" comment.
2612
2613	* sid_list.h: Remove some obsolete (and long commented-out) code.
2614	* relvbr.h (class relvbr): Likewise.
2615	* release.h (class release): Likewise.
2616
2617	Finish test_sccsdate.cc.
2618	* unit-tests/test_sccsdate.cc: Added unit tests for the remaining
2619	public methods of sccs_date.
2620	* unit-tests/TODO.txt: sccsdate.h has unit tests now, remove it
2621	from the TODO list.
2622
2623	Remove core files for "make distclean".
2624	* unit-tests/Makefile.am (DISTCLEANFILES): Remove core files.
2625
2626	* AUTHORS: Mention that googletest/CONTRIBUTORS enumerates the
2627	contributors to the Google C++ Testing Framework.
2628
2629	* googletest/Makefile.am (EXTRA_DIST): Distribute README.cssc.
2630	* unit-tests/Makefile.am (EXTRA_DIST): Distribute TODO.txt.
2631
2632	Add TODO list for unit tests we need to write.
2633	* unit-tests/TODO.txt: New file; a working list of what unit tests
2634	are still needed.
2635
2636	Add unit tests for sccsdate.h.
2637	* unit-tests/test_sccsdate.cc: New file.
2638	* unit-tests/Makefile.am (test_sccsdate_SOURCES): Add
2639	test_sccsdate.cc.
2640	(check_PROGRAMS): Add test_sccsdate.
2641
2642	Explain what the googletest directory is and how to run unit tests.
2643	* README (Testing): Expand to include a description of the unit
2644	tests and how to run them.
2645	* docs/borrowed-files.txt: Mention googletest/*.  Also remove tghe
2646	out-of-date information about the last update to the files which
2647	autoconf updates.
2648	* googletest/README.cssc: Add README file explaining the
2649	relationship between the code in this directory and the rest of
2650	CSSC.
2651
26522010-04-21  James Youngman  <jay@gnu.org>
2653
2654	Add unit test cases for ASSERT failures.
2655	* unit-tests/test_mylist.cc (MylistDeathTest): Various unit test
2656	cases for ASSERT failures.
2657	* unit-tests/test_sid.cc (SidTest.Successor): Verify that the null
2658	SID's successor is 1.1.
2659
2660	Unit test sid_list::merge and sid_list::remove
2661	* unit-tests/test_sid_list.cc: Enable unit tests for
2662	sid_list::merge and sid_list::remove.  Include rl-merge.h since
2663	that file defines these methods.
2664
2665	Unit test release_list::merge and release_list::remove
2666	* unit-tests/test_rel_list.cc: Add unit tests for
2667	release_list::merge and release_list::remove.
2668
2669	Move rl-merge.cc into libcssc.a
2670	* Makefile.am (libcssc_a_SOURCES): Move rl-merge.cc into the library.
2671	(get_SOURCES): Remove rl-merge.cc.
2672	(admin_SOURCES): Likewise.
2673	* rel_list.h: Remove some unnecessary blank lines.
2674
2675	Add unit test for rel_list.h
2676	* unit-tests/test_rel_list.cc: New unit test.
2677	* unit-tests/Makefile.am (check_PROGRAMS): Add test_rel_list.
2678	(test_rel_list_SOURCES): Add test_rel_list.cc.
2679
2680	Add unit test for sid_list.h
2681	* unit-tests/test_sid_list.cc: New unit test; tests sid_list.h.
2682	* unit-tests/Makefile.am (check_PROGRAMS): Add test_sid_list.
2683	(test_sid_list_SOURCES): Add test_sid_list.cc.
2684
26852010-04-20  James Youngman  <jay@gnu.org>
2686
2687	Add unit test for release.h.
2688	* unit-tests/Makefile.am (check_PROGRAMS): Add test_release.
2689	(test_release_SOURCES): Add test_release.cc.
2690	* unit-tests/test_release.cc: New unit test.
2691
2692	Add unit test for relvbr.
2693	* unit-tests/Makefile.am (check_PROGRAMS): Add test_relvbr.
2694	(test_relvbr_SOURCES): Add test_relvbr.cc.
2695	* unit-tests/test_relvbr.cc: New unit test.
2696
2697	Add unit test for sid.h.
2698	* unit-tests/test_sid.cc: New unit test.
2699	* unit-tests/Makefile.am (test_sid_SOURCES): Add this test.
2700	(check_PROGRAMS): Likewise.
2701
2702	* unit-tests/Makefile.am (TESTS): don't duplicate the contents of
2703	$(check_PROGRAMS), just use that variable.
2704	(LDADD): Add ../libcssc.a.
2705	(test_mylist_SOURCES): Don't list object files in libcssc.a.
2706	(test_myset_SOURCES): Don't list object files in libcssc.a.
2707
2708	New unit test for myset<T>.
2709	* unit-tests/Makefile.am (check_PROGRAMS): Add test_myset.
2710	(LDADD): Just use one LDADD variable for all unit tests.
2711	* unit-tests/test_myset.cc: New unit test.
2712
2713	Add a unit test.
2714	* unit-tests/test_mylist.cc: New file; unit test for mylist<T>.
2715	* unit-tests/Makefile.am: New file.
2716	* configure.ac: Call AC_LIBTOOL.  Include
2717	googletest/m4/acx_pthread.m4.  Add --with-pthreads so that our
2718	main build and googletest libraries are compatible.  Add
2719	unit-tests/Makefile to AC_CONFIG_FILES.
2720	* autogen.sh: Run libtoolize in the top level and the googletest
2721	directories.
2722	* Makefile.am (SUBDIRS): Add unit-tests.
2723
2724	Include <errno.h> unconditionally where we need it.
2725	* admin.cc: Include <errno.h> instead of "err_no.h".
2726	* pfile.cc: Likewise.
2727	* cssc.h: Likewise.
2728	* file.cc: Likewise.
2729	* get.cc: Likewise.
2730	* run.cc: Likewise.
2731	* quit.cc: Likewise.
2732	* sccsfile.cc: Likewise.
2733	* sf-delta.cc: Likewise.
2734	* what.cc: Likewise.
2735	* err_no.h: Remove useless file.
2736	* Makefile.am (noinst_HEADERS): Remove err_no.h.
2737
2738	Instead of linking all objects explicitly, use a library.
2739	* Makefile.am (noinst_LIBRARIES): Build new library libcssc.a.
2740	(libcssc_a_SOURCES): list the source files for the library.
2741	(common_sources): Remove unused variable.
2742	(sname_srcs): Likewise.
2743	(sfile_srcs): Likewise.
2744	(mod_srcs): Likewise.
2745	(moddelta_srcs): Likewise.
2746	(newdelta_srcs): Likewise.
2747	(get_LDADD): Add the new library libcssc.a.
2748	(delta_LDADD): Likewise.
2749	(admin_LDADD): Likewise.
2750	(prs_LDADD): Likewise.
2751	(what_LDADD): Likewise.
2752	(unget_LDADD): Likewise.
2753	(sact_LDADD): Likewise.
2754	(cdc_LDADD): Likewise.
2755	(rmdel_LDADD): Likewise.
2756	(prt_LDADD): Likewise.
2757	(val_LDADD): Likewise.
2758	(what_SOURCES): Remove object files which are now in libcssc.a.
2759	(sact_SOURCES): Likewise.
2760	(unget_SOURCES): Likewise.
2761	(prt_SOURCES): Likewise.
2762	(prs_SOURCES): Likewise.
2763	(get_SOURCES): Likewise.
2764	(rmdel_SOURCES): Likewise.
2765	(cdc_SOURCES): Likewise.
2766	(admin_SOURCES): Likewise.
2767	(delta_SOURCES): Likewise.
2768	(val_SOURCES): Likewise.
2769
27702010-04-19  James Youngman  <jay@gnu.org>
2771
2772	Actually configure in and recurse into the googletest directory.
2773	* configure.ac: Add googletest in the call to AC_CONFIG_SUBDIRS.
2774	* autogen.sh: Run libtoolize in googletest.
2775	* Makefile.am (SUBDIRS): Add googletest.
2776
2777	Implement myset<T> with std::set<T>.
2778	* myset.h (myset): Switch to implementing with std::set.  This
2779	should reduce the O(N) operations to O(log(N)).
2780
2781	Use the standard string class.
2782	* mystring.h: Assume the availability of the <string> header, so
2783	that mystring is always a typedef for std::string.
2784	* mystring.cc: Delete.
2785	* Makefile.am (sname_srcs): Delete mystring.cc.
2786
2787	Assume support for the std namespace.
2788	* configure.ac: Don't check for the 'std' namespace.  Don't
2789	#define STD_NAMESPACE.
2790	* mystring.h: Don't use STD_NAMESPACE.
2791
27922010-04-18  James Youngman  <jay@gnu.org>
2793
2794	Assume exception support.
2795	* configure.ac: Don't detect exception support, assume it.
2796	* admin.cc: Require exception support.
2797	* bodyio.cc: Likewise.
2798	* cdc.cc: Likewise.
2799	* cssc.h: Likewise.
2800	* delta.cc: Likewise.
2801	* except.h: Likewise.
2802	* get.cc: Likewise.
2803	* pf-del.cc: Likewise.
2804	* prs.cc: Likewise.
2805	* prt.cc: Likewise.
2806	* quit.cc: Likewise.
2807	* rmdel.cc: Likewise.
2808	* sact.cc: Likewise.
2809	* sf-kw.cc: Likewise.
2810	* unget.cc: Likewise.
2811	* val.cc: Likewise.
2812
2813	Remove RCS keywords.
2814	* admin.cc: Remove RCS keywords (since we're using git now).
2815	* bodyio.h: Likewise.
2816	* cap.cc: Likewise.
2817	* cdc.cc: Likewise.
2818	* cssc.h: Likewise.
2819	* delta-iterator.cc: Likewise.
2820	* delta-iterator.h: Likewise.
2821	* delta-table.h: Likewise.
2822	* delta.cc: Likewise.
2823	* delta.h: Likewise.
2824	* dtbl-prepend.cc: Likewise.
2825	* environment.cc: Likewise.
2826	* fatalsig.cc: Likewise.
2827	* fdclosed.cc: Likewise.
2828	* file.cc: Likewise.
2829	* filediff.cc: Likewise.
2830	* fileiter.cc: Likewise.
2831	* filepos.h: Likewise.
2832	* get.cc: Likewise.
2833	* l-split.cc: Likewise.
2834	* linebuf.cc: Likewise.
2835	* my-getopt.cc: Likewise.
2836	* mystring.cc: Likewise.
2837	* mystring.h: Likewise.
2838	* pf-add.cc: Likewise.
2839	* pf-del.cc: Likewise.
2840	* pfile.cc: Likewise.
2841	* pfile.h: Likewise.
2842	* prompt.cc: Likewise.
2843	* prs.cc: Likewise.
2844	* prt.cc: Likewise.
2845	* quit.cc: Likewise.
2846	* rel_list.cc: Likewise.
2847	* rl-merge.cc: Likewise.
2848	* rmdel.cc: Likewise.
2849	* run.cc: Likewise.
2850	* sact.cc: Likewise.
2851	* sccs-delta.cc: Likewise.
2852	* sccsdate.cc: Likewise.
2853	* sccsfile.cc: Likewise.
2854	* sccsfile.h: Likewise.
2855	* sccsname.cc: Likewise.
2856	* seqstate.h: Likewise.
2857	* sf-add.cc: Likewise.
2858	* sf-admin.cc: Likewise.
2859	* sf-cdc.cc: Likewise.
2860	* sf-chkid.cc: Likewise.
2861	* sf-delta.cc: Likewise.
2862	* sf-get.cc: Likewise.
2863	* sf-get2.cc: Likewise.
2864	* sf-get3.cc: Likewise.
2865	* sf-prs.cc: Likewise.
2866	* sf-prt.cc: Likewise.
2867	* sf-rmdel.cc: Likewise.
2868	* sf-val.cc: Likewise.
2869	* sf-write.cc: Likewise.
2870	* showconfig.cc: Likewise.
2871	* sid.cc: Likewise.
2872	* sid_list.h: Likewise.
2873	* split.cc: Likewise.
2874	* unget.cc: Likewise.
2875	* val.cc: Likewise.
2876	* what.cc: Likewise.
2877	* writesubst.cc: Likewise.
2878
2879	Import gnulib modules for various standard headers.
2880	* bodyio.cc: Remove HAVE_STDIO_H guards for various standard
2881	headers which gnulib will provide/adjust.
2882	* bootstrap.conf: Likewise.
2883	* canonify.cc: Likewise.
2884	* configure.ac: Likewise.
2885	* cssc.h: Likewise.
2886	* environment.cc: Likewise.
2887	* err_no.h: Likewise.
2888	* fdclosed.cc: Likewise.
2889	* file.cc: Likewise.
2890	* filediff.cc: Likewise.
2891	* filepos.h: Likewise.
2892	* get.cc: Likewise.
2893	* my-getopt.cc: Likewise.
2894	* sccsfile.cc: Likewise.
2895	* sf-chkid.cc: Likewise.
2896	* sf-delta.cc: Likewise.
2897	* sf-prt.cc: Likewise.
2898	* showconfig.cc: Likewise.
2899	* sysdep.h: Likewise.
2900	* what.cc: Likewise.
2901	* gnulib-tests/.gitignore: Ignore various files imported by gnulib.
2902	* lib/.gitignore: Likewise.
2903
2904	Adopt the use of the "bootstrap" command.
2905	* bootstrap: New file (copied from coreutils).
2906	* bootstrap.conf: New file (adapted from coreutils; no modules are
2907	imported just now).
2908	* autogen.sh: Remove (obsoleted by bootstrap).
2909	* gnulib-tests/.gitignore: New file.
2910	* configure.ac: Use AC_CONFIG_AUX_DIR to select build-aux as the
2911	aux dir.
2912	* README-hacking: New file (copied from coreutils).
2913	* .gitmodules: New file.
2914	* .gitignore: New file.
2915	* docs/texinfo.tex: Remove.
2916	* docs/Makefile.am (EXTRA_DIST): Remove texinfo.tex, which is not
2917	in this directory any more.
2918
2919	* NEWS: Move on from CSSC-1.2.0 to CSSC-1.2.1-git.
2920	* configure.ac: Likewise.
2921
29222009-04-11  James Youngman  <jay@gnu.org>
2923
2924	* configure.ac, NEWS: Prepare for release of version 1.2.0.
2925
2926	* INSTALL: Remove from the source repository; allow Automake to
2927	use its own copy.
2928	* missing: Likewise.
2929	* install-sh: Likewise.
2930	* docs/texinfo.tex: Likewise
2931
2932	* configure.ac (AC_CHECK_DECL_IN_HEADER): Quote the definition of
2933	the function.
2934	(AC_CHECK_GLOBAL): Likewise.
2935
29362009-01-03  Alain Williams <addw@phcomp.co.uk> (tiny change)
2937
2938	* auxfiles/CSSC.spec.in: Reflect changes in the RPM spec
2939	file format and requrements since 2003.
2940	(License): Changed "Copyright" tag to "License".
2941	(%makeinstall): Do not make the /usr/sccs symbolic link.
2942	(%files): Add various binaries to %files.
2943
29442008-01-18  James Youngman  <jay@gnu.org>
2945
2946	* configure.ac: Prepare for release of version 1.1.1.
2947	* NEWS: Likewise.
2948	* docs/cssc.texi: Updated copyright year.  Bumped the revision
2949	number and updated the VERSION macro.  Updated the "UPDATED"
2950	variable to the current time.
2951
2952	* version.h (version): Don't show the RCS ID of the main program
2953	in the version output; just keep the existing CSSC release number.
2954
2955	* showconfig.cc: Updated copyright notice to GPL3.
2956	 (show_system_line_max): Removed awkward line break.
2957
29582008-01-07  James Youngman  <jay@gnu.org>
2959
2960	* sf-val.cc (validate_isomorphism): Warn if a delta has two
2961	derived deltas on the trunk.
2962
2963	* release.h: Fixed typo in the file header comment.
2964
2965	* delta-table.h (class cssc_delta_table): Don't initialise sid
2966	objects from NULL.
2967
2968	* fileiter.cc (sccs_file_iterator): Ignore subdirectories, even if
2969	they do start with "s.".
2970	* file.cc (is_directory): New function.
2971	* file.h: Declare is_directory.
2972
29732008-01-06  James Youngman  <jay@gnu.org>
2974
2975	* sf-delta.cc (add_delta): Removed obsolete "XXX" comments.
2976	* sf-prs.cc (get): Likewise.
2977	* cdc.cc (main): Avoid initialising a sid object by assignment
2978	from NULL, because it's not quite clear what that is intended to
2979	do.  Instead, use an assignment from sid::null_delta().
2980	* sid.cc (null_sid): Implement the function.
2981	* sid.h (class sid): Declare sid::null_sid().
2982	* get.cc (main): Avoid initialising a sid object by assignment
2983	from NULL.
2984	* delta.cc (delta_main): Likewise.
2985	* val.cc (main): Likewise.
2986	* rmdel.cc (main): Likewise.
2987	* unget.cc (main): Likewise.
2988	* sccsfile.cc (sccs_file::sccs_file): Likewise.
2989	* sf-admin.cc (admin): Likewise.
2990	* prs.cc (main): Likewise; also disable the -R option.
2991
2992	* sf-val.cc (validate_isomorphism): Extend the comment setting out
2993	the design for this method.  The method is still unimplemented,
2994	though.
2995
2996	Various tidyings-up of TODO items.
2997	* prompt.cc (prompt_user): Now that this code is well tested,
2998	increase the allocation chunk size and remove the TODO item
2999	reminding me to do that.   Use a small _initial_ chunk size to
3000	make sure that at least one reallocation takes place, for adequate
3001	code coverage.
3002	* mystring.cc: Removed TODO comments which actually don't need to
3003	be done.
3004
3005	* sf-admin.cc (admin): If all releases are locked ("admin -fla")
3006	and the user tries to unlock just one release, issue an error
3007	message (instead of just ignoring the attempt).
3008	* docs/cssc.texi (admin): Explain the (already existing)
3009	restriction and how to get around it.
3010
3011	Implement "get -l", "get -L" and "get -lp".
3012	* get.cc (main): Added options -l and -L for get.
3013	(main): Print the name of the s-file before the delta summary (for
3014	-l) and the gotten body (for -p).
3015	* tests/get/delta-summary.sh: New tests for the -L, -l and -lp
3016	options of get.
3017	* sccsname.h (class sccs_name): new method lfile(), returning the
3018	name of the l-file.
3019	* sccsname.cc (sccs_name::lfile): Implement it.
3020	* sccsfile.h (sccs_file::get): Take a parameter summary_file,
3021	being a FILE* pointer to which we should emit a delta summary if
3022	it's not NULL.
3023	* sf-get2.cc (sccs_file::get): Add the new summary_file parameter
3024	and, if it's not NULL, emit a delta summary.
3025	* docs/cssc.texi (get options): Document the options -l, -lp and
3026	-L.
3027	(Filenames): Mention the l-file.
3028	(prt usage): Mention that the delta summary file contains much the
3029	same information.
3030	* NEWS: Mention this change.
3031
30322008-01-05  James Youngman  <jay@gnu.org>
3033
3034	* sf-prt.cc (sccs_file::prt): Fixed typo in comment.
3035
3036	* NEWS: Updated with changes for the early 0.02 releases by
3037	diffing the unpacked tar archives.
3038
30392007-12-19  James Youngman  <jay@gnu.org>
3040
3041	* what.cc: String constants chould be const.
3042
3043	* sf-val.cc (validate_substituted_flags_list): Added missing
3044	return statement.
3045
3046	* sccsfile.cc (sccs_file): Specify the member initialisers in the
3047	order they will actually be executed.
3048
3049	* linebuf.h (class cssc_linebuf): Make buflen size_t rather than
3050	int.
3051
3052	* linebuf.cc (CONFIG_LINEBUF_CHUNK_SIZE): Avoid signed/unsigned
3053	issues by using an unsigned constant.
3054	(read_line): Ditto for constants in this function.
3055
3056	* file.cc (set_file_mode): Add missing return statement.
3057
3058	* bsd/sccs.c (makefile): Avoid signed/unsigned issues by using
3059	size_t to index into strings, rather than ints.
3060	(form_gname): Ditto.
3061	(gstrcat): Ditto for parameter 'length'.
3062	(gstrncat): Ditto for parameter 'length'.
3063	(gstrcpy): Ditto for parameter 'length'.
3064	(gstrncat): Ditto for parameter 'length'.
3065
30662007-12-18  James Youngman  <jay@gnu.org>
3067
3068	* bsd/sccs.c (FBUFSIZ): Make unsigned.
3069	(cleanup_environment): Removed unused variable 'pfail'.
3070	(main): Avoid spurious warning about lack of return statement, by
3071	putting in return statements instead of calls to exit.
3072
3073	* uu_decode.c: #include <sys/stat.h>, for a declaration of chmod.
3074	(test_decode): Avoid compiler warnign about unused argument 'arg'.
3075	(test_all): Likewise.
3076
3077	* user.c: #include <stdlib.h> for a declaration of qsort and malloc.
3078	(do_groups): Removed unused variable 'duplicates'.
3079
3080	* realpwd.cc (main): Avoid compiler warning about unuised argc, argv.
3081	* seeker.c (do_unbuffered): Avoid compiler warning about unused
3082	argument NAME.
3083	(do_blockbuffered): Likewise
3084	(do_linebuffered): Likewise
3085	(do_nothing): Likewise
3086
30872007-12-17  James Youngman  <jay@gnu.org>
3088
3089
3090	* docs/cssc.texi (Missing Features):  Updated URLs to point to the
3091	GNU web site instead of SourceForge.
3092	* README: Likewise
3093	* auxfiles/CSSC.spec.in (URL): Likewise
3094	* docs/URLs: Likewise
3095	* docs/patches.txt: Likewise
3096	* docs/BUGS: Likewise
3097
3098	Migrate to GPL version 3.
3099	* COPYING, admin.cc, autogen.sh, bodyio.cc, bodyio.h, canonify.cc,
3100	cap.cc, cdc.cc, configure.ac, cssc.h, defaults.h,
3101	delta-iterator.cc, delta-iterator.h, delta-table.cc,
3102	delta-table.h, delta.cc, delta.h, depcomp, docs/Makefile.am,
3103	docs/cssc.texi, dtbl-prepend.cc, encoding.cc, environment.cc,
3104	err_no.h, except.h, fatalsig.cc, fdclosed.cc, file.cc, file.h,
3105	filediff.cc, filediff.h, fileiter.cc, fileiter.h, filelock.h,
3106	filepos.h, fnsplit.cc, get.cc, ioerr.h, l-split.cc, linebuf.cc,
3107	linebuf.h, list.cc, missing, my-getopt.cc, my-getopt.h, mylist.h,
3108	myset.h, mystring.cc, mystring.h, pf-add.cc, pf-del.cc, pfile.cc,
3109	pfile.h, prompt.cc, prs.cc, prt.cc, quit.cc, quit.h, rel_list.cc,
3110	rel_list.h, release.h, relvbr.h, remove.c, rename.c, rl-merge.cc,
3111	rmdel.cc, run.cc, run.h, sact.cc, sccs-cgi/sccs.cgi,
3112	sccs-cgi/sccs.cgi.text, sccs-delta.cc, sccsdate.cc, sccsdate.h,
3113	sccsdiff.sh.in, sccsfile.cc, sccsfile.h, sccsname.cc, sccsname.h,
3114	seqstate.cc, seqstate.h, sf-add.cc, sf-admin.cc, sf-cdc.cc,
3115	sf-chkid.cc, sf-chkmr.h, sf-delta.cc, sf-get.cc, sf-get2.cc,
3116	sf-get3.cc, sf-kw.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc,
3117	sf-val.cc, sf-write.cc, show-disp.sh, showconfig.cc, sid.cc,
3118	sid.h, sid_list.h, sl-merge.h, split.cc, stack.h, strerror.c,
3119	strstr.c, sysdep.h, testutils/ekko.c, testutils/last-time.c,
3120	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
3121	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
3122	unget.cc, val.cc, valcodes.h, version.h, what.cc, writesubst.cc,
3123	testutils/ekko.c, testutils/last-time.c, testutils/seeker.c,
3124	testutils/user.c, testutils/yammer.c, testutils/yes.c:
3125	Update license to GPL version 3.
3126	* NEWS: Mention this change.
3127	* docs/cssc.texi (Copying): Put the GPL in a separate, unnumbered,
3128	section.
3129
3130	* docs/cssc.texi: Change license to version 1.2 of the GNU Free
3131	Documentation License.
3132	* docs/Makefile.am (cssc_TEXINFOS): Depend on fdl.texi, so that it
3133	gets distributed.
3134	* NEWS: Mention this change.
3135
3136	* docs/Makefile.am (cssc_TEXINFOS): Don't depend on
3137	config-info.text, since we don't actually use it.  This prevents
3138	us trying to rebuild the info file during "make distcheck", when
3139	the source directory is read-only anyway.
3140	* doc/texinfo.tex: Update to the version of texinfo.tex used in
3141	automake-1.8.  Yo avoid future compatibility issues, it makes
3142	sense to remove this file from CVS in fact, but we won't do that
3143	just yet.
3144
3145	* tests/bsd-sccs/delsfile.sh (cleanup): Also clean up ./s.foo when
3146	we're finished.
3147
3148	Fix build problems caused by the fact that generating
3149	testutils/Makefile in the top level directory produces
3150	a Makefile that expects to use config.h, while we actually
3151	want to use DEFS in the testutils subdirectory.
3152	* configure.ac: Call AC_OUTPUT only once.  Do not emit
3153	testutils/Makefile.
3154	* testutils/configure.ac: Fixed typo.
3155
3156
31572007-06-21  James Youngman  <jay@gnu.org>
3158
3159	* bsd/sccs.c: Updated the copyright text to be consistent with the
3160	COPYING.bsd file (by removing the advertising clause).
3161
3162	* sccsfile.cc (print_subsituted_flags_list): Return true if
3163	nothing failed (as opposed to falling off the end of the
3164	function).   This prevents spurious x-file write errors if the y
3165	flag is unset.
3166
3167	* cssc.h: Require exception support to compile.  This is not
3168	strictly necessary for successful operation, but without exception
3169	support "get s.foo s.bar" will not process s.bar if we failed on
3170	s.foo.  So exception support is required for full SCCS
3171	compatibility.
3172
31732007-06-20  James Youngman  <jay@gnu.org>
3174
3175	* bsd/sccs.c (unedit): Fix "sccs unedit /tmp/SCCS/s.foo will
3176	cause ./s.foo to be unlinked" bug, by forming the g-file name
3177	from the p-file name, as opposed to the name of the file on the
3178	command line (because the file named on the command line gould be
3179	either the g-file or the s-file).
3180	* docs/BUGS: Mention the bugfix.
3181	* tests/bsd-sccs/delsfile.sh: New test, for this bug.
3182
3183	* .gitignore: Ignore Emacs editor backups.
3184
3185	* cap.cc, val.cc: Add explicit template instantiation directives to
3186	support compilation with GCC's -fno-implicit-templates option.
3187	* dtbl-prepend.cc, fileiter.cc, sccs-delta.cc: ditto
3188	* sccsfile.cc: Ditto.  Also include "mylist.h" to get the method
3189	definitions for the templates.
3190
3191	* .gitignore, docs/.gitignore, testutils/.gitignore: New files.
3192
3193	* tests/common/test-common: Work around an apparent bug in Bash
3194	3.1.17(1) in which "$@$ac_c" expands to DEL${ac_c} when $1 is "".
3195	That broke echo_nonl, causing some tests to fail.
3196
31972007-06-19  James Youngman  <jay@gnu.org>
3198
3199	* unused/configs/cf-bcc.h, unused/configs/cf-djgpp.h,
3200	unused/configs/cf-redhat.h, unused/configs/cf-sls.h,
3201	unused/configs/cf-xenix.h, unused/configs/mf-msdos.mak,
3202	unused/configs/mf-unix.mak, unused/Makefile.am, unused/README,
3203	unused/_chmod.cc, unused/configs/README, unused/dosfile.cc,
3204	unused/dummy.cc, unused/ffsync.cc, unused/fsync.cc,
3205	unused/linux.diffs, unused/move-if-change, unused/pipe.cc,
3206	unused/pipe.h, unused/sid_list.cc: Removed unused files.
3207
3208	Update or add various copyright notices.
3209	* sccs-cgi/sccs.cgi, testutils/ekko.c, testutils/last-time.c,
3210	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
3211	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
3212	docs/gpl.texi, docs/texinfo.tex, sid_list.h, sl-merge.h, split.cc,
3213	stack.h, strstr.c, sysdep.h, unget.cc, val.cc, valcodes.h,
3214	what.cc, writesubst.cc, rel_list.h, release.h, relvbr.h,
3215	rl-merge.cc, rmdel.cc, run.cc, run.h, sact.cc, sccs-delta.cc,
3216	sccsdate.cc, sccsdate.h, sccsfile.cc, sccsfile.h, sccsname.cc,
3217	sccsname.h, seqstate.cc, seqstate.h, sf-add.cc, sf-admin.cc,
3218	sf-cdc.cc, sf-chkid.cc, sf-chkmr.h, sf-delta.cc, sf-get.cc,
3219	sf-get2.cc, sf-get3.cc, sf-kw.cc, sf-prs.cc, sf-prt.cc,
3220	sf-rmdel.cc, sf-val.cc, sf-write.cc, show-disp.sh, showconfig.cc,
3221	sid.cc, sid.h, cap.cc, cdc.cc, configure.ac, cssc.h, defaults.h,
3222	delta-iterator.cc, delta-iterator.h, delta-table.cc,
3223	delta-table.h, delta.cc, delta.h, depcomp, dtbl-prepend.cc,
3224	encoding.cc, environment.cc, err_no.h, except.h, fatalsig.cc,
3225	fdclosed.cc, file.cc, file.h, filediff.cc, filediff.h,
3226	fileiter.cc, fileiter.h, filelock.h, filepos.h, fnsplit.cc,
3227	get.cc, ioerr.h, l-split.cc, linebuf.cc, linebuf.h, list.cc,
3228	missing, my-getopt.cc, my-getopt.h, mylist.h, myset.h,
3229	mystring.cc, mystring.h, pf-add.cc, pf-del.cc, pfile.cc, pfile.h,
3230	prompt.cc, prs.cc, prt.cc, quit.cc, quit.h, rel_list.cc,
3231	Makefile.am, admin.cc, autogen.sh, bodyio.cc, bodyio.h,
3232	canonify.cc: Updated FSF address in source files
3233	* COPYING: Fixed the FSF address.
3234	* Makefile.am, remove.c, rename.c, sccsdiff.sh.in, strerror.c,
3235	version.h: Included copyright notices in some files where these
3236	were missing
3237
32382007-03-14  James Youngman  <jay@gnu.org>
3239
3240	* NEWS, ChangeLog: Updated with (not very) recent changes.
3241
3242	* AUTHORS: Fixed typo
3243
3244	* get.cc, sf-get.cc: Fixed a typo in a comment
3245
32462007-03-14  James Youngman  <jay@gnu.org>
3247
3248	* AUTHORS: Fixed typo
3249
3250	* get.cc, sf-get.cc: Fixed a typo in a comment
3251
32522006-07-13  James Youngman  <jay@gnu.org>
3253
3254	* tests/prt/TODO: Updated email address
3255
32562005-12-04  James Youngman  <jay@gnu.org>
3257
3258	* docs/cssc.texi: Corrected typo (tirivial change, from Alex Brincko)
3259
32602005-11-23  James Youngman  <jay@gnu.org>
3261
3262	* configure.ac, sccsfile.cc, sccsfile.h, NEWS:
3263	Tolerate leading spaces in the counts of inserted/deleted/unchanged lines in the delta table; System III seems to produce/tolerate these (see Neil Mayhew's bug report regarding a pre-1985 file)
3264
32652005-06-18  James Youngman  <jay@gnu.org>
3266
3267	* file.cc, filelock.h, quit.cc, quit.h:
3268	Applied Sourceforge patch 1223116, allowing CSSC to be compiled on Darwin.  Darwin's version of GCC doesn't like #pragma implementation.
3269
32702005-04-06  James Youngman  <jay@gnu.org>
3271
3272	* docs/Platforms:
3273	Indicate that under Cygwin, CSSC must be used on filesystems mounted
3274	in 'binary mode'.
3275
32762005-04-04  James Youngman  <jay@gnu.org>
3277
3278	* pf-add.cc: Updated copyright year.
3279
3280	* pf-add.cc:
3281	Removed some unused code (which had already been disabled with #if 0).
3282
32832005-01-22  James Youngman  <jay@gnu.org>
3284
3285	* configure.ac: CSSC release 1.0.1
3286
3287	* NEWS: Better description of the problem for SourceForge bug 865422
3288
3289	* docs/cssc.texi: Added 2005 top copyright years.
3290
3291	* docs/cssc.texi: Updated timestamp.
3292
3293	* ChangeLog: Indicated the release of 1.0.1.
3294
3295	* ChangeLog: Updated change log from CVS comments.
3296
3297	* NEWS: Added latest news.
3298
3299	* docs/cssc.texi:
3300	Ensured that the section names for cross-references which appear in
3301	the printed output actually bear the correct title for the section
3302	they refer to.
3303
33042004-10-17  James Youngman  <jay@gnu.org>
3305
3306	* docs/Platforms: CSSC now builds under GCC-3.4.
3307
3308	* docs/cssc.texi: Updated edition/version.
3309
3310	* docs/cssc.texi:
3311	Indicate that "admin -h" performs the same checks as "val" as well as
3312	checking the checksum.
3313
3314	* Makefile.am, admin.cc:
3315	Fixed SourceForge bug 1043880: admin -h should invoke val
3316
3317	* sf-get2.cc, tests/get/sf865422.sh:
3318	Fixed SourceForge bug 865422: if a SID is listed in a pfile, that can force a branch
3319
3320	* sccsdiff.sh.in:
3321	Fixed SourceForge bug 966010, sccs sccsdiff -r cannot have space
3322	before revision number.   We still will have similar problems
3323	elsewhere in the suite, I suspect.
3324
3325	* sf-prs.cc, sf-delta.cc:
3326	Fixed SourceForge bug 1045768: CSSC does not compile with gcc 3.4
3327
33282004-10-16  James Youngman  <jay@gnu.org>
3329
3330	* docs/CREDITS, docs/CREDITS.short.txt: Added Yann Dirson.
3331
33322004-10-10  James Youngman  <jay@gnu.org>
3333
3334	* ChangeLog: Updated from CVS log messages.
3335
3336	* README: Fixed typo
3337
3338	* docs/cssc.texi: Added missing full stop.
3339
3340	* configure.ac:
3341	Indicate that this is once again the CVS development version.
3342
3343	* configure.ac: This is release 1.00.
3344
3345	* docs/URLs:
3346	Added GNU FTP site URL in preparation for official 1.0 release.
3347
3348	* docs/TODO: Added disclaumer about the obsoleteness of the file.
3349
3350	* docs/tests-todo.txt:
3351	Removed a couple of entries for tests that now exist.
3352
3353	* docs/Platforms: Minor updates and corrections to typos.
3354
3355	* README: Updated the status of the release.
3356
3357	* NEWS, configure.ac, myset.h, sccsfile.cc, sccsfile.h, sf-admin.cc, sf-get.cc, sf-prs.cc, sf-prt.cc, sf-val.cc, sf-write.cc, writesubst.cc, ChangeLog:
3358	update copyright years
3359
3360	* docs/cssc.texi:
3361	The file was also changed in 2003 and 2004.  Hence update the
3362	copyright years.
3363
3364	* docs/cssc.texi: Updated edition - to be released with CSSC 1.00!
3365
3366	* sf-prs.cc:
3367	SF bug 1040827: Solaris 9's "prs" does not produce any output for the
3368	"y" flag.  Hence for compatibility nor should we.
3369
3370	* tests/admin/Makefile.am, tests/admin/hardlinks.sh, tests/admin/y-flag.sh, docs/cssc.texi, myset.h, sccsfile.cc, sccsfile.h, sf-admin.cc, sf-get.cc, sf-prs.cc, sf-prt.cc, sf-val.cc, sf-write.cc, writesubst.cc:
3371	Added support for the SCCS 'y' flag - SF bug 1040827
3372
33732004-10-03  James Youngman  <jay@gnu.org>
3374
3375	* NEWS: Updated with new news.
3376
3377	* bsd/sccs.c:
3378	Fixed SourceForge bug 806715 (incompatibility of -d flag with the
3379	"sccs print" command).
3380
3381	* docs/cssc.texi:
3382	Be more specific about which version of SCO has the 'x' flag.
3383
3384	* docs/cssc.texi, file.cc, file.h, get.cc, my-getopt.cc, sccsfile.cc, sccsfile.h, sf-admin.cc, sf-delta.cc, sf-prt.cc, sf-write.cc:
3385	Implemented SCO SCCS's x flag; Sourceforge bug ID 969833
3386
33872004-04-25  James Youngman  <jay@gnu.org>
3388
3389	* tests/common/command-names:
3390	Make sure we locate the "sccs" binary correctly now that $dir will
3391	normally not begin with "..".
3392
3393	* tests/common/command-names:
3394	Oops, make the tests work if you don't set the $dir variable.
3395
3396	* tests/common/command-names:
3397	Figure out the absolute pathname of the directory containing the CSSC tools.
3398
3399	* depcomp: depcomp - new file required by automake
3400
34012003-12-13  James Youngman  <jay@gnu.org>
3402
3403	* tests/what/whatbasic.sh:
3404	Provide a more helpful error message when 'ekko' fails
3405
3406	* linebuf.cc, linebuf.h, sccsfile.cc:
3407	Resolve the strchr() problem pointed out bin SourceForge patch 857193
3408
34092003-12-10  James Youngman  <jay@gnu.org>
3410
3411	* NEWS, bsd/sccs.c, my-getopt.cc:
3412	Some changes to eliminate compilation errors/warnings from Sun CC 5.5
3413
3414	* docs/CREDITS.short.txt, docs/CREDITS: Added Tom Duffy.
3415
34162003-12-09  James Youngman  <jay@gnu.org>
3417
3418	* bsd/sccs.c, configure.ac, NEWS:
3419	pass through more options to diff (be it GNU diff or vanilla diff)
3420
3421	* bsd/sccs.1:
3422	Documented the extra options now passed to diff by "sccs diffs".
3423
3424	* bsd/sccs.c:
3425	Also pass through the w option (which is not GNU diff specific).
3426
3427	* bsd/sccs.c:
3428	Pass through the options aBdHpqsvy to diff (these are GNU diff options).
3429
3430	* bsd/sccs.c: Support "sccs diffs -u".
3431
34322003-12-08  James Youngman  <jay@gnu.org>
3433
3434	* auxfiles/CSSC.spec.in:
3435	Handed over "Packager" status for Red Hat to Thomas Duffy.
3436
3437	* auxfiles/CSSC.spec.in:
3438	Applied SourceForge patch 856398, submitted by Thomas Duffy
3439
3440	* file.cc, file.h, get.cc:
3441	Various changes as suggested by Dick Streefland, relating to the setting/clearing of the DOS archive bit and to systems which lack CONFIG_UIDs
3442
3443	* tests/delta/errorcase.sh:
3444	Oops, this change should have been in 0.16alpha.pl0
3445
3446	* sact.cc:
3447	Fixed SF bug 768002, mismatch in output of sact between CSSC and SCCS when only one file name is given on the command line
3448
3449	* sf-write.cc: Fixed SF bug 856158, compilation error on CYGWIN
3450
34512003-12-07  James Youngman  <jay@gnu.org>
3452
3453	* ChangeLog: Brought up to date (again).
3454
3455	* docs/Makefile.am: make mostlyclean should delete cssc.info.
3456
3457	* testutils/Makefile.am:
3458	make distclean should delete decompress_stdin.sh.
3459
3460	* tests/get/sf111140.sh, tests/get/sf479916.sh:
3461	Remove test files at the end of testing.
3462
3463	* tests/get/gg_get_ix.sh:
3464	Remove the working files at the end of the tests.
3465
3466	* ChangeLog: Brought up to date.
3467
3468	* docs/cssc.texi: Indicated the new version.
3469
3470	* configure.ac: Bumped the version number.
3471
3472	* NEWS: Fixed SourceForg bug 581740.
3473
3474	* bsd/Makefile.am, testutils/condense-valgrind.pl, file.cc, file.h, get.cc:
3475	Honour the user's choice of umask - fixes SpurceForge bug 581740
3476
3477	* docs/get-spec.txt: Removed the out of date file get-spec.txt
3478
3479	* docs/Makefile.am: Removed getspec.txt (since it is out of date).
3480
3481	* NEWS:
3482	On Red Hat Linux, info files live in /usr/share/info not /usr/info.
3483
3484	* auxfiles/CSSC.spec.in:
3485	infodir has moved from /usr/info to /usr/share/info.
3486
3487	* quit.cc:
3488	Fix SourceForge bug number 816679, which caused a coredump if
3489	cleanup::~cleanup() was called before there are any entries in the
3490	cleanup list.
3491
3492	* tests/bsd-sccs/driver-basic.sh, tests/bsd-sccs/sf595594.sh:
3493	Fixed SourceForge bug 806699: Make the test work even if the user had
3494	set $PROJECTDIR.
3495
3496	* NEWS, sf-get2.cc, tests/get/defsid.sh:
3497	Make "get -e" take account of the "d" flag.
3498
34992003-05-29  James Youngman  <jay@gnu.org>
3500
3501	* sccsfile.cc: sccs_file::sccs_file(): Ensure that this->f is NULL when
3502	we return for mode CREATE (previously it was uninitialised).
3503	This fixes SourceForge bug 745608.
3504
3505	* sf-write.cc:
3506	CYGWIN: end_update: Only close the SCCS file if it is open (the FILE*
3507	is not NULL).  On platforms other than CYGWIN, we don't close he file
3508	anyway.
3509
35102003-05-19  James Youngman  <jay@gnu.org>
3511
3512	* docs/Platforms: Corrected email address for Clement T. Cole.
3513
35142003-05-18  James Youngman  <jay@gnu.org>
3515
3516	* tests/common/test-common:
3517	Cope with the case where "remove" is called with no arguments.
3518
35192003-05-16  James Youngman  <jay@gnu.org>
3520
3521	* Makefile.am: Also clean "sccsdiff" for "make clean".
3522
35232003-05-05  James Youngman  <jay@gnu.org>
3524
3525	* sf-get2.cc:
3526	"get -e" now takes notice of the default SID when deciding the SID of the new delta.
3527
35282003-03-15  James Youngman  <jay@gnu.org>
3529
3530	* README: Added pointer to docs/Platforms.
3531
3532	* docs/Platforms: Added MacOS X porting tip from Brad Crittenden.
3533
35342003-03-08  James Youngman  <jay@gnu.org>
3535
3536	* tests/get/excl_ig_2.sh: Don't cat the s-file at the end!
3537
3538	* tests/get/t-option.sh:
3539	Added test for Sourceforge bug #699318 ("get -t s.foo" when foo
3540	contains only one SID, created by "admin -iX -r1.1.1.1 s.foo").
3541
3542	* sccsfile.h, sf-get2.cc:
3543	Fixed Sourceforge bug #699318 ("get -t s.foo" when foo contains only
3544	one SID, created by "admin -iX -r1.1.1.1 s.foo").
3545
3546	* sf-get2.cc: Simplified the matching code.
3547
3548	* sf-get2.cc:
3549	find_requested_sid(): separated the does-this-SID-match decision from
3550	the is-this-the-best-yet decision.
3551
35522003-03-01  james_youngman  <jay@gnu.org>
3553
3554	* sf-write.cc, sccsfile.h:
3555	Recognise BitKeeper files by their different checksum lines, and
3556	accept also the BK-specific comment lines and extra flags (though
3557	don't accept them if the file is not a BK file).
3558
3559	* sccsfile.cc: Updated copyright years.
3560
3561	* sccsfile.h, sccsfile.cc:
3562	Recognise BitKeeper files by their different checksum lines, and
3563	accept also the BK-specific comment lines and extra flags (though
3564	don't accept them if the file is not a BK file).
3565
35662003-02-13  james_youngman  <jay@gnu.org>
3567
3568	* tests/get/sf664900.sh, sf-get2.cc:
3569	One-line fix for SourceForge bug 664900 by Darren Warner.
3570
3571	* configure.ac, acconfig.h:
3572	Fix CSSC bug 650420 - warnings from autoconf/autoheader about obsolete usage
3573	of acconfig.h file.
3574
35752002-12-08  james_youngman  <jay@gnu.org>
3576
3577	* testutils/Makefile.am:
3578	Include "decompress_stdin.sh.in" in the distribution.
3579
3580	* ChangeLog: Updated for 0.15pl0.
3581
3582	* configure.ac: Bumped to version 0.15pl0.
3583
3584	* NEWS: Added NEWS items for version 0.15pl0.
3585
35862002-11-02  james_youngman  <jay@gnu.org>
3587
3588	* seqstate.cc, seqstate.h, sf-get2.cc, sf-get.cc:
3589	support for ignored deltas
3590
3591	* tests/get/excl_ig_2.sh: added new test script
3592
3593	* tests/get/excl_ig_1.sh: enabled test xg6
3594
3595	* docs/cssc.texi:
3596	Added section on included, excluded and ignored deltas.
3597
3598	* tests/get/middle-fail.sh:
3599	Tut - use ${admin} not "admin" as a command name - make sure we are
3600	testing the correct instance!
3601
3602	* tests/bsd-sccs/sf595594.sh:
3603	Tut - use ${sccs} not sccs as a command name - make sure we are
3604	testing the correct instance!
3605
3606	* delta.cc:
3607	Indicate the presence of the -p option in the usage message.
3608
3609	* configure.ac:
3610	Fixed SF bug 623164: you need to include <ctype.h> to use isdigit().
3611
3612	* cssc.h:
3613	SF bug 623164: you need to include <ctype.h> to use isdigit().
3614
3615	* get.cc: Updated copyright year.
3616
3617	* autogen.sh: Recurse into subdirectories where appropriate.
3618
3619	* tests/common/command-names:
3620	Corrected bug where more than one argument is passed to test (which
3621	now justifiably complains when you do this).
3622
36232002-10-04  James Youngman <jay@gnu.org>
3624
3625	* auxfiles/CSSC.spec.in:
3626	Change references to sccs.1 to sccs.1* because RPM v4 compresses all manpages.
3627
36282002-09-27  James Youngman <jay@gnu.org>
3629
3630	* docs/cssc.texi:
3631	Changed all instances of @url to @uref, except where that would
3632	produce a broken link.
3633
3634	* docs/cssc.texi: Updated the update timestamp.
3635
3636	* docs/cssc.texi:
3637	Applied changes suggested by Timothy Bedding (SourceForge bug ID
3638	589542).
3639
36402002-09-20  James Youngman <jay@gnu.org>
3641
3642	* docs/cssc.texi: Updated the "last update" time.
3643
3644	* docs/cssc.texi: Corrected typo.
3645
3646	* docs/cssc.texi: Re-ordered some paragraphs for clarity.
3647
3648	* docs/cssc.texi:
3649	Explain that the line length limits apply only to lines which will end
3650	up in the histry file - and that over-length lines already in the
3651	history file will be correctly coped with by "get".
3652
3653	* docs/cssc.texi: Corrected cross-reference.
3654
3655	* docs/cssc.texi: Explain how to figure out which diff command is used.
3656
3657	* docs/cssc.texi:
3658	Expanded the discussion of the (lack of) line length limits in CSSC.
3659
36602002-08-16  James Youngman <jay@gnu.org>
3661
3662	* get.cc:
3663	If we fail to set the mode on the g-file correctly, delete it and propagate the failure information
3664
3665	* tests/bsd-sccs/driver-basic.sh, tests/common/command-names, get.cc:
3666	SourceForge bug 595594 - all g-files processed after a failing file are deleted
3667
3668	* tests/get/middle-fail.sh:
3669	SourceForge bug 595594 fixed - if we failed to get a previous file, all g-files processed later are deleted even if they were successful
3670
3671	* tests/bsd-sccs/sf595594.sh: Initial version of test.
3672
36732002-07-26  James Youngman <jay@gnu.org>
3674
3675	* run.cc: Updated copyright year.
3676
3677	* run.cc:
3678	Fixed inappropriate boolean inversion on systems where HAVE_FORK is not defined
3679
3680	* testutils/configure.in, configure.in:
3681	Removed old configure.in files - replaced by configure.ac
3682
3683	* testutils/COPYING, testutils/ChangeLog, testutils/INSTALL, testutils/NEWS, testutils/configure.ac, testutils/ekko.c, testutils/lndir.c, testutils/realpwd.cc, testutils/seeker.c, testutils/user.c, testutils/yammer.c, testutils/yes.c, README, configure.ac, run.cc, testutils/AUTHORS:
3684	Updated configure.in to configure.ac - we can now use autoconf version 2.53
3685
36862002-04-07  James Youngman <jay@gnu.org>
3687
3688	* tests/delta/p-option.sh:
3689	Some initial tests for the "-p" option of delta.
3690
3691	* NEWS: New check of link count when opening SCCS file
3692
3693	* docs/cssc.texi, tests/admin/hardlinks.sh, configure.in, sccsfile.cc:
3694	It is not allowed to have hard links to an SCCS file (that is, the link count may not be greater than 1).  Violating this rule now results in CSSC refusing to open that SCCS file
3695
3696	* scripts/rev-freq.sh: Corrected a shell syntax error
3697
36982002-04-05  James Youngman <jay@gnu.org>
3699
3700	* tests/admin/locks.sh, tests/admin/users.sh, tests/binary/auto.sh, tests/binary/seeking.sh, tests/common/need-prt, tests/prt/all-512.sh, tests/prt/default.sh, tests/prt/exists.sh, tests/prt/nodel.sh, tests/prt/reportmr.sh, NEWS, README, docs/cssc.texi, sf-prs.cc:
3701	Added support for running the test suite against versions of SCCS that lack a prt program
3702
37032002-04-04  James Youngman <jay@gnu.org>
3704
3705	* docs/cssc.texi:
3706	get -a now has test cases, so we no longer need to indicate that it is untested.
3707
3708	* get.cc, sccsfile.h, sf-get2.cc: support for the -a option of get
3709
3710	* sccsfile.cc, quit.h, sccsdate.cc, sf-kw.cc, sf-val.cc, sf-write.cc, admin.cc, quit.cc:
3711	Added global function 'warning' so that we don't have to issue warnings by calling 'errormsg'
3712
3713	* tests/get/gg_get_ix.sh:
3714	Removed redundant comment about tests that used to fail with CSSC (but
3715	no longer do so).
3716
3717	* tests/get/optorder.sh: Fixed typo
3718
3719	* tests/common/test-common:
3720	minor changes for the formatting of labels at the start of the lines of output of the tests - to preserve whitespace
3721
3722	* tests/get/a-option.sh: Tests for the "-a" option of "get".
3723
37242002-04-03  James Youngman <jay@gnu.org>
3725
3726	* configure.in:
3727	Updated the version number to indicate that any version someone checks
3728	out of CVS is from CVS (we use the suffix CVSDEVEL).
3729
3730	* configure.in:
3731	Up-date version number to 0.14alpha.pl0, prior to making the release
3732
3733	* Makefile.am: Added file myset.h to the distribution
3734
3735	* testutils/Makefile.am:
3736	Added some files missing from the distribution (notably mogrify.awk).
3737
3738	* ChangeLog: updated from log entries on other files
3739
3740	* docs/cssc.texi: enhancements to the sections on interoperability
3741
3742	* configure.in:
3743	Added HAVE_GNU_DIFF, which indicates if the diff command to be used s GNU diff
3744
3745	* showconfig.cc:
3746	Show the likely limit on the length of a line for the diff utility being used
3747
3748	* acconfig.h:
3749	Added HAVE_GNU_DIFF, which indicates if the diff command to be used s GNU diff
3750
3751	* environment.cc:
3752	Show the likely limit on the length of a line for the diff utility being used
3753
3754	* delta.cc, get.cc, tests/get/errorcases.sh:
3755	Invalid options produce a return value of 1 (on Solaris 2.6) not 2
3756
3757	* testutils/compare_gets.sh:
3758	Do not compare removes deltas - so do not pass -a to prs
3759
37602002-04-02  James Youngman <jay@gnu.org>
3761
3762	* NEWS: Corrected typos.
3763
3764	* tests/delta/options.sh:
3765	Unknown option error results in return value of 1, not 2.
3766
3767	* tests/delta/errorcase.sh, sf-delta.cc:
3768	A pre-existing d-file is not an error condition
3769
3770	* seqstate.cc, seqstate.h, sf-get.cc, sf-get2.cc, sf-get3.cc, tests/get/gg_get_ix.sh, tests/get/sf111140.sh:
3771	Do includes before excludes (except in the case of command-line includes) - fixes bug reported by gerry.green@cle.philips.com
3772
3773	* tests/get/sf111140_full.txt: test file
3774
3775	* tests/get/create.sh: Extra checks as we go along.
3776
37772002-03-28  James Youngman <jay@gnu.org>
3778
3779	* NEWS: Updated with the latest info
3780
3781	* docs/TESTING: added Gerry Green
3782
3783	* tests/get/gg_get_ix.sh, sccsfile.h, sf-delta.cc, sf-get.cc, sf-get2.cc, sf-get3.cc, sf-prs.cc, Makefile.am:
3784	Make sure everybody is using sccs_file::prepare_seqstate() in the same way
3785
3786	* tests/get/gg_get_ix.sh: new test script from Gerry Green
3787
37882002-03-26  James Youngman <jay@gnu.org>
3789
3790	* tests/get/errorcases.sh, docs/tests-todo.txt, get.cc:
3791	gcov fixes - invalid SIDs for get -i and get -x
3792
3793	* docs/.cvsignore: Ignore cssc.info-4
3794
3795	* sccs-cgi/.cvsignore: Ignore Makefile.in.
3796
3797	* docs/tests-todo.txt, tests/delta/errorcase.sh:
3798	Added extra 5test cases to increate test coverage
3799
3800	* sf-delta.cc:
3801	If the p-file indicates a SID which is not in the SCCS file, indicate
3802	which SID we have a problem with in the error message we produce.
3803
3804	* docs/tests-todo.txt: Removed todo items for the tests we've addded.
3805
3806	* testutils/user.c: Various enhancements for testing "delta".
3807
3808	* docs/cssc.texi: Comments about authorised user list
3809
38102002-03-25  James Youngman <jay@gnu.org>
3811
3812	* tests/delta/errorcase.sh:
3813	Extra test cases for the authorised user list.
3814
3815	* sf-get3.cc: Do not use '!' exclusion for authorised user list
3816
3817	* sccsfile.h, sf-get3.cc, sf-get2.cc, sf-delta.cc:
3818	delta should check that the invoking user is allowed to make deltas
3819
3820	* docs/cssc.texi:
3821	Made the SCCS file flags section headings reflect the contents better
3822
3823	* tests/delta/errorcase.sh: initial checkin
3824
3825	* tests/delta/MRs.sh:
3826	fixes to the tests - after testing against Solaris 2.6
3827
3828	* tests/delta/basic.sh:
3829	Added tests for the no-id-keywords-is-fatal flag
3830
3831	* testutils/user.c:
3832	added feature - 'tell me a group of which I am not a member'
3833
3834	* sccs-cgi/Makefile.am: initial version
3835
3836	* docs/tests-todo.txt: Removed the todo-items we've already done
3837
3838	* NEWS: We removed the -Y and -M options of delta
3839
3840	* Makefile.am: recurse into sccs-cgi also
3841
3842	* configure.in: generate  sccs-cgi/Makefile in AC_OUTPUT
3843
3844	* val.cc: Fixed header comment which indicated what the file was for
3845
3846	* sccsfile.cc:
3847	Use  v_unknown_feature_warning() instead of  v_errormsg() since the latter is no longer exported from quit.cc
3848
3849	* my-getopt.cc:
3850	Produce usage message is the command line exhibits wrong usage of options
3851
3852	* tests/common/test-common: Added function rename()
3853
3854	* tests/delta/MRs.sh:
3855	Extra test - should not be able to check in file without specifying an MR if the v flag is set
3856
3857	* tests/delta/basic.sh:
3858	extra tests (deletion of lines, checking of -r option against p-file)
3859
3860	* tests/delta/n-option.sh:
3861	remove any test files we will need to control at the start
3862
3863	* quit.cc, quit.h: Don't export v_errormsg as a global function
3864
38652002-03-24  James Youngman <jay@gnu.org>
3866
3867	* testutils/gcov-util.sh: Put the title in <title>...</title>.
3868
3869	* testutils/gcov-util.sh:
3870	Define $NOW (date at which the summary was prepared).
3871
3872	* testutils/gcov-util.sh:
3873	Tool for slicing and dicing the results of gcov.
3874
3875	* docs/tests-todo.txt:
3876	Added list of tests to be written in tests-todo.txt
3877
3878	* delta.cc: Removed options -M and -Y (not in normal SCCS anyway)
3879
3880	* tests/delta/options.sh:
3881	Added tests for the various command-line options of delta.
3882
3883	* NEWS: Brought the NEWS fie up to date with the ChangeLog file.
3884
38852002-03-23  James Youngman <jay@gnu.org>
3886
3887	* docs/cssc.texi: Use @option for options, not @samp.
3888
3889	* configure.in: spell --disable-max-line-length correctly
3890
3891	* sf-prs.cc:
3892	Print sequence numbers in correct (reverse) order; don't include ignored deltas in :DI: (for Solaris 2.6 compatibility)
3893
3894	* docs/cssc.texi:
3895	Documented val.  Included information about differences between the various SCCS versions
3896
38972002-03-22  James Youngman <jay@gnu.org>
3898
3899	* tests/prs/keywords.sh: Re-enabled all the tests...
3900
3901	* tests/prs/keywords.sh:
3902	Added test cases for having more than one SID in the included or
3903	excluded SID list.
3904
39052002-03-21  James Youngman <jay@gnu.org>
3906
3907	* sf-prs.cc:
3908	Backed out of the change made for previous revision - they should be
3909	shown as seq_nos after all...
3910
3911	* tests/prs/keywords.sh: :Dx: and friends should emit seq_no values.
3912
3913	* sf-prs.cc:
3914	For lists of included/excluded deltas, print the SID rather than the seq_no.
3915
3916	* myset.h, sf-delta.cc:
3917	Only list each included/excluded delta once in each include/exclude list.
3918
3919	* tests/prs/keywords.sh: Added tests for more keywords.
3920
39212002-03-20  James Youngman <jay@gnu.org>
3922
3923	* ChangeLog: Brought up to date with new log entries.
3924
39252002-03-19  James Youngman <jay@gnu.org>
3926
3927	* val.cc:
3928	Various fixes for the value returned in all sorts of validation-faulure cases
3929
3930	* tests/what/Makefile.am:
3931	We have a file whatbasic.sh but no keywords.sh
3932
3933	* tests/common/command-names: added val
3934
3935	* tests/Makefile.am: New test directory, 'val'
3936
3937	* tests/sact/sactbasic.sh, tests/val/Makefile.am, tests/val/valbasic.sh, tests/val/y2k.sh:
3938	reduced lines of untested code to 2083 - tests added for valand sact
3939
3940	* bsd/sccs.c: Fixed typos causing compilation errors
3941
3942	* bsd/sccs.c:
3943	Fixed SourceForge bug 531884, compiler warning on 64-bit systems
3944
3945	* file.cc:
3946	While trying to do atomic NFS file locking, sleep for a bit if we fail
3947	to make the hard link from nfslckNNNN to z.foobar.
3948
3949	* sf-delta.cc, filediff.cc, filediff.h:
3950	Fixed SourceForge bug 530969 - FILE* leak in fildiff.cc
3951
3952	* docs/Platforms:
3953	Updated following testing on the SourceForge compile farm
3954
3955	* README: Inform reader that GNU make is probably required.
3956	Removed the "stop press" which is now old news.
3957
39582002-03-18  James Youngman  <jay@gnu.org>
3959
3960	* tests/what/whatbasic.sh, what.cc:
3961	Added an extra test (test w22) in whatbasic.sh to cover the whole of the print_what() function in what.cc.
3962
3963	* tests/Makefile.am: Added test-what.
3964
3965	* docs/cssc.texi, tests/Makefile.am, tests/what/Makefile.am, NEWS, my-getopt.cc, my-getopt.h, what.cc:
3966	Added tests for what - and therefore some bugfixes too
3967
3968	* tests/what/whatbasic.sh:
3969	On the other hand, this version passes when run against Solaris 2.6...
3970
3971	* tests/what/whatbasic.sh:
3972	This version passes for CSSC but has not been checked against SCCS.
3973
3974	* docs/Platforms:
3975	Works on Solaris 2.6 and Debian 3.0 as well as GCC version3
3976
3977	* docs/patches.txt: Corrected a typo
3978
39792002-03-17  James Youngman  <jay@gnu.org>
3980
3981	* tests/common/config-data:
3982	Include binary file support tests on SunOS.  Note that some tests are
3983	*still* disabled on SunOS, because they still fail (e.g. the ability
3984	to automatically revert to binary-mode when reading the initial body
3985	from stdin).
3986
3987	* bsd/sccs.c:
3988	Issue more helpful messages about the unimplemented comb and help commands.
3989
3990	* bsd/sccs.c: Corrected spelling error in warning message.
3991
3992	* bsd/sccs.c:
3993	Since we are not includeing <strings.h> and there is not need to
3994	depend on it, roll our own rindex() and index() functions from the
3995	functions provided by <string.h>.
3996
39972002-03-16  James Youngman  <jay@gnu.org>
3998
3999	* tests/prs/body.sh, tests/prs/s_foo_bd_output.txt, tests/prs/sample_foo:
4000	Test the :BD: keyword of prs
4001
4002	* bodyio.cc:
4003	valgrind-detected bug: do keyword checking on the uuencoded version of the data
4004
4005	* docs/cssc.texi, tests/prs/body.sh: Tests for prs -d:GB:
4006
40072002-03-10  James Youngman  <jay@gnu.org>
4008
4009	* prompt.cc, sccsdate.cc, sccsfile.cc, sccsfile.h, sf-delta.cc, sf-prs.cc:
4010	valgrind: don't use sccs_date(NULL) - previously we had an uninitialised variable sccs_date.second as a result of using sccs_date::sccs_date(NULL)
4011
40122002-03-04  James Youngman  <jay@gnu.org>
4013
4014	* docs/cssc.texi:
4015	Added glossary; spelling corrections; updated copyright years
4016
40172002-03-03  James Youngman  <jay@gnu.org>
4018
4019	* tests/sccsdiff/rap.sh:
4020	Fixed sourceforge bug 489311 (Locale settings cause test failure)
4021
40222002-02-25  James Youngman  <jay@gnu.org>
4023
4024	* tests/Makefile.am, tests/sact/Makefile.am, tests/sact/sf513800.sh, tests/sact/sf513800_1.uue, tests/sact/sf513800_2.uue, sccsdate.cc:
4025	test for Sourceforge bug sf513800.sh and a fix for the same
4026
40272002-02-23  James Youngman  <jay@gnu.org>
4028
4029	* ChangeLog, ChangeLog.2:
4030	Moved the changelog entries from ChangeLog into ChangeLog.2.  New
4031	changeLog entries to go into ChangeLog, and the ChangeLog.1 and
4032	ChangeLog.2 files contain historical changelogs.
4033
40342001-12-04  James Youngman  <jay@gnu.org>
4035
4036	* delta.cc: Fixed SourceForge bug 489005
4037
40382001-12-02  James Youngman  <jay@gnu.org>
4039
4040	* NEWS, except.h, quit.cc, quit.h, sccsfile.cc, sccsfile.h, tests/prt/all-512.sh, tests/prt/default.sh, tests/prt/nodel.sh:
4041	Added warning when we see an excluded delta (since we are not certain
4042	we handle this correctly).  The warnig includes a pointer tot he web
4043	page explaining what the user should do about this.
4044
40452001-12-01  James Youngman  <jay@gnu.org>
4046
4047	* configure.in:
4048	bumped version - to avoid confusion with previous release
4049
4050	* NEWS, bodyio.cc, file.cc, file.h, filediff.cc, get.cc, sf-delta.cc, sf-kw.cc:
4051	Fixed sourceforge bugs 480136, 481519, 481707, 484278 - all related to setuid operation, and in fact all dupliactes of each other
4052
40532001-11-29  James Youngman  <jay@gnu.org>
4054
4055	* docs/CREDITS, sccs-cgi/sccs.cgi, sccs-cgi/sccs.cgi.text, AUTHORS:
4056	Added Richard Kettlewell's sccs.cgi script.  Updated AUTHORS and
4057	CREDITS files appropriately.
4058
4059	* quit.cc:
4060	Fixed compilation error ocurring when HAVE_EXCEPTIONS is not defined
4061
40622001-11-25  James Youngman  <jay@gnu.org>
4063
4064	* configure.in:
4065	Set the language back to C after doing the check for broken printf
4066	macros in the glibc header files.  (Also set up for a release).
4067
4068	* get.cc, sf-get2.cc, tests/common/command-names, tests/get/sf479916.sh:
4069	Fixed sourceforge bug #479916 - get -t problem
4070
4071	* sccsdiff.sh.in: Corrected a syntax error.
4072
4073	* NEWS: Fixed SF bug 450900.
4074
4075	* tests/get/removed-delta.sh: Test case for SourceForge bug 450900
4076
4077	* delta-table.cc:
4078	SF bug #450900 - if you try to check out a version for
4079	editing, and the SID that would ordinary be selected exists
4080	but is removed, we should indeed use it.
4081
4082	* ChangeLog: Updated with recent change log entries.
4083
4084	* Makefile.am, NEWS, configure.in:
4085	Fixed debian bug #120080 (sccsdiff cannot find get iuis /usr/sccs
4086	symlink is missing)
4087
4088	* sccsdiff.sh.in:
4089	fixed Debian  Bug#120080: sccs sccsdiff doesn't work (sccsdiff assumes /usr/sccs symlink exists)
4090
4091	* bsd/sccs.c, tests/admin/comment.sh, tests/admin/init-mr.sh, tests/admin/locks.sh, tests/admin/t-option.sh, tests/admin/users.sh, tests/prs/exists.sh, tests/prs/keywords.sh, tests/prt/all-512.sh, tests/prt/all.expected.Z, tests/prt/expected/nodel.-u, tests/prt/expected/nodel.-u-f, tests/prt/expected/nodel.-u-f-t-b, NEWS, configure.in, sf-admin.cc, sf-prs.cc, sf-prt.cc:
4092	Brought test suite - and code - into line with Solaris 2.6 behaviour; largely changes for formatting of prt/prs output, but also a change to the behaviour of admin -fl
4093
4094
4095