New features with AN-2015-03-03:

This is the first localization step for the schily source consolidation. Many
programs now (hopefully) call gettext() for all strings that need localization.

-	The next step will include dgettext() calls for the libraries and the
	missing programs

-	The following step will include the extracted strings

-	The last step will include German translations and install support
	for the resulting binary message object files.

----------> Please test and report compilation problems! <---------

***** NOTE: As mentioned since 2004, frontends to the tools should *****
*****		call all programs in the "C" locale		   *****
*****		by e.g. calling: LC_ALL=C cdrecord ....		   *****
*****		unless these frontends support localized strings   *****
*****		used by the cdrtools with NLS support.		   *****

		*** WARNING        ***
		*** Need new smake ***

	*** Due to the fact that schily-tools 2014-04-03 introduced to use new macro
	*** expansions and a related bug fix in smake, you need a new smake
	*** to compile this source. To ensure this, call:

	cd ./psmake
	./MAKE-all
	cd ..
	psmake/smake
	psmake/smake install


	WARNING: the new version of the isoinfo program makes use of the 
		*at() series of functions that have been introduced by Sun
		in August 2001 and added to POSIX.1-2008. For older platforms,
		libschily now includes emulations for these functions but
		these emulations have not yet been tested thouroughly.
		Please report problems!

	The new smake version mentioned above is smake-1.2.4

-	ALL: README.compile now mentions how to compile with instrumented
	variants of existing compilers.

-	SCCS admin now correctly uses error number cm13 for the text:
	"resolved path too long (cm13)" instead of using cm11.

-	SCCS admin now allows "admin -N file1 file2" without complaining:
	"more than one file (ad15)"

-	SCCS admin now incorporates the get(1) code and thus is able to 
	run a get operation immediately after initializeing a sccs history
	file while in a bulk init operation. This makes a bulk init more
	efficient than with calling admin(1) and get(1) one after the
	other.

-	SCCS admin implements two new bulk mode flags with -N:

	"-"	remove the original g-file after initializing the related
		sccs history file.

	"+"	remove the original g-file and replace it by a file that
		is retrieved by a get(1) operation from the new history
		file. "+" can be used together with the "," flag.

-	SCCS admin now supports get(1) like options -k and -w.

	Except for the code that is needed to support sccs history files
	in a separate tree under $PROJECT_HOME/.sccs/ admin now implements
	everything that is needed to support the upcomming sccs project
	mode.

-	SCCS admin now implements an experimental piece of code to emit
	change set lines as documented by changeset(4). To enable this code,
	call smake 'COPTX=-DTEST_CHANGE'. The changeset data is written
	to stderr. Note that it is still mixed with other diagnostic
	messages.

	A test discovered that on a 11 year old Opteron systen, the current
	state of the OpenSolaris source tree (~ 52000 files ~ 560 MB of data)
	takes ~ 15 seconds to enter into the SCCS using the bulk mode:

		find . -type f > names
		admin -V6 -fy -N-SCCS < names

	This makes SCCS the fastest revision control system available.

-	SCCS delta -q -f s.file works again as it did in the 1980s with
	Sun NSE. The call "delta -q -f ..." enforces a delta even when
	there is no p. file. The new revision number is computed using
	the same algorithm as with "get -e" when no newrevision is specified.
	Testing is recommended with: "delta -q -f -n s.file" to keep the
	g-file after creating the delta. Using SCCS this way works if there
	are no keywords to expand.

-	SCCS get now uses the keyword expansion code that was moved to
	libcomobj.

-	SCCS prs needed to change name for it's local idsetup() function
	as libcomobj now incorporates the different code of the same
	name from get(1).

-	SCCS delta now correctly inserts the right ghash checksum in SCCSv6
	history format when called as: "delta -g<sid-list> ...".
	Note that with this delta usage, the checked out file intentionally
	differs from the checked in file and thus the checksum cannot be
	computed from the edited g-file, but must be computed for the
	checked out g-file.

-	SCCS delta now dupports to provide a prepared delta file using
	-Ddelta-file to tell delta(1) not to call get(1)+diff(1) but to apply
	the delta directly from the prepared file. This will be used in project
	mode to insert new lines at the top of the "changeset" file in an
	efficient way.

-	SCCS sccs now calls sethome() to check for a source tree in
	project mode.

