New features with AN-2020-05-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 newer smake *** to compile this source. If your smake is too old and aborts, ensure to *** use the recent smake 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 2018-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! BUG WARNING: Please never report bugs only to Linux distributions as they usually do not forward these bug reports upstream and as the Linux distributions typically do not let skilled people check the bugs. We did not hear about a FIFO problem in star for a long time. Then a problem on Linux occurred once every 6000-10000 tries but it did not happen on Solaris after even 10 million tries, so it was not known besides Linux. BUG WARNING: GNU make release 4.3 starts too early with parallel execution (when reading Makefiles and evaluating rules for "include" statements already). Since GNU make does not support a concept for correct ordering of such actions, you need to be prepared to see gmake-4.3 fail in parallel mode. If you are interested in reliable parallel execution, it is recommended to use the included "dmake" program with a command line like: dmake -j10 -f SMakefile from the top level directory - Makefile system: A new version of the BSD make (bmake) program fixed a bug in pattern macro substitution, so we are now able to detect BSD make and to read BSD make program specific rules. This could in theory allow us to support BSD make in the future, but... Note that we on the other side discovered a new bug with pattern macro substitution in bsd make: The substitution: $(FOO:%=bar/%) is replaced by "bar/" with an empty "FOO", but of course, with an empty FOO, the substitution should be empty as well. This second bug (above) was fixed on May 6th, but we do not yet have all needed make rules and we do not know whether other bugs may still prevent the usability of BSD make. Supporting BSD make will be hard as BSD make does not support pattern matching default rules and this is important for placing the .o files into a sub-directory. Also note that the portable program source for "bmake" from "pkgsrc" is 2 years old and thus currently cannot be supported at all. If you like to experiment on your own, you need to get this version: http://crufty.net/help/sjg/bmake.html see http://www.crufty.net/ftp/pub/sjg/bmake.tar.gz and replace the newer files from the netbsd.org CVS tree by hand in order to fix the first and second mentioned pattern macro substitution bug. - Makefile system: RULES/MKLINKS was enhanced to create a new symlink RULES/r-bsdmake.tag that points to RULES/r-make.tag - Makefile system: The archive makefiles.tar.bz2 has been added to the schilytools tree to allow easy reuse of the makefile system for own projects. - Bourne Shell: The unit tests for the new ERR trap did not work on Solaris because /bin/false on Solaris causes an exit code of 255. We now only check for an exit code != 0. - Bourne Shell: Some of the unit tests for the trap command are now only run in case that the SUT is "bosh". - Bourne Shell: set -- now checks the '\0' character at the end of the string "--". This fixes strange behavior with argument strings that start with "--". - Bourne Shell: Added a new flag XEC_INFUNC to the xflag parameter to mark the fact when inside a function. - Bourne Shell: set -e no longer causes commands with nonzero exit code to abort inside a function in case that the return code of that function is evaluated by e.g. an "if" statement. Thanks to Koichi Nakashima for reporting - Bourne Shell: A unit test for the above bug has been added. - Bourne Shell: $- may no longer be partially wrong (and miss the state of the -e flag). Thanks to Koichi Nakashima for reporting - Bourne Shell: under some rare conditions, the syntax tree -> cmdline converter could omit a command delimiter. This was the result of the fact that a helper variable "didnl" (used for codeoutput beautifying) was not reset in func.c and thus could cause printf a ; printf b to print "aprintf b" instead of "ab" Thanks to Koichi Nakashima for reporting - Bourne Shell: A unit test for the above bug has been added. - Bourne Shell: A command like: command | while read name; do loopcmd; done did stop after the first loop because "read" did then read from stdin instead of using the pipe file descriptor. This happened only of "loopcmd" was not a shell builtin. Thanks to Koichi Nakashima for reporting - Bourne Shell: A unit test for the above bug has been added. - Bourne Shell: When we added support for ${var+value with spaces} 4 years ago, we forgot to enhance the lexer the same way for things like "${var+value with spaces}" and "${var+"value with spaces"}". This has been forgotten, because a different part of the lexer is used to parse that kind of quoted strings. The lexer now supports looking for closing '}' in quoted text as well. Thanks to Koichi Nakashima for reporting - Bourne Shell: A unit test for the above bug has been added. - Bourne Shell: The expression "${var1#"$var2"}" has been introduced by ksh88 with strange rules for the way the double quotes past # are handled. We now support them.... Thanks to Koichi Nakashima for reporting - Bourne Shell: A unit test for the above bug has been added. - Bourne Shell: Some unit tests from "mksh" (that previously have been disabled) have been enabled, since the two changes above now make the Bourne Shell behave like "mksh" for these 6 additional tests. - SCCS: The "sccs" command now implements "sccsdiffs" as alias to the "sccsdiff" subcommand. This helps avoid the confusion from the subcommand "diffs" vs. "sccsdiff" that frequently causes people to type "sccsdiffs" instead of "sccsdiff". - SCCS: the "sccs" command is now using getopt() to parse the options for the project specific subcommands. - SCCS: the "sccs root" command now checks for too many arguments and only allows zero or one path arguments. - SCCS: An new SCCS high level library libsccs has been introduced. - SCCS: The project oriented high level commands from sccs(1) have been moved to the new libsccs. - SCCS: several of the old low level SCCS commands now call save_args() in order to be able to print the command name together with error messages. - SCCS: The "sccs istext" subcommand now uses getopt() - SCCS: The "sccs istext" subcommand now uses off_t instead of int to count line numbers. - SCCS: Fixed a potential core dump from "sccs istext" on Linux as Linux does not allow a double fclose(). - SCCS: The "sccs istext" subcommand now clearly distinguishes between a line that stars with the character '\001' and one that contains a null byte. - SCCS: The error "de14" now only refers to a null byte in a file. The Error "de20" exists since 2011 and is related to the other SCCSv4 illegal character, a '\001' at the beginning of a line. - SCCS: The delta command no longer uses the "de14" error code in case the file contains a null byte - SCCS: The file version.h has a new date. - SunPro Make: removed a superfluous space in the man page that appeared in the pattern macro substitution description. - mkisofs: README.eltorito has been enhanced to mention "-boot-load-size" and "-eltorito-platform efi" - mkisofs::isoinfo: For strange reasons, support for identifying an EFI boot record has been forgotten when EFI boot support has been added to mkisofs approx. 10 years ago. Isoinfo is now able to print "efi" instead of the unexpected "Unknown arch". - mkisofs: The diagnostic tools for mkisofs (isoinfo, ...) now all have been modified to show the version date of the cdrtools version they are from. - SCCS TODO: - Convert sccs.c to use -NSCCS in the back end programs instead of converting g-file names from the command line into s.file names in the frontend in order to forward s.file names to the backend programs. Doing it this way allows us to have the SCCS history files "off tree" in a separate directory tree starting with ".sccs/" at the "project root" directory, as the related code to convert path names is in libcomobj::bulkprepare(). - Add code to admin(1) and delta(1) to retrieve the list of new or modified files in order to have all important code for a "sccs commit" in a single program that does not need to deal with ARG_MAX limitations. - Add code to admin(1), delta(1) and get(1) to maintain/understand the changeset file. - Add code to libcomobj to understand the changeset file, which is needed in order to e.g. know the file names and file specific SIDs/state that correspond to a project global SID. - Add code to all programs to maintain a lock (for the file $PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file $PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project global lock. - Find/verify a complete transactional model that allows to repair complex changes to the set of files for a project that have been aborted in the middle. The current idea is to create the file $PROJECTHOME/.sccs/changeset with the deltas to the changeset during a complex update operation. - Find a way to decide when to use SCCS V6 type history files. For the project mode, this is needed in order to prevent historic SCCS implementations to believe they could modify files without knowing about project global locks. Currently, SCCS V6 needs to be usable manually for every history file using "admin". - 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.