1New features with AN-2017-06-29: 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 new smake 27 *** to compile this source. To ensure this, call: 28 29 cd ./psmake 30 ./MAKE-all 31 cd .. 32 psmake/smake 33 psmake/smake install 34 35 36 WARNING: the new version of the isoinfo program makes use of the 37 *at() series of functions that have been introduced by Sun 38 in August 2001 and added to POSIX.1-2008. For older platforms, 39 libschily now includes emulations for these functions but 40 these emulations have not yet been tested thoroughly. 41 Please report problems! 42 43 The new smake version mentioned above is smake-1.2.4 44 45 46- configure: The tests for -lsocket and for -lnsl/-lnetwork 47 have been better separated to correctly recognize -lnetwork 48 on Haiku. 49 50 Thanks to a report from Heiko Ei�feldt 51 52- configure: the vfork() test has been enhanced to check whether 53 a modification in the data segment of the child affects the 54 parent as well. This feature is used (needed) by the Bourne Shell 55 to signal a ENOEXEC case for shell scripts to the parent and in 56 general to report the reason for a failed execve() call back 57 to the parent. 58 59 Note that vfork() in Haiku does not share data and thus canot 60 be used by the Bourne Shell. 61 62- configure: a new test AC_STAT_FILES has been written to replace 63 AC_CHECK_FILES. AC_CHECK_FILES does not work on Haiku due to 64 a bug in "bash" that makes "test -r /dev/stdin" to report an exit 65 code of 0 even though the file /dev/stdin does not exist. 66 67- Schily Makefilesystem: RULES/rules.loc and RULES/rules.man have been 68 made safe against a parallel make program like SunPro Make. 69 70 Thanks to a report from Heiko Ei�feldt 71 72- Schily Makefilesystem: SunPro Make does not understand ".PHONY:". 73 Use the AT&T method "FRC" as well to make the .PHONY targets always 74 out of date. 75 76 Thanks to a report from Heiko Ei�feldt 77 78- Schily Makefilesystem: added a new target "uninstall" that removes 79 all non-directory type files that previously may have been installed via 80 the "install" target. 81 82 Thanks to a report from Michael Siegel 83 84- smake fixed some GCC warnings for unused variables. 85 86- smake: include some BSD and Mac OS related include files earlier 87 in the file archconf.c in order to get HW_MODEL #defined earlier. 88 89- cpp: Added a workaround to "Makefile" for a bug in SunPro Make 90 that results in not checking for a new file in VPATH. 91 92- tartest fixed some GCC warnings for unused variables. 93 94- p: The pager now supports UTF-8 characters. The pattern matcher 95 has not yet been enhanced to match any multi byte character by a '?'. 96 97- Bourne Shell: the behavior for exiting with command substitutions 98 has been changed to match general rules for the POSIX shell. 99 100 This causes: 101 102 bosh -c '(set -e; echo ERR `false`; echo ERR); echo OK' 103 104 to print: 105 106 ERR 107 ERR 108 OK 109 110 Thanks to a report from Robert Elz 111 112- Bourne Shell: A command substitution no longer sets "retval" 113 for $? to make shure, exit/return without parameter use the 114 exit value from the last regular command and not the exit code 115 from the last command substitution. 116 117 Thanks to a report from Robert Elz 118 119- Bourne Shell: A compliance test has been added for above bug. 120 121- Bourne Shell: "Y=${X=b} Z=$X; echo $Z" now again prints "b" 122 instead of the incorrect "Y=b". This fixes a bug introduced 123 2012-04-11 while trying to make the shell be correct even 124 when the string stack is relocated as a result from a realloc() 125 call. 126 127- Bourne Shell: A compliance test has been added for above bug. 128 129- Bourne Shell: There now may be further options between 130 -c and "commandstring" as required by POSIX. 131 132 bosh -c -x 'echo foo' 133 134 and 135 136 bosh -c -o time 'echo foo' 137 138 or 139 140 bosh -c +o time 'echo foo' 141 142 now work. Before, only bosh -c 'command' did work, as 'command' 143 was implemented as an option argument for -c. 144 145- Bourne Shell: When parsing numbers, additional chars after 146 digits are now flagged as an error. This prevents the shell 147 from silently accepting "shift 0x12" as "shift 0". 148 149 Thanks to a report from Robert Elz 150 151- Bourne Shell: The parameter expansion ${var-word} now 152 processes "word" for IFS field splitting. 153 154 Thanks to a report from Robert Elz 155 156- Bourne Shell: A compliance test has been added for above bug. 157 158- Bourne Shell fixed some GCC warnings for unused variables. 159 160- Bourne Shell: non-existent 2> /dev/null did not redirect the error 161 message while /non/existent 2> /dev/null did redirect. This is a 162 very old Bourne Shell bug from ~ 1977. 163 164 Thanks to a report from Heiko Ei�feldt 165 166- Bourne Shell: a compliance test was added for above bug. 167 168- Bourne Shell: The management code in the Bourne Shell used hard links 169 to ensure that a shell /tmp File (e.g. representing a here document) 170 lives at least as long as the processes that need the file. Hardlinks 171 on Haiku are not implemented even though link() exists. We therefore 172 now copy the /tmp/ file content to a new /tmp file if errno from 173 link() is any other then EEXIST. 174 175 Thanks to a report from Heiko Ei�feldt 176 177- Bourne Shell: a compliance test was added for above bug. 178 179- Bourne Shell: A bug introduced March 15 2017 was fixed. At that 180 time, the expansion for $PS4 was modified to use _macro() instead of 181 macro() but _macro() does not reset the "stack top" and thus left 182 active text on the stack that was later included while expanding 183 e.g. the argument "/dev/null" for "> /dev/null". As a result, 184 bosh in -x mode could complain about: 185 186 '+ /dev/null' cannot open 187 188- Bourne Shell: a compliance test was added for above bug. 189 190- Bourne Shell: Compliance test sh/tests/shelltests/here/here02.sh 191 Test "here24" added a workaround for a ksh93/bash/mksh POSIX 192 non-compliance bug. These shells illegally expand "\E" to the ESC 193 character when using the built in "echo" command. We changed 194 "\EOF" -> "\FIN" in the test "here24" to avoid the problem. 195 196- Bourne Shell: Compliance test sh/tests/shelltests/error/error.sh 197 Tests "error117" ... "error132" have been disabled for Haiku to 198 prevent an OS bug to make our test fail. Haiku illegally permits: 199 200 : > / 201 202 as opening the root directory does not fail. 203 204- Bourne Shell: The shell now passes all compliance tests on Hailu, 205 except for the tests named above that fail due to a Haiku OS bug. 206 207- Bourne Shell: The compliance tests "conf" and "bugs" have been moved 208 to the beginning to reduce the test time by making "conf" start first 209 and to run the regression tests for fixed bugs first. 210 211- Bourne Shell: The compliance test "trap03" has been fixed as the old 212 PATH detection code for the external "echo" command did not work. 213 214- SCCS: sccs admin/delta, ... could write nanoseconds to the timestamp 215 into the history file even when in SCCSv4 mode and the time stamp is 216 from before 1968 or past 2037. This is no longer possible as the 217 nanosecods are now cleared in that case. 218 219- SCCS: val now checks whether a SCCSv4 history file contains SCCSv6 220 elements in the delta line. The checks in the schilytools development 221 area did not discover the problem, so it seems that our bug was only 222 triggered on Haiku due to a time_t implementation bug in the Haiku libc. 223 224- SCCS: sccs/man/Makefile if now a normal serial Makefile using "rules.mks" 225 in order to make all localizations and the directory OBJ/<arch-dir>/man 226 which "make all" already. This avoids that OBJ/<arch-dir>/man is created 227 late by root when running "make install" as root after a "make all" call 228 from a normal user. 229 230 Thanks to a report from Heiko Ei�feldt 231 232- SunPro Make: The path to the file with internal rules now 233 is corrctly constructed even when the binary is in .../xpg4/bin/make 234 where we need to use "../../share/..." instead of "../share/...". 235 236- SunPro Make: Install path detection now works on Haiku as well. 237 findinpath() only works when the binariy was located via PATH search. 238 Use the absolute path in other cases. 239 240 Thanks to a report from Heiko Ei�feldt 241 242- SunPro Make now has been verified to compile and work correctly on 243 Haiku. 244 245 If you like to test SunPro Make with the schilytools, call e.g. 246 247 dmake -f SMakefile 248 249 in the top level directory to prevent the automated redirection to 250 smake. 251 252 253 254 255- Bourne Shell Missing features for POSIX compliance: 256 257 - Support for $'...' quoting (this is not needed for the current 258 version of POSIX but for the next POSIX 259 version that will be named SUSv8). 260 The development of SUSv8 will start in 261 late 2016. 262 263 We are now expecting the Bourne Shell to be fully POSIX compliant. 264 265 266- Bourne Shell further TODO list: 267 268 - Finish loadable builtin support. 269 270 - POSIX does not allow us to implement ". -h", so we will 271 add a "source" builtin to be able to implement "source -h" 272 273- The following builtins (that are available in bsh) are still missing in 274 the Bourne Shell: 275 276 err echo with output going to stderr 277 glob echo with '\0' instead of ' ' between args 278 env a builtin version of /usr/bin/env 279 280 The following bsh intrinsics are still missing in the Bourne Shell: 281 282 - the restricted bsh has restriction features that 283 are missing in the Bourne shell. 284 285 - source -h read file into history but do not execute 286 287 and probably more features not yet identified to be bsh unique. 288 289 290 291Author: 292 293Joerg Schilling 294D-13353 Berlin 295Germany 296 297Email: joerg@schily.net, js@cs.tu-berlin.de 298 joerg.schilling@fokus.fraunhofer.de 299 300Please mail bugs and suggestions to me. 301