New features with AN-2018-09-04:

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

	*** 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!

	The new smake version mentioned above is smake-1.2.4


-	libschily: Fixed the behavior of the umask/chmod perm parser for the
	case where "who" was not specified and the operator is '='. POSIX
	requires here to first clear all bits in the old value before adding
	new bits. The old implementation did clear only the bits retrieved
	from umask(2).

-	libschily: The umask/chmod perm parser now returns -1 for the mode
	string "u", since the operator is missing. Before, it just printed an
	error message but did not return -1.

-	libschily: astoul() and astoull() now by default permit to prefix 
	the unsigned number by a "-". This is required by POSIX for strtoul()
	and strtoull() and our implementation needs to be compatible to POSIX
	to make the printf(1) implementation in the Bourne Shell POSIX
	compatible on older platforms.

	Thanks to Robert Elz for reporting

-	libschily: floating point conversion in printf: avoid a GCC bug
	that converts

		while (*s)
			*s++ = toupper(*s);
	into

		while (*s++)
			*s = toupper(*s);

-	libschily: floating point conversion in printf: No longer use the
	UNOS derived "(Infinity)" and "(NaN)" but "inf" and "nan".

-	libschily: floating point conversion in printf: Now print -inf for
	a negative infinity value.

-	libschily: fconv.c added new functions
	_ftoes()/_ftofs()/_qftoes()/_qftofs() to be able to add a new parameter
	without changing the interface for ftoes()/ftofs()/qftoes()/qftofs()

-	libschily: added a new file format.h to share interface definitions
	between format.c and fconv.c

-	libschily: The new flag UPPERFLG is now implemented in fconv.c.

-	libschily: some manpages did not expand the %e% keyword, therefore
	SCCS has been told to expand it now.

-	libfind: The "-perm +mode" feature before has been recognised if the
	+ sign appeared before any character from  the set "ugoa", but since
	the string "+u" represents a POSIXly valid "permcopy" operation, the
	new version of libfind only accepts this specific feature if the
	mode string starts with a "a". Since (with find) the start value of
	the perm parser is 0, any valid mode string may be prefixed by "a+,"
	without changing the resulting value, the feature is usable with
	"-perm +a+,mode".

-	libfind: The phrase "-perm /mode" has been added as an alias for
	"-perm +mode", but since "/" is not permitted in a POSIX mode string,
	this methos does not require to prefix the mode string with "a+," to
	work. "-perm /mode" also helps to give comptibility with GNU find.

-	libfind: "-chmod mode" no longer causes a wrong treatment in some
	cases as the special treatment for "-perm +mode" no longer applies
	to -chmod too.

-	libfind: new function find_strvers() returns the version string.

-	libfind: version bumped to 1.7

-	libstreamarchive: the man page now correctly explains that in 
	BINARY mode, the values for uname/gname/path/linkpath are not 
	coded in UTF-8.

-	sfind: the man page now reflects the changes in libfind.

-	bsh/Bourne Shell/star: a very long path name could cause a core dump
	with a "chdir()" operation in some cases, as there was no check for
	pointer != NULL when restoring the '/' character while hopping over
	parts of the path name.

	Thanks to Heiko Eifeldt for reporting.

-	Bourne Shell: conformance tests: The printf tests that depend on
	'od' now use a better sed filter to prevent differences caused
	by different amount of space in the od output at the beginning
	of a line.

	Thanks to Robert Elz for reporting

-	Bourne Shell: conformance tests: printf tests for negative 
	integer numbers have been added. This is important as POSIX
	requires "unsigned numbers" that start with a '-' sign to be
	parsed as if they were signed numbers.

	Thanks to Robert Elz for reporting

-	Bourne Shell: conformance tests: the regression test "bug01" now
	sets PS4='+ ' to avoid wrong test results in case the calling shell
	exports a different PS4 value.

	Thanks to Robert Elz for reporting

-	Bourne Shell: The man page now mentions the default $HOME/.shrc
	together with first mentioning $ENV.

-	star: "star -c H=exustar -pax-o binary" now correctly results in
	unencoded strings for uname/gname/path/linkpath. There was preliminary
	code for the -copy mode but the final changes for this binary mode
	have been forgotten. This was caused by a change of a variable name 
	from "copyflag" to "binflag" in May 2018.

	WARNING: If you created archives during the past three months using the
	option "-pax-o binary", you definitely need to recreate the archives
	in case there are non-ascii characters in values for the named 
	keywords.

-	star: The code to set the time stamp for extracted files has been
	changed to correctly deal with symbolic links.

	In former times, time stamps for symlinks have not been set at all
	as there was n way to do that.

	Later, with the availability if utimensat() This could be done for
	symlinks as well, if the target systen supports utimensat().

	Recently, the code was rearranged to always use utimensat(), but
	to use an emulation on older systems. This resulted in sometimes
	setting the timestamp of the symlink target instead of the
	symlink, depending on how the emulation could be implemented.

	The new code knows how the emulation is done and avoids to set
	the times for the symlink targets on older platforms where the
	emulation does not (cannot) support to set the time of symlinks.

	Thanks to Stephane Chazelas for reporting.

-	star: star -x -to-stdout no longer tries to set the "not extracted"
	file to Jan 1 1970 in case of an extraction error.

-	star: The option -secure-links has been made the default except when
	extracting dumps with the -restore option.

	The reason for that change is that a handcrafted tar archive could
	first include a symlink with absolute target name, e.g. x -> /etc
	and then include a file x/passwd that would be extracted using 
	the 'x' link to result in /etc/passwd.

	Our solution with -secure-links is the same since 20 years: do not
	extract the problematic symlink and as a result, the later file 
	will be extracted into the local directory tree.

-	star: a new option -no-secure-links allows to disable the secure
	default behavior.

-	star: Added a new help output to the error statistics in case that
	a file has been skipped because it contains /../ or when a symbolic
	link has been skipped because it points to an absolute path or
	because the symlink target contains /../. This help-text mentions
	the options -.. and -secure-links respectively.

-	star: the archive format man page now correctly explains that in 
	BINRAY mode, the values for uname/gname/path/linkpath are not 
	coded in UTF-8.

-	ved: If the .vedtmp.* file contains a position < 0, this is now seen
	as something illegal and the cursor position is set to 0. This avoids
	a core dump in this case.

-	ved: the binding now contains a new set of functions that is used
	in case that the current character is outside the previous range 0..255.
	This is a preparation for multi-byte support in ved.

-	ved: Some Cstyle fixes have been applied.

-	ved: Some of the file IO functions have been changed to use void *
	instzead of Uchar * buffers.



-	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, js@cs.tu-berlin.de
	joerg.schilling@fokus.fraunhofer.de

Please mail bugs and suggestions to me.
