New features with AN-2016-06-07:

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

	The new smake version mentioned above is smake-1.2.4

-	Bourne Shell: A bug with converting shell variables with negative values
	in Arithmetic expansions $((expr)) was fixed. This bug should have been
	a problem on all platforms but was only visible on HP-UX.

-	Bourne Shell: A bug introduced with support for $((expr)) was fixed:
	$( (cmd) > /dev/null) was internally converted into: "$((cmd) > /dev/null)"
	and thus failed. This was triggered with the "whatshell" script from
	Sven Mascheck that contains: "$( (:^times) )" to identify the Schily
	Bourne Shell.

-	Bourne Shell: The man page now mentions that $((--var)) and similar is
	non-portable (because not required by POSIX) and thus should be avoided
	in portable scripts.

-	Bourne Shell: The expression between "?" and ":" in $((expr)) is now
	always evaluated as if it was in parenthesis. This helps to correctly
	evaluate expressions like: $((1 ? 9+4<1 : 12))
	Thanks to Heiko Eifeldt for reporting.

-	Bourne Shell: The expression $((a = b = 2)) now sets "a" and "b".

-	Bourne Shell: postincrement now works with nested expressions.
	Thanks to Heiko Eifeldt for reporting.

-	Bourne Shell: nested "?" operators now work.
	Thanks to Heiko Eifeldt for reporting.


-	Bourne Shell: Arithmetic expressions $((...)) now may contain newlines.
	Thanks to the mksh tests from Thorsten Glaser

-	Bourne Shell: \NL sequences in arithmetic expressions $((...)) are
	now skipped as expected.
	Thanks to the mksh tests from Thorsten Glaser

-	Bourne Shell: cat 4<<-EOF now works. Whis bug was present since
	<<-word has been introduced with SVS III in 1981 to tell the shell to
	strip leading TABs.
	Thanks to the mksh tests from Thorsten Glaser

	This bug is intentionally left unfixed in "osh" the portable
	OpenSolaris Bourne Shell.

-	Bourne Shell: The test suite now works with a POSIX shell installed
	as /bin/sh. The old tests in arith/arith.sh did miss some quoting
	for '$((' and failed on many platforms (e.g. AIX and Linux).

-	Bourne Shell: aliases now may turn a word into a keyword. Fixed a bug
	in the lexer that was present since we added aliases.

-	Bourne Shell: fixed a bug that was present since at least SVS III in 1981
	when the Bourne Shell added support for an argument to the "continue"
	builtin. The bug caused a "continue" with a too large argument to act
	like "break" instead of "continue".
	Thanks to the mksh tests from Thorsten Glaser

	This bug is intentionally left unfixed in "osh" the portable
	OpenSolaris Bourne Shell.

-	Bourne Shell: add a note for the previoous continue bug in the 
	COMPATIBILITY section of the man page.

-	Bourne Shell: fixed an old bug that was not visible until we activated
	support for ${1234567890123} and that could cause a shell core dump when
	the number was larger than max signed int.

-	Bourne Shell: The test suite now skips tests that require 
	a POSIX OS if not on a POSIX OS. This is needed on AIX, Cygwin, HP-UX,
	Linux, OSX an some BSDs.
	POSIX compliant platforms with respect to exit()/waitid() are:

		Solaris, SCO UnixWare, FreeBSD, NetBSD.

-	Bourne Shell: The test suite was enhanced to include tests that verify
	correct behavior with the arithmetic expressions that failed with
	the version 2016-05-24.

-	Bourne Shell: The test suite was enhanced by tests for break, echo,
	set and test

-	Bourne Shell: Many test ideas for from the "mksh" test suite
	have been implemented. Thanks to Thorsten Glaser "mirabilos"
	for the permission to use these tests.

-	Bourne Shell: The test suite now knows whether it is run with
	our "bosh" or with another shell.

-	Bourne Shell: The test suite now works around the fact that modern
	AIX versions return "powerpc" for "uname -p" while we hardwired
	"rs6000" as older AIX versions do not support "uname -p".

-	Bourne Shell: The man page now mentios that the environment variable
	SVR3 switches on "echo -n" and "echo \t\c".

-	Bourne Shell: call popvar() only if the command had local variable
	definitions. This speeds up longer scripts like "configure".


-	Bourne Shell Missing features for POSIX compliance:

	- Do not list functions when calling "set" with no arguments.
	  Note that this POSIX requirement is seen as a POSIX bug as there
	  is no POSIX command to list function definitions.
	  NOTE that this will not be implemented before POSIX bug
	  http://austingroupbugs.net/view.php?id=1025 was fixed.

	- A POSIX whitepaper at: http://www.unix.org/whitepapers/shdiffs.html
	  claims that:
			IFS=o; violet

	  should not execute "vi". The normative text in the POSIX standard
	  describes the historic Bourne Shell behavior, but the rationale
	  describes the deviating behavior from "ksh".


	- Support for $'...' quoting (this is not needed for the current
					version of POSIX but for the next POSIX
					version that will be SUSv8)

	We are getting very close to full POSIX support.


-	Bourne Shell further TODO list:

	-	Try to make

		lastline=
		while read line
		do
			lastline=$line
		done < /etc/passwd
		echo "lastline=$lastline"

		print the last line of /etc/passwd without the exec "trick"
		that is documented in the man page.
	
	-	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 excute

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



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.
