1New features with AN-2020-05-11: 2 3This is the first localization step for the schily source consolidation. Many 4programs now (hopefully) call gettext() for all strings that need localization. 5 6- The next step will include dgettext() calls for the libraries and the 7 missing programs 8 9- The following step will include the extracted strings 10 11- The last step will include German translations and install support 12 for the resulting binary message object files. 13 14----------> Please test and report compilation problems! <--------- 15 16***** NOTE: As mentioned since 2004, frontends to the tools should ***** 17***** call all programs in the "C" locale ***** 18***** by e.g. calling: LC_ALL=C cdrecord .... ***** 19***** unless these frontends support localized strings ***** 20***** used by the cdrtools with NLS support. ***** 21 22 *** WARNING *** 23 *** Need new smake *** 24 25 *** Due to the fact that schily-tools 2014-04-03 introduced to use new macro 26 *** expansions and a related bug fix in smake, you need a newer smake 27 *** to compile this source. If your smake is too old and aborts, ensure to 28 *** use the recent smake by calling: 29 30 cd ./psmake 31 ./MAKE-all 32 cd .. 33 psmake/smake 34 psmake/smake install 35 36 The new smake version mentioned above is smake-1.2.4 37 The recent smake version is smake-1.3 38 39 *** Due to the fact that schily-tools 2018-01-26 introduced 40 *** optimizations for the Schily version of SunPro Make, you 41 *** need at least the dmake version from 2018/01/11 with support 42 *** for the "export" directive to compile with this makefile system. 43 44 45 WARNING: the new version of the isoinfo program makes use of the 46 *at() series of functions that have been introduced by Sun 47 in August 2001 and added to POSIX.1-2008. For older platforms, 48 libschily now includes emulations for these functions but 49 these emulations have not yet been tested thoroughly. 50 Please report problems! 51 52 BUG WARNING: Please never report bugs only to Linux distributions as 53 they usually do not forward these bug reports upstream and as 54 the Linux distributions typically do not let skilled people 55 check the bugs. We did not hear about a FIFO problem in star 56 for a long time. Then a problem on Linux occurred once 57 every 6000-10000 tries but it did not happen on Solaris after 58 even 10 million tries, so it was not known besides Linux. 59 60 BUG WARNING: GNU make release 4.3 starts too early with parallel 61 execution (when reading Makefiles and evaluating rules for 62 "include" statements already). Since GNU make does not 63 support a concept for correct ordering of such actions, 64 you need to be prepared to see gmake-4.3 fail in parallel 65 mode. If you are interested in reliable parallel execution, 66 it is recommended to use the included "dmake" program with 67 a command line like: 68 69 dmake -j10 -f SMakefile 70 71 from the top level directory 72 73 74- Makefile system: A new version of the BSD make (bmake) program fixed 75 a bug in pattern macro substitution, so we are now able to detect 76 BSD make and to read BSD make program specific rules. 77 78 This could in theory allow us to support BSD make in the future, 79 but... 80 81 Note that we on the other side discovered a new bug with pattern 82 macro substitution in bsd make: The substitution: 83 84 $(FOO:%=bar/%) 85 86 is replaced by "bar/" with an empty "FOO", but of course, with an 87 empty FOO, the substitution should be empty as well. 88 89 This second bug (above) was fixed on May 6th, but we do not yet have 90 all needed make rules and we do not know whether other bugs may still 91 prevent the usability of BSD make. Supporting BSD make will be hard 92 as BSD make does not support pattern matching default rules and this 93 is important for placing the .o files into a sub-directory. 94 95 Also note that the portable program source for "bmake" from "pkgsrc" 96 is 2 years old and thus currently cannot be supported at all. If 97 you like to experiment on your own, you need to get this version: 98 99 http://crufty.net/help/sjg/bmake.html 100 101 see 102 103 http://www.crufty.net/ftp/pub/sjg/bmake.tar.gz 104 105 and replace the newer files from the netbsd.org CVS tree by hand in 106 order to fix the first and second mentioned pattern macro substitution 107 bug. 108 109- Makefile system: RULES/MKLINKS was enhanced to create a new symlink 110 RULES/r-bsdmake.tag that points to RULES/r-make.tag 111 112- Makefile system: The archive makefiles.tar.bz2 has been added to the 113 schilytools tree to allow easy reuse of the makefile system for own 114 projects. 115 116- Bourne Shell: The unit tests for the new ERR trap did not work on 117 Solaris because /bin/false on Solaris causes an exit code of 255. 118 We now only check for an exit code != 0. 119 120- Bourne Shell: Some of the unit tests for the trap command are now only 121 run in case that the SUT is "bosh". 122 123- Bourne Shell: set -- now checks the '\0' character at the end of 124 the string "--". This fixes strange behavior with argument strings that 125 start with "--". 126 127- Bourne Shell: Added a new flag XEC_INFUNC to the xflag parameter to mark 128 the fact when inside a function. 129 130- Bourne Shell: set -e no longer causes commands with nonzero exit code 131 to abort inside a function in case that the return code of that function 132 is evaluated by e.g. an "if" statement. 133 134 Thanks to Koichi Nakashima for reporting 135 136- Bourne Shell: A unit test for the above bug has been added. 137 138- Bourne Shell: $- may no longer be partially wrong (and miss the state 139 of the -e flag). 140 141 Thanks to Koichi Nakashima for reporting 142 143- Bourne Shell: under some rare conditions, the syntax tree -> cmdline 144 converter could omit a command delimiter. This was the result of the 145 fact that a helper variable "didnl" (used for codeoutput beautifying) 146 was not reset in func.c and thus could cause 147 148 printf a ; printf b 149 150 to print "aprintf b" instead of "ab" 151 152 Thanks to Koichi Nakashima for reporting 153 154- Bourne Shell: A unit test for the above bug has been added. 155 156- Bourne Shell: A command like: 157 158 command | while read name; do loopcmd; done 159 160 did stop after the first loop because "read" did then read from stdin 161 instead of using the pipe file descriptor. This happened only of 162 "loopcmd" was not a shell builtin. 163 164 Thanks to Koichi Nakashima for reporting 165 166- Bourne Shell: A unit test for the above bug has been added. 167 168- Bourne Shell: When we added support for ${var+value with spaces} 169 4 years ago, we forgot to enhance the lexer the same way for things 170 like "${var+value with spaces}" and "${var+"value with spaces"}". 171 This has been forgotten, because a different part of the lexer is 172 used to parse that kind of quoted strings. The lexer now supports 173 looking for closing '}' in quoted text as well. 174 175 Thanks to Koichi Nakashima for reporting 176 177- Bourne Shell: A unit test for the above bug has been added. 178 179- Bourne Shell: The expression "${var1#"$var2"}" has been introduced by 180 ksh88 with strange rules for the way the double quotes past # are 181 handled. We now support them.... 182 183 Thanks to Koichi Nakashima for reporting 184 185- Bourne Shell: A unit test for the above bug has been added. 186 187- Bourne Shell: Some unit tests from "mksh" (that previously have been 188 disabled) have been enabled, since the two changes above now make 189 the Bourne Shell behave like "mksh" for these 6 additional tests. 190 191- SCCS: The "sccs" command now implements "sccsdiffs" as alias to 192 the "sccsdiff" subcommand. This helps avoid the confusion from the 193 subcommand "diffs" vs. "sccsdiff" that frequently causes people to 194 type "sccsdiffs" instead of "sccsdiff". 195 196- SCCS: the "sccs" command is now using getopt() to parse the options 197 for the project specific subcommands. 198 199- SCCS: the "sccs root" command now checks for too many arguments and 200 only allows zero or one path arguments. 201 202- SCCS: An new SCCS high level library libsccs has been introduced. 203 204- SCCS: The project oriented high level commands from sccs(1) have been 205 moved to the new libsccs. 206 207- SCCS: several of the old low level SCCS commands now call save_args() 208 in order to be able to print the command name together with error 209 messages. 210 211- SCCS: The "sccs istext" subcommand now uses getopt() 212 213- SCCS: The "sccs istext" subcommand now uses off_t instead of int 214 to count line numbers. 215 216- SCCS: Fixed a potential core dump from "sccs istext" on Linux as Linux 217 does not allow a double fclose(). 218 219- SCCS: The "sccs istext" subcommand now clearly distinguishes between 220 a line that stars with the character '\001' and one that contains a 221 null byte. 222 223- SCCS: The error "de14" now only refers to a null byte in a file. 224 The Error "de20" exists since 2011 and is related to the other SCCSv4 225 illegal character, a '\001' at the beginning of a line. 226 227- SCCS: The delta command no longer uses the "de14" error code in case 228 the file contains a null byte 229 230- SCCS: The file version.h has a new date. 231 232- SunPro Make: removed a superfluous space in the man page that appeared 233 in the pattern macro substitution description. 234 235- mkisofs: README.eltorito has been enhanced to mention "-boot-load-size" 236 and "-eltorito-platform efi" 237 238- mkisofs::isoinfo: For strange reasons, support for identifying an 239 EFI boot record has been forgotten when EFI boot support has been 240 added to mkisofs approx. 10 years ago. Isoinfo is now able to print 241 "efi" instead of the unexpected "Unknown arch". 242 243- mkisofs: The diagnostic tools for mkisofs (isoinfo, ...) now all have 244 been modified to show the version date of the cdrtools version they 245 are from. 246 247 248- SCCS TODO: 249 250 - Convert sccs.c to use -NSCCS in the back end programs instead 251 of converting g-file names from the command line into s.file 252 names in the frontend in order to forward s.file names to the 253 backend programs. Doing it this way allows us to have the SCCS 254 history files "off tree" in a separate directory tree starting 255 with ".sccs/" at the "project root" directory, as the related 256 code to convert path names is in libcomobj::bulkprepare(). 257 258 - Add code to admin(1) and delta(1) to retrieve the list of 259 new or modified files in order to have all important code 260 for a "sccs commit" in a single program that does not need to 261 deal with ARG_MAX limitations. 262 263 - Add code to admin(1), delta(1) and get(1) to maintain/understand 264 the changeset file. 265 266 - Add code to libcomobj to understand the changeset file, 267 which is needed in order to e.g. know the file names and file 268 specific SIDs/state that correspond to a project global SID. 269 270 - Add code to all programs to maintain a lock (for the file 271 $PROJECTHOME/.sccs/SCCS/s.changeset, that would be in the file 272 $PROJECTHOME/.sccs/SCCS/z.changeset) to maintain a project 273 global lock. 274 275 - Find/verify a complete transactional model that allows to repair 276 complex changes to the set of files for a project that have 277 been aborted in the middle. The current idea is to create the 278 file $PROJECTHOME/.sccs/changeset with the deltas to the 279 changeset during a complex update operation. 280 281 - Find a way to decide when to use SCCS V6 type history files. 282 283 For the project mode, this is needed in order to prevent 284 historic SCCS implementations to believe they could modify 285 files without knowing about project global locks. 286 287 Currently, SCCS V6 needs to be usable manually for every 288 history file using "admin". 289 290 291 292 293 294- Bourne Shell Missing features for POSIX compliance: 295 296 - Support for $'...' quoting (this is not needed for the current 297 version of POSIX but for the next POSIX 298 version that will be named SUSv8). 299 The development of SUSv8 will start in 300 late 2016. 301 302 We are now expecting the Bourne Shell to be fully POSIX compliant. 303 304- Bourne Shell further TODO list: 305 306 - Finish loadable builtin support. 307 308 - POSIX does not allow us to implement ". -h", so we will 309 add a "source" builtin to be able to implement "source -h" 310 311- The following builtins (that are available in bsh) are still missing in 312 the Bourne Shell: 313 314 err echo with output going to stderr 315 glob echo with '\0' instead of ' ' between args 316 env a builtin version of /usr/bin/env 317 318 The following bsh intrinsics are still missing in the Bourne Shell: 319 320 - the restricted bsh has restriction features that 321 are missing in the Bourne shell. 322 323 - source -h read file into history but do not execute 324 325 and probably more features not yet identified to be bsh unique. 326 327 328 329Author: 330 331Joerg Schilling 332D-13353 Berlin 333Germany 334 335Email: joerg@schily.net, joerg.schilling@fokus.fraunhofer.de 336 337Please mail bugs and suggestions to me. 338