1New features with AN-2015-08-03: 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- Cdrtools bumped to version 3.01a30. This is the current release 46 candidate for 3.01-final. We have some minor fixes added here 47 in the schily snapshot, see below: 48 49- README.compile now includes an example on how to cross compile 50 on Linux for Android. 51 52- include/schily/find.h modified to avoid a GCC warning from 53 using libfind in the Bourne Shell. 54 55- include/schily/dlfcn.h modified to avoid a GCC warning from 56 the new builtin management code in the Bourne Shell. 57 58- libschily/resolvepath.c now #define's lstat stat if lstat() 59 is missing. 60 61- libschily/error.c now allows to be compiled without weak 62 symbols by using -DNO_WEAK_SYMBOLS 63 64- libshedit: work around a name space problem in libshedit that 65 occurs with static linking. The name space problem exists since 66 there are variants of functions in libshedit that exist in 67 libschily with a "FILE *" parameter and in libshedit with "int *" 68 parameter to support the stdio-less Bourne Shell. We now use 69 a "shell_" prefix for all non-local functions in libshedit. 70 The dynamic library variant of libshedit uses a mapfile to make 71 those functions invisible to code outside libshedit. 72 73- mkisofs/diag/isoinfo.c now test for HAVE_MKNOD in order to avoid 74 calling mknod() on MINGW32. 75 76- SCCS: diff now uses strftime() for diff -u where cftime() is 77 missing. Thanks to David Clissold from IBM for reporting the 78 wrong time format from the ctime() fallback. 79 80- SCCS: diff now includes a workaround for HP/UX strftime() that 81 returns the %Z string for both %z and %Z. 82 83- bsh version was increased to 6.14 84 85- bsh now also prints the time stamp seen with "bsh -version" 86 when typing a '#' in interactive mode. 87 88- bsh: limit(1) now supports new [gs]etrlimit() parameters for "limit" 89 90 - RLIMIT_NPTS FreeBSD # of pty's 91 92 - RLIMIT_SWAP FreeBSD Swap to be used 93 94 - RLIMIT_RTTIME Linux max real time quantum 95 96- Bourne Shell: now supports new [gs]etrlimit() parameters for "ulimit" 97 98 - RLIMIT_AS Address space (usually the same as RLIMIT_VMEM) 99 100 - RLIMIT_NICE Linux nice priority limit 101 102 - RLIMIT_SIGPENDING number of pending signals 103 104 - RLIMIT_MSGQUEUE number of POSIX message queues 105 106 - RLIMIT_RTPRIO Linux maximum real time priority 107 108 - RLIMIT_RTTIME Linux max real time quantum 109 110 - RLIMIT_LOCKS Maximum number of file locks 111 112 - RLIMIT_NPTS FreeBSD # of pty's 113 114 - RLIMIT_SWAP FreeBSD Swap to be used 115 116- bsh and Bourne Shell: The alias code no longer calls fstat() 117 followed by an unnecessary stat() on the .gloals and .locals 118 file. 119 120- Bourne Shell: The global and local alias files are no longer 121 read three times at shell startup. 122 123- Bourne Shell: added a new builtin command "builtin" to manage 124 builtin commands. This command was taken from ksh. Note that 125 the new command is not yet fully complete. The commands: 126 127 builtin list all builtins 128 129 builtin -i list all shell intrinsic commands 130 131 builtin -s list all special builtins 132 133 already work. More is planned for the near future. 134 135 Note that the -i option is not in ksh93, but we recently 136 restructured POSIX for POSIX.1-issue-7-tc2 to mention 137 a new class of shell builtins that will be a base for a further 138 shell restructuring with POSIX.1-issue-8. 139 140- Bourne Shell: added a new builtin command "find" similar to 141 what is available in "bsh" since April 2007. This builtin could 142 or could not stay statically linked in the Bourne Shell. We need 143 to decide this when loadable builtins are implemented. In 144 the latter case, it may be converted into a dynamically loaded 145 builtin in the near future. It may however be sufficient, to 146 mark libfind a "lazy load" library. Note that lazy-loading 147 only works with the AT&T UNIX linker (e.g. available in the 148 UNIX "ld" on OpenSolaris) but not with "gld" on Linux. 149 150 The current implementation however allows to check whether 151 e.g. interrupt handling works between the Bourne Shell and 152 libfind. We did already identify a name space problem with 153 libshedit and the Bourne Shell as a result of includind the 154 find(1) builtin based on libfind. 155 156 The main reason for making it a builtin is that a 157 shell builtin can call shell procedures without a need 158 to fork()/exec(). I plan to add a new find(1) primary "-call" 159 to libfind that allows to call other shell builtins from libfind. 160 161 Another reason is to have a modern find(1) implementation 162 available by default, e.g. an implementation that supports a 163 fine grained file time stamp search that is missing in Solaris 164 find and GNU find. 165 166- Bourne Shell: several instances of plain numbers have been changed 167 towards O_RDONLY/O_WRONLY and STDIN_FILENO for better readability. 168 169- Bourne Shell: the struct namnod flags have been documented. 170 171- Bourne Shell: the hash code has been documented. This helps 172 to make this code maintainable, e.g. for introducing PATH 173 tagged builtin commands. The concept of PATH tagged shell 174 builtins was designed by Sun Microsystems and David Korn 175 before ksh93 was integrated into OpenSolaris in August 2007. 176 This concept was recently chosen to become the official 177 POSIX.1-issue-8 method for adding shell builtins bejond the 178 list of shell builtins documented by POSIX today. 179 180- Bourne Shell: a new #define FORCE_WAITID allows to enforce 181 using waitid() even on platforms that fail to pass the 182 related autoconf test. This helps to test the Bourne Shell on 183 non-POSIX platforms that like to make their waitid() implementation 184 POSIX compliant, such as Linux or Mac OS X. 185 186- Bourne Shell: struct sysnod added a new struct member "sysflg" 187 that allows to implement the builtin command "builtin" and to 188 mark different types of builtin commands. 189 190- Bourne Shell: "struct sysnod commands" now sets BLT_SPC for special 191 builtin commands. 192 193- Bourne Shell: "struct sysnod commands" now sets BLT_INT for intrinsic 194 shell commands. Intrinsic commands have been recently defined by 195 POSIX. 196 197- Bourne Shell: some messages are no longer compiled into msg.c if the 198 related error codes are not available on the actual compile platform. 199 200- Bourne Shell: the POSIX exit codes 126/127 for $? are now supported 201 for non-executable existing file and non-existing file. 202 203- Bourne Shell: new codes for .sh.codename have been introduced: 204 205 NOTFOUND an executable file could not be found 206 207 NOEXEC an executable file could be found but not executed 208 209 Note that these error codes in ${.sh.codename} need shared memory, 210 e.g. via vfork() for the non-hash case of PATH search to be reliable 211 as the standard does not allow to report more than a single value (an 212 exit code) to the parent and an exit code from the forked (but not 213 exec'd) shell cannot be distinguished from an exit code that was used 214 by the expected child process. 215 216- Bourne Shell: A bug in the code to generate the "$-" string (specific to 217 the Shily Burne Shell) was fixed and $- now contains the 'i' for 218 interactive shells as expected and recently changed in the source when 219 introducing support for $ENV and /etc/shrc & ~/.shrc. 220 221- Bourne Shell: the "type" builtin is now POSIX compliant and reports 222 keywords as well. 223 224- Bourne Shell: the "type" builtin now distincts between builtins, 225 special builtins and shell intrinsics. 226 227 In preparation of the upcoming POSIX.1-issue-7-tc2 we distinct 228 non-special builtins from "intrinsic commands"; a new category that 229 was introduced recently for builtins that need to be a builtin command 230 but without "special" treatment. 231 232- Bourne Shell: A new builtin command "@" was added similar to existing 233 implementations in bsh and csh. This helps to speed up loops. Use 234 something like: 235 236 i=0 237 while [ $i -lt 1000 ]; do 238 doit $i 239 @ i++ 240 done 241 242 Such a loop now typically takes 20 usecs per iteration. A conservative 243 implementation using "i=`expr $i + 1`" instead of "@ i++" would take 244 3 milliseconds per iteration. 245 246- Bourne Shell: A new builtin command "sync" was added similar to what 247 is in bsh since 1982 and what has been recently added to ksh93. 248 249- Bourne Shell: A new builtin command "pgrp" was added similar to what 250 is in bsh since 1985. 251 252- bsh and Bourne Shell: the pgrp builtin command now also prints information 253 about session groups. This helps to identify session group leaders. 254 255- Bourne Shell: A new builtin command "errstr" was added similar to what 256 is in bsh since 1985. 257 258- Bourne Shell: A new builtin command "killpg" was added similar to what 259 is in bsh since 1985. 260 261- Bourne Shell: The builtin command "suspend" is now able to suspend the 262 shell even in case it was started by a debugger (e.g. truss) or by sudo. 263 To do so, it always reverted to the saved process group but this did 264 suffer from ESRCH. Now, it reverts to the saved process group and stops 265 that saved group. 266 267 ******************** 268 Please report if the current implementation causes any unexpected 269 problems. 270 ******************** 271 272- Bourne Shell: Support for tilde expansion was added. 273 Currently, there is not yet support for tilde expansion in the 274 parameter expansion and for tilde's that appear after an colon (:), 275 e.g. in 276 PATH=/bin:~/bin 277 278- bsh and Bourne Shell now support tilde auto-completion via ^C 279 (and TAB for bash compatibility) in the history editor. The expansion 280 is done the same way, the Bourne Shell expands '~' in the parser: 281 282 ~ expands to the users home directory $(HOME) 283 284 ~+ expands to $PWD 285 286 ~- expands to $OLDPWD 287 288 ~user expands to the home directory for "user" from the passwd file 289 290- Bourne Shell: Support for up to 120 flag bits has been added. This allows 291 to introduce a sufficient amount of new set(1) -o options in the future. 292 293- Bourne Shell: Support for pipes from arbitrary other file descriptors 294 than #1 (stdout) was added. This feature is enabled via "set -o fdpipe" 295 and allows to precede the pipe symbol by a digit that describes file 296 descriptor # to use instead of stdout, e.g. 2| for a pipe from stderr. 297 This feature is based on a feature from bsh introduced in 1991. 298 299 This feature permits to use a pager for messages from stderr. As 300 "mkisofs -help" prints a lot of messages to stderr, one might call: 301 302 set -o fdpipe 303 mkisofs -help 2| more 304 305 to be able to decently read the long help text from stderr. 306 307- Bourne Shell: a new option "set -o fullexitcode" has been added. It permits 308 to tell the shell not to mask $? with 0xFF and to return the full 32 Bits 309 from the exit code from child processes on operating systems that support 310 waitid(2). Platforms that do not implement waitid(2), mask the exit code 311 in the kernel and give no way access the full exit code. 312 313 Note that even with that setup, the historic namespace clash with the exit 314 codes 126/126 and 128+signal-number remains. It however gives an easier to 315 type method for most cases. Call: 316 317 set -o fullexitcode 318 bosh -c "exit 1234567890"; echo $? # some shells limit exit 319 1234567890 320 321 to check this feature. 322 323 ******* 324 As this setup is reverted before calling shell scripts, it can be used 325 without problems for interactive shells and set up from inside $HOME/.shrc 326 ******* 327 328- Bourne Shell: The builtin command "times" now uses getrusage(2) instead of 329 times(2) and thus gets a microsecond resolution (at least on OpenSolaris, 330 you really get that resolution) instead of just 10ms. 331 332- Bourne Shell: a new option "set -o time" enables automatic timing for 333 commands. The current implementation only supports basic test code for 334 external commands and built-ins. TIMEFORMAT does not yet work, the output 335 format is based in the shell builtin times(1) but the minutes are omitted 336 in case that they are zero; future versions will allow to configure the 337 output format via $TIMEFORMAT 338 339- Bourne Shell: The shell variable TIMEFORMAT= was introduced in preparation 340 of the future configurable time format. 341 342 343- The following builtins (that are available in bsh) are still missing in 344 the Bourne Shell: 345 346 err echo with output going to stderr 347 glob echo with '\0' instead of ' ' between args 348 env a builtin version of /usr/bin/env 349 350 The following bsh intrinsics are still missing in the Bourne Shell: 351 352 - A method to add matching aliases to the history 353 in order to allow to edit them via the command 354 line history editor. 355 356 - the restricted bsh has restriction features that 357 are missing in the Bourne shell. 358 359 - bsh by default uses the prompt: 360 361 "<hostname> <username> >" 362 363 and probably more features not yet identified to be bsh unique. 364 365 366 367Author: 368 369Joerg Schilling 370D-13353 Berlin 371Germany 372 373Email: joerg@schily.net, js@cs.tu-berlin.de 374 joerg.schilling@fokus.fraunhofer.de 375 376Please mail bugs and suggestions to me. 377