-	SCCS sccs changed code like:

		if (!strcmp(cmd->sccsname, "deledit")
	to
		if (strcmp(cmd->sccsname, "deledit") == 0

-	SCCS sccs now gies a better error message when

		struct sccsprog SccsProg[] 

	contains content that has no implementation in the function command().

-	SCCS sccs now introduces the experimental commands:

		add	add specified files on next commit
		commit	commit changes to project repository
		init	initialize empty project repository
		remove	remove specified files on next commit
		rename	rename specified files on next commit
		status	show changed files in the project

	to help introducing a project oriented behavior of sccs.
	Currently only "add" and "init" are implemented and "status"
	helps no more than to time a stat(2) call over all files in the
	name cache.

	Some hints for playing:

		add	currently does not yet support libfind and thus
			you need to provide it a list of plain files.
			As there is a a ARG_MAX limitation and as the 
			number of files in e.g. OpenSolaris is way beyond
			ARG_MAX even on Solaris that supports ore than
			other OS, I recommend to run:

			find . -type f | sccs add -

			Note that this is very slow as it uses a sccs(1)
			enhancement from Sun/AT&T implemented for SVr4.
			Later revisions will speed up here.

		init	initialises the directories. By default, it marks
			the tree as "off-tree" repository where the 
			SCCS history file for a/file is in .sccs/data/a/SCCS/s.file
			but admin(1) currrently ignores this and creates an
			"in-tree" repository.


-	The SCCS compliance test "ei27" now expects "delta -g<sid-list> ..."
	to create correct ghash checksums for SCCSv6 history files.

-	SCCS delta now correctly uses the nanoseconds from the files
	timestamp when applying a delta in SCCSv6 mode using -o.

-	SCCS libcomobj:sethome() has been reworked to be able to look for
	a SCCS home set root directors relatively to arbitrary directories
	and not only for the current working directory.

-	SCCS libcomobj:idsubst.c new code that has been taken from the
	get(1) source to permit admin(1) to incorporate the get(1) code.

-	SCCS libmpw:xmkdir.c new function that checks for errors other than
	EEXIST.

-	SCCS libmpw:xmkdirs.c new function that checks for errors other than
	EEXIST.

-	SCCS hdr/defines.h New #define URAND_BASE for the epoche of time
	used to compute "unified random" numbers. At the same time,
	the value was changed from 0x40000000 to 0x50000000, making
		2012 Jul 13 11:01:20 UTC
	the new base for the urand epoche. The change was done as this feature
	was defined in 2011 but not used until now.

-	SCCS New libcomobj functions urand_ab() and urand_ba()

-	SCCS New libcomobj functions change_ab() and change_ba()

-	SCCS libcomobj function auxf() noiw implements a new operator 'I'
	to return the full path for the g-file from the s.file.

-	SCCS libcomobj function set_init_path() now correctly computes
	the initial pathname for a file when admin(1) is not doing a chdir
	to the final directory in bulk (-M) mode.

-	CPP: The option -M (generate a list of makefile dependencies) has
	been implemented.

-	CPP: The option -noinclude (remove system include directory from path)
	has been implemented.

-	CPP: The options -xsc and -xuc (treat character constants in cpp
	evaluations as signed char or unsigned char) have been implemented.

-	smake no longer dumps core if a colon is seen after no target.
	Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop"
	on smake and reporting the bug.

-	smake no longer endlessly searches for the right implicit rule in
	rare cases.
	Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop"
	on smake and reporting the bug.

-	smake no longer goes into an apparent endless wait if something like:

			$r66666666666666666

	was seen in a makefile.
	Thanks to Heiko Eißfeldt for running for runing "american fuzzy lop"
	on smake and reporting the bug.

-	smake no longer dumps core when in rare cases a buffer resize
	happens before the "F" operator (take basename of path) is evaluated.
	Thanks to Heiko Eißfeldt for running for doing some handcrafted
	tests based on makefiles created by "american fuzzy lop".

-	mkisofs: isodump did not compile on non c99 compilers.

-	libdbgmalloc now checks the whole heap for corrupted entries
	when dbg_stat() is called via the exit() handler.

Author:

Joerg Schilling
D-13353 Berlin
Germany

Email: 	joerg@schily.net, js@cs.tu-berlin.de
	joerg.schilling@fokus.fraunhofer.de

Please mail bugs and suggestions to me.