New features with AN-2017-03-30:

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


-	The file README.compile now explains how to compile with the
	gcc address sanitizer and with afl-gcc (American Fuzzy Lop).
	Thanks to a hint from Heiko Eifeldt.

-	A typo in the autoconf file xconfig.h.in has been fixed

-	libschily:comexit() the memory allocated via on_comerr() is now
	freed with comexit(). 
	Thanks to a hint from Heiko Eifeldt.

-	Cdda2wav: changed the variable userverbose from "int" to "long".
	This is needed as getargs() always uses a long * argument for a
	function for a callback option. The result of this bug was that
	"cdda2wav -vall" did set the output fd to 0 and as a result,
	error messages have been printed to stdin instead of stderr.
	This of course created problems with GUI frontends if the
	cdda2wav binary was a 64-bit binary.

	Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>

-	Cdda2wav: cdda2wav out-fd=2 no longer delays the output because the
	output is buffered.

	Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>

-	Cdda2wav: modified the man page to make it obvious that the new cdda2wav
	auto-detects whether a drive supports to read C2-error lists.

	Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>

-	Cdda2wav: added a workaround for a problem caused by a Linux stdio bug
	that causes "stderr" to be buffered even though POSIX requires it
	to be unbuffered.

	Thanks to a hint from Thomas Niederreiter <tn@xcdroast.org>

-	Bourne Shell: _macro() is now an alternate global interface to macro()
	that does not call fixstak() and thus allows to be used to create
	intermediate strings.

-	Bourne Shell: ps_macro() now comes with a second argument "perm" that
	tells it to convert the resulting string into a permanent string
	using make().

-	Bourne Shell: The prompt setup for libshedit now makes uses from
	the permanent strings from ps_macro()

-	Bourne Shell: cat << EOF
	issued in an interactive shell (that expands $PS2) no longer clobbers
	the content of the here document.

-	Bourne Shell: printf '\0123' now prints correctly the equivalent of '\n3'
	Before, printf did incorrectly parse up to 4 octal digits in case that
	an octal number started with '0'.

-	Bourne Shell: a typo in the man page was fixed for the "test" description.

-	Bourne Shell: the unit tests have been enhanced to cover the printf '\0123'
	case.

-	Bourne Shell: the unit tests have been enhanced to cover the problem with
	the PS2 expansion while reading here documents.

-	smake: The function fastalloc() no longer allocs too much in somes pecial
	cases. Thanks to a hint from Heiko Eifeltd


-	strar: Not yet ready, the current status is:

	This command is usable for basic work already The following features
	are currently missing:

	-	A method to descend directory trees, e.g. libfind

	-	A noclobber flag

	-	A method to avoid to replace files that are more recent on
		disk than in the archive.

	-	Set the file permissions

	-	Set the original file time stamps

	-	Set the original file owners.

	These features will be implemented in a future version.




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

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

	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.
