New features with AN-2018-07-02: 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 *** 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! The new smake version mentioned above is smake-1.2.4 - psmake: a link to include/schily/times.h is now created, since that file is needed to compile psmake with DJGPP. - bsh/Bourne Shell/libshedit: Directory tree expand() now works with a new function "lopendir()" that opens directories of arbitrary path len on modern OS platforms. This is important for either a long echo */*/*/*.... or with command line TAB expansion. - bsh/Bourne Shell/libshedit: A new function "lstatat()" can stat files of arbitrary path len on modern OS platforms. - Bourne Shell: the new lstatat() function requires to include "fcntl.h" and this comes with an "open()" prototype. We needed to change a local variable "open" to "openbr" to avoid a GCC warning. - bsh/Bourne Shell: a new function lchdir() allows to cd(1) into long path names. - bsh: the builtin pwd(1) now supplies a buffer with 8192 bytes of space to support longer directory path names. - Bourne Shell: the directory management code in pwd.c has been rewritten to be able to deal with unlmied path length. The new code is approx. 400 bytes larger than the old code but a BSS variable with 1024 bytes could be reduced to 2 bytes, so the overall size did shrink by 600 bytes for normal usage. - Bourne Shell: A work around for a Solaris kernel bug related to the syscall getcwd() has been added. Solaris keeps returning ERANGE after a path name longer than PATH_MAX has been returned and works again only after a chdir() syscall was successfull. - bsh/Bourne Shell: The test(1) builtin now uses a new function lstatat() that permits access to files without path name length limitation. - Bourne Shell: A new #ifdef -DO_ALWAYS_POSIX_SH allows to make the shell to always start up in 100% POSIX mode. - Bourne Shell: a new Bourne Shell variant has been created: "pbosh". This is a shell that by default is in POSIX mode and that is intended to have all POSIX extensions deactivated. This shell is intended to be used to check shell scripts for portability. If you like to create a shell with similar features as seen in "dash", you may do the following: cd pbosh smake clean smake 'COPTX=-DNO_INTERACTIVE -DDO_SYSLOCAL' This still creates a shell with multi-byte support as required by POSIX, but otherwise includes similar featues. - Bourne Shell: pbosh has a second Makefile called Mdashalike that disables the interactive history editor and persistent aliases but enabled the "local" builtin. To use this do the following: cd pbosh smake clean smake -f Mdashalike Note that POSIX requires multi-byte support except when on small embedded devices. Since "bosh" supports multi-byte characters and still is faster than "dash", it is a nice replacepent for "dash". If "bosh" could disable multi-byte support to become as simple as "dash", it would be more than 30% faster than "dash" and smaller than "dash" and also smaller than "dash". - Bourne Shell: The "fc" is now automatically deactivated in case that the shell has been compiled without support for the history editor. This helps to keep the size of the shell low in such a case. - Bourne Shell: The variable ${.sh.version} now includes a word that helps to find whether this is shell is "osh", "bosh" or "pbosh". This helps to write $HOME/.shrc in a way that is accepted by both the exnahnced "bosh" and the POSIX-only "pbosh". - Bourne Shell: The man page now explains that non blank characters after "#" inside shell scripts are only a problem after the shell command "set -o hashcmds" has been issued. - bsh/Bourne Shell: the variable "deftab" has been moved from "hashcmd.c" to "abbrev.c" to permit "pbosh" to be compiled without hash commands enabled. - Bourne Shell: hashserv.c has a better #ifdef statement to permit to compile the Bourne Shell without support for the "builtin" builtin command. - Bourne Shell: name.c: fixed an #ifdef around the REPLY variable to support compileing "pbosh". - Bourne Shell: args.c: new #ifdef structure to permit to disable persistent aliases in "~/.globals" and ".locals". This is needed for "pbosh". - Bourne Shell: The man page now mentions "pbosh". - 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, js@cs.tu-berlin.de joerg.schilling@fokus.fraunhofer.de Please mail bugs and suggestions to me.