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 Eißfeldt 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 Eißfeldt for reporting. - Bourne Shell: nested "?" operators now work. Thanks to Heiko Eißfeldt 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.