New features with AN-2020-05-25:

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 newer smake
	*** to compile this source. If your smake is too old and aborts, ensure to
	*** use the recent smake by calling:

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

	The new smake version mentioned above is smake-1.2.4
	The recent smake version is smake-1.3

	*** Due to the fact that schily-tools 2018-01-26 introduced
	*** optimizations for the Schily version of SunPro Make, you
	*** need at least the dmake version from 2018/01/11 with support
	*** for the "export" directive to compile with this makefile system.


	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 thoroughly.
		Please report problems!

	BUG WARNING: Please never report bugs only to Linux distributions as
		they usually do not forward these bug reports upstream and as
		the Linux distributions typically do not let skilled people
		check the bugs. We did not hear about a FIFO problem in star
		for a long time. Then a problem on Linux occurred once
		every 6000-10000 tries but it did not happen on Solaris after
		even 10 million tries, so it was not known besides Linux.

	BUG WARNING: GNU make release 4.3 starts too early with parallel
		execution (when reading Makefiles and evaluating rules for
		"include" statements already). Since GNU make does not
		support a concept for correct ordering of such actions,
		you need to be prepared to see gmake-4.3 fail in parallel
		mode. If you are interested in reliable parallel execution,
		it is recommended to use the included "dmake" program with
		a command line like:

			dmake -j10 -f SMakefile

		from the top level directory


-	mkisofs: Fixed an integer overflow bug in mac_label.c with 
	Apple -chrp boot.

	Thanks to Adam Majer from SuSE for reporting/fixing.

-	libmdgest: Added a "defined(_M_ARM)" check for MSVC byte order
	definitions (byte_order.h).

	Thanks to "Excalibur" for reporting.

-	Bourne Shell: The unit tests for the ERR trap did not work on NetBSD
	because /bin/false does not exists on NetBSD. We now first check
	for /bin/false and /usr/bin/false and use what's available.

	Thanks to Michael Buerle from pkgsrc for reporting.

-	Bourne Shell: The support for the OLDPWD environment has been moved
	from DO_SYSPUSHD to DO_POSIX_CD and as a result, the minimal POSIX
	compile variant "pbosh" now supports "$OLDPWD" and "cd -".

	This was based on a bug in the POSIX standard that did not include
	OLDPWD in the overview of shell environment variables. See
	https://www.austingroupbugs.net/view.php?id=1343

	Thanks to Koichi Nakashima for reporting

-	star: SmartOS supports aclutils.h as published include file (what we 
	intented to include in Schillix-ON as well, since it is needed for
	libsec) and aclutils.h includes ctype.h. We thus need to
	#include <ctype.h> before star.h in acl_unix.c

	The problem occurred because we did already have a aclutils.h related
	autoconf test, even though Schillix-ON does not yet ship aclutils.h

	Thanks to Michael Buerle from pkgsrc for reporting.

-	star: The subst command (since 2018) malloc()s the space for a copy 
	of the old string in case that the string Is too long for the static
	storage. It did however still use the static buffer instead of a
	pointer to the allocated space. We now use the allocated space if
	needed.

-	star: The subst command for pax now supports the \1, \2, ... escapes
	for \(...\) selections in the from pattern, like it is used by sed(1).

	Thanks to Kristyna Streitova for reminding on this.

-	star: A new unit test for this new feature has been added, using the
	example from the SUSE bug-report for the above substitute command.

-	star: A new subst option -pax-s has been added that supports sed(1)
	like substitutions. The old option -s continues to support change(1)
	like substititions.

	NOTE: Both pax -s and star -pax-s silently fall back to change(1)-like
	substitutions in case that a target platform does not support "regex"
	in libc.

-	SCCS: The admin man page now mentions the -X option in the SYNOPSIS.
	-X has been introduced in 2018. The OPTIONS part did already explain
	-X since then.

-	SCCS: A new option -X0 has been introduced to allow to use nul byte
	separated file names on stdin when using the file argument '-'.

	By default the filename list from stdin is newline separated.

-	SCCS: The commands sccslog and sccscvt now also support the argument
	'-' as a directive to read filenames from stdin.

-	SCCS: libcomobj reads filenames for "-" arguments now via getdelim()
	instead of using fgets(). This removes a path length limit.

-	SCCS: The "sccs help" texts for the various SCCS commands now mention
	the new -X option.

-	SCCS: The man pages now document the path location of the changeset
	file and the structure of the .sccs directory in the project
	set home directory.

-	SCCS: A new function ismylock() has been introduced. ismylock() works
	similar to mylock(), but returns -1 in case that the lock file
	does not exist. This is needed in the future, when SCCS low level
	commands like admin, delta, unget, ... need to check whether they
	have been called with a valid lock file 

		$SET_HOME/.sccs/SCCS/z.changeset

	via sccs(1) or whether they need to create their own global lock
	in order to grant atomically correct project related functions.

