2024-05-12  James Youngman  <james@youngman.org>

	Update NEWS file to briefly describe changes.

2024-05-12  James Youngman  <james@youngman.org>  (tiny change)

	Build fix for version.h.
	This previously failed on some systems where <stdio.h> includes
	<unistd.h> and on which gnulib replaces <unistd.h>.  For example, Mac
	OS.   One-line fix from Ryan Carsten Schmidt.

	Include <cstdlib> where needed.
	This is a MacOS build fix by Ryan Carsten Schmidt.

2024-05-12  James Youngman  <james@youngman.org>

	Update copyright years.

	Update bootstrap script.

	Update to build with modern autotools and recent Python versions.
	For the moment, the googletest code doesn't build, so we temporarily
	exclude the unit-tests subdirectory.

2021-06-09  James Youngman  <james@youngman.org>

	Fix typo in comment.

2019-07-27  James Youngman  <jay@gnu.org>

	Test the test infrastructure function, "docommand".
	* tests/initial/docommand.sh: new test, for "docommand" itself.

2019-07-04  James Youngman  <jay@gnu.org>

	Delete unused script tests/all-tests.sh.
	* tests/all-tests.sh: delete; it's unused and in any case didn't
	actually run all the tests.

	Add missing arg in C++14 version of make_unique_file_lock().
	* src/file.cc: add missing constructor argument in
	make_unique_file_lock().  The argument was only missing from the
	branch of the code compiled in C++14 environments.

2019-06-26  James Youngman  <jay@gnu.org>

	Add --with-googletest configure option (the default is yes).
	* condfigure.ac (--with-googletest): add this option.  The default
	value is yes.  When set, is sets the COND_GOOGLETEST Automake
	conditional.
	* Makefile.am (SUBDIRS): when COND_GOOGLETEST is unset, don't include
	unit-tests in SUBDIRS, because the unit tests depend on googletest.

	Avoid confusing enum cssc::condition with local variables.
	src/failure.cc (make_error_condition): avoid confusion between the
	enum cssc::condition and the local variable condition by renaming the
	local variable, and qualifying the enum name with its enclosing
	namespace.
	(category_impl::equivalent): Likewise.

	Ignore build-aux/install-sh in "git status".
	build-aux/.gitignore: ignore install-sh.

	svn is no longer needed for a build.
	* bootstrap.conf: svn is no longer needed, since the googletest repository
	has moved to git.

	Mention that a POSIX sh is needed to run ./bootstrap.
	* README-hacking: mention that a POSIX sh is needed to run ./bootstrap.

	Avoid make_unique, ensuring we can compile with C++11.
	* src/linebuf.h, src/linebuf.cc: declare and implement
	  make_unique_linebuf(), a straigtforward alterntive to
	  std::make_unique<cssc_linebuf>(). Avoiding std::make_unique<T>(...)
	  allows a dependency on C++14.
	* src/base-reader.h (sccs_file_reader_base): avoid make_unique and
	  brace initialisation.
	* src/body-scanner.h,
	src/body-scanner.cc (make_unique_sccs_file_body_scanner): new
	function which is a simple alternative to
	std::make_unique<sccs_file_body_scanner>(...).
	* src/delta-table.h,
	src/delta-table.cc (make_unique_cssc_delta_table): Similarly for
	cssc_delta_table.
	* src/delta.h, sf-delta.cc: Similarly for delta.
	* src/filelock.h, src/file.cc: Similarly for file_lock.
	* src/parser.h: declare make_unique_open_result(), a replacement for
	  std::make_unique<sccs_file_parser::open_result>. Similarly for
	  make_unique_sccs_file_parser().
	* src/parser.cc (sccs_file_parser::open_sccs_file): use the new
	make_unique_*() factory functions instead of std::make_unique.  Define
	the factory functions newly added to parser.h.
	* src/sccsfile.cc (sccs_file::sccs_file): use
	make_unique_cssc_delta_table().
	* src/sccsname.h (sccs_name::lock): use make_unique_file_lock().

2019-06-20  James Youngman  <jay@gnu.org>

	Ensure that sed's input includes a final newline.
	* tests/common/test-common (docommand): ensure that sed's input has a
	final newline, to work around the fact that some sed implementations
	cannot handle (or issue a diagnostic for) non-empty input lacking a
	final newline.

2019-06-09  James Youngman  <jay@gnu.org>

	Add shell linting syntax check.
	* build-aux/shell_check.sh: script which lints vc-controlled scripts.
	* cfg.mk: invoke shell_check.sh in "make syntax-check".

	Remove trailing blank lines from some files.
	* src/relvbr.cc: Remove trailing blank lines.
	* src/stringify.h: Remove trailing blank lines.

	Fix some shellcheck "lint" warnings.
	* auxfiles/check-testfiles.sh: fix various small issues (such as
	missing quoting) identified by shellcheck.
	* tests/all-tests.sh: Likewise.
	* tests/binary/seeking.sh: Likewise.
	* tests/bsd-sccs/sf595594.sh: Likewise.
	* tests/cdc/4order.sh: Likewise.
	* tests/delta/p-option.sh: Likewise.
	* tests/sccsdiff/rap.sh: Likewise.
	* tests/unget/output.sh: Likewise.
	* tests/val/y2k.sh: Likewise.
	* testutils/gcov-util.sh: Likewise.

	Make regression test output terser (when the tests pass).
	* tests/Makefile.am: run tests with a Python test driver which
	produces briefer output when all tests passes.
	* tests/run_tests.py: this is the new test driver.

	Turn on -Wredundant-decls for configure --enable-warnings.
	* configure.ac: Don't exclude -Wredundant-decls.

	tests/admin/hardlinks.sh: don't leave s.foo behind.
	* tests/admin/hardlinks.sh: remove s.foo when cleaning up.

	Remove space-tab sequence.
	* src/parser.cc: Remove space-tab, changing it to just spaces.

2019-06-06  James Youngman  <jay@gnu.org>

	class range_list: give member variable names a trailing "_".
	* src/sid_list.h (range_list): Rename member variables to give them a
	final "_".
	* src/sl-merge.h: Likewise.

	class sccs_name: give member variable names a trailing "_".
	* src/sccsname.h: Rename member variables with a trailing "_".
	* src/sccsname.cc: Update accordingly.

	class sccs_file: give member variable names a trailing "_".
	* src/sccsfile.h: Rename member variables to give them a final "_".
	* src/get.cc: Update accordingly.
	* src/run.cc: Update accordingly.
	* src/sccsfile.cc: Update accordingly.
	* src/sf-add.cc: Update accordingly.
	* src/sf-admin.cc: Update accordingly.
	* src/sf-delta.cc: Update accordingly.
	* src/sf-get.cc: Update accordingly.
	* src/sf-get2.cc: Update accordingly.
	* src/sf-get3.cc: Update accordingly.
	* src/sf-prs.cc: Update accordingly.
	* src/sf-prt.cc: Update accordingly.
	* src/sf-rmdel.cc: Update accordingly.
	* src/sf-val.cc: Update accordingly.
	* src/sf-write.cc: Update accordingly.
	* src/writesubst.cc: Update accordingly.

	Add TODOs to rename member variables to give them trailing "_".
	* src/sccsfile.h; Add TODOs to rename member variables to give them
	trailing "_".
	* src/sccsname.h: Likewise.
	* src/seqstate.h: Likewise.
	* src/sid_list.h: Likewise.

	class sccs_date: give member variable names a trailing "_".
	We also now detect failure of localtime().
	* src/sccsdate.h: rename year to year_, and so forth.
	* src/sccsdate.cc: Likewise.
	(sccs_date::now): throw an exception if localtime() fails.
	* unit-tests/test_sccsdate.cc: Update the expected error
	output ("year" -> "year_") in the death test for out-of-range years.

	class relvbr: fix naming, comparison operators.
	src/relvbr.h (class relvbr): rename member variables to give them a
	final "_". Make comparison operators const member functions instead of
	friends.
	src/relvbr.cc: Rename member variables accordingly.

	class release_list: give member variable names a trailing "_".
	* src/rel_list.h: Rename member "l" to "releases_".
	* src/rel_list.cc; Likewise.
	* src/rl-merge.cc: Likewise.  Use std::swap instead of assignment to
	replace this->releases_ with a temporary, for better exception safety.

	class release: comparison operators are now members, not friends.
	* src/release.h: change comparison operators to be members, not
	friends.

	class release: give member variable names a trailing "_".
	* src/release.h: Rename member variables names to have a trailing
	underscore "_".
	* src/release.cc: Update accordingly.

	class sccs_pfile: give member variable names a trailing "_".
	* src/pfile.h: Rename member variables names to have a trailing
	underscore "_".
	* src/pf-add.cc, src/pf-del.cc, src/pfile.cc: Update accordingly.

	class CSSC_Options: give member variable names a trailing "_".
	* src/my-getopt.h: Rename member variables names to have a trailing
	underscore "_".
	* src/my-getopt.cc: Likewise.

	class linebuf: give member variable names a trailing "_".
	* src/linebuf.h: Rename member variables names to have a trailing
	underscore "_".
	* src/linebuf.cc: Likewise.

	class sccs_file_iterator: give member variable names a trailing "_".
	* src/fileiter.h: Rename member variables names to have a trailing
	underscore "_".
	* src/fileiter.cc: Likewise.

	class FileDiff: give member variable names a trailing "_".
	* src/filediff.h: Rename member variables names to have a trailing
	underscore "_".
	* src/filediff.cc: Likewise.

	class diff_state: give member variable names a trailing "_".
	* src/diff-state.h: Rename member variables names to have a trailing
	underscore "_".
	* src/diff-state.cc: Likewise.

	delta-table.h: give member variable names a trailing "_".
	* src/delta-table.h: Rename member variables names to have a trailing
	underscore "_".
	* src/delta-table.cc: Likewise.
	* src/dtbl-prepend.cc: Likewise.
	(cssc_delta_table::prepend): use std::swap to update l_ from a
	temporary.

	delta_iterator: member variable names get trailing "_".
	* src/delta-iterator.h: Distinguish member variables by giving them a
	trailing "_".
	* src/delta-iterator.cc: Likewise.

	Fixup; trailing whitespace.

	Factor classes release and relvbr out of sid.cc.
	* src/Makefile.am (libcssc_a_SOURCES): add release.cc and relvbr.cc.
	* src/release.cc: move implementation of class release out of sid.cc.
	* src/relvbr.cc: move implementation of class relvbr out of sid.cc.
	* src/sid.cc: delete the implementations of release and relvbr from
	here.
	(get_comp): rename to get_id_comp and make it global.
	* src/sid.h (get_id_comp): declare it here.

	class sid: No friends.  Don't compare with memcmp.
	* src/sid.h (comparison operators): use a const member function
	instead of a friend.  Do equality comparison by using == or != on the
	member variables, not by using memcmp(!).  Say "operator>" instead of
	"operator >".

	class sid: use trailing _ for member variables.  Reduce friends.
	* src/sid.cc: Rename member variables.  Update release::release(const
	sid&) to use sid.get_release() and relvbr::relvbr(const sid&) to use
	sid.get_relvbr().
	* src/sid.h: Rename member variables to have a trailing "_".  Remove
	friend declarations for constructors release::release(const sid&) and
	relvbr::relvbr(const sid&).  Add methods get_release() and
	get_relvbr().

2019-06-05  James Youngman  <jay@gnu.org>

	Re-order members of class sid to give public members first.
	* src/sid.h (sid): Re-order members of class to give public members
	first.  Re-indent some of the functions in the GNU style.

	Don't track "whodunit" attributes of seq inclusion/exclusion.
	This information doesn't affect the behaviour of the program, we only
	tracked it to print it in debug information.  Simplify the code by
	removing it.
	* src/seqstate.h (seq_state::one_state): eliminate the done_by member
	variable and the BY_DEFAULT/BY_COMMAND_LINE enum used with it.
	(seq_state::set_explicitly_included): remove the whodunit argument
	which had been used to set the value of one_state::done_by.
	(seq_state::set_explicitly_excluded): Likewise.
	(seq_state::set_included): Likewise.
	(seq_state::set_excluded): Likewise.
	(seq_state::set_ignored): Likewise.
	(seq_state::whodunit): delete this method.
	* src/sf-get.cc (sccs_file::prepare_seqstate_1): don't pass the
	whodunit arguments to these methods.
	* src/get.cc: don't print the whodunit information in the debug output.
	* src/seqstate.cc (seq_state::seq_state): don't initialise the done_by
	  member of one_state.
	(seq_state::set_explicitly_excluded): delete the whodunit argument.
	Similarly for the other methods listed as changed for seqstate.h
	above.
	* src/sf-get3.cc (seq_state::prepare_seqstate_2): don't pass whodunit
	arguments.

	Fix some compiler warnings.
	* src/prt.cc (main): remove useless cast.
	* src/sf-cdc.cc (inlist): delete this unused function.
	* src/sid.h (sid): add method get_release().
	* src/sid.cc (sid::get_release): implement this method.
	* src/sf-get2.cc (sccs_file::sid_matches): instead of casting value to
	type release, call sid::get_release() to extract the release number
	from SIDs.

	Fix some compiler warnings.
	* src/get.cc: move misplaced return statement.
	* src/parser.h (open_result): provide a constructor.
	* src/rmdel.cc (main): remove unused variable.
	* src/sccsfile.h (get_status): provide a constructor.

	Avoid warning about unused function validate_substituted_flags_list.
	* src/sf-val.cc (sccs_file::validate): call
	validate_substituted_flags_list even though it currently does
	nothing.  This will silence a compilation warning.

	Avoid unused-function warning for call_system.
	* src/run.cc (run): when NEED_CALL_SYSTEM is not #defined, take the
	address of call_system and cast it to void, to simultaneously avoid
	"unused function" and "statement has no effect" warnings.

	Avoid problems with matching format strings and actual arguments.
	* src/body-scanner.cc: use a pair of convert() template functions to
	avoid warnings about static_cast<T>() being ineffective.
	* src/file.cc: (get_user_name): use stringify.
	* src/stringify.h: new file containing a template function that turns
	its argument into a string.
	* src/Makefile.am: add stringify.h to libcssc_a_SOURCES.

	Fix some "Effective C++" warnings in src/sf-prt.cc
	* src/sf-prt.cc: add some missing initializers.  Remove some useless
	casts.

	prt: add missing prototype.
	* src/sccsfile.h (print_flag): add missing prototype for
	print_flag(FILE *out, const char *fmt, const std::string* pflag,
	int& count).

	Fix some "Effective C++" warnings in sccsfile.{h,cc}.
	* src/sccsfile.cc: add some missing initialisers.  Distinguish
	creation of a new ParserOptions object from a cast operation.
	* src/sccsfile.h: Prohibit copying sccs_file_flags since it has
	pointer members.  Add TODO to switch to optional<string> instead of
	string*.

	Use STL vectors to manage things in run.cc and simplify the code.
	* src/run.cc (call_system): always compile this, since system() will
	exist everywhere.  Only use it as a fallback (e.g. where there is no
	fork or spawn), though.
	(run): use STL vectors to hold arguments, simplifying the
	memory-management book-keeping.
	(run_mr_checker): simplify code and fold it into
	sccs_file::check_mrs.
	* src/run.h: There are no other callers of run_mr_checker, so none of
	the prototypes in this header file are needed; delete this file.
	* src/Makefile.am (libcssc_a_SOURCES): delete run.h
	* src/sf-delta.cc: don't include run.h.

	Avoid double-closing of files by prohibiting copying FileCloser.
	* src/l-split.cc (FileCloser): prohibit copying by deleting the
	assignment operator and copy constructor.

	Compiler warning fixes in src/sf-delta.cc.
	* src/sf-delta.cc (sccs_file::add_delta): remove unused variable and
	useless cast.

	Avoid signed/unsigned comparison in delta-iterator.cc.
	* src/delta-iterator.h: change type of pos member variable to avoid
	signed/unsigned comparison.   Add member variable first_ (it's true
	when pos would have previously been -1).  Add a private method
	advance() whose job it is to know about first_.
	* src/delta-iterator.cc: update the next() methods.

	Fix unsigned long / unsigned inconsistency between format and arg.
	* src/parser.cc: fix format-string versus arg type inconsistency.

	Include the filename in the error message if emit_raw_body fails.
	* src/body-scanner.cc (sccs_file_body_scanner::emit_raw_body): when
	there is a write error, ensure that the failure message includes the
	name of the file we were unable to write to.

	Detect overflow in line numbers in diff output.
	* src/diff-state.h (diff_state): change in_lineno and out_lineno from
	int to long, for consistency with strtol(), which is what we use to
	parse numbers in the diff output.
	(diff_state::in_line, diff_state::out_line): update return type to be
	consistent.
	* src/except.h: Add new exception class CsscInternalRangeException.
	* src/diff-state.cc (get_num): all decimal conversions are now
	performed through this function.  Correctly detect range errors in
	the input.  Throw CsscInternalRangeException when this happens.
	(diff_state::next_state): change line number variables from int to
	long.  Use get_num() for conversion instead of strtol().  Eliminate
	C-style casts.

2019-06-04  James Youngman  <jay@gnu.org>

	Rewrite, simplify sccs_file_iterator, avoiding pointer members.
	* src/fileiter.h: simplify declaration order.
	* src/fileiter.cc: generate file name list in the constructor so that
	there is no longer any need for long-lived raw pointer
	members (argv, argc).

	Follow "Effective C++" guidelines for initialiser lists.
	* src/sid_list.h: add missing member variables to constructor
	initializer lists.  Change return type of valid(), empty() and
	member() predicates from int to bool.

	Follow "Effective C++" guidelines for initialiser lists.
	* src/fileiter.cc (sccs_file_iterator::sccs_file_iterator): add
	member variables previously missing from the constructor's initialiser list.
	* src/parser.h (parsed_flag::parsed_flag): Likewise.
	* src/rel_list.cc (release_list::release_list): Likewise.
	* src/sccsdate.cc (sccs_date::sccs_date): Likewise.

	Don't turn on -Wformat-nonliteral with --enable-warnings.

	Fix some name-shadowing warnings.
	* src/get.cc (sccs_file::get): avoid shadowing by eliminating or
	renaming local variables.
	* src/sf-prs.cc: avoid shadowing by renaming function parameters (so
	that they don't conflict with the parameter names of a lambda).

	Support assignment of FailureOr<T> instances.
	* src/failure_or.h: Support assignment of FailureOr<T> instances.
	* src/body-scanner.cc: Use assignment to avoid shadowing.
	* src/sf-prt.cc: Likewise.

	Replace C-style casts with static_cast<T>() calls.
	* src/get.cc: change C-style casts to static_cast<T>.
	* src/parser.cc: Likewise.
	* src/sccsdate.cc: Likewise.
	* src/sccsfile.cc: Likewise.
	* src/sf-admin.cc: Likewise.
	* src/sf-chkid.cc: Likewise.
	* src/sf-delta.cc: Likewise.
	* src/sf-get2.cc: Likewise.
	* src/sf-prs.cc: Likewise.
	* src/sf-prt.cc: Likewise.
	* src/sf-val.cc: Likewise.

	Eliminate (or convert to static_cast) C-style casts in file.cc.
	* src/file.cc (get_nlinks): the link count is of type nlink_t, not
	long.   Change the return type of the function to eliminate a cast.

	Change use of 0 or NULL to nullptr.
	* src/admin.cc: Change use of 0 or NULL to nullptr.
	* src/delta-table.cc: Likewise.
	* src/fatalsig.cc: Likewise.
	* src/file.cc: Likewise.
	* src/filediff.cc: Likewise.
	* src/get.cc: Likewise.
	* src/l-split.cc: Likewise.
	* src/rel_list.cc: Likewise.
	* src/run.cc: Likewise.
	* src/sccsdate.cc: Likewise.
	* src/sccsfile.cc: Likewise.
	* src/sccsname.cc: Likewise.
	* src/sf-admin.cc: Likewise.
	* src/sf-chkid.cc: Likewise.
	* src/sf-get3.cc: Likewise.
	* src/sf-kw.cc: Likewise.
	* src/sf-prs.cc: Likewise.
	* src/sf-prt.cc: Likewise.
	* src/sf-rmdel.cc: Likewise.
	* src/val.cc: Likewise.

	Fix call to errormsg() (cannot currently pass a std::string).
	* src/sf-admin.cc (sccs_file::admin): pass strings to errormsg as
	const char*, not std::string.

	Warning cleanups: missing initialisers, nullptr, C-style casts.
	* src/base-reader.cc (strict_atous): use static_cast instead of a
	C-style cast.
	* src/diff-state.cc: Add TODO about old-style cast.
	* src/diff-state.h: Prohibit copying diff_state.
	* src/failure.cc: eliminate useless cast.
	* src/linebuf.cc: use nullptr instead of 0.
	* src/quit.cc: initialise all members in the constructor initialiser
	list.

	Remove duplicate source files from libcssc_a_SOURCES.
	* src/Makefile.am (libcssc_a_SOURCES): remove duplicates, list in
	sorted order.

	Simplify per-binary sources since most objects can be in libcssc.
	* src/Makefile.am (libcssc_a_SOURCES): move the source files to here.
	(unget_SOURCES, prt_SOURCES): include only the file containing main.
	(prs_SOURCES, get_SOURCES, rmdel_SOURCES, cdc_SOURCES): Likewise.
	(admin_SOURCES, delta_SOURCES): Likewise.

	Put the copyright data in a separate include file.
	Our previous attempt did not work because the \n" at the end of the
	lines in the copyright string constant made "make update-cpoyright"
	fail to recognise it as a copyright statement of interest.
	* src/copyright.cc: move the copyright data to a #include directive.
	Since the copyright string constant is no longer in this file,
	reinstate the header comment.
	* src/copyright_data.txt: the copyright statement is moved to here; we
	process it to make a generated source file, copyright_data.inc.  That
	file is included in copyright.cc.
	* src/Makefile.am: add rules to generate copyright_data.inc and a rule
	which tells Make that copyright.cc includes that file (so that we know
	when to rebuild copyright.$(OBJEXT)).
	* src/copyright.awk: this is the program which generates
	copyright_data.inc from copyright_data.inc.tmpl and
	copyright_data.txt.
	* src/copyright_data.inc.tmpl: the template for copyright_data.inc.

	Move printable copyright statement out into a separate source file.
	* src/showconfig.cc: move copyright string constant out into a
	separate, new, file so that "make update-copyright" will update it.
	* src/copyright.cc: this is the new file.
	* src/Makefile.am (libcssc_a_SOURCES): add copyright.cc.

	Use a safer cast to print CONFIG_MAX_BODY_LINE_LENGTH.
	* src/showconfig.cc: use a static assertion to make the programmer
	update a print specifier if CONFIG_MAX_BODY_LINE_LENGTH does not fit
	into long int, the type we currently use to print it.  Eliminate a
	C-style cast.

	Follow "Effective C++" guidelines for CSSC_Options constructor.
	* src/my-getopt.cc (CSSC_Options::CSSC_Options): initialise arg in the
	initialiser list.  Also more generally in this file, prefer nullptr to
	0.

	Follow "Effective C++" guidelines for seq_state constructors.
	* src/seqstate.cc (seq_state::seq_state): initialise states_ and
	inserting in the constructor initializer list.

	Avoid hiding std::error_condition::equivalent().
	* src/failure.h (cssc_category::equivalent): we must overload both
	vritual functions of this name in our derived class in order to avoid
	compiler warnings (g++ -Woverloaded-virtual) about the method in the
	drived class hiding a method of the same name in the base class.
	* src/failure.cc: define the other version of the function, too.

2019-06-03  James Youngman  <jay@gnu.org>

	Factor src/what.cc into smaller functions.
	* src/what.cc: Use nullptr for null pointers, instead of 0.  While
	we're touchign the file, factor out the middle part of main() into a
	new function what().  Factor out the repeated code in print_what()
	into a new function terminator().

	Warning fixes in src/body-scanner.cc.
	* src/body-scanner.cc (line_too_long): use static_cast rather than a
	C-style cast.
	(sccs_file_body_scanner::delta): use nullptr instead of a literal
	zero.
	(sccs_file_body_scanner::emit_raw_body): remove unused variable ch.

	Use nullptr instead of NULL in src/delta-iterator.cc.

	Adopt "Effective C++" tips for initialiser lists.
	* src/delta-table.h (cssc_delta_table::cssc_delta_table): explicitly
	default-construct member "l".
	* src/diff-state.h (diff_state::diff_state): explicitly
	default-construct member "linebuf".

	Prevent copying of subst_parms.
	If we allow copying, we would need to figure out a way to arbitrate
	who can write to the output file, when.   We don't need more than one
	instance of this per get operations, so supporting copying seems
	pointless.
	* src/subst-parms.h: delete the copy constructor and the assignment
	operator.

	Prohibit copying FileDiff (since it has a FILE* member).

	Adopt "Effective C++" tips for initialiser lists.
	* src/delta-table.h: update constructors to explicitly initialise all data
	members in the initializer list.

	src/my-getopt.cc, src/sid_list.h: spell "NULL" as "nullptr".

	Adopt "Effective C++" tips for initialiser lists.
	* src/pfile.cc: update constructors to explicitly initialise all data
	members in the initializer list.
	* src/seqstate.cc: Likewise.

	sid_list.h: change "NULL" to "nullptr".

	Prohibit copying of sccs_file_body_scanner.
	If we allowed copying, two instances might share the same FILE
	object and get surprising results since they would share a common
	file seek offset.
	* src/body-scanner.h: delete the copy constructor and assignment
	operator.

	Adopt "Effective C++" tips for initialiser lists in edit_lock.

	Adopt "Effective C++" tips for initialiser lists in sccs_name.
	* src/sccsname.h: move sccs_name::sccs_name() to sccsname.cc.
	* src/sccsname.cc (sccs_name::sccs_name): list all the data members in
	the initialiser list, even if we want them default-constructed.
	Move the invalid_name() convenience function into the unnamed
	namespace.

	Adopt "Effective C++" tips for initialiser lists in class delta.
	* src/delta.h: mention all the fields in the initialiser lists in
	constructors, even if we only wanted them to be default-constructed.

	Update constructors of sid, relvbr, release.
	* src/delta.h: delta::Delta(): default-initialise id_ instead of
	initialising it from 0.
	* src/sid.cc: constructors for relvbr, release now use initialiser
	lists.

	Remove unused class CsscInvalidData.
	* src/except.h: remove unused class CsscInvalidData.

	class sid: support ostream output, remove conversion to const void*.
	* src/sid.h (operator void const*): remove conversion to void*.  Add
	ostream_insert(), called as the implementation for the new
	std::ostream inserter.
	* src/sid.cc (std::ostream& sid::ostream_insert(std::ostream& os)
	const): define this new method.
	(sid::as_string()): define in terms of the ostream inserter.
	* src/sf-get2.cc: check sid::is_null() to find out if a sid is valid,
	instead of relying on an implicit conversion to void*.
	* unit-tests/test_sid.cc: verify that sid::as_string() and the ostream
	inserter produce the same result, without trailing zeroes.

	NEWS: point out that this release is more careful to detect I/O errors on stdout in prt and prs.

	Apply some typo fixes to the ChangeLog.
	* build-aux/gen-changelog.sh: use amendment file
	build-aux/git-log-fix.
	* build-aux/git-log-fix: new file, containing edits to apply when
	converting the git log to the ChangeLog file.  This is mostly typo
	fixes.

	Prevent copying of sccs_file_reader_base.
	* src/base-reader.h (sccs_file_reader_base::sccs_file_reader_base):
	re-order initialization of data members such that it is consistent
	with the order in which they are declared in the class.
	Delete the copy constructor and assignment operator in order to
	prevent two instances conflicting on the file offset in the FILE
	object they would share.

	Minor warning fixes in src/bodyio.cc.
	* src/bodyio.cc (body_insert): remove unused variable "ret".
	(encode_file): use nullptr as the null pointer constant.

	Mark file_lock::do_cleanup() as override.
	* src/filelock.h: class file_lock::do_cleanup(): this is a virtual
	function also defined in the base class, so mark it override.

	Disallow copying of FilePosSaver instances.
	* src/filepos.h (FilePosSaver): prevent copying, so that we don't have
	to implement the assignment operator or the copy constructor.  Also
	initialise the position members in the various constructors.

	cssc_linebuf: prevent copying, thus simplifying implementation.
	* src/linebuf.h (cssc_linebuf): prevent copying so that we don't need
	to implement the copy constructor or assignment operator.

	Avoid assigning to FailureOr<T>, allowing T to be std::unique_ptr<Q>.
	* src/failure_or.h (FailureOr::operator=): delete assignment operator.
	* src/file.cc: avoid assigning to FailureOr<T>.
	* src/parser.cc: Likewise.
	* src/sf-delta.cc: Likewise.

	Forbid copying of instances of "class cleanup".
	* src/cleanup.h: delete the assignment operator and copy constructor
	so that we don't get the default implementations (since these would
	copy the pointer data members).  This is just for our convenience in
	not having to define those operations, not that we really need to
	prevent copying.

	Fix some warnings in src/failure.h.
	* src/failure.h (Failure::Failure(std::error_code)): initialise
	detail_ in this constructor.
	(Failure::Failure()): Initialise code_ and detail_ in this
	constructor.
	(make_failure_from_errno): remove useless cast to int.

	Don't use -Wabi-tag for --enable-warnings.
	* Makefile.am (-WARNINGS_NORMAL): add -Wabi-tag.

	When --enable-warnings, turn on warnings for C++ compilation.
	* src/Makefile.am (AM_CXXFLAGS): use $(WARN_CXXFLAGS) not
	$(WARN_CFLAGS).

	delta: when the d-file is not readable, don't call diff on it.
	* src/sf-delta.cc (sccs_file::add_delta): check whether the d-file is
	readable even if the file is not encoded.  When the file isn't
	readable, but the history file is encoded, clean up the u-file in the
	failure path.

	Make sccs_name::sub_file() private.  Simplify sccs_file::add_delta().
	* src/sccsname.h (sccs_name::sub_file): make private.
	(sccs_name::dfile): add method (returns "d.foo")
	(sccs_name::ufile): add method (returns "u.foo").
	* src/sf-delta.cc (sccs_file::add_delta): remove calls to sub_file,
	replacing them with calls to name.dfile() and name.ufile().
	Re-order some code to put declarations closer to usage.  Remove some
	unused debug code.

	delta: caller should now check authorised before add_delta().
	* src/sccsfile.h: change authorised() from protected to public.
	Change return type of check_keywords_in_file() from bool to
	Failure.
	* src/sf-delta.cc: update call to check_keywords_in_file().  Don't
	call authorised(); instead this will be the caller's responsibility.
	* src/sf-kw.cc (sccs_file::check_keywords_in_file): change return type
	to Failure and detect I/O errors more reliably.
	* src/delta.cc: Call authorised() directly to check whether the delta
	is allowed, since sccs_file::add_delta() no longer does this.

	delta: when we can't get the current body of the file, fail.
	* src/sf-delta.cc (sccs_file::add_delta): when sccs_file::do_get()
	fails, return false (and issue a more detailed error message).

	Push sccs_file_body_scanner::copy_to() down into sccs_file_reader_base.
	* src/body-scanner.h (sccs_file_body_scanner): push copy_to() method
	down into base class sccs_file_reader_base.
	* src/base-reader.h (sccs_file_reader_base): declare copy_to() here.
	src/body-scanner.cc (sccs_file_body_scanner::copy_to): remove this
	implementation.
	src/base-reader.cc (sccs_file_reader_base::copy_to): implement this
	method here.  Use block I/O instead of line-by-line I/O.  Change
	return type from bool to Failure.
	src/sf-write.cc (sccs_file::update): Update copy_to() call to inspect
	the returned Failure.

	FailureBuilder::diagnostic() should eventually be eliminated.
	* src/failure.h: add a TODO comment suggesting that we should
	eventually remove FailureBuilder::diagnostic().

	Diagnose any failure in time(2).
	* src/sccsdate.cc (sccs_date::now): throw an exception when time(2)
	fails.

	get: bugfix, fix garbled error message.
	* src/get.cc (main): don't pass std::string directly to errormsg(),
	since it can only cope with C-style strings.

2019-06-02  James Youngman  <jay@gnu.org>

	Improve error reporting in FileDeleter::~FileDeleter().
	* src/sf-delta.cc (FileDeleter::~FileDeleter): when there is a failure
	signaled by a Failure object, use it to issue a more detailed error
	message.

	Narrow the API of sccs_file_reader_base.
	* src/base-reader.h: eliminate the version of read_line() with the
	output parameter.
	* src/body-scanner.cc: use only the FailureOr<char>-returning version
	of read_line.
	* src/parser.cc: Likewise.

	prs: use FailureOr instead of an output parameter.
	* src/sccsfile.h (sccs_file::prs): use return type FailureOr<bool>
	instead of using a bool output parameter.
	* src/sf-prs.cc: (sccs_file::prs): update function definition
	accordingly.
	* src/prs.cc: update caller.

	Change "enum when" to "enum class when".
	* src/sccsfile.h: change enum when to enum class when.
	* src/prs.cc: update reference to enumerator values in enum when,
	since now they need to be qualified (when::X instead of just X).
	* src/sf-prs.cc: Likewise.

	prs: Change return type of sccs_file::prs() from bool to Failure.
	* src/sccsfile.h (sccs_file::prs): change return type from bool to
	Failure.
	* src/sf-prs.cc (sccs_file::prs): update return type to Failure.  Return
	a Failure if a call to print_delta() or I/O fails.  Otherwise return
	Failure::Ok().
	* src/prs.cc (main): collect the result of sccs_file::prs() and if it
	represents a failure, print it as an error message, setting the exit
	value to 1.

	Change sccs_file::print_delta() to return Failure.
	* src/sccsfile.h (sccs_file): change return type of print_delta to
	Failure.
	* src/sf-prs.cc: update implementation of print_delta to return
	Failure.
	* src/body-scanner.h: Change return type of emit_raw_body() from bool
	to Failure.
	* src/body-scanner.cc: Update implementation of emit_raw_body() to
	return the correct type.

	Simplify sccs_file::print_delta by factoring part of it out.
	* src/sf-prs.cc: factor part of print_delta out into a new member
	function print_delta_key.  This separates the concerns in printing prs
	format strings; print_delta parses the format string to identify key
	sequences, and print_delta_key prints key sequences.
	* src/sccsfile.h: declare print_delta_key.

	prs: Update some prs utility functions to return Failure instead of void.
	* src/sccsfile.h (sccs_file): Change return type of print_flags to
	Failure.
	(print_flag2): Change return type from void to Failure.
	* src/sf-prs.cc: update implementations of these functions to return
	Failure.

	Don't use the _BSD_SOURCE macro, since it is obsolete.
	* src/sccs.c: don't define the obsolete _BSD_SOURCE.

	Move TRY_* failure macros into a separate header file.
	* src/sf-prt.cc: Move TRY_* macros into new file failure_macros.h.
	* src/failure_macros.h: move TRY_* macros to this new file.
	* src/Makefile.am: add failure_macros.h.

	Change sccs_file::prt() to return Failure instead of bool.
	* src/body-scanner.cc (sccs_file_body_scanner::print_body): change
	return type to Failure.
	* src/body-scanner.h (sccs_file_body_scanner::print_body): update
	declaration.
	* src/sccsfile.h (sccs_file): change return type of prt() from bool to
	Failure.
	* src/sf-prt.cc (sccs_file::prt): update definition to return the
	changed type.
	* src/prt.cc: update call.

	prt: change sccs_file::cutoff::print() to return Failure not void.
	* src/sccsfile.h: change sccs_file::cutoff::print() to return
	Failure.
	* src/sf-prt.cc: update implementation accordingly.

	prt: detect (but currently, ignore) failure in flag printing.
	* src/sccsfile.h: change return type of prt's print_flag functions
	from void to cssc::Failure.
	* src/sf-prt.cc: update the implementations.

2019-06-01  James Youngman  <jay@gnu.org>

	Report failures in read_file_lines() via FailureOr.
	* src/l-split.h: change type of read_file_lines from std::pair<errno,
	vector<string>> to FailureOr<vector<string>>.
	* src/l-split.cc: update the implementation.
	* src/sf-admin.cc: update the caller.
	* src/sccsfile.h: remove an obsolete TODO comment.

	Change sccs_file::rmdel to return Failure instead of bool.
	* src/sccsfile.h (sccs_file::rmdel): change return type to Failure.
	* src/sf-rmdel.cc (sccs_file::rmdel): update implementation to return
	the new type.
	* src/rmdel.cc: Update call.
	* src/body-scanner.h: change return type of
	sccs_file_body_scanner::remove from bool to Failure.
	* src/body-scanner.cc: update implementation to return the correct
	type.
	* src/failure.h (errorcode): new codes
	UsagePreconditionFailureSidNotFound,
	UsagePreconditionFailureDeltaHasSuccessor,
	UsagePreconditionFailureDeltaInUse.
	* src/failure.cc (category_impl::message): add messages for the new
	codes.
	* src/location.h: add ostream inserter for sccs_file_location.
	* src/location.cc: implement it.

	Turn off, by default, a bugfix for very old versions of glibc.
	src/admin.cc: On glibc 2.1 and later, don't switch stdin to unbuffered
	to work around a bug in glibc 2.0.x.

	sccs_file::write/start_update: return Failure/FailureOr.
	* src/sccsfile.h (sccs_file): Change type of write() and to
	cssc::Failure.  Change type of start_update(const delta&) to
	FailureOr<FILE*>.
	* src/sf-add.cc (sccs_file::start_update): update implementation to
	return the changed return type.
	* src/sf-write.cc (sccs_file::write): update implementation to return
	the changed return type.
	* src/sf-delta.cc (sccs_file::add_delta): update call to start_update.
	* src/sf-admin.cc (sccs_file::create): Update caller.
	* src/sf-rmdel.cc (sccs_file::rmdel): Likewise.

	Change type of sccs_file::start_update() to FaiureOr<FILE*>.
	* src/sccsfile.h (sccs_file): change type of start_update() to
	FaiureOr<FILE*>.
	* src/sf-write.cc (sccs_file::start_update): update the implementation
	to use the new return type.  Introduce a new error code
	DeclineToCreateHistoryFileThatAlreadyExists.
	* src/failure.h (errorcode): define a value for
	DeclineToCreateHistoryFileThatAlreadyExists.
	* src/failure.cc (category_impl::message): define a message for
	DeclineToCreateHistoryFileThatAlreadyExists.
	* src/sf-add.cc (sccs_file::start_update(const delta&)): Update call
	to start_update().
	* src/sf-rmdel.cc (sccs_file::rmdel): Likewise.

2019-05-31  James Youngman  <jay@gnu.org>

	Change sccs_file::write_delta() to return Failure, not int.
	* src/sccsfile.h (sccs_file::write_delta): change return type from int
	to Failure.
	* sec/sf-write.cc (sccs_file::write_delta): update implementation.
	* src/sf-add.cc (sccs_file::start_update): update call to
	write_delta().

	Change return type of print_seqs() to Failure.
	* src/sf-write.cc (print_seqs): change return type to Failure.

	Change sccs_file::end_update() and allies to return Failure.
	* src/sccsfile.h (sccs_file::end_update): change return type bool to
	Failure.
	(sccs_file::rehack_encoded_flag): Likewise.
	* src/ioerr.h: add new convenience function fflush_failed.
	* src/sf-add.cc (sccs_file::end_update): update return type.
	* src/sf-admin.cc (sccs_file::create): update call to end_update().
	* src/sf-delta.cc (sccs_file::add_delta): Likewise.
	* src/sf-rmdel.cc (sccs_file::rmdel): Likewise.
	* src/sf-write.cc (rehack_encoded_flag): update return type, and be
	more careful to capture all I/O errors.  If we can't find the encoded
	flag, return the new error code InternalErrorNoEncodedFlagFound.
	(maybe_sync): update return type.
	(sccs_file::end_update): update return type.  Use a file closer to
	close the output file.  Use a lambda with a capture on the return
	value to update the return value if the close fails.
	* src/failure.h (errorcode): add new error code
	InternalErrorNoEncodedFlagFound.
	* src/failure.cc (category_impl::message): add corresponding message.

	Change sccs_file::cdc() to retun void.
	* src/sccsfile.h: change type of cdc to return void.
	* src/cdc.cc: Perform some checks previously performed in cdc which
	might could fail.
	* src/sf-cdc.cc: update return type, move out checks now performed in
	cdc.cc.

	Fix Savannah bug #56237.  Reported by Takakazu Satoh.
	* src/writesubst.cc (sccs_file::emit_keyletter_expansion): For 'M',
	avoid use-after-free by using a named std::string as the object we
	call c_str() on.  That way its lifetime lasts until the end of the
	scope in which it was declared.

	Minor comment fix (there are no optional params to sccs_file::do_get).
	* src/sf-get.cc (sccs_file::do_get): there are no longer any optional
	parameters, so remove comments which imply there are.

	Delete now-unused source file testutils/uu_decode.c.
	testutils/uu_decode.c: this is no longer used, so delete it.
	testutils/Makefile.am: delete the uu_decode target.
	.x-sc_program_name: no need to mention uu_decode.c.

	Stage tests/get/subst.sh test input with cp, not uu_decode.
	* tests/get/keywords.uue: uudecode and rename to keywords_s.txt.
	* tests/get/subst.sh: stage s.keywords.txt with cp, not uu_decode.

	Stage char255 input for tests/binary/eightbit.sh with cp, not uu_decode.
	* tests/binary/char255.uue: uudecode and rename to char255.input.
	* tests/binary/eightbit.sh: stage test input with cp, not uu_decode.

	tests/binary/eightbit.sh: stage test files with cp, not uu_decode.
	* tests/binary/eightbit.sh: stage test input with cp, not uu_decode.
	* tests/binary/s.umsp.uue: uudecode and rename to umsp_s

	Stage tests/get/delta-summary.sh: test input with cp not uu_decode.
	* tests/get/keys.uue: uudecode and rename to keys.txt_s.
	* tests/get/delta-summary.sh: stage test input with cp not uu_decode.
	* tests/get/subst.sh: Likewise.

	No need to uuencode test input for tests/get/sf111140.sh.
	* tests/get/sf111140_testcase.uue: uudecode and rename to
	sf111140_testcase_s.
	* tests/get/sf111140.sh: stage the test file with cp, not uu_decode.

	Test inputs in tests/get/sid-select.sh don't need to be uuencoded.
	* tests/get/sid-select.sh: stage the test input with cp, not
	uudecode.
	* tests/get/testfile.uue: uudecode and rename to testfile_s.

	No need to uuencode the test inputs for tests in tests/prt.
	* tests/prt/s.testfile2.uue: uudecode and rename to
	tests/prt/testfile2_s.
	* tests/prt/all-512.sh: use cp, not uu_decode, to stage the test
	input.
	* tests/prt/testfile.uue: uudecode and rename to testfile_s.
	* tests/prt/default.sh: stage the test input file with cp, not
	uu_decode.
	* tests/prt/nodel.sh: stage the test input s.testfile with cp, not
	  uu_decode.

	Don't uuencode the test inputs in tests/sact/sf513800.sh.
	* tests/sact/sf513800.sh: instead of having uuencoded inputs, just
	include the test files in the distribution and move them into
	position with "cp".
	* tests/sact/sf513800_1.uue: uudecode and rename to tests/sact/sf513800_s
	* tests/sact/sf513800_2.uue: uudecode and rename to tests/sact/sf513800_p

	Call opendir_safer instead of just opendir.
	* src/fileiter.cc: use opendir_safer instead of just opendir.
	* src/file.cc: Likewise.

	Use gnulib's canonicalize module.
	* bootstrap.conf (modules): add canonicalize.
	* src/canonify.cc (canonify_filename): remove implementation replace
	with call into gnulib.
	* src/Makefile.am (LDADD): link against gnulib.  Remove unuseful LDADD
	overrides.

	Link unit-test binaries against gnulib.
	* gl/lib/.gitignore: check in updates added here by running
	"bootstrap".
	* unit-tests/Makefile.am (AM_LDFLAGS): search ../gl/lib.
	(LDADD): link against -lgnulib.
	(test_bigfile_LDADD): don't override, since we also want to link this
	binary against gnulib.

	Update gnulib to 1c0e950aa8238a6b5005ebde19ccf9cfd29afdd3.

	Fold prs_get() method into the print_delta() method.
	* src/sf-prs.cc (sccs_file::prs_get): simplify and fold this into
	print_delta().
	* src/sccsfile.h (sccs_file::prs_get): remove this method.

2019-05-30  James Youngman  <jay@gnu.org>

	Better commenting on the declarations of the get() methods.
	* src/sccsfile.h: add better comments for the declarations of get(),
	prs_get() and do_get().

	Rename & move various get() methods to make their purpose clearer.
	* src/sccsfile.h (sccs_file): rename one of the get() methods do_get.
	This is the method widely called by several commands (prs, etc.)
	* src/sf-get.cc (sccs_file::get): Rename to do_get.
	* src/sf-prs.cc (sccs_file::prs_get) Call do_get instead of get.
	* src/sf-delta.cc (sccs_file::prs_get) Likewise.
	* src/sf-get2.cc (sccs_file::get) move out of here to src/get.cc.
	* src/get.cc (sccs_file::get) relocate it to here.

	Make all parameters of sccs_file::get() non-optional.
	* src/sccsfile.h (sccs_file::get): make parameters non-optional.
	* src/sf-get2.cc (sccs_file::get): update definition (and the callers
	did not need to be updated).

	Fully initialise sccs_date and ensure it's valid in comparisons.
	* src/sccsdate.cc (sccs_date::sccs_date()): ensure that all members
	are initialised.
	(sccs_date::compare): ensure that this and the target of the
	comparison are both valid.

	Make parameters of an sccs_file::get method explicit (not optional).
	* src/sccsfile.h (sccs_file::get): make all parameters non-optional
	for one of the get() methods.
	* src/sf-get2.cc: pass the previously-optional parameters explicitly.
	* src/sf-prs.cc: Likewise.

	Change the return type of the last sccs_file::get() to Failure.
	* src/sccsfile.h (sccs_file::get): rename bool-returning get() to
	prs_get() (to identify the use case) and change its return type to
	cssc::Failure.
	* src/sf-prs.cc: update the sole caller.

	Remove an unused exception class.
	* src/except.h: remove never-thrown CsscReallyFatalException.
	* src/delta.cc (delta_main): no need to catch
	CsscReallyFatalException.

	Avoid fall-through when format is invalid and assertions are disabled.
	* src/sccsdate.cc (sccs_date::printf): avoid inappropriate switch
	fall-through when the format letter is invalid and ASSERT() expands to
	nothing.

	Set signal handlers with sigaction instead of signal.
	* src/fatalsig.c: use sigaction() instead of signal(), make the C++ a
	bit more idiomatic.

	Remove incorrect comment; operator-> should indeed return a pointer.
	* src/delta-iterator.cc (operator->): remove factually incorrect
	comment.

	Issue a more specific error message when unlinking the gfile fails.
	* src/delta.ss (delta_main): when we fail to unlink the gfile, issue a
	more specific error message.

2019-05-28  James Youngman  <jay@gnu.org>

	Remove some obsolete TODOs.
	* src/sccsfile.h (sccs_file::emit_keyletter_expansion,
	sccs_file::write_subst): these are already converted to return
	Failure, so the TODO is redundant.
	(sccs_file::get): Likewise (for one of the implementations).

	Remove the last use of GetFileBodyFailed and the enum value itself.
	* src/writesubst.cc (sccs_file::emit_keyletter_expansion): directly
	return an appropriate Failure value when there is a failure.  Don't
	use GetFileBodyFailed.
	* src/failure.h (cssc::errorcode): delete GetFileBodyFailed.
	* src/failure.cc (category_impl::message): remove case for
	GetFileBodyFailed.

	Change sccs_date::printf() and print() to return cssc::Failure.
	* src/sccsdate.h: Change printf() and print() methods to return
	Failure instead of int.
	* src/sccsdate.cc: Update implementations.
	* src/pf-del.cc, src/sf-write.cc, src/writesubst.cc: Update callers.

	Make sccs_date comparison operators return bool.
	* src/sccsdate.h (sccs_date::operator>, sccs_date::operator<,
	sccs_date::operator<=): return bool, not int.
	(valid): Likewise.

	Disallow initialising FailureOr<T> with a Failure::Ok().
	* src/failure_or.h (FailureOr::FailureOr(const Failure&)): disallow
	promoting "OK" to FailureOr<T> since this leaves us with a non-empty
	FailureOr with a default-constructed T.
	* src/writesubst.cc (sccs_file::emit_keyletter_expansion): don't do
	that.  It happens that the value we should have passed instead was
	false, which is a default-constructed bool, so there is no actual
	difference in behaviour.
	(sccs_file::write_subst): slightly simplify the control flow.

	Properly report specific failures in sccs_file::write_subst().
	* src/writesubst.cc: change sccs_file::write_subst() to return
	specific Failure reports detailing the actual failure.  This leaves
	only emit_keyletter_expansion() as the sole location where we generate
	the error code GetFileBodyFailed.

	Factor part of write_subst() out into emit_keyletter_expansion().
	* src/writesubst.cc: Factor the part of write_subst() which expands
	keyletters out into a new method, emit_keyletter_expansion.
	* src/sccsfile.h: declare sccs_file::emit_keyletter_expansion().

	Remove redundant reference to cssc::errorcode::GetFileBodyFailed.
	* src/sf-get2.cc (sccs_file::get): remove a redundant reference to the
	error code GetFileBodyFailed.

	Avoid calling closedir() on a NULL pointer.
	* src/fileiter.cc: create cleanup object only after we know the DIR
	pointer is non-NULL.

	Change one of the sccs_file::get() methods to return Failure.
	* src/body-scanner.cc (sccs_file_body_scanner::get): change return
	type from bool to Failure.  Use a longish lived Failure variable to
	record whether something went wrong.  Annotate control paths with
	unreachable lines (following a call to corrupt()).
	* src/body-scanner.h (sccs_file_body_scanner::get): change return
	type.
	* src/sf-get.cc (sccs_file::get): change return type.
	* src/writesubst.cc (sccs_file::write_subst): wrap the whole function
	in a lambda whose body is mostly unchanged - that is, it returns an
	int.   Convert the int result into a csssc::Failure object after
	calling the lambda.  This is a temporary situation which we should be
	able to eliminate as we get rid of the GetFileBodyFailed error code.
	* src/sf-get2.cc (sccs_file::get): use more specific failure code
	CannotEditBitkeeperFile.
	* src/sf-prs.cc (sccs_file::get): Likewise.
	* src/sf-rmdel.cc (sccs_file::rmdel): Likewise.
	* src/failure.h (errorcode): add CannotEditBitkeeperFile.
	(ok): remove, and instead consistently use cssc::Failure::Ok().
	* src/failure.cc (category_impl::message): add a message for
	CannotEditBitkeeperFile.
	* src/get.cc: Use cssc::Update to record whether something has
	failed.
	* src/linebuf.cc: use cssc::Failure::Ok() not cssc::ok().
	* src/sccsfile.h (get): update return type.
	* src/sf-delta.cc (sccs_file::add_delta): update to new return type
	for get().
	* src/sccsfile.cc (edit_mode_ok): rename to edit_mode_permitted and
	make this return Failure, so that when this situation occurs, the
	caller can simply return the ready-made Failure object.
	* src/sf-csc.cc (sccs_file::cdc): call edit_mode_permitted instead of
	edit_mode_ok.

	Use Failure objects in "get" to record failures.
	* src/failure.h: Temporarily add a failure code GetFileBodyFailed.
	This covers a number of failure cases which we would like eventually
	to break down into individual codes.  That means we'd like to retire
	GetFileBodyFailed quite soon.
	* src/failure.cc (category_impl::message): add a message for
	GetFileBodyFailed.
	* src/failure_or.h (NonEmptyFailureOr): remove this exception.
	Calling .fail() on a non-empty FailureOr<T> is no longer considered an
	error.  See the body of fail() for an explanation of why this is
	useful.  Likewise for code().
	* src/get.cc (print_sid_list): return Failure to signal failure.
	(main): use "using cssc::Failure" and similar to avoid repetitive
	qualifications.   Use a ResourceCleanup object to handle deletion of
	the g-file in failure cases.  Simplify some control paths (by
	referring to existing variables).  get_status no longer holds a
	"success" attribute, we use FailureOr<get_status> for this instead.
	Remove some exception catching since the ResourceCleanup object makes
	it unnecessary.  Make extensive use of cssc::Update() to update a
	single Failure status, instead of manually maintaining a "retval"
	variable.
	* src/sccsfile.h (get_status): remove success attribute, as mentioned
	above.
	(get): update to return FailureOr<get_status> instead of the
	success-bearing get_status object.
	(prepare_seqstate_1, prepare_seqstate_2,. prepare_seqstate): these
	methods have no failure outcomes, so change the return type from
	bool to void.
	* src/sf-delta.cc (sccs_file::add_delta): no need to take the return
	value of prepare_seqstate since it returns void now.
	* sf-get.cc (prepare_seqstate_1): update return type.
	* src/ioerr.h: Add some convenience methods such as fputc_failure,
	fclose_failure which perform the operation and return a cssc::Failure
	instance.  There is some inconsistency since fprintf_failure doesn't
	perform the print operation for you (i.e. it's like fprintf_failed).
	* src/sf-get2.cc (sccs_file::get): update return type.  Update failure
	and success paths  slightly to take account of the fact that
	get_status no longer stores the success of the overall operation.  Use
	the error code GetFileBodyFailed to signal failures.  This is a bit of
	a catch-all code so we should work to replace it with more
	fine-grained codes.
	* src/sf-get3.cc (sccs_file::prepare_seqstate_2): update return type.
	* src/sf-prs.cc (sccs_file::get): no need to take the return value of
	prepare_seqstate since it returns void now.

	On Failure in get, ensure the exit status is nonzero.
	* src/get.cc (print_id_list) return Failure on failure.
	(main): collect the return values of more of the functions we call,
	and ensure that we will exit with a non-zero status if any signaled a
	failure.

	Distinguish between error and EOF on directory reads.
	src/fileiter.cc (sccs_file_iterator::sccs_file_iterator): distinguish
	between end-of-directory and failure to read an entry for it.  Issue a
	diagnostic is the case of the latter.

	Use a cleanup object to manage the closing of the directory handle.
	* src/fileiter.cc (sccs_file_iterator::sccs_file_iterator): use a
	cleanup object to manage the closing of the directory handle.

	get_current_directory and canonify_filename can fail.
	* src/canonify.cc (get_current_directory): change
	get_current_directory() to return FailureOr<string> instead of just
	string.
	(canonify_filename): change this function too because it calls
	get_current_directory.
	* src/sccsname.h: update return type of canonify_filename to match the
	updated definition.
	* src/fnsplit.cc (split_filename): assign to the output parameters
	only once each (but no functional change).
	* src/sf-prs.cc, src/writesubst.cc:: update calls to
	canonify_filename.

	Change type of sccs_file::is_delta_creator from int to bool.
	* src/sccsfile.h: sccs_file::is_delta_creator should return bool, not
	int.
	* src/sccsfile.cc: update definition to match changed return type.

	Change sccs_file::print_subsituted_flags_list to return Failure.
	* src/sccsfile.h (sccs_file::print_subsituted_flags_list): return
	Failure, not bool.
	* src/sccsfile.cc (sccs_file::print_subsituted_flags_list): update
	definition to match new return type.
	* src/sf-write.cc (sccs_file::write): update the caller.

	Remove line breaks between class and method names.
	* src/sccsfile.cc: don't put a line break in between the class name
	and the method name.

2019-05-27  James Youngman  <jay@gnu.org>

	Add an error_condition enum and a unit test for failure.cc.
	* src/bodyio.cc (body_insert_text): Use separate error codes for each
	of the reasons why a file needs to be encoded as binary.
	(body_insert): use a std::error_condition to identify them all.
	* src/failure.h: Add a new std::error_condition enum.
	(category_impl::equivalent): needed now that we have an
	error_condition enum.
	* src/failure.cc (category_impl::message) add a message for each of
	the new error codes.
	Also tidy up the make_failure_builder(...) function declarations.
	(category_impl::equivalent): implement this method now that we
	actually have a related error_condition.
	* unit-tests/Makefile.am (unit_tests) Add a unit test for failure.h.
	* unit_tests/test_failure.cc: this is the new unit test.

	Rename cssc::error to cssc::errorcode.
	* src/base-reader.h, src/bodyio.cc, src/failure.cc, src/failure.h,
	src/file.cc, src/filelock.h, src/linebuf.cc, src/parser.cc,
	src/sccsname.cc: rename cssc::error to cssc::errorcode.

2019-05-26  James Youngman  <jay@gnu.org>

	Change encode_file return type from int to cssc::Failure.
	* src/bodyio.h (encode_file): change return type from int to
	cssc::Failure.
	* src/bodyio.cc (encode_file): update implementation to match.
	* src/sf-delta.cc (add_delta): update caller.
	* src/failure.cc (make_failure_builder(const Failure&): provide a
	function definition for this factory function, for which a declaration
	already existed.

	Change return type of is_directory from int to cssc::FailureOr<bool>.
	* src/file.h (is_directory) change return type from int to
	cssc::FailureOr<bool>.
	* src/file.cc (is_directory): update implementation accordingly.
	* src/fileiter.h (sccs_file_iterator::sccs_file_iterator): update
	caller.

	Change return type of open_null() to FailureOr<FILE*>.
	* src/file.h: Change return type of open_null() to FailureOr<FILE*>.
	* src/file.cc: Update implementation.
	* src/get.cc: Update calls.

	Change return type of stdin_is_a_tty from int to bool.
	* src/file.h: change return type of stdin_is_a_tty from int to bool.
	* src/file.cc: update implementation to match.

	Change return type of user_is_group_member from int to bool.
	* src/file.h (user_is_group_member): change return type from int to
	bool
	* src/file.cc (user_is_group_member): update implementation to match.

	Change return type of is_writable from int to bool.
	* src/file.cc: update return type of is_writable from int to bool.

	Modernize is_readable.
	* src/file.h (is_readable): change return type from int to bool.
	* src/file.cc (is_readable): change return type from int to bool, use
	R_OK instead of hard-coding the constant 04.

	Remove unused function stdout_to_stderr.
	* src/file.cc (stdout_to_stderr): remove unused function.
	* src/file.h (stdout_to_stderr): remove declaration.

	Remove trailing blanks from src/privs.cc.
	* src/privs.cc: remove trailing blanks at the end of some lines and
	an empty line at end-of-file.

	Change fcreate() to return cssc::FailureOr<FILE*>.
	* src/file.h: Change fcreate() to return cssc::FailureOr<FILE*>.
	* src/file.cc (fcreate): Update the implementation accordingly.
	(file_lock::file_lock): update call to fcreate.
	* src/bodyio.cc (encode_file): update call to fcreate.
	* src/failure.h (cssc::make_failure_builder(const Failure&): add
	declaration.
	* src/get.cc: update call to fcreate.
	* src/pf-del.cc: Likewise.
	* src/sf-delta.cc: Likewise.
	* src/sf-write.cc: Likewise.

	Change createfile() to return FailureOr<int> instead of int.
	* src/failure.h (error): add errore code DeclineToOverwriteOutputFile.
	* src/failure.cc (category_impl::message): add a message for
	DeclineToOverwriteOutputFile.
	* src/file.cc (createfile): return cssc::FailureOr<int> instead of
	int.  When we decline to overwrite an output file, return a failure
	with code DeclineToOverwriteOutputFile.

	Added a file missing from a previous commit.
	* src/privs.cc: new file.

	Hide give_up_privileges(); only TempPrivDrop needs to see it.
	* src/Makefile.am (libcssc_a_SOURCES): add privs.cc.
	* src/file.cc: move give_up_privileges() and restore_privileges() out
	of here...
	* src/priv.cc: ... and into this new file, inside the unnamed
	namespace.  Also move the definitions of TempPrivDrop
	constructor/destructor here.
	* src/file.h: remove declarations of give_up_privileges and
	restore_privileges.
	* src/privs.h (TempPrivDrop): remove inline definitions of constructor
	and destructor.

	Use TempPrivDrop in cdc.
	* src/cdc.cc: Use TempPrivDrop instead of drop/restore privs
	calls.

	Use TempPrivDrop in rmdel.
	* src/rmdel.cc (main): Use TempPrivDrop instead of drop/restore privs
	calls.

	Prefer using TempPrivDrop to pairs of drop/restore calls.
	* src/privs.h (TempPrivDrop): for convenience if no argument is
	specified, default to performing the privilege drop.
	* src/get.cc (main): use TempPrivDrop instead of
	give_up_privileges()/restore_privileges().
	* src/filediff.cc (FileDiff::start): Likewise.
	* src/file.cc (set_gfile_writable): Likewise.
	(unlink_gfile_if_present): Likewise.
	(fopen_as_real_user): Likewise.

	Simplify control flow in createfile().
	* src/privs.h: New file, containing class TempPrivDrop which allows us
	to temporarily drop privileges and restore them when the object is
	deleted.
	* src/Makefile.am (libcssc_a_SOURCES): add privs.h.
	* src/file.cc (createfile): simplify control flow.  Move some of the
	logic out into helper functions.
	(convert_createfile_mode_to_open_mode): new helper function.
	(convert_createfile_mode_to_perms): new helper function.

	Rename create() to createfile() to reduce confusion.
	* src/file.cc (create): rename to createfile.
	(fcreate) rename the sole call.

	Update atomic_nfs_create to return FailureOr<int.
	* src/file.cc (get_nlinks) return FailureOr<long> instead of long.
	(atomic_nfs_create): return FailureOr<int> instead of just int.
	(create) adjust call to atomic_nfs_create.

2019-05-25  James Youngman  <jay@gnu.org>

	Change sid comparison operators to return bool, not int.
	* src/sid.h: change comparison operators to return bool, not int.
	* src/sid.cc: update implementations of comparison operators.

	Make I/O methods for class sid return cssc::Failure.
	* src/sid.h: change return types of sid::printf() and sid::dprintf()
	from int to cssc::Failure.
	* src/sid.cc: update accordingly.
	* src/writesubst.cc: update calls.

	Rename file_lock::name to file_lock::name_.
	* src/filelock.h (file_lock): rename member variable "name" to
	"name_".
	* src/file.cc: update accordingly.

	Failure to acquire a lock is now diagnosed by cssc::Failure.
	* src/failure.h (cssc::error): add new error code, LockNotHeld.  Add a
	default constructor for Failure, so that we can hold one in a
	cssc::Optional<Failure>.
	(cssc::Update(Failure,Failure): utility function which updates a
	"currrent" Failure object to retain the first non-OK Failure object
	passed to it.
	* src/failure.cc (category_impl::message): add entries for
	NotAnSccsHistoryFileName and LockNotHeld.
	* src/filelock.h (file_lock): hold state in cssc::optional<Failure>
	instead of an int so that we can better diagnose the reasons why we
	were unable to obtain a lock.
	* src/file.cc (maybe_wait_a_bit): don't emit a duplicate newline in
	the error message.
	(put_pid): return cssc::Failure instead of int.
	(do_lock): Likewise.
	(file_lock::file_lock): lock state is now in the lock_state_ member.
	* src/optional.h: don't require the contained object to have a T{}
	constructor.  Add a reset() method.
	src/pfile.cc (sccs_pfile::sccs_pfile): the lock operation now returns
	an instance of cssc::Failure.
	* src/sccsfile.cc (sccs_file::sccs_file): use a Failure object when
	querying the status of the lock.  Use the Failure instance's error
	message when emitting an error message about a failure to lock it.
	* src/sccsname.h: We probably don't need both sccs_name::valid() and
	sccs_name::valid_filename().
	* src/sccsname.h: The lock() operation now returns Failure instead of
	bool.  Add some comments.

	Change sccs_name::valid_filename() to return cssc::Failure.
	* src/sccsname.h (sccs_name::valid_filename): change return type from
	bool to cssc::Failure.
	* src/sccsname.cc (sccs_name::valid_filename): update definition.
	* src/failure.h (cssc::error): add a new error code,
	NotAnSccsHistoryFileName.
	* src/fileiter.cc: update call.

	Change release_list::print to return cssc::Failure.
	* src/rel_list.h (release_list::print): change return type to
	cssc::Failure.
	* src/rel_list.cc (release_list::print): update implementation.
	* src/sf-write.cc (sccs_file::write): update the caller.

	change return type of release::valid() to bool.
	* src/release.h: change return type of release::valid() to bool

	Relational operators of class release now return bool.
	* src/release.h: change relational operators to return bool.

	Change release::print return type to cssc::Failure.
	* src/release.h (release::print): change return type to cssc::Failure.
	* src/rel_list.cc (release_list::print): update call.
	* src/sf-write.cc (sccs_file::write): Likewise.

	Remove redundant TODO.
	* src/pfile.h: remove redundant TODO.

	Change return type of sid::print to cssc::Failure.
	* src/sid.h (sid::print): change return type to cssc::Failure.
	* src/sid.cc (sid::print): update definition accordingly.
	* src/sid_list.h (range_list<TYPE>::print): Likewise.
	* src/failure.cc (FailureBuilder::FailureBuilder(const Failure&): add.
	* src/failure.h (Failure::detail()) add accessor for use in
	new FailureBuilder constructor.
	(FailureBuilder::FailureBuilder(const Failure&) new constructor.
	* src/pfile.cc (sccs_pfile::print_lock_sid): update return type.
	* src/sf-write.cc (sccs_pfile::write_delta): update calls to
	sid::print().
	* src/writesubst.cc (sccs_file::write_subst): Likewise.

	Change sccs_pfile::add_lock() to return cssc::Failure.
	* src/pfile.h (sccs_pfile::add_lock): change return type to
	sccs::Failure.
	* src/pf-add.cc (sccs_pfile::add_lock): update definition.
	* src/get.cc: update call to sccs_pfile::add_lock().
	* src/pf-del.cc (sccs_pfile::update): remove trailing whitespace.

	Make sccs_pfile::write_edit_lock a non-inline function, simplifying pfile.h.
	* src/failure_or.h: #include "failure.h".
	* src/pfile.h (sccs_pfile::write_edit_locks): rename to
	write_edit_locks and iterate over all the locks in this function;
	hence, eliminate the iterator parameter.  Move the inline definition
	of write_edit_locks to pf-del.cc.
	* src/pf-del.cc (sccs_pfile::write_edit_locks): move to here.
	(sccs_pfile::update): call write_edit_locks().

	Change return type of sccs_pfile::update() to cssc::Failure.
	* src/cleanup.h (ResourceCleanup): add a disarm() method.
	* src/pfile.h (sccs_pfile::update) change return type to
	cssc::Failure.  Add a lock_count_type typedef.
	* src/pf-del.cc (sccs_pfile::update): Update return type.  Simplify
	control flow to separate the concerns of lock file management and
	p-file re-writing.
	* src/pf-add.cc, src/sf-delta.cc, src/unget.cc: When calling
	sccs_pfile::update(), use .ok() to convert the result to bool.

	Slightly simplify sccs_file_body_scanner::get().
	* src/body-scanner.cc (sccs_file_body_scanner::get): slightly simplify
	control flow.  Remove redundant TODO.
	* src/body-scanner.h: remove redundant TODO.

2019-05-24  James Youngman  <jay@gnu.org>

	Add detail message to Failure.  Create a FailureBuilder class.
	* src/failure.h (Failure): add a string field which holds additional
	details.  Rename message() to to_string() to avoid confusion now that
	the message is not going to be identical to the result of
	std::error_code::message().  Add make_failure...() factory functions
	allowing the user to provide a detail message.
	(FailureBuilder): new class allowing a Failure instance to be built
	and have details added using the "<<" insert operator, to take
	advantage of the ability to format arbitrary objects.  Use a
	std::ostringstream to do the formatting.   Also add a diagnose()
	method which causes the FailureBuilder instance to emit failure
	message when the destructor is called (which will usually be at the
	completion of the enclosing full expression, since the FailureBuilder
	instance will rarely be given a name).
	* src/failure_or.h (FailureOr<T>): allow construction from a
	FailureBuilder instance.  Rename the message() member function to
	to_string() for consistency with the change to Failure.
	* src/failure.cc: Implement FailureBuilder methods, rename message()
	to to_string().  Implement new factory functions.
	* src/body-scanner.cc: use the new FailureBuilder factory functions to
	issue error messages when failures are detected.
	* src/bodyio.cc, src/file.cc, src/parser.cc: Likewise.

	Add TODOs for some likely remaining work to use cssc::Failure.
	* src/pfile.h, src/rel_list.h, src/sccsfile.h, src/sccsname.h,
	src/seqstate.h, src/sid.h: add some TODO comments near the prototypes
	of functions which look like they might benefit from a change to
	returning cssc::Failure.

	Change encode_stream() to return cssc::Failure values.
	* src/bodyio.h: change the type of encode_stream() to diagnose failure
	in the read or write parts of the pipeline with cssc::Failure.
	* src/bodyio.cc: change callers accordingly.
	* src/cncoding.cc: update the implementation to return the changed
	type.
	* unit-tests/test_encoding.cc: update tests to match.
	* tests/delta/errorcase.sh: print a full label for test case E32, just
	as if it had been done by "docommand".  Also fix some typos in the
	test failure message.

	Update output_body_line_{text,binary} to return cssc::Failure.
	* src/bodyio.h (output_body_line_text, output_body_line_binary):
	change return type to cssc::Failure.
	* src/bodyio.cc (output_body_line_text, output_body_line_binary):
	  Update function bodies accordingly.
	* src/ioerr.h (fwrite_failed): change this from a macro to an inline
	function, returning cssc::Failure.
	* src/linebuf.h (cssc_linebuf::write): change return type to
	cssc::Failure.
	* src/linebuf.cc: Update return type.
	* src/body-scanner.h: Change type of outputfn parameter to
	sccs_file::get to be compatible with the updated types of
	output_body_line_binary and output_body_line_text.
	* src/body-scanner.cc: Likewise.
	* src/sf-get.cc: Update type of outputfn variable.

	Change file-body handling to return cssc::Failure instead of bool.
	* src/cleanup.h: new class ResourceCleanup, which invokes a
	user-specified lambda on destruction.
	* src/bodyio.h (body_insert_binary): return Failure instead of bool.
	(body_insert): Likewise.
	* src/bodyio.cc (body_insert_binary): update return type.
	(body_insert): Likewise, and simplify the control flow.

	Return cssc::Failure from the unlink utility functions.
	* src/file.h (unlink_gfile_if_present): return Failure, not bool.
	(unlink_file_as_real_user): Likewise.
	* src/file.cc: Update definitions accordingly.
	* src/delta.cc, src/get.cc, src/sf-delta.cc: update callers.

	Update set_file_mode() and set_gfile_writable() to use cssc::Failure.
	* src/file.h: change set_file_mode() and set_gfile_writable() from
	returning bool to returning cssc::Failure.
	* src/file.cc: update implementations to match.
	* src/get.cc, src/parser.cc: update call sites.

	Update some file operations to return Failure instead of bool.
	* src/file.h: Change stdout_to_null() to return cssc::Failure instead
	of bool. Change get_open_file_xbits() to return FailureOr<bool>.
	* src/file.cc: Update implementations accordingly.
	* src/delta.cc, src/parser.cc, src/sf-admin.cc: Update calls to
	stdout_to_null(), get_open_file_xbits().

2019-05-23  James Youngman  <jay@gnu.org>

	Use Failure (not bool) to report some failures during body I/O.
	* src/failure.h: Add additional error, BodyIsBinary.
	* src/failure.cc: Add error message for BodyIsBinary.
	* src/bodyio.h: return Failure from body_insert_text instead of bool.  Use
	failure code BodyIsBinary when the file body cannot be represented
	in an unencoded SCCS history file.  Since the Failure object can
	distinguish BodyIsBinary from other (file I/O) failure modes,
	eliminate the "binary" and "fail" output parameters.
	* src/bodyio.cc (body_insert_text): Remove the "binary" and "fail"
	output parameters.
	(check_line_len): remove the "binary" output parameter.

2019-05-23  James Youngman  <jay@gnu.org>

	Return a new class "Failure" instead of std::error_code.
	The problem with returning std::error_code is that it can be
	implicitly converted to bool.   If you're converting both bool foo()
	and int bar() to return std::error_code, all callers will work
	unchanged, but the bool-returning methods will now have their
	success/failure convention upside-down (since std::error_code
	evaluates as true when there is an error).   To avoid this problem we
	make our convention that we return a Failure object which has an
	explicit ok() accessor.

	* src/failure.h: Add class Failure.
	* src/failure_or.h: Embed a Failure within FailureOr<T>, instead of a
	naked std::error_code.  Allow implicit construction of a FailureOr<T>
	from a Failure, but not (any longer) a std::error_code.
	* src/body-scanner.h: Updates to method return types.
	* src/linebuf.h: Likewise.
	* src/base-reader.h: Updates to call Failure.ok() where previously we
	relied on the conversion of std::error_code to bool.
	* src/pfile.cc, src/sf-write.cc: Likewise.
	* src/body-scanner.cc: Likewise.
	* src/diff-state.cc, src/diff-state.h: Likewise.
	* src/fileiter.cc: Likewise.
	* src/linebuf.cc: Likewise.
	* unit-tests/test_linebuf.cc: Likewise.
	* src/parser.cc: Update naming conventions (say "failure" rather than
	"error").
	* src/parser.h: delete unused method seek_to_body().  #include
	"failure.h".

2019-05-23  James Youngman  <jay@gnu.org>

	Correct comment typo "NOTEACHED".
	* src/parser.cc: correct comment typo: NOTEACHED -> NOTREACHED.

2019-05-22  James Youngman  <jay@gnu.org>

	Introduce FailureOr<T> to report failure of a value-returning function.
	* src/Makefile.am: new files failure.h, failure_or.h, failure.cc.
	* src/failure.h: Define a new error category for CSSC-specific
	errors and error codes to signal the specific failures.  Initially the
	CSSC specific errors are NotAnSccsHistoryFile, UnexpectedEOF and
	FileHasHardLinks.
	* src/failure.cc: Implement the error category for CSSC (e.g. the
	message strings for each error code).
	* src/failure_or.h: define a template FailureOr<T> which holds either
	a value T or a failure code from failure.h.  This allows us to use a
	function return value to both signal errors and return values.
	* src/base-reader.h (sccs_file_reader_base::read_line): instead of
	using a char* output parameter, change the return type to
	cssc::FailureOr<char> to allow both returning the line type and
	signalling an error.  EOF is an error.  Leave a bool read_line(char*)
	method in place so that we don't have to migrate all callers
	immediately.
	* src/parser.cc (do_open_sccs_file): change return type from FILE* to
	cssc::FailureOr<FILE*>.
	(sccs_file_parser::open_sccs_file): change return type from
	std::unique_ptr<sccs_file_parser::open_result> to
	cssc::FailureOr<std::unique_ptr<sccs_file_parser::open_result>>.
	* src/parser.h: update method declarations similarly.
	* src/sccsfile.cc: update calls to sccs_file_parser::open_sccs_file.
	* src/sf-write.cc: Likewise.

	Remove trailing blanks.
	* auxfiles/firstinclude.sed, build-aux/find-out-of-order-includes.sh,
	src/get.cc, src/location.h, src/optional.h, src/parser.h,
	src/sccsfile.h, src/sf-prt.cc, src/subst-parms.h,
	testutils/realpwd.cc, testutils/seeker.c: Remove trailing blanks.

	Remove trailing blanks.
	* .gitignore, ChangeLog.1, ChangeLog.2, ChangeLog.3, Makefile.am, NEWS,
	bootstrap.conf, src/base-reader.h, src/body-scanner.cc,
	src/body-scanner.h, src/bodyio.h, src/except.h: remove trailing
	blanks.

	Prevent complaints from the sc_tight_scope syntax check.
	* src/Makefile.am (libcssc_a_SOURCES): move headers to here (from
	noinst_HEADERS) so that the "make syntax-check" tight-scope check
	doesn't complain about all the C++ functions that it thinks should be
	static.  In reality, libcssc isn't installed, so the scope doesn't
	really matter much anyway.

	Fix some "make syntax-check" complaints.
	* .x-sc_prohibit_magic_number_exit: shell scripts are not interesting
	for this check.
	* .x-sc_prohibit_undesirable_word_seq: exclude "bootstrap" script
	since it is maintained in gnulib.
	* ChangeLog.2 (1998-09-03): change "can not" to "cannot" to satisfy a
	syntax-check.
	* build-aux/find-out-of-order-includes.sh: avoid SPACE-TAB sequence by
	untabifying.
	* src/seqstate.cc: Likewise.

	Remove empty lines at end-of-file.
	* auxfiles/.gitignore: remove empty lines at end-of-file.
	* auxfiles/firstinclude.sed: Likewise.
	* src/base-reader.cc: Likewise.
	* src/body-scanner.cc: Likewise.
	* src/diff-state.cc: Likewise.
	* unit-tests/test_split.cc: Likewise.
	* .x-sc_prohibit_empty_lines_at_EOF: Ignore compressed file tests/prt/all.expected.Z

	Parse the SCCS file checksum line manually instead of using sscanf().
	* src/parser.cc (sccs_file_parser::parse_header): parse the checksum
	line with strtol() instead of sscanf().  This silences a complaint
	from "make syntax-check".

	Fix some syntax-check complaints.
	* Makefile.am: remove a SPACE-TAB sequence.
	* src/base-reader.h: remove a period from the end of an error
	message.

	Remove src/sccsdiff.sh from Git, since it's a generated file.
	* src/sccsdiff.sh: remove from Git, since it's a generated file.
	* src/.gitignore: ignore sccsdiff.sh.

	Update copyright years ("make update-copyright").
	* unit-tests/test_split.cc: update copyright years.
	* src/sccsdiff.sh.in: update copyright years.
	* src/sccsdiff.sh: update copyright years (this file should probably
	not be in Git since it's a generated file).

	Update gnulib to current HEAD (661c55d6c287e1e6122e0ec03668ec859b6d806a).

	Use gettext for C programs (only).
	Using gettext in the C programs will silence a syntax-check warning,
	but not have much effect otherwise, since those programs (apart from
	sccs.c) are not installed.  Most of the installed programs are C++ and
	have not (yet) been changed.
	* bootstrap.conf (gnulib_modules): Add gettext.
	* configure.ac: substitute LIBINTL and LTLIBINTL for gettext.
	* gl/lib/.gitignore: ignore gettext.h.
	* src/Makefile.am (AM_CFLAGS): #define LOCALEDIR.
	* src/sccs.c: #include gettext.h and initialise it.
	* testutils/Makefile.am (AM_CFLAGS):  #define LOCALEDIR and also
	ensure that the compiler can see the gnulib headers (via -I).  Link
	against -lgnulib.
	* testutils/ekko.c: Initialise gettext.
	* testutils/last-time.c: Likewise.
	* testutils/lndir.c: Likewise.
	* testutils/seeker.c: Likewise.
	* testutils/user.c: Likewise.
	* testutils/uu_decode.c: Likewise.
	* testutils/yammer.c: Likewise.
	* testutils/yes.c: Likewise.

2019-05-21  James Youngman  <jay@gnu.org>

	Test for stale z.foo lock files before running tests.
	* tests/Makefile.am: check for stale lock files before running tests.

2019-05-17  James Youngman  <jay@gnu.org>

	Advance line number in read_line_param(), not read_line().
	* src/base-reader.h (sccs_file_reader_base::read_line): Don't advance
	the line number here, advance it in read_line_param which is the
	method that actually asks the line buffer to readf a line.

	Re-order declarations in sccs_file for better readability.
	* src/sccsfile.h: re-order declarations, grouping the higher-level
	methods nearer the top.

	Put the public section of sccs_file first, then protected and private.
	* src/sccsfile.h (sccs_file): re-order declarations so that everything
	comes in the order public, protected, private.

	Simplify the implementation of seq_state.
	* src/seqstate.h (seq_state): maintain state information in a vector
	of struct one_state, instead of (manually maintained) vectors for each
	type of information.
	(seq_state::start, seq_state::end): change calling convention to
	separate the success/failure indication from the return of the error
	message.
	* src/seqstate.cc: Update constructor and methods to implement this
	change.
	* src/body-scanner.cc: change the way we call seq_state::start() and
	seq_state::end() and (hence) the way we report corrupt files.

	move cssc_linebuf::check_id_keywords() from sf-chkid.cc to linebuf.cc.
	* src/linebuf.cc: move cssc_linebuf::check_id_keywords() to here, out
	of sf-chkid.cc.
	* src/sf-chkid.cc: check_id_keywords() moved out of here.

	Update return type of cssc_linebuf::check_id_keywords().
	* src/linebuf.h (cssc_linebuf): Add some modernization TODOs.
	Document some methods' calling conventions.  Change the return type of
	check_id_keywords() (without changing the meaning of any calls).
	* src/sf-chkid.cc: Update return type
	cssc_linebuf::check_id_keywords().

	Use additional parentheses in macro definitions.
	* src/ioerr.h: Use additional parentheses to prevent precedence problems
	in macro expansion.

	filepos.h: use member variable naming convention, prefer bool to int.
	src/filepos.h (FilePosSaver): rename member variables to have a "_"
	suffix.  Change type of disarmed_ from int to bool.

	Remove inaccurate comment.
	* src/delta-table.h: remove inaccurate comment.

	Rename delta_table methods for similarity to STL containers.
	* src/delta-table.h (length) rename method to size().
	* src/delta-table.h (select) rename method to at().
	* src/delta-iterator.cc: update calls to now-renamed methods.
	* unit-tests/test_delta-table.cc: Likewise.

	Modernise delta iterators (use a scoped enum instead of a boolean flag).
	src/delta-iterator.h: add delta_selector, a scoped enum which
	indicates whether we want all deltas or just non-removed ("current")
	deltas.  Pass this to the iterator constructor and save it in a new
	member variable, selector_.   Remove the "all" parameter from the
	next() methods.
	src/delta-iterator.cc: Updates to constructors and next() methods.
	src/delta-table.cc (find, find_any): pass a delta_selector to the
	iterator constructor.
	src/sf-delta.cc (add_delta): Likewise.
	src/sf-get2.cc (find_requested_sid): Likewise.
	src/sf-get3.cc (prepare_seqstate_2): Likewise.
	src/prs.cc: Pass a delta_selector to sccs_file::prs() instead of a int
	flag.
	src/prt.cc: Pass a delta_selector to sccs_file::prt() instead of a int
	flag.
	src/sf-prs.cc (sccs_file::prs): Update to accept the delta_selector.
	src/sf-prt.cc (sccs_file::prt): Likewise.
	src/sf-rmdel.cc (sccs_file::rmdel): Likewise.
	src/sccsfile.h (sccs_file): Instead of passing an "all" flag to the
	prs() and prt() methods, pass a delta_selector.
	src/sccsfile.cc (find_most_recent_sid): Use a delta_selector.
	src/sf-val.cc (sccs_file::validate): Likewise.
	src/sf-write.cc (sccs_file::write): Likewise.

	Avoid std::out_of_range exception when filename is exactly "s".
	* src/sccsname.h: valid_filename should return bool, not int.
	* src/sccsname.cc: update return type of valid_filename. avoid
	std::out_of_range exception when the filename is just "s".

	Propose modernising the cleanup mechanism.
	* src/filelock.h: add TODO proposing a more modern kind of cleanup
	object.

	Remove spurious #if directives.
	* src/sid.h: no need to us #if 1, remove it.

	Manage the file_lock object in sccs_name with unique_ptr.
	* src/sccsname.h: put the file_lock object in a unique_ptr instead of
	managing a raw pointer manually.

	Comment fix.
	* src/mode.h: remove incorrect comment.

	Use scoped enumeration for the mode in which we open SCCS files.
	* src/mode.h: Switch to using a scoped enumeration for the mode in
	which we open an SCCS file.
	* src/parser.cc, src/parser.h: Update to match.
	* src/sccsfile.cc, src/admin.cc: Likewise.

	Use cssc:optional<std::string> to represent the w substitution parameter.
	* src/optional.h: protect against multiple #inclusion.
	* src/subst-parms.h: instead of representing the w flag as const char*
	and taking advantage of the fact that it can be null, make this more
	explicit by representing the data as cssc:optional<std::string>.
	* src/get.cc: Update command-line option processing to match.
	* src/sccsfile.h: Update parameters of get() to match.
	* src/sf-get2.cc: Likewise.
	* src/sf-delta.h, src/sf-prs.cc: Update construction of subst_parms to
	match.
	* src/writesubst.cc: Update the handling or parms->wstring to match.

	Remove top-level using-declarations from header file.
	* src/delta.h, src/file.h, src/sid.h: remove top-level
	using-declaration "using std::string". Change uses of
	string to std::string.
	* src/filelock.h, src/sccsdate.h, src/sccsname.h: Likewise.
	* src/admin.cc: use std::string instead of just string.
	* src/body-scanner.cc, src/body-scanner.h: Likewise.
	* src/l-split.cc, src/parser.cc, src/pfile.h: Likewise.
	* src/run.cc, src/csscdate.cc, src/sf-admin.cc: Likewise.
	* src/sf-get2.cc, src/sf-val.cc, src/subst-parms.h: Likewise.

	Remove some long-obsolete code.
	* src/sf-get.cc: Remove some code that's been #ifdefed out since 2002.

	Add TODO to reorganise sccsfile.h.
	* src/sccsfile.h: Add TODO to clean up the plethora of public/private
	directives.

	Remove unused macros STATUS and STATUS_MSG.
	src/run.h: Remove unused macros STATUS and STATUS_MSG.

	Delete trivial header file sf-chkmr.h.
	* src/sf-chkmr.h: Delete this file.
	* srcs/sccsfile.h: check_mrs() now returns bool, not int.
	* src/run.cc: define sccs_file::check_mrs() here (instead of as an
	inline function in sf-chkmrs.h).
	* src/sf-delta.cc: don't #include sf-chkmr.h
	* src/cdc.cc, src/admin.cc: Likewise.

	Remove obsolete @(#) markers in comments.
	* src/defaults.h: Remove @(#) marker in comments, since the text there
	is now long out-of-date and has never been useful.
	* src/file.h, src/sccsdate.h, src/sccsname.h: Likewise.
	* src/sf-chkmr.h, src/sid.h, src/sl-merge.h: Likewise.
	* src/sysdep.h: Likewise.

	Delete unused macros LIDENT and CDECL.
	src/defaults.h: delete unused macros LIDENT and CDECL.

	Remove NO_COMMON_HEADERS macro.
	src/cssc.h: Remove useless macro NO_COMMON_HEADERS.
	src/what.cc: Don't #define NO_COMMON_HEADERS.

	Remove CONFIG_EOL_CHARACTER.
	src/cssc.h: Delete CONFIG_EOL_CHARACTER.  It wasn't consistently used,
	so changing it would not provide for portability to other operating
	systems.  Hence it's better to remove it.
	* src/bodio.cc, src/parser.cc, src/what.cc: Likewise.

	src/cleanup.h: Add TODO proposing use of lambdas.

	Change fileiter.h from using an old-style enum to scoped enum.
	* fileiter.h (enum sources): change this to a scoped
	enumeration, sccs_file_iterator::source.
	* src/admin.cc, src/cdc.cc, src/delta.cc, src/fileiter.cc, src/get.cc,
	src/prs.cc, src/prt.cc, src/rmdel.cc, src/sact.cc, src/unget.cc,
	src/val.cc: Update to be consistent with the naming change.

2019-05-16  James Youngman  <jay@gnu.org>

	Use bool for a boolean parameter in sid::printf.
	* src/sid.h (sid::printf): change type of flag parameter from int to
	bool.
	* src/sid.cc: Likewise.

	Switch to using scoped enumerations in sccs_pfile.
	src/pfile.h: change _mode and find_status from enums to scoped enums.
	src/pfile.cc: update usage of _mode and find_status.
	src/delta.cc: Likewise.
	src/get.cc: Likewise.
	src/del.cc: Likewise.
	src/rmdel.cc: Likewise.
	src/sact.cc: Likewise.
	src/unget.cc: Likewise.

	Add unit test for the new split_string function.
	* src/l-split.cc (split_string): new utility function, splits
	a string into fields.
	* src/l-split.h (split_string): adjust declaration (which already
	existed even though there was no definition).
	* unit-tests/test_split.cc: new file, unit test for split_string.
	* unit-tests/Makefile.am: add test_split.cc.

	git: ignore some more generated files.

	git: ignore some more generated files.

	git: ignore build-aux/texinfo.tex.

	Ignore some generated files.
	* .gitignore: Ignore some files which aren't in the git repository,
	but which are placed here by "bootstrap" or the tools it calls.

	Ignore supporting files for "make syntax-check".
	* .gitignore: add some supporting files for "make syntax-check".

	Modernise sccs_file_iterator.
	* fileiter.h (sccs_file_iterator): change type of unique() from int to
	bool.  Similarly its supporting member variable.
	* fileiter.cc: Updates for consistency with fileiter.h. Fix a
	misleading comment.

2019-05-15  James Youngman  <jay@gnu.org>

	Use enum class for the diff state enum.
	* src/diff-state.h (diff_state:state): rename the enumeration
	diffstate, converting it to a scoped enumeration (which requires
	C++11).
	(diff_state::get_insert_line): Likewise.
	* src/diff-state.cc (next_state): Likewise.
	(process): update return type.  Update enumeration naming.

	Include <cstdio> instead of <stdio.h>.
	 * src/file.cc: standardise on <cstdio> instead of <stdio.h>.
	 * src/filediff.h: Likewise.
	 * src/ioerr.h: Likewise.
	 * src/my-getopt.cc: Likewise.
	 * src/subst-parms.h: Likewise.
	 * src/version.cc: Likewise.
	 * src/version.cc.in: Likewise.
	 * src/what.cc: Likewise.

	Include <cstdio> instead of <stdio.h>.
	* src/fdclosed.cc:  standardise on <cstdio> instead of <stdio.h>.

	Include <cstdio> instead of <stdio.h>.
	* src/diff-state.h: standardise on <cstdio> instead of <stdio.h>.
	* src/fdclosed.cc: Likewise.

	Consistently include <cstdio>, not <stdio.h>.
	* src/body-scanner.cc: standardise on <cstdio> instead of <stdio.h>.
	* src/body-scanner.h: Likewise.

	Factor SCCS file parsing out of sccsfile.cc.
	* src/val.cc (main): sccs_file::READ is renamed to READ.
	* unit-tests/test_bigfile.cc (main): Likewise FIX_CHECKSUM.
	* src/unget.cc (main): sccs_pfile::UPDATE is renamed to
	sccs_pfile::PFILE_UPDATE.
	* src/sf-write.cc (sccs_file::write): delegate some of
	sccs_file::write to the parsers.
	* src/sf-val.cc (validate_isomorphism): Some const qualifiers on
	methods.
	* src/parser.h: Class definition for sccs_file_parser.
	* src/parser.cc: Implementation of sccs_file_parser. Most of the
	ode is moved from other modules.  This parses just the header of
	the SCCS file and emits some data objects which carry the header
	information we want without implementing full validation or any
	manipulation, both of which are still the responsibility of class
	sccs_file.
	* src/body-scanner.h: Parser for the SCCS file body including some
	transformations (for implementing rmdel, delta and so forth).
	Derived from sccs_file_reader_base.
	* src/body-scanner.cc: Implementation of sccs_file_reader_base.
	* src/subst-parms.h (struct subst_parms): These now have their
	own header file.
	* src/sccsfile.cc: Move much of the implementation out into two
	new parsers (one for the header and the other for the body).
	* src/sf-prs.cc (sccs_file::print_delta): Likewise.
	* src/sccsfile.h: Likewise.
	* src/sf-get.cc (sccs_file::get): Move most of the implementation
	out into the body scanner.
	* src/sf-rmdel.cc (rmdel): Likewise.
	* src/quit.h: Move corrupt() here so that we can more conveniently
	use it from the parser.
	* src/quit.cc: Also move the implementation.
	* src/pf-add.cc (add_lock): Rename APPEND to PFILE_APPEND.
	Similarly for the other modes in which we could open a p-file.
	The idea here is to have a clear distinction between this and the
	_mode type signalling how to open an SCCS file.
	* src/optional.h: New file, a simple template similar to
	std::optional (so that we don't have to require C++17).
	* src/location.h: Definition of class sccs_file_location,
	used n the new parser implementation.
	* src/location.cc: New file, implementing member functions of
	sccs_file_location, used n the new parser implementation.
	* src/linebuf.cc (read_line): Add an assertion that the buffer is
	large enough that a subtraction won't cause an underflow.
	* src/diff-state.cc: Split class diff_state out of sf-delta.cc.
	* src/diff-state.cc: Definition of class diff_state.
	* src/sf-delta.cc: Move diff_state into its own file,
	diff-state.cc.
	* src/delta-table.cc (delta_at_seq): method is now const.
	* src/base-reader.h (sccs_file_reader_base): new file containing a
	new class forming the base for the two SCCS file parsing
	implementations (one for the header, the other for the body).
	Much of the implementation is split out of the class sccs_file.
	* src/sccsfile.h: Move "enum _mode" out of class sccs_file and
	into include file mode.h, so that we use it in the now separate
	parser without a dependency loop.
	* src/base-reader.cc: Implementation of sccs_file_reader_base.
	* src/delta-iterator.h: the delta_iterator class constructor is
	now marked explicit.
	* src/mode.h: New file defining "enum _mode".
	* src/l-split.cc: #include l-split.h.
	(read_file_lines): New function.
	* src/linebuf.h (cssc_linebuf::operator=): delete the default
	assignment operator.
	* src/admin.cc (main): The type of "mode" is now "enum _mode"
	instead of "enum sccs_file::_mode".  Similarly renamed elsewhere
	(but not noted in the change log).
	* src/Makefile.am (noinst_HEADERS): Added parser.h mode.h
	optional.h l-split.h location.h body-scanner.h base-reader.h
	subst-parms.h diff-state.h.
	(libcssc_a_SOURCES): Added parser.cc body-scanner.cc location.cc
	base-reader.cc diff-state.cc.
	* tests/unget/exists.sh (all): Remove the x.foo.c file if some
	previous test left it behind.

2019-05-11  James Youngman  <jay@gnu.org>

	Abstract sccs file locations, provide appropriate detail in corrupt().
	* src/sccsfile.h (sccs_file_location): new class, encapsulating a
	location within an SCCS file.
	(sccs_file.here): rename member variable lineno to here_, changing
	the type to sccs_file_location.  Provide a getter, here().  Also
	change "int body_lineno" to "sccs_file_location body_location".
	(corrupt): change to take an initial argument of type
	sccs_file_location specifying the location of the problem.
	(strict_atous): add sccs_file_location argument.
	(strict_atoul_idu): Likewise.
	(check_bk_flag): Likewise.
	(corrupt_file): new function; like corrupt() but takes no location
	* src/sccsfile.cc (sccs_file_location::as_string): Implement this
	method.
	(read_line): Delegate line tracking to sccs_file_location object.
	(corrupt): Accept and use an sccs_file_location.
	(corrupt_file): Implement this new function similarly to
	corrupt().
	Elsewhere in this file, pass here() to the methods which now take
	an initial argument of sccs_file_location.  Update some calls to
	corrupt() to pass some additional information.
	* src/sf-delta.cc (sccs_file::add_delta): Update call to
	strict_atous to pass the location.  Same for calls to corrupt().
	* src/sf-get.cc (prepare_seqstate_1): Call corrupt_file() instead
	of corrupt(), because we don't have a specific line number to
	point to.  Convert some assertions to calls to corrupt_file().
	* src/sf-rmdel.cc (sccs_file::rmdel): update calls to
	strict_atous() and corrupt() to pass the location.
	* src/sf-val.cc (check_loop_free): Make check_loop_free a member
	of sccs_file, so that we can diagnose a missing (but referenced)
	sequence number as indicating that the history file is corrupt.

2019-05-07  James Youngman  <jay@gnu.org>

	Bump version number following the release of 1.4.1.
	* configure.ac: Bump version number following the release of 1.4.1.
	* NEWS: Add an empty section for new things in 1.4.2-rc1, so that
	"make dist" works.

	Add Martin Wilck to the credits.
	* docs/CREDITS.short.txt: Add Martin Wilck

	Prepare to release CSSC version 1.4.1.
	* configure.ac: Set the version to 1.4.1.
	* NEWS: Fill in the release date of CSSC-1.4.1.

	Ignore some generated files.
	* auxfiles/.gitignore: Ignore CSSC.spec.

	Ignore some generated files in git.
	* .gitignore: Ignore config.h config.log maint.mk config.cache

	Fix some formatting issues (spurious commas for example) in copyright headers.  Run "make update-copyright" on the files.  Fix a syntax error introduced by that.

	Ensure that "make update-copyright" can update copyright years.
	* src/*.cc: Reduce indentation of copyright comment.  This should ensure
	that "make update-copyright" updates these files.
	* src/*.h: Likewise.

	Update copyright years.
	* src/*.cc: Update copyright years.
	* src/*.h: Update copyright years.
	* README-hacking,  auxfiles/check-testfiles.sh,  bootstrap,
	bootstrap.conf, docs/cssc.texi,  docs/gpl-3.0.texi,
	gl/Makefile.am, src/sccs.c,  src/sccsdiff.sh.in,
	testutils/ekko.c: Likewise.

	Checked out googletest 3f5b5b8f8493a03fa25f1e4a7eae7678514a431d

2019-05-07  Martin Wilck  <mwilck@suse.com>

	Checked out googletest release-1.8.1

2019-05-07  James Youngman  <jay@gnu.org>

	Get googletest from a git submodule.
	* unit-tests/get-gtest.sh (usage): Delete (we now use a git
	submodule instead).
	* README-hacking: Suggest deleting any old svn-based googletest
	directory before running bootstrap.

2019-05-07  Martin Wilck  <mwilck@suse.com>

	get-gtest.sh: googletest moved to git repo
	googletest isn't maintained in svn any more.

	unit tests: fix non-void functions returning void
	This causes compiler warnings which are considered fatal
	by rpmlint.

	testutils/yes: don't ignore SIGPIPE
	In rpm build environments, the inherited signal settings may be
	such that SIGPIPE is ignored. That would cause the "yes" tool
	to never terminate.

	sccs.1: fix undefined macro
	".om" is not defined in groff. I haven't found it anywhere in the
	docs.I believe this is a typo.

2019-05-07  James Youngman  <jay@gnu.org>

	Generate ChangeLog dynamically instead of maintaining it by hand.
	* ChangeLog: rename to ChangeLog.3, as ChangeLog itself will now
	be a dynamically-generated file.
	* bootstrap.conf: Create a dummy ChangeLog file if it does not
	already exist, to keep Automake happy.
	* (maintainer_modules): Add new section for modules mainly
	useful to maintainers, notably the gitlog-to-changelog module.
	* Makefile.am (gen-ChangeLog): Add rule for dynamically generating
	a ChangeLog file from git log entries.  Call it from dist-hook.
	* (EXTRA_DIST): Distribute ChangeLog.3
	* .gitignore: add ChangeLog.
	* configure.ac: Set AUXDIR in the Makefile so that ChangeLog
	generation knows where to find the script that does the work.
	* build-aux/gen-changelog.sh (top_srcdir): Add script for
	generating the ChangeLog file; adapted from the GNU findutils
	sources.

2019-05-06  James Youngman  <jay@gnu.org>

	Fix more compiler warnings.
	* src/what.cc: Forward-declare usage().
	* src/sccsfile.h: Declare print_flag2() functions.
	* src/get.cc (main): Format the (unsigned in) line count with %u
	instead of %d.
	* src/environment.cc (max_sfile_line_len): Simplify a complex
	boolean expression to silence a compiler warning suggesting
	parentheses.
	* src/writesubst.cc (write_subst): Print the output line number
	with %u since it is an unsigned int.
	* src/sf-write.cc (write_delta): Remove unsed variables "len" and
	"i".
	(write): Likewise, also "s".

	Fix some compiler warnings. Also turn off warning options which themselves just generate warnings.
	* src/run.cc (run): Avoid mixing signed/unsigned quantities.
	* src/sf-get2.cc (get): Avoid variable 'd' shadowing a variable of
	the same name in an outer scope.
	* src/sccsfile.h: Declare print_flag().
	* src/cap.cc (cap_min): Simplify this function; we only use it for
	trivially copyable types anyway.
	* configure.ac: Disable some warnings known to the manywarnings
	module (thus enabled with --enable-warnings) but which aren't
	suitable for C++ compilation.  We disable them so that we don't
	get a warning message from GCC about the inappropriate warning
	option.

	Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/cssc

	Use block I/O for encoded streams.
	* src/encoding.cc (encode_line): return the number of bytes
	output.
	(encode_stream): Use the count returned by encode_line to perform
	block I/O (with fwrite) instead of string I/O (with fprintf).

1997-12-26  James Youngman  <jay@gnu.org>

	* testutils/realpwd.cc: Minor corrections to a comment.

	* testutils/Makefile.am: Added "user.c" which compiles to "user",
	a utility somewhat similar to "id".

	* tests/admin/users.sh: Added a couple of extra test cases wich
	run prs to make sure that the list of authorised users is
	correctly understood.

	* tests/Makefile.am: Added "large"; another subdirectory
	containing test suites.

	* split.cc: Commented everything out with #if 0; the split()
	function is now a member function of cssc_linebuf.

	* sf-write.cc, sccsfile.h: Changed the linebuf member from
	"cssc_linebuf" to "cssc_linebuf*".

	* sid_list.h: Renamed class _linebuf to cssc_linebuf.  Only
	affects the test code for this module.

	* sf-get.cc, sf-delta.cc: Changed the linebuf member from
	"cssc_linebuf" to "cssc_linebuf*".

	* sf-admin.cc: Modified the order in which users are added and
	deleted from the authorisation list for strict compatibility with
	"real" SCCS (fixes bug reported by Richard Polton
	<richardp@scopic.com>).

	* sccsfile.cc: Changed the linebuf member from "cssc_linebuf" to
	"cssc_linebuf*".  Also that class has been changed to much reduce
	the requirement for casts.

	* pfile.cc: Renamed class _linebuf to cssc_linebuf.  Also removed
	the necessity for some casts.

	* sf-rmdel.cc: Renamed class _linebuf to cssc_linebuf.

	* list.h: Code reformatting (whitespace changes only).

	* linebuf.h: Renamed class _linebuf to cssc_linebuf.  Also removed
	the necessity for some casts.

	* linebuf.cc: Renamed class _linebuf to cssc_linebuf and put the
	split() parsing utility function into this class (instead of it
	being a global function).

	* fileiter.cc: Renamed class _linebuf to cssc_linebuf.

	* delta-table.cc: Added some instances of ASSERT(0 != this).

	* sf-prs.cc: Changed the linebuf member from "cssc_linebuf" to
	"cssc_linebuf*".

	* delta-iterator.cc: Added assertions that the dtbl member is not
	NULL.

	* cssc.h: Removed declaration of split() (it's now a member
	function of cssc_linebuf).

	* sf-get2.cc, sf-get3.cc: Added assertions that the delta table is
	not NULL.

	* show-disp.sh: Show disposition of the CVS-controlled files...

1997-12-19  James Youngman  <jay@gnu.org>

	* sccsdiff.sh.in: Modified version of sccsdiff arrived from
	Richard Polton; took the ideas onboard for a rewrite of sccsdiff.

	* tests/sccsdiff/rap.sh: Added test code for sccsdiff from Richard
	Polton "The Rubber Buccaneer" <richardp@scopic.com>

1997-12-12  James Youngman  <jay@gnu.org>

	* tests/large/admin.sh: Check that we can create SCCS files for
	extremely long G-files.

	* tests/admin/users.sh: *** empty log message ***

1997-12-11  James Youngman  <jay@gnu.org>

	* sf-admin.cc: Fixed bug where "admin -a" adds users in exactly
	the opposite order to that required.

1997-11-30  James Youngman  <jay@gnu.org>

	* dtbl-prepend.cc, sccs-delta.cc:
	Code split out of sccsfile.h and sccsfile.cc.

	* delta.h, delta-table.cc, delta-table.h, delta-iterator.cc,
	delta-iterator.h: Split delta-iterator.cc delta-iterator.h
	delta-table.cc delta-table.h delta.h out of sccsfile.h.

	* sf-write.cc, sf-rmdel.cc, sf-prt.cc, sf-prs.cc, sf-get3.cc,
	sf-get.cc, sf-get2.cc, sf-delta.cc, sf-cdc.cc, sf-add.cc,
	sf-admin.cc, sccsfile.h, sccsfile.cc, prt.cc, rmdel.cc, prs.cc,
	delta.cc, get.cc, configure.in, cdc.cc, Makefile.am, admin.cc:
	Split delta.h, delta-table.h, and delta-iterator.h out of
	sccsfile.h to compartmentalise the dependencies.

	* what.cc: Added retuen statement after call to fail() so that the
	compiler stops warning about missing return statements.

	* what.cc, unget.cc, prt.cc, rmdel.cc, my-getopt.h, prs.cc,
	my-getopt.cc, getopt.cc, getopt.h, get.cc, cdc.cc, delta.cc,
	Makefile.am, admin.cc, ChangeLog: Renamed getopt.* to my-getopt.*
	to avoid conflict with systemhader of the same name.



Sun Nov 30 14:10:45 1997  James Youngman  <jay@gnu.org>

	* my-getopt.h: Renamed getopt.h because it conflicts with the Unix
	include file of the same name.  On some systems (e.g. IRIX),
	<stdio.h> includes <getopt.h>.  Since autoconf required that we
	use the preprocessor flag -I., this meant that our C++ header was
	being included by the C programs in testutils.  Hence they did not
	compile.

Sun Nov 23 12:05:32 1997  James Youngman  <jay@gnu.org>

	* getopt.cc: small changes to eliminate unuseful dependence on
 	quit.h.

	* what.cc: no longer needs quit.h (and in fact what no longer
	needs quit.o).

	* tests/year-2000: added test scripts for Year-2000 compliance.
	They also cover the whole life of SCCS (1969 -- 2038).

	* sccsdate.cc: We now handle dates without using time_t, so that
	everything works with dates right up to 2068.  sccs_date::now()
	still fails when time_t runs out (Tue Jan 19 03:14:07 2038 on my
	system).

	* mktime.c: removed this obsolete file.

	* configure.in: no longer need mktime() or "timezone".

	* sccsname.cc: Fixed bug with 1-character filenames.

	* mystring.h: Use the standard string class from <string>, if it
	is available.

Thu Nov 20 21:03:24 1997  James Youngman  <jay@gnu.org>

	* sccsdate.cc: Added changes mandated by X/Open for year
	2000 compliance, and fixed year-2019 bug.

	* docs/cssc.texi: Added chapter covering Year 2000 issues to the
 	manual.

Wed Nov 12 00:13:01 1997  James Youngman  <jay@gnu.org>

	* docs/cssc.texi: added TODO comments for text that still needs to
	be written.

	* docs/TODO: added list of undocumented/unimplemented/untested
	stuff.

Tue Nov 11 22:11:47 1997  James Youngman  <jay@gnu.org>

	* strerror.c, strstr.c: #include <config.h> not "cssc.h" since the
 	latter contains C++ class definitions and this is a C module.

	* fsync.h, list.h: Don't use double leading underscores in macro
 	names since this conflicts with the implementation's namespace.

	* file.h: Don't munge the names of rename() and remove() since
 	these now no longer have their definitions #included.

	* Makefile.am: Fixed rule for sccsdiff, which did not work on BSD
 	make (since it didn't grok "$<", apparently).

Sun Nov  9 21:06:59 1997  James Youngman  <jay@gnu.org>

	* NEWS: Changes for CSSC-devel-0.03-pl0.

	* Makefile.am:
	Added in some extra garbage to the distribution so that 99.9% of the
	contents of Master-Source goes into the distribution, even unuseful
	stuff like _chmod.cc.  Someone might want it for a port.  Might move
	it into unused/ soon though.

	* configure.in:
	Changed the package number to restore the "devel" label but
	(apparently) conform to the Gnits standard...

	* Makefile.am:
	Added noinst_HEADERS macro so that the header files get put in the
	distribution too.

	* NEWS: Updated for CSSC-0.02-devel-pl7.

	* configure.in: Package name is "CSSC", not "cssc".

	* README: Removed "xxx does not work" for appropriate values of xxx.

	* strstr.c:
	Can't use LIDENT any more to "rename" strstr() since this file is now
	compiled separately.

	* strstr.c:
	No need to guard against multiple inclusion since this is now compiled
	separately.

	* version.cc.in: Initial revision

	* sf-get.cc, sf-delta.cc, sf-admin.cc:
	Don't include strstrr.cc directly; configure now puts it into
	@LIBOBJS@.

	* acconfig.h:
	Include the macros PACKAGE and VERSION to make autoheader happy.

	* configure.in:
	Switched to using "automake".  Also, the config header file produced
	by "configure" is now called "config.h" (what used to be the old
	"config.h" is now part of "cssc.h").

	* cssc.h:
	Got rid of the old config.h file by including its contents directly
	into cssc.h.  Hence the config header file produced by "configure" is
	now called "config.h".

	* Makefile.am: Initial revision

	* configure.in: Some automake changes.   Doesn't really work yet.

	* cssc.h: Merged the contenst of config.h.

Sat Nov  8 23:09:25 1997  James Youngman  <jay@gnu.org>

	* AUTHORS: Initial revision

Sat Nov  8 14:29:45 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	Changes to distclean to make sure we don't include generated files in
	the archive if we "make dist" when the source and object dirs are the
	same.

	* Makefile.in:
	To make life easier for those without a copy of "makeinfo", we supply
	a ready-made info file in the distribution.

Fri Nov  7 23:06:06 1997  James Youngman  <jay@gnu.org>

	* sf-admin.cc: sl-merge.cc is now sl-merge.h.

	* configure.in: Also produce pwd/Makefile.

	* sl-merge.h:
	This is now a .h not a .c file.  It had been #included anyway.

	* sid_list.cc:
	Added in most of what had been in sid_list.cc into sid_list.h; this
	had been #included anyway.  The test code is all that's still left in
	the now much shorter sid_list.cc.

	* sid_list.h:
	Added in most of what had been in sid_list.cc; this had been #included
	anyway.  The test code is still left in the now much shorter
	sid_list.cc.

	* list.h:
	Added in what used to be the contents of list.cc; this had been
	#included anyway.

	* admin.cc: Include sid_list.h and sl-merge.h.

	* Makefile.in:
	Use "distclean" target because it is mentioned in INSTALL.
	Also, added "realpwd" and updated the dependencies.

Thu Nov  6 22:37:22 1997  James Youngman  <jay@gnu.org>

	* config.h, cssc.h, defaults.h, file.h, fileiter.h, filelock.h:
	Don't use preprocessor identifiers beginning with two underscores;
	that conflicts with the implementation's namespace.

	* filepos.h: Protect against multiple inclusion.

	* getopt.h, linebuf.h, list.h, myconfig.h, mystring.h, pfile.h, pipe.h, quit.h, run.h, sccsdate.h, sccsfile.h, sccsname.h, seqstate.h, sf-chkmr.h, sid.h, sid_list.h, stack.h, sysdep.h, xalloc.h:
	Don't use preprocessor identifiers beginning with two underscores;
	that conflicts with the implementation's namespace.

Wed Oct 29 23:01:43 1997  James Youngman  <jay@gnu.org>

	* mkinstalldirs, COPYING: Initial revision

	* Makefile.in:
	FreeBSD's "make" doesn't define "RM" by default.  So provide that
	definition.

Tue Oct 28 22:43:40 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	By default, only generate the info file and not the DVI file also.

Mon Oct 27 19:28:00 1997  James Youngman  <jay@gnu.org>

	* sf-get.cc:
	write_subst(): take as a parameter the delta which is actually being
	gotten, so that keyword substitution is correctly carried out.

	* sccsfile.h, sf-admin.cc, sf-delta.cc:
	Use the no_id_keywords() member function to indicate that situation
	(which might result in either a fatal error or just a warning,
	according to the setting of the "i" flag).

	* sf-get2.cc:
	write_subst(): take as a parameter the delta which is actually being
	gotten, so that keyword substitution is correctly carried out.  Also,
	use the no_id_keywords() member function to indicate that situation
	(which might result in either a fatal error or just a warning,
	according to the setting of the "i" flag).

	* Makefile.in:
	Added sf-kw.cc for get, delta and admin.  Also added targets for
	testing each program separately.

	* sf-kw.cc: Take as a parameter the name of the file.

Sun Oct 26 19:48:06 1997  James Youngman  <jay@gnu.org>

	* sf-kw.cc: Initial revision

	* get.cc: The -m and -n options had been the wrong way around.

	* what.cc: Made the output format match that of the real thing.  Most
	importantly, we no longer emit the initial @(#).

Sat Oct 25 16:53:26 1997  James Youngman  <jay@gnu.org>

	* README:
	Modified the example scripts for compiling the package, in such a way
	that I get more information if there is some failure.  Also, update
	the name of the GNU domain; this has changed from gnu.ai.mit.edu to
	gnu.org.

	* Makefile.in: Added canonify.cc to the sources for making "get".

	* sid.h, sid.cc:
	Sometimes we _always_ want the SID component to be printed, even if it
	is zero.  Examples of this include the %R%,%B%,%L% and %S% keywords
	expanded by sccs-get.  An extra argument (with a default) has been
	added to sid::printf().  The default behaviour is the same as the old
	behaviour.

	* sf-get2.cc:
	Corrected the expansions of the %R%, %L%, %B%, %S% and %P% keywords.
	(Also have a new test file, get/subst.sh, to test these).

	* sccsname.h:
	Added prototype for canonify_filename(), which is used in sf-get2.cc,
	to expand the %P% keyword.

	* mystring.h, mystring.cc:
	Added an operator[], which returns a const char&.

	* canonify.cc:
	canonify_filename() now takes a const char* as its argument.

	* canonify.cc: Initial revision

Mon Aug 11 21:35:36 1997  James Youngman  <jay@gnu.org>

	* mystring.h: Patches from Fila Kolodny <fila@ibi.com> to support
 	snapshots of GCC after 2.7.2.2.

Thu Jul 17 08:39:42 1997  James Youngman  <jay@gnu.org>

	* tests/common/test-common: Fixed typo (which had caused echo -e
 	bug on Solaris).

Tue Jul 15 18:59:52 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped patchlevel (Solaris /bin/sh portability).

Tue Jul 15 07:04:02 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	Bumped patchlevel (lndir now is happy if source & dest are the same).

Mon Jul 14 21:40:20 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped the version number -- another prerelease, 0.02.

	* Makefile.in:
	Made it possible to run "make dist" from the work dir.  That way, an
	already-created makefile will be used.  No actual files from the work
	directory are included in the distribution.

	* Makefile.in: Make in "lndir" too.

	* configure.in: sub-configure in "lndir" too.

Thu Jul 10 20:31:17 1997  James Youngman  <jay@gnu.org>

	* README: Provided quick-start info and a reference to docs/TESTING.

Thu Jul 10 20:17:31 1997  James Youngman  <jay@gnu.org>

	* sf-prt.cc, sccsfile.h, sccsfile.cc:
	Horrible hack to support "empty" include/exclude lists for deltas so
	that prt can be completely faithful to the SCCS command of the same
	name.

Wed Jul  9 21:59:21 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped to 0.01-devel-pl13.

Mon Jul  7 21:36:15 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Small correction to all-tests target.

	* Makefile.in:
	Don't hardwire $(prefix).  Also rationalised testing targets.

	* run.h:
	Use USE_PIPE not HAVE_PIPE because HAVE_FORK is also required in order
	for USE_PIPE to e sensible.

	* acconfig.h: Add explanation of HAVE_FORK.

	* pipe.h, sf-delta.cc, pipe.cc:
	Use USE_PIPE not HAVE_PIPE because HAVE_FORK is also required in order
	for USE_PIPE to e sensible.

	* configure.in:
	Treak fork() specially since we have to avoid it on AmigaOS.

	* quit.cc:
	Use USE_PIPE not HAVE_PIPE because HAVE_FORK is also required in order
	for USE_PIPE to e sensible.

	* run.cc: Try to cope with the almost-completely-useless semantics of
	system()...MR validation on systems without fork() or spawn() is
	broken.

Wed Jul  2 18:21:52 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped patchlevel (attempted IRIX fix)

Wed Jul  2 18:18:44 1997  James Youngman  <jay@gnu.org>

	* quit.cc, prs.cc, prompt.cc, pipe.cc, pfile.cc, pf-del.cc,
 	pf-add.cc, mystring.cc, list.cc, linebuf.cc, l-split.cc,
 	getopt.cc, get.cc, fsync.cc, fileiter.cc, file.cc, delta.cc,
 	cdc.cc, admin.cc, _chmod.cc:
	Oops.  Removed line that should not have been in the header.

	* xalloc.h, sysdep.h, stack.h, sid_list.h, sid.h, sf-chkmr.h,
 	seqstate.h, sccsname.h, sccsfile.h, sccsdate.h, run.h, release.h,
 	rel_list.h, quit.h, pipe.h, pfile.h, mystring.h, myconfig.h:
	Updated the copyright header.

	* myconfig.h: Initial revision

	* list.h, linebuf.h, getopt.h, filelock.h, fileiter.h, file.h,
 	defaults.h, xalloc.cc, what.cc, unget.cc, strstr.cc, split.cc,
 	sl-merge.cc, sid_list.cc, sid.cc, sf-write.cc, sf-rmdel.cc,
 	sf-prs.cc, sf-get3.cc, sf-get2.cc, sf-get.cc, sf-delta.cc,
 	sf-chkid.cc, sf-cdc.cc, sf-admin.cc, sf-add.cc, sccsname.cc,
 	sccsfile.cc, sccsdate.cc, sact.cc, run.cc, rmdel.cc, rl-merge.cc,
 	rel_list.cc, quit.cc, prs.cc, prompt.cc, pipe.cc, pfile.cc,
 	pf-del.cc, pf-add.cc, mystring.cc, list.cc, linebuf.cc,
 	l-split.cc:
	Updated the copyright header.

	* getopt.cc: Updated the copyright header.
	Also made the class members non-inline to appease IRIX.

	* get.cc, fsync.cc, fileiter.cc, file.cc, delta.cc, cdc.cc,
 	admin.cc, _chmod.cc:
	Updated the copyright header.

	* sf-prt.cc:
	It seems that -b doesn't turn off the printing of the delta table,
	after all.

	* sccsfile.cc, sf-prt.cc:
	Ue SEEK_SET instead of the manifest constant zero for fseek().
	Include <unistd.h> to get it, on SunOS.

	* filepos.h:
	Ue SEEK_SET instead of the manifest constant zero for fseek().

Wed Jul  2 06:55:16 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	Portability fixes for Solaris and SunOS; make sure libsubst.a is never
	empty (Solaris ld doesn't like empty libraries), fall back on
	fseek()/ftell() in the absence of fsetpos()/fgetpos().

	* sf-prt.cc:
	Use the helper class FilePosSaver to encapsulate fgetpos() or the lack
	of it.

	* filepos.h: Initial revision

	* configure.in, acconfig.h: Added HAVE_FSETPOS.

	* dummy.cc: Initial revision

Tue Jul  1 07:56:48 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	Bumped to patchlevel 10 (we were installing cssc.info in the root
	directory!)

Mon Jun 30 22:15:07 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped to CSSC-0.01-devel-pl9 prior to release.

	* INSTALL:
	Replace the original (MySC) INSTALL file with the generic one suitable
	for Autoconf-generated "configure" files.

	* move-if-change: Initial revision

	* Makefile.in:
	Moved version info into vernum.h, which is an auto-generated file.
	We now avoid re-building version.o and relinking everything, if the
	actual version information is unchanged.   Also support tar'ing the
	RCS files into a separate tar file for possible distribution.

	* version.h: Initial revision

	* version.cc:
	Moved version info into vernum.h, which is an auto-generated file.

	* Makefile.in: Support "make install".

Sun Jun 29 10:47:08 1997  James Youngman  <jay@gnu.org>

	* configure.in: Put the *.cs files into the directory "shorter".

	* Makefile.in: Added "prt" as a target.

Sun Jun 29 09:38:21 1997  James Youngman  <jay@gnu.org>

	* docs/Makefile.in:
	Make PostScript output (A4 by default) too.  Support Letter-sized
	paper as well.

	* docs/gpl.texinfo: Initial revision

	* docs/cssc.texi: Put the copy of the GPL back in.

Sat Jun 28 15:12:58 1997  James Youngman  <jay@gnu.org>

	* docs/cssc.texi:
	MR numbers do not have to be numbers.  Added "Known Problems"
	section.  Added remarks about how to encode files sent with bug
	reports.

Sat Jun 28 14:40:04 1997  James Youngman  <jay@gnu.org>

	* prt.cc: Always print the s.file's name, even of there is only one.

	* sf-prt.cc:
	Several fixes to do with the arrangement of whitespace.  Also, say
	"none" if we have no flags.

Fri Jun 27 18:51:22 1997  James Youngman  <jay@gnu.org>

	* sccsfile.cc: Added next_seqno(), used by delta.

	* sf-delta.cc:
	Working creation of null deltas; this version doesn't break branching
	(in absence of null deltas).

	* sccsfile.h: Added next_seqno(), used by delta.

Mon Jun 23 23:02:47 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Added rl-merge.cc.

	* sid.h: Moved operator release() elsewhere.

	* sid.cc: Moved release::release(const sid&) elsewhere.

	* release.h: Added release(const sid&).

	* sf-delta.cc: Preliminary support for null deltas.

Tue Jun  3 20:23:40 1997  James Youngman  <jay@gnu.org>

	* sccsfile.h:
	Provide sid_in_use(), initially for use by find_next_sid().

	* quit.h, quit.cc:
	Added the function name to the information given when an assertion
	fails, for GCC only.

	* get.cc:
	sccs_file::find_requested_sid() needs to pass back some information if
	the requested sid was either unspecified or specified the release
	number only.

	* sid.h: Added sid::next_level(), initially for use by
	sccs_file::find_next_sid().

	* sf-get2.cc:
	Better support for branching and a stab at support for the joint-edit
	flag.

Mon Jun  2 23:07:11 1997  James Youngman  <jay@gnu.org>

	* sf-get2.cc:
	Reworked find_next_sid(), which decides what SID we'll put in the
	p.file.

Sun Jun  1 20:39:03 1997  James Youngman  <jay@gnu.org>

	* sid.h, sid.cc:
	Provide new methods on_trunk(), matches(), and components(), initially
	for use by sccs_file::find_requested_sid().

	* sf-get2.cc:
	Rewrote get_requested_sid() to be shorter, provide behaviour closer to
	SCCS, and to allow for later support of get's -t option.

	* release.h:
	Provide informational enum member LARGEST, denoting the largest valid
	release number.

	* sccsfile.h:
	Find_requested_sid() needs to know wether it should look along
	branches, so provide that as a parameter.

	* sf-admin.cc:
	The "fixes" for id-keyword processing had accidentally ensured that we
	only read the first line of the input file :-)

	* sccsfile.cc, sccsfile.h: Added sccs_file::delta::removed().

	* sf-get2.cc:
	Correctly handle "get -r99" when there is only one revision in the
	file.

Sun Jun  1 00:36:37 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Bumped the patchlevel to CSSC-0.01-devel-pl6

Sun Jun  1 00:32:11 1997  James Youngman  <jay@gnu.org>

	* Makefile.in: Updated the dependencies.

	* sf-prt.cc: Fixed small bug with empty string flags.

	* release.h: print() needs to return zero for success.

Sat May 31 23:30:27 1997  James Youngman  <jay@gnu.org>

	* sccsfile.cc:
	Support empty 'i', 'x', and 'g' control lines with no argument.   This
	serves no purpose, but these do turn up.

	* sf-prt.cc:
	Support -i (list included/excluded deltas) and the printing of MRs and
	comments (i.e. -d as opposed to -s).

	* sf-prs.cc, sf-get3.cc, sf-get2.cc, prs.cc, get.cc, sccsfile.h:
	Changed variables named "cutoof" to "cutoff_date" to avoid the new
	struct cutoff inside sccs_file.

	* sccsfile.cc:
	Added a version of find_most_recent_sid() that works purely
	chronologically rather thann along a branch.

	* sccsfile.h:
	A version of find_most_recent_sid() that works purely chronologically
	rather thann along a branch, plus support sccs_file::cutoff, a reified
	object encapsulating cutoff dates and SIDs for programs like sccs-prt
	and sccs-prs.

	* sccsdate.h: valid() can be a const member of sccs_date.

	* sf-prt.cc:
	Working support for cutoff dates and SIDs, plus printing the body of
	the file.

	* prt.cc: Working support for -c, -r, -y and also -b (print body).

Sat May 31 10:27:10 1997  James Youngman  <jay@gnu.org>

	* Makefile.in:
	New source files rel_list.cc, rl-merge.cc, and sysnerr.h.  Renamed
	$(LFLAGS) to $(LDFLAGS).

	* sf-delta.cc, sf-get.cc: Fixes for id-keywords-flag processing.

	* quit.cc:
	Obtain declarations of sys_nerr and sys_errlist from our own header
	sysnerr.h, which used macros generated by "configure".

	* admin.cc: Support naked -i, -m, and -y options.  Hence remove
 	the -I, -M, and -Y options.

	* prt.cc: Initial revision

	* sccsfile.cc, sf-write.cc: Fixes for id-keywords-flag processing.

	* release.h: Initial revision

	* sid.h: Reimplemented the class release_list.

	* sf-admin.cc:
	Fixes for id-keywords-flag processing, and support the naked "y"
	option, which inhibits the default comment.

	* sf-get2.cc: Fixes for id-keywords-flag processing.

	* rl-merge.cc, rel_list.h, rel_list.cc: Initial revision

	* sf-prs.cc:
	Fixes for id-keywords-flag processing.  Reimplemented the class
	release_list.

	* sccsfile.h: Support "prt".  Fixed for id-keywords-flag
 	processing.  Use rel_list.h since we have now reimplemented the
 	class release_list.

	* sf-prt.cc: Initial revision

Tue May 27 20:16:39 1997  James Youngman  <jay@gnu.org>

	* sysnerr.h: Initial revision

	* unget.cc: Actually SCCS _doesn't_ print the locked SID twice, I
 	was mistaken :-(

Sun May 25 15:34:00 1997  James Youngman  <jay@gnu.org>

	* unget.cc:
	Modified the output format to be closer to that of SCCS.  We're still
	not there, and the current "unget" test script fails for us (it passes
	for SCCS).

	* fileiter.cc, fileiter.h:
	Added unique() which returns nonzero if we're in the situation where
	the utilities don't need to print out the name of the SCCS file
	they're working on because it's unambiguous -- that is, exactly one
	was specified on the command line.

	* pfile.h:
	Added print_lock_sid, which prints the SID of the lock that "pos"
	refers to (the SID of the delta not the SID of the gotten revision).

	* pfile.cc:
	Added print_lock_sid, which prints the SID of the lock that "pos"
	refers to.

Fri May 23 00:11:28 1997  James Youngman  <jay@gnu.org>

	* Support "admin -t" with no argument.

	* Makefile.in (docs/Makefile): Need installdocs target.

Wed May 21 00:06:46 1997  James Youngman  <jay@gnu.org>

	* linebuf.h, linebuf.cc:
	Small changes (not actually to executable code) to allow the sid_list
	test code to work.

	* sl-merge.cc:
	Much fixing with regard to sid_lists.  Construction from,
	comparison with, and assignment from NULL are sins no longer
	committed.  Also, the nested class "range" is now a separate template
	class.

	* sid.cc:
	The branch and sequence components of trunk revisions are supposed to
	be blank.  Also some small changes (not actually to executable code)
	to allow the sid_list test code to work.

	* getopt.cc:
	Invented the '!' modifier, similar to ':', but allowing empty
	options.  Note that this is to support empty -m and -y options for
	admin and delta, that this behaviour is for compatibility with "real"
	SCCS, and is unlike traditional or POSIX option processing.

Tue May 20 23:58:56 1997  James Youngman  <jay@gnu.org>

	* delta.cc: Support for empty -m and -y options.

	* admin.cc:
	If admin is given a bare -y option, this means that NO comments are to
	be entered into the SCCS file for the initial delta.  This is distinct
	from the situation when no -y option is given, when a "date and
	time created..." entry is added.  Hence the suppress_comments flag
	needs to be passed down into sccs_file::create(), which is where that
	message is normally added.

	* sf-prs.cc:
	Many, many fixes involving the output format for flags that are not
	set, plus backslash escape processing has been implemented, as in
	"real" SCCS.

	* sf-admin.cc:
	If admin is given a bare -y option, this means that NO comments are to
	be entered into the SCCS file for the initial delta.  This is distinct
	from the situation when no -y option is given, when a "date and
	time created..." entry is added.  Hence the suppress_comments flag
	needs to be passed down into sccs_file::create(), which is where that
	message is normally added.

	* sf-write.cc, sccsfile.h:
	Construction from, comparison with, and assignment from NULL are sins
	no longer committed with sid_lists.

	* pfile.h:
	Use range_list<>'s empty() method, not comparison with NULL, to find
	out if it empty.

	* sid_list.cc, sid_list.h:
	Much fixing with regard to validity checks.  Construction from,
	comparison with, and assignment from NULL are sins no longer
	committed.

Mon May 19 18:57:22 1997  James Youngman  <jay@gnu.org>

	* sid_list.h: Eliminate range_list<>::operator=(void*), since it
	is a carbuncle -- see comments in sid_list.h.

Sat May 17 12:19:02 1997  James Youngman  <jay@gnu.org>

	* run.cc:
	If run_mr_checker() is called (because the v flag is set) but the PRG
	argument is empty (i.e. the flag is set to the empty string), the
	validation silently succeeds.

	* delta.cc:
	Fixed bugs involving MRs.  We now output the delta's SID to stdout even
	though the delta fails, because that's what SCCS does.  More
	importantly, if the MR validation flag is set, but has no value, MRs
	are prompted for and allowed (with the -m option) but no actual
	changing is done -- they are always assumed valid.

Fri May 16 08:04:08 1997  James Youngman  <jay@gnu.org>

	* Support tests for MR number processing and interactive comments
	for delta (but the latter is only done if stdin is a tty...)

Thu May 15 21:51:57 1997  James Youngman  <jay@gnu.org>

	* l-split.cc:
	Fixed split_mrs().  It now calls strtok correctly and frees the right
	thing.  I don't see how it could ever have previously worked...but I
	don't know that it did.

Tue May 13 17:40:15 1997  James Youngman  <jay@gnu.org>

	* get.cc:
	Sense of the variable "keywords" was inverted.  We now suppress
	keyword expansion for -e and -k, and do expansion otherwise, not vice
	versa.

Sat May 10 14:50:00 1997  James Youngman  <jay@gnu.org>

	* almost all files: changed the package name

	* version.cc: Modified the version strings so that they show up with
	RCS ident and SCCS/CSSC's what, and also are human-readable.

	* cssc.h: Moved the version() function into version.h.

	* sccsfile.cc: Fixed problem with updating our notion of hogh_release.

	* sf-delta.cc:
	Output the inserted/deleted/unchanged lines, just like "real" SCCS.

	* get.cc:
	Go for output compatibility when reporting Included/Excluded deltas,
	and actually make the output the same.

	* Tested the test scripts themselves against the real thing, and
	hence fixed them, and hence made some changes to CSSC, mostly in
	the exact format of the output (sccsfile.cc, sf-delta.cc, get.cc).

Wed May  7 23:39:49 1997  James Youngman  <jay@gnu.org>

	* sf-get2.cc: find_requested_sid: Fix a bug in the case where
 	there is only one SID (1.1) in the file and no -r is specified on
 	the command line (i.e requested.is_null() is true).

Sun May  4 17:01:36 1997  James Youngman  <jay@gnu.org>

	* sf-get2.cc: Fixed the behaviour when no -r is given or the -r
 	that is given is of the form -rX or -rX.Y.Z (see docs/get-spec.txt
 	and tests/get/sid-select.sh)

	* Makefile.in: Added sccsdiff to $(CMDS).

	* Makefile.in:
	Added a rule for creating sccsdiff.sh from sccsdiff.sh.in.

	* configure.in:
	Find the pr(1) program and substitute for it in sccsdiff.sh.in.

	* file.cc: Corrected usage of freopen(), which returns NULL on failure.

	* sccsdiff.sh.in:
	Have to enclose the version string in single rather than double
	quotes, to protect the dollar signs from shell expansion.

	* sccsdiff.sh.in: Initial revision

Sun May  4 12:11:02 1997  James Youngman  <jay@gnu.org>

	* sf-get2.cc: Bugfix for behaviour with "-e -r2" when latest trunk
	revision was 1.x.  This used to get a delta from 1.x, now it
	creates the new delta 2.1, as does "real" SCCS.

Sat May  3 22:42:55 1997  James Youngman  <jay@gnu.org>

	* get.cc:
	Added support for the -G option (standard and used by, for example,
	GNU make).

	* sf-get2.cc:
	If no SID is specified with -r, and no SID id specified in the file as
	the default, use the one furthest down the trunk from 1.1.  Don't
	return one on a branch.

Sat May  3 17:17:38 1997  James Youngman  <jay@gnu.org>

	* sf-get.cc:
	Support SCCS files whose first referred-to delta is not numbered 1.
	SunOS can produce these.

	* sf-write.cc, sf-prs.cc, sf-admin.cc, sccsfile.h, sccsfile.cc:
	Added support for the 'e' (encoded) flag.

Sat May  3 11:51:53 1997  James Youngman  <jay@gnu.org>

	* sf-get2.cc:
	In sccs_file::find_requested_sid(), if the requested sid is 0.0.0.0
	(i.e. is_null()), accept the first sid we find as the first guess at
	the best match (but continue to look). [oops, bad idea, see above!]

	* sid.h:
	Fixed bug in the conditionals for sid::valid() and release::valid().

	* Makefile.in: Added dependencies.

Tue Apr 29 01:42:14 1997  James Youngman  <jay@gnu.org>

	*: Decided to consider supporting setuid execution via BSD's
 	sccs(1) command.

Sun Apr 20 22:38:13 1997  James Youngman  <jay@gnu.org>

	* file.cxx: What about support for set-Group-ID execution?
2001-11-23  james_youngman  <james_youngman@periwinkle.no.where>

	* /cvsroot/cssc/gnu/CSSC/tests/prs/format.sh:
	Initial version - qworks on Solaris SCCS, not on CSSC.

2001-09-29  james_youngman  <james_youngman@periwinkle.no.where>

	* /cvsroot/cssc/gnu/CSSC/testutils/last-time.c, /cvsroot/cssc/gnu/CSSC/testutils/realpwd.cc, /cvsroot/cssc/gnu/CSSC/testutils/seeker.c, /cvsroot/cssc/gnu/CSSC/testutils/user.c, /cvsroot/cssc/gnu/CSSC/testutils/uu_decode.c, /cvsroot/cssc/gnu/CSSC/testutils/yammer.c, /cvsroot/cssc/gnu/CSSC/testutils/yes.c, /cvsroot/cssc/gnu/CSSC/unused/_chmod.cc, /cvsroot/cssc/gnu/CSSC/unused/dosfile.cc, /cvsroot/cssc/gnu/CSSC/unused/dummy.cc, /cvsroot/cssc/gnu/CSSC/unused/ffsync.cc, /cvsroot/cssc/gnu/CSSC/unused/fsync.cc, /cvsroot/cssc/gnu/CSSC/unused/pipe.cc, /cvsroot/cssc/gnu/CSSC/unused/pipe.h, /cvsroot/cssc/gnu/CSSC/unused/sid_list.cc, /cvsroot/cssc/gnu/CSSC/admin.cc, /cvsroot/cssc/gnu/CSSC/autogen.sh, /cvsroot/cssc/gnu/CSSC/bodyio.cc, /cvsroot/cssc/gnu/CSSC/bodyio.h, /cvsroot/cssc/gnu/CSSC/bsd/sccs.c, /cvsroot/cssc/gnu/CSSC/canonify.cc, /cvsroot/cssc/gnu/CSSC/cap.cc, /cvsroot/cssc/gnu/CSSC/cdc.cc, /cvsroot/cssc/gnu/CSSC/configure.in, /cvsroot/cssc/gnu/CSSC/cssc.h, /cvsroot/cssc/gnu/CSSC/defaults.h, /cvsroot/cssc/gnu/CSSC/delta.cc, /cvsroot/cssc/gnu/CSSC/delta.h, /cvsroot/cssc/gnu/CSSC/delta-iterator.cc, /cvsroot/cssc/gnu/CSSC/delta-iterator.h, /cvsroot/cssc/gnu/CSSC/delta-table.cc, /cvsroot/cssc/gnu/CSSC/delta-table.h, /cvsroot/cssc/gnu/CSSC/docs/gpl.texi, /cvsroot/cssc/gnu/CSSC/dtbl-prepend.cc, /cvsroot/cssc/gnu/CSSC/encoding.cc, /cvsroot/cssc/gnu/CSSC/environment.cc, /cvsroot/cssc/gnu/CSSC/err_no.h, /cvsroot/cssc/gnu/CSSC/except.h, /cvsroot/cssc/gnu/CSSC/fatalsig.cc, /cvsroot/cssc/gnu/CSSC/fdclosed.cc, /cvsroot/cssc/gnu/CSSC/file.cc, /cvsroot/cssc/gnu/CSSC/filediff.cc, /cvsroot/cssc/gnu/CSSC/filediff.h, /cvsroot/cssc/gnu/CSSC/file.h, /cvsroot/cssc/gnu/CSSC/fileiter.cc, /cvsroot/cssc/gnu/CSSC/fileiter.h, /cvsroot/cssc/gnu/CSSC/filelock.h, /cvsroot/cssc/gnu/CSSC/filepos.h, /cvsroot/cssc/gnu/CSSC/fnsplit.cc, /cvsroot/cssc/gnu/CSSC/get.cc, /cvsroot/cssc/gnu/CSSC/ioerr.h, /cvsroot/cssc/gnu/CSSC/linebuf.cc, /cvsroot/cssc/gnu/CSSC/linebuf.h, /cvsroot/cssc/gnu/CSSC/list.cc, /cvsroot/cssc/gnu/CSSC/l-split.cc, /cvsroot/cssc/gnu/CSSC/my-getopt.cc, /cvsroot/cssc/gnu/CSSC/my-getopt.h, /cvsroot/cssc/gnu/CSSC/mylist.h, /cvsroot/cssc/gnu/CSSC/mystring.cc, /cvsroot/cssc/gnu/CSSC/mystring.h, /cvsroot/cssc/gnu/CSSC/pf-add.cc, /cvsroot/cssc/gnu/CSSC/pf-del.cc, /cvsroot/cssc/gnu/CSSC/pfile.cc, /cvsroot/cssc/gnu/CSSC/pfile.h, /cvsroot/cssc/gnu/CSSC/prompt.cc, /cvsroot/cssc/gnu/CSSC/prs.cc, /cvsroot/cssc/gnu/CSSC/prt.cc, /cvsroot/cssc/gnu/CSSC/quit.cc, /cvsroot/cssc/gnu/CSSC/quit.h, /cvsroot/cssc/gnu/CSSC/release.h, /cvsroot/cssc/gnu/CSSC/rel_list.cc, /cvsroot/cssc/gnu/CSSC/rel_list.h, /cvsroot/cssc/gnu/CSSC/relvbr.h, /cvsroot/cssc/gnu/CSSC/rl-merge.cc, /cvsroot/cssc/gnu/CSSC/rmdel.cc, /cvsroot/cssc/gnu/CSSC/run.cc, /cvsroot/cssc/gnu/CSSC/run.h, /cvsroot/cssc/gnu/CSSC/sact.cc, /cvsroot/cssc/gnu/CSSC/sccsdate.cc, /cvsroot/cssc/gnu/CSSC/sccsdate.h, /cvsroot/cssc/gnu/CSSC/sccs-delta.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.h, /cvsroot/cssc/gnu/CSSC/sccsname.cc, /cvsroot/cssc/gnu/CSSC/sccsname.h, /cvsroot/cssc/gnu/CSSC/seqstate.cc, /cvsroot/cssc/gnu/CSSC/seqstate.h, /cvsroot/cssc/gnu/CSSC/sf-add.cc, /cvsroot/cssc/gnu/CSSC/sf-admin.cc, /cvsroot/cssc/gnu/CSSC/sf-cdc.cc, /cvsroot/cssc/gnu/CSSC/sf-chkid.cc, /cvsroot/cssc/gnu/CSSC/sf-chkmr.h, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/sf-get2.cc, /cvsroot/cssc/gnu/CSSC/sf-get3.cc, /cvsroot/cssc/gnu/CSSC/sf-get.cc, /cvsroot/cssc/gnu/CSSC/sf-kw.cc, /cvsroot/cssc/gnu/CSSC/sf-prs.cc, /cvsroot/cssc/gnu/CSSC/sf-prt.cc, /cvsroot/cssc/gnu/CSSC/sf-rmdel.cc, /cvsroot/cssc/gnu/CSSC/sf-val.cc, /cvsroot/cssc/gnu/CSSC/sf-write.cc, /cvsroot/cssc/gnu/CSSC/showconfig.cc, /cvsroot/cssc/gnu/CSSC/show-disp.sh, /cvsroot/cssc/gnu/CSSC/sid.cc, /cvsroot/cssc/gnu/CSSC/sid.h, /cvsroot/cssc/gnu/CSSC/sid_list.h, /cvsroot/cssc/gnu/CSSC/sl-merge.h, /cvsroot/cssc/gnu/CSSC/split.cc, /cvsroot/cssc/gnu/CSSC/stack.h, /cvsroot/cssc/gnu/CSSC/strstr.c, /cvsroot/cssc/gnu/CSSC/sysdep.h, /cvsroot/cssc/gnu/CSSC/unget.cc, /cvsroot/cssc/gnu/CSSC/val.cc, /cvsroot/cssc/gnu/CSSC/valcodes.h, /cvsroot/cssc/gnu/CSSC/version.h, /cvsroot/cssc/gnu/CSSC/what.cc, /cvsroot/cssc/gnu/CSSC/writesubst.cc:
	Updated copyright year and FSF address

2001-09-23  james_youngman  <james_youngman@periwinkle.no.where>

	* /cvsroot/cssc/gnu/CSSC/configure.in:
	Updated version number (to identify versions checked out from the CVS
	repository).

	* /cvsroot/cssc/gnu/CSSC/configure.in:
	removed CVSDEVEL tag prior to release

	* /cvsroot/cssc/gnu/CSSC/ChangeLog: updated from checkin messages

	* /cvsroot/cssc/gnu/CSSC/NEWS: Brought up to date with recent changes.

	* /cvsroot/cssc/gnu/CSSC/get.cc:
	Give up privileges while manipulating the g-file, because the g-file
	is owned by the euid of the process which invoked "get", not by the
	set-user-id ownfer of the "get" file.  This is related to Sourceforge
	bug ID 458485.

	* /cvsroot/cssc/gnu/CSSC/file.cc:
	Minor correction to error message in set_file_mode() (don't have a
	newline in the middle of it).

2001-09-23  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/get.cc:
	Give up privileges while manipulating the g-file, because the g-file
	is owned by the euid of the process which invoked "get", not by the
	set-user-id ownfer of the "get" file.  This is related to Sourceforge
	bug ID 458485.

	* /cvsroot/cssc/gnu/CSSC/file.cc:
	Minor correction to error message in set_file_mode() (don't have a
	newline in the middle of it).

2001-09-16  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/pf-add.cc, /cvsroot/cssc/gnu/CSSC/pf-del.cc, /cvsroot/cssc/gnu/CSSC/pfile.h, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/tests/rmdel/basic.sh, /cvsroot/cssc/gnu/CSSC/unget.cc:
	Cope correctly in sccs_pfile::update() if there was no previously existing p-file

	* /cvsroot/cssc/gnu/CSSC/pf-add.cc:
	SF bug #444221: Create the p-file with mode 0644 (not 0666) but still allow concurrent edits

	* /cvsroot/cssc/gnu/CSSC/docs/CREDITS, /cvsroot/cssc/gnu/CSSC/docs/CREDITS.short.txt:
	(Credits for) patch to fix malloc()ed buffer size from Jeff Sheinberg

	* /cvsroot/cssc/gnu/CSSC/bsd/sccs.c:
	Patch to fix malloc()ed buffer size from Jeff Sheinberg

2001-08-30  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/tests/binary/binbasic.sh:
	Executables have different names under Windows.

2001-08-29  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/testutils/decompress_stdin.sh.in:
	Shell script which decompresses its input.

	* /cvsroot/cssc/gnu/CSSC/tests/binary/eightbit.sh, /cvsroot/cssc/gnu/CSSC/tests/get/sf111140.sh, /cvsroot/cssc/gnu/CSSC/tests/get/sid-select.sh, /cvsroot/cssc/gnu/CSSC/tests/get/subst.sh, /cvsroot/cssc/gnu/CSSC/tests/prt/all-512.sh, /cvsroot/cssc/gnu/CSSC/tests/prt/default.sh, /cvsroot/cssc/gnu/CSSC/tests/prt/nodel.sh, /cvsroot/cssc/gnu/CSSC/autogen.sh, /cvsroot/cssc/gnu/CSSC/configure.in, /cvsroot/cssc/gnu/CSSC/cssc.h, /cvsroot/cssc/gnu/CSSC/docs/Platforms, /cvsroot/cssc/gnu/CSSC/docs/texinfo.tex, /cvsroot/cssc/gnu/CSSC/file.cc, /cvsroot/cssc/gnu/CSSC/file.h, /cvsroot/cssc/gnu/CSSC/get.cc, /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/README, /cvsroot/cssc/gnu/CSSC/sccsfile.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.h, /cvsroot/cssc/gnu/CSSC/sf-add.cc, /cvsroot/cssc/gnu/CSSC/sf-admin.cc, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/sf-rmdel.cc, /cvsroot/cssc/gnu/CSSC/sf-write.cc:
	Changes to support CYGWIN (compiles and builds with B20.1).

	* /cvsroot/cssc/gnu/CSSC/tests/bsd-sccs/driver-basic.sh:
	Altered test case h1 to account for buffering differences on CYGWIN.

	* /cvsroot/cssc/gnu/CSSC/testutils/uu_decode.c:
	Changes for file format compatibility with uuencode.

	* /cvsroot/cssc/gnu/CSSC/INSTALL:
	Updated INSTALL file from automake distribution.

	* /cvsroot/cssc/gnu/CSSC/missing, /cvsroot/cssc/gnu/CSSC/mkinstalldirs:
	Updated the utilities which are distributed but come from the automake
	distribytion (automake -a -c copies them in).

	* /cvsroot/cssc/gnu/CSSC/COPYING:
	Updated address of FSF from COPYING file in automake distribution.

2001-08-28  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/testutils/Makefile.am, /cvsroot/cssc/gnu/CSSC/testutils/uu_decode.c:
	Added uu_decode.c, replacing the system uudecode utility, since not all
	systems have the latter.

2001-08-25  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/docs/Platforms:
	Added remarks about "printf" macro bug in glibc 2.2.3.

	* /cvsroot/cssc/gnu/CSSC/unused/.cvsignore, /cvsroot/cssc/gnu/CSSC/bsd/.cvsignore, /cvsroot/cssc/gnu/CSSC/auxfiles/.cvsignore:
	ignore Makefile.in

	* /cvsroot/cssc/gnu/CSSC/.cvsignore, /cvsroot/cssc/gnu/CSSC/tests/.cvsignore, /cvsroot/cssc/gnu/CSSC/testutils/.cvsignore:
	Added some .cvsignore files to reduce the noise in the output of the update command

	* /cvsroot/cssc/gnu/CSSC/docs/.cvsignore, /cvsroot/cssc/gnu/CSSC/docs/Platforms, /cvsroot/cssc/gnu/CSSC/docs/URLs:
	Added info about how to patch cssc.texi to format it with old versions of Makefinfo, for example on NetBSD

	* /cvsroot/cssc/gnu/CSSC/acconfig.h, /cvsroot/cssc/gnu/CSSC/configure.in, /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/mystring.h:
	Changes to permit compilation with GCC v3 and GLIBC 2.2.3

2001-08-18  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/docs/mailing-list.txt:
	Updated the installation instructions to bring them into line with the
	actual method for subscribing to a Mailman mailng list.

2001-07-31  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/docs/Platforms:
	Added updated info about which versions of Red Hat Linux this has been
	tested on.

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi, /cvsroot/cssc/gnu/CSSC/testutils/ekko.c, /cvsroot/cssc/gnu/CSSC/testutils/seeker.c, /cvsroot/cssc/gnu/CSSC/testutils/yammer.c, /cvsroot/cssc/gnu/CSSC/bsd/sccs.c, /cvsroot/cssc/gnu/CSSC/docs/Makefile.am, /cvsroot/cssc/gnu/CSSC/fatalsig.cc, /cvsroot/cssc/gnu/CSSC/file.cc, /cvsroot/cssc/gnu/CSSC/get.cc, /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/pfile.cc, /cvsroot/cssc/gnu/CSSC/quit.cc, /cvsroot/cssc/gnu/CSSC/quit.h, /cvsroot/cssc/gnu/CSSC/run.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.h, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/sf-get2.cc, /cvsroot/cssc/gnu/CSSC/sf-get.cc, /cvsroot/cssc/gnu/CSSC/sf-prs.cc, /cvsroot/cssc/gnu/CSSC/sf-write.cc, /cvsroot/cssc/gnu/CSSC/writesubst.cc:
	Eliminated some compiler warnings (gcc version 2.96 2000073).

2001-07-15  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/admin.cc, /cvsroot/cssc/gnu/CSSC/bodyio.cc, /cvsroot/cssc/gnu/CSSC/bsd/sccs.c, /cvsroot/cssc/gnu/CSSC/configure.in, /cvsroot/cssc/gnu/CSSC/cssc.h, /cvsroot/cssc/gnu/CSSC/defaults.h, /cvsroot/cssc/gnu/CSSC/docs/cssc.texi, /cvsroot/cssc/gnu/CSSC/environment.cc, /cvsroot/cssc/gnu/CSSC/file.cc, /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/NEWS, /cvsroot/cssc/gnu/CSSC/README, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/showconfig.cc, /cvsroot/cssc/gnu/CSSC/tests/common/config-data, /cvsroot/cssc/gnu/CSSC/what.cc:
	As well as allowing binary file support to be turned off and a maximum
	line length setting to be used, allow these to be overridden with
	environment vvariables.

	* /cvsroot/cssc/gnu/CSSC/tests/get/included.sh:
	SourceForge bug number 441423: on NetBSD-1.5W, the sed "a" command
	appears to eat the newline.  Hence we replace the old single-step sed
	command above with a three-step approach which doesn't use "a".

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi:
	Added sensible header to HTML output; indicate the version number in
	the top node of the Info file.

2001-07-14  james_youngman  <james_youngman@periwinkle>

	* /cvsroot/cssc/gnu/CSSC/docs/TODO:
	Added all the tasks to the SourceForge task tracker (each task in the
	TODO file is now annotated with its SourceForge task ID).

	* /cvsroot/cssc/gnu/CSSC/NEWS:
	Added SourceForge bug id for the concurrent-edit problem.

	* /cvsroot/cssc/gnu/CSSC/ChangeLog:
	Updated wrt newest checking comments.

	* /cvsroot/cssc/gnu/CSSC/README: Add remark about "--disable-binary".

	* /cvsroot/cssc/gnu/CSSC/acconfig.h, /cvsroot/cssc/gnu/CSSC/admin.cc, /cvsroot/cssc/gnu/CSSC/auxfiles/CSSC.spec.in, /cvsroot/cssc/gnu/CSSC/bodyio.cc, /cvsroot/cssc/gnu/CSSC/docs/config-info.texi.in, /cvsroot/cssc/gnu/CSSC/docs/cssc.texi, /cvsroot/cssc/gnu/CSSC/docs/Makefile.am, /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/NEWS, /cvsroot/cssc/gnu/CSSC/README, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/sf-get2.cc, /cvsroot/cssc/gnu/CSSC/showconfig.cc, /cvsroot/cssc/gnu/CSSC/tests/binary/auto.sh, /cvsroot/cssc/gnu/CSSC/tests/binary/binbasic.sh, /cvsroot/cssc/gnu/CSSC/tests/binary/diff.sh, /cvsroot/cssc/gnu/CSSC/tests/binary/eightbit.sh, /cvsroot/cssc/gnu/CSSC/tests/binary/seeking.sh, /cvsroot/cssc/gnu/CSSC/tests/common/config-data, /cvsroot/cssc/gnu/CSSC/val.cc, /cvsroot/cssc/gnu/CSSC/version.h:
	Provide new configure option, --disable-binary, which removes support
	for creating binary SCCS files.  If we find an existing binary SCCS file,
	we can still work with it.   Also allow the setting of a maximum line length
	in order to provide better interoperability with other SCCS implementations.

	* /cvsroot/cssc/gnu/CSSC/configure.in:
	Allow the disabling of binary file support and the setting of a maximum
	SCCS file line length (for interoperability).

2001-07-10  james_youngman  <jay@gnu.org>

	* /cvsroot/cssc/gnu/CSSC/get.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.h, /cvsroot/cssc/gnu/CSSC/sf-get2.cc:
	SourceForge bug 439146: concurrent edits cause assert failure
	First cut at solving the problem.

	* /cvsroot/cssc/gnu/CSSC/cdc.cc, /cvsroot/cssc/gnu/CSSC/delta.cc, /cvsroot/cssc/gnu/CSSC/get.cc, /cvsroot/cssc/gnu/CSSC/pf-del.cc, /cvsroot/cssc/gnu/CSSC/prs.cc, /cvsroot/cssc/gnu/CSSC/rmdel.cc, /cvsroot/cssc/gnu/CSSC/sccsfile.cc, /cvsroot/cssc/gnu/CSSC/sccsname.h, /cvsroot/cssc/gnu/CSSC/sf-admin.cc, /cvsroot/cssc/gnu/CSSC/sf-delta.cc, /cvsroot/cssc/gnu/CSSC/unget.cc, /cvsroot/cssc/gnu/CSSC/val.cc:
	Various changes relating to correct NULL pointer 'spelling', in the
	interests of greater portability.

2001-07-08  james_youngman  <jay@gnu.org>

	* /cvsroot/cssc/gnu/CSSC/ChangeLog, /cvsroot/cssc/gnu/CSSC/NEWS:
	Updated ChangeLog and NEWS files prior to release.

	* /cvsroot/cssc/gnu/CSSC/configure.in: Bumped version to 0.12alpha.pl0.

2001-07-06  james_youngman  <jay@gnu.org>

	* sid_list.h:
	Source forge bug #438857; coredump if a range list has an empty element (e.g.
	a comma at the end or two commas in a row).

2001-06-26  james_youngman  <jay@gnu.org>

	* docs/cssc.texi: Minor formatting changes

2001-06-03  james_youngman  <jay@gnu.org>

	* tests/get/s.incl_excl_1.input:
	SourceForge BUG 417990: s.incl_excl_1.input missing from CVS.

2000-12-03  james_youngman  <jay@gnu.org>

	* README:
	We now provide "val".  Also include note about unsetting ${sccs}
	before running the test suite.

	* NEWS: Added further info about more additions & bugfixes

	* tests/get/excl_ig_1.sh:
	Added extra test script; one of the tests fails on CSSC but is currently commented out

	* docs/borrowed-files.txt: Added list of files sourced from elsewhere

	* docs/TODO: Reconsidered some decisions.

	* sf-get.cc:
	Removed redundant "0 ||" expression in if statement (leftover from debugging)

	* install-sh, missing, mkinstalldirs:
	Updated various scripts used bu the automake/autoconf stuff with the
	latest versions of those files as obtained from the Automake
	distribution.

	* tests/get/s.incl_excl_1: New file.

2000-12-02  james_youngman  <jay@gnu.org>

	* ChangeLog:
	Updated ChangeLog from CVS repository, including the latest checkin
	comments.

2000-11-26  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/sccsname.cc, /cvsroot/cssc/gnu/CSSC/cap.cc, /cvsroot/cssc/gnu/CSSC/delta-iterator.cc, /cvsroot/cssc/gnu/CSSC/fdclosed.cc, /cvsroot/cssc/gnu/CSSC/my-getopt.cc, /cvsroot/cssc/gnu/CSSC/sid_list.h, /cvsroot/cssc/gnu/CSSC/stack.h:
	Partial fix for SF bug #123246 (GCC-specific assumptions + typos)

2000-11-19  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/seqstate.cc, /cvsroot/cssc/gnu/CSSC/seqstate.h, /cvsroot/cssc/gnu/CSSC/sf-get.cc, /cvsroot/cssc/gnu/CSSC/tests/get/sf111140.sh, /cvsroot/cssc/gnu/CSSC/tests/get/sf111140.wtd, /cvsroot/cssc/gnu/CSSC/tests/get/sf111140_testcase.uue, /cvsroot/cssc/gnu/CSSC/testutils/compare_gets.sh, /cvsroot/cssc/gnu/CSSC/testutils/mogrify.awk, /cvsroot/cssc/gnu/CSSC/NEWS:
	Fix for long-standing bug: we now can correctly extract
	files containing deltas which include other deltas with
	the ^Ai construct (e.g. branch merges).  We may still not
	handle "get -i" correctly yet though.  Also, no similar
	fix for the excluded delta situation (I have no example
	file demonstrating that problem).  This is recorded as
	SourceForge bug 111140.  A test for this bug is also now
	included.

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi, /cvsroot/cssc/gnu/CSSC/bsd/COPYING.bsd:
	Updated BSD license & documentation to remove advertising clause

	* /cvsroot/cssc/gnu/CSSC/unused/configs/README:
	Include README file to explain the contents of the directory

	* /cvsroot/cssc/gnu/CSSC/docs/patches.txt:
	Indicate that patches can be submitted via the SourceForge Patch Manager.

	* /cvsroot/cssc/gnu/CSSC/configure.in:
	A test commit, changing the suffix on the version number (to emphasise
	the fact that it's the CVS code).  Real purpose is to test the CVS checkin
	notification facility.

2000-11-12  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/fatalsig.cc:
	Added new file to resolve Sourceforge bug 110909.

	* /cvsroot/cssc/gnu/CSSC/Makefile.am, /cvsroot/cssc/gnu/CSSC/configure.in, /cvsroot/cssc/gnu/CSSC/quit.cc, /cvsroot/cssc/gnu/CSSC/quit.h:
	Delete the z-file when we get a fatal signal (fix for Sourceforge
	bug number 110909).

	* /cvsroot/cssc/gnu/CSSC/sf-get2.cc: Fixed bug 110537.

2000-11-05  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/fileiter.cc:
	Fixed SourceForge bug 121605 (coredump when fileiter is passed a directory
	name ending in a slash).

	* /cvsroot/cssc/gnu/CSSC/tests/admin/locks.sh:
	Test case covering SourceForge bug 111140 (admin -dla coredumps).

	* /cvsroot/cssc/gnu/CSSC/rel_list.cc, /cvsroot/cssc/gnu/CSSC/sf-admin.cc, /cvsroot/cssc/gnu/CSSC/sf-write.cc:
	Fixed SourceForge bug #121599: "admin -dla" crashes

2000-09-17  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/show-disp.sh:
	Removed spurious extra newlines (I wonder when they started appearing?)

2000-08-05  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/show-disp.sh:
	Updated copyright year and added ID header comment.

	* /cvsroot/cssc/gnu/CSSC/show-disp.sh:
	Use the -z3 option to compress data for "cvs status" because we have a
	long link with low bandwidth, often.  However, we don't use -z9
	because that would be worse for faster links.

	* /cvsroot/cssc/gnu/CSSC/NEWS, /cvsroot/cssc/gnu/CSSC/configure.in:
	Added in information about recent changes.

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi:
	Resolved conflict on line containing the URL of the CSSC bug reporting page.

	* /cvsroot/cssc/gnu/CSSC/tests/get/sid-select2.sh:
	Added test case for [ Bug #110537 ] Invalid SID got in branch where Rtrunk
	greater than Rbranch

2000-08-04  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/show-disp.sh:
	Cope with CVS servers as well as local filesystem CVSROOTs.

2000-08-03  James Youngman  <james_youngman@users.sourceforge.net>

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi, /cvsroot/cssc/gnu/CSSC/README, /cvsroot/cssc/gnu/CSSC/docs/BUGS:
	Fixed some incorrect SourceForge URLs.

	* /cvsroot/cssc/gnu/CSSC/docs/CREDITS: Corrected some spelling errors.

2000-07-18  James Youngman  <jay@gnu.org>

	* /cvsroot/cssc/gnu/CSSC/Makefile.am: Added relvbr.h to noinst_HEADERS.

	* /cvsroot/cssc/gnu/CSSC/docs/cssc.texi:
	Updated with details of the web site and changed the bug-reporting
	procedure.

	* /cvsroot/cssc/gnu/CSSC/ChangeLog:
	Brought into line with recent changes.

	* /cvsroot/cssc/gnu/CSSC/auxfiles/CSSC.spec.in: Updated the URL.

	* /cvsroot/cssc/gnu/CSSC/docs/BUGS:
	Refer to the bug tracking system at SourceForge.

	* /cvsroot/cssc/gnu/CSSC/AUTHORS:
	Inserted reference to file docs/CREDITS in the "AUTHORS" file.

	* /cvsroot/cssc/gnu/CSSC/README:
	Added information about SourceForge to the README.

	* /cvsroot/cssc/gnu/CSSC/configure.in: Bumped the patchlevel.

	* /cvsroot/cssc/gnu/CSSC/NEWS, /cvsroot/cssc/gnu/CSSC/docs/CREDITS.short.txt, /cvsroot/cssc/gnu/CSSC/docs/CREDITS:
	Brought into line with recent changes.

	* /cvsroot/cssc/gnu/CSSC/bsd/sccs.c:
	Patch from Albert John FitzPatrick III  <ajf_nylorac@acm.org>;
	Added support for "unget".

	* /cvsroot/cssc/gnu/CSSC/delta.cc:
	Accept list of MRs on input even if the input is not a TTY since
	allegedly other implementations do this.

2000-03-19  James Youngman  <jay@gnu.org>

	* tests/get/subst.sh, sf-get2.cc, sid.cc, sid.h:
	Patches from Mark Fortescue relating to SID selection and cutoff dates.

	* relvbr.h:
	Removed remarks about MySC, since this file has never been part of MySC.

	* relvbr.h: Fix by Mark Fortescue <mfortescue@transoft.com>.

	* rmdel.cc, cdc.cc: Fix from Frank van Maarseveen <fvm@tasking.nl>:

	A setuid cdc/rmdel will not unlock (i.e. remove the z-file) in
	case of an error. Most obvious error is when the invoker is not
	the creator of the delta.

	Both cdc and rmdel revoke setuid permission when the real user
	is not the creator of the delta. However, this should be restored
	_before_ reaching the end of the 'try' scope because on leaving
	it the z-file is removed indirectly by the sccs_file destructor.

	Attached you will find a patch which solves this problem.

	A more correct solution would be not to swap uid/euid but
	to print something like:

	ERROR [/usr/src/xxx/SCCS/s.main.c]:
	Must be owner of file or <user> to use this command.(rc4)

	* docs/cssc.texi:
	Support for SCCS files in which timestamps have been corrupted by
	non-Y2K-compliant versions of SCCS.  These files are correctly
	understood on reading, and are fixed if the file is ever re-written by
	CSSC.  (The Sun version of SCCS also performs the same fix).  Patches
	to do this were provided by Peter Kjellerstedt

	* delta-table.cc, delta-table.h, sf-get2.cc:
	Sergey Ostashenko provided patches to allow the processing of SCCS
	files with gaps in the chain of used sequence numbers, and to allow
	two deltas to have the same sequence number, on the condition that one
	of them is a removed delta.

	* sccsdate.cc:
	Patch by Peter Kjellerstedt for cleaning up after broken versions of
	SCCS.

	Some non y2k-compliant versions of SCCS will use a ":" in the decade
	field of the date in the year 2000 (since the ASCII code for ':' is
	one greater than that for '0').  Changed the relevant sccs_date
	constructor to figure out the right value in this case.  A warning
	message is issued when this happens.

	* tests/bsd-sccs/driver-basic.sh, tests/cdc/2comment.sh, tests/cdc/4order.sh, tests/delta/basic2.sh, tests/delta/ignored.sh, tests/delta/iterbasic.sh, tests/get/annotate.sh, tests/get/create.sh, tests/get/doubleinc.sh, testutils/lndir.c, testutils/seeker.c, docs/BUGS, docs/CREDITS, docs/CREDITS.short.txt, docs/FIXED, docs/Platforms, docs/cssc.texi, bsd/sccs.c, run.cc, sccsfile.cc, sccsfile.h, sccsname.h, seqstate.cc, seqstate.h, sf-delta.cc, sf-get.cc, sf-get2.cc, sf-get3.cc, sf-prs.cc, val.cc, visibility.cc, ChangeLog, Makefile.am, NEWS, configure.in, file.cc, linebuf.cc, quit.cc:
	Reverted trunk files to same contents as 0.11 patchlevel 3.

1999-12-09  Mark Fortescue <mark@mtfhpc.demon.co.uk>

	* relvbr.h, sf-get2.cc, sid.cc, sid.h
	Fixed a problem with branching

	* sf-get2.cc, tests/get/subst.sh
	Fixed a problem with Cutoff Dates

1999-06-27  James Youngman  <jay@gnu.org>

	* quit.cc, sccsfile.cc, file.cc:
	Improved the error message which is issued when you try to open a
	nonexistent SCCS file.

	* docs/CREDITS, docs/CREDITS.short.txt, docs/Platforms:
	Bugfixes from Hyman Rosen and Mark Reynolds

	* sf-get.cc:
	Mark Reynolds <mark@aoainc.com>: GCC 2.8.1 on VAX Ultrix 4.2 doesn't
	seem to get this call right.  Since subst_fn is always write_subst
	anyway, we work around it by using the function pointer just as a
	boolean variable.  Yeuch.

	* bsd/sccs.c:
	Mark Reynolds <mark@aoainc.com>: If $LANG is not set, setlocale()
	fails on VAX Ultrix 4.2.

1999-06-26  James Youngman  <jay@gnu.org>

	* tests/admin/lockfail.sh:
	Fail correctly, but don't coredump, when we fail to create a lock file.
	Bug report by Michael Ubell <ubell@mindspring.com>.

	* tests/admin/lockfail.sh: New file.

	* file.cc, sccsname.h:
	Fail correctly, but don't coredump, when we fail to create a lock file.
	Bug report by Michael Ubell <ubell@mindspring.com>.

	* run.cc: Fixed typos.

	* tests/cdc/2comment.sh, tests/cdc/4order.sh:
	Use egrep, not grep, because on SunOS 4.1.3, grep(1) doesn't like the
	long regexps...

	* run.cc: SunOS 4.1.3 doesn't like fflush(NULL). (Mark Reynolds)

	* testutils/seeker.c, testutils/lndir.c:
	Vax Ultrix 4.2 requires <sys/types.h>. (Mark Reynolds)

	* sccsfile.cc: Compatibility fixes provided by Hyman Rosen.

	* val.cc: Fixed the name of the executable passed to set_prg_name().

1999-04-21  James Youngman  <jay@gnu.org>

	* ChangeLog: Added changes to date.

	* docs/Makefile.am: Added texinfo.tex to the distribution.

	* configure.in, sccsfile.cc, sf-delta.cc, sf-get.cc, sf-get2.cc, sf-get3.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc, NEWS:
	Removed some dead code.

	* seqstate.h, seqstate.cc: Removed dependency on the STL <list> header.

1999-04-18  James Youngman  <jay@gnu.org>

	* docs/texinfo.tex: Automake likes texinfo.tex to be present.

	* delta.h, dtbl-prepend.cc, fileiter.h, prs.cc, prt.cc,
	rel_list.cc, rel_list.h, rl-merge.cc, rmdel.cc, run.h, sact.cc,
	seqstate.cc, seqstate.h, sf-cdc.cc, sf-chkmr.h, sf-get.cc,
	sf-get3.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc, sf-write.cc,
	unget.cc, ChangeLog, delta-table.cc, delta-table.h: Updated
	copyright statements for those files modified this weekend.

	* configure.in:
	Commented out AM_PROG_INSTALL, since automake seems not to like it
	any more.

	* tests/bsd-sccs/driver-basic.sh:
	Disable test h2, since currently we don't pass it.   FIXME!

	* tests/rmdel/basic.sh: *** empty log message ***

	* tests/bsd-sccs/driver-basic.sh:
	Added test for "sccs unedit" ensuring we delete the gotten file.

	* docs/Platforms, docs/TODO, auxfiles/CSSC.spec.in:
	*** empty log message ***

	* pfile.cc, pfile.h, prs.cc, prt.cc, quit.cc, rel_list.cc,
	rel_list.h, rl-merge.cc, rmdel.cc, run.cc, run.h, sact.cc,
	sccsfile.cc, sccsfile.h, seqstate.cc, seqstate.h, sf-admin.cc,
	sf-cdc.cc, sf-chkmr.h, sf-delta.cc, sf-get.cc, sf-get2.cc,
	sf-get3.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc, sf-write.cc,
	unget.cc, admin.cc, cdc.cc, delta-table.cc, delta-table.h,
	delta.cc, delta.h, dtbl-prepend.cc, fileiter.h, get.cc,
	l-split.cc, list.cc, mylist.h, mystring.h: Changes for correct
	support of included deltas in branches (a rewrite of seqstate.cc
	and seqstate.h).

	* tests/get/included.sh:
	Enable the test, now that we support included non-ancestor branches.

	* NEWS, README, configure.in: Updates for 0.11alpha.pl0

	* docs/cssc.texi: Updated version for next release.

	* docs/BUGS: Added bug report for "unget" deleting the wrong g-file.

	* bsd/sccs.c: Use tmpfile() rather than mktemp() in unget(), because
	glibc-2.1-0.990311 has a broken mktemp() (it returns an empty string).

1999-03-29  James Youngman  <jay@gnu.org>

	* tests/get/included.sh: Tests for included deltas.

1999-03-21  James Youngman  <jay@gnu.org>

	* Released 0.10beta.pl1.

	* docs/cssc.texi: Updated version for release.

	* docs/CREDITS.short.txt:
	File containing brief list of people who have contributed to CSSC.

	* docs/CREDITS: Added relevant people.

	* configure.in: Bumped version to 0.10beta.pl1

	* auxfiles/CSSC.spec.in:
	Folded in change from Michael Sterrett <msterret@coat.com> and Aron
	Griffis <agriffis@coat.com> which puts symlinks in /usr/bin (or
	whatever directory), pointing at the stuff in /usr/libexec/cssc.
	The effect is to have /usr/bin/get and so on.

	* bsd/sccs.c:
	Applied patch from Greg A. Woods which eliminates compiler warnings
	from sccs.c, without changing how the program works (I hope!).

	* docs/Platforms: Updated with respect to C++ compiler compatibility.

	* configure.in: Moved version.cc to the front of the AC_OUTPUT() list.

	* run.cc: Modification from Greg A. Woods; eliminates compiler warning.

	* docs/cssc.texi: Minor corrections (typos, etc).

	* testutils/README:
	Minor tweak suggested by Greg A. Woods (specify UTC in time)

1999-03-20  James Youngman  <jay@gnu.org>

	* Released 0.10beta.pl0.

	* docs/cssc.texi: Updated version number.

	* bsd/sccs.c, docs/cssc.texi, delta.cc, configure.in:
	Updated copyright messages of those files edited so far in 1999.

	* tests/prs/keywords.sh: Use "echo_nonl" instead of "echo -n".

	* configure.in, ChangeLog, NEWS: Go to 0.10beta-pl0 from 0.09alpha-pl4.

	* docs/cssc.texi:
	Cosmetic changes to make texinfo-3.12f happy about my use of @xref.
	(in this case, by adding punctuation after each use).

1999-03-19  James Youngman  <jay@gnu.org>

	* testutils/realpwd.cc, sf-delta.cc, sf-get2.cc, sid.cc, what.cc, bodyio.cc, cdc.cc, delta-iterator.cc, my-getopt.cc, mystring.cc, mystring.h, pfile.h, quit.cc, quit.h, run.cc:
	Fixes to make CSSC compiler under the EPC C++ compiler (and probably
	other C++ compilers, too).

1999-03-15  James Youngman  <jay@gnu.org>

	* Released 0.09alpha.pl4.

	* ChangeLog, NEWS, configure.in: Comments etc. for 0.09alpha.pl4.

	* docs/cssc.texi: Marginally improved documentation for "delta -p"

	* bsd/sccs.c: Fixed "sccs sccsdiff".  Bug reported by Achim Hoffmann.

1999-03-14  James Youngman  <jay@gnu.org>

	* docs/cssc.texi, ChangeLog, delta.cc, sccsfile.h, sf-delta.cc:
	Implemented the -p option of delta.

	* docs/TODO:
	Added tests to make sure we correctly count the number of lines initially inserted by admin -i.

	* bsd/sccs.c: Tweaks to execv() usage in try_to_exec().
	Also, ensure that PREFIX is absolute, and refuse to run otherwise.

	* configure.in: Eliminate duplicate checks for abort() and wait().

	* auxfiles/CSSC.spec.in: Corrected the URL.

	* tests/delta/n-option.sh: Added tests for the -n option of delta.

	* tests/admin/i-option.sh:
	Check that the "initial number of lines" is correct for admin -i.

1999-03-13  James Youngman  <jay@gnu.org>

	* configure.in: Bumped to 0.09alpha.pl3.

	* NEWS: Added NEWS remark regarding the removal of AC_C_CONST.

	* tests/admin/r-option.sh: val has now been implemented.

	* docs/TODO, docs/cssc.texi, docs/missing.txt, sccsfile.cc, sccsfile.h, sf-admin.cc, sf-delta.cc, what.cc, NEWS, admin.cc, configure.in, file.cc, get.cc, pfile.cc, quit.cc, run.cc:
	Allow "admin -ifoo -r1.2.2.1 s.foo", and make it work correctly.
	Also added tests for the -r option.

	* tests/admin/init-mr.sh: Corrected an error message.

1998-12-12  James Youngman  <jay@gnu.org>

	* docs/cssc.texi:
	Warn that "admin -z" may silently fix errors and get it wrong.

	* val.cc, sf-val.cc, sf-write.cc, quit.cc, quit.h, sccsfile.cc, except.h, file.cc, get.cc, bodyio.cc, delta-table.cc:
	Enhancements to "val".

1998-12-10  James Youngman  <jay@gnu.org>

	* configure.in: Went to 0.09alpha.pl2.

1998-12-09  James Youngman  <jay@gnu.org>

	* NEWS: Added news for CSSC-0.09alpha-pl2.

	* sccsfile.h:
	Added declarations of functions implemented in sf-val.cc and also a
	forward declaration of class delta_iterator.

	* what.cc: Duh.  getchar() returns int, remember?

	* sf-prt.cc:
	If a (mystring*) flag in the SCCS file is not NULL, then the flag must
	be set even if the length of the string is zero; consider lines like
	"^Af v" rather than "^A f v ".

	* sid.h, sid.cc: Implemented sid::as_string().

	* sccsfile.cc:
	We have to be careful to not crash on input lines like "^Af v".  That
	is, bufchar(4) may well be zero for a flag line!  Thanks to William
	W. Austin <bill@baustin.alph.att.com> for this diagnosis.

	* sf-val.cc:
	Traverse the delta table checking some things.  Not finished yet.

1998-11-29  James Youngman  <jay@gnu.org>

	* docs/cssc.texi, docs/TODO, val.cc, sf-val.cc, sccsfile.h, Makefile.am, NEWS:
	Initial implementation of "val".

	* sf-admin.cc: Make it possible to delete the "m" flag.

	* valcodes.h: Return codes for "val".

	* docs/CREDITS: Fixed typo.

1998-11-21  James Youngman  <jay@gnu.org>

	* admin.cc: Ensure that if we specified -h, we do *nothing* else.

	* tests/admin/admin-hz.sh:
	Make sure that if we specify -h and -z, we do not update the checksum.

	* tests/admin/admin-hz.sh:
	Added tests for the -h and the -z options of admin.

	* docs/cssc.texi: Elaborated on comments about "admin -z".

	* sf-get.cc:
	For get(), ensure that the file was not opened with the mode
	FIX_CHECKSUM, because that doesn't make sense.

	* sccsfile.cc:
	Emit helpful message if we fail to open the s-file.   If we are doing
	"admin -z", don't complain if the checsum was previously wrong.

	* sccsfile.h: Added new open mode FIX_CHECKSUM.

	* admin.cc: Better operation of the -z (reset checksum) option.

	* sf-write.cc:
	Rethought update_checksum().  It now works even though the s-file is
	mode 444 (which is what it should be).

	* file.cc: Eliminated compiler warning.

1998-11-13  James Youngman  <jay@gnu.org>

	* NEWS: Added changes for 0.09alpha.pl1.

	* configure.in: Bumped up the patchlevel.

	* docs/cssc.texi: Documented sccsdiff.

	* run.cc: Call errormsg_with_errno() correctly.

1998-11-12  James Youngman  <jay@gnu.org>

	* cdc.cc: Reformatted the error message that you get when trying to get
	arguments from stdin without also using the -y option.

1998-11-01  James Youngman  <jay@gnu.org>

	* docs/FIXED: Added fixes from Dick Streefland.

	* testutils/Makefile.am: Added the "yammer" program.

	* docs/Platforms: Also tested on Red Hat 5.1.

	* docs/CREDITS: Added credit to Greg Woods.

	* tests/binary/seeking.sh: Avoid requiring the "nl" utility.

	* testutils/yammer.c:
	This program is not installed as part of CSSC.  It's just used by
	the test suite.  It takes two arguments, the first being a repeat
	count, and the second being a string that should be repeated that
	many times.  For example, "yammer 2 blah" should emit
	  1 blah
	  2 blah

	The program was designed to eliminate the requirement to do
	  yes blah | nl | head -2
	because some systems, for example NetBSD/SPARC 1.3.2, lack the "nl"
	utility.

	* run.cc:
	When calling errormsg_with_errno(), actually pass errno as the first argument.

1998-10-29  James Youngman  <jay@gnu.org>

	* sccsfile.cc:
	Added toleration for some features that Larry is putting into
	BitKeeper.

	* auxfiles/Makefile.am: Added newline at the end of the file.

	* show-disp.sh:
	Don't use the --lint --posix for awk, because only GNU awk likes them.

1998-10-21  James Youngman  <jay@gnu.org>

	* file.cc:
	Use stat(2) rather than fstat(2), so that the file locking does indeed
	work over NFS.

1998-10-20  James Youngman  <jay@gnu.org>

	* auxfiles/Makefile.am:
	Ensure that CSSC.spec and CSSC.spec.in both get distributed.

	* tests/get/no-sfile.sh:
	Added no-sfile.sh, which tests for the existence of a bug pointed out
	by Dick Streefland <dick_streefland@tasking.com> (we core dump when we
	should exit with status 1, if no SCCS file is specified for some
	tools)

	* unget.cc, sf-prs.cc, sf-get2.cc, sact.cc, rmdel.cc, run.cc, prt.cc, prs.cc, get.cc, fileiter.cc, fileiter.h, delta.cc, cdc.cc, admin.cc:
	Patches from Dick Streefland <dick_streefland@tasking.com>:-
	> I'm sending you three patches for CSSC-0.09alpha.pl0. Patch #1 fixes
	> two prototype mismatches. Patch #2 makes sure that "get" and "prs"
	> return a proper exit status in the case of an output file error
	> (e.g.  disk full). Patch #3 fixes the problem that when you invoke
	> one of the tools without an SCCS file, it will abort with a core
	> dump. Abort() is called because an exception is raised that is not
	> handled. I removed the exception, and added explicit tests in each
	> tool.

1998-09-07  James Youngman  <jay@gnu.org>

	* file.h: Added fcreate() flag enum for atomic locking over NFS.

	* file.cc:
	Made the lockfile create more robustly atomic over NFS by using the
	lock-then-stat approach.  Fall back on using the regular open() with
	O_EXCL if it look slike the underlying filesystem does not support
	hard links.

1998-09-06  James Youngman  <jay@gnu.org>

	* sf-delta.cc, pf-del.cc, bodyio.cc:
	Use fcreate() to create files for writing, rather than fopen().
	This allows us to use open(.., O_CREAT|O_EXCL).

	* get.cc:
	If we fail to add the lock to the p-file, delete the gotten editable file.

	* docs/cssc.texi:
	Documented the various prefixes used for files, temporary and otherwise.

	* tests/get/writable.sh:
	Make sure "get -k" produces a writable g-file and "get" without -k
	does not.

	* tests/admin/i-option.sh, sf-write.cc, sf-delta.cc, sccsfile.h, sccsfile.cc, pf-del.cc, get.cc, pf-add.cc, file.cc, bodyio.cc, bodyio.h:
	Take special care to close and delete temporary files if an exception
	is thrown.

	* README: Typo.

1998-09-05  James Youngman  <jay@gnu.org>

	* configure.in:
	Generate auxfiles/CSSC.spec from auxfiles/CSSC.spec.in, to get the
	version number substituted.

	* auxfiles/CSSC.spec.in, auxfiles/CSSC.spec:
	Generate CSSC.spec from CSSC.spec.in, using substitution of @VERSION@.

1998-09-04  James Youngman  <jay@gnu.org>

	* NEWS: UPdated for 0.09alpha.pl0.

	* ChangeLog: Added in the changes for 0.09alpha.pl0.

	* README: Fixed typo.

1998-09-03  James Youngman  <jay@gnu.org>

	* except.h: Declarations of exceptions.

	* Makefile.am: Added except.h.

	* tests/prt/exists.sh:
	Added tests that check for correct behabiour when the s-file is
	absent.

	* sact.cc: Catch exceptions in main().

	* shorter/rmdel.cs, shorter/sact.cs, shorter/unget.cs, shorter/what.cs, shorter/README, shorter/admin.cs, shorter/cdc.cs, shorter/delta.cs, shorter/get.cs, shorter/prs.cs, shorter/Makefile.in:
	We have not been keeping these files up to date and haven't used
	them at all, and we planned not to have to use them.  So they're
	obsolete.

	* tests/get/create.sh:
	Make the test suite miscarry if the test files cannot be created.

	* tests/initial/root.sh, tests/Makefile.am:
	Make sure we start the test suite by making sure that we're not
	running as root.

1998-09-02  James Youngman  <jay@gnu.org>

	* tests/common/not-root:
	If the code inside the subshell exits with a nonzero exit status, make
	sure that the "outer" shell does too -- so that the miscarry() takes
	effect.

	* tests/bsd-sccs/driver-basic.sh:
	Remove the SCCS directory too, when the test is finished.

	* sid_list.h, unget.cc, sf-write.cc, sf-prs.cc, sf-get2.cc, sf-kw.cc, sf-get.cc, sf-delta.cc, sf-admin.cc, sccsfile.h, sccsfile.cc, run.cc, quit.h, rel_list.cc, rmdel.cc, prt.cc, quit.cc, pf-add.cc, pfile.cc, prs.cc, filepos.h, get.cc, file.cc, fileiter.cc, delta.cc, configure.in, delta-table.cc, bodyio.cc, cdc.cc, acconfig.h, admin.cc:
	On systems that support exceptions, handle errors by throwing
	exceptions.  On systems that don't support exceptions, handle some
	errors by returning back up the calling sequence, and some by calling
	exit() in quit().  This means that only systems with exceptions will
	allow the second file to be processed if the first fails.

	* docs/cssc.texi:
	"admin -h" is actually unimplemented, rather than just untested.

	* tests/rmdel/exists.sh, tests/unget/exists.sh, tests/prs/exists.sh, tests/prs/keywords.sh:
	Added tests that check for correct behaviour when the s-file does
	not exist.

1998-08-22  James Youngman  <jay@gnu.org>

	* sf-write.cc: Eliminate unused-parameter warning.

1998-08-15  James Youngman  <jay@gnu.org>

	* docs/TODO: We now use getpwuid() instead of getlogin().

1998-08-14  James Youngman  <jay@gnu.org>

	* unget.cc, sf-write.cc, sid_list.h, sf-prs.cc, sf-get3.cc, sf-kw.cc, sf-get2.cc, sf-get.cc, sf-delta.cc, sccsfile.h, rel_list.cc, fileiter.cc, filepos.h, get.cc, file.cc, file.h, delta.cc, admin.cc:
	Use errormsg() or errormsg_with_errno() more, instead of quit().

1998-08-13  James Youngman  <jay@gnu.org>

	* auxfiles/CSSC.spec, configure.in: Bumped to 0.09alpha.pl0.

	* README: Indicate how to generate all the neccesary files after a "cvs
	checkout".

	* bodyio.h, bodyio.cc, sf-delta.cc, sf-admin.cc:
	Handle I/O errors without calling quit().

	* sf-get2.cc:
	Added reminder to check if we handle the %W% keyword correctly.

	* sf-get.cc, l-split.cc, delta.cc:
	Cosmetic changes to the code formatting.

	* sf-prt.cc:
	Use errormsg_with_errno(), not quit(), and return a failure status
	intead of exiting on the spot when there is a problem (so that we can
	continue to process the next file).

	* sf-prs.cc: Cosmetic changes to the code formatting.

	* pfile.cc:
	Added ctor_quit(), a synonym for quit(), which indicates that it is
	being called from a constructor.  These are the failure points that
	can't be replaced with a "return false", but only with an exception.

	* fileiter.cc: Cosmetic changes to the code formatting.

	* cssc.h: Don't need to worry about getlogin() any more.

	* unget.cc: Return a failure status if pfile.update() had failed.

	* sid.cc:
	Use assert(), not quit(), to detect logic errors in the program.

	* sf-write.cc, sf-delta.cc:
	Use errormsg_with_errno(), not quit(), and return a failure status
	intead of exiting on the spot when there is a problem (so that we can
	continue to process the next file).

	* sccsfile.cc:
	Use errormsg_with_errno(), not quit(), and return a failure status
	intead of exiting on the spot when there is a problem (so that we can
	continue to process the next file).

	Added ctor_quit(), a synonym for quit(), which indicates that it is
	being called from a constructor.  These are the failure points that
	can't be replaced with a "return false", but only with an exception.

	* quit.h, quit.cc:
	Added ctor_quit(), a synonym for quit(), which indicates that it is
	being called from a constructor.  These are the failure points that
	can't be replaced with a "return false", but only with an exception.

	* pf-del.cc:
	Use errormsg_with_errno(), not quit(), and return a failure status
	intead of exiting on the spot when there is a problem (so that we can
	continue to process the next file).

	* file.cc: Use getpwuid(), not getlogin(), for get_user_name().

1998-08-12  James Youngman  <jay@gnu.org>

	* pfile.h: Make update() return a boolean indication of success.

1998-06-19  James Youngman  <jay@gnu.org>

	* NEWS, ChangeLog:
	Normal prerelease modifications to ChangeLog, NEWS, etc.

	* configure.in, auxfiles/CSSC.spec: Bumped the patchlevel.

	* mystring.cc:
	re-fixed bug in find_last_of().    First bugfix had a bug.

	* bsd/sccs.c:
	Use our own error code definitions taken from the glibc <sysexits.h>.
	This is to avoid a compiler error due to the redifinition on Solaris
	(with GCC installed).

	* bsd/sccs.1: Documented the various possible error codes.

1998-06-16  James Youngman  <jay@gnu.org>

	* configure.in: Bumped version to 0.08alpha-pl0.

	* ChangeLog: *** empty log message ***

	* auxfiles/CSSC.spec: Changed version to 0.08alpha-pl0.

	* docs/FIXED: Added a report of the mystring::find_last_of() bug.

	* docs/CREDITS: Added apology to Achim Hoffmann.

	* docs/style.txt:
	"f()" vs. "f ()": added plea for any reason to prefer one over the
	other.

	* docs/cssc.texi:
	Indicate that the fatal-exit-on-error problem is being worked on.

	* NEWS: *** empty log message ***

	* docs/cssc.texi:
	Added a short remark about Emacs's VC-mode in the section on delta; if
	an SCCS file has the V flag set, you need to put an -m option in
	vc-checkin-flags in order to be able to check in revisions within
	Emacs.

	* sccsfile.cc:
	Oops.  Include <ctype.h> if STDC_HEADERS is defined, because
	HAVE_CTYPE_H is not defined by our configure.in.

	* mystring.cc:
	Fixed find_last_of().  We were finding the FIRST occurrence of the
	target rather than the last.  Argh!  How stupid is that?

	* tests/prs/keywords.sh: Make sure prs accepts an empty "-r" option.

1998-06-15  James Youngman  <jay@gnu.org>

	* fileiter.cc:
	When reading a list of filenames from stdin, trim off the newline that
	separates the filenames.

	* sf-write.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc, sf-get.cc,
	sf-get2.cc, sf-cdc.cc, sf-delta.cc, sccsfile.h, sf-add.cc,
	sf-admin.cc, quit.cc, quit.h, rmdel.cc, file.cc, get.cc, prt.cc,
	cdc.cc, delta.cc, admin.cc:
	Don't use quit(); rather, use errormsg() and make a fatal exit
	from the function which we are now executing.  When this
	propagates up to the top level, remember the error so we cal later
	exit with a return value of 1, but nevertheless continue to
	process command-line arguments.

	* prs.cc:
	Allow the -r option to have no argument, without producing an error.
	When processing SCCS files, allow any of them to fail without this
	causing the whole operation to abort, but remember the fact and exit
	with a return value of 1 (hence use errormsg() rather than quit() for
	producing error messages).

1998-06-14  James Youngman  <jay@gnu.org>

	* unused/Makefile.am, unused/README, quit.cc, configure.in,
	Makefile.am:
	Moved some files into the "unused" directory, which we now add into
	the distribution.   They may be useful for ports or something.

	* unused/sid_list.cc, unused/pipe.cc, unused/pipe.h,
	unused/ffsync.cc, unused/fsync.cc, unused/move-if-change,
	unused/dosfile.cc, unused/dummy.cc, unused/_chmod.cc, dosfile.cc,
	ffsync.cc, move-if-change, pipe.cc, pipe.h, sid_list.cc,
	_chmod.cc, dummy.cc, fsync.cc:
	Moved some files into the "unused" directory; we don't use them
	any more and keeping them aroung means that they have to be
	considered during global search and replace operations.  That's
	just making more work for myself.  These files are the contents of
	the $(rainyday_src) macro in the makefile.

	* unget.cc, sccsfile.cc, sact.cc, rmdel.cc, run.cc, quit.cc,
	quit.h, prt.cc, pipe.cc, prs.cc, pf-add.cc, pfile.h, get.cc,
	file.cc, delta.cc, admin.cc, cdc.cc:
	Changes to avoid using quit(); rather, we want to emit an error
	message and return an error status to the caller.  This allows an
	SCCS program to process a list of files without quitting
	prematurely because there was somethign wrong with some file early
	in the list.  More changes remain to be done for this to be
	complete.

	* Makefile.am: Added dosfile.cc and ffsync.cc.

	* dosfile.cc, ffsync.cc:
	Moved some system-dependent code out of file.cc.

	* delta.cc:
	Use errormsg() rather than quit() so that if the first file fails, the
	second may still be processed.

1998-06-13  James Youngman  <jay@gnu.org>

	* README:
	Added some basic remarks about configuuring the destination directory
	to the "QuickStart" section of the file.  Also, change the sample test
	script to send the version information too.

	* fdclosed.cc:
	Fixed copyright date and removed extraneous #include of err_no.h.

	* fdclosed.cc: Fixed the comments.

	* Makefile.am, fdclosed.cc:
	Provide a static object constructor that ensures that file descriptors
	0, 1 and 2 are not closed at the start.  Otherwise we might printf()
	to stdout and accidentally modify a file we fopened() for writing.

	* bsd/Makefile.am: Define PREFIX to be $(csscutildir) by default.

1998-06-11  James Youngman  <jay@gnu.org>

	* ChangeLog, NEWS: Final additions for 0.07alpha.pl3.

	* bsd/Makefile.am:
	Even though sccs.1 is in man_MANS, we still need to get it added to
	EXTRA_DIST in order to get it in the distribution.   Argh.

1998-06-10  James Youngman  <jay@gnu.org>

	* configure.in: Bumped the patchlevel.

	* auxfiles/CSSC.spec:
	Fixe dchangelog, added sccs manpage, included all the info files.

	* NEWS, ChangeLog: Added changes for CSSC-0.07alpha-pl3.

	* bsd/Makefile.am:
	Added COPYNG.bsd to the distribution.   Also .ispell_english.
	Added the manual page sccs.1 too.

	* tests/common/test-common, tests/common/not-root,
	tests/bsd-sccs/driver-basic.sh: Ensure the test suite is not run
	by root (because that makes "test -w" return misleading results).

1998-06-09  James Youngman  <jay@gnu.org>

	* auxfiles/CSSC.spec, docs/CREDITS, NEWS, configure.in:
	Bumped to CSSC-0.07alpha-pl2

	* sccsfile.cc:
	Fixes to tolerate spurious arguments on ^AU and ^At lines.
	This problem reported by Marko Rauhamaa <marko@tekelec.com>.

1998-06-08  James Youngman  <jay@gnu.org>

	* NEWS, ChangeLog: Summarised changes for 0.07alpha-pl1.

	* auxfiles/CSSC.spec, configure.in: Bumped to 0.07 patchlevel 1.

	* prompt.cc: Allow newlines to be escaped with a backslash.

	* sf-get.cc:
	Don't warn about keyword substitution not being done for binary files;
	I don't think it should be done in any case.

	* tests/admin/abspath.sh:
	Use a less complicated way of building the command.   We seem to have
	a small problem with this:-  anthonyc@nag.co.uk sees
	"/zome/anthonyc/.../s.bar: no such file or directory".
	  ^ Note that the z for the lockfile name appears here!

	* tests/prt/reportmr.sh:
	Some shells don't like two assignments on one line, for example
	"g=reportmr.1 s=inputs/s.$g".  With these shells, the $g in the second
	assignment expands to nothing.  "ash" version 0.2 is like this. Bash
	version 1.14.7 is not.

	* bsd/sccs.c: Support "sccs cdc".

	If we use "sccs create -b foo", pass the "-b" flag to "admin", but not
	to "get".  Passing it to "get" would mean "create a branch" rather
	than "binary" and we're not checking the file out for editing anyway.
	This at the request of <peter.kjellerstedt@axis.com>.

1998-06-06  James Youngman  <jay@gnu.org>

	* bsd/sccs.c:
	Be as careful about running setgid as we are about running setuid.

	* bsd/sccs.c:
	Insist on the compile-time macro SCCSDIR having been set if the program
	is installed set-user-id (what about set-group-id?).

	* tests/bsd-sccs/driver-basic.sh:
	Unset $LANG so that the tests for sccs(1) don't fail on systems
	which are mosconfigured, just because they are misconfigured.

	* docs/TODO: *** empty log message ***

	* NEWS: Added update for version 0.07alpha-pl0.

	* ChangeLog: Updated for version 0.07alpha-pl0.

	* configure.in: Bumped to version 0.07.

	* auxfiles/CSSC.spec: *** empty log message ***

	* tests/common/command-names:
	Set ${sccs} here in tests/bsd-driver/*, and not this file.  We keep it
	out of command-names since we currently need to run sccs in order to
	decide if we need to pass it the --prefix option.  That would slow all
	the other tests down.

	* tests/bsd-sccs/driver-basic.sh:
	Set ${sccs} here in this file.  We keep it out of common/command-names
	since we currently need to run sccs in order to decide if we need to
	pass it the --prefix option.  That would slow all the other tests
	down.

	* tests/prt/nodel.sh, tests/prt/default.sh:
	Remove s.testfile when the test is complete.

	* bsd/sccs.c, bsd/sccs.1:
	Modified to work with portability hints provided by Automake
	(e.g. sys_siglist[], struct dirent vs. struct direct, and so on); also
	other portability enhancements.

	Modifued some of the string handling for greater protection against
	buffer-overflow.

	Added extra options to sccs (--cssc, --prefix) to allow the
	program to be tested before the sub-programs (edmin, get, etc.)
	are installed in their final positions.  Added --version and -V
	options (which do the same thing).

	Documented this in the manpage; also added a COPYING section and
	added some more entries in the SEE ALSO section.

	Folded pathnames.h into sccs.c.

	* bsd/Makefile.am: Rolled pathnames.h into sccs.c.

	* bsd/.ispell_english: Removed entries containing punctuation or
	digits; ispell doesn't like them.

	* bsd/pathnames.h: Rolled the few remaining definitions into sccs.c

	* bsd/pathnames.h:
	Don't use absolute paths for the locations of the subcommands.

1998-05-30  James Youngman  <jay@gnu.org>

	* tests/bsd-sccs/driver-basic.sh: Added tests for "sccs check".

	* tests/bsd-sccs/driver-basic.sh:
	Added tests for deledit, delget, fix, tell, rmdel, what, enter, edit,
	clean, unedit and info.

	* configure.in, acconfig.h:
	Detect sys_suglist, for bsd/sccs.  Also detect <locale.h>.  Bump
	patchlevel to 9 (though we may end up making a new release instead).

	* sccsfile.cc:
	find_any_delta(sid id): will find even removed deltas.  This is part
	of the "sccs fix" bugfix.

	* tests/common/command-names:
	Oops.  Set sccs=sccs as a last resort if we can't find it.

	* delta-table.cc, sf-get2.cc, sccsfile.h, delta-table.h:
	When getting a delta for editing, and the trunk successor has been
	rmdel'ed, reuse it (this is required for "sccs fix" to work properly,
	and it's the way real-sccs works).

	* tests/rmdel/edit.sh:
	Tests that do "delta" after an "rmdel" to make sure the right things
	happen.

1998-05-28  James Youngman  <jay@gnu.org>

	* bsd/sccs.c:
	Cope in a more portable way with the status return from a child.

	* bsd/sccs.c: Allow "sccs -V -V -V" without generating a coredump.

	* bsd/sccs.c:
	Some portability improvements; don't need sig_t; cope without
	sys_siglist if we don't have it.   This mostly affects Linux with libc
	version 5 and below, I think.

1998-05-27  James Youngman  <jay@gnu.org>

	* bsd/sccs.c, bsd/.ispell_english, bsd/pathnames.h:
	Some range chacking corrections, correctiosn to the PREFIX macro, etc.

	* bsd/COPYING.bsd:
	Explained why part of CSSC is published under the BSD license

	* docs/TODO:
	Added note about considering the use of getpwuid() in preference to getlogin().
	Removed TODO entries from some stuff that's been done.

	* README:
	We now support binary files; remove the statement that we do not...

	* what.cc, sccsfile.cc, bodyio.cc, cssc.h:
	Removed some unused configuration macros.
	Renamed CONFIG_BINARY_FILE to CONFIG_OPEN_SCCS_FILES_IN_BINARY_MODE.

	* scripts/change-suffix, unused/change-suffix:
	change-suffix should be in scripts, not unused :-)

	* unused/change-suffix: Moved change-suffix into "unused".

	* change-suffix: Moved change-suffix unti "unused".

	* tests/bsd-sccs/driver-basic.sh, tests/Makefile.am:
	Added tests for the driver program "sccs".

	* tests/common/test-common: Use ../../testutils/ekko as a fallback.

	* tests/common/command-names: Added entry for the "sccs" command.

1998-05-25  James Youngman  <jay@gnu.org>

	* defaults.h: Removed some unused features.

	* docs/CREDITS:
	Added info about the BSD-derived code (sccs.c and friends).

	* AUTHORS: Added info about the BSD-derived code (sccs.c and firends).

	* docs/cssc.texi:
	Added documentation about sccs.c, the BSD copyright notice, and added
	some more concept index entries.

1998-05-23  James Youngman  <jay@gnu.org>

	* bsd/sccs.c:
	Some attempts at increased security and portability.  No tests for
	this program yet though, so no certainty that this works.

1998-05-12  James Youngman  <jay@gnu.org>

	* tests/prt/inputs/s.reportmr.1:
	Oops.  I'd been working with a different file in the compilation
	directory.

	* ChangeLog: *** empty log message ***

	* configure.in: Moved to 0.06alpha.pl8

	* NEWS: Additions for 0.06pl8.

1998-05-11  James Youngman  <jay@gnu.org>

	* testutils/README: Fixed typo.

	* tests/prt/inputs/s.reportmr.1, tests/prt/reportmr.sh:
	New tests for those cases where there are MRs to be reported.

	* sf-prt.cc, prt.cc:
	Make sure the MR list (etc.) is formatted correctly when we are
	printing one delta per line.

1998-05-10  James Youngman  <jay@gnu.org>

	* bodyio.cc:
	Don't store the result of getc() in a char, use an int -- that way, we
	can detect EOF.

	* sf-write.cc:
	Remove comment discussing broken behaviour with "admin -i" and
	nonseekable binary standard input that has now been fixed.

	* testutils/lndir.c: Ignore CVS directories too.

1998-05-09  James Youngman  <jay@gnu.org>

	* sf-rmdel.cc, sid.cc, sccs-delta.cc, sccsname.cc, prs.cc,
	quit.cc, pipe.cc, fsync.cc, pf-add.cc, file.cc, fileiter.cc,
	delta.cc, cdc.cc, delta-table.cc:
	Get the name of the file right, in each file's comment header.

	* sf-write.cc, sccsfile.h:
	Fixed some compilation errors; warnings about passing "unsigned *pSum" when "int *pSum" is required.

	* docs/Platforms, docs/CREDITS, docs/FIXED, docs/BUGS:
	Updated lists of outstanding anb fixed bugs, added people to CREDITS,
	and did some housekeeping in Platforms.

	* docs/cssc.texi:
	Added clarification that the file that must be specified on the
	"delta" command line is that of the s-file, not the working file.

1998-05-08  James Youngman  <jay@gnu.org>

	* CSSC-0.06alpha.pl7 released.

	* NEWS, configure.in, ChangeLog: Released 0.06alpha.pl7.

	* docs/cssc.texi: Added header for install-info.

	* auxfiles/CSSC.spec:
	Included mods from John Interrante <interran@crd.ge.com>,
	except his patch to pathname.h; must apply that RSN.

	* sf-delta.cc, seqstate.cc, seqstate.h, sccsfile.cc,
	delta-iterator.h, Makefile.am: Fixed bug in seqstate.h that
	manifested with Codemgr SCCS files.  This required the
	introduction of seqstate.cc and a modification to sf-delta.cc as
	well.

1998-05-06  James Youngman  <jay@gnu.org>

	* seqstate.h:
	Reindented to prepare for new code which maintaind the state of the
	"deleting" flag differently.

1998-05-05  James Youngman  <jay@gnu.org>

	* CSSC-0.06alpha.pl6 released.

	* NEWS: Added entry about "sccs.c".

1998-05-04  James Youngman  <jay@gnu.org>

	* bsd/sccs.c, bsd/pathnames.h, Makefile.am:
	Attempted to make the location of "sccs" configurable.   Also attempted to add const modifiers where useful.

	* NEWS: Added "-t" option.

	* sccsfile.cc:
	Use signed arithmetic for checksums.    I *think* that matches the
	"real" SCCS.  Also produce what I hope are more useful messages when
	the checksum is incorrect (or even the checksum header is missing).

	* sccsfile.h:
	Use signed arithmetic for checksums.    I *think* that matches the
	"real" SCCS.

	* configure.in: Added the "bsd" directory.

	* tests/get/branch.sh:
	Added note about the SCO version of "unget" being silent.

	* docs/cssc.texi:
	texi2html doesn't expand homegrown macros, so we have to write the
	maintainer's email address out by hand in each place.

	* docs/Platforms: Added note for IRIX.

	* sid.h: Removed a #pragma -- they're not portable anyway.

	* pipe.h: Use "class foo : public bar {}" not "class foo : bar { }".

	* pfile.h: Removed a #pragma -- they're not portable anyway.

	* mystring.h:
	Added comment about functions disalbigiated only by the constness of
	*this.   Some versions of the IRIX C++ compiler don't like that (error
	3392).

	* linebuf.h: Actually remove a #pragma that had been commented out.

	* filelock.h: Explicitly use "private" in inheritance spec
	(e.g. 'class foo : private bar {}') ,
	we can't just leave it out.

	* fileiter.cc:
	If an argument is a directory which is named so as to end in a slash,
	don't coredump.

1998-03-18  James Youngman  <jay@gnu.org>

	* bsd/sccs.c: Reindented with GNU Indent.

	* bsd/sccs.c: Many const-correctness changes.

1998-03-17  James Youngman  <jay@gnu.org>

	* bsd/Makefile.am, bsd/Makefile.bsd, bsd/COPYING.bsd, bsd/Makefile:
	Updated the copyright info.  There is a different copyright situation
	locally in this dir.

	* bsd/sccs.c:
	Eliminated many compiler warnings.  Partial Autoconf conversion.

	* bsd/sccs.c: Use stdarg.h instead of old-style /*VARARGS1*/ etc.

1998-03-16  James Youngman  <jay@gnu.org>

	* bsd/sccs.me, bsd/sccs.c, bsd/pathnames.h, bsd/sccs.1, bsd/Makefile:
	Added files from the Berkeley sccs.c implementation.

1998-03-15  James Youngman  <jay@gnu.org>

	* tests/get/t-option.sh, docs/style.txt, docs/get-spec.txt, docs/cssc.texi, docs/Makefile.am, docs/TODO, sf-get2.cc, get.cc, Makefile.am:
	Implemented the "-t" option of get.

	* tests/get/t-option.sh: Tests for the -t option of get.

1998-03-14  James Youngman  <jay@gnu.org>

	* sccsdate.cc, sccsfile.cc, sf-get.cc, configure.in, file.cc, filediff.cc, admin.cc, bodyio.cc:
	Fixed some compiler warnings, no change in functionality.

	* docs/Makefile.am: Added mailing-list.txt.

	* docs/mailing-list.txt:
	Information about the mailing list for GNU CSSC.

	* docs/patches.txt:
	Requested that people specify the purpose of the submitted patch, and
	delete all editor backup files before generating it.

	* testutils/lndir.c, testutils/ekko.c:
	Eliminate some compiler warnings; falling off the end of int-returning
	functions and that sort of thing.

	* testutils/seeker.c:
	setlinebuf() is not a standard ISO-C library function and SCO Unix
	(for example) does not provide it.  It has an exact setvbuf()
	equivalent, so use that instead.

1998-03-11  James Youngman  <jay@gnu.org>

	* auxfiles/Makefile.am, Makefile.am, configure.in:
	Added the "auxfiles" directory so that CSSC.spec is distributed.

	* ChangeLog, NEWS: Detailed the updates for CSSC-0.06alpha-pl5.

	* auxfiles/CSSC.spec, configure.in: Bumped patchlevel to 5.

	* docs/FIXED, docs/BUGS: Oops.  Left a fixed bug in eocs/BUGS --
	and the patchlevel number for the first fixed version was wrong.
	All better now.

	* tests/rmdel/basic.sh:
	Make sure that the revision we tried to remove is actually now absent.

	* tests/common/command-names, tests/rmdel/basic.sh, docs/BUGS,
	docs/CREDITS, docs/Platforms, tests/Makefile.am, sf-rmdel.cc:
	Fixed bug in "rmdel" reported by Peter Kjellerstedt.  "rmdel" had
	been deleting all the control lines.

1998-03-10  James Youngman  <jay@gnu.org>

	* docs/FIXED, auxfiles/CSSC.spec, NEWS, configure.in, ChangeLog:
	Miscellaneous updates for 0.06-pl4.

	* tests/Makefile.am:
	Don't export CVS directories into the distribution.

	* admin.cc:
	Absolute pathnames now work; bug reported by Wolfhard Straehle.

	* tests/admin/abspath.sh:
	Test for bug reported by Wolfhard Str\"ahle; admin -n /abs/path/s.foo
	fails because the "admin" code checks for an "s." after the first
	slash when in fact it should check for an "s." after the LAST one.

1998-03-10  James Youngman  <jay@gnu.org>

	* get.cc:
	Fixes from Peter Kjellerstedt.  First, correct output when a direcory
	is specified on the command line (get should always print the name of
	the current s-file).  Second, when multiple files are specified on the
	command line, don't corrupt the requested SID value by updating it
	with an actual SID value from some particular s-file.

	* sccsdiff.sh.in: Support for filenames containing spaces.

	* filediff.cc, filediff.h, sf-delta.cc:
	Better support for files whose names have spaces in them.

1998-03-09  James Youngman  <jay@gnu.org>

	* filediff.h, filediff.cc:
	finish() returns a bool; false if the child process returned nonzero.

	* sf-delta.cc, fileiter.cc:
	Make FileDiff::finish() return a bool; it returns false if pclose()
	indicates that the spawned process returned a nonzero exit status.
	[ REVERSED -- this was a BAD idea, diff returns 1 if the
	  files differ! ]

	* sccsdiff.sh.in:
	Bug report from Richard Polton: IRIX's pr(1) requires a space between
	the "-h" and its argument.

1998-03-04  James Youngman  <jay@gnu.org>

	* tests/common/real-thing: Define TESTING_CSSC if $dir points at
	CSSC programs rather than SCCS programs.

	* tests/binary/auto.sh: Use $TESTING_CSSC to determine of we
	should run those tests that CSSC should pass but (some verisions
	of) SCCS cannot, instead of abusing $expect_fail.

	* docs/BUGS, docs/FIXED: Some entries moved from BUGS to FIXED.

1998-03-01  James Youngman  <jay@gnu.org>

	* Version 0.06alpha-pl3

	* auxfiles/CSSC.spec: 0.06alpha-pl3

	* configure.in, ChangeLog, NEWS:
	Updated the NEWS and ChangeLog files (0.06alpha-pl3)

	* tests/binary/auto.sh, tests/binary/seeking.sh:
	Tests for binary files and the "-i" option of admin.

	* docs/cssc.texi:
	Genuine SCCS doesn't always properly recover from finding out that
	the "-i" file for admin needs encoding, after having read some of it.

	* bodyio.cc, admin.cc:
	When generating a new SCCS file using the "-i" option of admin,
	we no longer need to be able to seek on that file if the input
	turns out to need encoding after we have read some of it.

	* tests/admin/i-option.sh: We no longer do fgetpos() on stdin.

1998-02-28  James Youngman  <jay@gnu.org>

	* xalloc.cc, xalloc.h, Makefile.am:
	Removed xalloc.cc and xalloc.h completely.

	* show-disp.sh:
	Cope correctly with locally removed files when the actual working file
	has been deleted.

	* docs/CREDITS, xalloc.cc, sl-merge.h, stack.h, sid_list.cc,
	sid_list.h, sid.cc, run.cc, seqstate.h, pipe.cc, linebuf.cc,
	linebuf.h, delta-table.cc, l-split.cc, cssc.h: Patches from
	Richard Polton to eliminate our xalloc.h wrapper for operator new,
	as various versions of GCC differ on the exception throwing
	specification -- if we don't have to override the operator new, we
	don't have to get the declaration right :-)

	* admin.cc:
	Turn off buffering on stdin, as a workaround for a bug in glibc 2.0.6.

	* tests/common/test-common: success(): Delete temporary files.

	* tests/admin/i-option.sh, tests/admin/t-option.sh:
	Temporarily mark the "admin -i" tests "expect-fail".

1998-02-24  James Youngman  <jay@gnu.org>

	* auxfiles/CSSC.spec: Updated the version.

	* tests/binary/char255.uue:
	This file contains one character (uuencoded), the ASCII code 255.

1998-02-23  James Youngman  <jay@gnu.org>

	* configure.in: Bumped version to 0.06alpha.pl2

	* ChangeLog.1, ChangeLog: *** empty log message ***

	* tests/binary/eightbit.sh, tests/binary/diff.sh, tests/Makefile.am:
	Run the binary-file tests as part of "make check".  Small fixes to
	those tests.

	* tests/binary/eightbit.sh, bodyio.cc, NEWS:
	Fixes to allow the character whose code is 255 to be properly handled.

	* tests/binary/eightbit.sh: Tests involving 8-bit bodies.

	* tests/binary/s.umsp.uue: SCCS file containing 8-bit characters.

	* docs/BUGS, docs/FIXED, sf-write.cc, sccsfile.cc: Checksum is now
	8-bit-clean, due to richardp@scopic.com and
	Peter.Kjellerstedt@axis.com.

	* testutils/Makefile.am:
	Added seeker.c, which tests for a particular bug in GNU libc 2.0.6.

	* unget.cc, what.cc, rmdel.cc, sact.cc, prt.cc, my-getopt.h,
	prs.cc, get.cc, my-getopt.cc, fileiter.h, delta.cc, fileiter.cc,
	admin.cc, cdc.cc: Renamed class getopt to class CSSC_Options, to
	avoid conflict with getopt(3) on systems such as netbsd-1.2 (as
	installed on melange.gnu.org)

	* testutils/seeker.c:
	Test program which determines if fgetpos() works correctly on stdin.

1998-02-21  James Youngman  <jay@gnu.org>

	* auxfiles/CSSC.spec: Corrected source file name.

	* auxfiles/CSSC.spec: Strip the installed binaries.

	* NEWS: Updated for CSSC-0.06devel-pl1.

	* ChangeLog: *** empty log message ***

	* what.cc, sid_list.cc, unget.cc, sf-prt.cc, sf-prs.cc,
	sf-get2.cc, sf-kw.cc, sf-get.cc, sf-chkid.cc, sf-delta.cc,
	sf-cdc.cc, sccsfile.h, sact.cc, sccsfile.cc, run.cc, run.h,
	rel_list.h, rmdel.cc, prt.cc, prompt.cc, prs.cc, pipe.h, pfile.h,
	pipe.cc, mystring.h, pfile.cc, mystring.cc, my-getopt.h, mylist.h,
	linebuf.h, my-getopt.cc, l-split.cc, linebuf.cc, get.cc, ioerr.h,
	fileiter.h, filepos.h, file.cc, delta.cc, encoding.cc, cssc.h,
	defaults.h, bodyio.h, cdc.cc, bodyio.cc: Updated the year in the
	copyright message for all those files modified so far in 1998.

	* docs/FIXED, docs/TODO, docs/BUGS: Added some bug reports.

	* unget.cc, sact.cc, sf-get.cc, rmdel.cc, prs.cc, prt.cc, my-getopt.cc, my-getopt.h, fileiter.h, get.cc, fileiter.cc, cdc.cc, delta.cc, admin.cc:
	Modified option processing so that "get s.foo -Gbaz" is equivalent
	to "get -Gbaz s.foo".

	* configure.in: Bumped version to 0.06-pl1.

	* docs/cssc.texi: Minor punctuation corrections.

	* tests/prs/keywords.sh: Added test for :PN:.

	* Makefile.am, sf-prs.cc:
	The prs keyword :PN: needs to produce the full pathname of the SCCS
	file, not just the name as specified on the command line.

	* tests/get/optorder.sh: Initial version.

1998-02-20  James Youngman  <jay@gnu.org>

	* sf-write.cc:
	Cope in a more user-friendly way with the prior existence of "x.foo".

	* docs/BUGS:
	Some bug reports from Peter Kjellerstedt <peter.Kjellerstedt@axis.com>
	and Dave Bodenstab <imdave@mcs.net>.

	* tests/get/sep_subst.sh:
	Make sure the substitution happens for the actual gotten delta, not
	the delta to which the current line belongs.

	* tests/get/sep_subst.sh: *** empty log message ***

	* tests/get/sep_subst.sh:
	Make sure that the delta information substituted for each line is the
	information for the delta that we are actually getting, not the delta
	information for the delta which last touched that line.

1998-02-12  James Youngman  <jay@gnu.org>

	* ChangeLog: *** empty log message ***

	* auxfiles/CSSC.spec: Updated RPM spec-file for version 0.06alpha.pl0.

	* ChangeLog: *** empty log message ***

	* docs/cssc.texi, docs/Platforms, docs/TODO, auxfiles/CSSC.spec, sf-write.cc, configure.in, sccsfile.cc, NEWS:
	Binary file support.

	* docs/missing.txt: Binary file support is now present.

	* tests/binary/binbasic.sh, filediff.h, sf-delta.cc, filediff.cc, Makefile.am, configure.in:
	First working binary file support.

1998-02-11  James Youngman  <jay@gnu.org>

	* tests/binary/auto.sh:
	Tests that ensure that admin correctly guesses if the original file is
	binary or not.

	* configure.in: Updated the patchlevel.

	* ChangeLog: *** empty log message ***

	* NEWS: Added the latest news.

	* docs/TODO, docs/BUGS, docs/FIXED:
	Updated the lists of bugs fixed, bugs discovered, and things to investigate.

	* pipe.h, pipe.cc:
	Some tidying.  This code seems problematic for binary files.  Some of
	the commented-out tests in tests/binary/binbasic.sh break it.

	* tests/get/create.sh: Corrected a comment.

	* tests/Makefile.am: Added testing fr binary files.

	* testutils/Makefile.am:
	Added "ekko", a substitute echo(1) for systems where the normal
	echo(1) does not support newline suppression and escape codes.

	* encoding.cc, bodyio.cc: Added support for deltaing encoded files.

	* auxfiles/CSSC.spec: Added the spec-file for RPM.

	* tests/delta/basic.sh:
	Make sure diff returns 0 for identical files and 1 for different ones.

	* bodyio.h, sf-kw.cc, linebuf.cc, sf-delta.cc:
	Support for deltaing encoded files.  We have a problem with the Pipe
	class and large input files (broken pipe) though.

	* file.cc, configure.in:
	Use stat() to detect if the g-file is writable, because if we are
	root, access() tells us yes even if the file is read-only.  This makes
	"get" fail, saying that a wrtable gfile exists.  Using stat() fixes
	this.

1998-02-10  James Youngman  <jay@gnu.org>

	* tests/common/test-common:
	Use testutils/ekko if no suitable echo(1) command exitst on the system
	(we need newline suppression and escape codes).

	* testutils/ekko.c:
	An echo(1) replacement for systems whose echo does not support escape
	codes and newline supression.

	* tests/binary/diff.sh, tests/binary/binbasic.sh:
	New tests for binary file support (get/delta etc).

	* docs/cssc.texi:
	Removed remarks about option processing, since we now do this the SCCS
	way.  Also, added remarks about the non-security of CSSC and advice not to install it setuid-root or use it as root.

1998-02-09  James Youngman  <jay@gnu.org>

	* sccsdiff.sh.in:
	Patch from Maurice O'Donnell <mod@tfn.com>: pass "-e" to sed before
	the sed commands.

	* tests/large/admin.sh, testutils/yes.c, testutils/Makefile.am:
	Solaris has no yes(1) utility so we roll our own.

1998-02-01  James Youngman  <jay@gnu.org>

	* bodyio.h: Prototypes for functions in bodyio.cc.

	* bodyio.cc:
	New file; functions for handling the I/O for the body of files
	(i.e. the bits that might be uuencoded).

	* ChangeLog, docs/TODO: *** empty log message ***

	* scripts/rev-freq.sh:
	Added rev-freq.sh, which generates a histogram of the distributon of
	CVS revision numbers.

	* config.h.in:
	This file is automatically generated by "autoheader".  We should not therefore keep it under CVS control, I think.

	* sccsfile.cc, pfile.cc:
	Added TODO comment for the places where we modify the contents of a
	cssc_linebuf nefariously.

	* Makefile.am:
	Added bodyio.cc and encoding.cc to those modules that now need it.

	* sf-get.cc:
	Added a no_decide flag to sccs_file::get() for the use of delta.  We
	need to be able to obtain the body in encoded form so that we can feed
	it to diff(1).

	* sf-delta.cc:
	cssc_linefuf now has its own check_id_keywords() member, as a
	preparatory step to 8-bit-cleanness.

	* sf-admin.cc:
	If body_insert() informs us that the body turned out to be binary, set
	flags.encoded so that sccs_file::end_update() can call
	rehack_encoded_flag() (in sf-write.cc).

	* sccsfile.h:
	Allow sccs_file::get() to be told not to uudecode an encoded file.  We
	do this in order to obtain the still-encoded text in otder for delta
	to feed it to diff.

	* linebuf.h, linebuf.cc:
	Changes for the beginnings of 8-bit-clean support.  We're not
	8-bit-clean yet though.  The class interface currently precludes it.

	* ioerr.h: Added fwrite_failed().

	* cssc.h, defaults.h:
	CONFIG_LINEBUF_CHUNK_SIZE is only used by linebuf.cc and only really
	needs ever to be changed as a tuning issue, so we #define it in
	linebuf.cc.  For the moment, we keep it low as this ensures that we
	debug the reallocation code.

	* configure.in:
	sf-chkid.cc can use memchr() if available, so detect it.

	* sf-chkid.cc: Rewrote check_id_keywords() for 8-bit-cleanness.

1998-01-25  James Youngman  <jay@gnu.org>

	* testutils/README, testutils/last-time.c, testutils/Makefile.am:
	Added last-time.c to the distribution.

	* tests/get/defsid.sh, tests/get/subst.sh: *** empty log message ***

	* tests/admin/flags.sh: Added checks for the default delta flag.

	* docs/TODO, docs/missing.txt, docs/FIXED: *** empty log message ***

	* sf-write.cc, sf-prs.cc, sf-prt.cc, sf-get2.cc, sf-admin.cc,
	sf-get.cc, sccsfile.h, sccsfile.cc, filepos.h, get.cc,
	encoding.cc, cssc.h, defaults.h, README, admin.cc, Makefile.am,
	NEWS, ChangeLog: Preliminary support for binary files; creation
	(initialisation) only.

1998-01-24  James Youngman  <jay@gnu.org>

	* docs/BUGS:
	Removed a bug report (by jay@gnu.org, me) that actually wasn't a bug.

	* tests/get/defsid.sh: Wrote tests for the default-SID flag.

	* tests/admin/flags.sh:
	Since we now emit a couple of error messages relating to the "-b"
	flag, we need to IGNORE some of the stderr output in the tests,
	otherwise we procude unwarranted test failures.

	* tests/sccsdiff/rap.sh:
	We can't count on the precise form of the output, but we can count on
	the exit status of the command.   Tests amended for compatibility with
	SCCS.  SCCS now passes :-)

	* tests/get/branch.sh:
	Since we now emit a couple of error messages relating to the "-b"
	flag, we need to IGNORE some of the stderr output in the tests,
	otherwise we procude unwarranted test failures.

	* sccsdiff.sh.in:
	SCCS compatibility fix -- When "get" fails, exit with value 1, not 2.

	* get.cc: Added warnings for when -b flag is ignored because the b
	(branch-enable) flag is not set, and for when -b is udes without -e
	(which does not make sense and is otherwise ignored).

	* _chmod.cc:
	Removed double leading underscore for #define used to prevent multiple
	inclusion.

	* sf-get2.cc:
	Fixed assertion failure for "get -e -r1.1.1 s.foo.c" when there is a
	revision 1.1.1.1.   Probably needs tidying (or at least
	re-generalising).

	* sf-chkid.cc:
	Export the function is_keyword_letter() so that our later support for
	binary as well as text files can be simplified.

	* sccsfile.h, sccsfile.cc: Added sccs_file::branches_allowed().

1998-01-20  James Youngman  <jay@gnu.org>

	* docs/cssc.texi:
	Added documentation on when and how branches are made.

1998-01-19  James Youngman  <jay@gnu.org>

	* tests/get/branch.sh:
	Added tests for the correct handling of the "-b" flag.

1998-01-18  James Youngman  <jay@gnu.org>

	* encoding.cc:
	First show at the uuencode/uudecode methods for the support of binary files.

1998-01-17  James Youngman  <jay@gnu.org>

	* unget.cc, what.cc, rmdel.cc, prs.cc, get.cc, my-getopt.cc,
	delta.cc, ChangeLog, admin.cc: Removed all colons from getopt()
	option descriptors.  Instead we replace them with "!", which tells
	our custom version of getopt() to parse the options in the SCCS
	style (arguments must follow keyletters and may not be in the next
	argv[] element).

	* cssc.h: Only include <config.h> if HAVE_CONFIG_H is defined.

	* configure.in: Updated the version number.

	* testutils/user.c:
	Added this file (which is broadly the equivalent of the standard Unix
	command "id").

	* NEWS: Changes for version 0.05 (changes in Dec 19997 and Jan 1998).

	* ChangeLog:
	Updated for version 0.05 (changes in Dec 19997 and Jan 1998).

	* docs/CREDITS:
	Added paragraph for Richard Polton, and de-emphasised the role of
	MySC.

	* docs/FIXED:
	Moved a bug report (99999 cap on nu,bers of lines in SCCS files) from
	BUGS to FIXED after fixing it.

	* docs/BUGS: Moved a bug report to the FIXED file after fixing it.

	* docs/missing.txt:
	Indicate that sccs-val and sccs-comb have not been implemented.

	* docs/TODO: *** empty log message ***

	* docs/TESTING:
	Indicated that Richard Polton wrote the first contributed test suite.

	* docs/Platforms:
	Added indication that CSSC has been tested under Red Hat version 5.0.

1998-01-16  James Youngman  <jay@gnu.org>

	* docs/get-spec.txt:
	Updated to reflect the fact that the makefile no longer has a "make
	gtest" target.

1998-01-15  James Youngman  <jay@gnu.org>

	* docs/cssc.texi: Documented sact, cdc, rmdel, prt.

	* tests/Makefile.am: Added the test-cdc target.

	* tests/common/test-common:
	The expected stdout/stderr arguments are quoted when they are output
	to temporary files, to prevent any wildcard characters iin them being
	expanded!

	* mystring.h: typo in comment

	* fileiter.h:
	Provide using_stdin(), which indicates if stdin is already in use for
	reading a list of files to operate on.

	* prompt.cc:
	The prompt should not be issued if stdin is not a terminal.

	* sf-cdc.cc, cdc.cc: Using the new test cases, fixed many bugs!

	* tests/cdc/4order.sh, tests/cdc/2comment.sh, tests/cdc/3MRs.sh,
	tests/cdc/1general.sh: Wrote a fairly comlete set of test cases
	for 'cdc'.

1998-01-10  James Youngman  <jay@gnu.org>

	* tests/Makefile.am: Added tests for "sccsdiff".

	* tests/sccsdiff/rap.sh:
	Export $get so that "sccsdiff" can call the correct "get" program.

	* Makefile.am: Renamed list.h to mylist.h.

	* sccsfile.h, sid_list.cc, run.cc, run.h, pipe.cc, rel_list.h,
	l-split.cc, pfile.h, fileiter.h, mylist.h, list.h: Renamed
	"list.h" to "mylist.h".
2019-05-06  James Youngman  <jay@gnu.org>

	Fix more compiler warnings.
	* src/what.cc: Forward-declare usage().
	* src/sccsfile.h: Declare print_flag2() functions.
	* src/get.cc (main): Format the (unsigned in) line count with %u
	instead of %d.
	* src/environment.cc (max_sfile_line_len): Simplify a complex
	boolean expression to silence a compiler warning suggesting
	parentheses.
	* src/writesubst.cc (write_subst): Print the output line number
	with %u since it is an unsigned int.
	* src/sf-write.cc (write_delta): Remove unsed variables "len" and
	"i".
	(write): Likewise, also "s".

	Fix some compiler warnings. Also turn off warning options which
	themselves just generate warnings.
	* src/run.cc (run): Avoid mixing signed/unsigned quantities.
	* src/sf-get2.cc (get): Avoid variable 'd' shadowing a variable of
	the same name in an outer scope.
	* src/sccsfile.h: Declare print_flag().
	* src/cap.cc (cap_min): Simplify this function; we only use it for
	trivially copyable types anyway.
	* configure.ac: Disable some warnings known to the manywarnings
	module (thus enabled with --enable-warnings) but which aren't
	suitable for C++ compilation.  We disable them so that we don't
	get a warning message from GCC about the inappropriate warning
	option.

	Use block I/O for encoded streams.
	* src/encoding.cc (encode_line): return the number of bytes
	output.
	(encode_stream): Use the count returned by encode_line to perform
	block I/O (with fwrite) instead of string I/O (with fprintf).

	Move the implementation details of uuencoding/decoding into a
	separate namespace.
	* src/encoding.cc (encode): Put into an encoding_impl namespace to
	emphasize that it is not intended as a public API for the rest of
	the program to use.  It's not in an unnamed namespace since the
	unit test still needs to use it.
	* src/bodyio.h (encoding_impl): Put declarations of encode and
	decode into this namespace.
	* unit-tests/test_encoding.cc: Use the namespace-qualified names
	for encode and decode.

	Delete mylist.h.
	* src/mylist.h: Delete mylist.h
	* src/Makefile.am (noinst_HEADERS): Delete mylist.h
	* src/sccsfile.cc: Don't include mylist.h.
	* src/l-split.cc: Don't include mylist.h.
	(split_comments): use std::vector<T> instead of mylist<T>.
	* unit-tests/test_bigfile.cc: use std::vector<T> instead of
	mylist<T>. Don't include mylist.h.
	* unit-tests/test_delta.cc: Likewise.
	* unit-tests/test_mylist.cc: Delete.
	* unit-tests/Makefile.am (unit_tests): Remove test_mylist.

	Switch class sccs_file from mylist<T> to vector<T>.
	* src/sccsfile.h: use std::vector<T> instead of mylist<T>.
	* src/sf-val.cc: Likewise.
	* src/cdc.cc (main): Likewise.
	* src/sf-prt.cc: Likewise.
	* src/admin.cc (main): Likewise.
	* src/sf-cdc.cc: Likewise.
	* src/sf-admin.cc: Likewise.
	* src/sf-write.cc: Likewise.
	* src/get.cc (print_id_list): Likewise.
	* src/sf-get.cc (prepare_seqstate_1): Likewise.
	* src/sf-prs.cc (print_seq_list): Likewise.
	* src/sf-rmdel.cc (is_seqlist_member): Likewise.

	Switch test_delta-table.cc from mylist to vector.
	* unit-tests/test_delta-table.cc: Switch data structures from
	mylist<T> to std:vector<T> (for which mylist is an alias anyway).

2019-05-05  James Youngman  <jay@gnu.org>

	Switch class release_list from using mylist<T> to vector<T>.
	* src/rel_list.h: Switch data structures from mylist<T> to
	std:vector<T> (for which mylist is an alias anyway).
	* src/rl-merge.cc (remove): Likewise.

	Switch class sccs_file_iterator from using mylist<T> to
	vector<T>.
	* src/fileiter.h: Switch data structures from mylist<T> to
	std:vector<T> (for which mylist is an alias anyway).

	Switch class delta from using mylist<T> to vector<T>.
	* src/delta.h: Switch data structures from mylist<T> to
	std:vector<T> (for which mylist is an alias anyway).
	* src/delta.cc (delta_main): Likewise.
	* src/sf-delta.cc (add_delta): Likewise.

2019-05-05  Martin Wilck  <mwilck@suse.com>  (tiny change)

	sccs: comply with POSIX POS36-C rule.
	POS36-C compliance requires that setgid() is called before
	setuid(), and both called after relinquishing extra groups with
	setgroups(). See
	https://wiki.sei.cmu.edu/confluence/display/c/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges
	* configure.ac: check for setgroups()
	* src/sccs.c (drop_privs): correct call order: setgroups, setgid,
	setuid.

2019-05-05  James Youngman  <jay@gnu.org>

	Suggest setting CSSC_DISABLE_VALGRIND=1 if system binaries cause
	tests to fail.
	* README (--disable-valgrind): point out that occasionally, a
	system binary will cause Valgrind checking to make tests
	fail. Explain how to work around this problem.

	Include config.h before other files.
	* build-aux/find-out-of-order-includes.sh: Script for identifying
	source files which include other headers before "config.h", which
	gnulib doesn't like.
	* src/version.cc: Include "config.h" before <stdio.h> to avoid
	complaints from gnulib.

2016-03-01  James Youngman  <jay@gnu.org>

	Don't distrubite unit-tests/googletest/Makefile.in.
	* unit-tests/Makefile.am (EXTRA_DIST): Don't include
	googletest/Makefile.in, since we don't create that file, as
	googletest is not in SUBDIRS.

2016-02-28  James Youngman  <jay@gnu.org>

	Add tests covering p-file validity checks in sact.
	* src/pfile.cc (sccs_pfile): Validate the delta SID (instead of
	only the gotten SID).  When rejecting an invalid date, say
	"date/time", since it may in fact be the time field which is
	incorrect.
	* tests/common/test-common: New options to docommand,
	--stderr_regex and stdout_regex, allowing regex (egrep) matching
	of tool output.  Each has a --no* counterpart which turns the
	option off again (this is useful for deteating the defaults
	provided by functions which wrap docommand).
	* tests/sact/pfile_corruption.sh: New test, covering the p-file
	validity checks in sact.

2016-02-24  James Youngman  <jay@gnu.org>

	Don't use unique_ptr on the result of strdup, and other cleanup.
	* src/sccsdate.cc (y2k_window): move all year windowing
	calculations into this new function.
	(is_leapyear): fix typo in comment.
	(get_two_digits): Add specialization which takes a constr
	string&.
	(sccs_date::sccs_date): Use y2k_window.  Also, instead of using
	unique_ptr on a pointer returned by strdup, just use a std::string
	instance.
	* src/sccsdate.h (class sccs_date): Remove the daysecond field.

	Fix a number of problems identified by "make syntax-check".
	* src/get.cc: Remove trailing blanks.
	* src/Makefile.am: Likewise.
	* src/l-split.cc: Likewise.
	* src/get.cc: Likewise.
	* src/prs.cc: Likewise.
	* src/run.cc: Likewise.
	* src/sccsfile.cc: Likewise.
	* src/sccsfile.h: Likewise.
	* Makefile.am (distcheck-hook): Remove trailing blank.
	* src/sccs.c (gstrncat): Avoid spurious warning about reference to
	strncpy() in a comment.
	* tests/val/historical.sh: Remove empty lines at EOF.
	* unit-tests/test_linebuf.cc: Likewise.
	* build-aux/check-googletest-files.sh: Remove empty lines at EOF.
	(deleteprefix): Remove trailing blanks.
	* NEWS: Change "the the" to "the" in item for CSSC-1.3.2.  Remove
	trailing blanks.
	* src/sccsdate.cc (sccs_date::sccs_date): Avoid the use of strncpy.
	* docs/cssc.texi (Admin Options): Don't say "see also @xref".
	(Executable File Support): Remove trailing blanks.
	* src/sf-prs.cc (prs): Don't use the space-tab combination.
	* src/file.cc (get_mode_bits): Remove trailing blanks.
	(is_writable): Likewise.

	Make mylist a simple synonym for std::vector.
	* src/mylist.h: Make mylist a simple synonym for std::vector.

	Don't require mylist<T>::operator[] to assert on index errors.
	* unit-tests/test_mylist.cc: Remove tests which verify that
	mylist<T>::operator[] assert-fails when an index is out of range
	(since std::vector does not do this).

	Stop depending on mylist not actually being a synonym for std::vector.
	* src/sf-prs.cc (print_string_list): Remove the two versions of
	this function for std::vector<string> and mylist<string>.
	Instead, implement a single template function which takes a range
	of iterators.  This allows us not to care wither mylist is simply
	compatible with std::vector, or actually is std::vector.
	(print_delta): Update callers of print_string_list.

	Include <algorithm> where it is needed, and not where it is not.
	* src/sf-rmdel.cc: include the <algorithm> header since we use
	std::find.
	* src/mylist.h: Don't include <algorithm>, the transitive
	inclusion of which sf-rmsel.cc was previously takign advantage
	of.

	Replace constructor from const set& with a range of iterators.
	* src/mylist.h (mylist::mylist): Add constructor from a range of
	input iterators, allowing initialization from any container.
	Remove the special-purpose constructor from const set&.  This
	change provides closer compatibility with std::vector<T>,
	* src/delta.h (delta::delat): Initialize included_ and excluded
	using the iterator range instead of plain const set&.

2016-02-23  James Youngman  <jay@gnu.org>

	Remove mylist<T>::operator+=(), implementing insert() instead.
	* src/mylist.h (mylist::insert): add insert() method, forwarding
	to std::vector<T>::insert(), as a replacement for
	mylist::operator+=() (and that method is removed).
	(mylist::cbegin): add, forwarding to items_.cbegin().
	(mylist::cend): add, forwarding to items_.cend().
	* src/delta.h (delta::prepend_comments): Implement.
	* src/sf-cdc.cc (sccs_file::cdc): Call mylist::insert() instead of
	the removed mylist<T>::operator+=().  Also use
	delta::prepend_comments() to prepend comments instead of copying
	the old comments, modifying the list and callign set_comments().
	* unit-tests/test_mylist.cc (MylistTest::Catenate::TestBody): use
	the new insert method to perform the concatenation, instead of the
	removed method operator+=.

2016-02-21  James Youngman  <jay@gnu.org>

	Avoid unnecessary for loop in mylist::operator+=(const mylist&).
	* src/mylist.h (mylist): Implement operator+= with a range insert
	on the underlying vector.

	Remove mylist<T>::operator-=(const mylist<T>&).
	* src/mylist.h (mylist): remove mylist<T>::operator-=(const
	mylist<T>&).

	* unit-tests/test_mylist.cc: Remove tests of
	mylist<T>::operator-=(const mylist<T>&).
	* src/sccsfile.h (sccs_file::admin): change the type of
	erase_users from mylist<string> to
	std::unordered_set<std::string>.  This allows the implementation
	to be more efficient without affecting the ordering of the
	resulting user list.
	* src/admin.cc (main): Update the type of erase_users
	accordingly.
	* src/sf-admin.cc (admin): take advantage of the efficiency of
	std::unordered_set<T>::find() when computing the updated
	authorized user list.  Hence we no longer need to call
	mylist<T>::operator-=(const mylist<T>&).

	Delete mylist<T>::add(), preferring push_back() instead.
	* src/mylist.h (mylist): Delete mylist<T>::add() since we prefer
	push_back().
	* unit-tests/test_mylist.cc: Don't use or test .add(), but use or
	test .push_back() there was previously .add().
	* unit-tests/test_delta.cc: Don't use mylist<T>::add(), use
	mylist<T>::push_back() instead.
	* src/rl-merge.cc (merge): Use mylist<T>::push_back() instead of
	mylist<T>::add().
	* src/delta.h (delta::add_include): Likewise.
	(delta::add_exclude): Likewise.
	(delta::add_ignore): Likewise.
	(delta::add_comment): Likewise.
	* src/l-split.cc (split_comments): Likewise.
	* src/rel_list.cc (release_list): Likewise.
	* src/fileiter.cc (sccs_file_iterator): Likewise.
	* src/sccsfile.cc (sccs_file::sccs_file): Likewise.
	* src/sf-get2.cc (sccs_file::get): Likewise.
	* src/sf-delta.cc (sccs_file::add_delta): Likewise.
	* src/sf-admin.cc (sccs_file::admin): Likewise.
	(sccs_file::create): Likewise.
	* src/sf-cdc.cc (process_mrs): Likewise.
	(sccs_file::cdc): Likewise.
	* src/admin.cc (main): Likewise.

	Remove mylist<T>::select(size_type).
	* src/mylist.h (mylist): remove mylist<T>::select().
	* unit-tests/test_mylist.cc: remove tests for mylist<T>::select().

	Remove mylist<T>::operator=(void*).
	* src/mylist.h (mylist): remove mylist<T>::operator=(void*).  The
	effect of this method was to clear the list, so add a clear()
	method instead, for closer matching to std::vector.n
	* unit-tests/test_mylist.cc: remove tests for
	mylist<T>::operator=(void*).

	* src/sf-admin.cc (sccs_file::admin): use clear() to clear an
	instance of mylist<T>, not assignment to NULL.

	Remove mylist<T>::length().
	* src/mylist.h (mylist::length): delete this method (size() should
	be used instead).

	Avoid using mylist<T>::length().
	* src/sf-get2.cc (get): Use a range-based for loop instead of
	indexing up to mylist<T>::length().
	* src/sf-cdc.cc (cdc): Use mylist<T>::empty() rather than
	comparing the result of length() against 0.
	* src/sf-get3.cc (authorised): Use a range-based for loop instead
	of indexing up to mylist<T>::length().
	* src/sf-prs.cc (print_seq_list): Prefer mylist::size() to
	mylist::length().
	(print_delta): Use mylist<T>::empty() rather than comparing the
	result of length() against 0.
	* src/fileiter.cc (next): Prefer mylist::size() to
	mylist::length().
	* src/sf-admin.cc (sccs_file): Likewise.
	* src/sf-val.cc (validate_seq_lists): Likewise, factoring repeated
	code out into a new function, validate_seq_numbers.
	* src/sf-rmdel.cc (is_seqlist_member): use std::find instead of
	iterating over list members ourselves.
	* src/sf-prt.cc (print_seq_list): use a range-based for loop
	rather than iterating over the indexes in a mylist<seq_no>.
	(sccs_file): Instead of checking mylist<T>::length() against 0,
	use the empty() method.

2016-02-20  James Youngman  <jay@gnu.org>

	Prefer mylist::size() to mylist::length().
	* unit-tests/test_delta.cc: Don't use mylist::length().
	* unit-tests/test_bigfile.cc (emit_comments_or_mrs): Don't use
	mylist::length().

	Prefer mylist::size() to mylist::length().
	* unit-tests/test_mylist.cc: Use the size() method instead of the
	length() method, for better compatibility with (and so simpler
	transition to) std::vector.

	Avoid bash-specific [[...]].
	* build-aux/check-googletest-files.sh (findproblems): Avoid
	[[...]] since that is a Bash feature, and this is a /bin/sh
	script.

	Add a menu for "admin", correcting a Texinfo build failure.
	* docs/cssc.texi: Updated copyright years.
	(admin): Added a menu for the sections relating to "admin".

2016-02-09  James Youngman  <jay@gnu.org>

	* src/sf-prs.cc (print_seq_list): Use a range-based for loop for
	iterating over sequence numbers.
	* src/sf-val.cc (validate_seq_lists): Factor out the repeated
	logic into a local function, validate_seq_numbers.
	* src/sf-get2.cc (get): Use a range-based for loop for iterating
	over the comments.

2016-02-08  James Youngman  <jay@gnu.org>

	Don't gratuitously count elements of mylist<T>.
	* src/sf-admin.cc (create): Prefer !mylist<T>::empty() over
	mylist<T>::length() != 0.

	Use range-based for in get.cc.
	* src/get.cc (print_id_list): Use a range-based for loop to print
	a sid list.

	Use range-based for loops in the release_list implementation.
	* src/rel_list.cc (member): Search with std::find, rather
	than coding it manually.
	(print): Use a range-based for loop.

	Use mylist<T>::size() in preference to .length().
	* src/sf-get.cc (prepare_seqstate_1): Use the size() method of
	mylist, instead of length(), for better std::vector
	compatibility.

	Use range-based for loops in print_seqs and sccs_file::write.
	* src/sf-write.cc (print_seqs): Iterate over sequence numbers with
	a range-based for loop.
	(sccs_file::write): Iterate over users with a range-based for loop.
	(sccs_file::write): Iterate over comments with a range-based for
	loop.

	Support and used range-based for for release_list instances.
	* src/rl-merge.cc (merge): Use a range-based for loop to iterate
	over release_list instances.
	(remove): Likewise.
	* src/rel_list.h (release_list): Implement begin() and end() and
	empty().

	Use a range-based for loop for iterating over deltas.
	* src/sf-get.cc (prepare_seqstate_1): Use a range-based for loop
	for iterating over included/excluded/ignored deltas.

	sccs_delta: Use empty() to find out if a mylist is empty.
	* src/delta.h: use mylist<T>.empty() instead of .length() == 0.

	Implement mylist<T>::push_back.
	* src/mylist.h (mylist): Implement a push_back method and add TODO
	comments for methods which aren't shared by std::vector.

	State that a C++11 compiler is needed.
	* README: Mention the need for a C++11 capable compiler.
	* NEWS: Likewise.

	Store MRs as std::vector<std::string> (not mylist<std::string>).
	* unit-tests/test_bigfile.cc: (emit_comments_or_mrs): Convert to a
	template so that we can use it to print a std::vector<std::string>
	or a mylist<std::string>.
	(emit_delta): Pass MRs as a vector not a mylist.
	(make_delta): Likewise.
	* unit-tests/test_delta-table.cc: Update to take account of the
	change in representation of MR lists from mylist<std::string> to
	std::vector<std::string>.
	* unit-tests/test_delta.cc: Likewise.
	* src/sf-write.cc (write_delta): Change the way we loop over the
	MRs and the comments to use a range-based for loop (hence
	accomodating the change in type of the MR list.
	* src/sf-prt.cc (print_string_list): Convert this function to a
	template so that it can be used to print a
	std::vector<std::string> or a mylist<std::string>.
	* src/sf-prs.cc (print_string_list): Add an override of
	print_string_list for printing an instance of const
	std::vector<std::string>&.
	* src/sf-delta.cc (sccs_file::add_delta): Update the type of the
	mrs parameter to std::vector<std::string>.
	* src/sf-cdc.cc (process_mrs): Update the parameter list to use
	std::vector<std::string> instead of mylist<std::string>.  Change
	the type of the to_delete parameter to const
	std::unordered_set<std::string>& for greater efficiency.
	* src/sf-admin.cc (sccs_file::create): Update type of mrs
	parameter.
	* src/sccsfile.h (sccs_file::check_mrs): Update the type of the
	mrs parameter to std::vector<std::string>&.
	(sccs_file::admin): update type of the mrs parameter.
	(sccs_file::create): Likewise.
	(::split_mrs): Likewise.
	* src/sf-chkmr.h (check_mrs): Update the type of the mrs
	parameter.
	* src/run.cc (run): Update to take a vector<const char*> instead
	of a mylist<const char*>.
	(run_mr_checker): Change the type of the mrs parameter from
	mylist<std::string> to std::vector<std::string>.
	* src/run.h: Update declarations accordingly.
	* src/mylist.h (mylist): Add method size() and empty() for
	consistency with std::vector<T> so that we can define template
	functions which will act on a mylist or a std::vector.
	* src/l-split.cc (split_mrs): represent MRs as
	std::vector<std::string>.
	* src/delta.h (class delta): Change type of mrs_ member from
	mylist<std::string> to std::vector<std::string>.
	(delta::delta): change constructor parameters similarly.
	(delta::mrs()): now returns std::vector<std::string>.
	* src/admin.cc (main): Change type of mr_list from
	mylist<std::string> to std::vector<std::string>.
	* src/cdc.cc (main): Likewise.
	* src/delta.cc (delta_main): Likewise.
	(main): Simplify.

2016-02-07  James Youngman  <jay@gnu.org>

	Use std::string rather than mystring.
	We also use range-based for loops to iterate over instances of
	mylist<std::string>.
	* src/mystring.h: Delete this file.
	* src/Makefile.am (noinst_HEADERS): Remove mystring.h.
	* src/admin.cc (main): Update to use string rather than mystring.
	* src/cdc.cc: Likewise.
	* src/canonify.cc (get_current_directory): Update to return string
	* src/cssc.h: Likewise.
	* src/delta.cc: Likewise.
	* src/delta.h: Likewise.
	* src/file.cc: Likewise.
	* src/file.h: Likewise.
	* src/file.h: Update function parameters and return types to be string rather than mystring.
	* src/filediff.cc: Likewise.
	* src/filediff.h: Likewise.
	* src/fileiter.cc: Likewise.
	* src/fileiter.h: Likewise.
	* src/filelock.h: Likewise.
	* src/fnsplit.cc: Likewise.
	* src/get.cc: Likewise.
	* src/l-split.cc: Likewise.
	* src/pfile.h: Likewise.
	* src/pf-del.cc: Likewise.
	* src/prompt.cc: Likewise.
	* src/prs.cc: Likewise.
	* src/run.cc: Likewise.
	* src/run.h: Likewise.
	* src/sccsdate.h (sccs_date::as_string()): Likewise.
	* src/sccsfile.cc: Likewise.
	* src/sccsfile.h: Likewise.
	* src/sccsname.cc: Likewise.
	* src/sccsname.h (sccs_name): Likewise (and attributes).
	* src/sf-admin.h: Likewise.
	* src/sf-cdc.cc: Likewise.
	* src/sf-chkmr.h (check_mrs): Likewise.
	* src/sf-delta.cc: Likewise.
	* src/sf-get.cc (get): Likewise.
	* src/sf-get2.cc: Likewise.
	* src/sf-get3.cc (authorised): Use string instead of mystring.
	* src/sf-prs.cc: Likewise.
	* src/sf-prt.cc: Likewise.
	* src/sf-val.cc: Likewise.
	* src/sf-write.cc: Likewise.
	* src/sid.h (class sid): the as_string method now returns a string instead of a mystring.
	* src/sid.cc: Use string instead of mystring.
	* src/unget.cc: Likewise.
	* src/writesubst.cc: Likewise.
	* unit-tests/test_delta-table.cc: Likewise.
	* unit-tests/test_delta.cc: Likewise.
	* unit-tests/test_bigfile.cc: Use std::string instead of
	mystring.
	* src/mylist.h (mylist): Provide begin() and end() methods.

	Delete myset.h, and switch to using std::set instead.  Use C++11.
	* src/sccsfile.h (substitued_flag_letters): change from
	myset<char> to std::set<char>.
	* src/sccsfile.cc (set_expanded_keyword_flag): update
	implementation now that substitued_flag_letters is std::set<char>.
	(print_subsituted_flags_list): Likewise.
	* src/sf-write.cc (write): Likewise.
	* src/writesubst.cc (expand_keyletter): Likewise.
	* src/sf-admin.cc (admin): Likewise.
	* src/sf-prt.cc (prt): Likewise.
	* src/sf-val.cc (validate): Likewise, using a range-based for
	loop.
	* bootstrap.conf (gnulib_modules): Add std-gnu11 (to compile
	C++11).
	* src/mylist.h (mylist): Add constructor from const std::set<TYPE>&.
	* unit-tests/Makefile.am (unit_tests): Remove test_myset.
	(test_myset_SOURCES): Remove.
	* src/Makefile.am (noinst_HEADERS): Remove myset.h.
	* myset.h: delete this file.
	* unit-tests/test_myselt.cc: delete this file.
	* src/delta.h (delta): included and excluded deltas are now
	std::set<seq_no> rather than myset<seq_no>.
	* unit-tests/test_delta.cc (DeltaTest::Constructor): Update the
	call to the constructor of delta, to pass in std::set<seqno> for
	the included and excluded deltas.
	* src/sf-delta.cc (add_delta): Switch from using myset<seq_no> to
	using std::set<seq_no> for the included and excluded deltas.

	Remove obsolete code from mylist.h.
	* src/mylist.h (mylist): Remove the obsolete implementation of
	mylist (which was disabled via the preprocessor anyway).

	Mention that gnulib has been updated.
	* NEWS: mention this.

2014-09-08  James Youngman  <jay@gnu.org>

	Always include config.h first; eliminate some compiler warnings.
	* auxfiles/firstinclude.sed: New.  Script which determines what
	the first file #included in a C/C++ source file is.
	* auxfiles/Makefile.am (EXTRA_DIST): Distribute firstinclude.sed.
	* src/Makefile.am (check-include-order): Check that each source
	file includes <config.h> before any other include file.
	* src/admin.cc: Inlude <config.h> first.  Include system headers
	before our own headers.
	* src/bodyio.cc: Likewise.
	* src/cap.cc: Likewise.
	* src/cdc.cc: Likewise.
	* src/delta-iterator.cc: Likewise.
	* src/delta-table.cc: Likewise.
	* src/delta.cc: Likewise.
	* src/dtbl-prepend.cc: Likewise.
	* src/encoding.cc: Likewise.
	* src/environment.cc: Likewise.
	* src/fatalsig.cc: Likewise.
	* src/fdclosed.cc: Likewise.
	* src/fnsplit.cc: Likewise.
	* src/l-split.cc: Likewise.
	* src/linebuf.cc: Likewise.
	* src/get.cc: Likewise.
	* src/pf-add.cc: Likewise.
	* src/pfile.cc: Likewise.
	* src/prompt.cc: Likewise.
	* src/prs.cc: Likewise.
	* src/prt.cc: Likewise.
	* src/quit.cc: Likewise.
	* src/rel_list.cc: Likewise.
	* src/rmdel.cc: Likewise.
	* src/run.cc: Likewise.
	* src/sact.cc: Likewise.
	* src/sccs-delta.cc: Likewise.
	* src/rl-merge.cc: Likewise.
	* src/sccsdate.cc: Likewise.
	* src/sccsfile.cc: Likewise.
	* src/sccsname.cc: Likewise.
	* src/seqstate.cc: Likewise.
	* src/sf-add.cc: Likewise.
	* src/sf-admin.cc: Likewise.
	* src/sf-cdc.cc: Likewise.
	* src/sf-chkid.cc: Likewise.
	* src/sf-delta.cc: Likewise.
	* src/sf-get.cc: Likewise.
	* src/sf-get2.cc: Likewise.
	* src/sf-get3.cc: Likewise.
	* src/sf-kw.cc: Likewise.
	* src/sf-prs.cc: Likewise.
	* src/sf-prt.cc: Likewise.
	* src/sf-rmdel.cc: Likewise.
	* src/sf-write.cc: Likewise.
	* src/sid.cc: Likewise.
	* src/sf-val.cc: Likewise.
	* src/unget.cc: Likewise.
	* src/val.cc: Likewise.
	* src/writesubst.cc: Likewise.
	* src/file.cc: Likewise.  Also move the definition of unprivileged
	out of the #if in order to avoid a compiler warning.
	* src/file.h: #include "mystring.h" since we use that class in
	this header.
	* src/filelock.h: Likewise.

2014-07-28  James Youngman  <jay@gnu.org>

	Support executable history files (=> g-files executable on get).
	* src/sf-admin.cc (create): Open any file specified with the -i
	command-line option before calling start_update, and using the
	open file pointer, call set_sfile_executable if the history file
	should be created with execute bits set.
	* src/sf-write.cc (start_update): Use sfile_should_be_executable
	rather than flags.executable in order to decide whether the
	updated history file should be executable.
	* NEWS: Mention that the 'x' flag no longer determines the mode of
	the updated history file.
	* src/sccsfile.h (sfile_executable): new boolean member variable.
	If true, the history file, when we create it, should be
	executable.
	(set_sfile_executable): setter for sfile_executable.
	(sfile_should_be_executable): getter for sfile_executable.
	(gfile_should_be_executable): new method; when true, the gotten
	file should be executable.
	* src/sccsfile.cc (sccs_file): Point out that setting the 'x' flag
	is not the most portable way to make gotten files executable.
	(set_sfile_executable): Implement (sets the sfile_executable
	member variable).
	(gfile_should_be_executable): Implement (when this method returns
	true, the gotten file should be executable).
	(sfile_should_be_executable): Implement (when this method returns
	true, the (updated) history file should be executable).
	(sccs_file): If the history file is executable, remember this so
	that the gotten file is created with the relevant execute bits
	set.
	* src/get.cc (main): The gotten file should be executable if
	sccs_file::gfile_should_be_executable() returns true (that is, if
	either the 'x' flag is set or the history file is executable).
	* src/sf-delta.cc (add_delta): When greating gotten files (for
	diffing) use gfile_should_be_executable rather than
	flags.executable.
	* docs/cssc.texi (Executable File Support): Document the fact that
	the execute bits of the history file's mode are now copied to the
	gotten file's mode (subject to umask) and in the reverse direction
	in the case of admin -i.
	(admin): Document the same behaviour.
	(Flags): Mention the mode of the history file as an alternative to
	setting the 'x' flag.
	(SCCS Version Differences): Mention this behaviour (which follows
	Solaris) for admin and get.
	(Data Keywords): Add missing comma after @xref.
	* tests/admin/executable.sh: New test file; verifies that the
	execute bits of the file offered via admin -i are copied to the
	history file.  Verify that setting the 'x' flag cuases the g-file
	to be created executable, and that not setting it does not (when
	the history file is not executable).  Verify that the history file
	can still be set as executable when the initial body is presented
	on stdin.
	* tests/common/test-common (docommand): pass through the exit
	status of the child command.  Log the return value, stdout and
	stderr in command.log.
	* src/file.cc (get_mode_bits): New function; Factors stat call out
	of is_writable.
	(get_open_file_xbits): New function; populate an output flag as
	true IFF the FILE* argument is open on a file which has an execute
	bit set.
	* src/file.h: Declare get_open_file_xbits.
	* tests/get/executable.sh: New test file; verify that the
	executable bit is copied from the history file to the gotten
	file.

	Process test files in a consistent order for a case where this matters.
	* tests/get/middle-fail.sh (e3): List the history files explicitly
	so that we know that SCCS/s.b is definitely the second file of
	three processed.

	Show the label of the test command in the command.log file.
	* tests/common/test-common (docommand): Show the label for the
	current command in command.log.
	(do_output): Likewise

	Update version number.
	* configure.ac: Move on from version 1.4.0.
	* NEWS: Add a new section for changes in CSSC-1.4.1-rc1.

2014-07-11  James Youngman  <jay@gnu.org>

	Release CSSC-1.4.0.
	* configure.ac (AC_INIT): Update the version number.
	* NEWS: Describe the new release.

2014-06-30  James Youngman  <jay@gnu.org>

	Release CSSC-1.3.2.
	* configure.ac: Change version number to 1.3.2.
	* NEWS: Update the version number of the first section.

	Update googletest unit test framework from r424 to r690.
	* gl/lib/.gitignore: Add the files generated by the pthread module
	(since we now depend on that).
	* bootstrap.conf (bootstrap_epilogue): Upgrade from r424 to r690
	of the googletest test framework.
	(buildreq): Update tool versions to the ones I'm actually using
	now, since these are really the only tools I test with routinely.
	(gnulib_modules): Depend on the pthread module.  Download
	googletest before we run gnulib-tool (instead of in the epilogue),
	so that the googletest/m4 directory is available to autoconf.
	* configure.ac: Include the googletest m4 library,
	unit-tests/googletest/m4.  Turn on the Automake option 'tar-ustar'
	which switches the dist file format from v7 Unix to the selects
	the ustar format defined by POSIX 1003.1-1988.  We need to do this
	since the distribution now contains path names longer than 99
	characters and the v7 format (or its consumers) cannot reliably
	deal with this.  Also make explicit some of the options which in
	any case are implied by the "gnits" option, since we would want to
	keep them even if turning off gnits.  Add configure tests required
	by the googletest framework.

	* NEWS: Point out the change of tar file format used for the
	distribution file.  Also mention the recent updates to googletest
	and gnulib.
	* unit-tests/Makefile.am: Update the build rules used to build the
	googletest unit test framework.  Don't build the samples.  Build
	libgtest by compiling individual source files, instead of only
	libgtest-all.cc (this fixes a problem in which "make distcheck"
	would otherwise fail due to dependency rule files being left
	around.  Also, don't compile the sample programs.  Remove the
	rules for fusing the sources.  We don't use them, and the rules
	themselves are still available in googletest/Makefile.am.
	* Makefile.am (ACLOCAL_AMFLAGS): Include the googletest m4
	library.
	(distcheck-hook): Call build-aux/check-googletest-files.sh
	(this is described below).
	* build-aux/check-googletest-files.sh: New script; verifies that
	all the files for the "googletest" C++ Unit test framework are
	included in the distribution.  This script is called from
	distcheck-hook.
	* .gitignore: Don't ignore build-aux.

2014-06-22  James Youngman  <jay@gnu.org>

	Update gnulib.
	* bootstrap: Update from current gnulib.
	* bootstrap.conf: Remove second (and wrong) --tests-base
	argument.  Don't munge include paths in gl/tests/Makefile.am
	(since now, doing that breaks the build and whatever made it
	necessary before no longer does).
	* src/canonify.cc: Include <config.h> before (gnulib's replacement
	of) <unistd.h>.

	* src/file.h: Include <sys/types.h> for gid_t.

2013-04-20  James Youngman  <jay@gnu.org>

	Typo fix.
	* COPYING.bsd: Fix typo 'modifiactions'.

2011-11-19  James Youngman  <jay@gnu.org>

	Fix Savannah bug #33633 (coredump in prs -d:GB:)
	* src/sf-prs.cc (sccs_file::get): pass in the correct delta
	information for keyword expansion instead of a blank (that is,
	invalid) delta.  This fixes Savannah bug #33633.
	* tests/prs/sv33633.sh: New file, test for this bug.
	* tests/prs/s.sv33633.txt: Test input for the new test.
	* NEWS: Mention this bug fix.

2011-05-22  James Youngman  <jay@gnu.org>

	Add unit test for cssc_linebuf.
	* unit-tests/Makefile.am (unit_tests): Add test_linebuf.
	(test_linebuf_SOURCES): Build test_linebuf.
	* unit-tests/test_linebuf.cc: New unit test file.

2011-05-21  James Youngman  <jay@gnu.org>

	Print clearer test labels.
	* tests/common/test-common (docommand): Print the test directory
	and the test script as part of the label of each test, for
	additional clarity and because many of them are actually not
	unique.
	* tests/get/sf111140.sh (label_prefix): Print qualified labels (as
	for docommand).

	Source the command-names script only once per test script.
	* tests/common/real-thing: Instead of sourcing the command-names
	script unconditionally, just complain if it was not already
	sourced.
	* tests/common/command-names: Error out if the command-names
	script is sourced twice.
	* tests/common/config-data: Don't source the command-names script
	more than once.
	* tests/common/need-prt: Likewise.

	* tests/Makefile.am (test-*): Indicate the full path of each test
	script.

	Set TZ=GMT in the y2k tests.
	* tests/year-2000/ext.sh: Set $TZ to GMT in order to make it
	possible for implementations which convert SCCS file dates to
	time_t values (but which otherwise have no bugs) to pass the
	tests.
	* tests/year-2000/prs-y2k.sh: Likewise.

	Remove spurious space in definition of admin.
	* tests/common/command-names (admin): remove spurious space.

	Move on from release 1.3.1.
	* configure.ac: Update version number to 1.3.2-git, to indicate
	that compiled versions of this code are no longer identical to the
	1.3.1 release.
	* NEWS: Likewise.

2011-05-10  James Youngman  <jay@gnu.org>

	Release version 1.3.1.
	* NEWS: Update version number to 1.3.1.
	* configure.ac: Likewise.

	Check we distributed all the tests.  Remove redundant Makefile.am files.
	* auxfiles/check-testfiles.sh: New script (copied from GNU
	findutils e66802375963941b3b54a0e038d18eccde449e14 with some
	adaptations for CSSC) for checking that we installed all the test
	scripts in "make dist".
	* tests/Makefile.am (dist-hook): Invoke the
	auxfiles/check-testfiles.sh script.
	* tests/common/Makefile.am: remove unreferenced file;
	tests/Makefile.am does not recurse.
	* tests/delta/Makefile.am, tests/prs/Makefile.am: Likewise.
	* tests/prt/Makefile.am, tests/sact/Makefile.am: Likewise.
	* tests/admin/Makefile.am, tests/unget/Makefile.am: Likewise.
	* tests/val/Makefile.am, tests/what/Makefile.am: Likewise.

2011-05-03  James Youngman  <jay@gnu.org>

	Modify "prs -d :DI:" to print ignored deltas.
	* tests/prs/delta_ixg.sh: New test script for "prs -d :DI:".
	* tests/prs/s.delta_ixg: New test input file for delta_ixg.sh.
	* src/sf-prs.cc (print_delta): For :DI:, also print ignored
	deltas.  Follow the conventions of OpenSolaris 2009.06 on the
	question of how many slashes to produce.
	* docs/cssc.texi (Data Keywords): Describe in more detail just how
	the keyword :DI: is expanded.
	(SCCS Version Differences): Explain how the expansion of :DI:
	varies across implementations.
	* NEWS: Mention this change.

2011-04-30  James Youngman  <jay@gnu.org>

	Accept entirely empty comment lines (lacking the initial space).
	* src/sccsfile.cc (read_delta): Accept comment lines containing
	nothing at all (not even a space after the 'c').  Some historis
	versions of SCCS seem to have produced these, and later versions
	tolerate it.

	Fix Savannah bug bug #33153: "prs" includes "AUTO NULL DELTA"s.
	* src/prs.cc (main): Change type of all_deltas from int to bool.
	(main): Move detection of errors writing to stdout to here,
	instead of sccs_file::prs().  Likewise diagnosis of the fact that
	no deltas were matched.
	* src/sf-prs.cc (prs): Add an output parameter, "matched", which
	is set if any delta was matched (and printed).
	(prs): Rewrite this method to evaluate the earlier/later cutoff in
	terms of SIDs where this is necessary.  That is, avoid the
	assumption that different SIDs have different timestamps.
	* src/sccsfile.h (sccs_file::prs): Modify the declaration
	of sccs_file::prs() to add the output parameter, "matched".
	* tests/prs/sv33153.sh: New test.
	* tests/prs/s.sv33153: New test input file.
	* NEWS: Mention this bugfix.

2011-04-29  James Youngman  <jay@gnu.org>

	* testutils/mogrify.awk: Preserve comment lines which have no
	space (that is, \001Ac\n).

2011-04-26  James Youngman  <jay@gnu.org>

	Fix some minor issues identified by 'make syntax-check'.
	* testutils/uu_decode.c: avoid including unnecessary header
	<stddef.h>.
	* src/sf-delta.cc (add_delta): Remove doubled word in a comment.
	* docs/cssc.texi (Other Variables): Remove doubled word.
	(Year 2000 Summary): Likewise.
	* cfg.mk: Modify spelling of a comment in order not to have a
	false positive from the sc_makefile_at_at_check syntax check.
	* tests/year-2000/ext.sh: Remove blank line at the end of the
	file.
	* tests/year-2000/prs-y2k.sh: Likewise.
	* .x-sc_unmarked_diagnostics: Likewise.
	* unit-tests/testwrapper.sh.in: Add final newline.
	* README-hacking: Remove space-tab combinations.

	Update hacking instructions to explain the git submodule.
	* README-hacking: Update instructions detailing how to collect
	gnulib (since we now use it as a submodule).

	Update gnulib.
	* gnulib: update to current HEAD.

	Various minor fixes suggested by 'make syntax-check'.
	* docs/.ispell_english: Remove blank line from end of document.
	* src/Makefile.am: Remove blank space from end of line.
	* src/file.cc (atomic_nfs_create): Likewise.
	* src/sf-prs.cc (prs): Likewise.
	* testutils/lndir.c: Likewise.

	Change output order in "sccs unedit" to match OpenSolaris.
	* tests/bsd-sccs/driver-basic.sh (h1): Modify the ordering of the
	expected ouput to match OpenSolaris 2009.06.
	* src/sccs.c (command): For the UNEDIT case, flush stdout before
	invoking 'get' in order to pass the changed test.
	* NEWS: Mention this change.

2011-04-25  James Youngman  <jay@gnu.org>

	Allow non-CSSC implementations to XFAIL for tricky dates.
	* tests/year-2000/prs-y2k.sh: Divide tests into "easy" (which any
	y2k-compliant version of SCCS must pass) and "harder" (which
	require correct implementation of the windowing scheme and correct
	conversion of dates at the limits of a 32-bit time_t).  Require
	CSSC to pass all tests, but allow other implementations to XFAIL
	on the hader tests.
	* tests/year-2000/ext.sh: Correct the mechanism by which we figure
	out if we are testing CSSC itself.
	* tests/common/test-common (fail): return false on XFAIL.

	Move source and documentation out of bsd/ into src/ and docs/.
	* COPYING.bsd: Move from bsd/COPYING.bsd.
	* bsd/sccs.1: move to docs/sccs.1
	* bsd/sccs.c: move to src/sccs.c
	* tests/common/command-names: Locate the sccs binary in its new
	location.
	* src/Makefile.am (generic_CPPFLAGS): Put preprocessor flags here
	so that AM_CPPFLAGS and AM_CFLAGS can both refer to it, now that
	we have both C and C++ sources in this directory.
	(LDADD): Link against gnulib.
	(AM_CFLAGS): #define PREFIX for the benefit of sccs.c.
	(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Exempt the binaries from the
	gnits install check which requires them to support --version and
	--help.
	* AUTHORS: Mention the new location of the COPYING.bsd file.
	* THANKS: Point to COPYING.bsd in its new location.
	* docs/.ispell_english: Incorporate contents of bsd/.ispell_english.
	* docs/Makefile.am: Add sccs.1 and sccs.me.
	* bsd/.ispell_english, bad/Makefile.am, bsd/Makefile.bsd: Delete.
	* bsd/sccs.me: move to docs/sccs.me
	* configure.ac: refer to src/sccs.c instead of bsd/sccs.c
	* Makefile.am (SUBDIRS): Remove bsd from SUBDIRS.
	* README: sccs no longer lives in bsd/sccs.

	Allow an empty MR list to be passed to admin.
	* tests/admin/init-mr.sh: Don't expect "admin -m" to interpret
	a plain "-m" as meaning an empty MR list.  Distinguishing the
	absence of an argument to -m requires a traditional SCCS argument
	processor, and this behaviour is incompatible with modern
	implementations of SCCS (for example OpenSolaris).
	* tests/admin/flags.sh: Likewise.
	* src/admin.cc (main): Allow an empty list of MRs to be specified
	to admin, for example "admin -fv -m' '".  OpenSolaris allows
	this, and we can no longer use the previous method which was to
	omit the optional argument.  Elminiate doubled space in error
	message.
	* docs/cssc.texi (admin): document this clearly.
	* NEWS: mention this change.

	Fix delta summary; when it goes to stdout, send other to stderr.
	* tests/get/delta-summary.sh: OpenSolaris get emits the delta
	summary (produced by get -L) to stdout and the SID of the gotten
	delta and the number of body lines to stderr.  Expect this
	behaviour.
	* tests/get/delta-summary.sh (L2e): Check that the "new delta"
	message also goes to stderr when we are using "get -e -L" (since
	the delta summary goes to stdout).
	* src/get.cc (print_id_list): New parameter, fp: the file handle
	to print the IDs to.
	(main): rename use_stdout to send_body_to_stdout (being a more
	accurate description).
	(main): add variable commentary, the file descriptor on which we
	announce which delta we're getting and so forth.   This is usually
	stdout, but if stdout needs to be used for something else (for
	example the delta summary), commentary can be set to stderr.
	* src/sf-get2.cc (get): Correct the spacing before the items in
	the delta summary.  Add a trailing newline.
	* NEWS: Mention this change.

	Produce better test diagnostics when a command unexpectedly fails.
	* tests/common/test-common (docommand): when the return value is
	zero, print any error message that had been issued on stderr.

	Update sccsdiff to work like sccsdiff on OpenSolaris.
	* tests/sccsdiff/rap.sh: Update the tests to match the results we
	actually get from sccsdiff on OpenSolaris.
	* src/sccsdiff.sh.in: Update to pass the modified tests.
	Specifically, use a different header for the case where -p is
	specified and when it's not.
	* NEWS: Mention this change.

	Call ${admin} in test preparations, not "admin".
	* tests/admin/y-flag.sh: when trying to deduce the properties of
	the admin command we're testing, invoke ${admin} (i.e. the thing
	we are testing) as opposed to "admin" (i.e. the system's
	already-installed version).  Add extra checks to verify that the
	right thing happened.

	Avoid assuming Unix semantics for st_nlinks in lndir.
	* testutils/lndir.c (quit): Accept errno argument; include the
	error string in the error message if it is nonzero.  Call vmsg
	instead of calling vfprintf directly.
	(mperror): Accept the errno value as a function argument.
	(vmsg): make a static function.
	(dodir): Eliminate n_dirs subdirectory counter; this is unreliable
	on filesystems which don't have Unix-like semantics for the
	directory link count (for example, ISO9660 on Solaris, VirtualBox
	shared folders on Solaris).  Also word error messages more
	explicitly.

	Avoid retrying link(2) when errno is set to ENOSYS.
	* src/file.cc (atomic_nfs_create): If link(2) fails with ENOSYS,
	there is no point in retrying.

	Bugfix for lndir on OpenSolaris: ignore . and ..
	* testutils/lndir.c (dodir): Ignore . and .. (on systems where
	readdir returns them).

2011-04-24  James Youngman  <jay@gnu.org>
	Tell the user to run "bootstrap" instead of "autogen.sh".
	* README: "autogen.sh" has been replaced by "bootstrap".

	Adopt Automake's "gnits" rules.
	* configure.ac: Use the "gnits" rules.
	* docs/CREDITS: Rename to THANKS to comply with the gnits rules.
	* docs/CREDITS.short.txt: Add missing final newline.

	Modernise configure.ac initialisation.
	* configure.ac: Use the new-style Autoconf/Automake initialisation
	which passes the version number to AC_INIT rather than to
	AM_INIT_AUTOMAKE.

	Update the version number.
	* configure.ac: Update version number to make a distinction
	between the tar file which results form "make dist" and the
	released 1.3.0 tar file.
	* NEWS: Similarly update the version number.

	Fix SF bug #1300722 (prs succeeds even if the SID is not found).
	* tests/prs/wrongsid.sh: New file; tests for "prs -r" when the
	specified SID does not exist.
	* tests/prs/default.sh: New file; tests the default behaviour of
	prs, both with -d and with no options at all.
	* tests/prs/cutoff.sh: New file; tests for "prs -e" and "prs -l".
	* src/prs.cc (main): Add a comment pointing out that specifying -d
	changes the default behaviour around which deltas are selected.
	* src/sf-prs.cc (prs): return a failure status if a SID was
	specified but not matched.
	* NEWS: mention this bugfix.

2011-04-22  Yann Dirson  <dirson@debian.org>  (tiny change)

	Fix SourceForge bug #1317916.
	* bsd/sccs.1: Avoid a groff warning in sccs.1 by removing some
	unnecessary blank lines.

2010-11-07  James Youngman  <jay@gnu.org>

	Prepare to release 1.3.0.
	* configure.ac (AM_INIT_AUTOMAKE): Update the version number.
	This release is otherwise identical to 1.3.0rc1.
	* NEWS: Mention this.

2010-05-16  James Youngman  <jay@gnu.org>

	Prepare to release 1.3.0rc1.
	* NEWS: Update version to 1.3.0rc1
	* configure.ac: Update version to 1.3.0rc1
	* docs/cssc.texi: Update VERSION, EDITION and last-update time.

	Remove exceptions for now-deleted googletest/ files.
	* .x-sc_prohibit_empty_lines_at_EOF: Remove exceptions for
	nonexistent files.
	* .x-sc_prohibit_magic_number_exit: Likewise.
	* .x-sc_useless_cpp_parens: Likewise.
	* .x-sc_the_the: Likewise.
	* .x-sc_file_system: Likewise.
	* .x-sc_m4_quote_check: Delete this file, since the only entry in
	it has also been deleted.

	Remove some trailing blanks.
	* src/file.cc (create): Remove trailing blanks.

	Distribute ChangeLog.2.
	* Makefile.am (ACLOCAL_AMFLAGS): Set to -I m4 to avoid a warning.
	(EXTRA_DIST): Add ChangeLog.2, which previously wasn't
	distributed.

	Don't use #pragma interface/implementation, they're not useful
	with GCC 2.7.2+.
	* src/quit.h, src/sccsdate.h, src/sccsname.h, src/sid_list.h,
	src/filediff.h, src/fileiter.h, src/filelock.h: Don't use #pragma
	interface.
	* src/file.cc, src/fileiter.cc, src/linebuf.cc, src/my-getopt.cc,
	src/my-getopt.h, src/quit.cc, src/sccsdate.cc, src/sccsname.cc,
	src/sf-get.cc, src/sf-kw.cc: Don't use #pragma implementation.

	Remove support for CONFIG_MSDOS_FILES and lock methods other than
	CONFIG_PID_LOCKING.
	* src/fileiter.cc (sccs_file_iterator): Remove support for
	CONFIG_MSDOS_FILES.
	* src/sysdep.h: Remove support for CONFIG_MSDOS_FILES.
	* src/filelock.h (cleanup): Remove support for CONFIG_NO_LOCKING.
	* src/file.cc (create): Remove support for CONFIG_MSDOS_FILES.
	(create): Remove support for CONFIG_SHARE_LOCKING.
	(do_lock): Remove support for CONFIG_SHARE_LOCKING.
	* src/defaults.h: Remove support for types of locking other than
	CONFIG_PID_LOCKING.  Remove support for CONFIG_MSDOS_FILES.
	* src/file.h (enum create_mode): Likewise.

	Generate config.h.in by running bootstrap.
	* configure.ac: Call AC_CONFIG_HEADERS instead of the obsolete
	AM_CONFIG_HEADERS.  This causes bootstrap to call autoheader,
	which needs to happen for config.h.in to be generated.

	Eliminate stack.h and the stack<T> template, since it is not used.
	* unit-tests/Makefile.am (unit_tests): Remove test_stack.  Also
	eliminate test_stack_SOURCES.
	* src/seqstate.h: Don't include stack.h.
	* src/stack.h: Remove.
	* unit-tests/test_stack.cc: Remove.
	* src/Makefile.am (noinst_HEADERS): Remove stack.h.

2010-05-15  James Youngman  <jay@gnu.org>

	Remove trailing blanks from most files.
	* .x-sc_trailing_blank: Remove trailing-blank exceptions for most
	files.
	* Makefile.am, NEWS, README, auxfiles/CSSC.spec.in,
	bsd/Makefile.bsd, bsd/sccs.1, bsd/sccs.c, configure.ac, docs/BUGS,
	docs/CREDITS, docs/Makefile.am, docs/Platforms, docs/TODO,
	docs/URLs, docs/cssc.texi, docs/mailing-list.txt, docs/style.txt,
	docs/tests-todo.txt, gl/Makefile.am, sccs-cgi/sccs.cgi,
	src/Makefile.am, src/admin.cc, src/bodyio.cc, src/bodyio.h,
	src/canonify.cc, src/cap.cc, src/cdc.cc, src/cleanup.h,
	src/cssc-assert.h, src/cssc.h, src/defaults.h,
	src/delta-iterator.cc, src/delta-iterator.h, src/delta-table.cc,
	src/delta-table.h, src/delta.cc, src/delta.h, src/dtbl-prepend.cc,
	src/encoding.cc, src/environment.cc, src/except.h,
	src/fatalsig.cc, src/fdclosed.cc, src/file.cc, src/file.h,
	src/filediff.cc, src/filediff.h, src/fileiter.cc, src/fileiter.h,
	src/filelock.h, src/filepos.h, src/fnsplit.cc, src/get.cc,
	src/ioerr.h, src/l-split.cc, src/linebuf.cc, src/linebuf.h,
	src/my-getopt.cc, src/my-getopt.h, src/mylist.h, src/myset.h,
	src/mystring.h, src/pf-add.cc, src/pf-del.cc, src/pfile.cc,
	src/pfile.h, src/prompt.cc, src/prs.cc, src/prt.cc, src/quit.cc,
	src/quit.h, src/rel_list.cc, src/rel_list.h, src/release.h,
	src/relvbr.h, src/rl-merge.cc, src/rmdel.cc, src/run.cc,
	src/run.h, src/sact.cc, src/sccs-delta.cc, src/sccsdate.cc,
	src/sccsdate.h, src/sccsdiff.sh.in, src/sccsfile.cc,
	src/sccsfile.h, src/sccsname.cc, src/sccsname.h, src/seqstate.cc,
	src/seqstate.h, src/sf-add.cc, src/sf-admin.cc, src/sf-cdc.cc,
	src/sf-chkid.cc, src/sf-chkmr.h, src/sf-delta.cc, src/sf-get.cc,
	src/sf-get2.cc, src/sf-get3.cc, src/sf-kw.cc, src/sf-prs.cc,
	src/sf-prt.cc, src/sf-rmdel.cc, src/sf-val.cc, src/sf-write.cc,
	src/showconfig.cc, src/sid.cc, src/sid.h, src/sid_list.h,
	src/sl-merge.h, src/stack.h, src/sysdep.h, src/unget.cc,
	src/val.cc, src/valcodes.h, src/version.h, src/what.cc,
	src/writesubst.cc, testutils/compare_gets.sh,
	testutils/condense-valgrind.pl, testutils/decompress_stdin.sh.in,
	testutils/ekko.c, testutils/gcov-util.sh, testutils/last-time.c,
	testutils/lndir.c, testutils/lndir.man, testutils/mogrify.awk,
	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
	unit-tests/Makefile.am, unit-tests/get-gtest.sh,
	unit-tests/test_bigfile.cc, unit-tests/test_delta-table.cc,
	unit-tests/test_delta.cc, unit-tests/test_encoding.cc,
	unit-tests/test_encoding2.cc, unit-tests/test_mylist.cc,
	unit-tests/test_myset.cc, unit-tests/test_rel_list.cc,
	unit-tests/test_release.cc, unit-tests/test_relvbr.cc,
	unit-tests/test_sccsdate.cc, unit-tests/test_sid.cc,
	unit-tests/test_sid_list.cc, unit-tests/test_stack.cc: Remove
	trailing blanks.

	Eliminate some syntax-check warnings.
	* testutils/yes.c (main): Don't #define EXIT_FAILURE.
	* docs/borrowed-files.txt: Remove trailing blanks.
	* bsd/sccs.c: Don't define WEXITSTATUS, sys/wait.h does that.
	* tests/common/command-names: Convert TABs to spaces to avoid
	syntax-check warnings.

2010-05-14  James Youngman  <jay@gnu.org>

	Don't configure in unit-tests/googletest, it's gone.
	* configure.ac: remove call to
	AC_CONFIG_SUBDIRS(unit-tests/googletest).

	Disable pthread support (since we don't use pthreads).
	* unit-tests/Makefile.am (AM_CPPFLAGS): Pass -DGTEST_HAS_PTHREAD=0.
	* configure.ac: Don't include
	unit-tests/googletest/m4/acx_pthread.m4. Remove --with-pthreads.
	* gl/lib/.gitignore: Remove gnulib.mk, dummy.c.

	Update Google C++ Test Framework version at bootstrap time.
	* bootstrap.conf (bootstrap_epilogue): call get-gtest.sh at
	bootstrap time.

	* unit-tests/get-gtest.sh: Use svn's --non-interactive option.

	Configure and build googletest in our own configure/Makefile.
	* unit-tests/Makefile.am: Build the Google C++ Testing Framework
	code in this Makefile rather than forcing it to have its own
	configure.
	(EXTRA_DIST): Distribute the googletest copyright notice
	etc. too.
	(gtest_headers): List all the header files.
	(libgtest_a_SOURCES): List the source files separately, and the
	header files.
	(libgtest_main_a_SOURCES): List the header files too.
	* bootstrap.conf (bootstrap_epilogue): googletest now has no
	separate configure step, so no need to bootstrap in that directory
	either.
	* unit-tests/get-gtest.sh: Script for checking out the google unit
	test code.

	Move googletest to unit-tests/googletest.
	* unit-tests/Makefile.am (SUBDIRS): Recurse into googletest.
	Update paths to liibgtest.la.
	* bootstrap.conf (bootstrap_epilogue): bootstrap in uni-tests/googletest.
	* configure.ac: Configure in unit-tests/googletest.
	* Makefile.am (SUBDIRS): Remove googletest (since we moved it).
	* googletest/*: move to unit-tests/googletest/.

	Remove some redundant scripts and .cvsignore files.
	* scripts/rev-freq.sh: Remove unused file.
	* show-disp.sh: Remove unused file.
	* scripts/change-suffix: Remove unused file.
	* .cvsignore, auxfiles/.cvsignore, bsd/.cvsignore,
	docs/.cvsignore, sccs-cgi/.cvsignore, tests/.cvsignore,
	testutils/.cvsignore, unused/.cvsignore: Remove unused files.

	Move CSSC source code to src/ subdirectory.
	* configure.ac: move CSSC source to subdirectory src/.
	* Makefile.am: rename to src/Makefile.am.  The remaining makefile
	just sets SUBDIRS and EXTRA_DIST.
	* admin.cc: moved to src/admin.cc
	* bodyio.cc: moved to src/bodyio.cc
	* bodyio.h: moved to src/bodyio.h
	* canonify.cc: moved to src/canonify.cc
	* cap.cc: moved to src/cap.cc
	* cdc.cc: moved to src/cdc.cc
	* cleanup.h: moved to src/cleanup.h
	* cssc-assert.h: moved to src/cssc-assert.h
	* cssc.h: moved to src/cssc.h
	* defaults.h: moved to src/defaults.h
	* delta-iterator.cc: moved to src/delta-iterator.cc
	* delta-iterator.h: moved to src/delta-iterator.h
	* delta-table.cc: moved to src/delta-table.cc
	* delta-table.h: moved to src/delta-table.h
	* delta.cc: moved to src/delta.cc
	* delta.h: moved to src/delta.h
	* dtbl-prepend.cc: moved to src/dtbl-prepend.cc
	* encoding.cc: moved to src/encoding.cc
	* environment.cc: moved to src/environment.cc
	* except.h: moved to src/except.h
	* fatalsig.cc: moved to src/fatalsig.cc
	* fdclosed.cc: moved to src/fdclosed.cc
	* file.cc: moved to src/file.cc
	* file.h: moved to src/file.h
	* filediff.cc: moved to src/filediff.cc
	* filediff.h: moved to src/filediff.h
	* fileiter.cc: moved to src/fileiter.cc
	* fileiter.h: moved to src/fileiter.h
	* filelock.h: moved to src/filelock.h
	* filepos.h: moved to src/filepos.h
	* fnsplit.cc: moved to src/fnsplit.cc
	* get.cc: moved to src/get.cc
	* ioerr.h: moved to src/ioerr.h
	* l-split.cc: moved to src/l-split.cc
	* linebuf.cc: moved to src/linebuf.cc
	* linebuf.h: moved to src/linebuf.h
	* my-getopt.cc: moved to src/my-getopt.cc
	* my-getopt.h: moved to src/my-getopt.h
	* mylist.h: moved to src/mylist.h
	* myset.h: moved to src/myset.h
	* mystring.h: moved to src/mystring.h
	* pf-add.cc: moved to src/pf-add.cc
	* pf-del.cc: moved to src/pf-del.cc
	* pfile.cc: moved to src/pfile.cc
	* pfile.h: moved to src/pfile.h
	* prompt.cc: moved to src/prompt.cc
	* prs.cc: moved to src/prs.cc
	* prt.cc: moved to src/prt.cc
	* quit.cc: moved to src/quit.cc
	* quit.h: moved to src/quit.h
	* rel_list.cc: moved to src/rel_list.cc
	* rel_list.h: moved to src/rel_list.h
	* release.h: moved to src/release.h
	* relvbr.h: moved to src/relvbr.h
	* rl-merge.cc: moved to src/rl-merge.cc
	* rmdel.cc: moved to src/rmdel.cc
	* run.cc: moved to src/run.cc
	* run.h: moved to src/run.h
	* sact.cc: moved to src/sact.cc
	* sccs-delta.cc: moved to src/sccs-delta.cc
	* sccsdate.cc: moved to src/sccsdate.cc
	* sccsdate.h: moved to src/sccsdate.h
	* sccsdiff.sh.in: moved to src/sccsdiff.sh.in
	* sccsfile.cc: moved to src/sccsfile.cc
	* sccsfile.h: moved to src/sccsfile.h
	* sccsname.cc: moved to src/sccsname.cc
	* sccsname.h: moved to src/sccsname.h
	* seqstate.cc: moved to src/seqstate.cc
	* seqstate.h: moved to src/seqstate.h
	* sf-add.cc: moved to src/sf-add.cc
	* sf-admin.cc: moved to src/sf-admin.cc
	* sf-cdc.cc: moved to src/sf-cdc.cc
	* sf-chkid.cc: moved to src/sf-chkid.cc
	* sf-chkmr.h: moved to src/sf-chkmr.h
	* sf-delta.cc: moved to src/sf-delta.cc
	* sf-get.cc: moved to src/sf-get.cc
	* sf-get2.cc: moved to src/sf-get2.cc
	* sf-get3.cc: moved to src/sf-get3.cc
	* sf-kw.cc: moved to src/sf-kw.cc
	* sf-prs.cc: moved to src/sf-prs.cc
	* sf-prt.cc: moved to src/sf-prt.cc
	* sf-rmdel.cc: moved to src/sf-rmdel.cc
	* sf-val.cc: moved to src/sf-val.cc
	* sf-write.cc: moved to src/sf-write.cc
	* showconfig.cc: moved to src/showconfig.cc
	* sid.cc: moved to src/sid.cc
	* sid.h: moved to src/sid.h
	* sid_list.h: moved to src/sid_list.h
	* sl-merge.h: moved to src/sl-merge.h
	* stack.h: moved to src/stack.h
	* sysdep.h: moved to src/sysdep.h
	* unget.cc: moved to src/unget.cc
	* val.cc: moved to src/val.cc
	* valcodes.h: moved to src/valcodes.h
	* version.cc.in: moved to src/version.cc.in
	* version.h: moved to src/version.h
	* what.cc: moved to src/what.cc
	* writesubst.cc: moved to src/writesubst.cc
	* unit-tests/Makefile.am (LDADD): Fix relative path
	of libcssc.a.
	(test_bigfile_LDADD): Likewise.
	(AM_CPPFLAGS): Fix relative path to the include files.
	* tests/common/command-names (dir): Update relative path to the binaries.
	(sccsprog): Set a variable for the path to the sccs binary.
	(sccs): Correct the sccs command (use ${sccsprog}).

2010-05-13  James Youngman  <jay@gnu.org>

	Fix some compiler warnigns about shadowing names or integer conversions.
	* sf-delta.cc (add_delta): Rename some variables to avoid
	shadowing class members or other local variables.n
	* sf-prs.cc (get): Likewise.
	(print_delta): Likewise.
	(prs): Likewise.
	* sf-cdc.cc (cdc): Rename parameters to avoid shadowing the names
	of class members.
	* sf-admin.cc (admin): Remove unused variable which was causing
	shadowing warnings.
	* sccsdate.cc (sccs_date): Avoid warning about implicit cast from
	int to char, by using an explicit cast.
	* linebuf.cc (read_line): Avoid a compiler warning: explicitly
	cast the length parameter passed to fgets from size_t to int.
	* fileiter.h (s): Correct the type of pos (it's in index into
	mylist<mystring>, so use mylist<mystring>::size_type).
	* cdc.cc (plural): Fix warning about type conversion in call to plural().
	* fileiter.cc (sccs_file_iterator): Avoid shadowoing a class member.
	* what.cc (xread): return ssize_t rather than int.
	(main): store the result of xread in a ssize_t variable, not an int.

	Fix more compiler warnings.
	* sf-val.cc (validate_seq_lists): Use size_type for indexes into mylist,
	not int.
	(validate): Likewise.
	* sf-prs.cc (print_seq_list): Likewise.
	(print_string_list): Likewise.
	* sf-cdc.cc (inlist): Likewise.
	(process_mrs): Likewise.
	(sccs_file::cdc): Likewise.
	* sf-rmdel.cc (is_seqlist_member): Likewise.
	* sf-prt.cc (print_string_list): Likewise.
	(print_seq_list): Likewise.
	* delta.cc (delta_main): Make static.
	* sf-get2.cc (test_locks): Avoid shadowing a class member.
	* get.cc (print_id_list): Use size_type for indexes into mylist,
	not int.
	* showconfig.cc: Include version.h for the declarations of
	functions in this module.
	* quit.cc (v_errormsg_with_errno): Make static; nobody else uses it.
	* fnsplit.cc: Include file.h for declaration of split_filename,
	since we define it in this file.
	* sccsdate.cc (count_digits): Avoid casting argument of is_digit
	to unsigned char, since is_digit takes a char.
	* sid.cc (matches): Be more explicit about avoidingn signed overflow.

	Fix warnings in file.cc.
	* file.cc (maybe_wait_a_bit): Fix type of first parameter to avoid
	a compiler warning.  Also type of argument to sleep.
	(eaccess): Remove unused function.
	(unlink_file_if_present): Remove unused function.
	(create): Make this function static.

	Fix some more compiler warnings.
	* bodyio.cc (body_insert_binary): Explicitly qualify
	::check_id_keywords as being in the global namespace.
	* run.cc (operator+=): Change type of index variables to size_type
	to fix a compiler warning.
	(run_mr_checker): Likewise.
	* sf-write.cc (print_seqs): Likewise.
	(write_delta): Likewise.
	(rehack_encoded_flag): Avoid shadowing the name of a class member.
	* sccsfile.cc: Remove unused macro 'f'.
	(strict_atoul_idu): Remove unused variable 'c'.
	(read_line_param): Avoid shadowing the name of a class member.
	* rel_list.h (class release_list): Define typedef size_type.
	* rel_list.cc (member): Use size_type for index variables to avoid
	(justified) compiler warnings.
	(print): Likewise.
	* fileiter.cc (sccs_file_iterator): Use size_t to represent the
	result of strlen, not int.
	* file.cc (is_writable): Make static, it's not used elsewhere.
	(old_is_writable): Unused; remove.

	* sf-chkid.cc (check_id_keywords): Assume we have memchr.  Avoid
	possible access beyond the end of the string.
	* sf-kw.cc (no_id_keywords): Avoid shadowing the name of a class
	member.
	(check_keywords_in_file): Likewise.
	* l-split.cc: #include "sccsfile.h" to get declarations of the
	functions in this file.

	Fix or minimise some compiler warnings.
	* sid_list.h (range_list): Avoid long-to-size_t compiler warning.
	* encoding.cc (encode): Move the function definition here from
	bodyio.h since it's only used in this file.
	(decode): Likewise.
	(decode_line): Be more explicit about casts between char and
	size_t in order to avoid compiler warnings.
	(encode_line): Likewise.
	* bodyio.h: Remove bodies of encode() and decode().  Declare
	encode and decode so that unit-tests/test_encoding can execute
	them.
	* sf-get3.cc (authorised): Change the types of 'len' and 'i' from
	int to size_type, because they are offsets into a list.  Add FIXME
	comment for use of atoi.
	* bodyio.cc (body_insert_binary): Change the type of 'len' from
	int to size_t, because it is a length.

	Separate EOF detection from SCCS-line-type detection.
	* sccsfile.h (sccs_file::read_line): Change prototype to separate
	EOF detection from detection of what type of line we just read.
	* sccsfile.cc (read_line): Update the implementation to match.
	(read_delta): Update caller.
	(sccs_file): Update caller.
	* sf-delta.cc (add_delta): Update caller.
	* sf-get.cc (get): Update caller.
	* sf-prs.cc (print_delta): Update caller.
	* sf-rmdel.cc (rmdel): Update caller.

	Avoid issuing warnings for things in system headers.
	* configure.ac: Disable warnigns for system headers.

	Fix some commpiler warnings.
	* bodyio.h (decode_line): return size_t, not int, for a length.
	(encode_line): take a size_t parameter, not int, for a length.
	* encoding.cc (decode_line): Use a size_t value for offsets in the
	buffer.
	* bodyio.cc (body_insert_text): Add casts where we know
	conversions are safe to avoid compiler warnings.
	(copy_data): Mark as a static function.

2010-05-12  James Youngman  <jay@gnu.org>

	Remove unused file list.cc.
	* Makefile.am (EXTRA_DIST): Remove list.cc, since it is unused.
	* list.cc: Delete.

	Prune obsolete items in docs/TODO.
	* docs/TODO: Tests for sact and val exist.  Remove that TODO item.

	Some TODO housekeeping.
	* sf-prs.cc (print_delta): Explain more clearly what get do for
	:BD: in prs if we fail to seek to the body.
	* sccsfile.h (s): Add TODO comment suggesting we use something
	more efficient than mylist<string> for authoried users.
	(sccs_file::admin): Likewise for set_flags and unset_flags
	parameters to this method.

	Remove mylist_delta_list; use more appropriate types for
	loop/length variables.
	* delta-table.h (mylist_delta_list::build_seq_table): Use more
	appropriate (i.e. matching) types for loop variables.
	Get rid of mylist_delta_list and abstract_delta_list.
	* delta-table.cc (delta_at_seq_exists): There is no need for a
	const qualifier for a bool return type; remove it.
	(next_seqno): Just increment the result rather than adding an
	unsigned int, as this simplifies the type combination.
	* sf-get.cc (prepare_seqstate_1): Use size_type types for indexes and
	length variables.

	Use mylist<T>::size_type instead of int.
	* mylist.h (mylist): Introduce size_type, and use it in method
	parameters.
	* rl-merge.cc (merge): Use mylist<release>::size_type.

	Avoid a 'local variable shadows class member' warning.
	* delta-table.h (abstract_delta_list): Avoid having a local shadow
	an instance variable, by renaming the local.

	Weed out some warning options that make sense for C but not C++.
	* configure.ac (UNWANTED_WARNINGS): remove a bunch of warning
	options that don't make sense for C++.

	Remove rundundant call to AC_PROG_RANLIB.
	* configure.ac: Don't call AC_PROG_RANLIB since we're using libtool.

	Make more uses of sccs_pfile const (now that iterating won't
	mutate it).
	* pfile.h (sccs_pfile::find_locked): Make const.
	(sccs_pfile::is_locked): Make const.
	(sccs_pfile::find_to_be_created): Make const.
	(sccs_pfile::is_to_be_created): Make const.
	(sccs_pfile::print_lock_sid): Make const.
	(sccs_pfile::update): Make const.
	* pfile.cc (sccs_pfile::find_locked): Make const.
	(find_to_be_created): Make const.
	(print_lock_sid): Make const.
	* pf-del.cc (sccs_pfile::update): Make const.

	Make some references to sccs_pfile const now that iterating
	doesn't mutate.
	* sccsfile.h (sccs_file::find_next_sid): take a const reference to
	sccs_pfile, since iterating over a sccs_pfile no longer needs to
	mutate the container.
	(sccs_file::sid_in_use): Likewise.
	* sf-get2.cc (sid_in_use): Make the corresponding change in the
	implementation.
	(find_next_sid): Likewise.

	Remove the built-in sccs_pfile iterator.  Use an STL iterator.
	* pfile.h (sccs_pfile::edit_locks): change type from
	mylist<edit_lock> to std::list<edit_lock> and remove the built-in
	iterator.
	(sccs_pfile::find_sid): Since there is no built-in iterator,
	return the position of the lock we found as the second half of a
	pair.
	* pf-del.cc (find_sid): Make the corresponding change to the
	implementation.
	(update): Use the STL iterator rather than sccs_pfile::pos.
	* delta.cc (delta_main): Update to the new signature of
	sccs_pfile::find_sid.
	* pfile.cc (sccs_pfile::sccs_pfile): Remove pos.
	(sccs_pfile): Use list::push_back() instead of mylist::add().
	(find_to_be_created): Rename from is_to_be_created.  Use the STL
	iterator.
	(find_locked): Rename from is_locked.  Use the STL iterator.
	(print_lock_sid): Since there is no built-in position, take a
	const_iterator as an argument.
	* pf-add.cc (add_lock): Use list::empty() instead of
	checking mylist::length() for zero-ness.
	(add_lock): Use list::push_back() instead of mylist::add().
	* rmdel.cc (is_locked): Use the STL iterator over sccs_pfile.
	* sact.cc (main): Likewise.
	* sccsfile.h (s): Now that iterating over the locks is not a
	mutating operation on sccs_pfile, sccsfile::test_locks can take a
	const reference to the sccs_pfile.
	(add_delta): Since there is no built-in iteration position in
	sccs_pfile, we also need to pass in an iterator.
	Also #include pfile.h for sccs_pfile::iterator.

	* sf-delta.cc (add_delta): Make the correspondingn change to the
	implementation of sccs_file::add_delta.
	* sf-get2.cc (sid_in_use): Use an STL iterator.
	* unget.cc (main): Adapt to the new signature of
	sccs_pfile::find_sid.

2010-05-11  James Youngman  <jay@gnu.org>

	Fix some compilation warnings for val.o.
	* sccsfile.h (subst_parms::subst_parms): Change the type of the
	'l' parameter to avoid type conversion in the constructor.
	* configure.ac (UNWANTED_WARNINGS): we don't want -Wnested-externs
	since that is only useful for Objective C, which we are not using.
	* release.h (release::operator unsigned long): Ass that the data is
	non-negative before casting it.  Include cssc-assert.h.

2010-05-09  James Youngman  <jay@gnu.org>

	Update to the current version of the Google C++ Testing Framework.
	* bootstrap.conf (bootstrap_epilogue): Run autotools in
	./googletest once we're done bootstrapping in the top-level
	directory.
	* googletest/*: update to version 424 of the Google C++ Testing
	Framework.

2010-05-06  James Youngman  <jay@gnu.org>

	Mention some recent changes.
	* NEWS: Mention some recent changes.

	Various updates in docs/*
	* docs/patches.txt: Modernise the diff-preparation instructions
	(to ask people to use git).
	* docs/Platforms: Mention the recent versions of Debian we've
	tested on.  Change configure.in to configure.ac.  Indicate that
	CSSC is known to work with GCC 4.4.
	* docs/FIXED: Remove.
	* docs/Makefile.am (EXTRA_DIST): Don't distribute docs/FIXED.
	* auxfiles/CSSC.spec.in (%files): Remove docs/FIXED.
	* docs/borrowed-files.txt: Mention that bootstrap is taken from
	coreutils.  Mention that the GPL version is now 3.  Don't mention
	-unused/move-if-change, since we removed it.

2010-05-05  James Youngman  <jay@gnu.org>

	Use the correct type in calls to release::release().
	* sccsfile.cc (sccs_file): release floor and ceiling should be
	initialised from shorts not ints.
	* sf-admin.cc (admin): Likewise.

	Make "make"'s idea of the m4 macro directory consistent with "bootstrap"
	* Makefile.am (ACLOCAL_AMFLAGS): m4 files are in ./m4.  This is
	now consistent with what "bootstrap" thinks.
	* configure.ac: Likewise.

	Fix a number of compiler warnings.
	* mylist.h (mylist): mylist::operator=() should return a reference
	to *this, so change it so that it does.
	(mylist): Make mylist::length() return a size_t rather than an int.
	* delta.h (delta::delta): List the initalisers in the order they
	are actually performed.
	* defaults.h (NORETURN): Don't define "NORETURN" to "volatile void".
	* configure.ac: Disable warnings about aggregate return types and
	missed inlined opportunities.
	* release.h (release::release(int)): Change parameter to a short
	int instead to avoid an implicit conversion.
	* relvbr.h (relvbr::relvbr): initialise from short ints, not
	regular ints, to avoid implicit casts.
	* sccsname.h (sccsname::valid): Avoid cast from size_t to int by
	changing the return type from int to bool.

2010-05-03  James Youngman  <jay@gnu.org>

	Enable many compiler warnings.
	* bootstrap.conf (gnulib_modules): Add warnings and manywarnings.
	* Makefile.am: Add WARN_CFLAGS to AM_CXXFLAGS.
	* configure.ac: Enable all the warnings available from
	gl_MANYWARN_ALL_GCC, except -Wundef -Wpadded -Wredundant-decls.

	Assume the availability of strerror.
	* configure.ac: Don't check header files for declarations of
	sys_nerr or sys_errlist, since we no longer need those.

	* quit.cc (print_err): Assume strerror is available.
	Don't include sysnerr.h.
	* Makefile.am (noinst_HEADERS): Remove sysnerr.h.
	* sysnerr.h: Delete.

	Don't declare rename, remove.  Include <cstdio> where we use it.
	* file.h: Avoid declaring rename and remove.
	* version.h: Include <cstdio>
	* prompt.cc: Likewise.
	* environment.cc: Likewise.
	* linebuf.cc: Likewise.
	* quit.cc: Likewise.
	* fileiter.cc: Likewise.
	* run.cc: Likewise.
	* showconfig.cc: Include <cstdio>.  Update copyright year.

	Avoid #if defined(FOO), use #if defined FOO instead.
	* .x-sc_useless_cpp_parens: Exempt files in the Google C++ Testing
	Framework.
	Also exempt ekko.c, since it's better to preserve the similarity
	with the code it was originally taken from.
	* defaults.h: Avoid #if defined(FOO), use #if defined FOO
	instead.
	* cssc.h: Likewise.
	* file.cc: Likewise.
	* filelock.h: Likewise.
	* quit.cc: Likewise.
	* quit.h: Likewise.
	* run.cc: Likewise.
	* run.h: Likewise.
	* sccsfile.cc: Likewise.
	* sf-write.cc: Likewise.
	* sysdep.h: Likewise.

	Exempt programs that don't use error() from using error().
	* .x-sc_unmarked_diagnostics: Exempt sccs.cgi and what.cc.

	Skip sc_two_space_separator_in_usage for things that aren't code.
	* .x-sc_two_space_separator_in_usage: Don't check docs/Platforms,
	it's not a program.

	Skip trailing-blank check, there are too many violations for now.
	* .x-sc_trailing_blank: Skip this test.

	Correct "the the" to "the".
	* get.cc (main): correct "the the" to "the".
	* sf-prs.cc: Likewise.
	* docs/cssc.texi (@copying): Likewise.
	(Top): Likewise.
	(Delta Table): Likewise.
	(PROJECTDIR): Likewise.
	* .x-sc_the_the: Exempt googletest/src/gtest.cc.

	Pacify the sc_makefile_TAB_only_indentation syntax check.
	* tests/Makefile.am: Replaced sequences of 8 spaces with a single
	TAB.

	Remove obsolete replacements for missing library files.
	* strerror.c: Remove obsolete file.
	* strstr.c: Remove obsolete file.
	* configure.ac: Don't refer to strerror or strstr via
	AC_REPLACE_FUNCS.

	Remove space-tab sequences.
	* .x-sc_space_tab: Exempt NEWS, ChangeLog files and
	tests/prt/all.expected.Z
	* docs/Platforms: Avoid space-tab sequences.
	* docs/TODO: Likewise.
	* docs/tests-todo.txt: Likewise.
	* pfile.h: Likewise.
	* sccsfile.cc: Likewise.
	* tests/Makefile.am: Likewise.
	* tests/common/test-common: Likewise.
	* tests/admin/flags.sh: Likewise.
	* tests/binary/auto.sh: Likewise.
	* tests/binary/binbasic.sh: Likewise.
	* unit-tests/test_bigfile.cc: Likewise.
	* unit-tests/test_myset.cc: Likewise.
	* tests/admin/locks.sh: Likewise.
	* tests/delta/nulldelta.sh: Likewise.
	* tests/delta/basic.sh: Likewise.
	* tests/delta/MRs.sh: Likewise.

	Remove unused source files.
	* rename.c: Remove unused file.
	* remove.c: Remove unused file.
	* configure.ac: Don't refer to these files with AC_REPLACE_FUNCS.

	Fix lint errors caused by failure to include <config.h>.
	* testutils/yes.c: Include <config.h> instead of "config.h".
	* testutils/ekko.c: Likewise.
	* testutils/lndir.c: Likewise.
	* testutils/seeker.c: Likewise.
	* testutils/user.c: Likewise.
	* testutils/uu_decode.c: Likewise.
	* testutils/yammer.c: Likewise.
	* testutils/last-time.c: Include <config.h>
	* rename.c: Likewise.
	* remove.c: Likewise.

	Avoid non-portable [ x -a y ] test usage.
	* scripts/rev-freq.sh (scale): Change [ x -a y ] to [ x ] && [ y ].
	* tests/make-links (common_files): Likewise.

	Exempt ourselves from SRTEQ for all C and C++ files.
	* .x-sc_prohibit_strcmp: We don't want to use STREQ, so suppress
	this warning for C and C++ files.

	Ignore existing instances of magic contstants in calls to exit.
	* .x-sc_prohibit_magic_number_exit: Ignore existing instances of
	magic contstants in calls to exit.

	Remove trailing blank lines.
	* tests/admin/Makefile.am: Remove trailing blank lines.
	* tests/admin/abspath.sh: Likewise.
	* tests/admin/flags.sh: Likewise.
	* tests/admin/hardlinks.sh: Likewise.
	* tests/admin/i-option.sh: Likewise.
	* tests/admin/init-mr.sh: Likewise.
	* tests/admin/locks.sh: Likewise.
	* tests/admin/r-option.sh: Likewise.
	* tests/admin/t-option.sh: Likewise.
	* tests/admin/users.sh: Likewise.
	* tests/admin/y-flag.sh: Likewise.
	* tests/binary/auto.sh: Likewise.
	* tests/binary/binbasic.sh: Likewise.
	* tests/binary/diff.sh: Likewise.
	* tests/bsd-sccs/driver-basic.sh: Likewise.
	* tests/cdc/1general.sh: Likewise.
	* tests/cdc/2comment.sh: Likewise.
	* tests/cdc/3MRs.sh: Likewise.
	* tests/cdc/4order.sh: Likewise.
	* tests/common/not-root: Likewise.
	* tests/delta/MRs.sh: Likewise.
	* tests/delta/Makefile.am: Likewise.
	* tests/delta/basic.sh: Likewise.
	* tests/delta/errorcase.sh: Likewise.
	* tests/delta/nulldelta.sh: Likewise.
	* tests/delta/options.sh: Likewise.
	* tests/get/branch.sh: Likewise.
	* tests/get/create.sh: Likewise.
	* tests/get/defsid.sh: Likewise.
	* tests/get/errorcases.sh: Likewise.
	* tests/get/gg_get_ix.sh: Likewise.
	* tests/get/optorder.sh: Likewise.
	* tests/get/writable.sh: Likewise.
	* tests/initial/root.sh: Likewise.
	* tests/large/admin.sh: Likewise.
	* tests/make-links: Likewise.
	* tests/prs/Makefile.am: Likewise.
	* tests/prs/s_foo_bd_output.txt: Likewise.
	* tests/prt/TODO: Likewise.
	* tests/prt/all-512.sh: Likewise.
	* tests/prt/reportmr.sh: Likewise.
	* tests/rmdel/basic.sh: Likewise.
	* tests/rmdel/edit.sh: Likewise.
	* tests/sccsdiff/rap.sh: Likewise.
	* tests/unget/Makefile.am: Likewise.
	* tests/unget/exists.sh: Likewise.
	* tests/unget/output.sh: Likewise.
	* tests/val/Makefile.am: Likewise.
	* tests/what/Makefile.am: Likewise.
	* testutils/compare_gets.sh: Likewise.
	* testutils/last-time.c: Likewise.
	* testutils/lndir.c: Likewise.
	* testutils/realpwd.cc: Likewise.
	* testutils/user.c: Likewise.
	* testutils/uu_decode.c: Likewise.
	* testutils/yes.c: Likewise.
	* unit-tests/test_delta-table.cc: Likewise.
	* unit-tests/test_encoding2.cc: Likewise.
	* unit-tests/test_mylist.cc: Likewise.
	* unit-tests/test_sccsdate.cc: Likewise.
	* unit-tests/test_sid_list.cc: Likewise.
	* version.cc.in: Likewise.
	* version.h: Likewise.
	* AUTHORS: Likewise.
	* sid_list.h: Likewise.
	* tests/README: Likewise.
	* sid.h: Likewise.
	* seqstate.h: Likewise.
	* sccsdiff.sh.in: Likewise.
	* remove.c: Likewise.
	* bsd/sccs.c: Likewise.
	* bsd/Makefile.bsd: Likewise.
	* delta.cc: Likewise.
	* rel_list.h: Likewise.
	* release.h: Likewise.
	* docs/style.txt: Likewise.
	* docs/config-info.texi.in: Likewise.
	* docs/URLs: Likewise.
	* docs/Platforms: Likewise.
	* .x-sc_prohibit_empty_lines_at_EOF: Ignore trailing blank lines
	at EOF for files in the Google C++ Testing Framework.

	Add temporary exceptions for atoi checks.
	* .x-sc_prohibit_atoi_atof: Temporary exemption for files where we
	still use atoi() and so on.  Ignore atoi in ChangeLog.

	Don't configure separately in testutils.
	* testutils/ekko.c: Include "config.h", don't use include guards.
	* testutils/lndir.c: Include "config.h", don't use include guards.
	(dodir): Don't use NAMLEN (since the replacement dirent.h does not
	define it).
	* testutils/seeker.c: Remove useless HAVE_FOO_H checks.  Assume
	fseek is available (gnulib provides it).
	* testutils/user.c: Remove useless HAVE_FOO_H checks.
	* testutils/uu_decode.c: Remove useless HAVE_FOO_H checks.
	* testutils/yammer.c: Likewise.
	* testutils/yes.c: Likewise.
	* testutils/realpwd.cc: Likewise.
	* gl/lib/.gitignore: Ignore fseek.c, fseeko.c, lseek.c, stdio-impl.h.
	* testutils/configure.ac: Delete.
	* testutils/NEWS: Delete.
	* testutils/AUTHORS: Delete.
	* testutils/COPYING: Delete.
	* testutils/ChangeLog: Delete.
	* testutils/INSTALL: Delete.
	* configure.ac: Don't run configure in ./testutils.
	AC_CONFIG_FILES: generate testutils/Makefile.
	* bootstrap.conf (gnulib_modules): Use the fseek module.
	* testutils/Makefile.am: Search for headers and libraries in ../gl/lib.

2010-05-02  James Youngman  <jay@gnu.org>

	Remove redundant inclusion guards for unistd.h and string.h.
	* configure.ac: When deciding whether or not _POSIX_SAVED_IDS is
	defined, include unistd.h unconditionally, since if the inclusion
	fails, the answer will still be no.
	* cssc.h: Don't use ifdef HAVE_UNISTD_H.  Since we're using
	gnulib's unistd.h module, we will be able to include <unistd.h>
	unconditionally.
	* rename.c: Likewise.
	* remove.c: Likewise.
	* strstr.c: Likewise for HAVE_STRING_H and <string.h>, since the
	latter is provided by gnulib's string module.

	Disable some spurious errors about failure to call set_program_name.
	* .x-sc_program_name: Don't require the test tools to call
	set_program_name, since they don't link with gnulib.

	Use the gnulib module progname.
	* bsd/sccs.c: Include progname.h.
	Remove unused variable MyName.
	(show_version): Use program_name not MyName.
	(usage): Likewise.
	(callprog): Likewise.
	(usrerr): Likewise.
	(syserr): Likewise.
	(main): Call set_program_name.

	* bsd/Makefile.am: Link against gnulib.
	* bootstrap.conf (gnulib_name): Give the gnulib library a sensible
	name (instead of lib.a).
	(gnulib_modules): Import the progname module.
	* gl/lib/.gitignore: Ignore files from the progname module.

	Use $(FOO) in Makefile.am rather than @FOO@.
	* tests/Makefile.am: Automake defines $(VALGRIND) from @VALGRIND@
	automatically anyway.
	* cfg.mk (_makefile_at_at_check_exceptions): Exempt a couple of
	usages by the Google C++ Testing Framework.
	* Makefile.am: Use $(LIBOBJS) instead of @LIBOBJS@.
	* unit-tests/Makefile.am (AM_LIBS): Likewise for $(PTHREAD_LIBS).
	(AM_CXXFLAGS): Likewise for  $(PTHREAD_CFLAGS).

	Silence an error about m4 quoting in the Google C++ Testing Framework.
	* .x-sc_m4_quote_check: Silence error message about insufficient
	quoting in googletest/m4/acx_pthread.m4.  We do this rather than
	fixing the quoting in order to avoid subsequent merge problems and
	spurious diffs.

	Silence a spurious error about changing old NEWS entries.
	* cfg.mk (old_NEWS_hash): Set old_NEWS_hash to the md5sum of a
	zero-length input in order to silence a spurious error about
	changing old NEWS entries.

	Standardise on the use of "file system" rather than "filesystem".
	* docs/cssc.texi (Filenames): Spell "filesystem" as "file system",
	following the example of the POSIX standard.
	* docs/Platforms: Likewise.
	* file.cc (atomic_nfs_create): Likewise.
	* tests/admin/hardlinks.sh: Likewise.
	* tests/admin/.x-sc_file_system: Exempt the Google Unit Test code
	from this requirement, since that will make later updates hard to
	merge.
	Also exempt ChangeLog files.

	Ignore some maintainer-makefile lint complaints I don't plan to fix.
	* .x-sc_error_message_period: Avoid syntax-check errors for error
	messages ending in a full stop.  Some error messages contain more
	than one sentence.
	* .x-sc_error_message_uppercase: Avoid syntax-check errors for
	error messages starting with a capital letter.

	Fix a maintainer-makefile if-before-free lint issue.
	* bsd/sccs.c (set_prefix): Remove useless if-before-free.

	Adopt the use of the gnulib maintainer-makefile module.
	(gnulib_modules): Add maintainer-makefile.

	Update to GNU Free Documentation License, Version 1.3 (from 1.2).
	* docs/cssc.texi (@copying): Update from FDL 1.2 to FDL 1.3.
	* bootstrap.conf (gnulib_modules): Import module fdl.

	* docs/fdl.texi: Symlink to ../gl/doc/fdl.texi.
	* NEWS: Mention this change.

	Don't create a spurious directory.
	* bootstrap.conf (local_gl_dir): Don't create {m4_base}.  Create
	${m4_base} instead.

	Remove obsolete file gnulib-tests/.gitignore.
	* gnulib-tests/.gitignore: Remove.

	Clean up core files in the unit test directory.
	* unit-tests/Makefile.am (COREFILES): Clean up "vgcore.*" files
	for distclean.
	* unit-tests/testwrapper.sh.in: Clean up core files once the test
	is complete, unless the core file signals a valgrind failure.
	Also inhibit core file generation int he first place (though this
	probably won't work for valgrind).

2010-05-01  James Youngman  <jay@gnu.org>

	Put the gnulib code, etc. into ./gl
	* bootstrap.conf (doc_base): Override doc_base, m4_base,
	source_base, tests_base, local_gl_dir.
	(gnulib_mk): Use Makefile.am, not gnulib.mk.
	(gnulib_tool_option_extras): Tests are in gl/tests.
	(bootstrap_epilogue): Use gl/tests/Makefile.am, not gnulib-tests/gnulib.mk.

	* configure.ac (SUBDIRS): Rename the gnulib source directory from
	lib to gl/lib.
	(AC_CONFIG_FILES): generate gl/Makefile gl/lib/Makefile
	gl/doc/Makefile gl/tests/Makefile.
	* Makefile.am (AM_CPPFLAGS): Pass -I gl/lib.
	* bsd/Makefile.am (AM_CPPFLAGS): Pass -I ../gl/lib.

	Adopt the use of the first gnulib module: dirent.
	* gnulib-tests/.gitignore: Ignore gnulib test files (since they're
	imported rather than checked into git).
	* lib/.gitignore: Ignore gnulib source files (for the same reason).
	* configure.ac (AC_CONFIG_FILES): generate lib/Makefile.a
	* Makefile.am (SUBDIRS): Add "lib", which is where the gnulib code is.

	* bsd/sccs.c: Remove HAVE_XXX_H header guards.
	Include dirent-safer.h.  Remove the hand-hacked dirent portability
	macros (and remove NAMLEN as a side-effect).
	(do_clean): Don't assume the NAMLEN macro is defined.
	* file.cc: Include dirent-safer.h.  Remove the hand-hacked dirent
	portability macros (and remove NAMLEN as a side-effect).
	(is_directory): Move this function here from fileiter.cc.
	* fileiter.cc: Include dirent-safer.h.  Remove the hand-hacked
	dirent portability macros (and remove NAMLEN as a side-effect).

	Show the value of $(VALGRIND) at the start of regression testing.
	* tests/Makefile.am (test-initial): echo $(VALGRIND).

	Add unit test verifying that we don't read uninitialised data in encode.
	* unit-tests/test_encoding2.cc: New unit test file.  Verifies that
	we don't read uninitialised data when we reach the end of the
	encoding input.
	* unit-tests/Makefile.am (unit_tests): Add test_encoding2.

	Avoid reading uninitialised input.
	* encoding.cc (encode_line): Encode the tail of the input without
	running over the end of in[].

	Handling of directories in get is mandatory in POSIX, so remove CONFIG_NO_DIRECTORY.
	* fileiter.cc: don't define CONFIG_NO_DIRECTORY
	(sccs_file_iterator::sccs_file_iterator): don't check CONFIG_NO_DIRECTORY
	* fileiter.h (class sccs_file_iterator): Likewise.
	* file.cc: don't define CONFIG_NO_DIRECTORY

2010-04-29  James Youngman  <jay@gnu.org>

	Delete unused file split.cc.
	* split.cc: Delete unused file.
	* Makefile.am (libcssc_a_SOURCES): Remove split.cc.

	Removed some unused code.
	* delta.cc (delta_main): Removed some unused '#if 0' code.
	* sf-write.cc (update_checksum): Likewise.
	* my-getopt.cc (reorder): Likewise.
	* file.cc (file_lock): Likewise.
	* sccsname.cc (valid_filename): Likewise.
	(create): Likewise.
	(sub_file): Likewise.
	(make_valid): Likewise.
	* seqstate.cc (decide_disposition): Likewise.
	* sf-get3.cc (authorised): Likewise.
	* sid.cc (invalid_range): Likewise.
	* what.cc (main): Likewise.

2010-04-28  James Youngman  <jay@gnu.org>

	Use STL to implement mylist<T>.
	* mylist.h (mylist): Implement mylist<T> as std::vector<T>.
	* delta-table.h (mylist<T>::select(i)): delegate to l[i].
	* unit-tests/test_mylist.cc: Drop the requirement that the
	mylist<T> implementation does not need there to be a T::T(const
	T&) copy constructor.
	* mylist.h (mylist): Implement mylist<T>::operator==(const
	mylist<T>&) const, which the unit tests need.

	Inline delta::removed(), for a small performance boost.
	* delta.h (class delta): Inline delta::removed().
	* sccs-delta.cc: Remove the non-inline version.

	Call strtoul to do the actual conversion, for a small performance boost.
	* sccsfile.cc (strict_atoul_idu): Call strtoul to perform the
	conversion itself.

	Generate a larger test file.
	* unit-tests/test_bigfile.cc (main): Increase the number of deltas
	in the produced file to about 30,000.

	Switch to using an STL data structure to represent the delta list.
	* delta-table.h (stl_delta_list): Reimplement delta_list using
	STL, reducing the time it takes to validate an SCCS file with
	30,000 deltas from 45s to 3s.   Separate the cssc_delta_table
	class from the data structure (a typedef delta_list) for looser
	coupling.  Retain the old data structure in the unused class
	mylist_delta_list.
	* delta-table.cc (delta_at_seq_exists): Delegate to the
	delta_list.
	(delta_at_seq): Likewise.
	(cssc_delta_table::~cssc_delta_table()): Since we no longer have a
	pointer member, the destructor no longer needs to do anything.
	(cssc_delta_table::build_seq_table): Push down into
	mylist_delta_list.
	(cssc_delta_table::add(const delta&)): Don't call update_highest
	since this work is done in delta_list::add(const delta&).
	(cssc_delta_table::update_highest): Remove obsolete function.
	* dtbl-prepend.cc (prepend): Don't call obsolete method
	update_highest, and use the correct (updated) type for the class
	member l (delta_list).

	Performance improvement for val.
	* sf-val.cc (check_loop_free): Use an O(N) method of
	consistency-checking the delta graph, rather than the old O(N^2)
	method.
	* delta.h (class delta): Make accessor functions id(), date(),
	user(), seq() and prev_seq() inline.

2010-04-27  James Youngman  <jay@gnu.org>

	Avoid touching missing sequence numbers in 'get'.
	* sf-get2.cc (get): Don't call delta_table->delta_at_seq() for
	sequence numbers for which delta_table->delta_at_seq_exists()
	returns false.

	When generating the test output file, set the checksum correctly.
	* unit-tests/test_bigfile.cc: Set the file's checksum correctly.

2010-04-26  James Youngman  <jay@gnu.org>

	Add a tool for creating (large) SCCS files.
	* unit-tests/Makefile.am: Build test_bigfile.
	* unit-tests/test_bigfile.cc: New test program; produces a large
	SCCS file.
	* sid.h (class sid): Make sid::sid(short,short,short,short)
	public, so that we can use it from one of the test programs.

2010-04-25  James Youngman  <jay@gnu.org>

	Allow the user to disable valgrind after running configure.
	* README (--enable-max-line-length): Document this configure
	option.  Explain how to make the other formats of manual (PDF,
	HTML).  Explain how to use CSSC_DISABLE_VALGRIND.
	* unit-tests/Makefile.am (TESTS_ENVIRONMENT): Invoke the unit
	tests via 'testwrapper.sh'.
	* unit-tests/testwrapper.sh.in: New file; used to invoke the unit
	tests.
	Make sure error tests don't pass if there is a valgrind problem;
	allow the user to disable valgrind.
	* tests/common/command-names: Allow the user to disable Valgrind
	by setting the environment variable CSSC_DISABLE_VALGRIND.
	* configure.ac: Make valgrind exit with status 10 when there is a
	problem, so tests which exercise failure cases in CSSC don't
	mistakenly pass when there is a valgrind problem.  Create
	unit-tests/testwrapper.sh from unit-tests/testwrapper.sh.in.

	Enable the y2k tests.
	* tests/Makefile.am (test-year-2000): Actually run the y2k tests.

	Use valgrind for y2k tests.
	* tests/year-2000/ext.sh: Use valgrind.
	* tests/year-2000/prs-y2k.sh: Likewise.

	Use valgrind for what tests.
	* tests/what/whatbasic.sh: Use valgrind.

	Use valgrind for val tests.
	* tests/val/valbasic.sh: Use valgrind.
	* tests/val/y2k.sh: Likewise.

	Use valgrind for unget tests.
	* tests/unget/exists.sh: Use valgrind.
	* tests/unget/output.sh: Likewise.

	Use valgrind for sact tests.
	* tests/sact/sactbasic.sh: Use valgrind.
	* tests/sact/sf513800.sh: Likewise.

	Use valgrind for rmdel tests.
	* tests/rmdel/basic.sh: Use valgrind.
	* tests/rmdel/exists.sh: Likewise.
	* tests/rmdel/edit.sh: Likewise.

	Use valgrind for prt tests.
	* tests/prt/default.sh: Use valgrind.
	* tests/prt/nodel.sh: Likewise.
	* tests/prt/exists.sh: Likewise.
	* tests/prt/reportmr.sh: Likewise.n

	Use valgrind for prs tests.
	* tests/prs/keywords.sh: Use valgrind.
	* tests/prs/format.sh: Likewise.
	* tests/prs/exists.sh: Likewise.
	* tests/prs/body.sh: Likewise.

	Use valgrind for large tests.
	* tests/large/admin.sh: Use valgrind.

	Use valgrind for get tests.
	* tests/get/annotate.sh: Use valgrind.
	* tests/get/a-option.sh: Likewise.
	* tests/get/branch.sh: Likewise.
	* tests/get/create.sh: Likewise.
	* tests/get/defsid.sh: Likewise.
	* tests/get/delta-summary.sh: Likewise.
	* tests/get/errorcases.sh: Likewise.
	* tests/get/excl_ig_1.sh: Likewise.
	* tests/get/excl_ig_2.sh: Likewise.
	* tests/get/gg_get_ix.sh: Likewise.
	* tests/get/included.sh: Likewise.
	* tests/get/middle-fail.sh: Likewise.
	* tests/get/no-sfile.sh: Likewise.
	* tests/get/only-one.sh: Likewise.
	* tests/get/optorder.sh: Likewise.
	* tests/get/removed-delta.sh: Likewise.
	* tests/get/sep_subst.sh: Likewise.
	* tests/get/sf111140.sh: Likewise.
	* tests/get/sf479916.sh: Likewise.
	* tests/get/sf664900.sh: Likewise.
	* tests/get/sf865422.sh: Likewise.
	* tests/get/sid-select.sh: Likewise.
	* tests/get/sid-select2.sh: Likewise.
	* tests/get/subst.sh: Likewise.
	* tests/get/t-option.sh: Likewise.

	Use valgrind for delta tests.
	* tests/delta/basic.sh: Use valgrind.
	* tests/delta/errorcase.sh: Likewise.
	* tests/delta/n-option.sh: Likewise.
	* tests/delta/options.sh: Likewise.
	* tests/delta/nulldelta.sh: Likewise

	Use valgrind for binary file tests, sccs tests and cdc tests.
	* tests/binary/auto.sh: Use valgrind.
	* tests/binary/binbasic.sh: Likewise.
	* tests/binary/eightbit.sh: Likewise.
	* tests/binary/seeking.sh: Likewise.
	* tests/bsd-sccs/sf595594.sh: Likewise.
	* tests/bsd-sccs/driver-basic.sh: Likewise.
	* tests/bsd-sccs/delsfile.sh: Likewise.
	* tests/cdc/1general.sh: Use valgrind.
	* tests/cdc/2comment.sh: Likewise.
	* tests/cdc/3MRs.sh: Likewise.
	* tests/cdc/4order.sh: Likewise.

	Support running the regression tests under valgrind.
	* configure.ac: Allow the user to specify --without-valgrind.
	* tests/admin/admin-hz.sh: Use valgrind.
	* tests/admin/abspath.sh: Likewise.
	* tests/admin/comment.sh: Likewise.
	* tests/admin/flags.sh: Likewise.
	* tests/admin/hardlinks.sh: Likewise.
	* tests/admin/i-option.sh: Likewise.
	* tests/admin/init-mr.sh: Likewise.
	* tests/admin/locks.sh: Likewise.
	* tests/admin/r-option.sh: Likewise.
	* tests/admin/t-option.sh: Likewise.
	* tests/admin/users.sh: Likewise.
	* tests/admin/y-flag.sh: Likewise.
	* tests/common/command-names: Define vg_... versions of $admin,
	$get, etc.  These invoke the named command under valgrind (it
	would be too slow to invoke everything under valgrind).
	* tests/Makefile.am (VALGRIND): substitute this variable and
	export it to the tests.

	Run the unit tests under valgrind.
	* configure.ac: Check for the presence of valgrind.  If we find
	it, use valgrind -q --trace-children=yes.

	* unit-tests/Makefile.am (TESTS_ENVIRONMENT): Run the tests under
	valgrind.
	* tests/README: Explain that these are regression tests and point
	to the unit tests.

	Remove explicit template instantiations.
	* admin.cc: Remove explicit template instantiations.
	* cap.cc: Likewise.
	* cdc.cc: Likewise.
	* delta.cc: Likewise.
	* dtbl-prepend.cc: Likewise.
	* fileiter.cc: Likewise.
	* get.cc: Likewise.
	* prs.cc: Likewise.
	* prt.cc: Likewise.
	* rel_list.cc: Likewise.
	* rmdel.cc: Likewise.
	* sact.cc: Likewise.
	* sccs-delta.cc: Likewise.
	* sccsfile.cc: Likewise.
	* sf-prs.cc: Likewise.
	* unget.cc: Likewise.
	* val.cc: Likewise.
	* filediff.cc: Trimmed some blank lines.
	* sf-kw.cc: Likewise.

	Isolate directory-handling logic in fileiter.cc.
	* fileiter.cc: Move the complex logic around trying to include
	<dirent.h> out of fileiter.h and into fileiter.cc.
	* fileiter.h: Make the corresponding deletion and remove the
	#error trap which demanded that <cofnig.h> had been included.
	* delta.cc: Remove the now-obsolete explanatory comment.
	* file.cc: Move is_directory into fileiter.cc, since it also needs
	opendir.

	Produce a compile failiure when config.h was not included before
	fileiter.h.  Doing things the other way around produces a
	regression test failure.
	* fileiter.h: Force a compilation failure if config.h was not included.
	* delta.cc: Include config.h before fileiter.h.

	Remove some obsolete preprocessor macros.
	* cssc.h (CONFIG_WAIT_IS_A_USELESS_MACRO): Remove obsolete macro.
	* sysdep.h: Assume wait is declared in sys/wait.h.
	* cssc.h (CONFIG_DJGPP): Remove obsolete macro.

	Remove some obsolete manual declarations of functions.
	* file.cc: Don't manually declare stat.  Likewise for getpwuid.
	* cssc.h: Don't undefine the TESTING macro; nobody defines it
	either.  Don't undefine CONFIG_DECLARE_STAT,
	CONFIG_DECLARE_GETPWUID, CONFIG_DECLARE_TIMEZONE,
	CONFIG_DECLARE_TZSET,


	* sysdep.h: Don't manually declare fdopen.

	Include cssc headers where they are needed, not in cssc.h.
	* my-getopt.cc: Include quit.h but not cssc.h.
	* linebuf.cc: Include ioerr.h.
	* writesubst.cc: Likewise.
	* sccsfile.cc: Likewise.
	* sf-add.cc: Likewise.
	* sid.cc: Likewise.
	* fileiter.cc: Include file.h and quit.h.
	* file.cc: Include quit.h and ioerr.h.
	* sccsdate.h: Likewise.
	* sf-write.cc: Likewise.
	* rel_list.cc: Likewise.
	* cdc.cc: Include file.h.
	* sf-csc.cc: Likewise.
	* sccsname.cc: Likewise.
	* sf-get3.cc: Likewise.
	* sf-delta.cc: Likewise.
	* val.cc: Likewise.
	* unget.cc: Likewise.
	* rmdel.cc: Likewise.
	* delta.cc: Likewise.
	* filediff.cc: Likewise.
	* pf-add.cc: Likewise.
	* pf-del.cc: Likewise.
	* sf-admin.cc: Likewise.
	* prompt.cc: Likewise.
	* fdclosed.cc: Include defaults.h.
	* run.cc: Include quit.h

2010-04-24  James Youngman  <jay@gnu.org>

	Include system headers where they are needed, not in cssc.h.
	* except.h: Add a multiple-include guard.  #include <cstdlib>.
	* environment.cc: #include <cstdlib>, <cstring>, <cerrno>
	* bodyio.cc: #include <cstring>, ioerr.h, file.h.
	* fileiter.cc: Likewise.
	* linebuf.cc: Likewise.
	* prompt.cc: Likewise.
	* sccsdate.cc: Likewise.
	* fatalsig.cc: #include <cstdlib>
	* filepos.h: #include <cerrno>.
	* quit.cc: #include <cerrno> instead of <errno.h>.  Include
	<cstring> also.
	* cssc.h: Don't include standard headers: stdio.h, stdlib.h,
	stddef.h, string.h, ctype.h, errno.h.
	Unconditionally include <config.h>.
	Don't include quit.h or file.h.

	Further include-what-you-use fixes.
	* delta.cc: Include cleanup.h, and ioerr.h.  Include delta.h earlier.

	Run the uu(en|de)coding self-test as part of the unit tests.
	* bodyio.h: Move a couple of inline functions to here (out of
	encoding.cc) so that I can use them in the self-test.
	* encoding.cc: Make the corresponding deletion.  Move the test
	code itself into test_encodingcc.
	* unit-tests/test_encoding.cc: Moved the encoding self-test to
	here instead of leaving it in encding.c, where it was not used.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_encoding.
	Also define test_encoding_SOURCES.  Modify the usage semantics of
	the test program so that the default is to run the self-test.

	Avoid redundant inclusion of cssc.h, sccsfile.h, delta.h.
	* dtbl-prepend.cc: Don't include cssc.h or sccsfile.h, since we
	don't use them.
	* delta-table.cc: Avoid including cssc.h, sccsfile.h, delta.h
	since we don't use them.

	Various include-what-you-use fixes.
	* delta-iterator.cc: Don't include cssc.h, sccsfile.h or delta.h,
	since we don't use them.  Do include cssc-assert.h, since we do
	use that.
	* delta-iterator.h: add forward declarations of cssc_delta_table
	and delta.
	* bodyio.cc: Include what you use; include bodyio.h first.
	* bodyio.h: Include <cstdio>.
	* canonify.cc: Don't include cssc.h.  Include sccsname.h first.
	Include file.h.
	* cleanup.h: Move class cleanup into this separate file (out of quit.h).
	* quit.h: Don't declare class cleanup (we moved it).
	* filelock.h: Include cleanup.h.
	* sccsname.h: Include mystring.h and filelock.h.
	* cssc.h: Move declaration of split_filename into file.h.
	* file.h: Declare split_filename.
	* pfile.h: Include ioerr.h.

	Include what you use; include sid_list.h first.
	* unit-tests/test_sid_list.cc: Include only what we use; don't
	include cssc.h or sid.h.

	Include what you use; make it possible to include quit.h first or
	sccsdate.h first.
	* sccsdate.h: Include <cstdio> and mystring.h.
	* quit.h: Include cssc-assert.h (for ASSERT).
	* unit-tests/test_sccsdate.cc: Include sccsdate.h first.

	Include what you use; make it possible to use class relvbr by
	including only relvbr.h.
	* unit-tests/test_relvbr.cc: Include relvbr.h first, don't include
	release.h or sid.h.
	* relvbr.h: Include <cstdio>.

	Include what you use; make it possible to use class release by
	including only release.h and release_list by including only
	rel_list.h.
	* release.h: Include <cstdio>.
	* unit-tests/test_release.cc: Don't include cssc.h.
	* unit-tests/test_rel_list.cc: Likewise for rel_list.h.

	Include what you use; include delta-table.h first in the unit test.
	* unit-tests/test_delta-table.cc: Include delta-table.h first.

	Include what you use; make it possible to use delta by
	including only delta.h.
	* delta.h: Include sid.h, sccsdate.h, mystring.h, mylist.h.
	Move typedef of seq_no to here from cssc.h
	* cssc.h: Move typesef of seq_no from here to delta.h.
	* sccsfile.h: Include delta.h.
	* seqstate.h: Likewise.
	* unit-tests/test_delta.cc: Include delta.h first.  Don't include cssc.h.

	Include what you use; make it possible to use range_list<T> by
	including only sid_list.h.
	* unit-tests/test_sid.cc: Include sid.h first.   Don't include cssc.h.
	* sid_list.h: Include cstdio, cstring, and qui.t.h (for ctor_fail).
	* sid.h: Include mystring.h.

	Include what you use; make it possible to use stack<T> by
	including only stack.h.
	* unit-tests/test_stack.cc: Include what you use: include
	"stack.h" but not "cssc.h".

	Include what you use; make it possible to use myset<T> by
	including only myset.h.
	* unit-tests/test_myset.cc: Include myset.h first.
	* myset.h: Include mylist.h since we use mylist<T>.

	Include what you use; make it possible to use mylist<> by
	including only mylist.h.
	* cssc-assert.h: New file; defines the ASSERT macro.
	* quit.h: Delete old definition of ASSERT and declaration of
	assert_failed.
	* mylist.h: Include cssc-assert.h to define ASSERT, and
	<cstdlib> for NULL.
	* unit-tests/test_mylist.cc: Don't include "cssc.h" any more.
	* quit.cc: Include cssc-assert.h for ASSERT and declaration of assert_failed.
	* fatalsig.cc: Include cssc-assert.h since we use ASSERT.
	* file.cc: Likewise.
	* filediff.cc: Likewise.
	* fnsplit.cc: Likewise.
	* linebuf.cc: Likewise.
	* sccsdate.cc: Likewise.
	* sccsname.cc: Likewise.
	* sid.h: Likewise.
	* stack.h: Likewise.

	Move CONFIG_LIST_CHUNK_SIZE from cssc.h to mylist.h.
	* cssc.h (CONFIG_LIST_CHUNK_SIZE): Move into mylist.h.
	* mylist.h (mylist): Relocate CONFIG_LIST_CHUNK_SIZE here from
	cssc.h, but convert it to an enum.

	Add/correct some comments.
	* delta-table.cc: Correct the comment giving the location of
	dtbl-prepend.cc.
	* delta-table.h (class cssc_delta_table): Add a comment explaining
	why cssc_delta_table::delta_at_seq_exists and
	cssc_delta_table::delta_at_seq are not const.

	Add unit tests for delta-table.h.
	* unit-tests/test_delta-table.cc: New file, contains unit tests
	for delta-table.h.
	* unit-tests/Makefile.am (test_delta_table_SOURCES): New
	variable.
	(check_PROGRAMS): Add test_delta-table.
	* unit-tests/TODO.txt: Remove delta-table.h; there are tests for
	it now.

	Cosmetic fixes for stack.h.
	* stack.h: Remove obsolete version comment.
	(stack::operator=): Correct indentation.

	Make the data members of struct delta private.
	* delta.h (delta): Make all the data members private and add
	accessor and mutator methods.  Rename the data members to have a
	trailing underscore.
	(delta::id): Accessor for id_.
	(delta::set_id): Mutator for id_.
	(delta::date): Accessor for date_.
	(delta::set_date): Mutator for date_.
	(delta::user): Accessor for user_.
	(delta::set_user): Mutator for user_.
	(delta::seq): Accessor for seq_.
	(delta::set_seq): Mutator for set_seq.
	(delta::prev_seq): Accessor for prev_seq_.
	(delta::set_prev_seq): Mutator for prev_seq_.
	(delta::inserted): Accessor for inserted_.
	(delta::set_inserted): Mutator for inserted_.
	(delta::deleted): Accessor for deleted_ (there is no mutator).
	(delta::unchanged): Accessor for unchanged (there is no mutator).
	(delta::set_idu): Set inserted_, deleted_, unchanged_ all at once.
	(delta::increment_inserted): Increments inserted_.
	(delta::increment_deleted): Increments deleted_.
	(delta::increment_unchanged): Increments unchanged_.
	(delta::get_included_seqnos): Accessor for included_.
	(delta::get_excluded_seqnos): Accessor for excluded_.
	(delta::get_ignored_seqnos): Accessor for ignored_.
	(delta::has_includes): Accessor for have_includes_.
	(delta::set_has_includes): Mutator for have_includes_.
	(delta::add_include): Add an item to included_.
	(delta::has_excludes): Accessor for have_excludes_.
	(delta::set_has_excludes): Mutator for have_excludes_.
	(delta::add_exclude): Add an item to excluded_.
	(delta::has_ignores): Accessor for have_ignores_.
	(delta::set_has_ignores): Mutator for have_ignores_.
	(delta::add_ignore): Add an item to ignored_.
	(delta::mrs): Accessor for mrs_.
	(delta::set_mrs): Mutator for mrs_.
	(delta::add_mr): Add an item to mrs_.
	(delta::comments): Accessor for comments_.
	(delta::set_comments): Mutator for comments_.
	(delta::add_comment): Add an item to comments_.
	* unit-tests/test_delta.cc (DeltaTest.Constructor): Modify unit
	test to use the new accessor methods.
	(DeltaTest.Assignment): Likewise.
	(DeltaTest.Mutators): New unit test for the new mutator methods.
	* sccs-delta.cc (delta::operator=): Use the new member names.
	(removed): Likewise.
	* delta-table.cc: Use the new accessor functions.
	* sccsfile.cc: Likewise.
	* writesubst.cc: Likewise.
	* sf-add.cc: Likewise.
	* sf-admin.cc: Likewise.
	* sf-write.cc: Likewise.
	* sf-get.cc: Likewise.
	* sf-get2.cc: Likewise.
	* sf-get3.cc: Likewise.
	* sf-delta.cc: Likewise.
	(add_delta): Instead of zeroing inserted/deleted/unchanged counts,
	simply verify that the constructor did that.
	* sf-cdc.cc : Use the new accessor functions.
	(process_mrs): Since delta no longer offers access to a mutable
	list of MRs, modify process_mrs to return the updates list of MRs.
	The deleted flag which used to be the return value is now an
	output parameter.
	(cdc): Change the type of mrs_deleted from int to bool.
	* sf-prs.cc (print_delta): Use the new accessor functions.  Also
	fix a typo in a comment.
	(prs): Use the new accessor functions.
	* sf-prt.cc (cutoff::excludes_delta): Use the new accessor functions.
	(cutoff::print): Likewise.
	(sccs_file::prt): Likewise.
	* sf-rmdel.cc (sccs_file::rmdel): Use the new accessor functions.
	* sf-val.cc (sccs_file::validate_seq_lists): Use the new accessor functions.
	(sccs_file::validate_isomorphism): Likewise.
	(validate): Likewise.
	* unit-tests/TODO.txt: delta.h has tests now, remove it from the
	TODO list.

2010-04-23  James Youngman  <jay@gnu.org>

	Rename delta::type to delta_type, make it private, validate it.
	* delta.h (struct delta): Rename the 'type' member to 'delta_type'
	and make it private, to support better data validation.
	(delta::delta()): Initialise delta_type to 'D' rather than leaving
	it uninitialised.  Also initialise members id, seq and prev_seq.
	(delta::delta(...): Set have_includes and have_excludes to true if
	the relevant list is starting off non-empty.
	(delta::get_type, delta::set_type): New accessor/mutator methods.
	* unit-tests/test_delta.cc: Verify that have_includes and
	have_excludes are true if the delta was constructed with
	(respectively) includes or excludes.
	(DeltaDeathTest.Includes): verify that invalid delta types are
	diagnosed.
	(delta::is_valid_delta_type): new method, validates delta::delta_type.
	* sf-rmdel.cc (rmdel): Use the accessor method to access
	delta::delta_type.
	* sccsfile.cc (read_delta): Delegate delta type validation to
	delta::is_valid_delta_type.
	* sccs-delta.cc (delta::operator=): delta::type renamed to
	delta::delta_type.
	(delta::removed): Likewise.
	* sf-prs.cc (print_delta): Likewise.
	* sf-prt.cc (prt): Likewise.
	* sf-write.cc (write_delta): Likewise.
	* sf-val.cc (validate): There is no longer a need to validate
	delta::type, as this field is validater by the delta(...)
	constructors and by delta::set_type().

2010-04-22  James Youngman  <jay@gnu.org>

	Add a unit test for delta.h.
	* unit-tests/test_delta.cc: New file.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_delta.

	Implement equality test for mylist<T>.
	* mylist.h (operator==): Implement operator==.
	* unit-tests/test_mylist.cc (MylistTest): Add unit tests for
	operator==.

	Remove some obsolete comments.
	* mylist.h: Remove a spurious extra "Local Variables" comment.

	* sid_list.h: Remove some obsolete (and long commented-out) code.
	* relvbr.h (class relvbr): Likewise.
	* release.h (class release): Likewise.

	Finish test_sccsdate.cc.
	* unit-tests/test_sccsdate.cc: Added unit tests for the remaining
	public methods of sccs_date.
	* unit-tests/TODO.txt: sccsdate.h has unit tests now, remove it
	from the TODO list.

	Remove core files for "make distclean".
	* unit-tests/Makefile.am (DISTCLEANFILES): Remove core files.

	* AUTHORS: Mention that googletest/CONTRIBUTORS enumerates the
	contributors to the Google C++ Testing Framework.

	* googletest/Makefile.am (EXTRA_DIST): Distribute README.cssc.
	* unit-tests/Makefile.am (EXTRA_DIST): Distribute TODO.txt.

	Add TODO list for unit tests we need to write.
	* unit-tests/TODO.txt: New file; a working list of what unit tests
	are still needed.

	Add unit tests for sccsdate.h.
	* unit-tests/test_sccsdate.cc: New file.
	* unit-tests/Makefile.am (test_sccsdate_SOURCES): Add
	test_sccsdate.cc.
	(check_PROGRAMS): Add test_sccsdate.

	Explain what the googletest directory is and how to run unit tests.
	* README (Testing): Expand to include a description of the unit
	tests and how to run them.
	* docs/borrowed-files.txt: Mention googletest/*.  Also remove tghe
	out-of-date information about the last update to the files which
	autoconf updates.
	* googletest/README.cssc: Add README file explaining the
	relationship between the code in this directory and the rest of
	CSSC.

2010-04-21  James Youngman  <jay@gnu.org>

	Add unit test cases for ASSERT failures.
	* unit-tests/test_mylist.cc (MylistDeathTest): Various unit test
	cases for ASSERT failures.
	* unit-tests/test_sid.cc (SidTest.Successor): Verify that the null
	SID's successor is 1.1.

	Unit test sid_list::merge and sid_list::remove
	* unit-tests/test_sid_list.cc: Enable unit tests for
	sid_list::merge and sid_list::remove.  Include rl-merge.h since
	that file defines these methods.

	Unit test release_list::merge and release_list::remove
	* unit-tests/test_rel_list.cc: Add unit tests for
	release_list::merge and release_list::remove.

	Move rl-merge.cc into libcssc.a
	* Makefile.am (libcssc_a_SOURCES): Move rl-merge.cc into the library.
	(get_SOURCES): Remove rl-merge.cc.
	(admin_SOURCES): Likewise.
	* rel_list.h: Remove some unnecessary blank lines.

	Add unit test for rel_list.h
	* unit-tests/test_rel_list.cc: New unit test.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_rel_list.
	(test_rel_list_SOURCES): Add test_rel_list.cc.

	Add unit test for sid_list.h
	* unit-tests/test_sid_list.cc: New unit test; tests sid_list.h.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_sid_list.
	(test_sid_list_SOURCES): Add test_sid_list.cc.

2010-04-20  James Youngman  <jay@gnu.org>

	Add unit test for release.h.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_release.
	(test_release_SOURCES): Add test_release.cc.
	* unit-tests/test_release.cc: New unit test.

	Add unit test for relvbr.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_relvbr.
	(test_relvbr_SOURCES): Add test_relvbr.cc.
	* unit-tests/test_relvbr.cc: New unit test.

	Add unit test for sid.h.
	* unit-tests/test_sid.cc: New unit test.
	* unit-tests/Makefile.am (test_sid_SOURCES): Add this test.
	(check_PROGRAMS): Likewise.

	* unit-tests/Makefile.am (TESTS): don't duplicate the contents of
	$(check_PROGRAMS), just use that variable.
	(LDADD): Add ../libcssc.a.
	(test_mylist_SOURCES): Don't list object files in libcssc.a.
	(test_myset_SOURCES): Don't list object files in libcssc.a.

	New unit test for myset<T>.
	* unit-tests/Makefile.am (check_PROGRAMS): Add test_myset.
	(LDADD): Just use one LDADD variable for all unit tests.
	* unit-tests/test_myset.cc: New unit test.

	Add a unit test.
	* unit-tests/test_mylist.cc: New file; unit test for mylist<T>.
	* unit-tests/Makefile.am: New file.
	* configure.ac: Call AC_LIBTOOL.  Include
	googletest/m4/acx_pthread.m4.  Add --with-pthreads so that our
	main build and googletest libraries are compatible.  Add
	unit-tests/Makefile to AC_CONFIG_FILES.
	* autogen.sh: Run libtoolize in the top level and the googletest
	directories.
	* Makefile.am (SUBDIRS): Add unit-tests.

	Include <errno.h> unconditionally where we need it.
	* admin.cc: Include <errno.h> instead of "err_no.h".
	* pfile.cc: Likewise.
	* cssc.h: Likewise.
	* file.cc: Likewise.
	* get.cc: Likewise.
	* run.cc: Likewise.
	* quit.cc: Likewise.
	* sccsfile.cc: Likewise.
	* sf-delta.cc: Likewise.
	* what.cc: Likewise.
	* err_no.h: Remove useless file.
	* Makefile.am (noinst_HEADERS): Remove err_no.h.

	Instead of linking all objects explicitly, use a library.
	* Makefile.am (noinst_LIBRARIES): Build new library libcssc.a.
	(libcssc_a_SOURCES): list the source files for the library.
	(common_sources): Remove unused variable.
	(sname_srcs): Likewise.
	(sfile_srcs): Likewise.
	(mod_srcs): Likewise.
	(moddelta_srcs): Likewise.
	(newdelta_srcs): Likewise.
	(get_LDADD): Add the new library libcssc.a.
	(delta_LDADD): Likewise.
	(admin_LDADD): Likewise.
	(prs_LDADD): Likewise.
	(what_LDADD): Likewise.
	(unget_LDADD): Likewise.
	(sact_LDADD): Likewise.
	(cdc_LDADD): Likewise.
	(rmdel_LDADD): Likewise.
	(prt_LDADD): Likewise.
	(val_LDADD): Likewise.
	(what_SOURCES): Remove object files which are now in libcssc.a.
	(sact_SOURCES): Likewise.
	(unget_SOURCES): Likewise.
	(prt_SOURCES): Likewise.
	(prs_SOURCES): Likewise.
	(get_SOURCES): Likewise.
	(rmdel_SOURCES): Likewise.
	(cdc_SOURCES): Likewise.
	(admin_SOURCES): Likewise.
	(delta_SOURCES): Likewise.
	(val_SOURCES): Likewise.

2010-04-19  James Youngman  <jay@gnu.org>

	Actually configure in and recurse into the googletest directory.
	* configure.ac: Add googletest in the call to AC_CONFIG_SUBDIRS.
	* autogen.sh: Run libtoolize in googletest.
	* Makefile.am (SUBDIRS): Add googletest.

	Implement myset<T> with std::set<T>.
	* myset.h (myset): Switch to implementing with std::set.  This
	should reduce the O(N) operations to O(log(N)).

	Use the standard string class.
	* mystring.h: Assume the availability of the <string> header, so
	that mystring is always a typedef for std::string.
	* mystring.cc: Delete.
	* Makefile.am (sname_srcs): Delete mystring.cc.

	Assume support for the std namespace.
	* configure.ac: Don't check for the 'std' namespace.  Don't
	#define STD_NAMESPACE.
	* mystring.h: Don't use STD_NAMESPACE.

2010-04-18  James Youngman  <jay@gnu.org>

	Assume exception support.
	* configure.ac: Don't detect exception support, assume it.
	* admin.cc: Require exception support.
	* bodyio.cc: Likewise.
	* cdc.cc: Likewise.
	* cssc.h: Likewise.
	* delta.cc: Likewise.
	* except.h: Likewise.
	* get.cc: Likewise.
	* pf-del.cc: Likewise.
	* prs.cc: Likewise.
	* prt.cc: Likewise.
	* quit.cc: Likewise.
	* rmdel.cc: Likewise.
	* sact.cc: Likewise.
	* sf-kw.cc: Likewise.
	* unget.cc: Likewise.
	* val.cc: Likewise.

	Remove RCS keywords.
	* admin.cc: Remove RCS keywords (since we're using git now).
	* bodyio.h: Likewise.
	* cap.cc: Likewise.
	* cdc.cc: Likewise.
	* cssc.h: Likewise.
	* delta-iterator.cc: Likewise.
	* delta-iterator.h: Likewise.
	* delta-table.h: Likewise.
	* delta.cc: Likewise.
	* delta.h: Likewise.
	* dtbl-prepend.cc: Likewise.
	* environment.cc: Likewise.
	* fatalsig.cc: Likewise.
	* fdclosed.cc: Likewise.
	* file.cc: Likewise.
	* filediff.cc: Likewise.
	* fileiter.cc: Likewise.
	* filepos.h: Likewise.
	* get.cc: Likewise.
	* l-split.cc: Likewise.
	* linebuf.cc: Likewise.
	* my-getopt.cc: Likewise.
	* mystring.cc: Likewise.
	* mystring.h: Likewise.
	* pf-add.cc: Likewise.
	* pf-del.cc: Likewise.
	* pfile.cc: Likewise.
	* pfile.h: Likewise.
	* prompt.cc: Likewise.
	* prs.cc: Likewise.
	* prt.cc: Likewise.
	* quit.cc: Likewise.
	* rel_list.cc: Likewise.
	* rl-merge.cc: Likewise.
	* rmdel.cc: Likewise.
	* run.cc: Likewise.
	* sact.cc: Likewise.
	* sccs-delta.cc: Likewise.
	* sccsdate.cc: Likewise.
	* sccsfile.cc: Likewise.
	* sccsfile.h: Likewise.
	* sccsname.cc: Likewise.
	* seqstate.h: Likewise.
	* sf-add.cc: Likewise.
	* sf-admin.cc: Likewise.
	* sf-cdc.cc: Likewise.
	* sf-chkid.cc: Likewise.
	* sf-delta.cc: Likewise.
	* sf-get.cc: Likewise.
	* sf-get2.cc: Likewise.
	* sf-get3.cc: Likewise.
	* sf-prs.cc: Likewise.
	* sf-prt.cc: Likewise.
	* sf-rmdel.cc: Likewise.
	* sf-val.cc: Likewise.
	* sf-write.cc: Likewise.
	* showconfig.cc: Likewise.
	* sid.cc: Likewise.
	* sid_list.h: Likewise.
	* split.cc: Likewise.
	* unget.cc: Likewise.
	* val.cc: Likewise.
	* what.cc: Likewise.
	* writesubst.cc: Likewise.

	Import gnulib modules for various standard headers.
	* bodyio.cc: Remove HAVE_STDIO_H guards for various standard
	headers which gnulib will provide/adjust.
	* bootstrap.conf: Likewise.
	* canonify.cc: Likewise.
	* configure.ac: Likewise.
	* cssc.h: Likewise.
	* environment.cc: Likewise.
	* err_no.h: Likewise.
	* fdclosed.cc: Likewise.
	* file.cc: Likewise.
	* filediff.cc: Likewise.
	* filepos.h: Likewise.
	* get.cc: Likewise.
	* my-getopt.cc: Likewise.
	* sccsfile.cc: Likewise.
	* sf-chkid.cc: Likewise.
	* sf-delta.cc: Likewise.
	* sf-prt.cc: Likewise.
	* showconfig.cc: Likewise.
	* sysdep.h: Likewise.
	* what.cc: Likewise.
	* gnulib-tests/.gitignore: Ignore various files imported by gnulib.
	* lib/.gitignore: Likewise.

	Adopt the use of the "bootstrap" command.
	* bootstrap: New file (copied from coreutils).
	* bootstrap.conf: New file (adapted from coreutils; no modules are
	imported just now).
	* autogen.sh: Remove (obsoleted by bootstrap).
	* gnulib-tests/.gitignore: New file.
	* configure.ac: Use AC_CONFIG_AUX_DIR to select build-aux as the
	aux dir.
	* README-hacking: New file (copied from coreutils).
	* .gitmodules: New file.
	* .gitignore: New file.
	* docs/texinfo.tex: Remove.
	* docs/Makefile.am (EXTRA_DIST): Remove texinfo.tex, which is not
	in this directory any more.

	* NEWS: Move on from CSSC-1.2.0 to CSSC-1.2.1-git.
	* configure.ac: Likewise.

2009-04-11  James Youngman  <jay@gnu.org>

	* configure.ac, NEWS: Prepare for release of version 1.2.0.

	* INSTALL: Remove from the source repository; allow Automake to
	use its own copy.
	* missing: Likewise.
	* install-sh: Likewise.
	* docs/texinfo.tex: Likewise

	* configure.ac (AC_CHECK_DECL_IN_HEADER): Quote the definition of
	the function.
	(AC_CHECK_GLOBAL): Likewise.

2009-01-03  Alain Williams <addw@phcomp.co.uk> (tiny change)

	* auxfiles/CSSC.spec.in: Reflect changes in the RPM spec
	file format and requrements since 2003.
	(License): Changed "Copyright" tag to "License".
	(%makeinstall): Do not make the /usr/sccs symbolic link.
	(%files): Add various binaries to %files.

2008-01-18  James Youngman  <jay@gnu.org>

	* configure.ac: Prepare for release of version 1.1.1.
	* NEWS: Likewise.
	* docs/cssc.texi: Updated copyright year.  Bumped the revision
	number and updated the VERSION macro.  Updated the "UPDATED"
	variable to the current time.

	* version.h (version): Don't show the RCS ID of the main program
	in the version output; just keep the existing CSSC release number.

	* showconfig.cc: Updated copyright notice to GPL3.
	 (show_system_line_max): Removed awkward line break.

2008-01-07  James Youngman  <jay@gnu.org>

	* sf-val.cc (validate_isomorphism): Warn if a delta has two
	derived deltas on the trunk.

	* release.h: Fixed typo in the file header comment.

	* delta-table.h (class cssc_delta_table): Don't initialise sid
	objects from NULL.

	* fileiter.cc (sccs_file_iterator): Ignore subdirectories, even if
	they do start with "s.".
	* file.cc (is_directory): New function.
	* file.h: Declare is_directory.

2008-01-06  James Youngman  <jay@gnu.org>

	* sf-delta.cc (add_delta): Removed obsolete "XXX" comments.
	* sf-prs.cc (get): Likewise.
	* cdc.cc (main): Avoid initialising a sid object by assignment
	from NULL, because it's not quite clear what that is intended to
	do.  Instead, use an assignment from sid::null_delta().
	* sid.cc (null_sid): Implement the function.
	* sid.h (class sid): Declare sid::null_sid().
	* get.cc (main): Avoid initialising a sid object by assignment
	from NULL.
	* delta.cc (delta_main): Likewise.
	* val.cc (main): Likewise.
	* rmdel.cc (main): Likewise.
	* unget.cc (main): Likewise.
	* sccsfile.cc (sccs_file::sccs_file): Likewise.
	* sf-admin.cc (admin): Likewise.
	* prs.cc (main): Likewise; also disable the -R option.

	* sf-val.cc (validate_isomorphism): Extend the comment setting out
	the design for this method.  The method is still unimplemented,
	though.

	Various tidyings-up of TODO items.
	* prompt.cc (prompt_user): Now that this code is well tested,
	increase the allocation chunk size and remove the TODO item
	reminding me to do that.   Use a small _initial_ chunk size to
	make sure that at least one reallocation takes place, for adequate
	code coverage.
	* mystring.cc: Removed TODO comments which actually don't need to
	be done.

	* sf-admin.cc (admin): If all releases are locked ("admin -fla")
	and the user tries to unlock just one release, issue an error
	message (instead of just ignoring the attempt).
	* docs/cssc.texi (admin): Explain the (already existing)
	restriction and how to get around it.

	Implement "get -l", "get -L" and "get -lp".
	* get.cc (main): Added options -l and -L for get.
	(main): Print the name of the s-file before the delta summary (for
	-l) and the gotten body (for -p).
	* tests/get/delta-summary.sh: New tests for the -L, -l and -lp
	options of get.
	* sccsname.h (class sccs_name): new method lfile(), returning the
	name of the l-file.
	* sccsname.cc (sccs_name::lfile): Implement it.
	* sccsfile.h (sccs_file::get): Take a parameter summary_file,
	being a FILE* pointer to which we should emit a delta summary if
	it's not NULL.
	* sf-get2.cc (sccs_file::get): Add the new summary_file parameter
	and, if it's not NULL, emit a delta summary.
	* docs/cssc.texi (get options): Document the options -l, -lp and
	-L.
	(Filenames): Mention the l-file.
	(prt usage): Mention that the delta summary file contains much the
	same information.
	* NEWS: Mention this change.

2008-01-05  James Youngman  <jay@gnu.org>

	* sf-prt.cc (sccs_file::prt): Fixed typo in comment.

	* NEWS: Updated with changes for the early 0.02 releases by
	diffing the unpacked tar archives.

2007-12-19  James Youngman  <jay@gnu.org>

	* what.cc: String constants chould be const.

	* sf-val.cc (validate_substituted_flags_list): Added missing
	return statement.

	* sccsfile.cc (sccs_file): Specify the member initialisers in the
	order they will actually be executed.

	* linebuf.h (class cssc_linebuf): Make buflen size_t rather than
	int.

	* linebuf.cc (CONFIG_LINEBUF_CHUNK_SIZE): Avoid signed/unsigned
	issues by using an unsigned constant.
	(read_line): Ditto for constants in this function.

	* file.cc (set_file_mode): Add missing return statement.

	* bsd/sccs.c (makefile): Avoid signed/unsigned issues by using
	size_t to index into strings, rather than ints.
	(form_gname): Ditto.
	(gstrcat): Ditto for parameter 'length'.
	(gstrncat): Ditto for parameter 'length'.
	(gstrcpy): Ditto for parameter 'length'.
	(gstrncat): Ditto for parameter 'length'.

2007-12-18  James Youngman  <jay@gnu.org>

	* bsd/sccs.c (FBUFSIZ): Make unsigned.
	(cleanup_environment): Removed unused variable 'pfail'.
	(main): Avoid spurious warning about lack of return statement, by
	putting in return statements instead of calls to exit.

	* uu_decode.c: #include <sys/stat.h>, for a declaration of chmod.
	(test_decode): Avoid compiler warnign about unused argument 'arg'.
	(test_all): Likewise.

	* user.c: #include <stdlib.h> for a declaration of qsort and malloc.
	(do_groups): Removed unused variable 'duplicates'.

	* realpwd.cc (main): Avoid compiler warning about unuised argc, argv.
	* seeker.c (do_unbuffered): Avoid compiler warning about unused
	argument NAME.
	(do_blockbuffered): Likewise
	(do_linebuffered): Likewise
	(do_nothing): Likewise

2007-12-17  James Youngman  <jay@gnu.org>


	* docs/cssc.texi (Missing Features):  Updated URLs to point to the
	GNU web site instead of SourceForge.
	* README: Likewise
	* auxfiles/CSSC.spec.in (URL): Likewise
	* docs/URLs: Likewise
	* docs/patches.txt: Likewise
	* docs/BUGS: Likewise

	Migrate to GPL version 3.
	* COPYING, admin.cc, autogen.sh, bodyio.cc, bodyio.h, canonify.cc,
	cap.cc, cdc.cc, configure.ac, cssc.h, defaults.h,
	delta-iterator.cc, delta-iterator.h, delta-table.cc,
	delta-table.h, delta.cc, delta.h, depcomp, docs/Makefile.am,
	docs/cssc.texi, dtbl-prepend.cc, encoding.cc, environment.cc,
	err_no.h, except.h, fatalsig.cc, fdclosed.cc, file.cc, file.h,
	filediff.cc, filediff.h, fileiter.cc, fileiter.h, filelock.h,
	filepos.h, fnsplit.cc, get.cc, ioerr.h, l-split.cc, linebuf.cc,
	linebuf.h, list.cc, missing, my-getopt.cc, my-getopt.h, mylist.h,
	myset.h, mystring.cc, mystring.h, pf-add.cc, pf-del.cc, pfile.cc,
	pfile.h, prompt.cc, prs.cc, prt.cc, quit.cc, quit.h, rel_list.cc,
	rel_list.h, release.h, relvbr.h, remove.c, rename.c, rl-merge.cc,
	rmdel.cc, run.cc, run.h, sact.cc, sccs-cgi/sccs.cgi,
	sccs-cgi/sccs.cgi.text, sccs-delta.cc, sccsdate.cc, sccsdate.h,
	sccsdiff.sh.in, sccsfile.cc, sccsfile.h, sccsname.cc, sccsname.h,
	seqstate.cc, seqstate.h, sf-add.cc, sf-admin.cc, sf-cdc.cc,
	sf-chkid.cc, sf-chkmr.h, sf-delta.cc, sf-get.cc, sf-get2.cc,
	sf-get3.cc, sf-kw.cc, sf-prs.cc, sf-prt.cc, sf-rmdel.cc,
	sf-val.cc, sf-write.cc, show-disp.sh, showconfig.cc, sid.cc,
	sid.h, sid_list.h, sl-merge.h, split.cc, stack.h, strerror.c,
	strstr.c, sysdep.h, testutils/ekko.c, testutils/last-time.c,
	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
	unget.cc, val.cc, valcodes.h, version.h, what.cc, writesubst.cc,
	testutils/ekko.c, testutils/last-time.c, testutils/seeker.c,
	testutils/user.c, testutils/yammer.c, testutils/yes.c:
	Update license to GPL version 3.
	* NEWS: Mention this change.
	* docs/cssc.texi (Copying): Put the GPL in a separate, unnumbered,
	section.

	* docs/cssc.texi: Change license to version 1.2 of the GNU Free
	Documentation License.
	* docs/Makefile.am (cssc_TEXINFOS): Depend on fdl.texi, so that it
	gets distributed.
	* NEWS: Mention this change.

	* docs/Makefile.am (cssc_TEXINFOS): Don't depend on
	config-info.text, since we don't actually use it.  This prevents
	us trying to rebuild the info file during "make distcheck", when
	the source directory is read-only anyway.
	* doc/texinfo.tex: Update to the version of texinfo.tex used in
	automake-1.8.  Yo avoid future compatibility issues, it makes
	sense to remove this file from CVS in fact, but we won't do that
	just yet.

	* tests/bsd-sccs/delsfile.sh (cleanup): Also clean up ./s.foo when
	we're finished.

	Fix build problems caused by the fact that generating
	testutils/Makefile in the top level directory produces
	a Makefile that expects to use config.h, while we actually
	want to use DEFS in the testutils subdirectory.
	* configure.ac: Call AC_OUTPUT only once.  Do not emit
	testutils/Makefile.
	* testutils/configure.ac: Fixed typo.


2007-06-21  James Youngman  <jay@gnu.org>

	* bsd/sccs.c: Updated the copyright text to be consistent with the
	COPYING.bsd file (by removing the advertising clause).

	* sccsfile.cc (print_subsituted_flags_list): Return true if
	nothing failed (as opposed to falling off the end of the
	function).   This prevents spurious x-file write errors if the y
	flag is unset.

	* cssc.h: Require exception support to compile.  This is not
	strictly necessary for successful operation, but without exception
	support "get s.foo s.bar" will not process s.bar if we failed on
	s.foo.  So exception support is required for full SCCS
	compatibility.

2007-06-20  James Youngman  <jay@gnu.org>

	* bsd/sccs.c (unedit): Fix "sccs unedit /tmp/SCCS/s.foo will
	cause ./s.foo to be unlinked" bug, by forming the g-file name
	from the p-file name, as opposed to the name of the file on the
	command line (because the file named on the command line gould be
	either the g-file or the s-file).
	* docs/BUGS: Mention the bugfix.
	* tests/bsd-sccs/delsfile.sh: New test, for this bug.

	* .gitignore: Ignore Emacs editor backups.

	* cap.cc, val.cc: Add explicit template instantiation directives to
	support compilation with GCC's -fno-implicit-templates option.
	* dtbl-prepend.cc, fileiter.cc, sccs-delta.cc: ditto
	* sccsfile.cc: Ditto.  Also include "mylist.h" to get the method
	definitions for the templates.

	* .gitignore, docs/.gitignore, testutils/.gitignore: New files.

	* tests/common/test-common: Work around an apparent bug in Bash
	3.1.17(1) in which "$@$ac_c" expands to DEL${ac_c} when $1 is "".
	That broke echo_nonl, causing some tests to fail.

2007-06-19  James Youngman  <jay@gnu.org>

	* unused/configs/cf-bcc.h, unused/configs/cf-djgpp.h,
	unused/configs/cf-redhat.h, unused/configs/cf-sls.h,
	unused/configs/cf-xenix.h, unused/configs/mf-msdos.mak,
	unused/configs/mf-unix.mak, unused/Makefile.am, unused/README,
	unused/_chmod.cc, unused/configs/README, unused/dosfile.cc,
	unused/dummy.cc, unused/ffsync.cc, unused/fsync.cc,
	unused/linux.diffs, unused/move-if-change, unused/pipe.cc,
	unused/pipe.h, unused/sid_list.cc: Removed unused files.

	Update or add various copyright notices.
	* sccs-cgi/sccs.cgi, testutils/ekko.c, testutils/last-time.c,
	testutils/realpwd.cc, testutils/seeker.c, testutils/user.c,
	testutils/uu_decode.c, testutils/yammer.c, testutils/yes.c,
	docs/gpl.texi, docs/texinfo.tex, sid_list.h, sl-merge.h, split.cc,
	stack.h, strstr.c, sysdep.h, unget.cc, val.cc, valcodes.h,
	what.cc, writesubst.cc, rel_list.h, release.h, relvbr.h,
	rl-merge.cc, rmdel.cc, run.cc, run.h, sact.cc, sccs-delta.cc,
	sccsdate.cc, sccsdate.h, sccsfile.cc, sccsfile.h, sccsname.cc,
	sccsname.h, seqstate.cc, seqstate.h, sf-add.cc, sf-admin.cc,
	sf-cdc.cc, sf-chkid.cc, sf-chkmr.h, sf-delta.cc, sf-get.cc,
	sf-get2.cc, sf-get3.cc, sf-kw.cc, sf-prs.cc, sf-prt.cc,
	sf-rmdel.cc, sf-val.cc, sf-write.cc, show-disp.sh, showconfig.cc,
	sid.cc, sid.h, cap.cc, cdc.cc, configure.ac, cssc.h, defaults.h,
	delta-iterator.cc, delta-iterator.h, delta-table.cc,
	delta-table.h, delta.cc, delta.h, depcomp, dtbl-prepend.cc,
	encoding.cc, environment.cc, err_no.h, except.h, fatalsig.cc,
	fdclosed.cc, file.cc, file.h, filediff.cc, filediff.h,
	fileiter.cc, fileiter.h, filelock.h, filepos.h, fnsplit.cc,
	get.cc, ioerr.h, l-split.cc, linebuf.cc, linebuf.h, list.cc,
	missing, my-getopt.cc, my-getopt.h, mylist.h, myset.h,
	mystring.cc, mystring.h, pf-add.cc, pf-del.cc, pfile.cc, pfile.h,
	prompt.cc, prs.cc, prt.cc, quit.cc, quit.h, rel_list.cc,
	Makefile.am, admin.cc, autogen.sh, bodyio.cc, bodyio.h,
	canonify.cc: Updated FSF address in source files
	* COPYING: Fixed the FSF address.
	* Makefile.am, remove.c, rename.c, sccsdiff.sh.in, strerror.c,
	version.h: Included copyright notices in some files where these
	were missing

2007-03-14  James Youngman  <jay@gnu.org>

	* NEWS, ChangeLog: Updated with (not very) recent changes.

	* AUTHORS: Fixed typo

	* get.cc, sf-get.cc: Fixed a typo in a comment

2007-03-14  James Youngman  <jay@gnu.org>

	* AUTHORS: Fixed typo

	* get.cc, sf-get.cc: Fixed a typo in a comment

2006-07-13  James Youngman  <jay@gnu.org>

	* tests/prt/TODO: Updated email address

2005-12-04  James Youngman  <jay@gnu.org>

	* docs/cssc.texi: Corrected typo (tirivial change, from Alex Brincko)

2005-11-23  James Youngman  <jay@gnu.org>

	* configure.ac, sccsfile.cc, sccsfile.h, NEWS:
	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)

2005-06-18  James Youngman  <jay@gnu.org>

	* file.cc, filelock.h, quit.cc, quit.h:
	Applied Sourceforge patch 1223116, allowing CSSC to be compiled on Darwin.  Darwin's version of GCC doesn't like #pragma implementation.

2005-04-06  James Youngman  <jay@gnu.org>

	* docs/Platforms:
	Indicate that under Cygwin, CSSC must be used on filesystems mounted
	in 'binary mode'.

2005-04-04  James Youngman  <jay@gnu.org>

	* pf-add.cc: Updated copyright year.

	* pf-add.cc:
	Removed some unused code (which had already been disabled with #if 0).

2005-01-22  James Youngman  <jay@gnu.org>

	* configure.ac: CSSC release 1.0.1

	* NEWS: Better description of the problem for SourceForge bug 865422

	* docs/cssc.texi: Added 2005 top copyright years.

	* docs/cssc.texi: Updated timestamp.

	* ChangeLog: Indicated the release of 1.0.1.

	* ChangeLog: Updated change log from CVS comments.

	* NEWS: Added latest news.

	* docs/cssc.texi:
	Ensured that the section names for cross-references which appear in
	the printed output actually bear the correct title for the section
	they refer to.

2004-10-17  James Youngman  <jay@gnu.org>

	* docs/Platforms: CSSC now builds under GCC-3.4.

	* docs/cssc.texi: Updated edition/version.

	* docs/cssc.texi:
	Indicate that "admin -h" performs the same checks as "val" as well as
	checking the checksum.

	* Makefile.am, admin.cc:
	Fixed SourceForge bug 1043880: admin -h should invoke val

	* sf-get2.cc, tests/get/sf865422.sh:
	Fixed SourceForge bug 865422: if a SID is listed in a pfile, that can force a branch

	* sccsdiff.sh.in:
	Fixed SourceForge bug 966010, sccs sccsdiff -r cannot have space
	before revision number.   We still will have similar problems
	elsewhere in the suite, I suspect.

	* sf-prs.cc, sf-delta.cc:
	Fixed SourceForge bug 1045768: CSSC does not compile with gcc 3.4

2004-10-16  James Youngman  <jay@gnu.org>

	* docs/CREDITS, docs/CREDITS.short.txt: Added Yann Dirson.

2004-10-10  James Youngman  <jay@gnu.org>

	* ChangeLog: Updated from CVS log messages.

	* README: Fixed typo

	* docs/cssc.texi: Added missing full stop.

	* configure.ac:
	Indicate that this is once again the CVS development version.

	* configure.ac: This is release 1.00.

	* docs/URLs:
	Added GNU FTP site URL in preparation for official 1.0 release.

	* docs/TODO: Added disclaumer about the obsoleteness of the file.

	* docs/tests-todo.txt:
	Removed a couple of entries for tests that now exist.

	* docs/Platforms: Minor updates and corrections to typos.

	* README: Updated the status of the release.

	* 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:
	update copyright years

	* docs/cssc.texi:
	The file was also changed in 2003 and 2004.  Hence update the
	copyright years.

	* docs/cssc.texi: Updated edition - to be released with CSSC 1.00!

	* sf-prs.cc:
	SF bug 1040827: Solaris 9's "prs" does not produce any output for the
	"y" flag.  Hence for compatibility nor should we.

	* 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:
	Added support for the SCCS 'y' flag - SF bug 1040827

2004-10-03  James Youngman  <jay@gnu.org>

	* NEWS: Updated with new news.

	* bsd/sccs.c:
	Fixed SourceForge bug 806715 (incompatibility of -d flag with the
	"sccs print" command).

	* docs/cssc.texi:
	Be more specific about which version of SCO has the 'x' flag.

	* 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:
	Implemented SCO SCCS's x flag; Sourceforge bug ID 969833

2004-04-25  James Youngman  <jay@gnu.org>

	* tests/common/command-names:
	Make sure we locate the "sccs" binary correctly now that $dir will
	normally not begin with "..".

	* tests/common/command-names:
	Oops, make the tests work if you don't set the $dir variable.

	* tests/common/command-names:
	Figure out the absolute pathname of the directory containing the CSSC tools.

	* depcomp: depcomp - new file required by automake

2003-12-13  James Youngman  <jay@gnu.org>

	* tests/what/whatbasic.sh:
	Provide a more helpful error message when 'ekko' fails

	* linebuf.cc, linebuf.h, sccsfile.cc:
	Resolve the strchr() problem pointed out bin SourceForge patch 857193

2003-12-10  James Youngman  <jay@gnu.org>

	* NEWS, bsd/sccs.c, my-getopt.cc:
	Some changes to eliminate compilation errors/warnings from Sun CC 5.5

	* docs/CREDITS.short.txt, docs/CREDITS: Added Tom Duffy.

2003-12-09  James Youngman  <jay@gnu.org>

	* bsd/sccs.c, configure.ac, NEWS:
	pass through more options to diff (be it GNU diff or vanilla diff)

	* bsd/sccs.1:
	Documented the extra options now passed to diff by "sccs diffs".

	* bsd/sccs.c:
	Also pass through the w option (which is not GNU diff specific).

	* bsd/sccs.c:
	Pass through the options aBdHpqsvy to diff (these are GNU diff options).

	* bsd/sccs.c: Support "sccs diffs -u".

2003-12-08  James Youngman  <jay@gnu.org>

	* auxfiles/CSSC.spec.in:
	Handed over "Packager" status for Red Hat to Thomas Duffy.

	* auxfiles/CSSC.spec.in:
	Applied SourceForge patch 856398, submitted by Thomas Duffy

	* file.cc, file.h, get.cc:
	Various changes as suggested by Dick Streefland, relating to the setting/clearing of the DOS archive bit and to systems which lack CONFIG_UIDs

	* tests/delta/errorcase.sh:
	Oops, this change should have been in 0.16alpha.pl0

	* sact.cc:
	Fixed SF bug 768002, mismatch in output of sact between CSSC and SCCS when only one file name is given on the command line

	* sf-write.cc: Fixed SF bug 856158, compilation error on CYGWIN

2003-12-07  James Youngman  <jay@gnu.org>

	* ChangeLog: Brought up to date (again).

	* docs/Makefile.am: make mostlyclean should delete cssc.info.

	* testutils/Makefile.am:
	make distclean should delete decompress_stdin.sh.

	* tests/get/sf111140.sh, tests/get/sf479916.sh:
	Remove test files at the end of testing.

	* tests/get/gg_get_ix.sh:
	Remove the working files at the end of the tests.

	* ChangeLog: Brought up to date.

	* docs/cssc.texi: Indicated the new version.

	* configure.ac: Bumped the version number.

	* NEWS: Fixed SourceForg bug 581740.

	* bsd/Makefile.am, testutils/condense-valgrind.pl, file.cc, file.h, get.cc:
	Honour the user's choice of umask - fixes SpurceForge bug 581740

	* docs/get-spec.txt: Removed the out of date file get-spec.txt

	* docs/Makefile.am: Removed getspec.txt (since it is out of date).

	* NEWS:
	On Red Hat Linux, info files live in /usr/share/info not /usr/info.

	* auxfiles/CSSC.spec.in:
	infodir has moved from /usr/info to /usr/share/info.

	* quit.cc:
	Fix SourceForge bug number 816679, which caused a coredump if
	cleanup::~cleanup() was called before there are any entries in the
	cleanup list.

	* tests/bsd-sccs/driver-basic.sh, tests/bsd-sccs/sf595594.sh:
	Fixed SourceForge bug 806699: Make the test work even if the user had
	set $PROJECTDIR.

	* NEWS, sf-get2.cc, tests/get/defsid.sh:
	Make "get -e" take account of the "d" flag.

2003-05-29  James Youngman  <jay@gnu.org>

	* sccsfile.cc: sccs_file::sccs_file(): Ensure that this->f is NULL when
	we return for mode CREATE (previously it was uninitialised).
	This fixes SourceForge bug 745608.

	* sf-write.cc:
	CYGWIN: end_update: Only close the SCCS file if it is open (the FILE*
	is not NULL).  On platforms other than CYGWIN, we don't close he file
	anyway.

2003-05-19  James Youngman  <jay@gnu.org>

	* docs/Platforms: Corrected email address for Clement T. Cole.

2003-05-18  James Youngman  <jay@gnu.org>

	* tests/common/test-common:
	Cope with the case where "remove" is called with no arguments.

2003-05-16  James Youngman  <jay@gnu.org>

	* Makefile.am: Also clean "sccsdiff" for "make clean".

2003-05-05  James Youngman  <jay@gnu.org>

	* sf-get2.cc:
	"get -e" now takes notice of the default SID when deciding the SID of the new delta.

2003-03-15  James Youngman  <jay@gnu.org>

	* README: Added pointer to docs/Platforms.

	* docs/Platforms: Added MacOS X porting tip from Brad Crittenden.

2003-03-08  James Youngman  <jay@gnu.org>

	* tests/get/excl_ig_2.sh: Don't cat the s-file at the end!

	* tests/get/t-option.sh:
	Added test for Sourceforge bug #699318 ("get -t s.foo" when foo
	contains only one SID, created by "admin -iX -r1.1.1.1 s.foo").

	* sccsfile.h, sf-get2.cc:
	Fixed Sourceforge bug #699318 ("get -t s.foo" when foo contains only
	one SID, created by "admin -iX -r1.1.1.1 s.foo").

	* sf-get2.cc: Simplified the matching code.

	* sf-get2.cc:
	find_requested_sid(): separated the does-this-SID-match decision from
	the is-this-the-best-yet decision.

2003-03-01  james_youngman  <jay@gnu.org>

	* sf-write.cc, sccsfile.h:
	Recognise BitKeeper files by their different checksum lines, and
	accept also the BK-specific comment lines and extra flags (though
	don't accept them if the file is not a BK file).

	* sccsfile.cc: Updated copyright years.

	* sccsfile.h, sccsfile.cc:
	Recognise BitKeeper files by their different checksum lines, and
	accept also the BK-specific comment lines and extra flags (though
	don't accept them if the file is not a BK file).

2003-02-13  james_youngman  <jay@gnu.org>

	* tests/get/sf664900.sh, sf-get2.cc:
	One-line fix for SourceForge bug 664900 by Darren Warner.

	* configure.ac, acconfig.h:
	Fix CSSC bug 650420 - warnings from autoconf/autoheader about obsolete usage
	of acconfig.h file.

2002-12-08  james_youngman  <jay@gnu.org>

	* testutils/Makefile.am:
	Include "decompress_stdin.sh.in" in the distribution.

	* ChangeLog: Updated for 0.15pl0.

	* configure.ac: Bumped to version 0.15pl0.

	* NEWS: Added NEWS items for version 0.15pl0.

2002-11-02  james_youngman  <jay@gnu.org>

	* seqstate.cc, seqstate.h, sf-get2.cc, sf-get.cc:
	support for ignored deltas

	* tests/get/excl_ig_2.sh: added new test script

	* tests/get/excl_ig_1.sh: enabled test xg6

	* docs/cssc.texi:
	Added section on included, excluded and ignored deltas.

	* tests/get/middle-fail.sh:
	Tut - use ${admin} not "admin" as a command name - make sure we are
	testing the correct instance!

	* tests/bsd-sccs/sf595594.sh:
	Tut - use ${sccs} not sccs as a command name - make sure we are
	testing the correct instance!

	* delta.cc:
	Indicate the presence of the -p option in the usage message.

	* configure.ac:
	Fixed SF bug 623164: you need to include <ctype.h> to use isdigit().

	* cssc.h:
	SF bug 623164: you need to include <ctype.h> to use isdigit().

	* get.cc: Updated copyright year.

	* autogen.sh: Recurse into subdirectories where appropriate.

	* tests/common/command-names:
	Corrected bug where more than one argument is passed to test (which
	now justifiably complains when you do this).

2002-10-04  James Youngman <jay@gnu.org>

	* auxfiles/CSSC.spec.in:
	Change references to sccs.1 to sccs.1* because RPM v4 compresses all manpages.

2002-09-27  James Youngman <jay@gnu.org>

	* docs/cssc.texi:
	Changed all instances of @url to @uref, except where that would
	produce a broken link.

	* docs/cssc.texi: Updated the update timestamp.

	* docs/cssc.texi:
	Applied changes suggested by Timothy Bedding (SourceForge bug ID
	589542).

2002-09-20  James Youngman <jay@gnu.org>

	* docs/cssc.texi: Updated the "last update" time.

	* docs/cssc.texi: Corrected typo.

	* docs/cssc.texi: Re-ordered some paragraphs for clarity.

	* docs/cssc.texi:
	Explain that the line length limits apply only to lines which will end
	up in the histry file - and that over-length lines already in the
	history file will be correctly coped with by "get".

	* docs/cssc.texi: Corrected cross-reference.

	* docs/cssc.texi: Explain how to figure out which diff command is used.

	* docs/cssc.texi:
	Expanded the discussion of the (lack of) line length limits in CSSC.

2002-08-16  James Youngman <jay@gnu.org>

	* get.cc:
	If we fail to set the mode on the g-file correctly, delete it and propagate the failure information

	* tests/bsd-sccs/driver-basic.sh, tests/common/command-names, get.cc:
	SourceForge bug 595594 - all g-files processed after a failing file are deleted

	* tests/get/middle-fail.sh:
	SourceForge bug 595594 fixed - if we failed to get a previous file, all g-files processed later are deleted even if they were successful

	* tests/bsd-sccs/sf595594.sh: Initial version of test.

2002-07-26  James Youngman <jay@gnu.org>

	* run.cc: Updated copyright year.

	* run.cc:
	Fixed inappropriate boolean inversion on systems where HAVE_FORK is not defined

	* testutils/configure.in, configure.in:
	Removed old configure.in files - replaced by configure.ac

	* 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:
	Updated configure.in to configure.ac - we can now use autoconf version 2.53

2002-04-07  James Youngman <jay@gnu.org>

	* tests/delta/p-option.sh:
	Some initial tests for the "-p" option of delta.

	* NEWS: New check of link count when opening SCCS file

	* docs/cssc.texi, tests/admin/hardlinks.sh, configure.in, sccsfile.cc:
	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

	* scripts/rev-freq.sh: Corrected a shell syntax error

2002-04-05  James Youngman <jay@gnu.org>

	* 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:
	Added support for running the test suite against versions of SCCS that lack a prt program

2002-04-04  James Youngman <jay@gnu.org>

	* docs/cssc.texi:
	get -a now has test cases, so we no longer need to indicate that it is untested.

	* get.cc, sccsfile.h, sf-get2.cc: support for the -a option of get

	* sccsfile.cc, quit.h, sccsdate.cc, sf-kw.cc, sf-val.cc, sf-write.cc, admin.cc, quit.cc:
	Added global function 'warning' so that we don't have to issue warnings by calling 'errormsg'

	* tests/get/gg_get_ix.sh:
	Removed redundant comment about tests that used to fail with CSSC (but
	no longer do so).

	* tests/get/optorder.sh: Fixed typo

	* tests/common/test-common:
	minor changes for the formatting of labels at the start of the lines of output of the tests - to preserve whitespace

	* tests/get/a-option.sh: Tests for the "-a" option of "get".

2002-04-03  James Youngman <jay@gnu.org>

	* configure.in:
	Updated the version number to indicate that any version someone checks
	out of CVS is from CVS (we use the suffix CVSDEVEL).

	* configure.in:
	Up-date version number to 0.14alpha.pl0, prior to making the release

	* Makefile.am: Added file myset.h to the distribution

	* testutils/Makefile.am:
	Added some files missing from the distribution (notably mogrify.awk).

	* ChangeLog: updated from log entries on other files

	* docs/cssc.texi: enhancements to the sections on interoperability

	* configure.in:
	Added HAVE_GNU_DIFF, which indicates if the diff command to be used s GNU diff

	* showconfig.cc:
	Show the likely limit on the length of a line for the diff utility being used

	* acconfig.h:
	Added HAVE_GNU_DIFF, which indicates if the diff command to be used s GNU diff

	* environment.cc:
	Show the likely limit on the length of a line for the diff utility being used

	* delta.cc, get.cc, tests/get/errorcases.sh:
	Invalid options produce a return value of 1 (on Solaris 2.6) not 2

	* testutils/compare_gets.sh:
	Do not compare removes deltas - so do not pass -a to prs

2002-04-02  James Youngman <jay@gnu.org>

	* NEWS: Corrected typos.

	* tests/delta/options.sh:
	Unknown option error results in return value of 1, not 2.

	* tests/delta/errorcase.sh, sf-delta.cc:
	A pre-existing d-file is not an error condition

	* seqstate.cc, seqstate.h, sf-get.cc, sf-get2.cc, sf-get3.cc, tests/get/gg_get_ix.sh, tests/get/sf111140.sh:
	Do includes before excludes (except in the case of command-line includes) - fixes bug reported by gerry.green@cle.philips.com

	* tests/get/sf111140_full.txt: test file

	* tests/get/create.sh: Extra checks as we go along.

2002-03-28  James Youngman <jay@gnu.org>

	* NEWS: Updated with the latest info

	* docs/TESTING: added Gerry Green

	* 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:
	Make sure everybody is using sccs_file::prepare_seqstate() in the same way

	* tests/get/gg_get_ix.sh: new test script from Gerry Green

2002-03-26  James Youngman <jay@gnu.org>

	* tests/get/errorcases.sh, docs/tests-todo.txt, get.cc:
	gcov fixes - invalid SIDs for get -i and get -x

	* docs/.cvsignore: Ignore cssc.info-4

	* sccs-cgi/.cvsignore: Ignore Makefile.in.

	* docs/tests-todo.txt, tests/delta/errorcase.sh:
	Added extra 5test cases to increate test coverage

	* sf-delta.cc:
	If the p-file indicates a SID which is not in the SCCS file, indicate
	which SID we have a problem with in the error message we produce.

	* docs/tests-todo.txt: Removed todo items for the tests we've addded.

	* testutils/user.c: Various enhancements for testing "delta".

	* docs/cssc.texi: Comments about authorised user list

2002-03-25  James Youngman <jay@gnu.org>

	* tests/delta/errorcase.sh:
	Extra test cases for the authorised user list.

	* sf-get3.cc: Do not use '!' exclusion for authorised user list

	* sccsfile.h, sf-get3.cc, sf-get2.cc, sf-delta.cc:
	delta should check that the invoking user is allowed to make deltas

	* docs/cssc.texi:
	Made the SCCS file flags section headings reflect the contents better

	* tests/delta/errorcase.sh: initial checkin

	* tests/delta/MRs.sh:
	fixes to the tests - after testing against Solaris 2.6

	* tests/delta/basic.sh:
	Added tests for the no-id-keywords-is-fatal flag

	* testutils/user.c:
	added feature - 'tell me a group of which I am not a member'

	* sccs-cgi/Makefile.am: initial version

	* docs/tests-todo.txt: Removed the todo-items we've already done

	* NEWS: We removed the -Y and -M options of delta

	* Makefile.am: recurse into sccs-cgi also

	* configure.in: generate  sccs-cgi/Makefile in AC_OUTPUT

	* val.cc: Fixed header comment which indicated what the file was for

	* sccsfile.cc:
	Use  v_unknown_feature_warning() instead of  v_errormsg() since the latter is no longer exported from quit.cc

	* my-getopt.cc:
	Produce usage message is the command line exhibits wrong usage of options

	* tests/common/test-common: Added function rename()

	* tests/delta/MRs.sh:
	Extra test - should not be able to check in file without specifying an MR if the v flag is set

	* tests/delta/basic.sh:
	extra tests (deletion of lines, checking of -r option against p-file)

	* tests/delta/n-option.sh:
	remove any test files we will need to control at the start

	* quit.cc, quit.h: Don't export v_errormsg as a global function

2002-03-24  James Youngman <jay@gnu.org>

	* testutils/gcov-util.sh: Put the title in <title>...</title>.

	* testutils/gcov-util.sh:
	Define $NOW (date at which the summary was prepared).

	* testutils/gcov-util.sh:
	Tool for slicing and dicing the results of gcov.

	* docs/tests-todo.txt:
	Added list of tests to be written in tests-todo.txt

	* delta.cc: Removed options -M and -Y (not in normal SCCS anyway)

	* tests/delta/options.sh:
	Added tests for the various command-line options of delta.

	* NEWS: Brought the NEWS fie up to date with the ChangeLog file.

2002-03-23  James Youngman <jay@gnu.org>

	* docs/cssc.texi: Use @option for options, not @samp.

	* configure.in: spell --disable-max-line-length correctly

	* sf-prs.cc:
	Print sequence numbers in correct (reverse) order; don't include ignored deltas in :DI: (for Solaris 2.6 compatibility)

	* docs/cssc.texi:
	Documented val.  Included information about differences between the various SCCS versions

2002-03-22  James Youngman <jay@gnu.org>

	* tests/prs/keywords.sh: Re-enabled all the tests...

	* tests/prs/keywords.sh:
	Added test cases for having more than one SID in the included or
	excluded SID list.

2002-03-21  James Youngman <jay@gnu.org>

	* sf-prs.cc:
	Backed out of the change made for previous revision - they should be
	shown as seq_nos after all...

	* tests/prs/keywords.sh: :Dx: and friends should emit seq_no values.

	* sf-prs.cc:
	For lists of included/excluded deltas, print the SID rather than the seq_no.

	* myset.h, sf-delta.cc:
	Only list each included/excluded delta once in each include/exclude list.

	* tests/prs/keywords.sh: Added tests for more keywords.

2002-03-20  James Youngman <jay@gnu.org>

	* ChangeLog: Brought up to date with new log entries.

2002-03-19  James Youngman <jay@gnu.org>

	* val.cc:
	Various fixes for the value returned in all sorts of validation-faulure cases

	* tests/what/Makefile.am:
	We have a file whatbasic.sh but no keywords.sh

	* tests/common/command-names: added val

	* tests/Makefile.am: New test directory, 'val'

	* tests/sact/sactbasic.sh, tests/val/Makefile.am, tests/val/valbasic.sh, tests/val/y2k.sh:
	reduced lines of untested code to 2083 - tests added for valand sact

	* bsd/sccs.c: Fixed typos causing compilation errors

	* bsd/sccs.c:
	Fixed SourceForge bug 531884, compiler warning on 64-bit systems

	* file.cc:
	While trying to do atomic NFS file locking, sleep for a bit if we fail
	to make the hard link from nfslckNNNN to z.foobar.

	* sf-delta.cc, filediff.cc, filediff.h:
	Fixed SourceForge bug 530969 - FILE* leak in fildiff.cc

	* docs/Platforms:
	Updated following testing on the SourceForge compile farm

	* README: Inform reader that GNU make is probably required.
	Removed the "stop press" which is now old news.

2002-03-18  James Youngman  <jay@gnu.org>

	* tests/what/whatbasic.sh, what.cc:
	Added an extra test (test w22) in whatbasic.sh to cover the whole of the print_what() function in what.cc.

	* tests/Makefile.am: Added test-what.

	* docs/cssc.texi, tests/Makefile.am, tests/what/Makefile.am, NEWS, my-getopt.cc, my-getopt.h, what.cc:
	Added tests for what - and therefore some bugfixes too

	* tests/what/whatbasic.sh:
	On the other hand, this version passes when run against Solaris 2.6...

	* tests/what/whatbasic.sh:
	This version passes for CSSC but has not been checked against SCCS.

	* docs/Platforms:
	Works on Solaris 2.6 and Debian 3.0 as well as GCC version3

	* docs/patches.txt: Corrected a typo

2002-03-17  James Youngman  <jay@gnu.org>

	* tests/common/config-data:
	Include binary file support tests on SunOS.  Note that some tests are
	*still* disabled on SunOS, because they still fail (e.g. the ability
	to automatically revert to binary-mode when reading the initial body
	from stdin).

	* bsd/sccs.c:
	Issue more helpful messages about the unimplemented comb and help commands.

	* bsd/sccs.c: Corrected spelling error in warning message.

	* bsd/sccs.c:
	Since we are not includeing <strings.h> and there is not need to
	depend on it, roll our own rindex() and index() functions from the
	functions provided by <string.h>.

2002-03-16  James Youngman  <jay@gnu.org>

	* tests/prs/body.sh, tests/prs/s_foo_bd_output.txt, tests/prs/sample_foo:
	Test the :BD: keyword of prs

	* bodyio.cc:
	valgrind-detected bug: do keyword checking on the uuencoded version of the data

	* docs/cssc.texi, tests/prs/body.sh: Tests for prs -d:GB:

2002-03-10  James Youngman  <jay@gnu.org>

	* prompt.cc, sccsdate.cc, sccsfile.cc, sccsfile.h, sf-delta.cc, sf-prs.cc:
	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)

2002-03-04  James Youngman  <jay@gnu.org>

	* docs/cssc.texi:
	Added glossary; spelling corrections; updated copyright years

2002-03-03  James Youngman  <jay@gnu.org>

	* tests/sccsdiff/rap.sh:
	Fixed sourceforge bug 489311 (Locale settings cause test failure)

2002-02-25  James Youngman  <jay@gnu.org>

	* tests/Makefile.am, tests/sact/Makefile.am, tests/sact/sf513800.sh, tests/sact/sf513800_1.uue, tests/sact/sf513800_2.uue, sccsdate.cc:
	test for Sourceforge bug sf513800.sh and a fix for the same

2002-02-23  James Youngman  <jay@gnu.org>

	* ChangeLog, ChangeLog.2:
	Moved the changelog entries from ChangeLog into ChangeLog.2.  New
	changeLog entries to go into ChangeLog, and the ChangeLog.1 and
	ChangeLog.2 files contain historical changelogs.

2001-12-04  James Youngman  <jay@gnu.org>

	* delta.cc: Fixed SourceForge bug 489005

2001-12-02  James Youngman  <jay@gnu.org>

	* NEWS, except.h, quit.cc, quit.h, sccsfile.cc, sccsfile.h, tests/prt/all-512.sh, tests/prt/default.sh, tests/prt/nodel.sh:
	Added warning when we see an excluded delta (since we are not certain
	we handle this correctly).  The warnig includes a pointer tot he web
	page explaining what the user should do about this.

2001-12-01  James Youngman  <jay@gnu.org>

	* configure.in:
	bumped version - to avoid confusion with previous release

	* NEWS, bodyio.cc, file.cc, file.h, filediff.cc, get.cc, sf-delta.cc, sf-kw.cc:
	Fixed sourceforge bugs 480136, 481519, 481707, 484278 - all related to setuid operation, and in fact all dupliactes of each other

2001-11-29  James Youngman  <jay@gnu.org>

	* docs/CREDITS, sccs-cgi/sccs.cgi, sccs-cgi/sccs.cgi.text, AUTHORS:
	Added Richard Kettlewell's sccs.cgi script.  Updated AUTHORS and
	CREDITS files appropriately.

	* quit.cc:
	Fixed compilation error ocurring when HAVE_EXCEPTIONS is not defined

2001-11-25  James Youngman  <jay@gnu.org>

	* configure.in:
	Set the language back to C after doing the check for broken printf
	macros in the glibc header files.  (Also set up for a release).

	* get.cc, sf-get2.cc, tests/common/command-names, tests/get/sf479916.sh:
	Fixed sourceforge bug #479916 - get -t problem

	* sccsdiff.sh.in: Corrected a syntax error.

	* NEWS: Fixed SF bug 450900.

	* tests/get/removed-delta.sh: Test case for SourceForge bug 450900

	* delta-table.cc:
	SF bug #450900 - if you try to check out a version for
	editing, and the SID that would ordinary be selected exists
	but is removed, we should indeed use it.

	* ChangeLog: Updated with recent change log entries.

	* Makefile.am, NEWS, configure.in:
	Fixed debian bug #120080 (sccsdiff cannot find get iuis /usr/sccs
	symlink is missing)

	* sccsdiff.sh.in:
	fixed Debian  Bug#120080: sccs sccsdiff doesn't work (sccsdiff assumes /usr/sccs symlink exists)

	* 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:
	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


