New features with AN-2016-06-20: 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 - All: introduced a new "make" target "tests" that starts the conformance test suite for those prorgrams that already implement it. The following projects already have an automated unit test: - SCCS This is the oldest testsuite that started in 2010. The test suite first removes all sccs binaries in the sccs source tree and then compiles and installs a new set of binaries for the install directory /tmp/SCCSTEST. Then the binaries in the source tree are removed again and rebuild. - patch These tests have been written in May 2015. It is recommended to have the schilytools installed before running this test as it likes to see /opt/schily/ccs/bin/diff This test suite creates random files and makes patch tests. It needs 5 minutes to 2 hours depending on the speed of the machine. - sh A new test suite that started in January 2016 The whole test suite for all three programs takes aprox. 10 minutes on a typical PC. - All: conf/oarch.sh added a rule for AIX - cstyle: long lines now get a new error message that includes the actual line length. - cstyle: added a new check for files that do not end in a newline. - p: The p programm could abort on Linux when run from a "sudo" session because there was no access to open /dev/tty. P now only prints a warning and falls back to "stderr". - patch: Conformance tests now work on Linux To those who like to run the "patch" test suite, please note that "gpatch" is used as a reference for some of the tests where it works correctly. Since gpatch is buggy, there may be error messages from gpatch that you may ignore. If the test passes as a whole, everything is OK. - SCCS: Mention in the sccs-admin man page and online-help that SCCSv6 supports anything but nul characters in text files. - SCCS: diff: fixed a bug introduced in August 2015 while introducing a workaround for a HP-UX strftime() bug. The bug caused diff with "-c" to print a rotten time string. The workaround now only hits when using "diff -u" and thus includes the "%z" format from HP-UX that needs to be fixed. - SCCS: sccs/lib/comobj/src/dodelt.c Fixed a bug with time stamp handling that has been introduced Oct 14 2015 while trying to add better support for a GMT variant of SCCS. The bug could cause messages like: "Time stamp later than current clock time" - SCCS: sccs/lib/comobj/src/putmeta.c was fixed to avoid emitting empty "^AG r" entries in SCCSv4 format. The entry is a SCCSv6 meta data entry. The bug has been introduced Feb 25 2015 while making the code better structured. - SCCS: sccs/cmd/src/get.c was fixed for the GMT variant of SCCS. - SCCS: When the special test binaries for /tmp/SCCSTEST have been built, a new set of normal binaries is built. - SCCS Added a test for the correctness of the history format created by sccs admin. - Test Framework: The tests now may be configured to expect any non-null text on stdout or stderr. - Bourne Shell: Fix a bug from the very beginning, that caused the Bourne Shell to stop executing any command after entering the following command: for i in 1 2 3 ; do echo $i; break 0; done in an interactive shell. - Bourne Shell: continue/break now return a zero exit status if the argument "0" is passed. This is required by POSIX. - Bourne Shell: "getopts" now sets $OPTARG to the failing option character (in C "optopt") in case that getopt() returned '?' or ':'. This is a change introduced by POSIX. - Bourne Shell: "getopts" now sets $name to '?' if getopt() returned -1. This is a change introduced by POSIX. - Bourne Shell: "test" now honors the changed semantics from POSIX. With an argument count between 0..4, the actions are selected from the number of args only. - Bourne Shell: the "find" builtin now may me disabled with the command line "smake COPTX=-DNO_SYSFIND" - Bourne Shell: the "printf" builtin now may me disabled with the command line "smake COPTX=-DNO_SYSPRINTF" - Bourne Shell: The hash code now indludes a bit to identify a special builtin. This is needed to switch on special handling for special builtins. - Bourne Shell: The shell now exits again with I/O redirect errors for special builtins. - Bourne Shell: The shell now exits with option errors for special builtins. This is required by POSIX. - Bourne Shell: "command" now only prevents the shell to exit for the command that is the first argument. This feature is no longer propagated to commands executed from "eval" to follow POSIX. - Bourne Shell: The "getopts" tests have been rewritten to permit them to be used with other shells. - Bourne Shell: The "getopts" tests now include a test that checks whether the shell has been linked against an unfixed version of getopt() from the Solaris libc that may cause an abort via SIGSEGV with some "getopts" arguments. - Bourne Shell: Some "here" tests have been given a larger timeout in order to permit them to be run on a slow machine. - Bourne Shell: New tests to verify the correct behavior with shell errors have been added. - Bourne Shell: The file macro.c was rewritten to use more functions in order to limit the line width to 80 chars. - Bourne Shell: The code has been modified to match "Cstyle" conventions. This has been done before with modified source code but not with untouched code that was left in the state from AT&T. Now that "sh" contains less that 25% original AT&T code, it makes no sence to keep the so far untouched code in an indentation style that is not compatible with OpenSolaris. - 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.