New features with AN-2020-05-25: 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 - mkisofs: Fixed an integer overflow bug in mac_label.c with Apple -chrp boot. Thanks to Adam Majer from SuSE for reporting/fixing. - libmdgest: Added a "defined(_M_ARM)" check for MSVC byte order definitions (byte_order.h). Thanks to "Excalibur" for reporting. - Bourne Shell: The unit tests for the ERR trap did not work on NetBSD because /bin/false does not exists on NetBSD. We now first check for /bin/false and /usr/bin/false and use what's available. Thanks to Michael Bäuerle from pkgsrc for reporting. - Bourne Shell: The support for the OLDPWD environment has been moved from DO_SYSPUSHD to DO_POSIX_CD and as a result, the minimal POSIX compile variant "pbosh" now supports "$OLDPWD" and "cd -". This was based on a bug in the POSIX standard that did not include OLDPWD in the overview of shell environment variables. See https://www.austingroupbugs.net/view.php?id=1343 Thanks to Koichi Nakashima for reporting - star: SmartOS supports aclutils.h as published include file (what we intented to include in Schillix-ON as well, since it is needed for libsec) and aclutils.h includes ctype.h. We thus need to #include before star.h in acl_unix.c The problem occurred because we did already have a aclutils.h related autoconf test, even though Schillix-ON does not yet ship aclutils.h Thanks to Michael Bäuerle from pkgsrc for reporting. - star: The subst command (since 2018) malloc()s the space for a copy of the old string in case that the string Is too long for the static storage. It did however still use the static buffer instead of a pointer to the allocated space. We now use the allocated space if needed. - star: The subst command for pax now supports the \1, \2, ... escapes for \(...\) selections in the from pattern, like it is used by sed(1). Thanks to Kristyna Streitova for reminding on this. - star: A new unit test for this new feature has been added, using the example from the SUSE bug-report for the above substitute command. - star: A new subst option -pax-s has been added that supports sed(1) like substitutions. The old option -s continues to support change(1) like substititions. NOTE: Both pax -s and star -pax-s silently fall back to change(1)-like substitutions in case that a target platform does not support "regex" in libc. - SCCS: The admin man page now mentions the -X option in the SYNOPSIS. -X has been introduced in 2018. The OPTIONS part did already explain -X since then. - SCCS: A new option -X0 has been introduced to allow to use nul byte separated file names on stdin when using the file argument '-'. By default the filename list from stdin is newline separated. - SCCS: The commands sccslog and sccscvt now also support the argument '-' as a directive to read filenames from stdin. - SCCS: libcomobj reads filenames for "-" arguments now via getdelim() instead of using fgets(). This removes a path length limit. - SCCS: The "sccs help" texts for the various SCCS commands now mention the new -X option. - SCCS: The man pages now document the path location of the changeset file and the structure of the .sccs directory in the project set home directory. - SCCS: A new function ismylock() has been introduced. ismylock() works similar to mylock(), but returns -1 in case that the lock file does not exist. This is needed in the future, when SCCS low level commands like admin, delta, unget, ... need to check whether they have been called with a valid lock file $SET_HOME/.sccs/SCCS/z.changeset via sccs(1) or whether they need to create their own global lock in order to grant atomically correct project related functions. - SCCS: Several GCC warnings about an unused variable "ofile" are now avoided. - SCCS: A new path variable "changesetfile" has been added to the change set home directory handling routines. - SCCS: The existence of the file $SET_HOME/.sccs/SCCS/s.changeset is now checked at startup and a related flag SETHOME_CHSET_OK is set when the file is seen. the existence of the changeset file is a hint on whether SCCS is in project mode or whether it is in single file mode. - SCCS: "sccs root -v" now also reports the name of the changeset file and whether it is present. - SCCS: sccs.c no longer implements the function command() as "static" in order to allow the now external code in libsccs to use it. - SCCS: "sccs init" now by default creates an empty changeset history file with release 1.0 as $SRC_ROOT/.sccs/SCCS/s.changeset This signals SCCS to work in project mode where a group of files is managed together and the version 1.0 allows the first proect release to become 1.1 - SCCS: sccs.c added a new option -s. "sccs init -s" now allows to initialize a directory tree without creating a $SRC_ROOT/.sccs/SCCS/s.changeset history file. This signals SCCS to work in single file mode. Future versions of SCCS will permit to implement a "single file" mode that works in "off tree" mode where the sccs history files are kept inside $SRC_ROOT/.sccs/data/... - SCCS: Since the sccs val command now supports the option -X, we needed to change the "unknown option" test in the set of unit tests. - SCCS: a new man page sccs-init.1 has been created. - SCCS: "sccs help init" now mentions the new option -s - SCCS: a new man page sccs-root.1 has been created. - SCCS: The sccs.1 man page now mentions "init" and "root". - SCCS: The file sccs/sccs/lib/mpwlib/src/xpipe.c did call setmode(t[0], O_BINARY); in case that the pipe failed. This is of course wrong and the call is now made when the pipe succeeded. - 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.