New features with AN-2018-10-11: 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 The new smake version mentioned above is smake-1.2.4 The recent smake version is smake-1.3 *** 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! - Makefilesystem: The OS400 support now defines the CPU type as "powerpc" and lo longer uses the virtual serial number reported by "uname -m" Thanks to Jack Woehr for reporting - Makefilesystem: The OS400 support now uses -fpic as compiler option for gcc to be able to compile shared libraries. Thanks to Jack Woehr for reporting - Makefilesystem: The OS400 support now uses "gcc" instead of "ld" to finally link shared libraries. - autoconf/ config.guess & config.sub added support for OS400 Thanks to Jack Woehr for reporting - conf/oarch.sh changed to report the CPU type as "powerpc" for OS400 - RULES: added a new configuration file: RULES/x86_64-linux-pcc.rul to support pcc on Linux. Note that due to massive bugs in the recent pcc version for #pragma weak, schilytools cannot be compiled with the recent pcc. Thanks to a hint from Steffen Nurpmeso - RULES: linux workaround for Linud ld(1) bug: fixes sort command to permit libschily-2.0 - libschily: match.c: patcompile() could cause a stack overflow with abnormal patterns like: [[:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx as a result from a typo (used < instead of <=) Thanks to Heiko Eißfeldt for reporting - libschily: fstream.c: added an aux pointer to struct fstream to ba able to detect endless alias recursion on the second word of the alias replacement in bsh(1). Thanks to Heiko Eißfeldt for reporting - libschily: changed major version number to 2 as the fstream interface has become binary incompatible to previous versions from adding this aux pointer. *** This is an important notice to packager *** --> You need to change the list of filenames to transfer - libschily: fstream.c: fixed a bug in fspushcha() that caused the character to be always pushed to the main data stream instead of the current pushed data (if present). - libschily: fstream.c: fixed a bug in fspushcha() that could cause not to create space for a wide character in case the low 8 bits of the character are all zero. - libschily: changed the symbol __c to __js_fp to avoid a name clash on Linux that affects the stdio implementation in libschily. Affected files: libschily/stdio/schilyio.h libschily/stdio/fgetline.c libschily/stdio/fgetstr.c libschily/stdio/getdelim.c - libfind: Added a date to the -version output and added version.h - libfind/star/mkisofs/bsh/Bourne Shell: "find -xdev" is no longer UNIX compatible but rather POSIX compatible. *** Incompatible change *** *** POSIX wording from 1992 is in conflict with UNIX implementation *** Background: POSIX in 1992 introduced a wording for -xdev that was in conflict with existing implementations and required a behavior that is impossible to implement with nftw(3). Today, half of the implementations follow the UNIX rules and half of the implementations follow the POSIX text. To solve the conflict, POSIX decided to add the old UNIX "find -mount" (that was intended as an alias to "find -xdev") and to be implemented with the old UNIX behavior and requires "find -xdev" to follow the POSIX text from 1992. At the same time, POSIX introduced a new nftw(3) flag FTW_XDEV as a complement to FTW_MOUNT with the behavior that matches the POSIX requirements for "find -xdev". As a result, libfind now makes -xdev an alias to -mount+ and keeps the -mount primary with the old behavior. The difference is: -mount does not lists mount points at all and does not descend into them. -xdev lists directories that are mount points but does not descend into these directories. - bsh: Aliases now always result in a pushed instance of the fstream object to keep track of data limits for the alias replacement strings. This is needed in order to be able to detect endless alias recursion on the 2nd word of an alias replacement. Thanks to Heiko Eißfeldt for reporting - Bourne Shell: added a new pointer to struct fileblk and struct filehhdr to be able to detect alias recursion on the 2nd word of the alias replacement. Thanks to Heiko Eißfeldt for reporting - Bourne Shell: The variable "abegin" that is used to inhibit the expansion of "begin aliases" past the first word on a command command (prevent begin alias if abegin == 0) now is only restored for aliases that end in a space if the value of abegin was 0 at that time. This happens after the parser did already see the final result of the first word. This prevents to do unintended begin alias expansion past the first word in case that the first word did get more than one alias expansion via recursive aliases. - Bourne Shell: macro.c:_macro() add a second nul byte to the AT&T hack for empty strings from 30 years ago. - Bourne Shell: xec.c: added a workaround to make 'case "" in "")' work in POSIX mode. A 30 year old AT&T hack together with a recent POSIX change that forbids to use plaintext comparison with "case" if the pattern matcher failed caused this problem. Thanks to Avi Halachmi for reporting - Bourne Shell: added a unit testcase for the above problem - Bourne Shell: First attempt to fix the previously wrong behavior with: sh -c 'in=$1; pre=${1%?}; out=${in#"$pre"}; printf [%s] "$out"' -- AB\"C Expected result: "[C]" Previously observed: "["C]" The new code after the attempt to fix passes the Bourne Shell test suite, but there may not be sufficient coverage, so please test and report. Thanks to Avi Halachmi for reporting - Bourne Shell: added a unit testcase for the above problem - Bourne Shell: many cases with "set -e" failed to do the right things: - Exit, when it should exit - No Exit, when there should be no exit Thanks to Avi Halachmi for reporting - Bourne Shell: added 11 new unit testcases for the above problem - Bourne Shell: set -e now works correctly for builtin commands. Thanks to Avi Halachmi for reporting - Bourne Shell: Reverted a modification from Sun/Solaris from the 1990s that affects command lists like "{ cm1; cmd2; cmd3; }". The reverted code caused the set -e inhibit code (that is used when the exit code of a command is evaluated by another cmd) to only affect the first command from a list and was intended to work for sourcing scripts. Note that dot-script-files are parsed in a way that makes the whole file a big "command list" instead of distinct line by line commands. Unfortunatly the modifications from Sun/Solaris results in set -e to give wrong behavior for functions. For the compilation that results in the binary "obosh", the mofification from Sun/Solaris is kept for compatibility reasons. Thanks to Avi Halachmi for reporting - Bourne Shell test suite: The configure compare test now uses CONFIG_NOFAIL=TRUE to avoid aborts on unknown platforms. Thanks to Jack Woehr for reporting - calc: Added a date to the -version output - calltree: Added a date to the -version output and added version.h - change: Added a date to the -version output - compare: New options begin1= and begin2= have been introduced. These options have been planned in 1985 already but implementation stopped after being halfway ready. - compare: Added a date to the -version output - copy: Added a date to the -version output - cpp: added a -version option - hdump/od: Added a date to the -version output - p: Added a date to the -version output - readcd: Added a date to the -version output - smake: The fastalloc() routine did use a 32 bit alignment on 32 bit sparc systems, but we introduced a "long long" based time value with nanosecond support in May 2018. As a result, there have been alignment problems in 32 bit sparc binaries, since recent compilers create a "store double" instruction to assign long long values. So our struct obj was mislaligned. Thanks to Michael Bäuerle for reporting - smake: archconf.c now sets MAKE_MACH to "powerpc" if on OS400 - smake: version.h added and smake -version now prints version date - smake (psmake): added version.h to rmlinks cpfiles lnfiles - SunPro Make: make/dmake -m no longer results in a warning except when the argument is unsupported. - strar: Added a date to the -version output - ved: buffer.h changed "struct _header" into "struct _headr" to avoid a name clash with a system header on OS400. Thanks to Jack Woehr for reporting - 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, joerg.schilling@fokus.fraunhofer.de Please mail bugs and suggestions to me.