New features with AN-2016-08-01: 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 - libshedit: We now have a complete set of makefiles for libshedit like in other libraries, so there is potentially a shared library and a library variant compiled for gprof. - libshedit: The created library now is named "libshedit.*" like in the OpenSolaris makefile system. The old name "libshelledit" was given up. - Bourne Shell: A comment in Makefile had a typo: CPPOPTS += -DPOSIX_BOTH_PATH=\"/bin/sh\" fixed to: CPPOPTS += -DPOSIX_BOSH_PATH=\"/bin/sh\" - Bourne Shell: "read" now again works correctly with a single VAR argument. The bug has been introduced with 2016-07-06. Thanks to Martin Väth for reporting. - Bourne Shell: A bug introduced with schily-2016-07-25 in test was fixed. "test 0 -eq 1" again returns FALSE. Thanks to Martin Väth for reporting. - Bourne Shell: set -u; echo "$@" no longer returns an error with empty arg list. The shell now behaves like ksh. Thanks to Martin Väth for reporting. - Bourne Shell: "case" no longer remembers the last exit code in case that no pattern matches. Thanks to Martin Väth for reporting. - Bourne Shell: on platforms like Linux that do not have gmatch(), "*[!a-z]*" did incorrectly match an empty string. We fixed our local gmatch() implementation. Thanks to Martin Väth for reporting. - Bourne Shell: Add new code to print a failure message when dup() fails. This is controllable with -DDO_DUP_FAIL and helps to identify bad file descriptor redirect statements. Thanks to Martin Väth for reporting a bad git script that did silently fail with the Bourne Shell, but an error message is printed by ksh. - Bourne Shell: A hack (similar to what ksh88 does in its POSIX reference variant) has been introduced with the following behavior: - If an argument did not cause any parameter substitution or command substitution, no field splitting is applied. - If an argument contains a $@ parameter substitution, standard field splitting is applied. - If any other parameter substitution or command substitution happened inside the argument, field splitting using the value of $IFS is applied. This is related to: 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". - Bourne Shell: The test suite now checks for set -u; echo "$@" - Bourne Shell: The test suite now checks for test 0 -eq 1 - Bourne Shell: The test suite now checks the "read" builtin. - Bourne Shell: The test suite now checks whether case uses a default exit code of 0 if no case label matches. - Bourne Shell: The test suite now runs "configure" with the installed system shell and the test shell and compares the results. - Bourne Shell: The split() function has been optimized - 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. - 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.