New features with AN-2018-10-11:

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. If your smake is too old and aborts, ensure this
	*** 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 2014-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!


-	Makefilesystem: The OS400 support now defines the CPU type as "powerpc"
	and lo longer uses the virtual serial number reported by "uname -m"

	Thanks to Jack Woehr for reporting

-	Makefilesystem: The OS400 support now uses -fpic as compiler option
	for gcc to be able to compile shared libraries.

	Thanks to Jack Woehr for reporting

-	Makefilesystem: The OS400 support now uses "gcc" instead of "ld"
	to finally link shared libraries.

-	autoconf/ config.guess & config.sub added support for OS400

	Thanks to Jack Woehr for reporting

-	conf/oarch.sh changed to report the CPU type as "powerpc" for OS400

-	RULES: added a new configuration file: RULES/x86_64-linux-pcc.rul
	to support pcc on Linux.

	Note that due to massive bugs in the recent pcc version for
	#pragma weak, schilytools cannot be compiled with the recent pcc.

	Thanks to a hint from Steffen Nurpmeso

-	RULES: linux workaround for Linud ld(1) bug: fixes sort command to permit
	libschily-2.0

-	libschily: match.c: patcompile() could cause a stack overflow with
	abnormal patterns like: [[:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	as a result from a typo (used < instead of <=)

	Thanks to Heiko Eifeldt for reporting

-	libschily: fstream.c: added an aux pointer to struct fstream to
	ba able to detect endless alias recursion on the second word of the
	alias replacement in bsh(1).

	Thanks to Heiko Eifeldt for reporting

-	libschily: changed major version number to 2 as the fstream interface
	has become binary incompatible to previous versions from adding this 
	aux pointer.

	*** This is an important notice to packager ***
		--> You need to change the list of filenames to transfer

-	libschily: fstream.c: fixed a bug in fspushcha() that caused
	the character to be always pushed to the main data stream instead of
	the current pushed data (if present).

-	libschily: fstream.c: fixed a bug in fspushcha() that could cause
	not to create space for a wide character in case the low 8 bits
	of the character are all zero.

-	libschily: changed the symbol __c to __js_fp to avoid a name
	clash on Linux that affects the stdio implementation in libschily.

	Affected files: libschily/stdio/schilyio.h libschily/stdio/fgetline.c
	libschily/stdio/fgetstr.c libschily/stdio/getdelim.c

-	libfind: Added a date to the -version output and added version.h

-	libfind/star/mkisofs/bsh/Bourne Shell: "find -xdev" is no longer
	UNIX compatible but rather POSIX compatible.

	*** Incompatible change ***
	*** POSIX wording from 1992 is in conflict with UNIX implementation ***

	Background: POSIX in 1992 introduced a wording for -xdev that was in
	conflict with existing implementations and required a behavior that
	is impossible to implement with nftw(3).

	Today, half of the implementations follow the UNIX rules and half of
	the implementations follow the POSIX text.

	To solve the conflict, POSIX decided to add the old UNIX "find -mount"
	(that was intended as an alias to "find -xdev") and to be implemented
	with the old UNIX behavior and requires "find -xdev" to follow the
	POSIX text from 1992. At the same time, POSIX introduced a new nftw(3)
	flag FTW_XDEV as a complement to FTW_MOUNT with the behavior that
	matches the POSIX requirements for "find -xdev".

	As a result, libfind now makes -xdev an alias to -mount+ and keeps
	the -mount primary with the old behavior. The difference is:

	-mount	does not lists mount points at all and does not descend
		into them.

	-xdev	lists directories that are mount points but does not
		descend into these directories.

-	bsh: Aliases now always result in a pushed instance of the fstream
	object to keep track of data limits for the alias replacement
	strings.

	This is needed in order to be able to detect endless alias recursion
	on the 2nd word of an alias replacement.

	Thanks to Heiko Eifeldt for reporting

-	Bourne Shell: added a new pointer to struct fileblk and struct filehhdr
	to be able to detect alias recursion on the 2nd word of the alias
	replacement.

	Thanks to Heiko Eifeldt for reporting

-	Bourne Shell: The variable "abegin" that is used to inhibit the 
	expansion of "begin aliases" past the first word on a command
	command (prevent begin alias if abegin == 0) now is only restored
	for aliases that end in a space if the value of abegin was 0 at that
	time. This happens after the parser did already see the final result
	of the first word.

	This prevents to do unintended begin alias expansion past the
	first word in case that the first word did get more than one alias
	expansion via recursive aliases.

-	Bourne Shell: macro.c:_macro() add a second nul byte to the AT&T hack
	for empty strings from 30 years ago.

-	Bourne Shell: xec.c: added a workaround to make 'case "" in "")' work
	in POSIX mode. A 30 year old AT&T hack together with a recent POSIX
	change that forbids to use plaintext comparison with "case" if the
	pattern matcher failed caused this problem.

	Thanks to Avi Halachmi for reporting

-	Bourne Shell: added a unit testcase for the above problem

-	Bourne Shell: First attempt to fix the previously wrong behavior with:

	sh -c 'in=$1; pre=${1%?}; out=${in#"$pre"}; printf [%s] "$out"' -- AB\"C

	Expected result: "[C]"
	Previously observed: "["C]"

	The new code after the attempt to fix passes the Bourne Shell test
	suite, but there may not be sufficient coverage, so please test and
	report.

	Thanks to Avi Halachmi for reporting

-	Bourne Shell: added a unit testcase for the above problem

-	Bourne Shell: many cases with "set -e" failed to do the right things:

	-	Exit, when it should exit

	-	No Exit, when there should be no exit

	Thanks to Avi Halachmi for reporting

-	Bourne Shell: added 11 new unit testcases for the above problem

-	Bourne Shell: set -e now works correctly for builtin commands.

	Thanks to Avi Halachmi for reporting

-	Bourne Shell: Reverted a modification from Sun/Solaris from the
	1990s that affects command lists like "{ cm1; cmd2; cmd3; }".
	The reverted code caused the set -e inhibit code (that is used when
	the exit code of a command is evaluated by another cmd) to only affect
	the first command from a list and was intended to work for
	sourcing scripts. Note that dot-script-files are parsed in a way
	that makes the whole file a big "command list" instead of distinct
	line by line commands. 

	Unfortunatly the modifications from Sun/Solaris results in set -e to
	give wrong behavior for functions.

	For the compilation that results in the binary "obosh", the 
	mofification from Sun/Solaris is kept for compatibility reasons.

	Thanks to Avi Halachmi for reporting

-	Bourne Shell test suite: The configure compare test now uses 
	CONFIG_NOFAIL=TRUE to avoid aborts on unknown platforms.

	Thanks to Jack Woehr for reporting

-	calc: Added a date to the -version output

-	calltree: Added a date to the -version output and added version.h

-	change: Added a date to the -version output

-	compare: New options begin1= and begin2= have been introduced.
	These options have been planned in 1985 already but implementation
	stopped after being halfway ready.

-	compare: Added a date to the -version output

-	copy: Added a date to the -version output

-	cpp: added a -version option

-	hdump/od: Added a date to the -version output

-	p: Added a date to the -version output

-	readcd: Added a date to the -version output

-	smake: The fastalloc() routine did use a 32 bit alignment on 32 bit sparc
	systems, but we introduced a "long long" based time value with nanosecond
	support in May 2018. As a result, there have been alignment problems
	in 32 bit sparc binaries, since recent compilers create a "store double"
	instruction to assign long long values. So our struct obj was mislaligned.

	Thanks to Michael Buerle for reporting

-	smake: archconf.c now sets MAKE_MACH to "powerpc" if on OS400

-	smake: version.h added and smake -version now prints version date

-	smake (psmake): added version.h to rmlinks cpfiles  lnfiles

-	SunPro Make: make/dmake -m no longer results in a warning except when
	the argument is unsupported.

-	strar: Added a date to the -version output

-	ved: buffer.h changed "struct _header" into "struct _headr" to avoid
	a name clash with a system header on OS400.

	Thanks to Jack Woehr for reporting



-	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.
