New features with AN-2019-07-22: 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! BUG WARNING: Please never report bugs 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 and since the problem that (on Linux) occurred once every 6000-10000 tries did not happen on Solaris after 10 million tries, it was not known otherwise. - RULES/*: Changes CURDIR into CURWDIR as GNU make uses CURDIR and we added compatibility support to SunPro Make and smake. This change is not really needed as GNU make and the new code in SunPro Make set CURDIR before reading the Makefiles and never modify it again but it makes things cleaner. - RULES: Added configuration symlinks for FreeBSD on PowerPS. These Symlinks are automatically created by the automake features in smake but they are needed with other make programs, such as GNU make. Thanks to a hint from Dennis Clarke - RULES/i386-freebsd-gcc.rul now supports gcc32 and gcc64 - inc/avoffset.c: An additional message as been added: "This is not an error, we just disable stack scannig.\n" in hope people now understand that this is just an autoconf result and not a warning about a potential problem. Thanks to Robert Koppelhuber for the hint - star: "pax -pe" no longer sets the variable "doxattr" as this caused an error message: "NFSv4 extended attribute files are not yet supported.\n" that caused the OpenSolaris-ON "nightly" compilation to abort as a result of that error and exit code != 0. - SunPro Make: The dmake man page now mentions the unsupported option -O - SunPro Make: The make man page now explains the options -N, -T, -u, -w - SunPro Make: The make man page now also explains the options -j, -m, -R that previously have only been in the dmake man page. - SunPro Make: The make man page started to convert the ugly results from FrameMaker conversion macros to official man methods using .TP for tagged paragraphs. - SunPro Make: The praparations for printing of the current directory could cause a core dump (even when -w is not used). This could cause a recursive malloc() call from within the SIGINT handler. Make now sets up the related environment for MAKELEVEL= before the interrupt handler is enabled. This separates memory allocation from printing and avoids the recursive malloc() enter. The problem occured only when aborting a make run via ^C that caused to call a callback routine for SIGINT that could call a recursive malloc(). We now prepare that data using the new function dir_enter_leave() before a SIGINT could hit in order to avoid this problem. - SunPro Make: The -C option has been implemented for GNU make compatibility. - -C dir now works as documented for GNU make The -C option is neither exported to MAKEFLAGS nor imported from MAKEFLAGS. - A new variable CURDIR has been implemented to hold the absolute path name of the working directory after the last -C option has been processed. - The absolute path for argv0 stays the name created before processing -C otpions since this is using the directory from where "dmake" has been started and exec()ed the dmake binary. This is e.g. needed for $(MAKE) Note tat unlike GNU make, we do not auto-enable -w (print directory) if -C is in effect. This an own implementation not related to the one from Joyent. Adding support for -C at all however has been triggered by reading about the availability of a patch from Joyent that claims to add GNU make compatible -C support to SunPro Make. That patch from Joyent however was not usable because of these problems in the Joyent implementation: - CURDIR support was missing for GNU make compatiility - -C was handled in MAKEFLAGS even though it does not make sense and it is in conflict with the GNU make implementation - "-Cdir" was not supported (only "-C dir" did work). - a memory leak from getcwd() caused by -C - coredumps caused by an uninitialized variable from -C - incorrect handling of the creation of an absolute pathname for argv0 (see $(MAKE)) - smake: The -C option now gives GNU make compatibility. - Multiple -C options are now supported - A new variable CURDIR has been implemented The old implementation from May 2009 did not yet support that. - 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. - 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.