-	SCCS: Several GCC warnings about an unused variable "ofile" are now
	avoided.

-	SCCS: A new path variable "changesetfile" has been added to the change
	set home directory handling routines.

-	SCCS: The existence of the file $SET_HOME/.sccs/SCCS/s.changeset
	is now checked at startup and a related flag SETHOME_CHSET_OK is set
	when the file is seen. the existence of the changeset file is a
	hint on whether SCCS is in project mode or whether it is in single
	file mode.

-	SCCS: "sccs root -v" now also reports the name of the changeset
	file and whether it is present.

-	SCCS: sccs.c no longer implements the function command() as "static"
	in order to allow the now external code in libsccs to use it.

-	SCCS: "sccs init" now by default creates an empty changeset
	history file with release 1.0 as $SRC_ROOT/.sccs/SCCS/s.changeset
	This signals SCCS to work in project mode where a group of files is
	managed together and the version 1.0 allows the first proect release
	to become 1.1

-	SCCS: sccs.c added a new option -s. "sccs init -s" now allows to 
	initialize a directory tree without creating a
	$SRC_ROOT/.sccs/SCCS/s.changeset history file. This signals SCCS
	to work in single file mode.

	Future versions of SCCS will permit to implement a "single file"
	mode that works in "off tree" mode where the sccs history files
	are kept inside $SRC_ROOT/.sccs/data/...

-	SCCS: Since the sccs val command now supports the option -X, we
	needed to change the "unknown option" test in the set of unit tests.

-	SCCS: a new man page sccs-init.1 has been created.

-	SCCS: "sccs help init" now mentions the new option -s

-	SCCS: a new man page sccs-root.1 has been created.

-	SCCS: The sccs.1 man page now mentions "init" and "root".

-	SCCS: The file sccs/sccs/lib/mpwlib/src/xpipe.c did call
	setmode(t[0], O_BINARY); in case that the pipe failed. This is of
	course wrong and the call is now made when the pipe succeeded.


-	SCCS TODO:

	-	Convert sccs.c to use -NSCCS in the back end programs instead
		of converting g-file names from the command line into s.file
		names in the frontend in order to forward s.file names to the
		backend programs. Doing it this way allows us to have the SCCS
		history files "off tree" in a separate directory tree starting
		with ".sccs/" at the "project root" directory, as the related
		code to convert path names is in libcomobj::bulkprepare().

	-	Add code to admin(1) and delta(1) to retrieve the list of
		new or modified files in order to have all important code
		for a "sccs commit" in a single program that does not need to
		deal with ARG_MAX limitations.

	-	Add code to admin(1), delta(1) and get(1) to maintain/understand
		the changeset file.

	-	Add code to libcomobj to understand the changeset file,
		which is needed in order to e.g. know the file names and file
		specific SIDs/state that correspond to a project global SID.

	-	Add code to all programs to maintain a lock (for the file
		$PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file
		$PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project
		global lock.

	-	Find/verify a complete transactional model that allows to repair
		complex changes to the set of files for a project that have
		been aborted in the middle. The current idea is to create the
		file $PROJECTHOME/.sccs/changeset with the deltas to the
		changeset during a complex update operation.

	-	Find a way to decide when to use SCCS V6 type history files.

		For the project mode, this is needed in order to prevent 
		historic SCCS implementations to believe they could modify
		files without knowing about project global locks.

		Currently, SCCS V6 needs to be usable manually for every
		history file using "admin".





-	Bourne Shell Missing features for POSIX compliance:

	- Support for $'...' quoting (this is not needed for the current
					version of POSIX but for the next POSIX
					version that will be named SUSv8).
					The development of SUSv8 will start in
					late 2016.

	We are now expecting the Bourne Shell to be fully POSIX compliant.

-	Bourne Shell further TODO list:

	-	Finish loadable builtin support.

	-	POSIX does not allow us to implement ". -h", so we will
		add a "source" builtin to be able to implement "source -h"

-	The following builtins (that are available in bsh) are still missing in
	the Bourne Shell:

	err			echo with output going to stderr
	glob			echo with '\0' instead of ' ' between args
	env			a builtin version of /usr/bin/env

	The following bsh intrinsics are still missing in the Bourne Shell:

	-			the restricted bsh has restriction features that
				are missing in the Bourne shell.

	-	source -h	read file into history but do not execute

	and probably more features not yet identified to be bsh unique.



Author:

Joerg Schilling
D-13353 Berlin
Germany

Email: 	joerg@schily.net, joerg.schilling@fokus.fraunhofer.de

Please mail bugs and suggestions to me.
