From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by archone.tamu.edu id <22543>; Mon, 1 Jul 1991 18:22:08 -0500 From: Byron Rakitzis To: rc Subject: rc-1.1beta Message-Id: <91Jul1.182208cdt.22543@archone.tamu.edu> Date: Mon, 1 Jul 1991 18:21:53 -0500 It's available for ftp from archone. I would like the members of this list to try it out before I release it to the General Public. I would also like to incorporate a few more additions before I release the "real" 1.1, e.g., support for /dev/fd and also John Mackin's scripts for non-ANSI build environments. Enclosed is the file CHANGES from rc-1.1beta I forgot to mention in CHANGES that David Sanderson did a great job of reworking the man page. Anyway, here goes. ------ Changes since rc-1.0: builtin now forces a path-search for non-builtin commands. e.g., builtin ls forces a path search for /bin/ls, rather than running a function called "ls". --- A bug in the builtin wait was fixed. --- The builtin whatis how takes a -s flag, for displaying available signals and their handlers, and also prints correct code for reinterpretation. (metacharacters inside variable names were not correctly quoted) --- An extra field was added to the "limit" builtin for SunOS systems, which apparently allow a limit on file descriptors. --- A home-rolled execve() was written for people with geriatric unices that don't do #! in the kernel. --- SIGTERM is now ignored by rc along with SIGQUIT. (This is not how Duff's shell behaves, but it is standard practise for Unix shells to ignore SIGTERM) --- If $history was set to a bad file, then rc would print far too many error messages. Now rc prints one error message and assigns null to $history, if $history names an invalid file. --- rc now explicitly refuses to trap SIGCLD on System V machines, because of the weird way in which SIGCLD work. (really because I didn't want to get into the job control business) --- A bug was fixed in the parser so that functions with metacharacters in their names are correctly imported from the environment. --- The globber was changed to call stat() before calling opendir(); apparently opendir() succeeds on some Unices even when invoked on regular files. --- It is now illegal to have '=' be part of a variable name. This should be the only illegal character inside a variable name! --- backquote rescanning was rewritten from scratch; now it no longer assigns null list entries to represent consecutive occurences of $ifs characters in the input. e.g., now `{echo ' '} returns a null list, and not a 4-element list of null characters. --- rc used to export all handlers but those in {sighup, sigint, sigquit, sigterm, sigexit}. Now rc does not export ANY signal handlers. --- rc's lexer was cleaned up to accept 8-bit data. rc is now presumed to be 8-bit clean. I would like to hear of evidence to the contrary. --- rc now traps EOF when scanning a variable name inside a heredoc. --- rc's fdgchar() was cleaned up so that it did not assign negative values to unsigned objects. (this one is truly for the pedants) --- rc's lexer was fixed so that multiple backslashes at the end of a line are interpreted correctly. --- rc's parser now allows a newline to appear after "else" (via skipnl()). --- main() was exiting in certain situations with an exit status of 0 instead of rc's real exit status. --- rc's yacc file was fixed so that yaccs which do "magic" can clean up after themselves via the tokens YYACCEPT and YYABORT. Most notably, Sun's yyparse() calls malloc. --- A mistake in the argument list of treecpy() was cleaned up. --- Calls to write() are now checked for failure. --- walk() was optimized for space in two ways: rPIPE was removed and placed in a separate function body, and a few obvious chances for employing tail-recursion via goto's was taken. This should result in a slightly smaller use of stackspace. ---