ChangeLog (29622B)
1 Changes since 1.2: (Too many to count!) 2 3 A memory stomping bug was fixed (provoked by assigning a variable 4 to its old value plus something else). 5 6 Better signal handling; a real signal handler which manages a queue 7 of pending signals was added. 8 9 rc now ignores SIGQUIT and traps SIGINT even in non-interactive 10 mode. Thus, 11 12 rc ed.sh 13 14 will not do mysterious things if the shell script "ed.sh" calls a 15 command like "ed" and then you hit ^C. 16 17 rc now opens 0, 1, 2 on /dev/null if they are inherited closed. 18 rc -o prevents this. 19 20 A couple of stupid O(n^2) string appends were replaced with O(n) 21 loops. This should make foo=`{cat /etc/termcap} bar=$^foo a little 22 faster :-) 23 24 Returning a list of signals from a function is now legal, so "return 25 $status" should always work. 26 27 The code has been revised, new printing routines have been added. 28 29 rc no longer uses redundant braces when exporting functions. 30 31 A first stab at a verification suite has been added (trip.rc). 32 (someone, please help me make this comprehensive!) 33 34 rc -p now does not initialize functions from the environment. This 35 should make it easier to write shell scripts that don't need to 36 assume anything about the environment. 37 38 Inherited ignored signals are now ignored in the current shell and 39 passed on ignored to the child processes. whatis -s also reflects 40 this information. 41 42 A file descriptor leak in the /dev/fd implementation of >{} was 43 fixed. 44 45 A variable set to '' was not imported from the environment; this 46 has been fixed. 47 48 Changes since 1.3beta: 49 50 New Makefile/config.h setup. 51 52 builtin echo may now be conditionally included out, to use a Goldwynism. 53 54 builtin exit takes any legal exit status. If the status is not all zeros, 55 rc exits with 1. (having "exit sigiot" produce a core dump would be going 56 a little far, I think.) 57 58 limit does not append a unit after a zero limit; 0g was too confusing. 59 60 exec > /nonexistentfile does not cause rc to exit any more. 61 62 If a noninteractive rc is started with sigint ignored, rc does not install 63 its own signal handler. 64 65 error messages produced by rc in a subshell were cleaned up. (rc erroneously 66 reset the 'interactive' flag after a fork) 67 68 print.c was cleaned up a little; no functionality was changed, but should 69 be more portable now. 70 71 a bug in rc-1.3beta (not previous versions) was fixed: setting the first 72 element of $path to '' caused PATH to be exported as '':etc.. 73 74 getopt's "illegal option" message was gratuitously changed to something 75 less abrupt. 76 77 some dead code was removed from input.c 78 79 %term was changed to %token in parse.y; apparently newer yacc's don't grok 80 %term any more. 81 82 a race condition in the signal handler was fixed. 83 84 the variable in for() was getting evaluated each time through the loop 85 (e.g., for (`{echo i;date>[1=2]} in 1 2 3)echo $i would print the date 86 three times). This was cleaned up. 87 88 a redundant fork() was removed from walk.c; this showed up when running 89 a braced command with a redirection in the background. e.g., {a;b}>c& 90 91 man pages for history and rc were cleaned up by david (thanks). 92 93 rc set SIGQUIT and SIGTERM to SIG_DFL on background jobs---even when 94 trying to do old-style backgrounding (i.e., don't use process groups, 95 just ignore SIGINT & SIGQUIT & SIGTERM). 96 97 $0 is now changed to the name of the signal when entering a signal 98 handler. Thus it's possible to write code like 99 100 fn sigint sigterm sigquit { 101 switch ($0) { 102 case sigint 103 ... 104 case sigterm 105 ... 106 107 wait with no arguments now prints the pid of any and all children 108 that died with a signal. e.g., 109 110 ; wait 111 25321: terminated 112 25325: terminated 113 114 as opposed to 115 116 ; wait 117 terminated 118 119 An error saving/restoring state in the input stream code would 120 cause rc to exit with the (erroneous) command: 121 122 eval '|[a' 123 124 FIFO's were not removed in a backgrounded command, e.g., 125 126 cat <{echo hi}& 127 128 Changes since rc-1.4beta: 129 130 getopt was renamed to rc_getopt to avoid libc collisions. 131 132 $cdpath with a / in it caused a cd to sometimes have two //'s at the 133 front of the path. This is reserved by POSIX, so I changed it to skip 134 one of the /'s. 135 136 signal handling now emulates sh in the way I described in a previous 137 message: the race condition present in older rc's whereby some SIGINTs 138 got lost is now gone; any SIGINT received during a wait() is acted upon 139 at the end of the wait(), unless of course SIGINT is being deliberately 140 ignored. 141 142 getopt was renamed to avoid naming conflicts with libc. Also a sound 143 move since rc_getopt is no longer quite libc-getopt compatible; I had 144 to add in a mechanism for resetting getopt. 145 146 signal handler code in fn.c was cleaned up; there were several bugs 147 in rc-1.4beta, notably the shell sometimes spawned background jobs 148 with SIGTERM ignored. I took the opportunity to make things a little 149 cleaner here. 150 151 a quasi-memory leak in the code for while() was fixed: a long-running 152 while that had rc commands allocating memory in it could cause the 153 shell to grow without bounds. I fixed this by placing the while loop 154 (*and* test!) inside a new allocation arena each time through the loop. 155 156 A new configuration parameter, NOJOB, was added to allow you to force 157 v7-style backgrounding (no setpgrp, ignore SIGINT and SIGTERM). 158 159 The FIFO code was reworked a little. It should be more robust now--- 160 FIFOs get removed at the end of the command of the argument list 161 that they were on: 162 163 fn foo {echo $*; cat $*} 164 foo<{echo hi} 165 166 now works as expected. Also FIFO names are pushed onto the exception 167 stack so that their removal occurs in the face of exceptions and so 168 on. 169 170 A memory leak in treefree() was plugged up --- the root node of a 171 function was not getting freed. 172 173 Changes since rc-1.4: 174 175 General changes: 176 177 Some small memory leaks/uninit references revealed by Purify. 178 179 $bqstatus for querying the exit status of a backquote. 180 181 Globbing through unreadable directories. 182 183 More options to whatis. 184 185 History append which always re-opens the file (avoids 186 inconsistencies over multiple NFS-mounted accesses to 187 $history). 188 189 Support "rc -s". 190 191 --------- 192 193 Makefile: Added comment referring to README for yacc/malloc problem. 194 195 uiltins.c: Added more options to whatis, protected rlimit prototypes 196 with #ifndef SYSVR4, renamed SIGCHK to sigchk. 197 198 except.c: Patched nl_on_intr printing to happen only in interactive 199 shells. 200 201 exec.c: Added comment explaining nl_on_intr variable, renamed SIGCHK 202 to sigchk. 203 204 fn.c: Replaced by-hand consing of exception stack etc. for signal 205 handler execution with call to funcall(). Replaced fun2str 206 call with call on print routines. 207 208 footobar.c: Got rid of memory leak in get_name(), parenthesize count, 209 flat and var nodes for correctness in unparsing, removed 210 list2str, made get_name use nalloc space, merge in a 211 better parse_var from es. 212 213 glob.c: Split out a test so that closedir is called correctly, renamed 214 SIGCHK to sigchk. 215 216 glom.c: Added bqstatus, renamed SIGCHK to sigchk, removed spurious 217 setsigdefaults, patched uninit memory reference, rename 218 "clear" to "memzero", wait for bq subproc to finish on EINTR. 219 220 hash.c: Added options to function/variable print code. 221 222 history/history.c: Added '@' to the list of chars which can precede an 223 ignored '-'. 224 225 input.c: Got rid of tiny memory leak in closefds, got rid of uninit 226 memory reference in popinput, moved nul ignored check into 227 realgchar(), changed history append to always reopen the 228 history file, replaced SIGCHK with sigchk. Freed memory 229 returned by call to readline(). 230 231 lex.c: Corrected typo in comment, moved nul character ignore code 232 to input routines. 233 234 main.c: Added -s flag. 235 236 nalloc.c: Added convenience feature to erealloc. (Allow NULL parameter) 237 238 print.c: Changed use of va_start so broken compilers can compile 239 print code. 240 241 proto.h: Added fake memset. 242 243 rc.h: Replaced clear() function prototype with a macro call on 244 memset(), removed SIGCHK, fixed prototypes. 245 246 signal.c: Removed unconditional exit in catcher code, renamed SIGCHK 247 to sigchk. 248 249 status.c: Rewrite sgetstatus breaking out strstatus so that bqstatus 250 can be set from glom routines. 251 252 utils.c: Got rid of clear() (use memset from C library), rename SIGCHK 253 to sigchk. 254 255 var.c: Got rid of memory leak in listassign(), converted list2str() 256 call to something using the print routines. 257 258 version.c: New version string. 259 260 wait.c: Got rid of memory leak in rc_fork, renamed SIGCHK to sigchk. 261 262 walk.c: Fixed pre-redirection bug, removed spurious setsigdefaults(), 263 renamed SIGCHK to sigchk. 264 265 266 Changes since rc-1.5beta1 267 268 Configuration: rc now uses GNU autoconf. 269 270 Portability: mksignal works on HPUX 10. 271 272 Portability: resources can be (quad_t). 273 274 Bug: if rc was started with SIGCLD == SIG_IGN (e.g. by Solaris's 275 rshd) it would loop. Fixed by resetting SIGCLD to SIG_DFL if it 276 was SIG_IGN when rc was started. 277 278 Portability: POSIXish systems don't have NGROUPS. 279 280 Changes since rc-1.5b2 281 282 Configuration: rc now uses GNU automake. 283 284 Portability: use sigsetjmp() when available. 285 286 Portability: improve tests for quad_t. 287 288 Configuration: don't leave FIFOs in /tmp when configuring. 289 290 Configuration: let configure find `-ltermcap' when using readline. 291 292 Configuration: pick up default path from config.cache. 293 294 Bug: sense of most HAVE_RESTARTABLE_SYSCALLS tests was wrong. 295 296 Bug: print prompts with `-i', even with editline / readline. 297 298 Testing: just say `false' (not `/bin/false'). 299 300 Bug: confusion over gid_t versus GETGROUPS_T in which.c. 301 302 Feature: `-V' option added to report version number. 303 304 Configuration: remove version.c; `id' is defined in main.c now. 305 306 Bug: clear list of living children after fork(); `{ ls & wait } |cat' 307 no longer hangs or panics. 308 309 Testing: add regression test for above. 310 311 Tidiness: all the system call wrappers to prevent calls being 312 restarted now live in system-bsd.c. The configure script decides 313 whether to build system.c or system-bsd.c. Also, signal.c is more 314 careful to only declare slowbuf if it will be needed. 315 316 Tidiness: similarly, configure decides whether to build execve.c or 317 not. 318 319 Portability: test for ssize_t and use it where available; use long if 320 there's no ssize_t. 321 322 Portability: use sigsetjmp where it's available and appropriate. If 323 no sigsetjmp, just use sigjmp; this probably fails in a traditional 324 SysV environment. 325 326 Portability: test explicitly for SysV SIGCLD semantics. Main (and 327 dubious) benefit is that you can now define a function called `sigcld' 328 on systems where there is no signal called SIGCLD! 329 330 Bug: rc has its own memory allocator; don't use malloc directly. 331 332 Bug: the rc_wait() wrapper is only needed on systems which restart 333 system calls. On Linux, in particular, the wrapper leads to a race 334 which causes rc to hang (or panic in later versions). Other systems 335 apparently don't exercise this race. 336 337 Bug: waitforall() must return if rc_wait4() returns with errno == 338 EINTR. Otherwise, the rc builtin `wait' cannot be interrupted if 339 there are background processes (although apparently only if there is a 340 handler for SIGINT). 341 342 Portability: dreadful hack to track down the real locations of 343 signal.h to find signal names. rc now builds under CygWin32! 344 345 Portability: replace above dreadful hack with mksignal.c, contributed 346 by Vincent Broman. 347 348 Portability: use POSIX wait() macros (WIFEXITED and friends). 349 Unfortunately, POSIX omitted to supply WIFDUMPED, so this doesn't buy 350 a great deal. 351 352 Distribution: remove the dependencies of y.tab.[ch] on parse.y from 353 Makefile.am. The justification for this is that, unless you're 354 hacking on rc's grammar, there's no reason to use anything other 355 than the distributed files (which were generated with byacc and very 356 lightly edited to silence a few gcc warnings). 357 358 Enhancement: the example in addon.c wasn't very useful, since it 359 depended on files which weren't included with the distribution. There 360 is now a working, if trivial, example. 361 362 Tidiness: the code was compiled with as many gcc warnings enabled as 363 I could find. Very few problems turned up. Some unused function 364 arguments were removed. Where unused arguments could not be removed 365 (because the function is one of a set that must all have the same 366 prototype), they were renamed to `ignore'. 367 368 Portability: some versions of readline define the name `Function', 369 which rc also uses. Its use in rc has been renamed to `rc_Function'. 370 371 Documentation: the `history' man page didn't explain what end of line 372 does in editing mode. It now does. 373 374 Bug: the interaction with readline was broken, particularly with 375 respect to signal handling. I've incorporated some changes from Tom 376 Culliton which should sort this out. Unfortunately, we now have 3 377 different code paths for readline 2.1, readline 2.2, and editline :-(. 378 379 Configuration: if you say `--with-readline' or `--with-editline' it is 380 now an error if the appropriate library is not found. 381 382 Bug: rc didn't work on RedHat 5 systems. This is because of 383 peculiarities in the handling of signals and system calls on this 384 system (the C library attempts to fake restartable system calls). 385 The fix involves testing at configure time for sigaction() and 386 SA_INTERRUPT: if both exist, we set up sys_signal() to be an "always 387 interrupt" wrapper around sigaction(). (If we don't have sigaction(), 388 we use signal() and check for restartable system calls as usual.) 389 390 Portability: on AIX, lconv is defined by the system header files. 391 Rename lconv in print.c to avoid the clash. 392 393 Testing: add a test that `cd' prints the new directory if we are 394 interactive and the directory was found via $cdpath. 395 396 1998-07-23 397 398 Testing: fix silly typo in above test. 399 400 Configuration: `--with-vrl' added to support Gert-Jan Vons's readline 401 library. 402 403 1998-07-24 404 405 Portability: the autoconf macro AC_FUNC_SETPGRP doesn't work on OSF1: that 406 system supports arguments to setpgrp(), but also has a prototype in 407 <unistd.h> to say that it is void. Fix this by defining our own 408 RC_FUNC_SETPGRP for now. 409 410 Bug: <sys/wait.h> was included twice in some source files. 411 412 Configuration: automake wants `make distclean' to remove *.tab.c. 413 Rename y.tab.[ch] to parse.[ch] to avoid this. 414 415 1998-07-27 416 417 Portability: on Ultrix, `make trip' fails with `malloc: Invalid 418 argument'. Problem is that getgroups(0, NULL) in which.c returns -1. 419 Add new configure test to check for POSIX getgroups() and fall back to 420 NGROUPS if it's not available. The magic is done by "getgroups.h". 421 422 Tidiness: extract <sys/wait.h> magic into "wait.h". 423 424 1998-10-20 425 426 Tidiness: include prototype for add_history() when doing editline. 427 428 Documentation: document the `-V' flag and mention Linux's 429 /proc/self/fd as alternative to /dev/fd. 430 431 1998-10-21 432 433 Bug: shells need to be prepared for bogus applications to have set 434 their input file descriptor to non-blocking, and set it back. 435 436 Tidiness: <sys/types.h> is in "proto.h", so nothing else needs to 437 include it explicitly. 438 439 Documentation: document the ^A bug. 440 441 1998-10-22 442 443 Tidiness: makenonblock() was a rather poor choice of name for 444 a function which makes a file descriptor *not* nonblocking :-). 445 446 1998-10-26 447 448 Portability: apparently some systems declare `char *basename(const 449 char *)' in system header files. Changing our basename() (in 450 history.c) to match this prototype allows it to be compiled on such 451 systems, and is harmless. (Harmless, that is, if no system declares 452 `char *basename(char *)'.) 453 454 1998-10-28 455 456 Bug: system-bsd.c needs to include "wait.h". 457 458 Warnings: some versions of gcc warn about "ambiguous" `else' clauses. 459 460 Portability: assigning va_list objects doesn't work everywhere (Linux 461 on the PowerPC, specifically). Use the C 9x invention va_copy() 462 instead, if it exists, otherwise fall back to assignment. 463 464 Documentation: help HP-UX users by mentioning that you need `cc -Ae'. 465 Also, HP-UX make will build rc in a separate directory. 466 467 Tidiness: remove unused functions from print.c. Anybody wanting to 468 use this library in another project should follow the pointer in the 469 documentation to an improved version. 470 471 1998-10-29 472 473 Bug: the "null character ignored" warning was printed with the wrong 474 line number. Fix by adding an offset argument to pr_error. 475 476 Portability: work around readline's broken treatment of a non-blocking 477 input file descriptor. 478 479 Testing: add `testing' auxiliary program; use `testing' to generate 480 null character on the fly (since it's a nuisance having a literal 481 null character in trip.rc); reset sigexit in `fn fail'; add test for 482 nonblocking input file descriptor; fix test for cdpath. 483 484 Portability: include <sys/types.h> before <sys/stat.h>. 485 486 1998-10-30 487 488 Portability: rename basename() to rc_basename(), since the former is 489 quite widespread, and has a variety of different definitions (none of 490 them, of course, static). 491 492 Portability: work around i386 GCC 2.7.2.3 optimization bug triggered 493 by a (really quite simple) expression in history.c. 494 495 1998-12-04 496 497 Bug: a debugging statement was left in history.c by mistake. 498 499 Bug: `history' needs to check for `me' character preceded by `/', as 500 well as all the other options. An invocation like ../rc-1.5/- no 501 longer loops. 502 503 Documentation: it seems better to have but a single URL in the README 504 file, which indirects to the other places of interest. 505 506 1998-12-08 507 508 Portability: use AM_PROG_CC_STDC. This obviates the need for a 509 special hack on HP-UX. 510 511 Documentation: document all the flags to `whatis'. 512 513 1998-12-09 514 515 Tidiness: latest autoconf version has fixed AC_FUNC_SETPGRP, so we 516 no longer need to supply our own. 517 518 Portability: test for va_copy() needs to include <stdarg.h>. 519 520 1998-12-10 521 522 Tidiness: move most of the configure.in nastiness into acinclude.m4. 523 524 1998-12-11 525 526 Tidiness: the release date now only needs to be changed in one place. 527 528 1999-01-05 529 530 Documentation: the Bell Labs rc now has the list flattening operator, 531 but spelt $"foo. 532 533 1999-01-11 534 535 Release: rc-1.5b4. 536 537 1999-01-19 538 539 Documentation: document the `-s' option. Also, arrange the option 540 documentation in alphabetical order. 541 542 Tidiness: just install `history' to `$(bindir)/-'; don't create an 543 extra link (which `make clean' failed to remove). 544 545 1999-01-22 546 547 Bug: `-s' should not imply `-i'. 548 549 Testing: add regression test for `-s' behaviour. 550 551 1999-01-27 552 553 Documentation: default path was out of date; minor consistency 554 improvements. 555 556 Release: rc-1.5b5. 557 558 1999-02-15 559 560 Portability: AM_INIT_AUTOMAKE calls AC_ARG_PROGRAM and 561 AC_PROG_INSTALL. Don't do it explicitly. For once, the configure 562 script gets smaller! Program name transformations work right now. 563 564 Documentation: note that rc has no `set' builtin; fix weird variable 565 name example; any character except `=' may be used in a variable name; 566 document bqstatus; document rc's exit status; other tidying. 567 568 1999-03-01 569 570 Documentation: document the yacc-imposed limit on ; separated commands 571 in a line. 572 573 1999-05-06 574 575 Portability: tgetent() might be in -lncurses instead of -ltermcap. 576 577 1999-05-10 578 579 Portability: Linux *almost* has SysV SIGCLD semantics, and we need to 580 detect them. 581 582 Bug: if we reset SIGCLD to SIG_DFL, we need to record the fact in the 583 sighandlers[] array. 584 585 1999-05-12 586 587 Documentation: note that `$(a.b)' syntax only mostly works, and that 588 list definitions in exported functions are noisier than they need to 589 be. 590 591 Release: rc-1.5b6. 592 593 1999-05-19 594 595 Documentation: minor fixes to man page. 596 597 1999-05-26 598 599 Tidiness: `make distclean' now removes sigmsgs.[ch]. 600 601 1999-05-28 602 603 Release: rc-1.6. 604 605 1999-08-19 606 607 Portability: the proposed C 9x __va_copy() macro is called that, not 608 va_copy(), as I thought. Furthermore, it is defined to be a macro, so 609 we don't need to use autoconf to check for it. 610 611 1999-10-11 612 613 Bug: absolute globs don't need special case in doglob(). Avoids 614 creating path names like `//tmp', which is a UNC path under CygWin. 615 616 1999-10-12 617 618 Portability: status.c assumes traditional Unix layout of 0 and 1 exit 619 statuses in the parent, which is not shared by BeOS. Add mkstatval.c. 620 621 1999-10-13 622 623 Bug: a read(2) error in fdgchar() should call rc_raise(), not 624 rc_exit(). This bug is easily tickled on systems (like Linux) which 625 allow you to open(2) but not read(2) directories: `. /tmp'. In all 626 previous versions of rc, this caused the shell to exit. 627 628 Portability: use POSIX strerror() where it's available; fake it with 629 sys_errlist[] where not. 630 631 Feature: replace `-V' with `version' variable. 632 633 1999-10-14 634 635 Portability: exporting `path' causes indigestion in CygWin. Since 636 it's virtually impossible for a child `rc' process to inherit `path' 637 (which I consider a bug, but it's not going to be fixed now), simply 638 don't export `path'. 639 640 Portability: add /usr/bsd to default default path. 641 642 Documentation: failing to search $path for a `.' command is at least 643 an incompatibility with Tenth Edition rc, and probably a bug. 644 645 1999-11-10 646 647 Feature: make `version' a list. 648 649 1999-11-11 650 651 Documentation: when running configure, you need to set LDFLAGS for 652 `-L' options, not LIBS. 653 654 Release: rc-1.6b1. 655 656 1999-12-10 657 658 Bug: absolute globs do still need a special case. `/*' works again now, but 659 we still avoid creating names like `//tmp/foo'. 660 661 Bug: avoid a putative race condition in signal.c. 662 663 Documentation: extra parentheses around `~' and `!' expressions are 664 forbidden. Tom Duff's paper is not distributed with rc, but is 665 available on the web. 666 667 Release: rc-1.6b2. 668 669 2000-04-19 670 671 Bug: isatty() tests in input.c are relevant to any fd, not just 0. 672 Now `. -i /dev/tty' works right. 673 674 Bug: fn sigexit wasn't always cleared in child shells. 675 676 Bug: `~ () '*'' dumped core. 677 678 2000-05-25 679 680 Portability: need special runes for read() returning EIO under job 681 control systems. 682 683 2000-06-20 684 685 Feature: add `-I' flag (definitively not interactive) for 686 compatibility with Plan 9 rc. 687 688 2000-11-27 689 690 Portability: configure fails to detect strerror() on NetBSD; we need 691 to include <string.h>. 692 693 2001-06-18 694 695 Bug: you can't pass a short to a stdargs function! 696 697 2001-09-27 698 699 Documentation: we don't consider that `.' failing to search path is 700 a bug. 701 702 Feature: ^A in lists is now handled transparently. 703 704 2001-10-01 705 706 Bug: it's no longer possible to use parentheses to sneak a word that 707 needs quoting past the "quoting detector", so `fn x { echo $(x.y) }' 708 now works both in the current rc and its descendants. 709 710 Documentation: mention the catastrophic effects of a semantic error 711 in fn prompt. 712 713 2001-10-03 714 715 Feature: exported lists no longer use redundant parentheses. 716 717 2001-10-04 718 719 Bug: semantic errors in `fn prompt' no longer throw rc into a tailspin. 720 721 Feature: don't export $cdpath or $home (the lower-case versions). 722 723 2001-10-12 724 725 Release: rc-1.6b3. 726 727 2001-10-25 728 729 Feature: large file support (thanks Scott Schwartz, Chris 730 Siebenmann). 731 732 2001-10-29 733 734 Bug: space vs tab confusion in commented out Makefile rules to 735 rebuild parser (thanks Gary Carvell). 736 737 2001-10-31 738 739 Documentation: subscripted variables don't work in here documents. 740 741 Release: rc-1.6c4. 742 743 2001-11-01 744 745 Bug: more wrongly ordered header file includes (thanks Callum 746 Gibson). 747 748 2001-11-06 749 750 Portability: rename print.c::utoa() to rc_utoa() to avoid QNX name 751 clash; use "sh -c 'test ...'" in trip.rc for missing standalone 752 `test' on QNX (thanks Stefan Dalibor). 753 754 2001-11-20 755 756 Documentation: tighten up various descriptions, and include some 757 more examples. 758 759 Release: rc-1.6c5. 760 761 2001-11-23 762 763 Bug: parselimit() was broken in various ways (thanks Chris 764 Siebenmann). 765 766 2002-02-08 767 768 Bug: yet more wrongly ordered header file includes. 769 770 Release: rc-1.6c6. 771 772 2002-04-03 773 774 Feature: make $version less magical, and exportable if it's changed 775 from its default value. Same for $prompt (thank Erik Quanstrom). 776 777 Bug: make $bqstatus and $status not exportable. 778 779 Feature: "stuttering" colons for multiple replacements in the 780 history programs (thanks Callum Gibson). 781 782 2002-05-22 783 784 Documentation: possible warning in tripping.c (thanks Dan Moniz). 785 786 Release: rc-1.6c7. 787 788 2002-06-18 789 790 Release: rc-1.7. 791 792 2002-07-25 793 794 Bug: fix globbing of broken symlinks. 795 796 2002-07-31 797 798 Bug: readline doesn't handle EIO either. 799 800 2002-08-15 801 802 Bug: variables that are sometimes exported (i.e. $prompt and 803 $version) need to be made exportable if they are inherited from the 804 environment. 805 806 Portability: don't call sigaction() for SIGKILL or SIGSTOP; don't 807 hand a garbage signal mask to sigaction() (thanks Jeremy 808 Fitzhardinge). Also, remove use of SA_INTERRUPT (SUSv3, BSD, 809 etc. have SA_RESTART with the inverted meaning). 810 811 2002-08-20 812 813 Bug: don't call ealloc(0) on systems where getgroups() doesn't 814 return egid (thanks Chris Siebenmann). 815 816 2002-11-27 817 818 Bug: history dumps core if more colons than substitutions (thanks 819 Callum Gibson); history fails to avoid itself if it's the only 820 command; history writes and reads outside allocated memory. 821 822 Configuration: upgrade to autoconf-2.56 and automake-1.7.1. 823 824 2003-07-17 825 826 Testing: remove test for large file support, as it causes 827 indigestion on file systems that don't support sparse files (thanks 828 Scott Schwartz). 829 830 2003-07-22 831 832 Release: rc-1.7.1. 833 834 2003-09-24 835 836 Tidiness: minor improvements to input.c. 837 838 2014-02-26 839 840 Bug: fix for CVE-2014-1936 from Jakub Wilk. 841 842 2014-06-29 843 844 Documentation: update email and web addresses. 845 846 2014-08-31 847 848 Feature: support quoting for filename completion in GNU readline. 849 850 2014-09-01 851 852 Bug: quoting of glob characters was broken (thanks Leah Neukirchen); 853 fix the "sneaky parens" bug properly (thanks Wolfgang Zekoll). 854 855 Feature: allow $"x as a synonym for $^x 856 857 Release: rc-1.7.2. 858 859 2015-04-03 860 861 Packaging: the rc.spec file was very out-of-date. 862 863 2015-04-04 864 865 Portability: the comment from 1999-08-19 may well have been true at 866 the time, but the final version of the C99 standard called varargs 867 copying macro va_copy(). 868 869 2015-04-07 870 871 Portability: look in -ltinfo for tgetent. 872 873 Packaging: various autoconf / automake updates and tweaks. 874 875 2015-04-14 876 877 Bug: in initinput(), the call ugchar(EOF) used the ungetcount member 878 of the top Input structure without initializing it. Thanks to Jeff 879 Johnson for finding this, Robert Scheck for reporting it, and Uli 880 Drepper for implementing MALLOC_PERTURB_, a cheap way to find uses of 881 uninitialized memory. 882 883 2015-04-18 884 885 Licensing: tweaked to match exactly the "zlib with acknowledgement" 886 license which is used by nunit and is already approved by various 887 distros. 888 889 2015-04-20 890 891 Release: rc-1.7.3. 892 893 2015-05-12 894 895 Licensing: due to GPL compatibility concerns, the license is changed 896 again to the "zlib" license. (N.B. This license change was agreed and 897 approved by Byron Rakitzis, who is the copyright holder.) 898 899 Testing: swap arguments to mktemp to be kinder to NetBSD (thanks Piotr 900 Meyer). 901 902 2015-05-13 903 904 Release: rc-1.7.4. 905 906 2015-06-24 907 908 Portability: eschew GNU-specific "date -I" (thanks Ross Lonstein; 909 github #4). 910 911 2015-10-26 912 913 Bug: fix use-after-free bug (thanks Dražen Borković; github #9 and 914 #13). 915 916 2015-11-28 917 918 Bug: fix bug with signal handlers and readline (thanks Bert Münnich). 919 920 2016-02-26 921 922 Bug: fix bug with "break" inside local variable block (thanks Dražen 923 Borković and Bert Münnich; github #11 and #21). 924 925 2016-08-25 926 927 Bug: more signal / readline fixes (thanks Bert Münnich; github #14). 928 929 2016-08-27 930 931 Portability: replace reldate with "git describe" (thanks @RamKromberg). 932 933 Documentation: "~ $x ()" is something of a special case. The man page 934 now goes into some more detail. 935 936 2017-02-27 937 938 Feature: parse equals like a keyword, meaning it can appear unquoted in 939 commands. For example, rather than having to write 940 941 ls --color'='tty # or ls '--color=tty' or similar 942 943 one may now write simply 944 945 ls --color=tty 946 947 Special thanks to Bert Münnich for fixing this major irritation 948 (github #29). 949 950 2017-05-11 951 952 Bug: the "-e" flag did the wrong thing with respect to "while" loops (thanks 953 Dražen Borković; github #34 and #35). 954 955 2017-06-23 956 957 Feature: new developer mode, enabled with "--enable-develop" at the 958 "configure" stage, dumps each parse tree after it is built. 959 960 Bug: the precedence of prefix redirect was lower than pipe, which led to 961 some counter-intuitive parses (thanks Casper Ti. Vector; github #33). 962 963 Bug: rc with readline support failed to notice window size changes correctly 964 (thanks Chris Siebenmann; github #32). 965 966 2017-08-25 967 968 Testing: use "pwd -P" which is friendlier to macOS (thanks Dražen Borković; 969 github #36). 970 971 2017-08-25 972 973 Feature: add a "continue" builtin (thanks Casper Ti. Vector and Dražen 974 Borković; github #25 and #37). 975 976 2017-10-27 977 978 Bug: using "-e" led to incorrect exit status (thanks @hallik and Bert 979 Münnich). 980 981 Portability: burning the build date into the binary makes a 982 reproducible build impossible. Replace it with the git description 983 (thanks @RamKromberg; github #26). 984 985 2018-02-17 986 987 Portability: remove all references to SIGCLD (thanks Leah Neukirchen). 988 989 2018-03-05 990 991 Bug: the grammar disallowed local assignments and redirections in the true 992 branch of `if` when there was an `else` clause (thanks Dražen Borković and 993 Bert Münnich; github #31). 994 995 2018-03-17 996 997 Feature: implement the `flag` builtin (github #20). 998 999 2018-03-19 1000 1001 Feature: implement `if not` (github #19). 1002 1003 Feature: default values for $nl and $tab (github #43). 1004 1005 2018-03-20 1006 1007 Tidiness: be consistent about using tabs everywhere, and add a .vimrc to 1008 keep it so in the future. 1009 1010 2018-05-30 1011 1012 Feature: readline can now complete commands (thanks Bert Münnich; github 1013 #2).