New features with AN-2016-07-06: 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 - Star: Avoid to read cpio file names and link names that are longer than PATH_MAX. Thanks to Heiko Eißfeldt for the report. - Star: check for EOF while trying to read long TAR filenames. Thanks to Heiko Eißfeldt for the report. - Star: avoid to access the name field in the historical tar header. This could cause directories not to be recognized because the name field could be non-null terminated. Thanks to Heiko Eißfeldt for the report. - Star: try to avoid accessing data from outside the uname/gname fields in case a broken tar archive is used. Star now inserts a null byte at the end to prevent str*() functions to scan the data with probably no end. Thanks to Heiko Eißfeldt for the report. - Star: try to avoid data from outside a tar header while looking for an octal number in a field that does not contain the expected characters. Thanks to Heiko Eißfeldt for the report. - Bourne Shell: The "select" construct from ksh88 has been implemented. - Bourne Shell: The "read" command no longer requires a "name" type argument but uses "REPLY" as default when no "name" type argument has been specfied. This is a secondary effect from implementing the "select" construct. - Bourne Shell: error.c::failed_real() now uses the newer popvars() instead of the outdated namscan(popval). - Bourne Shell: A new builtin command "local" is supported to implement local variables in functions. The scope of the local variables is limited by the return from the function where it has been created. - Bourne Shell: The shell no longer "exports" readonly shell variables to shell scripts that do not start with "#!/bin/...". This bug has been introduced by Sun in the 1990s while trying to fix bug #3000663: local (unexported) shell variables are visible to shell scripts that do not start with "#!/bin/...". Bug #3000663 was present in the Bourne Shell since at least SVr4. It was caused by the fact that the shell runs a script by a forked shell process that has access to a copy of the shell internal variable tree and unexported variables are not cleared before running the script. - Bourne Shell: new tests have been introduced for bug #3000663 and the resulting bug introduced by Sun while trying to fix bug #3000663. - Bourne Shell: skip test for ^ as alias to | in pipes if the testsuite is not run with the Bourne Shell - Bourne Shell: Explain why the getopt test that is intended to identify an unpatched Solaris libc::getopt() that causes SIGSEGV also checks whether a different shell detects the end of arguments correctly. dash e.g. fails to pass this test. - Bourne Shell: make the conformance tests less picky with respect to error messages to let e.g. "dash" pass if just the error message differs. - 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.