]> git.ipfire.org Git - thirdparty/bash.git/blob - CWRU/changelog
Imported from ../bash-3.2.tar.gz.
[thirdparty/bash.git] / CWRU / changelog
1 4/9/2001
2 --------
3 [bash-2.05 released]
4
5 4/10
6 ----
7 redir.c
8 - check return value of fclose() in write_here_document() for error
9 returns; don't just rely on fwrite() failing
10
11 support/bashbug.sh
12 - set TMPDIR to /tmp if it's null or unset
13 - use $TMPDIR in the TEMP tempfile name template
14 - fixed the call to `mktemp', if it exists, to make it more portable
15
16 jobs.c
17 - if WCONTINUED is not defined, define it to 0 and add a define for
18 WIFCONTINUED(wstatus) which expands to 0
19 - add WCONTINUED to the flags passed to waitpid(2) in waitchld()
20 - don't increment children_exited if waitpid's status is WIFCONTINUED,
21 since we don't want to call a SIGCHLD trap handler in this case
22 - in waitchld(), we set child->running to 1 if WIFCONTINUED(status)
23 is non-zero
24 - make sure pretty_print_job doesn't check for the core dump bit if
25 the process has been continued; it's only valid if the job is dead
26 - in set_job_status_and_cleanup, set the job to JRUNNING if job_state
27 is non-zero and the job was previously marked as JSTOPPED
28
29 configure.in
30 - add -DBROKEN_DIRENT_D_INO to interix LOCAL_CFLAGS
31
32 lib/glob/glob.c
33 - if BROKEN_DIRENT_D_INO is defined, define REAL_DIR_ENTRY to 1
34
35 jobs.c
36 - in kill_pid, we only need to block and unblock SIGCHLD if the
37 `group' argument is non-zero, since otherwise we just call `kill'
38 on the pid argument
39
40 version.c
41 - update copyright date to 2001
42
43 bashline.c
44 - prog_complete_return needs to take a `const char *' as its first
45 argument
46 - history_completion_generator needs to take a `const char *' as
47 its first argument, and `text' needs to be a `const char *'
48
49 4/11
50 ----
51 redir.c
52 - fixed a weird typo in redir_special_open, case RF_DEVFD, added
53 call to all_digits before call to legal_number
54 - fixed do_redirection_internal to call legal_number instead of atol(3)
55 when translating r_duplicating_{in,out}put_word, so it handles
56 overflow better
57 - produce an error message in redirection_error for out-of-range
58 file descriptors
59 - change allocation strategy in redirection_error so we don't have to
60 malloc scratch memory if redirection_expand() fails
61
62 jobs.h
63 - added defines for `running' member of a struct process
64
65 general.c
66 - fix legal_number to return 0 when strtol(3) reports overflow or
67 underflow
68
69 parse.y
70 - changed read_token_word to call legal_number instead of atoi(3)
71
72 input.c
73 - return -1/EBADF from close_buffered_fd if fd is < 0
74
75 command.h
76 - fixed bogus comment about IS_DESCRIPTOR in description of the
77 REDIRECTEE struct
78
79 print_cmd.c
80 - change cprintf's 'd' modifier code to display negative numbers as
81 an out-of-range value. We can do this only because the only use
82 of %d is to output file descriptor numbers in redirections
83
84 support/mksignames.c
85 - need to include config.h to get a possible value for
86 UNUSABLE_RT_SIGNALS
87
88 4/16
89 ----
90 lib/readline/doc/rluser.texinfo
91 - corrected a small error in one description of M-DEL
92
93 4/17
94 ----
95 stringlib.c
96 - need to initialize `ind' before calls to RESIZE_MALLOCED_BUFFER
97 in strcreplace()
98
99 support/bashversion.c
100 - new file, prints bash version information
101
102 Makefile.in
103 - rules for building bashversion and linking it to version.o
104
105 4/24
106 ----
107 conftypes.h
108 - new file with HOSTTYPE, OSTYPE, MACHTYPE, etc. defines from
109 variables.h
110
111 variables.h, version.c
112 - include conftypes.h
113
114 patchlevel.h
115 - new file, contains define for PATCHLEVEL. Doing away with the old
116 scheme of having the information in configure.in
117
118 version.c
119 - include patchlevel.h
120
121 Makefile.in
122 - run bashversion -p to find patch level rather than have configure
123 substitute in a value
124 - pass -S ${top_srcdir} to support/mkversion.sh
125
126 support/mkversion.sh
127 - don't put PATCHLEVEL define into version.h, but accept and ignore
128 a -p option
129 - take a new -S srcdir option
130 - find the patch level by parsing it out of patchlevel.h
131
132 configure.in
133 - hard-code BASHVERS assignment instead of reading it from a file
134 - remove BASHPATCH; don't substitute it
135
136 _distribution,_patchlevel
137 - removed
138
139 4/26
140 ----
141 shell.c
142 - call init_noninteractive() in open_shell_script if forced_interactive
143 is non-zero (the shell was started with -i) and fd_is_tty is 0
144 (the script file is a real file, not something like /dev/stdin),
145 since it wasn't done earlier
146
147 builtins/printf.def
148 - change for POSIX.2 compliance when conversion errors are encountered
149 when processing %d, %u, and floating point conversion operators
150 (print a warning message, return the value accumulated at the time
151 of the error -- which is always 0 -- and exit with a non-zero status)
152
153 command.h
154 - added CMD_COMMAND_BUILTIN for use by the `command' builtin and the
155 code in execute_cmd.c
156
157 builtins/command.def
158 - add CMD_COMMAND_BUILTIN to the created command's flags
159
160 5/1
161 ---
162 configure.in
163 - add call to AC_C_CONST to test `const' compiler behavior
164 - add call to AC_C_INLINE to test `inline' compiler behavior
165 - add call to AC_C_STRINGIZE to test cpp #x stringizing operator
166
167 config.h.in
168 - add `#undef const' for configure to substitute
169 - add `#undef inline' for configure to substitute
170 - add `#undef HAVE_STRINGIZE' for configure to substitute
171
172 include/stdc.h
173 - remove code that defines or undefines `const' and `inline'
174 - change the __STRING macro to be defined depending on the value
175 of HAVE_STRINGIZE
176
177 lib/malloc/malloc.c
178 - change the __STRING macro to be defined depending on the value
179 of HAVE_STRINGIZE
180
181 lib/readline/{readline,rlprivate}.h
182 - moved rl_get_termcap to readline.h, making it a public function
183
184 lib/readline/readline.h
185 - new #define, RL_READLINE_VERSION, hex-encoded library version
186 number, currently set to 0x0402
187 - new public int variable, rl_readline_version
188
189 lib/readline/readline.c
190 - #define RL_READLINE_VERSION if it is not already defined (which it
191 should be in readline.h)
192 - initialize rl_readline_version to RL_READLINE_VERSION
193
194 lib/readline/doc/rltech.texinfo
195 - documented rl_get_termcap
196 - documented rl_readline_version
197
198 jobs.c
199 - job_exit_status should return an int, not a WAIT (undetected
200 before because on most POSIX-like systems a WAIT is really an int)
201
202 builtins/evalfile.c
203 - added FEVAL_REGFILE (file must be a regular file) to accepted
204 _evalfile flags
205 - fc_execute_file() adds FEVAL_REGFILE to _evalfile flags. This
206 means that startup files and files read with `.' no longer need
207 to be regular files
208
209 5/2
210 ---
211
212 lib/termcap/Makefile.in
213 - fix target for installed termcap library (normally unused)
214
215 lib/tilde/Makefile.in
216 - fix install target to install in $(libdir) (normally unused)
217
218 Makefile.in
219 - don't make $(man3dir) since there's nothing installed there
220
221 Makefile.in,doc/Makefile.in
222 - change `man1ext' to `.1', `man3ext' to `.3'
223 - change appropriate install targets to use new values of man[13]ext
224 - use `test ...' instead of `[...]'
225 - add support for DESTDIR root installation prefix, for package
226 building (installdirs, install, install-strip, uninstall targets)
227
228 builtins/common.c
229 - new function int get_exitstat(WORD_LIST *list) returns an eight-bit
230 exit status value for use in return, exit, logout builtins
231
232 builtins/common.h
233 - extern declaration for get_exitstat()
234
235 builtins/{exit,return}.def
236 - call get_exitstat where appropriate
237
238 builtins/printf.def
239 - add support for "'" flag character as posix 1003.2-200x d6 says
240 - fix core dump when user-supplied field width or precision is 0
241 - fix to printstr() to handle zero-length precision with `%b' format
242 specifier (printf '%.0b-%.0s\n' foo bar)
243 - fix to printstr() to treat a negative field width as a positive
244 field width with left-justification
245 - fix to mklong to avoid static buffers, which can always be overrun
246 by someone sufficiently motivated
247
248 bashline.c
249 - change var in add_host_name to type `size_t' for passing to xrealloc
250
251 5/3
252 ---
253 execute_cmd.c
254 - change restore_signal_mask to accept a sigset_t *, since a sigset_t
255 may not fit into a pointer, change call
256
257 unwind_prot.c
258 - use a union UWP in restore_variable when restoring a variable whose
259 size is the same as sizeof(int), the reverse of the method used to
260 store it in unwind_protect_int
261
262 builtins/printf.def
263 - use a #define LENMODS containing the length modifiers instead of
264 testing against each possible modifier character, save any mod
265 character found
266 - add support for ISO C99 length specifiers `j', `t', and `z'
267 - if `L' modifier is supplied with a floating point conversion char,
268 pass a `long double' to printf if HAVE_LONG_DOUBLE is defined
269
270 configure.in,config.h.in
271 - call AC_C_LONG_DOUBLE to check for `long double'; define
272 HAVE_LONG_DOUBLE if supported
273
274 bashline.c
275 - fix an inadvertantly-unclosed comment in attempt_shell_completion
276 - make set_saved_history return a value
277 - make dynamic_complete_history return a useful value
278
279 {make_cmd,execute_cmd,shell,subst,trap,variables,input,unwind_prot,test,
280 pcomplete}.c
281 - removed some declared-but-unused variables
282
283 builtins/{cd,enable,fc,set,setattr,type,umask,printf,complete}.def
284 - removed some declared-but-unused variables
285
286 lib/sh/{zread,netopen}.c
287 - removed some declared-but-unused variables
288
289 execute_cmd.c
290 - in execute_arith_command, use a long variable to hold the result
291 of evalexp(), since that's what it returns
292
293 builtins/evalstring.c
294 - make cat_file return -1 on a read or write error
295
296 lib/sh/stringlib.c
297 - make merge_stringlists() return the right value
298
299 5/7
300 ---
301 pcomplete.c
302 - remove typo that caused empty declaration (;;)
303
304 parse.y
305 - fix yyerror() to accept a single string argument; fix callers
306
307 trap.c
308 - cast pointer to long instead of int when printing message with
309 internal_warning() in run_pending_traps()
310
311 subst.c
312 - fix process_substitute to handle stdin being closed
313
314 test.c
315 - change `while' to `if' in and() and or(), since the loop isn't
316 actually performed -- there's an unconditional `return' in the
317 loop body
318 - check for integer overflow of arguments to `-t'
319
320 lib/sh/netopen.c
321 - change _getserv() to reject negative port/service numbers
322
323 expr.c
324 - fix strlong() to not convert the base specification from long to
325 int before checking for overflow, since truncation on machines
326 where sizeof(int) != sizeof(long) may mask errors
327
328 builtins/{jobs,kill,wait}.def
329 - use legal_number instead of atoi when converting strings to pid_t;
330 check for numeric overflow
331
332 input.c
333 - fix for cygwin in b_fill_buffer -- off-by-one error when checking
334 buffer for \r\n termination
335
336 general.h
337 - new #define INT_STRLEN_BOUND(t), computes max length of string
338 representing integer value of type T, possibly including a sign
339 character
340 - include <limits.h> if it's present
341
342 {execute_cmd,findcmd,test}.c
343 - don't include <limits.h>, since general.h does it now
344
345 {execute_cmd,lib/sh/itos,pcomplete,print_cmd,subst,variables}.c
346 - use INT_STRLEN_BOUND instead of static array sizes when converting
347 various strings to integer values
348
349 shell.h
350 - struct fd_bitmap now uses an `int' size, since it's bounded by
351 the number of file descriptors, which must fit into an `int'
352
353 execute_cmd.c
354 - FD_BITMAP_DEFAULT_SIZE is now 32, not 32L
355 - new_fd_bitmap takes an `int' size parameter, not a `long'
356
357 execute_cmd.h
358 - change prototype for new_fd_bitmap()
359
360 test.c
361 - fix test_stat to check for overflow when parsing the integer file
362 descriptor number; return ENOENT instead of EBADF for files that
363 are not open
364
365 hashlib.c
366 - don't discard the upper 32 bits of the random value, if present
367
368 lib/readline/shell.c
369 - use the same INT_STRLEN_BOUND mechanism to decide how much space to
370 allocated in sh_set_lines_and_columns
371
372 5/8
373 ---
374 aclocal.m4
375 - add check for libtinfo (termcap-specific portion of ncurses-5.2) to
376 BASH_CHECK_LIB_TERMCAP
377 - new macro, RL_LIB_READLINE_VERSION, checks version of installed
378 readline library and (optionally) writes version #defines to
379 config.h. Bash doesn't use the version defines
380
381 configure.in
382 - call RL_LIB_READLINE_VERSION instead of support/rlvers.sh
383
384 execute_cmd.c
385 - fix execute_shell_script and the WHITECHAR and STRINGCHAR macros
386 to check array bounds before indexing into the sample string
387
388 unwind_prot.[ch]
389 - import new versions submitted by Paul Eggert <eggert@twinsun.com>
390 with a couple of changes for backwards compatibility, so the rest
391 of the source doesn't need to be changed yet
392
393 jobs.c
394 - use unwind_protect_var on last_made_pid in run_sigchld_trap
395
396 builtins/bind.def
397 - use unwind_protect_var on rl_outstream
398
399 general.c
400 - rework print_rlimtype to use INT_STRLEN_BOUND and handle the
401 most negative number correctly
402
403 expr.c
404 - `tokval' should have been a `long', since all arithmetic is done
405 as longs
406
407 builtins/history.def
408 - consolidate tests for valid history position in one block to
409 avoid duplicate code and strings
410
411 builtins/ulimit.def
412 - fix check for overflow when setting limit to work when int is 32
413 bits and RLIMTYPE is 64
414
415 lib/sh/tmpfile.c
416 - don't truncate the result of time(3) to int; just use time_t,
417 since it's being assigned to an `unsigned long'
418
419 mailcheck.c
420 - use legal_number instead of atoi in time_to_check_mail() to catch
421 more numeric errors; consolidate error checking in one block
422 - last_time_mail_checked should be a time_t
423
424 5/9
425 ---
426 builtins/set.def
427 - recognize `set [-+]o nolog' if HISTORY is defined
428
429 bashline.c
430 - new variable `dont_save_function_defs', set by `set -o nolog';
431 currently ignored
432
433 command.h
434 - the `dest' member of a REDIRECTEE is now an `int'
435
436 parse.y,redir.c
437 - changed uses of `redir.test' (where redir is a REDIRECTEE) since
438 it's now an int
439
440 lib/readline/rlstdc.h
441 - don't mess around with `const', rely on configure to supply a
442 proper definition if the compiler doesn't support it
443
444 lib/tilde/tilde.h
445 - include <config.h> if HAVE_CONFIG_H is defined
446 - don't mess around with `const', rely on configure
447
448 builtins/shopt.def
449 - new read-only `shopt' option, login_shell, non-zero if shell is a
450 login shell (as decided by shell.c)
451 - new function set_login_shell(), sets shopt private value of
452 login_shell
453
454 builtins/common.h
455 - new extern declaration for set_login_shell
456
457 shell.c
458 - call set_login_shell after setting value of login_shell (in
459 main() and set_shell_name())
460
461 parse.y
462 - added new `\A' prompt string escape sequence: time in 24-hour
463 HH:MM format
464
465 configure.in, config.h.in
466 - check for <grp.h>, define HAVE_GRP_H if found
467
468 builtins/complete.def
469 - add new `-A group/-g' option to complete group names
470
471 pcomplete.h
472 - new define for CA_GROUP, used with group name completion
473
474 pcomplete.c
475 - add code to support CA_GROUP group name completion
476
477 bashline.c
478 - new function, bash_groupname_completion_function(), supports
479 programmable completion of group names
480
481 bashline.h
482 - extern declaration for bash_groupname_completion_function
483
484 lib/readline/bind.c
485 - new inputrc variable, `match-hidden-files', controls completion
486 matching files beginning with a `.' (on Unix)
487
488 lib/readline/complete.c
489 - new variable, _rl_match_hidden_files, mirrors `match-hidden-files'
490 inputrc variable
491
492 lib/readline/rlprivate.h
493 - extern declaration for _rl_match_hidden_files
494
495 builtins/hash.def
496 - new `-t' option to list hash values for each filename argument
497
498 builtins/read.def
499 - alarm(3) takes an `unsigned int' argument, not int
500 - check for arithmetic overflow with -t and -n options
501
502 input.c
503 - check for read error before doing \r\n translation on cygwin in
504 b_fill_buffer
505 - reset bp->b_used to 0 instead of leaving it at -1 on read error
506 in b_fill_buffer
507
508 builtins/shopt.def
509 - new functions, shopt_setopt(name, mode) and
510 shopt_listopt(name, mode) to give the rest of the shell an easy
511 interface
512
513 builtins/common.h
514 - extern declarations for shopt_setopt and shopt_listopt
515
516 shell.c
517 - new invocation options -O and +O, to list or set/unset shopt
518 options like +o/-o sets and unsets `set -o' options
519
520 doc/{bash.1,bashref.texi}
521 - document `set -o nolog'
522 - document `login_shell' shopt option
523 - document new `\A' prompt string escape sequence
524 - document new `-t' option to `hash'
525 - document new `[+-]O' invocation option
526
527 doc/bashref.texi
528 - add text to `Invoking Bash' section defining a login shell; text
529 taken from man page
530
531 doc/bash.1, lib/readline/doc/rluser.texinfo
532 - documented new complete/compgen `-A group/-g' option
533
534 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
535 - documented new `match-hidden-files' inputrc variable
536
537 5/10
538 ----
539 configure.in
540 - fix AC_CHECK_PROG(ar, ...)
541 - add AC_CHECK_TYPE for ssize_t
542
543 config.h.in
544 - new #undef for ssize_t
545
546 lib/sh/zread.c
547 - int -> ssize_t fixes to mirror modern declarations of read and write
548 - the `off' variable in zsyncfd should be an off_t since it computes
549 a file offset
550 - the local buffer `lbuf' is now char, since it's not nice to pass
551 unsigned char * to read(2), and the values from it are assigned to
552 a char anyway
553 - lind and lused are now size_t, since they index into a buffer
554 - set lused to 0 on read error
555
556 lib/sh/zwrite.c
557 - change second argument to type `char *', since ISO C says you have
558 to pass a `char *' to `write'
559
560 externs.h
561 - fix extern declarations of zread, zread1, zreadc, and zwrite
562 - prototype extern declaration of qsort_string_compare
563 - add extern declaration for history_delimiting_chars() from parse.y
564
565 input.h
566 - b_used and b_inputp members ofr struct BSTREAM are now size_t
567
568 builtins/evalstring.c
569 - the number of chars read with zread in cat_file should be assigned
570 to a variable of type ssize_t
571
572 input.c
573 - the number of chars read with zread in b_fill_buffer should be
574 assigned to a variable of type ssize_t
575 - `localbuf' is now type char[], since POSIX says you shouldn't pass
576 unsigned char * to read(2)
577 - in getc_with_restart(), use a variable of type unsigned char to
578 get a value from the local buffer and return it
579 - in ungetc_with_restart, explicitly return the character arg passed
580 to avoid relying on localbuf being unsigned char
581
582 subst.c
583 - the number of chars read with zread in read_comsub should be
584 assigned to a variable of type ssize_t
585
586 mksyntax.c
587 - instead of casting to unsigned char * in addcstr, use a variable
588 of type unsigned char and let the compiler do the work
589
590 parse.y
591 - instead of casting to unsigned char * in yy_readline_get, use a
592 variable of type unsigned char and let the compiler do the work
593 - ditto for yy_string_get and shell_getc (cast to unsigned char)
594
595 subst.c
596 - instead of casting to unsigned char when assigning to ifscmap in
597 expand_word_internal, use a variable of type unsigned char and
598 let the compiler do the work
599
600 lib/sh/strtrans.c
601 - instead of casting to unsigned char in ansic_quote, use a variable
602 of type unsigned char and let the compiler do the work
603
604 builtins/evalstring.c
605 - remove extern declarations for zwrite and run_trap_cleanup; they're
606 in externs.h
607 - prototype cat_file forward declaration
608
609 Makefile.in
610 - remove -I$(includedir) from INCLUDES and SUBDIR_INCLUDES
611
612 aclocal.m4
613 - change RL_LIB_READLINE_VERSION to set RL_PREFIX, RL_LIBDIR,
614 and RL_INCLUDEDIR to what it used to test the installed readline
615 library version for use by the caller
616 - change RL_LIB_READLINE_VERSION to not compute ac_cv_rl_prefix if
617 the caller has already assigned it a value
618 - rename _rl_prefix -> ac_cv_rl_prefix, _rl_libdir -> ac_cv_rl_libdir,
619 _rl_includedir -> ac_cv_rl_includedir
620
621 configure.in
622 - change testing of whether to use the value of
623 $opt_with_installed_readline to be != no, to allow the user to
624 specify a prefix where the installed readline library may be found
625 - if --with-installed-readline=PREFIX is supplied, set ac_cv_rl_prefix
626 to PREFIX before calling RL_LIB_READLINE_VERSION
627 - if --with-installed-readline[=PREFIX] is supplied, don't set
628 RL_LIBDIR and RL_INCLUDEDIR; let RL_LIB_READLINE_VERSION take care
629 of it, set RL_INCLUDE=-I${RL_INCLUDEDIR}
630 - if --with-installed-readline[=PREFIX] is supplied, and we're
631 linking with the history library, assign $RL_LIBDIR to HIST_LIBDIR
632 so we use the same version of the installed readline and history
633 libraries
634
635 Makefile.in, builtins/Makefile.in
636 - have configure substitute RL_INCLUDEDIR, set RL_INCLUDEDIR variable
637
638 doc/bashref.texi
639 - updated description of --with-installed-readline configure option
640
641 general.c
642 - moved QSFUNC typedef here from builtins/common.c
643
644 {alias,bashline,variables,lib/sh/stringvec}.c
645 - cast fourth argument to qsort to (QSFUNC *)
646
647 alias.c
648 - prototype forward declaration of qsort_alias_compare
649
650 bashhist.c
651 - include <glob/glob.h> for extern declaration of glob_pattern_p
652 - remove extern declaration of history_delimiting_chars; it's now
653 in externs.h
654 - prototype forward declarations of histignore_item_func,
655 maybe_add_history, and bash_add_history
656
657 bracecomp.c
658 - remove extern declaration for sh_backslash_quote; it's in externs.h
659
660 braces.c
661 - remove extern declaration for extract_command_subst; it's in subst.h
662 - prototype forward declarations for expand_amble, array_concat, and
663 brace_gobbler
664
665 error.c
666 - prototype extern declaration of give_terminal_to, fix bad call
667
668 {execute_cmd,expr,findcmd,jobs,mailcheck,nojobs,pcomplete,print_cmd,redir,
669 shell}.c
670 - prototype all static forward function declarations
671
672 pcomplete.c
673 - changed some function parameters to `const char *' to avoid discarding
674 const qualifier
675
676 make_cmd.c
677 - make_bare_word, make_word_flags, and make_word now take a
678 `const char *' string argument
679
680 make_cmd.h
681 - changed extern declarations for make_bare_word and make_word
682
683 print_cmd.c
684 - cprintf now takes a `const char *' as its first argument, like
685 xprintf and printf
686 - the conditional define for xprintf should have been HAVE_VPRINTF,
687 not HAVE_VFPRINTF
688
689 shell.c
690 - in isnetconn(), the return value of sizeof() is size_t
691
692 aclocal.m4
693 - add inclusion of stddef.h if STDC_HEADERS is defined to 1 in
694 BASH_CHECK_TYPE
695
696 configure.in
697 - add a call to BASH_CHECK_TYPE for socklen_t (type of third argument
698 to getpeername(2))
699
700 5/11
701 ----
702 lib/readline/bind.c
703 - make `useq' a char array to pass to rl_macro_bind in
704 rl_parse_and_bind
705
706 lib/readline/{{bind,isearch}.c,rlprivate.h}
707 - _rl_isearch_terminators is now a char *, not unsigned char *
708
709 {subst,variables,lib/sh/tmpfile}.c
710 - dollar_dollar_pid is now a `pid_t' instead of `int'
711
712 variables.c
713 - sbrand() now takes an `unsigned long' to set the seed value
714 - changed last_random_value to type int, since it's always between
715 0 and 32767
716 - use strtoul to convert the value in assign_random instead of atoi
717 - take out casts in any arguments to sbrand()
718 - take out cast to int in call to inttostr in set_ppid()
719
720 subst.c
721 - don't cast last_asynchronous_pid when passing to itos()
722
723 {sig,subst}.c
724 - prototype all static forward function declarations
725
726 5/14
727 ----
728 {test,trap,variables}.c
729 - prototype all static forward function declarations
730
731 variables.c
732 - free_variable_hash_data() now takes a PTR_T, a `generic pointer'
733
734 builtins/{alias,bind,break,cd,complete,declare,enable,exit,fc,fg_bg,help,
735 history,jobs,pushd,read,set,trap,umask,
736 - prototype all static forward function declarations
737
738 builtins/read.def
739 - reset_eol_delim now takes a `char *' arg, since that's what the
740 unwind_protect functions pass it, and it ignores its arguments
741 anyway
742
743 lib/readline/{histsearch,input,kill,rltty,search,vi_mode}.c
744 - prototype all static forward function declarations
745
746 lib/tilde/tilde.c
747 - prototype all static forward function declarations
748 - tilde_find_prefix, tilde_find_suffix, isolate_tilde_prefix, and
749 glue_prefix_and_suffix now take `const char *' arguments where
750 appropriate
751
752 configure.in,config.h.in
753 - check for vsnprintf, define HAVE_VSNPRINTF if found
754
755 lib/readline/display.c
756 - use vsnprintf() in rl_message if it's available; if we don't, at
757 least set the last character in msg_buf to 0 to avoid overrun --
758 we really can't do anything about overflow at this point. if it's
759 available, this fixes buffer overflow problems in rl_message
760
761 5/15
762 ----
763 lib/readline/histexpand.c
764 - in get_history_word_specifier, allow any character to terminate
765 a `:first-' modifier, not just `:' and null. This is what csh
766 appears to do. This allows things like `!:0- xyzzy' to replace the
767 last argument with xyzzy
768
769 5/18
770 ----
771 configure.in, config.h.in
772 - check for <stdint.h>, define HAVE_STDINT_H if found
773 - check for intmax_t in <stdint.h>, define intmax_t as long if not
774 found
775
776 5/21
777 ----
778 builtins/kill.def
779 - change to use strerror() for error message when kill(2) fails
780
781 aclocal.m4
782 - new macro, BASH_C_LONG_LONG, check for `long long'
783
784 configure.in, config.h.in
785 - call BASH_C_LONG_LONG, define HAVE_LONG_LONG if found
786
787 lib/sh/snprintf.c
788 - new file, with implementations of snprintf, vsnprintf, asprintf,
789 and vasprintf, derived from inetutils version
790
791 Makefile.in, lib/sh/Makefile.in
792 - add snprintf.c/snprintf.o
793
794 configure.in, config.h.in
795 - add checks for snprintf, asprintf, vasprintf, with appropriate
796 cpp defines
797
798 lib/readline/{rldefs,xmalloc}.h, lib/readline/xmalloc.c
799 - xmalloc and xrealloc now take `size_t' arguments, like their bash
800 counterparts
801
802 externs.h,lib/sh/itos.c
803 - inttostr and itos now take `long' arguments
804 - inttostr takes a `size_t' argument for the buffer size
805
806 {expr,lib/malloc/malloc,variables,general}.c
807 - fixed calls to itos() by removing casts, etc.
808
809 subst.[ch]
810 - get_dollar_var_value now takes a long, not an int
811 - sub_append_number now takes a long, not an int
812
813 subst.c
814 - in parameter_brace_expand_word, use a long and legal_number to
815 translate ${N}, to avoid overflow
816 - in parameter_brace_expand_length, use a long and legal_number to
817 translate ${#N}, to avoid overflow
818 - in do_array_element_assignment, array_expand_index,
819 array_value_internal, use arrayind_t instead of int
820 - let verify_substring_values take long * arguments for the return
821 value of evalexp()
822 - pass long * arguments to verify_substring_values in
823 parameter_brace_substring
824 - parameter_brace_expand_length now returns `long'
825 - parameter_brace_expand now uses a long variable for the return
826 value of parameter_brace_expand_length
827 - param_expand now uses a long variable for the return value from
828 evalexp
829 - array_length reference now returns an `arrayind_t', since it can
830 return the num_elements member of an array, which is of type
831 arrayind_t
832
833 subst.h
834 - array_expand_index now returns an `arrayind_t'
835
836 array.[ch]
837 - array_subrange now takes arrayind_t arguments, not `int'
838 - dup_array_subrange now uses arrayind_t local variable to do
839 array indexing
840 - use long to print array indices in print_element
841
842 variables.c
843 - null_array_assign, assign_dirstack, bind_array_variable
844 now take arrayind_t arguments as array indices
845 - assign_array_var_from_word_list, assign_array_var_from_string,
846 unbind_array_element now use arrayind_t local variables for
847 array indexing
848
849 variables.h
850 - change extern declaration of bind_array_variable
851
852 builtins/common.[ch]
853 - get_numeric_arg now returns a `long', since it usually returns
854 the value of legal_number()
855
856 builtins/{shift,break}.def
857 - use long variables for the return value of get_numeric_arg
858
859 builtins/history.def
860 - convert string argument to int only if it's in range
861
862 builtins/pushd.def
863 - set_dirstack_element and get_dirstack_element now take `long'
864 index arguments
865 - get_dirstack_index now takes a `long' index argument, since it's
866 passed the converted value from legal_number
867
868 lib/sh/timeval.c
869 - in print_timeval, don't assume that the number of minutes fits into
870 an int, since it's just seconds/60.
871
872 lib/sh/clock.c
873 - ditto for print_clock_t
874
875 5/22
876 ----
877 shell.c
878 - since the -O option settings may possibly be overridden by the
879 normal shell initialization or posix initialization, save the
880 invocation options on an alist (with add_shopt_to_alist) and
881 process them after basic initialization (with run_shopt_alist)
882
883 5/23
884 ----
885 trap.h
886 - new define, BASH_NSIG, all system signals plus special bash traps
887
888 trap.c, builtins/trap.def
889 - use BASH_NSIG for array bounds and loops where appropriate
890
891 trap.c
892 - change decode_signal to disallow numeric signal numbers above
893 NSIG -- this means you can only reference special traps like
894 DEBUG by name
895 - new SPECIAL_TRAP(s) macro to test whether s is one of the special
896 bash traps (currently DEBUG and EXIT)
897 - change reset_or_restore_signal_handlers so command substitution
898 doesn't inherit the debug trap (like ksh93), and child processes
899 don't have to rely on initialize_traps being run to get rid of
900 any debug trap
901
902 support/mksignames.c
903 - add extra "ERR" signal name, value NSIG+1, allocate space for it
904 and write it out in signal_names[]
905
906 trap.h
907 - new define: ERROR_TRAP == NSIG+1, change BASH_NSIG to NSIG+2
908 - extern declarations for set_error_trap, run_error_trap
909 - new define: TRAP_STRING(s), expands to trap_list[s] if signal S
910 is trapped and not ignored, NULL otherwise
911
912 trap.c
913 - add ERROR_TRAP to SPECIAL_TRAPS define
914 - initialize ERROR_TRAP stuff in initialize_traps
915 - new function: set_error_trap(command), sets the ERR trap string
916 - new function: run_error_trap(command), runs the ERR trap string
917 - set trap string for ERROR_TRAP to NULL in free_trap_strings
918 - change reset_or_restore_signal_handlers so child processes don't
919 inherit the ERR trap
920 - add case to call run_error_trap in maybe_call_trap_handler
921
922 execute_cmd.c
923 - in execute_command_internal, keep track of ERR trap and call it if
924 necessary
925 - use TRAP_STRING to get the value of debug and error traps
926 - in execute_function, arrange things so the ERR trap is not inherited
927 by shell functions, and is saved and restored like the DEBUG trap
928
929 doc/{bash.1,bashref.texi}
930 - documented new ERR trap
931
932 tests/{trap.{tests,right},trap2.sub,trap2a.sub}
933 - added ERR trap tests
934
935 subst.c
936 - on machines without /dev/fd, change the named pipe fifo list to a
937 list of structs containing pathname and proc information
938 - change unlink_fifo_list to kill the proc in the fifo list with
939 signal 0 and not remove the fifo if the proc is still alive. This
940 should fix the problem on those backward systems without /dev/fd
941 where fifos were removed when a job using process substitution was
942 suspended
943
944 5/24
945 ----
946 examples/loadables/getconf.h
947 - new file, with basic defines needed to make getconf work minimally
948 on POSIX systems without the necessary definitions
949
950 examples/loadables/getconf.c
951 - replacement functions for confstr, sysconf, pathconf for systems
952 that lack them, providing a minimal posix interface
953 - heavily augmented getconf, now supports all POSIX.1-200x,
954 POSIX.2-200x, Solaris 7, AIX 4.2 getconf variables
955
956 5/29
957 ----
958 builtins/setattr.def
959 - make `readonly', `export', and `declare' print `invisible' variables
960 as just a command and variable name, without a value, when listing
961 all variables (as POSIX.2-200x d6 requires)
962
963 5/30
964 ----
965
966 configure.in
967 - upgraded to autoconf-2.50 on main development machine, so require
968 autoconf-2.50 in preparation for using some if its new features
969 - call AC_C_PROTOTYPES
970 - remove call to AC_EXEEXT, which now does the wrong thing
971 - changed AC_INIT to new flavor
972 - added call to AC_CONFIG_SRCDIR
973 - AC_CONFIG_HEADER -> AC_CONFIG_HEADERS
974 - AC_RETSIGTYPE -> AC_TYPE_SIGNAL
975
976 configure.in, aclocal.m4, config.h.in
977 - removed call to BASH_LARGE_FILE_SUPPORT, use AC_SYS_LARGEFILE
978 standard support, with new macros _FILE_OFFSET_BITS and
979 _LARGE_FILES
980 - removed definition of BASH_LARGE_FILE_SUPPORT
981
982 doc/bashref.texi
983 - document new `--enable-largefile' configure option
984
985 lib/readline/readline.c
986 - change rl_set_prompt to call rl_expand_prompt unconditionally, so
987 local_prompt and local_prompt_prefix get set correctly
988
989 6/6
990 ---
991 lib/readline/complete.c
992 - don't append `/' or ` ' to a match when completing a symlink that
993 resolves to a directory, unless the match doesn't add anything
994 to the word. This means that a tab will complete the word up to
995 the full name, but not add anything, and a subsequent tab will add
996 a slash. Change to append_to_match; callers changed
997
998 hashlib.c
999 - new function, hash_table_nentries (table), returns the number of
1000 items in TABLE
1001
1002 hashlib.h
1003 - extern declaration for hash_table_nentries
1004
1005 configure.in
1006 - configure without bash malloc on openbsd; they claim it needs
1007 eight-bit alignment (which the bash malloc provides, but...)
1008
1009 7/2
1010 ---
1011 stringlib.c
1012 - only call RESIZE_MALLOCED_BUFFER from strsub() if the replacement
1013 string length is > 0, avoid possible hangs if replacement is null
1014
1015 subst.c
1016 - don't include input.h; no longer needed
1017
1018 configure.in
1019 - remove calls to AC_SYS_RESTARTABLE_SYSCALLS and
1020 BASH_SYS_RESTARTABLE_SYSCALLS; the results are no longer used
1021
1022 config.h.in
1023 - remove define for HAVE_RESTARTABLE_SYSCALLS
1024
1025 aclocal.m4
1026 - removed definition of BASH_SYS_RESTARTABLE_SYSCALLS; no longer used
1027
1028 execute_cmd.c
1029 - changed select command so `return' no longer terminates the select
1030 command, so it can be used to return from an enclosing function.
1031 This is as ksh (88 and 93) does it
1032
1033 lib/readline/vi_mode.c
1034 - fix trivial typo in declaration of vi_motion; `t' appears twice;
1035 the second instance should be `T'
1036
1037 7/3
1038 ---
1039 configure.in
1040 - don't add -static to LDFLAGS on Solaris 2.x. This means that the
1041 auxiliary programs will be built as dynamic executables, but that
1042 should do no harm
1043
1044 7/5
1045 ---
1046 lib/glob/fnmatch.c
1047 - fix the code that processes **(pattern) to short-circuit if the
1048 pattern is ill-formed or lacks a trailing `)' -- this fixes the
1049 segfault on **(/*)
1050
1051 Makefile.in, builtins/Makefile.in
1052 - split CCFLAGS into CCFLAGS_FOR_BUILD and CFLAGS, to aid in
1053 cross-compilation
1054 - build programs that use $(CC_FOR_BUILD) using $(CCFLAGS_FOR_BUILD)
1055
1056 configure.in, config.h.in
1057 - check for getaddrinfo(3), define HAVE_GETADDRINFO if found
1058
1059 lib/sh/netopen.c
1060 - implemented a version of _netopen (_netopen6) that uses
1061 getaddrinfo(3) if available, use if HAVE_GETADDRINFO is defined.
1062 old _netopen is _netopen4; _netopen now calls either _netopen6
1063 or _netopen4 as appropriate
1064
1065 7/9
1066 ---
1067 builtins/exit.def
1068 - don't source ~/.bash_logout if subshell_environment is non-zero
1069
1070 execute_command.c
1071 - in execute_until_or_while, handle the case where `breaking' is
1072 set in the loop test (e.g., by the job control code when a job
1073 is stopped with SIGTSTP), but the return value from the test is
1074 something that would cause the loop to break. Need to decrement
1075 `breaking' in this case
1076
1077 7/10
1078 ----
1079 execute_cmd.c
1080 - in execute_in_subshell, make sure a command of type cm_subshell
1081 inherits its `enclosing' command's CMD_IGNORE_RETURN flag
1082
1083 variables.c
1084 - in maybe_make_export_env, don't allow restricted shells to put
1085 exported functions in the export environment
1086
1087 7/11
1088 ----
1089 lib/glob/strmatch.h
1090 - renamed old fnmatch.h
1091 - changed guard #ifdef to _STRMATCH_H
1092 - include system <fnmatch.h> if HAVE_LIBC_FNM_EXTMATCH is defined
1093
1094 lib/glob/strmatch.c
1095 - renamed old fnmatch.c
1096 - include "strmatch.h"
1097 - if HAVE_LIBC_FNM_EXTMATCH is defined, define a dummy version of
1098 strmatch() that just calls fnmatch(3)
1099
1100 lib/glob/glob.c
1101 - include "strmatch.h"
1102 - fnmatch -> strmatch
1103
1104 Makefile.in, lib/glob/Makefile.in
1105 - fnmatch -> strmatch
1106
1107 {bashhist,execute_cmd,pathexp,pcomplete,shell,stringlib,subst,test}.c,
1108 pathexp.h,builtins/help.def
1109 - include <glob/strmatch.h>
1110 - fnmatch -> strmatch
1111
1112 execute_cmd.c
1113 - broke the code that parses the interpreter name from a #! line
1114 out from execute_shell_script to a new function, getinterp()
1115 - call getinterp from execute_shell_script
1116 - use return value from getinterp in error message about bad
1117 #! interpreter in shell_execve
1118
1119 7/12
1120 ----
1121 lib/readline/isearch.c
1122 - the last isearch string is now remembered in a new static variable,
1123 last_isearch_string
1124 - if ^R^R is typed, readline now searches for the remembered isearch
1125 string, if one exists
1126
1127 7/24
1128 ----
1129 pcomplete.h
1130 - extern declaration for completions_to_stringlist()
1131
1132 7/25
1133 ----
1134 builtins/complete.def
1135 - make compgen handle -o default option
1136 - make compgen return success only if sl->list_len is non-zero,
1137 indicating that there are items on the list
1138
1139 7/31
1140 ----
1141 execute_cmd.c
1142 - in execute_connection, force stdin to /dev/null for asynchronous
1143 commands if job control is not active, not just if the shell is
1144 running a shell script (since you can run `set -m' in a script)
1145
1146 lib/readline/rltty.c
1147 - make sure _rl_tty_restore_signals resets `tty_sigs_disabled' on
1148 successful restoration of the terminal modes
1149 - make sure _rl_tty_disable_signals turns off IXON so that ^S and
1150 ^Q can be read by rl_quoted_insert
1151
1152 8/1
1153 ---
1154 aclocal.m4
1155 - new check for FNM_EXTMATCH being defined in <fnmatch.h>, as Ullrich
1156 Drepper intends to do for new versions of GNU libc
1157
1158 config.h.in
1159 - new definition for HAVE_LIBC_FNM_EXTMATCH
1160
1161 configure.in
1162 - check for fnmatch, but don't define anything in config.h
1163 - call BASH_FUNC_FNMATCH_EXTMATCH to check for FNM_EXTMATCH
1164
1165 8/2
1166 ---
1167 alias.h
1168 - remove bogus extern declaration for xmalloc()
1169 - include "stdc.h"
1170 - add prototype declarations for all extern function declarations
1171
1172 xmalloc.c,lib/readline/xmalloc.c
1173 - fix xmalloc to return a PTR_T
1174 - fix xrealloc to return a PTR_T and take a PTR_T as first argument
1175
1176 include/ansi_stdlib.h
1177 - extern declarations for malloc and realloc have them return PTR_T
1178
1179 xmalloc.h
1180 - new file, with extern declarations for functions in xmalloc.c
1181
1182 general.h
1183 - removed extern declarations for functions in xmalloc.c
1184 - include xmalloc.h
1185
1186 Makefile.in,builtins/Makefile.in
1187 - update dependencies to include xmalloc.h
1188
1189 parse.y,{alias,array,bashline,bracecomp,execute_cmd,findcmd,flags,general,
1190 hashcmd,locale,mailcheck,make_cmd,pathexp,pcomplete,print_cmd,stringlib,
1191 subst,unwind_prot,variables}.c
1192 builtins/{common,evalfile}.c
1193 builtins/{cd,command,enable,exec,printf,read,set}.def
1194 lib/sh/{makepath,netopen,pathphys,setlinebuf,shquote,snprintf,stringlist,
1195 strtrans,tmpfile}.c
1196 lib/readline/{util,terminal,shell,readline,macro,kill,isearch,input,
1197 histfile,histexpand,display,complete,bind}.c
1198 - make sure all calls to xmalloc are cast to the right return value
1199
1200 siglist.c
1201 - include xmalloc.h
1202
1203 parse.y,{alias,bashline,bracecomp,expr,make_cmd,nojobs,print_cmd,subst}.c
1204 builtins/{fc,printf,read}.def
1205 lib/sh/snprintf.c, lib/tilde/tilde.c
1206 lib/readline/{bind,display,histexpand,isearch,macro,util,vi_mode}.c
1207 - make sure all calls to xrealloc are cast to the right return value
1208
1209 lib/sh/{netopen,setlinebuf,shquote,snprintf}.c, lib/tilde/tilde.c
1210 - include xmalloc.h, remove extern declaration of xmalloc
1211
1212 lib/readline/xmalloc.h
1213 - xmalloc and xrealloc should return PTR_T
1214
1215 lib/readline/rldefs.h
1216 - don't include an extern declaration for xmalloc
1217
1218 8/7
1219 ---
1220 support/shobj-conf
1221 - fixed up commented-out stanzas for HP's unbundled C compiler on
1222 HP/UX
1223
1224 support/bashbug.sh
1225 - force the subject to be changed from the default
1226
1227 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
1228 - document that transpose-words swaps the last two words on the line
1229 if point is at the end of the line
1230
1231 8/9
1232 ---
1233 stringlib.c
1234 - fix possible infinite recursion problem with null pattern in
1235 strsub()
1236
1237 hashlib.c
1238 - new function copy_hash_table to copy a hash table using a caller-
1239 supplied function to copy item data (defaults to savestring())
1240
1241 hashlib.h
1242 - new extern declaration for copy_hash_table
1243
1244 builtins/declare.def
1245 - changes so that declare [-a] var=value assigns `value' to element 0
1246 of array variable `var' like ksh93
1247 - change so that declare [-a] var[N]=value assigns `value' to element
1248 N of array variable `var' like ksh93
1249
1250 8/13
1251 ----
1252 arrayfunc.c
1253 - new file, for miscellaneous array functions
1254
1255 arrayfunc.h
1256 - new file, extern declarations for functions in arrayfunc.c
1257
1258 variables.c
1259 - move convert_var_to_array, bind_array_variable,
1260 assign_array_from_string, assign_array_var_from_word_list,
1261 assign_array_var_from_string, quote_array_assignment_chars,
1262 skipsubscript, unbind_array_element, print_array_assignment
1263 to arrayfunc.c
1264
1265 shell.h
1266 - include arrayfunc.h after variables.h
1267
1268 variables.h
1269 - remove above extern function declarations moved to arrayfunc.h
1270 - add extern declaration for var_lookup
1271
1272 Makefile.in
1273 - add arrayfunc.c, arrayfunc.h in appropriate places
1274 - add arrayfunc.h to dependencies
1275
1276 subst.c
1277 - move valid_array_reference, array_expand_index, array_variable_part,
1278 array_value_internal, array_value (now global), get_array_value,
1279 do_array_element_assignment to arrayfunc.c
1280
1281 subst.h
1282 - extern declarations for functions above moved to arrayfunc.h
1283
1284 arrayfunc.h
1285 - extern declarations for above functions from subst.c
1286
1287 subst.[ch]
1288 - string_list_dollar_star and string_list_dollar_at are now global
1289 functions
1290 - quote_escapes is now a global function
1291
1292 subst.c
1293 - maybe_expand_string -> expand_string_if_necessary
1294 - expand_string_to_string -> expand_string_to_string_internal
1295 - new functions: expand_string_to_string and
1296 expand_string_unsplit_to_string, which call
1297 expand_string_to_string_internal with expand_string and
1298 expand_string_unsplit as the FUNC arguments, respectively
1299
1300 arrayfunc.c
1301 - change array_expand_index to call expand_string_to_string instead
1302 of maybe_expand_string
1303
1304 8/14
1305 ----
1306 shell.c
1307 - in execute_env_file, call expand_string_unsplit_to_string
1308
1309 mailcheck.c
1310 - in check_mail, call expand_string_to_string
1311
1312 variables.c
1313 - in assign_in_env, call expand_string_unsplit_to_string
1314
1315 arrayfunc.c
1316 - new function, array_variable_name, splits an array reference into
1317 a name (which is returned as a new string) and subscript
1318 - change array_variable_part to just call array_variable_name and
1319 look up the string returned with find_variable
1320 - new function, find_or_make_array_variable (name, flags) which will
1321 look up an array variable and convert a string variable to an
1322 array if necessary. The FLAGS argument, if non-zero, says to
1323 check the readonly and noassign attributes and fail if either is set
1324
1325 builtins/read.def
1326 - make `read -a aname' honor any readonly status of `aname'
1327 - read -a now calls find_or_make_array_variable with FLAGS value 1
1328
1329 arrayfunc.[ch], subst.c, builtins/{declare,read}.def
1330 - do_array_element_assignment -> assign_array_element
1331
1332 8/20
1333 ----
1334 parse.y
1335 - changed `for' command grammar to allow missing word list after `IN'
1336 token, like latest POSIX drafts require
1337
1338 lib/sh/tmpfile.c
1339 - in sh_mktmpname(), check for filenum == 0 and init to non-zero number
1340 in this case. it can happen on arithmetic overflow
1341
1342 support/mkversion.sh
1343 - added `[0-9].[0-9][0-9][a-z]' as an acceptable value for a
1344 distribution to allow for intermediate versions, like 2.05a
1345
1346 support/config.guess
1347 - removed the addition of the output of `/usr/bin/objformat' when
1348 creating the canonical name on FreeBSD machines, so the canonical
1349 name is once again `freebsd4.2' instead of `freebsdelf4.2'
1350
1351 8/22
1352 ----
1353 lib/readline/{rlstdc,history,keymaps,readline,rldefs,rlprivate,rlshell,
1354 rltypedefs,xmalloc}.h
1355 lib/readline/{bind,compat,complete,display,funmap,histexpand,histsearch,
1356 input,isearch,kill,nls,parens,readline,rltty,search,shell,signals,vi_mode
1357 - changed __P to PARAMS
1358
1359 lib/tilde/tilde.[ch]
1360 - changed __P to PARAMS
1361
1362 {Makefile,configure}.in
1363 - changed the version number to 2.05a
1364 - changed the release status to `alpha1'
1365
1366 8/23
1367 ----
1368 support/shobj-conf
1369 - support for building shared libraries on Darwin/MacOS X
1370
1371 siglist.h
1372 - extern declaration for strsignal() to compensate for lack of
1373 a definition in some system include files
1374
1375 jobs.c
1376 - remove casts from strsignal() calls
1377
1378 [bash-2.05a-alpha1 frozen]
1379
1380 8/27
1381 ----
1382 [bash-2.05a-alpha1 released]
1383
1384 8/27
1385 ----
1386 execute_cmd.c
1387 - fix eval_arith_for_expr to handle the case where the expanded
1388 word list is NULL, returning 0 in this case
1389
1390 print_cmd.c
1391 - in print_function_def, make sure that func_redirects is assigned
1392 a value before being used
1393
1394 8/28
1395 ----
1396 alias.c
1397 - include <ctype.h> for definition of isalpha()
1398
1399 bashhist.h
1400 - add prototypes for extern function declarations
1401
1402 flags.c
1403 - include bashhist.h for extern function declarations
1404
1405 mksyntax.c
1406 - include <unistd.h> if HAVE_UNISTD_H is defined in config.h
1407
1408 parse.y
1409 - include test.h for extern function declarations
1410
1411 externs.h
1412 - change extern declaration for setlinebuf to sh_setlinebuf
1413
1414 stringlib.c
1415 - include <glob/glob.h> for extern function declarations
1416
1417 variables.h
1418 - add function prototypes for all of the sv_* functions
1419
1420 builtins/common.h
1421 - add extern declarations for set_shellopts() and parse_shellopts()
1422 from builtins/set.def
1423
1424 variables.c
1425 - include "hashcmd.h" for extern declaration for flush_hashed_filenames
1426 - include "pathexp.h" for extern declaration for setup_glob_ignore
1427
1428 lib/malloc/malloc.c
1429 - cast to `long' instead of `int' in memalign for 64-bit machines
1430
1431 {pcomplete,trap}.c
1432 - changed printf escape sequences used to print pointers to %p
1433
1434 lib/readline/undo.c
1435 - include "xmalloc.h" for extern function declaration
1436
1437 input.h
1438 - add function prototypes to extern declarations for getc_with_restart
1439 and ungetc_with_restart
1440
1441 variables.[ch]
1442 - changed type of `function' member of `struct name_and_function' to
1443 `sv_func_t', which is defined and prototyped in variables.h
1444 - map_over now takes an `sh_var_map_func_t *'
1445
1446 shell.h
1447 - start of a set of function pointer typedefs like those in
1448 lib/readline/rltypedefs.h
1449
1450 hashlib.[ch]
1451 - second paramter to flush_hash_table is now an `sh_free_func_t *'
1452
1453 trap.c
1454 - parameter to reset_or_restore_signal_handlers is now an
1455 `sh_resetsig_func_t *'
1456
1457 pcomplete.h, pcomplib.c
1458 - function pointer argument to print_all_compspecs is now an
1459 `sh_csprint_func_t *'
1460 - function pointer `list_getter' element of an `ITEMLIST' is now
1461 prototyped with __P((...)) instead of using `Function *'
1462
1463 jobs.[ch]
1464 - `j_cleanup' member of a JOB is now an `sh_vptrfunc_t *'
1465
1466 alias.c
1467 - map_over_aliases now takes an `sh_alias_map_func_t *'
1468 - free_alias_data now takes a `PTR_T'
1469
1470 pathexp.c
1471 - function pointer argument to ignore_globbed_names is now an
1472 `sh_ignore_func_t *'
1473
1474 bashline.c
1475 - function pointer argument to _ignore_completion_names is now an
1476 `sh_ignore_func_t *'
1477
1478 pathexp.h,{bashhist,bashline.c
1479 - `item_func' member of a `struct ignorevar' is now an
1480 `sh_iv_item_func_t *'
1481
1482 builtins/evalfile.c
1483 - `errfunc' is now an `sh_vmsg_func_t *'
1484
1485 jobs.c
1486 - map_over_job now takes an `sh_job_map_func_t *' as its first argument
1487
1488 array.[ch]
1489 - function pointer argument to array_walk is now an
1490 `sh_ae_map_func_t *'
1491
1492 general.c
1493 - tilde_expansion_preexpansion_hook has type `tilde_hook_func_t *',
1494 and so the assignment in tilde_initialize doesn't need a cast
1495
1496 list.c
1497 - map_over_words now takes an `sh_icpfunc_t *' as its second argument
1498
1499 input.h
1500 - the `getter' and `ungetter' function pointer members of a
1501 BASH_INPUT are now of types `sh_cget_func_t *' and
1502 `sh_cunget_func_t *' respectively
1503 - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
1504 an `sh_cunget_func_t *' as its second
1505
1506 parse.y
1507 - init_yy_io now takes an `sh_cget_func_t *' as its first argument and
1508 an `sh_cunget_func_t *' as its second
1509 - initialize_bash_input casts bash_input.getter and bash_input.ungetter
1510 appropriately
1511
1512 builtins/mkbuiltins.c
1513 - make the extern function definitions written to builtext.h have
1514 prototypes with __P((...))
1515 - include "stdc.h"
1516 - change Function to mk_handler_func_t
1517 - fixed comment_handler to take the right number of args
1518 - prototyped all the handler functions with __P((...))
1519
1520 builtins.h
1521 - the `function' member of a struct builtin is now of type
1522 `sh_builtin_func_t *'
1523
1524 builtins/common.[ch]
1525 - last_shell_builtin, this_shell_builtin are now of type
1526 `sh_builtin_func_t *'
1527 - find_shell_builtin, builtin_address, find_special_builtin now return
1528 `sh_builtin_func_t *'
1529
1530 builtins/exit.def, {execute_cmd,jobs,nojobs,variables}.c, parse.y
1531 - changed all declarations of last_shell_builtin and this_shell_builtin
1532
1533 execute_cmd.c
1534 - execute_builtin, execute_builtin_or_function,
1535 execute_subshell_builtin_or_function now take an
1536 `sh_builtin_func_t *' instead of a `Function *' for argument
1537 - changed appropriate variables from `Function *' to
1538 `sh_builtin_func_t *'
1539
1540 builtins/{bind,builtin,enable,read,setattr}.def
1541 - replaced uses of `Function *' in variable declarations with
1542 appropriate types (sh_builtin_func_t * or rl_command_func_t *)
1543
1544 builtins/set.def
1545 - set_func and get_func members of binary_o_options are now of types
1546 `setopt_set_func_t *' and `setopt_get_func_t *', which are
1547 prototyped
1548
1549 builtins/shopt.def
1550 - set_func member of shopt_vars is now of type `shopt_set_func_t *'
1551
1552 bashline.c
1553 - enable_hostname_completion now returns `int' (the old value of
1554 perform_hostname_completion)
1555
1556 [The only use of Function and VFunction now is for unwind-protects]
1557
1558 9/4
1559 ---
1560 lib/sh/getcwd.c
1561 - use const define from config.h rather than `CONST'
1562 - use PTR_T define from xmalloc.h rather than `PTR'
1563 - include xmalloc.h for PTR_T
1564 - remove PATH_MAX define, rely on value from maxpath.h
1565
1566 {general,mailcheck}.c, lib/sh/{pathcanon,pathphys}.c
1567 - don't include maxpath.h directly; it's already included by shell.h
1568
1569 lib/sh/mailstat.c
1570 - new `mailstat()' implementation, to stat a mailbox file for
1571 mail checking. handles maildir-style mail directories with one
1572 file per message and creates a dummy stat struct from them
1573
1574 lib/sh/Makefile.in
1575 - add mailstat.c and mailstat.o in the appropriate places
1576
1577 lib/malloc/malloc.c
1578 - augmented implementation with wrapper functions that pass in file
1579 and line number information from cpp. currently unused, but a
1580 placeholder for future debugging and use tracking
1581
1582 lib/malloc/shmalloc.h
1583 - new file, extern declarations for allocation wrapper functions for
1584 use by the shell (and others, I guess)
1585
1586 xmalloc.[ch]
1587 - wrapper functions for xmalloc, xfree, xrealloc (sh_ prefixed) that
1588 pass cpp line number information through to the malloc functions,
1589 if USING_BASH_MALLOC is defined
1590
1591 9/5
1592 ---
1593 lib/malloc/gmalloc.c
1594 - removed; no longer part of distribution
1595
1596 lib/malloc/Makefile.in
1597 - removed references to gmalloc.[co]
1598
1599 configure.in, doc/bashref.texi
1600 - removed references to `--with-glibc-malloc' configure option
1601
1602 {configure,Makefile}.in
1603 - changed the way bash malloc is configured into the Makefile, making
1604 it more like how readline is configured. If the bash malloc is
1605 not configured in, nothing in lib/malloc will be built
1606
1607 9/6
1608 ---
1609 lib/malloc/imalloc.h
1610 - new file, some internal malloc definitions
1611
1612 lib/malloc/mstats.h
1613 - new file, definitions for malloc statistics structs and functions
1614
1615 lib/malloc/trace.c
1616 - new file, malloc tracing functions (currently just print messages
1617 to stderr), code is #ifdef MALLOC_TRACE
1618
1619 lib/malloc/stats.c
1620 - new file, moved malloc stats code from malloc.c to here
1621
1622 lib/malloc/malloc.c
1623 - moved some definitions to imalloc.h
1624 - moved stats code to stats.c
1625 - malloc tracing calls added to internal_{malloc,realloc,free}, all
1626 #ifdef MALLOC_TRACE
1627
1628 lib/malloc/Makefile.in, Makefile.in
1629 - added {imalloc,mstats}.h, {trace,stats}.c
1630
1631 parse.y
1632 - changed decode_prompt_string to save and restore $?
1633 (last_command_exit_value) around calls to expand_prompt_string(),
1634 so command substitutions in PS1, etc. don't change $?
1635
1636 {array,subst}.c
1637 - a couple more arrayind_t fixes from Paul Eggert
1638
1639 configure.in
1640 - remove redundant check for wait3(2)
1641
1642 redir.h
1643 - fixed a typo (stdin_redirs -> stdin_redirects)
1644
1645 9/10
1646 ----
1647 execute_cmd.c
1648 - remove check for \n and \r from WHITESPACE macro, since those
1649 chars are not whitespace as returned by the whitespace(c) macro
1650 - getinterp now takes a `char *' as first arg, not unsigned char *
1651 - execute_shell_script now takes a `char *' as first arg, not
1652 unsigned char *
1653 - fix typo in forward declaration for `initialize_subshell'
1654
1655 general.[ch]
1656 - check_binary_file now takes a (char *) argument, not unsigned char *
1657 - pass unsigned char to isspace and isprint because of ISO C fuckup
1658 - bash_tilde_expand now takes a `const char *' as its argument
1659
1660 builtins/evalfile.c, shell.c
1661 - buffer passed to check_binary_file is char, not unsigned char
1662
1663 parse.y
1664 - fix extern declaration for yyerror()
1665 - yyerror now takes a `const char *' as first arg
1666
1667 {error,jobs}.c
1668 - fixes to printf-style functions to handle pids wider than an int
1669
1670 lib/readline/{isearch,vi_mode}.c
1671 - fix call to rl_message in rl_display_search (remove extra arg)
1672
1673 variables.c
1674 - fix missing argument to builtin_error in make_local_variable
1675
1676 builtins/getopts.def
1677 - since getopts takes no options, change while loop calling
1678 internal_getopts to a simple `if' check
1679
1680 builtins/printf.def
1681 - since printf takes no options, change while loop calling
1682 internal_getopts to a simple `if' check
1683
1684 lib/readline/bind.c
1685 - remove _SET_BELL macro, expand code inline
1686
1687 lib/readline/input.c
1688 - change _rl_input_available to use either select or FIONREAD,
1689 but not both
1690
1691 lib/readline/readline.c
1692 - fix rl_digit_loop to remove unreachable code at end of loop
1693
1694 {bashhist,bashline,expr,jobs,redir,shell}.c, builtins/fc.def, lib/sh/snprintf.c
1695 - bracket unused functions with #ifdef INCLUDE_UNUSED/#endif
1696 - remove some unused variables
1697
1698 execute_cmd.c
1699 - remove #ifdef'd code that allowed `return' to terminate a select
1700 statement
1701
1702 expr.c
1703 - remove some extraneous tests from strlong()
1704
1705 array.h
1706 - arrayind_t is now a long, since shell arithmetic is performed as
1707 longs
1708 - remove second declaration of new_array_element
1709
1710 builtins/printf.def
1711 - in mklong, xrealloc cannot return NULL, so don't check for it
1712 - remove some #if 0 code
1713 - fix core dump triggered by a format specification with more than
1714 one `*'
1715 - remove `foundmod', since its value mirrors `modchar != 0'
1716 - include "common.h" for builtin_{error,usage} declarations
1717
1718 Makefile.in,builtins/Makefile.in
1719 - updated some dependencies due to new include files
1720
1721 pcomplete.c
1722 - include "execute_cmd.h" for declaration of execute_shell_function
1723
1724 arrayfunc.c
1725 - include <stdio.h> for printf
1726 - include "builtins/common.h" for builtin_error declaration
1727
1728 builtins/evalstring.c
1729 - include "../trap.h" for run_trap_cleanup declaration
1730
1731 builtins/help.def
1732 - include "common.h" instead of locally declaring builtin_error
1733 and builtin_usage
1734
1735 error.h
1736 - add extern declaration for itrace()
1737 - add prototype to extern declaration of get_name_for_error
1738 - file_error now takes a `const char *' as first argument
1739
1740 externs.h
1741 - added prototype for sh_setlinebuf declaration, bracketed with
1742 NEED_SH_SETLINEBUF_DECL so we don't need stdio.h everywhere
1743 - add extern declaration for parse.y:return_EOF()
1744
1745 shell.c
1746 - add NEED_SH_SETLINEBUF_DECL before including shell.h
1747
1748 lib/readline/callback.c
1749 - include <stdlib.h> or "ansi_stdlib.h" for abort declaration
1750
1751 quit.h
1752 - remove declaration of throw_to_top_level
1753
1754 subst.c
1755 - remove unused extern declaration for getopts_reset
1756
1757 lib/sh/netopen.c
1758 - include <shell.h> for legal_number, etc.
1759 - add prototype for inet_aton extern declaration
1760
1761 lib/sh/clock.c
1762 - include <stdc.h> for __P declaration
1763 - add extern declaration for get_clk_tck
1764
1765 support/mkversion.sh
1766 - changed so that extern function declarations for functions in
1767 version.c (moved from externs.h) are in the generated version.h
1768
1769 shell.h
1770 - include version.h
1771
1772 version.c
1773 - various `char *' version variables are now `const char *'
1774
1775 general.h
1776 - add prototype for same_file, bracketed with _POSIXSTAT_H
1777 #ifdef, since that's what include/posixstat.h defines
1778
1779 builtins/common.[ch]
1780 - _evalfile, maybe_execute_file, source_file, and fc_execute_file
1781 now take a `const char *' as their first argument
1782
1783 eval.c
1784 - removed extern declaration of yyparse; it's in externs.h
1785
1786 parse.y
1787 - added prototypes to static forward function declarations
1788 - changed local `all_digits' variable in read_token_word () to
1789 all_digit_token to avoid clash with all_digits() function in
1790 general.c
1791
1792 {bashhist,copy_cmd,make_cmd,hashlib,mailcheck}.c
1793 - added prototypes for static function declarations
1794
1795 shell.h
1796 - add extern declarations for interactive, interactive_shell,
1797 changed c files with extern declarations
1798
1799 pcomplete.c
1800 - changed it_init_aliases to avoid shadowing global variable
1801 `aliases'
1802
1803 bashline.c,pathexp.c,general.h
1804 - sh_ignore_func_t is now a pointer to a function taking a
1805 `const char *'; users changed
1806
1807 configure.in
1808 - test for <strings.h>
1809
1810 config.h.in
1811 - add #undef HAVE_STRINGS_H
1812
1813 bashansi.h
1814 - change like recommended in autoconf manual
1815
1816 9/11
1817 ----
1818 [a date which will live in infamy. prayers for the victims.]
1819
1820 execute_cmd.c
1821 - don't use an absolute index into abuf in mkfmt, use
1822 sizeof(abuf) to compute last index
1823
1824 builtins/common.c
1825 - fix read_octal to do a better job of detecting overflow while
1826 iterating through the string
1827
1828 builtins/umask.def
1829 - change octal-print mode to print 4 digits, like other shells
1830 - cast umask to unsigned long to avoid problems on systems where
1831 it's wider than an int (POSIX doesn't guarantee that mode_t is
1832 no wider than an int, but real-world systems use int)
1833
1834 builtins/printf.def
1835 - mklong can never return NULL (it uses xrealloc), so the mainline
1836 doesn't need to check for NULL returns
1837 - new function, getldouble (long double *), to get long doubles
1838 - mklong now takes a `char *' as its second argument, the modifier(s)
1839 to use
1840 - changed use of `modchar' to handle more than a single modifier
1841 character
1842 - changed to handle `long double' and `L' formats better, rather
1843 than discarding long double information
1844 - since printf now follows the POSIX.2 rules for conversion errors,
1845 we can dispense with the status returns from the get* functions
1846 - make the get* functions as similar in structure as possible,
1847 removing type casts, etc.
1848
1849 lib/sh/timeval.c,execute_cmd.c
1850 - change some instances of `long' to `time_t', for systems where
1851 a time_t is bigger than a long
1852
1853 jobs.c
1854 - include "posixtime.h" instead of <sys/time.h>
1855
1856 config.h.in
1857 - add defines for HAVE_DECL_CONFSTR, HAVE_DECL_STRTOLD,
1858 HAVE_DECL_SBRK, HAVE_DECL_PRINTF
1859 - remove defines for SBRK_DECLARED and PRINTF_DECLARED
1860 - add _GNU_SOURCE define
1861
1862 configure.in
1863 - add AC_CHECK_DECLS for strtold, confstr, sbrk, printf
1864 - remove call to BASH_FUNC_SBRK_DECLARED
1865 - remove call to BASH_FUNC_PRINTF
1866
1867 xmalloc.c, lib/malloc/malloc.c
1868 - change check of SBRK_DECLARED to HAVE_SBRK_DECL
1869
1870 print_cmd.c
1871 - change PRINTF_DECLARED to HAVE_DECL_PRINTF
1872
1873 builtins/evalstring.c, builtins/common.h
1874 - parse_and_execute now takes a `const char *' as its second argument
1875
1876 input.h,parse.y
1877 - with_input_from_* functions now take a `const char *' as their
1878 second argument
1879 - init_yy_io now takes a `const char *' as its fourth argument
1880
1881 parse.y,externs.h
1882 - parse_string_to_word_list now takes a `const char *' as its second
1883 argument
1884
1885 tests/builtins.right
1886 - change output to account for extra digit in umask output
1887
1888 pcomplib.c
1889 - free_progcomp now takes a PTR_T argument
1890
1891 builtins/bashgetopt.h
1892 - include <stdc.h>
1893 - add prototypes to extern declarations
1894
1895 builtins/shopt.def
1896 - add prototypes to static function declarations
1897
1898 builtins/{fc,umask,wait}.def, builtins/{bashgetopt,common}.c
1899 - include <ctype.h> for isdigit macro (referenced by `digit(x)')
1900
1901 lib/readline/complete.c
1902 - added more static function declarations with prototypes
1903
1904 9/12
1905 ----
1906 lib/sh/tmpfile.c
1907 - use `^' instead of `*' in sh_mktmpname to make filenames a bit
1908 more random
1909
1910 include/stdc.h,lib/readline/rldstdc.h
1911 - add __attribute__ definition
1912
1913 builtins/common.h
1914 - add printf __attribute__ to declaration of builtin_error
1915
1916 error.h
1917 - add printf __attribute__ to declaration of programming_error,
1918 report_error, parser_error, fatal_error, sys_error, internal_error,
1919 internal_warning
1920
1921 lib/readline/readline.h
1922 - add printf __attribute__ to declaration of rl_message
1923
1924 pcomplete.c
1925 - add printf __attribute__ to declaration of debug_printf
1926
1927 print_cmd.c
1928 - add printf __attribute__ to declarations of cprintf, xprintf
1929
1930 include/chartypes.h
1931 - new file, includes <ctype.h> and defines macros that check for
1932 safe (ascii) arguments before calling the regular ctype macros
1933
1934 {alias,bashline,execute_cmd,expr,findcmd,general,locale,mksyntax,stringlib,subst,variables}.c
1935 parse.y
1936 builtins/{bashgetopt,common}.c
1937 builtins/{fc,printf,umask,wait}.def
1938 lib/glob/strmatch.c
1939 lib/sh/{oslib,pathcanon,pathphys,snprintf,strcasecmp,strindex,stringvec,strtod,strtol,strtrans}.c
1940 examples/loadables/{head,sleep}.c
1941 - include "chartypes.h" or <chartypes.h> instead of <ctype.h>
1942
1943 Makefile.in,{builtins,lib/{glob,sh}}/Makefile.in
1944 - update dependencies to include chartypes.h
1945
1946 lib/sh/inet_aton.c
1947 - use `unsigned char' instead of `char' to pass to ctype.h functions
1948
1949 lib/sh/netopen.c
1950 - check for '0' <= host[0] <= '9' in _getaddr instead of using
1951 isdigit
1952
1953 subst.c,lib/sh/shquote.c
1954 - change array subscripts into sh_syntaxtab from `char' to
1955 `unsigned char'
1956
1957 {alias,bashline,execute_cmd,expr,general,subst}.c, parse.y
1958 builtins/{fc,printf,umask,wait}.def builtins/{bashgetopt,common}.c
1959 lib/sh/{pathcanon,pathphys,snprintf,strcasecmp,strindex,strtod,strtol,strtrans}.c
1960 examples/loadables/{head,sleep}.c
1961 - change to use some of the new macros in chartypes.h
1962 - remove old local macro definitions now provided by chartypes.h
1963
1964 general.h
1965 - remove definition of isletter, ISOCTAL, digit, digit_value
1966 - change legal_variable_starter and legal_variable_char to use
1967 chartypes.h macros
1968 - change ABSPATH to use chartypes.h macros
1969
1970 lib/readline/util.c
1971 - change to use Paul Eggert's FUNCTION_FOR_MACRO define to define
1972 function replacements for macros in chardefs.h
1973
1974 lib/readline/chardefs.h
1975 - added some of the same macros as in chartypes.h
1976 - change _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
1977 _rl_to_upper, _rl_to_lower to use new IS* macros
1978 - added _rl_isident macro from vi_mode.c:isident
1979
1980 lib/readline/{bind,complete,nls}.c
1981 - change to use some of the new macros from chardefs.h
1982
1983 lib/readline/vi_mode.c
1984 - isident -> _rl_isident
1985 - remove local defines of macros in chardefs.h
1986
1987 lib/sh/strtol.c
1988 - updated to new version, modified from glibc 2.2.4 and sh-utils-2.0.
1989 This one can do strtoll and strtoull, if necessary
1990
1991 9/13
1992 ----
1993 builtins/ulimit.def
1994 - changed get_limit so it retrieves both hard and soft limits
1995 instead of one or the other
1996 - changed callers of get_limit
1997 - changed getmaxvm to take soft limit, hard limit as arguments
1998 - changed getmaxuprc to just take a single argument, the value
1999 - changed calls to printone() to pass soft limit or hard limit
2000 depending on `mode' instead of using old current_limit variable
2001 - moved check for out-of-range limits in ulimit_internal into the
2002 block that converts a string argument to a value of type rlim_t
2003 - changed RESOURCE_LIMITS struct to break the description into a
2004 description string and separate scale factor string
2005 - changed print_all_limits to print a single error message if
2006 get_limit fails, including limits[i].description now that the
2007 scale factor has been removed from the description string
2008 - removed DESCFMT define, since it's now used only in printone()
2009 - changed printone to print the option character associated with a
2010 particular limit if we're printing multiple limits
2011 - changed calls to builtin_error to print the description associated
2012 with a limit if setting or getting the limit fails
2013 - added support for new POSIX 1003.1-200x rlim_t values:
2014 RLIM_SAVED_CUR and RLIM_SAVED_MAX, which expand to the current
2015 soft and hard limits, whatever they are
2016 - changed printone to print `hard' or `soft' if the current limit is
2017 RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively
2018 - changed ulimit_internal to handle new `hard' and `soft' arguments
2019 - changed help text do describe the special limit arguments `hard',
2020 `soft', and `unlimited'
2021
2022 doc/{bash.1,bashref.texi}
2023 - documented new `hard' and `soft' limit arguments to `ulimit'
2024
2025 hashlib.[ch]
2026 - find_hash_item now takes a `const char *' is its first argument
2027 - hash_string now takes a `const char *' is its first argument
2028 - remove_hash_item now takes a `const char *' as its first argument
2029
2030 pcomplib.c
2031 - removed cast from first argument to find_hash_item in find_compspec
2032
2033 general.[ch]
2034 - absolute_program now takes a `const char *' as its argument
2035 - absolute_pathname now takes a `const char *' as its argument
2036
2037 lib/glob/glob.[ch]
2038 - glob_pattern_p now takes a `const char *' as its argument
2039
2040 bashline.c
2041 - removed cast from first argument to absolute_program in
2042 command_word_completion_function
2043 - removed cast from first argument to glob_pattern_p in
2044 attempt_shell_completion
2045
2046 findcmd.[ch]
2047 - find_absolute_program, find_user_command, find_path_file,
2048 search_for_command, user_command_matches now take a
2049 `const char *' as their first argument
2050 - file_status, executable_file, is_directory, executable_or_directory
2051 now take a `const char *' as their argument
2052 - _find_user_command_internal, find_user_command_internal,
2053 find_user_command_in_path
2054
2055 lib/sh/makepath.c, externs.h
2056 - changed sh_makepath so it takes `const char *' for its first
2057 two arguments
2058
2059 hashcmd.[ch]
2060 - find_hashed_filename now takes a `const char *' as its first arg
2061 - remove_hashed_filename now takes a `const char *' as its first arg
2062
2063 variables.[ch]
2064 - new_shell_variable, var_lookup, shell_var_from_env_string,
2065 find_name_in_env_array, bind_function, makunbound,
2066 bind_name_in_env_array, bind_tempenv_variable, bind_variable
2067 now take a `const char *' as their first arg
2068 - find_function, make_new_variable, find_tempenv_variable,
2069 find_variable_internal, find_variable, set_func_read_only,
2070 set_func_auto_export, all_variables_matching_prefix, assign_in_env,
2071 assignment, kill_local_variable, make_local_variable, unbind_variable
2072 now take a `const char *' as their arg
2073 - mk_env_string now takes `const char *' arguments
2074
2075 arrayfunc.[ch]
2076 - skipsubscript now takes a `const char *' as its argument
2077
2078 9/17
2079 ----
2080 lib/readline/complete.c
2081 - attempt to preserve case of what the user typed in
2082 compute_lcd_of_matches if we're ignoring case in completion
2083
2084 builtins/{let,pushd}.def,{execute_cmd,expr}.c
2085 - change some 0L constants to 0 and let the compiler sort it out
2086
2087 9/18
2088 ----
2089 lib/malloc/alloca.c
2090 - alloca now takes a `size_t' argument
2091
2092 include/memalloc.h
2093 - if we're providing an extern function declaration for alloca,
2094 use `void *' and prototype if __STDC__ is defined
2095 - if HAVE_ALLOCA_H is defined, but C_ALLOCA is defined, don't
2096 define HAVE_ALLOCA
2097
2098 9/19
2099 ----
2100 subst.c
2101 - do_assignment_internal, do_assignment, and do_assignment_no_expand
2102 now take a `const char *' as their first argument
2103
2104 general.h
2105 - a `sh_assign_func_t' is now a function taking a `const char *' and
2106 returning int
2107
2108 hashcmd.c
2109 - free_filename_data now takes a `PTR_T' argument to agree with the
2110 typedef for `sh_free_func_t'
2111
2112 lib/sh/snprintf.c
2113 - use TYPE_MAXIMUM define like strtol.c instead of huge constants
2114
2115 9/20
2116 ----
2117 lib/sh/snprintf.c
2118 - don't bother to compile the bulk of the body unless HAVE_SNPRINTF
2119 or HAVE_ASPRINTF is not defined
2120
2121 9/24
2122 ----
2123 flags.c
2124 - ignore `set -n' if the shell was started interactively
2125
2126 lib/readline/readline.c
2127 - initialize readline_echoing_p to 0; let the terminal-specific code
2128 in rltty.c set it appropriately
2129
2130 lib/malloc/malloc.c
2131 - changed internal_memalign() slightly to avoid compiler warnings about
2132 negating an unsigned variable (-alignment -> (~alignment + 1))
2133
2134 9/27
2135 ----
2136 lib/readline/readline.c
2137 - changed rl_newline to set _rl_history_saved_point appropriately
2138 for the {previous,next}_history code
2139
2140 lib/readline/rlprivate.h
2141 - extern declaration for _rl_history_preserve_point
2142
2143 lib/readline/bind.c
2144 - new bindable variable, `history-preserve-point', sets value of
2145 _rl_history_preserve_point
2146
2147 10/1
2148 ----
2149 lib/malloc/table.c
2150 - new file, with a map of allocated (and freed) memory for debugging
2151 multiple frees, etc. Indexed by hash on values returned by
2152 malloc(); holds size, file and line number info for last alloc or
2153 free and a couple of statistics pointers
2154
2155 lib/malloc/malloc.c
2156 - a few cleanups; added calls for registering allocations and frees
2157 if MALLOC_REGISTER is defined
2158 - replaced MALLOC_RETURN with explicit MALLOC_NOTRACE define
2159 - reordered fields in `struct...minfo' in `union mhead' to restore
2160 eight-byte alignment
2161 - added explicit checks for underflow in free and realloc since
2162 checking mh_magic2 is not sufficient to detect everything (it's
2163 no longer the last field in the struct, and thus not the bytes
2164 immediately preceding what's returned to the user)
2165 - new function, xbotch, for printing file and line number info for
2166 the failed assertion before calling botch() (programming_error())
2167
2168 configure.in
2169 - replaced call to BASH_C_LONG_LONG with call to
2170 AC_CHECK_TYPES([long long])
2171 - moved the C compiler tests before the tests for various
2172 system types, so we can know whether we have `long long'
2173 before testing for 64-bit types
2174 - if we have `long long', check for sizeof(long long) and save value
2175
2176 aclocal.m4
2177 - changed BASH_TYPE_BITS64_T to check `long long' before `long', but
2178 after `double'
2179
2180 10/2
2181 ----
2182 lib/malloc/malloc.c
2183 - made malloc and realloc both agree on the rounding for a request of
2184 size N (round up to nearest multiple of 8 after adjusting for
2185 malloc overhead); uses new ALLOCATED_BYTES macro
2186 - realloc and free now use new IN_BUCKET macro for underflow checks
2187
2188 execute_cmd.c
2189 - fixed time_command() to use `time_t' instead of `long' to hold
2190 time stamps
2191
2192 lib/sh/clock.c
2193 - clock_t_to_secs now takes a `time_t *' second argument
2194 - fixed print_clock_t to call clock_t_to_secs with right arguments
2195
2196 lib/sh/timeval.c
2197 - fixed print_timeval to make `minutes' a `long' and make its
2198 structure identical to print_clock_t
2199
2200 redir.c
2201 - changed redirection_error to check for EBADF and use the file
2202 descriptor being redirected from in the error message if it
2203 is >= 0
2204
2205 Makefile.in
2206 - changed release status to `beta1'
2207
2208 lib/glob/collsyms.h
2209 - added a few ASCII symbols to the posix_collsyms array
2210
2211 10/3
2212 ----
2213 aclocal.m4
2214 - fixed typo in BASH_TYPE_BITS64_T
2215
2216 configure.in
2217 - added check for unsigned chars with AC_C_CHAR_UNSIGNED
2218
2219 config.h.in
2220 - added PROTOTYPES and __CHAR_UNSIGNED__ #defines
2221
2222 general.h
2223 - if CHAR_MAX is not define by <limits.h>, provide a definition
2224
2225 builtins/printf.def
2226 - change tescape() to mask \0 and \x escape sequences with 0xFF
2227 - change tescape() to process at most two hex digits after a `\x'
2228
2229 lib/sh/strtrans.c
2230 - change strtrans() to mask \0 and \x escape sequences with 0xFF
2231 - change strtrans() to process at most two hex digits after a `\x'.
2232 This affects `echo -e' and $'...' processing
2233
2234 lib/readline/bind.c
2235 - changed rl_translate_keyseq() to process at most two hex digits
2236 after a `\x'
2237
2238 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
2239 - changed documentation for key binding escape sequences to specify
2240 that at most two hex digits after \x are translated
2241 - changed documentation for key binding to specify that the result
2242 of \nnn or \xhh escapes is an eight-bit value, not just ASCII
2243
2244 doc/{bash.1,bashref.texi}
2245 - changed documentation of $'...' to specify that at most two hex
2246 digits after \x are translated
2247 - changed `echo' documentation to specify that at most two hex
2248 digits after \x are translated
2249 - changed documentation for `echo' and $'...' to specify that the
2250 result of \nnn or \xhh escapes is an eight-bit value, not just ASCII
2251
2252 10/4
2253 ----
2254 lib/malloc/malloc.c
2255 - changed interface for xbotch to pass memory address and error code
2256 as two additional arguments
2257 - call mregister_describe_mem from xbotch to get the last allocation
2258 or free before the botch
2259
2260 configure.in
2261 - call AC_CHECK_DECLS([strsignal])
2262
2263 config.h.in
2264 - add HAVE_DECL_STRSIGNAL
2265
2266 siglist.h
2267 - make declaration of strsignal() dependent on !HAVE_DECL_STRSIGNAL
2268
2269 10/5
2270 ----
2271 support/texi2html
2272 - upgraded to version 1.64
2273
2274 10/9
2275 ----
2276 aclocal.m4
2277 - added check for `long long' to BASH_TYPE_PTRDIFF_T
2278
2279 configure.in
2280 - replaced call to BASH_HAVE_TIOCGWINSZ with AC_HEADER_TIOCGWINSZ
2281
2282 aclocal.m4
2283 - replaced body of BASH_STRUCT_TERMIOS_LDISC with call to
2284 AC_CHECK_MEMBER(struct termios.c_line, ...)
2285 - replaced body of BASH_STRUCT_TERMIO_LDISC with call to
2286 AC_CHECK_MEMBER(struct termios.c_line, ...)
2287
2288 [bash-2.05a-beta1 frozen]
2289
2290 10/10
2291 -----
2292 lib/sh/snprintf.c
2293 - fixed exponent() to not smash the trailing zeros in the fraction
2294 when using %g or %G with an `alternate form'
2295 - fixed exponent() to handle the optional precision with %g and %G
2296 correctly (number of significant digits before the exponent)
2297
2298 10/11
2299 -----
2300 expr.c
2301 - fixed strlong() to correct the values of `@' and `_' when
2302 translating base-64 constants (64#@ == 62 and 64#_ == 64), for
2303 compatibility with ksh
2304
2305 lib/sh/itos.c
2306 - added a slightly more flexible fmtlong() function that takes a
2307 base argument and flags (for future use)
2308 - rewrote itos and inttostr in terms of fmtlong
2309
2310 lib/sh/fmtulong.c
2311 - new file, converts unsigned long to string. hooks for `unsigned
2312 long long' in the future. unused as yet
2313
2314 10/15
2315 -----
2316 lib/readline/rltty.c
2317 - change the SET_SPECIAL macro to avoid possible (but highly
2318 unlikely) negative array subscripts
2319
2320 error.h
2321 - add __attribute__ to extern declaration of itrace (even though the
2322 function isn't defined in released versions of bash)
2323
2324 bashansi.h
2325 - include <strings.h> if HAVE_STRINGS_H is defined, to get any extra
2326 function declarations provided therein
2327
2328 copy_cmd.c
2329 - fix typo in forward declaration for copy_arith_for_command
2330
2331 lib/malloc/stats.c
2332 - make the accumulators in _print_malloc_stats be `unsigned long'
2333 instead of `int'
2334
2335 externs.h, sig.h
2336 - add `__noreturn__' gcc attribute to exit_shell and jump_to_top_level
2337 declarations
2338
2339 lib/sh/mailstat.c, support/bashversion.c
2340 - include <bashansi.h> for some string function declarations
2341
2342 lib/malloc/shmalloc.h
2343 - added extern declarations of functions that do malloc debugging
2344
2345 lib/readline/{isearch,readline,vi_mode}.c
2346 - make sure we index into _rl_keymap with a non-negative index
2347
2348 parse.y
2349 - make sure we index into sh_syntaxtab with a non-negative index
2350
2351 lib/readline/vi_mode.c
2352 - bound the vi_mark_chars array with the number of characters between
2353 'a' and 'z' rather than using a fixed amount
2354 - don't use _rl_lowercase_p when deciding whether the char read by
2355 rl_vi_set_mark is a valid mark; just use 'a' <= char <= 'z'
2356
2357 lib/readline/chardefs.h
2358 - conditionally include memory.h and strings.h as in general.h
2359 - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
2360 - add defines for ISPRINT(c), ISLOWER(c) and ISUPPER(c)
2361 - fix defines for _rl_lowercase_p, _rl_uppercase_p, _rl_digit_p,
2362 _rl_pure_alphabetic, ALPHABETIC, _rl_to_upper, _rl_to_lower,
2363 and _rl_isident to work on systems with signed chars
2364
2365 include/chartypes.h
2366 - replace ISASCII with IN_CTYPE_DOMAIN like other GNU software
2367
2368 lib/sh/{strcasecmp,strtod,strtol}.c
2369 - don't pass possibly-negative characters to tolower() or toupper()
2370
2371 lib/glob/strmatch.c
2372 - don't bother testing for isupper in FOLD; rely on TOLOWER macro
2373 from <chartypes.h> to do it
2374 - don't use local definitions of isblank, et al.; rely on macros
2375 from <chartypes.h>
2376
2377 lib/readline/{display,readline}.c, mksyntax.c
2378 - use new ISPRINT macro instead of isprint()
2379
2380 builtins/{kill.def,mkbuiltins.c},{error,execute_cmd,jobs,nojobs,subst}.c
2381 - don't assume that a pid_t fits into an int for printing and other
2382 uses
2383
2384 variables.[ch]
2385 - the unused put_gnu_argv_flags_into_env now takes a `long' pid
2386 argument
2387
2388 configure.in, config.h.in
2389 - call AC_STRUCT_ST_BLOCKS, define HAVE_STRUCT_STAT_ST_BLOCKS if found
2390 - check for strtoull(), define HAVE_STRTOULL if found
2391 - check for uintmax_t, define to `unsigned long' if not found
2392
2393 lib/sh/mailstat.c
2394 - don't use st_blocks member of struct stat unless
2395 HAVE_STRUCT_STAT_ST_BLOCKS is defined; otherwise use the st_nlink
2396 field to return the total number of messages in a maildir-style
2397 mail directory
2398
2399 general.h,{alias,expr,general,subst,variables}.c
2400 builtins/{printf,read}.def
2401 lib/readline/{bind,complete,nls}.c
2402 lib/sh/{pathcanon,pathphys,shquote,snprintf,strindex,strtod,strtol,strtrans}.c
2403 - cast args to ctype macros to unsigned char for systems with signed
2404 chars; other fixes for signed chars
2405
2406 lib/sh/{fmtullong,strtoull.c}
2407 - new files, more support for `long long'
2408
2409 Makefile.in, lib/sh/Makefile.in
2410 - make fmtullong.o and strtoull.o part of libsh
2411
2412 lib/sh/itos.c
2413 - remove local copy of fmtlong; use fmtulong instead
2414 - new functions: uitos, uinttostr work on `unsigned long'
2415
2416 lib/sh/snprintf.c
2417 - fixes to make `unsigned long long' work (%llu)
2418 - fixes to make unsigned formats not print the sign when given
2419 an unsigned long that is greater than LONG_MAX
2420
2421 externs.h
2422 - extern declarations for fmtulong, fmtulloing, strtoull
2423 - extern declarations for uitos, uinttostr
2424
2425 10/16
2426 -----
2427 configure.in
2428 - move header checks before function checks
2429 - move c compiler tests before header checks
2430 - check for <inttypes.h> with BASH_HEADER_INTTYPES
2431 - change type checks for intmax_t, uintmax_t to not attempt to
2432 include <stdint.h>
2433 - check for strtoimax, strtoumax, strtoll, strtol, strtoull, strtoul
2434 with BASH_CHECK_DECL (for declarations in header files) and
2435 AC_REPLACE_FUNCS (for availability and LIBOBJS substitution)
2436 - remove check for have_long_long around sizeof check for long long
2437 (since autoconf will give it a size of 0 if the type isn't found)
2438
2439 config.h.in
2440 - add a define for HAVE_INTTYPES_H
2441 - add a define for HAVE_UNSIGNED_LONG_LONG
2442 - add defines for HAVE_STRTOIMAX, HAVE_STRTOUMAX, HAVE_STRTOLL
2443
2444 aclocal.m4
2445 - new func, BASH_HEADER_INTTYPES, which just calls AC_CHECK_HEADERS
2446 on <inttypes.h>; separate so it can be AC_REQUIREd
2447 - AC_REQUIRE([BASH_HEADER_INTTYPES]) in BASH_CHECK_TYPE
2448 - include <inttypes.h> in BASH_CHECK_TYPE if HAVE_INTTYPES_H is
2449 defined
2450 - change AC_DEFINE to AC_DEFINE_UNQUOTED in BASH_CHECK_TYPE
2451 - new `long long' checking macros: BASH_TYPE_LONG_LONG and
2452 BASH_TYPE_UNSIGNED_LONG_LONG
2453 - new BASH_CHECK_DECL
2454
2455 lib/sh/{strto[iu]max,strtoll}.c, lib/sh/Makefile.in, Makefile.in
2456 - new files
2457
2458 externs.h
2459 - extern declarations for strtoll, strtoimax, strtoumax
2460
2461 lib/malloc/alloca.c
2462 - include <bashtypes.h> for size_t
2463
2464 builtins/printf.def
2465 - new functions: getllong, getullong, getintmax, getuintmax; return
2466 long long, unsigned long long, intmax_t, uintmax_t respectively
2467 - builtin printf now handles `ll' and `j' length modifiers directly
2468
2469 lib/sh/Makefile.in
2470 - use LIBOBJS to decide whether or not the strto* functions are
2471 needed
2472
2473 10/17
2474 -----
2475 configure.in
2476 - call AC_REPLACE_FUNCS(rename)
2477 - move getcwd, strpbrk, strcasecmp, strerror, strtod
2478 from AC_CHECK_FUNCS to AC_REPLACE_FUNCS
2479 - only call BASH_FUNC_GETCWD if $ac_func_getcwd == "yes"
2480 - call BASH_CHECK_SYS_SIGLIST
2481 - if we don't have vprintf but have _doprnt, call AC_LIBOBJ(vprint)
2482
2483 lib/sh/Makefile.in
2484 - remove rename, getcwd, inet_aton, strpbrk, strcasecmp, strerror,
2485 strtod, vprint from OBJECTS; picked up from LIBOBJS
2486
2487 aclocal.m4
2488 - change BASH_FUNC_GETCWD to call AC_LIBOBJ(getcwd) if the libc
2489 getcwd(3) calls popen(3)
2490 - change BASH_FUNC_INET_ATON to call AC_LIBOBJ(inet_aton) if it's
2491 not found in libc or as a #define even with the special includes
2492 - BASH_KERNEL_RLIMIT_CHECK -> BASH_CHECK_KERNEL_RLIMIT
2493 - BASH_DEFAULT_MAILDIR -> BASH_SYS_DEFAULT_MAILDIR
2494 - BASH_JOB_CONTROL_MISSING -> BASH_SYS_JOB_CONTROL_MISSING
2495 - BASH_REINSTALL_SIGHANDLERS -> BASH_SYS_REINSTALL_SIGHANDLERS
2496 - BASH_SIGNAL_CHECK -> BASH_SYS_SIGNAL_VINTAGE
2497 - BASH_DUP2_CLOEXEC_CHECK -> BASH_FUNC_DUP2_CLOEXEC_CHECK
2498 - BASH_PGRP_SYNC -> BASH_SYS_PGRP_SYNC
2499 - BASH_RLIMIT_TYPE -> BASH_TYPE_RLIMIT
2500 - BASH_FUNC_PRINTF -> BASH_DECL_PRINTF
2501 - BASH_FUNC_SBRK_DECLARED -> BASH_DECL_SBRK
2502 - BASH_MISC_SPEED_T -> BASH_CHECK_SPEED_T
2503 - BASH_CHECK_SOCKLIB -> BASH_CHECK_LIB_SOCKET
2504 - new macro, BASH_CHECK_SYS_SIGLIST, encapsulates all the checks for
2505 sys_siglist, _sys_siglist, and strsignal(), sets SIGLIST_O to
2506 siglist.o if appropriate
2507
2508 Makefile.in
2509 - use SIGLIST_O variable to decide whether or not we need siglist.o
2510
2511 {execute_cmd,subst}.c
2512 - change a couple of instances of ISDIGIT to DIGIT, where we really,
2513 really only want ascii digits
2514
2515 ansi_stdlib.h
2516 - don't need a declaration for atol()
2517
2518 10/18
2519 -----
2520
2521 aclocal.m4
2522 - new macro, BASH_FUNC_PRINTF_A_FORMAT, checks for printf support
2523 for %a, %A conversion specifiers, defines HAVE_PRINTF_A_FORMAT
2524 if successful
2525
2526 configure.in
2527 - call AC_CHECK_FUNCS for isascii
2528 - call BASH_FUNC_PRINTF_A_FORMAT
2529
2530 config.h.in
2531 - add a define for HAVE_ISASCII
2532 - add a define for HAVE_PRINTF_A_FORMAT
2533
2534 lib/sh/snprintf.c
2535 - for long double output, fall back to sprintf using ldfallback()
2536 function for floating point formats
2537 - support %a, %A using dfallback() or ldfallback() if
2538 HAVE_PRINTF_A_FORMAT is defined
2539 - fix bug in vasprintf that returned wrong value in its first
2540 argument if the buffer holding the result string got reallocated
2541 - fixed PUT_CHAR macro to increment the counter even if we've
2542 exceeded the buffer size, for the return value from
2543 vsnprintf/snprintf
2544 - fix vsnprintf_internal to not use counter < length as a loop
2545 condition, but always process the entire format string (for
2546 the return value from vsnprintf/snprintf)
2547
2548 builtins/printf.def
2549 - support %a, %A if HAVE_PRINTF_A_FORMAT is defined
2550
2551 include/typemax.h
2552 - new file, with the TYPE_MAXIMUM stuff that's duplicated in several
2553 files in lib/sh
2554
2555 lib/sh/{fmtulong,strtol,snprintf}.c
2556 - include <typemax.h> instead of having the definitions in each file
2557
2558 lib/sh/Makefile.in
2559 - updated dependencies for typemax.h
2560
2561 10/22
2562 -----
2563 configure.in
2564 - call AC_CHECK_FUNCS on ctype.h functions/macros that bash redefines
2565 in chartypes.h
2566
2567 config.h.in
2568 - defines for HAVE_IS{ASCII,BLANK,GRAPH,PRINT,SPACE,XDIGIT}
2569
2570 include/chartypes.h, lib/glob/strmatch.c, lib/readline/chardefs.h
2571 - don't redefine some is* ctype macros/functions if HAVE_ISXXX is
2572 defined (meaning that an appropriate function, but not a macro,
2573 exists)
2574
2575 lib/sh/strtrans.c
2576 - new function, ansic_shouldquote, returns 1 if argument string
2577 contains non-printing chars that should be quoted with $'...'
2578
2579 externs.h
2580 - new declaration for ansic_shouldquote()
2581
2582 variables.c
2583 - change print_var_value to ansi C quote the string if we're not in
2584 posix mode and the variable's value contains non-printing chars,
2585 to use the regular shell single quoting if the value contains
2586 shell meta-characters, and to just output the string otherwise
2587
2588 lib/sh/shquote.c
2589 - add `break' to `case '~':' to avoid fallthrough and extra test
2590
2591 doc/bashref.texi
2592 - note that in POSIX mode, `set' displays variable values that
2593 include nonprinting characters without quoting, unless they
2594 contain shell metacharacters
2595
2596 builtins/printf.def, lib/sh/snprintf.c
2597 - handle `F' conversion specifier as equivalent to 'f'
2598
2599 parse.y, {nojobs,variables}.c
2600 - a couple of cleanups for when building a minimal configuration
2601
2602 nojobs.c
2603 - new function: stop_making_children(), just sets
2604 already_making_children to 0 (like stop_pipeline)
2605
2606 subst.c
2607 - call stop_making_children from subst.c:command_substitute if
2608 JOB_CONTROL is not defined. This fixes the bug where the wrong
2609 process is waited for (and its status returned) when using
2610 command substitution in a null command in a shell function
2611
2612 builtins/printf.def
2613 - new variable `tw' used to keep track of the total number of
2614 characters written by a single call to `printf' -- to be
2615 used for the `%n' conversion, which will be added later. It
2616 gets reset each time we reuse the format string, which is what
2617 ksh93 seems to do
2618
2619 10/23
2620 -----
2621 variables.c
2622 - new function, bind_var_to_int (char *var, long val)
2623
2624 variables.h
2625 - extern declaration for bind_var_to_int
2626
2627 lib/sh/netopen.c
2628 - use gai_strerror() for error messages when getaddrinfo() fails
2629 - use PF_INET if DEBUG is defined, since IPv6 doesn't work for me
2630
2631 Makefile.in
2632 - pass DEBUG=${DEBUG} down to makes in some subdirectories
2633
2634 {builtins,lib/{glob,sh}}/Makefile.in
2635 - append ${DEBUG} to LOCAL_CFLAGS value, passed by top-level Makefile
2636
2637 builtins/printf.def
2638 - added support for %n format conversion char (number of chars printed
2639 so far from current format string)
2640
2641 10/24
2642 -----
2643 variables.c
2644 - if posixly_correct is set, the default value of $MAILCHECK is 600
2645 - use legal_number instead of atoi in adjust_shell_level
2646 - treat non-numeric assignments to SECONDS as 0 in assign_seconds
2647 - new function, init_funcname_var; sets FUNCNAME as a dynamic variable
2648 if it's not set in the initial environment
2649 - new function, init_groups_var; sets GROUPS as a dynamic array
2650 variable if it's not set in the initial environment
2651 - new function, init_dirstack_var; sets DIRSTACK as a dynamic array
2652 variable if it's not set in the initial environment
2653 - new function, init_seconds_var; sets SECONDS as a dynamic
2654 variable using any valid integer value in the initial environment
2655 as the initial value, as if an assignment had been performed
2656 - call init_funcname_var, init_groups_var, init_dirstack_var,
2657 init_seconds_var from initialize_dynamic_variables
2658 - non-numeric values assigned to LINENO are treated as 0
2659 - change initialize_shell_variables to not auto-export PATH or TERM
2660 - change set_home_var to not auto-export HOME
2661 - change set_shell_var to not auto-export SHELL
2662 - broke the code that sets HOSTNAME, HOSTTYPE, MACHTYPE, OSTYPE
2663 out into a separate function, set_machine_vars; none of those
2664 variables are auto-exported
2665 - bash no longer un-exports SSH_CLIENT or SSH2_CLIENT
2666
2667 shell.c
2668 - changed isnetconn() to check SSH_CLIENT and SSH2_CLIENT only if
2669 SSH_SOURCE_BASHRC is defined in config-top.h
2670
2671 config-top.h
2672 - added a commented-out definition for SSH_SOURCE_BASHRC
2673
2674 10/25
2675 -----
2676
2677 Makefile.in
2678 - changed RELSTATUS to `rc1' (release candidate 1)
2679
2680 10/29
2681 -----
2682 locale.c
2683 - fixed an `=' vs. `==' typo in set_locale_var when parsing
2684 LC_NUMERIC
2685
2686 doc/{bash.1,bashref.texi}
2687 - document what bash does with $POSIXLY_CORRECT
2688
2689 doc/builtins.1
2690 - some updates
2691
2692 builtins/psize.sh
2693 - some mktemp(1) changes
2694
2695 lib/readline/readline.c
2696 - change rl_backward to check for rl_point < 0 and reset to 0 if so
2697
2698 lib/readline/util.c
2699 - don't compile in _rl_strpbrk if HAVE_STRPBRK is defined
2700
2701 lib/readline/rlprivate.h
2702 - remove extern declaration of _rl_strpbrk
2703
2704 lib/readline/rldefs.h
2705 - #define _rl_strpbrk as strpbrk if HAVE_STRPBRK is define, otherwise
2706 add extern declaration of _rl_strpbrk from rlprivate.h
2707
2708 {mailcheck,shell,variables}.c
2709 - make sure to include posixtime.h to get any prototype for time(3)
2710 in scope
2711
2712 {array,eval,execute_cmd,mksyntax,subst}.c, parse.y
2713 builtins/common.c
2714 lib/sh/pathcanon.c
2715 - a few changes as the result of `gcc -Wall' patches from solar
2716 designer
2717
2718 builtins/read.def, parse.y
2719 - change some calls to free() to xfree()
2720
2721 builtins/set.def
2722 - make sure unset_builtin() resets unset_array to 0 each time through
2723 the loop, because it's set (and used) depending on the current
2724 argument
2725
2726 shell.h
2727 - new define, USE_VAR, to force the compiler to not put a particular
2728 variable in a register -- helpful if registers are not restored
2729 by setjmp/longjmp
2730
2731 builtins/{evalfile.c,{read,wait}.def}, {eval,execute_cmd,shell,test}.c
2732 - use USE_VAR for some variables
2733
2734 subst.c
2735 - fixed a case in expand_word_internal where a NULL pointer could
2736 have been passed to free() (though free() should ignore it)
2737 - fixed a case at the end of expand_word_internal where LIST could
2738 have been used uninitialized (it makes gcc happy, though it
2739 doesn't happen in practice)
2740
2741 test.c
2742 - give test_syntax_error(), beyond(), and integer_expected_error()
2743 the `__noreturn__' attribute for gcc
2744
2745 unwind_prot.c
2746 - in clear_unwind_protect_list(), convert `flags' to `long' (via
2747 assignment to a `long' variable) before casting to `char *', in
2748 case pointers and longs are 64 bits and ints are 32 (makes no
2749 difference on 32-bit machines)
2750
2751 10/30
2752 -----
2753 print_cmd.c
2754 - fixed cprintf to avoid gcc warning about assigning const pointer
2755 to non-const (discarding type qualifier)
2756
2757 {make_cmd,pcomplete,test}.c,parse.y
2758 - some minor changes to shut up gcc warnings
2759
2760 lib/sh/tmpfile.c
2761 - fixed sh_mktmpfp to avoid file descriptor leaks in the case that
2762 sh_mktmpfd succeeds but fdopen fails for some reason
2763 - change sh_mktmpfd to use the same scheme for computing `filenum'
2764 as sh_mktmpname
2765 - change get_sys_tmpdir to prefer P_tmpdir if P_tmpdir is defined
2766 - changed sh_mktmpname and sh_mktmpfd to avoid trying to assign to
2767 `nameroot' if `nameroot == 0' (duh)
2768 - add code to sh_mktmpfd to use mkstemp(3) if USE_MKSTEMP is defined
2769 - add code to sh_mktmpname to use mktemp(3) if USE_MKTEMP is defined
2770
2771 support/{fixlinks,mkclone}
2772 - use mktemp if it's available for the symlink test
2773 - use $TMPDIR instead of hardcoding /tmp; default to /tmp
2774 - use a better filename for the symlink test instead of `z'
2775
2776 support/bashbug.sh
2777 - more changes inspired by a patch from solar designer
2778
2779 lib/malloc/Makefile.in
2780 - new target `alloca', which builds libmalloc.a with alloca.o only
2781 (for systems without alloca that are configured --without-bash-malloc)
2782
2783 configure.in
2784 - if we don't have a working alloca and are not configured to build
2785 the bash malloc library, make a malloc library containing only
2786 alloca.o
2787
2788 aclocal.m4
2789 - slight change to RL_LIB_READLINE_VERSION to deal with minor version
2790 numbers with a letter appended (like 4.2a)
2791
2792 10/31
2793 -----
2794 doc/{bash.1,bashref.texi}
2795 - slight change to note that only interactive shells resend a SIGHUP
2796 to all jobs before exiting
2797
2798 externs.h
2799 - declare strto[ui]max only if NEED_STRTOIMAX_DECL is defined. This
2800 keeps picky compilers from choking because intmax_t is not defined
2801 (MacOS X 10.1)
2802
2803 builtins/printf.def
2804 - #define NEED_STRTOIMAX_DECL before including shell.h
2805
2806 11/1
2807 ----
2808 general.c
2809 - check in bash_tilde_expand() for an unquoted tilde-prefix; don't
2810 bother passing the string to tilde_expand unless the prefix is
2811 unquoted
2812
2813 shell.c
2814 - fix a problem with $LINENO when executing commands supplied with
2815 the -c invocation option when ONESHOT is defined
2816
2817 [bash-2.05a-rc1 frozen]
2818
2819 builtins/printf.def
2820 - fix the %n conversion to require that the variable name supplied
2821 be a valid shell identifier
2822
2823 variables.c
2824 - improve random number generator slightly by using the upper 16
2825 bits of the running random number instead of the lower 16, which
2826 are incrementally more random
2827
2828 11/2
2829 ----
2830 configure.in
2831 - if RL_INCLUDEDIR ends up being /usr/include, don't put
2832 -I$(RL_INCLUDEDIR) into CFLAGS
2833
2834 11/5
2835 ----
2836 doc/{bash.1,bashref.texi}
2837 - correct description of POSIXLY_CORRECT to note that the shell enters
2838 posix mode *before* the startup files are read if POSIXLY_CORRECT
2839 is in the initial environment
2840
2841 variables.c
2842 - fix function prologues for init_dirstack_var and init_groups_var
2843 to agree with caller (no arguments)
2844
2845 jobs.c
2846 - fix forward function declarations for pipe_read and pipe_close
2847
2848 subst.c
2849 - removed `inline' attribute from skip_double_quoted because it can
2850 potentially be called recursively
2851
2852 bashline.c
2853 - quick fix to bashline.c:attempt_shell_completion programmable
2854 completion code to just punt if the end of the command word found
2855 by find_cmd_end is <= the start found by find_cmd_start (the bug
2856 is probably in find_cmd_start -- fix later)
2857
2858 pcomplete.c
2859 - fix gen_matches_from_itemlist to return if the stringlist is null
2860 after any cleaning or initialization, before trying to use it
2861 - fix GEN_COMPS to only bother to try to append the STRINGLIST
2862 returned by gen_matches_from_itemlist to `glist' if it's non-NULL
2863
2864 lib/sh/stringlist.c
2865 - make copy_stringlist return NULL if the STRINGLIST * passed as an
2866 argument is NULL
2867 - make append_stringlist call copy_stringlist only if M2 is non-NULL;
2868 otherwise just return NULL if m1 is NULL
2869 - make word_list_to_stringlist return 0 immediately if the passed
2870 LIST argument is NULL
2871 - make realloc_stringlist call alloc_stringlist if the passed
2872 STRINGLIST argument (`sl') is 0, just like realloc calls malloc
2873
2874 subst.c
2875 - in skip_to_delim(), if we have an unclosed ${, and it's at the end
2876 of the string (string[i] == '{', string[i+1] == '{' and
2877 string[i+2] == 0, return si (i + 2) immediately without bothering
2878 to call extract_dollar_brace_string or extract_delimited_string
2879 - in skip_to_delim(), if string[i] is 0 after a call to
2880 extract_dollar_brace_string or extract_delimited_string (meaning we
2881 have an unclosed ${ or other expansion, return i immediately without
2882 doing a `continue' (which will increment i past the end of string)
2883 - in split_at_delims, don't increment te by 1 if it's pointing to a
2884 delimiter. this has the effect of skipping the first delimiter
2885 char in a possibly multi-character delimiter, and ignoring
2886 single-char delimiters like `>'
2887
2888 configure.in
2889 - use AC_CHECK_MEMBERS([struct stat.st_blocks]) instead of a call to
2890 AC_STRUCT_ST_BLOCKS to avoid configure changing LIBOBJS if the test
2891 fails
2892
2893 general.c
2894 - introduce two new variables: bash_tilde_{prefixes,suffixes}, set
2895 to the additional prefixes and suffixes bash wants to pass to the
2896 tilde expansion code (reserved for post-bash-2.05a fix)
2897
2898 aclocal.m4
2899 - add missing `test' in BASH_CHECK_SYS_SIGLIST
2900
2901 11/7
2902 ----
2903 lib/readline/vi_mode.c
2904 - fix rl_vi_goto_mark to explicitly check that the desired mark is
2905 between 'a' and 'z', since some locales have lowercase letters
2906 outside that range, which could cause a negative subscript
2907
2908 include/chartypes.h
2909 - remove superfluous `#undef ISASCII'
2910
2911 lib/sh/strto[iu]max.c
2912 - changes from Paul Eggert to work around buggy compilers and catch
2913 configuration errors at compile time
2914
2915 aclocal.m4
2916 - new macro, BASH_C_LONG_DOUBLE, identical to AC_C_LONG_DOUBLE but
2917 with a fix for Irix 5.3 (not called, since I'm not sure it's the
2918 right thing to do -- the C standard allows double and long double
2919 to be the same size)
2920
2921 lib/sh/snprintf.c
2922 - only try to write the trailing NUL in vsnprintf_internal if
2923 data->length is >= 0, since if it's not, we probably don't have
2924 a buffer
2925
2926 Makefile.in
2927 - changed RELSTATUS to `release'
2928
2929 11/8
2930 ----
2931 lib/sh/strtol.c
2932 - make sure chars passed to toupper are cast to unsigned
2933
2934 unwind_prot.c
2935 - change clear_unwind_protect_list to not require a cast from `int'
2936 to `char *'
2937
2938 lib/readline/chardefs.h
2939 - make _rl_digit_p succeed only for ascii digits, since that's what
2940 most callers assume
2941
2942 11/13
2943 -----
2944 doc/bashref.texi
2945 - added `ERR' trap and [-+]O invocation option to section listing
2946 differences from the Bourne shell
2947
2948 11/15
2949 -----
2950 [bash-2.05a released]
2951
2952 11/19
2953 -----
2954 include/stdc.h
2955 - new define, INLINE, defined as `inline' for gcc and empty otherwise
2956
2957 subst.c
2958 - make skip_double_quoted, sub_append_string have INLINE attribute
2959
2960 trap.c
2961 - use BASH_NSIG as upper limit for signal names in signal_name()
2962
2963 lib/readline/bind.c
2964 - use RL_COMMENT_BEGIN_DEFAULT in output for rl-comment-begin value
2965
2966 error.c
2967 - fix sys_error to save value of errno around calls to fprintf
2968
2969 doc/Makefile.in
2970 - added rules to create PDF files from postscript and dvi input
2971
2972 MANIFEST.doc
2973 - added {article,bash,bashref,rose94}.pdf
2974
2975 doc/bash.1
2976 - rearranged some `.PD 0' and `.TP' directives so man2html will
2977 handle them better (shouldn't affect groff output)
2978
2979 support/man2html.c
2980 - small fix to handle quoted string arguments to directives like
2981 `.BR' without mangling the output
2982
2983 11/20
2984 -----
2985 {arrayfunc,variables}.c
2986 - changed calling sequence for dynamic array variable `assign'
2987 functions to (SHELL_VAR *self, char *value, arrayind_t ind)
2988 - changed calling sequence for dynamic variable assign functions
2989 to the same as array variable assign_func. Now this can be
2990 prototyped
2991
2992 variables.h
2993 - the assign_func member of a `struct variable' is now of type
2994 `sh_var_assign_func_t', which is prototyped
2995 - the dynamic_value member of a `struct variable' is now of type
2996 `sh_var_value_func_t', which is prototyped
2997
2998 variables.c
2999 - changed to use `sh_var_assign_func_t' and `sh_var_value_func_t'
3000
3001 builtins/cd.def
3002 - when in posix mode, if the new directory name formed by PWD and
3003 the argument passed by the user cannot be canonicalized, and the
3004 -P option has not been supplied, return failure immediately
3005 - if canonicalization failed, but the fallback to the directory
3006 name specified by the user succeeds, reset the current working
3007 directory
3008
3009 lib/readline/{input.c,rlprivate.h}
3010 - renamed rl_unget_char to _rl_unget_char; made library global
3011
3012 lib/readline/{{bind,readline}.c,{keymaps,rlprivate}.h}
3013 - support for `key subsequences'; allows a key sequence and a function
3014 mapped to a subsequence of that key sequence. Primarily to allow
3015 arrow keys to be bound in readline vi insert mode, while preserving
3016 the ESC function to switch to command mode.
3017
3018 lib/readline/{input.c,rlprivate.h}
3019 - new function, _rl_input_queued(T), does a check with select or
3020 FIONREAD with a timeout of `T' (which is generally 0)
3021
3022 lib/readline/readline.c
3023 - change _rl_dispatch_subseq to test for input in the queue if we
3024 get ESC while in vi insertion mode if the keymap entry type for
3025 ESC is ISKMAP. If _rl_input_queued returns non-zero, we assume
3026 that an arrow key sequence has been pressed and go ahead with the
3027 subsequence. If it returns zero, we assume that the user pressed
3028 ESC to switch into command mode, and dispatch to that right away.
3029 This avoids forcing the user to press another key before switching
3030 into command mode
3031
3032 11/21
3033 -----
3034 lib/readline/readline.c
3035 - bind common arrow key sequences in vi insertion keymap
3036
3037 lib/readline/terminal.c
3038 - bind termcap definition's arrow keys in vi insertion keymap
3039
3040 lib/readline/bind.c
3041 - check for rl_vi_movement_mode in _rl_bind_if_unbound, so
3042 binding the arrow keys can work
3043
3044 lib/readline/readline.c
3045 - since _rl_bind_if_unbound does the check of what's currently
3046 bound to the key sequence, the check in bind_arrow_keys_internal
3047 was redundant
3048 - bind_arrow_keys_internal now takes a Keymap argument and handles
3049 saving and restoring _rl_keymap; changed bind_arrow_keys
3050 accordingly
3051
3052 builtins/fc.def
3053 - fix from Paul Eggert to substitute the nearest history number in
3054 range if an out-of-range value is supplied. POSIX requires this
3055
3056 lib/sh/pathcanon.c
3057 - fix from Corrina Vinschen for the special `cygdrive' prefix on
3058 Cygwin
3059
3060 bashhist.c
3061 - split the history adding code into more pieces:
3062 check_history_control (char *line) checks LINE against the value
3063 of HISTCONTROL, returning 1 if LINE should be saved and 0 if not
3064
3065 check_add_history (char *line) calls check_history_control and
3066 history_should_ignore (line) and saves the line with
3067 bash_add_history if the checks indicate that it should be saved
3068
3069 maybe_add_history just calls check_add_history to set the value
3070 of first_line_saved
3071
3072 bashhist.h
3073 - extern declaration for check_add_history()
3074
3075 shell.c
3076 - don't call load_history() from the interactive shell startup
3077 code if history_lines_this_session is > 0, indicating that we've
3078 already saved some lines in the history and that we probably
3079 don't want to overwrite them
3080
3081 builtins/history.def
3082 - call check_add_history from push_history, so `history -s xx'
3083 works even when in a compound command whose first line has not
3084 been saved. (Caveat: in a compound command when the first
3085 line has been saved, the line supplied to history -s will become
3086 part of the compound command's history entry. Of course, the
3087 delete_history call could remove the compound command from the
3088 history entirely)
3089
3090 bashline.c
3091 - use sh_makepath instead of xmalloc/sprintf in
3092 command_word_completion_function
3093
3094 lib/readline/complete.c
3095 - get_y_or_n now takes an int FOR_PAGER argument; caller changed
3096 If FOR_PAGER is non-zero, get_y_or_n returns appropriate values
3097 for a more-like pager: `newline' or `return' return 2; `q' or
3098 `Q' return 0
3099 - there is now a mini internal more-like pager for displaying a
3100 list of completions that exceeds the screen height (new function
3101 _rl_internal_pager, called from rl_display_match_list)
3102
3103 11/24
3104 -----
3105 command.h
3106 - new flag, W_TILDEEXP, says to do tilde expansion on an
3107 assignment word
3108
3109 execute_cmd.c
3110 - fix_assignment_words now sets W_TILDEEXP for assignment word
3111 arguments to `assignment builtins'
3112
3113 general.c
3114 - bash_tilde_expand now takes a second argument indicating whether
3115 or not it's being invoked in an `assignment context'
3116
3117 general.h
3118 - change extern declaration for bash_tilde_expand
3119
3120 {bashline,execute_cmd,findcmd,general,variables}.c
3121 builtins/evalfile.c
3122 lib/sh/makepath.c
3123 - fix callers of bash_tilde_expand appropriately
3124
3125 subst.c
3126 - fix callers of bash_tilde_expansion appropriately
3127 - add (currently commented-out) code that would tilde expand assignment
3128 statement arguments to assignment builtins (W_TILDEEXP flag set)
3129 even when the shell is in posix mode
3130
3131 bashline.c
3132 - fix attempt_shell_completion to turn off
3133 rl_filename_completion_desired when doing command name completion,
3134 so no slash gets appended to the name if there happens to be a
3135 directory with the same name in the current directory
3136
3137 11/26
3138 -----
3139 lib/readline/rltech.texinfo
3140 - a couple of additions to the rl_stuff_char description
3141
3142 parse.y
3143 - turn off echo_input_at_read in parse_string_to_word_list, so `set -v'
3144 doesn't give extra lines of output when doing compound array
3145 assignment
3146
3147 subst.c
3148 - fix split_at_delims to handle skipping over a `\n' if it's a
3149 delimiter (use spctabnl(c) instead of whitespace(c))
3150
3151 11/27
3152 -----
3153 support/config.{guess,sub}
3154 - updated (with bash changes) to latest version from gnu.org
3155
3156 sig.h
3157 - add prototype for set_signal_handler declaration
3158
3159 builtins/setattr.def
3160 - add prototype to extern declaration of declare_builtin
3161
3162 builtins/times.def
3163 - add no_options call, since times takes no options
3164
3165 lib/sh/spell.c
3166 - add prototypes to forward declarations for midist and spdist
3167
3168 lib/sh/strtrans.c
3169 - add explicit int return type to ansic_shouldquote declaration
3170
3171 lib/readline/rldefs.h, lib/readline/{macro,readline,util,undo}.c
3172 - move define for SWAP to rldefs.h, removed from various C files
3173
3174 lib/readline/vi_mode.c
3175 - removed define for exchange(), changed to use SWAP instead
3176
3177 lib/readline/bind.c
3178 - added some static forward function declarations
3179 - find_boolean_var, find_string_var now take a `const char *' argument
3180
3181 lib/readline/signals.c
3182 - added static forward declaration for rl_maybe_set_sighandler
3183
3184 lib/readline/readline.c
3185 - add some common key bindings for the HOME and END keys in
3186 bind_arrow_keys_internal
3187
3188 lib/readline/terminal.c
3189 - fetch the `@7' termcap string; it's sent by the END key
3190 - attempt to bind the terminal's END key to rl_end_of_line in
3191 bind_termcap_arrow_keys; I don't know why I was using `kH'
3192 instead of `@7'
3193
3194 doc/builtins.1
3195 - remove `case', `for', `if', `until', `while' from NAME section;
3196 those are not shell builtins
3197
3198 11/28
3199 -----
3200 stringlib.c
3201 - new function, find_token_in_alist, takes a token value and an
3202 ALIST argument, and returns the string correspoinding to the
3203 token if found in the alist
3204
3205 externs.h
3206 - new extern declaration for find_token_in_alist()
3207
3208 subst.c
3209 - string_list_internal is no longer static
3210
3211 subst.h
3212 - new extern declaration for string_list_internal()
3213
3214 parse.y
3215 - new alist array of other tokens returned by read_token which are
3216 not reserved words in word_token_alist[]
3217 - reworked error reporting: new functions print_offending_line,
3218 which prints the line containing the syntax error,
3219 error_token_from_token, which takes the current token and tries to
3220 figure out its textual representation, and error_token_from_text,
3221 which does the old job of finding the bad token by analyzing the
3222 text of shell_input_line at the current index
3223 - report_syntax_error now tries to figure out the token that caused
3224 the syntax error by first looking at current_token and falling
3225 back to the old method of textual analysis if that fails
3226 - report_syntax_error doesn't say the token resulting from the textual
3227 analysis of the input line is an `unexpected token'; it just
3228 says there is a `syntax error near xxx'
3229 - changed conditional command error reporting to use the value
3230 returned by error_token_from_token if it's not null instead of
3231 just using the token value in the message, since current_token
3232 ends up being set to -1, and the text of the message from
3233 report_syntax_error might not be exactly right
3234 - change parse_string_to_word_list to set current_token to the
3235 offending token returned by read_token before calling yyerror()
3236 to make the error reporting do the right thing
3237
3238 aclocal.m4
3239 - fixed typo in BASH_CHECK_LIB_TERMCAP
3240
3241 configure.in
3242 - add check for isinf(3); define HAVE_ISINF_IN_LIBC if found
3243
3244 config.h.in
3245 - add define for HAVE_ISINF_IN_LIBC
3246
3247 lib/sh/snprintf.c
3248 - check for Inf and NaN, using isinf and isnan if they're found in
3249 libc
3250 - use the current locale for thousands separator and decimal point
3251 - recognize "'" flag; not implemented yet
3252 - fix for snprintf/vsnprintf with length of 0 and string argument of
3253 0 with non-zero length
3254
3255 builtins/read.def
3256 - TMOUT is now the default timeout for `read' (and select) if set,
3257 like ksh93 when reading from the terminal
3258 - edit_line (called by read -e) now just does readline's filename
3259 completion by setting rl_attempted_completion_function to NULL,
3260 since e.g., doing command completion for the first word on the
3261 line wasn't really useful
3262
3263 execute_cmd.c
3264 - changed select_command to return failure status if select_query
3265 returns NULL, indicating that read_builtin returned
3266 EXECUTION_FAILURE
3267
3268 doc/{bash.1,bashref.texi}
3269 - documented new TMOUT behavior
3270 - slight change to the description of the test `-ef' option
3271
3272 doc/bashref.texi
3273 - added item to posix mode section describing failure behavior of
3274 cd when invoked in logical mode and the pathname formed by
3275 combining $PWD and the directory argument does not refer to an
3276 existing directory
3277
3278 11/29
3279 -----
3280 execute_cmd.c
3281 - fix execute_function to call dispose_function_env after
3282 merge_function_env if the shell is in posix mode (fixes debian
3283 bash bug #117673)
3284
3285 lib/readline/readline.c
3286 - rl_forward -> rl_forward_char; rl_forward function for compatibility
3287 - rl_backward -> rl_backward_char; rl_forward function for
3288 compatibility
3289 - new functions, rl_forward_byte, rl_backward_byte, for future use
3290
3291 lib/readline/readline.h
3292 - extern declarations for rl_forward_char, rl_backward_char,
3293 rl_forward_byte, rl_backward_byte
3294
3295 lib/readline/{emacs_keymap,funmap,vi_keymap,vi_mode
3296 - rl_forward -> rl_forward_char
3297 - rl_backward -> rl_backward_char
3298
3299 lib/readline/funmap.c
3300 - new bindable names, `backward-byte' and `forward-byte'
3301
3302 aclocal.m4
3303 - new function, BASH_CHECK_MULTIBYTE, encapsulates checks for
3304 multibyte code
3305
3306 config.h.in
3307 - add necessary defines for multibyte include files and functions
3308
3309 configure.in
3310 - add call to BASH_CHECK_MULTIBYTE
3311
3312 config-bot.h
3313 - add code to define HANDLE_MULTIBYTE if prerequisites are met
3314
3315 lib/sh/xstrchr.c
3316 - new file, xstrchr() is strchr(3) that handles multibyte characters
3317
3318 bashhist.c
3319 - first_line_saved -> current_command_first_line_saved; variable is
3320 now global
3321
3322 bashhist.h
3323 - extern declaration for current_command_first_line_saved
3324
3325 11/30
3326 -----
3327 bashhist.c
3328 - break the code that actually calls add_history out of
3329 bash_add_history into a new function, really_add_history;
3330 bash_add_history now calls really_add_history
3331 - check_add_history takes a second `force' argument telling it
3332 whether to call bash_add_history (force == 0) or really_add_history
3333 (force != 0)
3334
3335 builtins/history.def
3336 - in push_history, call delete_last_history if the current command
3337 has more than one line, the first line was saved, and
3338 command-oriented history is active. This takes care of deleting
3339 the right history element if `history -s' is used within a
3340 compound or multiline command
3341 - in push_history, call check_add_history with second argument of 1
3342 to skip check of current_command_line_count and add the arguments
3343 to history -s as a single separate history entry
3344
3345 12/3
3346 ----
3347 lib/readline/complete.c
3348 - append a slash to completed names which are symlinks to directories
3349 if the new variable _rl_complete_mark_symlink_dirs is non-zero
3350
3351 lib/readline/rlprivate.h
3352 - extern declaration for _rl_complete_mark_symlink_dirs
3353
3354 lib/readline/bind.c
3355 - new bindable variable, `mark-symlinked-directories', mirrors the
3356 value of _rl_complete_mark_symlink_dirs
3357
3358 doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
3359 - documented new `mark-symlinked-directories' variable
3360
3361 12/4
3362 ----
3363 variables.[ch]
3364 - set_pipestatus_array now takes a second argument with the number
3365 of processes in the array
3366 - changed set_pipestatus_array to just modify the value in place if
3367 the existing array has one element and the new array has one
3368 element, and to modify existing values in place if new array has
3369 more elements than existing array
3370
3371 variables.c, jobs.c
3372 - changed set_pipestatus_array callers
3373
3374 jobs.c
3375 - moved call to setjstatus() from set_job_status_and_cleanup to
3376 wait_for, since set_job_status_and_cleanup is part of the SIGCHLD
3377 signal handler call path, and race conditions accessing the
3378 PIPESTATUS array will result for things like
3379
3380 while true; do date; done | cat > /dev/null
3381
3382 12/5
3383 ----
3384 xmalloc.h
3385 - don't redefine xmalloc, xrealloc, and xfree if DISABLE_MALLOC_WRAPPERS
3386 is #defined
3387
3388 config.h.in
3389 - #undef for DISABLE_MALLOC_WRAPPERS
3390
3391 configure.in
3392 - define DISABLE_MALLOC_WRAPPERS if the --with-purify option is
3393 supplied
3394
3395 lib/malloc/trace.c
3396 - new function, malloc_trace_bin(N), traces allocations and frees
3397 to bucket N (uses the same type of bitmap as `busy')
3398
3399 lib/malloc/table.c
3400 - fix wraparound search problem in find_entry when searching for a
3401 free entry when the table is full
3402
3403 12/6
3404 ----
3405 lib/malloc/table.c
3406 - keep an `overflow bucket' around to use when the table is full,
3407 so find_entry always returns a valid pointer when FIND_ALLOC
3408 is set
3409 - new static variable to keep a count of the number of MT_ALLOC
3410 entries in the mem_table
3411
3412 lib/sh/{oslib,clktck}.c
3413 - if HAVE_LIMITS_H is defined, include <limits.h>
3414
3415 lib/sh/oslib.c
3416 - new function, getmaxgroups() returns max number of simultaneous
3417 groups
3418 - new function, getmaxchild(), returns max number of simultaneous
3419 user processes
3420
3421 general.c
3422 - removed forest of #defines for getmaxgroups()
3423
3424 externs.h
3425 - new extern declaration for getmaxgroups()
3426 - new extern declaration for getmaxchild()
3427 - new extern declaration for isnetconn()
3428
3429 lib/sh/netconn.c,shell.c
3430 - new file, isnetconn() from shell.c moved here
3431
3432 Makefile.in, lib/sh/Makefile.in
3433 - necessary changes for netconn.c
3434
3435 builtins/ulimit.def
3436 - changed getmaxuprc() to just call getmaxchild() and massage the
3437 return value appropriately
3438
3439 {jobs,nojobs}.c
3440 - use the value returned by getmaxchild() in
3441 mark_dead_jobs_as_notified instead of static CHILD_MAX
3442
3443 jobs.c
3444 - new function, compact_jobs_list, removes some number of jobs from
3445 the jobs table and reallocates the table, copying the jobs that
3446 are left from the old table to the new. Compaction happens from
3447 the beginning of the list and removes dead jobs, and we make sure
3448 to keep the last CHILD_MAX jobs as POSIX.2 requires
3449 - call compact_jobs_list from stop_pipeline if we're in a subshell,
3450 there are no free jobs in the jobs table, and the jobs table is
3451 at or above some maximum limit
3452
3453 execute_cmd.c
3454 - change eval_arith_for_expr to set this_command_name to `((' before
3455 calling evalexp, since it might be changed by evaluating the
3456 loop body between evalexp calls
3457
3458 trap.c
3459 - change reset_signal to turn off the SIG_TRAPPED flag for the
3460 given signal, so shell builtins and functions running in command
3461 substitutions don't run the signal handlers (traps are not supposed
3462 to be inherited by command substitutions)
3463
3464 parse.y
3465 - changed parse_string_to_word_list to turn off alias expansion
3466 while parsing the array assignment
3467
3468 12/9
3469 ----
3470 alias.c
3471 - fix add_alias so that redefining an alias's value also resets the
3472 EXPANDNEXT flag
3473
3474 12/10
3475 -----
3476 parse.y
3477 - new function, token_is_assignment, called to check whether the text
3478 before `=' makes up a valid assignment token before trying to parse
3479 a compound assignment statement
3480 - new function, parse_compound_assignment, to parse a compound
3481 assignment statement instead of using parse_matched_pair; handles
3482 comments and error reporting in the parser instead of waiting until
3483 expansion time
3484 - changed parse_compound_assignment and parse_string_to_word_list to
3485 allow reserved words in compound array assignments
3486
3487 lib/readline/doc/rltech.texinfo
3488 - changed the documentation for rl_callback_read_char and
3489 rl_callback_handler_remove to say what happens to the terminal
3490 settings and what needs to be done to reset them
3491
3492 12/11
3493 -----
3494 bashline.c
3495 - add emacs_edit_and_execute_command, bound to C-xC-e, like vi-mode
3496 `v' command
3497 - add bindable command name `edit-and-execute-command', bound to
3498 run emacs_edit_and_execute_command()
3499
3500 lib/glob/strmatch.c
3501 - add support for ksh93-like [:word:] character class (isalnum + `_')
3502
3503 doc/{bash.1,bashref.texi}
3504 - add note to section describing lists to clarify that a sequence of
3505 one or more newlines may be used to delimit a command, equivalent
3506 to a semicolon
3507 - document new [:word:] pattern matching character class
3508
3509 doc/bash.1, lib/readline/doc/rluser.texinfo
3510 - document `edit-and-execute-command' and its default emacs-mode
3511 binding
3512
3513 include/chartypes.h
3514 - add defines for TOCTRL and UNCTRL if they're not already defined
3515
3516 lib/readline/chardefs.h
3517 - #undef UNCTRL if it's defined to avoid cpp redefinition warnings
3518
3519 lib/sh/strtrans.c
3520 - add \cX (Control-X) escape for $'...' to ansicstr()
3521 - change ansic_quote() to allocate at least four chars for each char
3522 in the string argument, to account for \0xx octal values
3523 - change ansic_quote() to no longer call sprintf for non-printable
3524 characters; just translate the string to octal directly
3525
3526 print_cmd.c
3527 - change xtrace_print_word_list to call ansic_quote() if
3528 ansic_shouldquote() indicates that there are nonprinting characters
3529 in a word
3530
3531 builtins/type.def
3532 - changed deprecated long option parsing to just replace the word
3533 in the list with the equivalent short option (-type -> -t) instead
3534 of removing words from the list
3535 - changed describe_command to take a single flags argument instead
3536 of two int args; changed caller
3537 - type now has two new options: -f suppresses function lookup (like
3538 command), and -P forces a PATH search for the name(s)
3539
3540 builtins/common.h
3541 - flags for describe_command are here
3542 - changed extern declaration of describe_command
3543
3544 builtins/command.def
3545 - changed call to describe_command to use flags from common.h, and
3546 the right number of arguments
3547
3548 doc/{bash.1,bashref.texi}
3549 - documented new -f and -P options to `type'
3550
3551 12/12
3552 -----
3553 lib/readline/rldefs.h
3554 - fixed prototype for _rl_strnicmp
3555
3556 execute_cmd.c
3557 - select_query now takes a new argument, an int flag saying whether
3558 or not to print the menu the first time through the loop. An
3559 empty line in response to the prompt will always cause the menu
3560 to be reprinted
3561 - changed execute_select_command to cause select_query to reprint
3562 the menu only if REPLY is set to NULL, if KSH_COMPATIBLE_SELECT
3563 is defined
3564
3565 config-top.h
3566 - define KSH_COMPATIBLE_SELECT, with a comment about its meaning
3567
3568 lib/readline/readline.c
3569 - change rl_insert_comment to toggle if given an explicit numeric
3570 argument: if the first characters on the line don't specify a
3571 comment, insert one; if they do, delete the comment text
3572
3573 doc/bash.1, lib/readline/doc/{readline.3,rluser.texinfo}
3574 - documented new behavior of insert-comment with a numeric argument
3575
3576 12/13
3577 -----
3578 lib/malloc/watch.c
3579 - new file, implements watchpoint functions
3580
3581 lib/malloc/watch.h
3582 - new file, define some `events' for watchpoints and extern function
3583 and variable declarations for watchpoint code
3584
3585 lib/malloc/imalloc.h
3586 - #define MALLOC_WATCH if MALLOC_DEBUG is defined
3587 - add __P define as in include/stdc.h if not already defined
3588
3589 lib/malloc/malloc.c
3590 - remove __P define, now in imalloc.h
3591 - include watch.h if MALLOC_WATCH is defined
3592 - added calls to _malloc_ckwatch in internal_malloc, internal_free,
3593 and internal_realloc
3594
3595 include/stdc.h
3596 - augment __P define to allow prototypes if PROTOTYPES is defined
3597
3598 lib/readline/rlstdc.h
3599 - augment PARAMS define to allow prototypes if PROTOTYPES is defined
3600
3601 lib/malloc/Makefile.in, Makefile.in
3602 necessary changes to include watch.c in libmalloc
3603
3604 lib/readline/readline.c
3605 - fix rl_delete_text to make sure that the starting position is >= 0
3606 - _rl_init_line_state (called by readline via readline_initialize)
3607 now sets rl_mark to 0
3608 - rl_get_{next,previous}_history set rl_mark to 0 if rl_point is at
3609 the end of the line and rl_end otherwise in emacs mode
3610
3611 lib/readline/kill.c
3612 - rl_yank_nth_arg_internal and rl_paste_clipboard now set the mark
3613 at point before calling rl_insert_text, like rl_yank
3614 - rl_kill_full_line now resets rl_mark to 0
3615 - rl_kill_line and rl_backward_kill_line now set rl_mark to the
3616 point after the kill in emacs mode
3617 - rl_kill_word and rl_backward_kill_word now set rl_mark to the
3618 point after the kill in emacs mode
3619 - rl_unix_word_rubout and rl_unix_line_discard now set rl_mark to
3620 the point after the kill in emacs mode
3621
3622 lib/readline/search.c
3623 - noninc_search saves and restores the mark, since it can be changed
3624 while reading the search string
3625 - noninc_dosearch sets the mark at the end of the line, making the
3626 region bound the `inserted' text since rl_point is set to 0
3627 - rl_history_search_internal sets the mark at the end of the line,
3628 for the same reason
3629
3630 lib/readline/isearch.c
3631 - rl_search_history now saves and restores the mark
3632 - if no matching lines are found at all when doing an isearch, leave
3633 point where it was instead of moving it to the end of the line
3634
3635 12/17
3636 -----
3637 lib/readline/rlmbutil.h
3638 - new file, place for multi-byte character defines and extern
3639 declarations
3640
3641 lib/readline/{bind.c,readline.c,rlprivate.h}
3642 - new bindable variable, `byte-oriented', tracks value of
3643 rl_byte_oriented variable
3644
3645 lib/readline/mbutil.c
3646 - new file, with multibyte char utility functions
3647
3648 lib/readline/{complete,display,readline,util,vi_mode}.c
3649 - new code for multibyte characters, derived from IBM patch
3650
3651 12/18
3652 -----
3653 lib/sh/tmpfile.c
3654 - include posixtime.h for time() extern declaration
3655
3656 support/bashversion.c
3657 - include <unistd.h> if it's available
3658
3659 lib/readline/{histexpand,input,isearch,search}.c
3660 - new code for multibyte characters, derived from IBM patch
3661
3662 lib/readline/readline.h
3663 - include rltypedefs.h
3664
3665 12/19
3666 -----
3667 lib/readline/complete.c
3668 - slight change to mark-directories code to avoid adding a slash if
3669 point is at the end of the line (rl_line_buffer[rl_point] == '\0')
3670 and the previous character was a slash
3671 - change printable_part to not return empty pathnames, which could
3672 happen when completing filenames and a filename with a trailing
3673 slash was passed as the argument. If the portion following the
3674 trailing slash is NULL, ignore it and look for a previous slash.
3675 If there's no previous slash, just return the filename argument
3676 - new variable, rl_completion_mark_symlink_dirs, mirrors the value
3677 of (user-settable with a variable) _rl_complete_mark_symlink_dirs
3678 but may be modified by application-specific completion functions
3679 when appropriate (set in rl_complete_internal and rl_menu_complete)
3680
3681 lib/readline/readline.h
3682 - extern declaration for rl_completion_mark_symlink_dirs
3683
3684 pcomplete.c
3685 - if one of the actions is CA_DIRECTORY, set
3686 rl_completion_mark_symlink_dirs to indicate that we want the
3687 trailing slash (might have to relax this)
3688
3689 lib/readline/doc/rltech.texinfo
3690 - documented rl_completion_mark_symlink_dirs variable
3691
3692 lib/readline/doc/rluser.texinfo, doc/bash.1
3693 - documented the fact that `complete -d' and `complete -o dirnames'
3694 force readline to append a slash to symlinks to directories
3695
3696 builtins/enable.def
3697 - changed enable_shell_builtin to disallow enabling disabled
3698 builtins in a restricted shell
3699
3700 doc/{bash.1,bashref.texi}
3701 - documented new enable behavior in restricted shells
3702
3703 doc/Makefile.in
3704 - new rule to make an `RBASH' file documenting the restrictions
3705 imposed by a restricted shell
3706
3707 expr.c
3708 - broke the code that evaluates variables and returns results out
3709 of readtok() into a new function: expr_streval()
3710 - expr_streval() now performs the standard unset variable error
3711 behavior if `set -u' has been executed and it's asked to look
3712 up an unset variable
3713 - broke the code that frees up the expression context stack into
3714 a new function: expr_unwind()
3715
3716 variables.c
3717 - fixed bind_int_variable so it handles array element assignment,
3718 so expressions like `b[7]++' and `b[0] = 42' work right
3719 - new function, get_variable_value, returns the string value of
3720 the SHELL_VAR * passed as an argument
3721 - get_string_value now calls get_variable_value with a non-null
3722 result from find_variable
3723
3724 12/20
3725 -----
3726 lib/readline/rlmbutil.h, mbutil.c
3727 - combined _rl_find_next_mbchar and _rl_find_next_nonzero_mbchar into
3728 a single function
3729 - combined _rl_find_prev_mbchar and _rl_find_prev_nonzero_mbchar into
3730 a single function
3731
3732 lib/readline/{display,readline,vi_mode}.c
3733 - changed callers of _rl_find_next_mbchar and
3734 _rl_find_next_nonzero_mbchar
3735
3736 lib/readline/{complete,display,histexpand,readline,vi_mode}.c
3737 - changed callers of _rl_find_prev_mbchar and
3738 _rl_find_prev_nonzero_mbchar
3739
3740 12/20
3741 -----
3742 lib/sh/mktime.c
3743 - new file, from glibc/gawk, compiled in if system doesn't have a
3744 working mktime(3)
3745
3746 lib/sh/strftime.c
3747 - new file, from gawk, compiled in if system doesn't have a
3748 working strftime(3)
3749
3750 lib/sh/Makefile.in, Makefile.in
3751 - changes for mktime.c, strftime.c
3752
3753 configure.in
3754 - call AC_FUNC_MKTIME, AC_STRUCT_TM, AC_STRUCT_TIMEZONE
3755 - call AC_REPLACE_FUNC(strftime)
3756
3757 config.h.in
3758 - add defines for TM_IN_SYS_TIME, HAVE_TZSET, HAVE_TM_ZONE,
3759 HAVE_STRUCT_TM_TM_ZONE, HAVE_STRFTIME
3760
3761 externs.h
3762 - provide an extern declaration for strftime if HAVE_STRFTIME is
3763 not defined and NEED_STRFTIME_DECL is
3764
3765 lib/tilde/tilde.h
3766 - header files should not include <config.h>
3767
3768 parse.y
3769 - replace code in decode_prompt_string that chops up value returned
3770 by ctime(3) with calls to strftime -- as a result, the expansion
3771 of \@ has changed slightly (since it depends on the locale)
3772 - added new \D{format} prompt string escape; `format' is passed to
3773 strftime(3). Empty format is the same as `%X' (locale-specific
3774 representation of the current time)
3775 - combined cases for '\\', '\a', '\e', and '\r' in same case branch
3776 in decode_prompt_string
3777
3778 doc/{bash.1,bashref.texi}
3779 - documented new \D{format} prompt string expansion
3780
3781 builtins/printf.def
3782 - use ISO C PRIdMAX instead of INTMAX_CONV
3783 - pass length of format modifiers to mklong instead of computing it
3784 with strlen()
3785
3786 lib/sh/{fmtulong,fmtullong}.c
3787 - changes from Paul Eggert to make more general
3788
3789 arrayfunc.c
3790 - when converting a variable to an array, make sure to unset the
3791 dynamic_value and assign_func members of the struct variable,
3792 since they're not valid anymore
3793
3794 12/27
3795 -----
3796 configure.in
3797 - use AC_HELP_STRING in AC_ARG_WITH and AC_ARG_ENABLE
3798 - remove AC_ARG_ENABLE for largefile, since AC_SYS_LARGEFILE adds
3799 one
3800
3801 1/2/2002
3802 --------
3803 {alias,bashline,execute_cmd,general,shell,subst,variables,arrayfunc}.c,general.h
3804 - changed some calls to strchr to calls to xstrchr for multibyte
3805 characters
3806
3807 include/shmbutil.h
3808 - add extern declaration for xstrchr to avoid including externs.h
3809 where it's not appropriate
3810
3811 {braces,make_cmd,pathexp,subst,arrayfunc}.c, lib/sh/xstrchr.c
3812 - include shmbutil.h
3813
3814 {stringlib,subst}.c, {externs,subst}.h
3815 - moved substring() from subst.c to stringlib.c, moved declaration
3816 from subst.h to externs.h
3817
3818 lib/sh/xmbsrtowcs.c
3819 - new file, replacement function for mbsrtowcs
3820
3821 lib/sh/Makefile.in
3822 - add entries for xmbsrtowcs.c
3823
3824 Makefile.in
3825 - add dependencies on shmbutil.h to appropriate object files
3826
3827 lib/glob/strmatch.c
3828 - break character-class testing out into separate function:
3829 is_cclass, in prep for multibyte changes
3830
3831 {braces,make_cmd}.c
3832 - changes for multibyte characters
3833
3834 builtins/printf.def
3835 - changes from Paul Eggert to just use intmax_t everywhere an
3836 int/long/quad is needed and print with "%ld" if the number
3837 fits in a long and %PRIdMAX otherwise
3838 - remove getlong, getulong, getllong, getullong, since they're
3839 no longer needed
3840 - use a new type `floatmax_t' to print floating point numbers, the
3841 widest-available floating point type (like `intmax_t'); new
3842 function `getfloatmax' that calls strtold or strtod as appropriate
3843 - remove getdouble, getldouble, since they're no longer needed
3844
3845 lib/sh/fmtumax.c
3846 - new file, string-to-[u]intmax_t conversion, just includes
3847 fmtulong.c with the right defines
3848
3849 Makefile.in, lib/sh/Makefile.in
3850 - additions for fmtumax.c
3851
3852 bashtypes.h
3853 - include <inttypes.h> if it's available
3854
3855 expr.c
3856 - arithmetic is now in intmax_t instead of long
3857
3858 externs.h
3859 - extern declaration for fmtumax
3860 - change extern declarations for evalexp, itos, inttostr,
3861 uitos, uinttostr since they now return or use intmax_t instead
3862 of long
3863
3864 {execute_cmd,general,mailcheck,subst,variables}.c, parse.y
3865 {array,general,subst,test,variables}.h
3866 lib/sh/{itos,netopen}.c
3867 builtins/{bashgetopt,common}.c, builtins/common.h
3868 builtins/{break,fc,history,jobs,let,printf,pushd,read,shift,wait}.def
3869 - changes for intmax_t shell arithmetic conversion
3870
3871 doc/{bashref.texi,bash.1}
3872 - documented long->intmax_t shell arithmetic conversion
3873
3874 sig.c
3875 - in initialize_terminating_signals, if we've already trapped a
3876 terminating signal, don't reset the signal handler for it
3877
3878 1/3
3879 ---
3880 {arrayfunc,pathexp}.c, parse.y
3881 - changes for multibyte chars
3882
3883 parse.y, lib/sh/strtrans.c
3884 - moved ansiexpand from parse.y to lib/sh/strtrans.c
3885
3886 parse.y, locale.c
3887 - moved mk_msgstr and localeexpand from parse.y to locale.c
3888
3889 parse.y
3890 - new function, yy_input_name, returns name of input file from
3891 bash_input.name
3892 - broke the code that parses ((...)) constructs out of read_token
3893 into a new function, parse_dparen()
3894
3895 externs.h
3896 - new extern declaration for ansiexpand(), mk_msgstr(), and
3897 localeexpand()
3898
3899 input.h
3900 - new extern declaration for yy_input_name()
3901
3902 {error,locale}.c
3903 - use yy_input_name for error and other messages
3904
3905 execute_cmd.c
3906 - change shell_execve to make sure that the file is executable
3907 before looking at the interpreter to find out why the execve()
3908 failed (avoids misleading error message)
3909
3910 lib/glob/glob.c
3911 - move code that matches leading `.' and skips those filenames into
3912 a separate function: skipname(), so there can be unibyte and
3913 multibyte versions of that function
3914
3915 1/7
3916 ---
3917 subst.c
3918 - more changes for multibyte characters
3919
3920 print_cmd.c
3921 - change semicolon() so it doesn't output a `;' immediately after a
3922 newline, since that results in a null command, which is a syntax
3923 error
3924
3925 variables.c
3926 - fix indirection_level_string to turn off set -x while evaluating
3927 PS4
3928
3929 1/8
3930 ---
3931 builtins/set.def
3932 - make -o options into one struct, instead of separate structs for
3933 option names corresponding to flags and non-flag option names.
3934 This has the side effect of sorting the option names in output
3935
3936 lib/glob/glob.c
3937 - new function, mbskipname(), multibyte char version of skipname()
3938 - removed all #ifndef SHELL code, this will never be used outside
3939 the shell
3940
3941 include/posixdir.h
3942 - move REAL_DIR_ENTRY define here from lib/glob/glob.c
3943
3944 lib/glob/glob_loop.c
3945 - new file, included in glob.c for unibyte and multibyte versions of
3946 glob_pattern_p
3947 - added some forward static function declarations with prototypes
3948 - more changes for multibyte character handling
3949
3950 lib/glob/Makefile.in
3951 - make glob.c depend on glob_loop.c
3952 - changes for xmbsrtowcs.[co]
3953
3954 lib/glob/xmbsrtowcs.c
3955 - moved here from lib/sh, since the matching functions use it, and
3956 libglob.a is linked after libsh.a
3957
3958 1/9
3959 ---
3960 lib/glob/smatch.c
3961 - new file, with strmatch (now xstrmatch) and associated functions,
3962 with changes for multibyte chars
3963
3964 lib/glob/sm_loop.c
3965 - new file, included by smatch.c, with `generic' versions of matching
3966 functions that are compiled twice: once each for single-byte and
3967 multibyte characters
3968
3969 lib/glob/strmatch.c
3970 - strip out everything except strmatch(), which either calls fnmatch
3971 (if HAVE_LIBC_FNM_EXTMATCH is defined) or xstrmatch
3972
3973 lib/glob/collsyms.c
3974 - changes for multibyte chars
3975
3976 lib/glob/Makefile.in, Makefile.in
3977 - changes for new source files
3978
3979 1/10
3980 ----
3981 lib/readline/complete.c
3982 - new function, rl_completion_mode (rl_command_func_t *func), returns
3983 the appropriate value to pass to rl_complete_internal depending on
3984 FUNC and the value of `show-all-if-ambiguous'. This allows
3985 application completion functions to present the same interface as
3986 rl_complete
3987
3988 lib/readline/readline.h
3989 - new extern declaration for rl_completion_mode()
3990
3991 lib/readline/doc/rltech.texinfo
3992 - documented rl_completion_mode
3993
3994 lib/readline/readline.[ch]
3995 - bumped the version number to 4.3, changing the relevant cpp defines
3996
3997 configure.in
3998 - require that an installed readline version be at least readline-4.3
3999
4000 bashline.c
4001 - converted bash-specific completion functions to use
4002 rl_completion_mode instead of passing TAB unconditionally
4003
4004 builtins/bashgetopt.c
4005 - the `#' option specifier now means a required numeric argument,
4006 not an optional one
4007
4008 builtins/type.def
4009 - when converting [-]-{path,type,all} to -[pta], don't bother
4010 freeing and reallocating the option string; just change opt[1]
4011 and null opt[2]
4012
4013 lib/sh/snprintf.c
4014 - support %ls/%S and %lc/%C for wide strings and characters,
4015 respectively, if HANDLE_MULTIBYTE is defined
4016
4017 mailcheck.c
4018 - don't print a message about new mail if the file has not grown,
4019 even if the access time is less than the modification time
4020
4021 1/14
4022 ----
4023 lib/readline/readline.c
4024 - new function, rl_replace_line, to replace the readline line buffer
4025 with the text supplied as an argument
4026 - new function, rl_replace_from_history, replaces readline line
4027 buffer with text from history entry passed as argument (undocumented,
4028 not in readline.h because it requires a definition of
4029 HIST_ENTRY for the prototype)
4030
4031 lib/readline/readlne.h
4032 - new extern declaration for rl_replace_line
4033
4034 lib/readline/doc/rltech.texinfo
4035 - documented rl_replace_line
4036
4037 lib/readline/{isearch,readline,search}.c
4038 - use rl_replace_line and rl_replace_from_history where appropriate
4039
4040 lib/readline/readline.c
4041 - broke the code that sets point after moving through the history
4042 (_rl_history_preserve_point and _rl_history_saved_point) out
4043 into a separate function, _rl_history_set_point()
4044
4045 lib/readline/{complete.c,rlprivate.h}
4046 - find_completion_word -> _rl_find_completion_word
4047 - free_match_list -> _rl_free_match_list
4048
4049 lib/readline/complete.c
4050 - postprocess_matches and _rl_free_match_list now return immediately
4051 if passed a null match list
4052
4053 variables.c
4054 - new function, find_local_variable, finds a local variable by name
4055 at the current variable context
4056 - in find_variable_internal, call find_local_variable before searching
4057 any of the temporary environments if variable_context > 0 (meaning
4058 we're in a shell function). This lets a local variable
4059 override a variable whose value was passed in the `function
4060 environment'
4061
4062 1/15
4063 ----
4064 variables.h, execute_cmd.c
4065 - declare variables describing the temporary environments in
4066 variables.h instead of in C files
4067
4068 findcmd.c, builtins/setattr.def
4069 - instead of calling find_tempenv_variable, use find_variable_internal
4070 and check whether the returned SHELL_VAR * has the tempvar
4071 attribute
4072
4073 variables.c
4074 - tentative change to lookup order in find_variable_internal so that
4075 function local variables are found before variables in
4076 function_env when executing a shell function
4077 - change make_local_variable to handle making a local variable when
4078 a variable with the same name already appears in one of the
4079 temporary environments
4080 - broke the body of make_var_array out into a new function:
4081 static char **make_env_array_from_var_list (SHELL_VAR **vars)
4082 - new function, make_var_array_internal, takes a hash table to look
4083 in and a pointer to a mapping function and returns a char **
4084 environment-style list
4085 - make_var_array now just calls make_var_array_internal
4086 - new mapping function, local_and_exported, returns all local variables
4087 in the current variable context with the export attribute set
4088 - new function, make_local_export_array, returns an environment-style
4089 char ** array of exported local variables in current context
4090 - change environment creation order in maybe_make_export_env to
4091 add variables to the environment in opposite order that
4092 find_variable_internal uses. This means that local variables in
4093 shell functions override variables with the same name in the
4094 function_env
4095 - change make_local_variable to set the initial value of the
4096 variable it creates to NULL to make the `is set' and `is null'
4097 tests that the expansion code does work right
4098 - change make_local_variable to inherit the value of a variable with
4099 the same name from the temporary enviroment
4100
4101 1/16
4102 ----
4103 Makefile.in
4104 - link bashversion with buildversion.o instead of version.o, for
4105 cross-compiling. version.o is for the target system;
4106 buildversion.o is for the build system
4107
4108 error.c
4109 - add line numbers to internal_error() messages if the shell is
4110 not interactive and running a shell script or a -c command
4111 - report_error now prints non-zero line numbers for non-interactive
4112 shells
4113
4114 test.c
4115 - test_syntax_error now calls builtin_error() instead of printing
4116 its own messages
4117
4118 builtins/common.c
4119 - builtin_error now prints line numbers if a non-interactive shell
4120 is running a shell script or a -c command
4121
4122 print_cmd.c
4123 - in cprintf, remove free_argp, since it's not used
4124
4125 builtins/history.def
4126 - make `history -n' increment the number of history lines in this
4127 session by the number of lines read from the history file
4128
4129 arrayfunc.c
4130 - fix array_value_internal to expand the subscript even if the
4131 variable is unset, so side effects produced by the arithmetic
4132 evaluation will take place
4133
4134 lib/readline/doc/{rluser,rltech}.texinfo
4135 - some fixes for printing in @smallbook format from Brian
4136 Youmans
4137
4138 1/17
4139 ----
4140 jobs.h
4141 - new PRUNNING, PSTOPPED, PDEADPROC defines for PROCESSes, analogous
4142 to RUNNING, STOPPED, and DEADJOB defines for jobs
4143
4144 jobs.c
4145 - use PS_RUNNING, PS_DONE, PS_STOPPED values for `running' field
4146 of a PROCESS
4147 - find_pipeline and find_job now take an additional flags argument
4148 that, if non-zero, means to find only running processes; changed
4149 all callers
4150 - changed calls to find_pipeline and find_job made from waitchld
4151 to find only running processes
4152 - find_pipeline takes a third argument: an int *. If it looks in
4153 the jobs list to find the pid, and the arg is non-null, it passes
4154 the job index back to the caller. Used to avoid calls to
4155 find_pipeline immediately followed by find_job with the same PID
4156
4157 nojobs.c
4158 - a couple of changes to make sure that set_pid_status is never
4159 called with a pid argument of 0 or -1
4160
4161 trap.c
4162 - change trap_handler to longjmp to wait_intr_buf (set by wait_builtin)
4163 if a signal is received for which a trap has been set during
4164 execution of the wait builtin (need to include builtins.h and
4165 builtins/builtext.h and declare some extern variables for the
4166 right things to check)
4167 - new variable to keep track of which signal caused the longjmp to
4168 wait_intr_buf, set by trap_handler (wait_signal_received)
4169
4170 builtins/wait.def
4171 - set the return value of wait when a longjmp(wait_intr_buf, 1) is
4172 done to 128 + wait_signal_received
4173
4174 {jobs,nojobs}.c
4175 - set wait_signal_received to SIGINT in wait_sigint_handler before
4176 the longjmp(wait_intr_buf, 1)
4177
4178 1/18
4179 ----
4180 bashline.c
4181 - turn off rl_filename_completion_desired when completing a command
4182 name with a single match only if the first char of that match is
4183 not a `/'
4184 - if there are multiple identical matches for a command name in
4185 attempt_shell_completion, turn off rl_filename_completion_desired
4186 if the first char is not a `/' to avoid readline appending a
4187 slash if there's a directory with the same name in the current
4188 directory
4189
4190 1/22
4191 ----
4192 lib/readline/complete.c
4193 - new variable, _rl_page_completions, to control whether we want to
4194 run the internal pager when listing completions (defaults to 1)
4195
4196 lib/readline/rlprivate.h
4197 - extern declaration for _rl_page_completions
4198
4199 lib/readline/bind.c
4200 - new bindable variable, `page-completions', controls value of
4201 _rl_page_completions
4202
4203 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
4204 - documented `page-completions' variable
4205
4206 Makefile.in
4207 - use $(INSTALL_SCRIPT) instead of $(INSTALL_PROGRAM) to install
4208 `bashbug'
4209
4210 aclocal.m4
4211 - fix small quoting problem in RL_LIB_READLINE_VERSION macro
4212
4213 lib/readline/terminal.c
4214 - fetch and save terminal's `vs' and `ve' cursor control attributes
4215 - fetch and save terminal's `kI' attribute (string sent by Insert)
4216 - new function, _rl_set_cursor, sets cursor to normal (insert mode)
4217 or very visible (overwrite mode)
4218
4219 lib/readline/readline.c
4220 - new global variable, rl_insert_mode
4221 - new function to toggle overwrite mode, rl_overwrite_mode
4222 - each new line starts in insert mode
4223 - switching to vi mode or emacs mode resets to insert mode
4224 - reset cursor to normal before returning line
4225 - _rl_replace_text now returns the number of characters inserted,
4226 the return value from rl_insert_text
4227 - new function, _rl_insert_or_replace_text (const char *string, int insert),
4228 either inserts STRING or replaces the number of chars in STRING
4229 with STRING starting at rl_point, depending on value of INSERT
4230 - renamed rl_insert to _rl_insert_char, rl_insert just calls
4231 _rl_insert_char with the same arguments when in insert mode
4232 - new function, _rl_overwrite_char, handles self-insert in overwrite
4233 mode. Does multibyte chars by reading an entire multibyte character
4234 before entering overwrite loop
4235 - new function, _rl_overwrite_rubout, handles RUBOUT when in
4236 overwrite mode, called from rl_rubout
4237 - new function, _rl_rubout_char, old body of rl_rubout; rl_rubout
4238 calls this when not in overwrite mode
4239
4240 lib/readline/readline.h
4241 - extern declarations for rl_insert_mode and rl_overwrite_mode()
4242
4243 lib/readline/rldefs.h
4244 - define constants for values of rl_insert_mode
4245
4246 lib/readline/rlprivate.h
4247 - extern declarations for _rl_set_cursor and _rl_set_insert_mode
4248 - change type of _rl_replace_text to return int
4249 - extern declarations for _rl_insert_char, _rl_rubout_char
4250
4251 lib/readline/funmap.c
4252 - new bindable name `overwrite-mode', bound to rl_overwrite_mode
4253
4254 lib/readline/rlconf.h
4255 - define CURSOR_MODE if you want the cursor to show insert or
4256 overwrite mode (only available if both `vs' and `ve' capabilities
4257 are present)
4258
4259 lib/readline/{complete,parens,readline,search,vi_mode}.c
4260 - change calls to rl_insert to _rl_insert_char
4261
4262 lib/readline/{readline,search}.c
4263 - change calls to rl_rubout to _rl_rubout_char to avoid overwrite
4264 mode problems
4265
4266 lib/readline/vi_mode.c
4267 - fix rl_vi_overstrike to just call _rl_overwrite_char, which
4268 handles multibyte chars
4269
4270 lib/readline/doc/{rluser.texinfo,readline.3}, doc/bash.1
4271 - document new `overwrite-mode' command
4272
4273 1/23
4274 ----
4275 lib/readline/readline.c
4276 - return 0 immediately from rl_insert_text if the string to insert
4277 is NULL or ""
4278
4279 bashline.c
4280 - if a numeric argument is given to one of the bash-specific glob
4281 pattern completion functions (including TAB), append a `*' to
4282 the word before generating matches
4283 - in attempt_shell_completion, when doing glob completion, only
4284 set the match list to NULL if rl_completion_type == TAB and
4285 there is more than one completion. This permits listing completions
4286 with double tabs and displaying ambiguous completions
4287 - new function, bash_glob_complete_word, appends a `*' to the word
4288 to be completed and then globs it. It uses a new filename
4289 quoting function (bash_glob_quote_filename) to avoid quoting
4290 globbing characters in the filename if there are no matches or
4291 multiple matches
4292
4293 lib/readline/complete.c
4294 - set completion_changed_buffer to 0 in rl_complete_internal if
4295 no matches were produced by the completion generator function
4296 - new variable, rl_completion_suppress_append, suppresses appending
4297 of rl_completion_append_character. Settable by application
4298 completion functions, always 0 when application completion
4299 functions are called (set to 0 by rl_complete_internal and
4300 rl_menu_complete)
4301 - broke the code that assigns default values to readline completion
4302 variables out of rl_complete_internal and rl_menu_complete into
4303 a new function, set_completion_defaults (int what_to_do)
4304
4305 lib/readline/readline.h
4306 - extern declaration for rl_completion_suppress_append
4307
4308 lib/readline/doc/rluser.texinfo, doc/bash.1
4309 - documented behavior of glob-expand-word and glob-list-expansions
4310 when supplied a numeric argument
4311 - documented glob-complete-word
4312
4313 lib/readline/doc/rltech.texinfo
4314 - documented rl_completion_suppress_append
4315
4316 1/24
4317 ----
4318 lib/readline/text.c
4319 - new file, text and character handling functions from readline.c
4320
4321 lib/readline/misc.c
4322 - new file, miscellanous bindable functions and their supporting
4323 code from readline.c
4324
4325 Makefile.in, lib/readline/Makefile.in
4326 - changes for text.c, misc.c
4327
4328 lib/readline/bind.c
4329 - change ISKMAP case of rl_invoking_keyseqs_in_map to output
4330 ESC as "\M-" instead of "\e" -- it's closer to the documentation
4331 - change _rl_get_keyname to output ESC as \e instead of \C-[
4332 (it's easier to understand)
4333
4334 pcomplete.h
4335 - new flag, COPT_NOSPACE
4336
4337 builtins/complete.def
4338 - new `-o nospace' option for complete and compgen (though it doesn't
4339 really do anything for compgen, since that doesn't hand anything
4340 off to readline)
4341
4342 bashline.c
4343 - if a programmable completion specifies COPT_NOSPACE, set
4344 rl_completion_suppress_append = 1
4345
4346 lib/readline/doc/rluser.texinfo
4347 - documented new `-o nospace' option to complete and compgen
4348
4349 doc/{bash.1,bashref.texi}
4350 - documented $'\cX' escape sequence (forgot to before)
4351
4352 1/28
4353 ----
4354 variables.c
4355 - make_new_variable now takes the HASH_TABLE * as its second
4356 argument; changed callers
4357 - new function, bind_variable_in_table, takes the HASH_TABLE * as
4358 its third paramter; bind_variable calls bind_variable_in_table
4359 with shell_variables as third argument
4360
4361 variables.h
4362 - new struct var_context, variable context (per-scope -- global,
4363 function local, etc.)
4364
4365 variables.[ch],builtins/common.[ch]
4366 - moved functions that push and pop a variable context from
4367 builtins/common.c to variables.c; move extern function
4368 declarations to variables.h
4369 - new function, all_local_variables
4370 - variable_in_context is now static, used only by all_local_variables
4371
4372 variables.[ch],execute_cmd.c
4373 - push_context now takes the function name as an argument for
4374 future use
4375 - push_context takes an indication of whether or not the function is
4376 executing in a subshell and saves the positional parameters only
4377 if not in a subshell
4378 - new functions for managing a stack of variable contexts and
4379 scopes: new_var_context, dispose_var_context, push_var_context,
4380 pop_var_context, push_scope, pop_scope
4381
4382 builtins/declare.def
4383 - call all_local_variables instead of map_over (...) in declare_internal
4384 - don't call make_local_variable if we're looking at functions
4385 ((flags_on & att_function) != 0), since it's wasted
4386 - make sure VAR is set to NULL if check for variable_context fails
4387 and we didn't just create or fetch a local variable in
4388 declare_internal
4389 - in non-function branch of declare_internal, only call find_variable
4390 if VAR is NULL -- if it's not null, we just created or fetched a
4391 local variable and don't need to do it again
4392
4393 1/29
4394 ----
4395 variables.[ch]
4396 - the temporary environments (temporary_env, builtin_env, function_env)
4397 are now HASH_TABLEs instead of argv-style arrays of strings (this
4398 is an intermediate step on the way to the new lcc-inspired symbol
4399 table scope structure)
4400 - new internal attribute for variables: att_propagate. This means
4401 to propagate the value out of the temporary environment up the
4402 (for now implicit) chain of variable scopes when the containing
4403 temporary environment is deleted
4404
4405 variables.c
4406 - assign_in_env now adds to the HASH_TABLE temporary_env instead
4407 of making environment-style strings in an array of strings
4408 - changed the way the temporary environments are merged into the
4409 shell variable table to account for the new HASH_TABLE temp
4410 environments
4411 - changed the way the export environment is created due to the new
4412 structure of the temporary environments
4413 - new function, bind_variable_internal (name, value, table), binds
4414 NAME to have VALUE in TABLE without searching the temporary
4415 environments
4416 - removed: shell_var_from_env_string, bind_name_in_env_array
4417 - variable_in_context now checks the att_local attribute and makes
4418 sure the variable is not invisible
4419 - local_and_exported now makes sure the variable is not invisible
4420
4421 execute_cmd.c
4422 - we no longer need to copy the temporary environment to function_env
4423 or builtin_env, we can simply use variable assignments
4424
4425 {findcmd,subst,variables}.c, builtins/{declare,setattr}.def
4426 - since variables from the temporary environments are no longer turned
4427 into SHELL_VARs on the fly, don't dispose the SHELL_VAR returned
4428 by find_variable or find_variable_internal
4429 - need to savestring() the value returned by find_variable if it has
4430 the tempvar attribute before calling bind_variable on it, because
4431 bind_variable will search and bind into the temporary environments
4432 and will free the old value before binding the new. For temporary
4433 environments, these two pointers will be the same, and
4434 bind_tempenv_variable will end up using freed memory
4435
4436 builtins/{declare,setattr}.def
4437 - set the att_propagate attribute when exporting or making readonly
4438 variables from the temp environment (i.e., `var=value declare -x var'
4439 or `var=value export var' sets the propagate attribute on the entry
4440 for `var' in the temporary environment HASH_TABLE)
4441
4442 lib/readline/isearch.c
4443 - ^W when reading isearch string yanks the current word out of the
4444 current line into the search string, skipping the portion already
4445 matched
4446 - ^Y when reading isearch string yanks the rest of the current line
4447 into the search string, skipping the portion already matched
4448
4449 1/30
4450 ----
4451 {print_cmd,variables}.c
4452 - moved indirection_level_string() from variables.c to print_cmd.c
4453
4454 {externs,variables}.h
4455 - moved extern declaration of indirection_level_string to externs.h
4456
4457 {general,variables}.c
4458 - moved assignment() from variables.c to general.c
4459
4460 {general,variables}.h
4461 - moved extern declaration of assignment() to general.h
4462
4463 {externs,input}.h
4464 - moved extern declaration of decode_prompt_string to externs.h
4465
4466 print_cmd.c
4467 - include flags.h, don't include stdc.h
4468
4469 variables.c
4470 - moved some functions around to group functions better
4471 - changed new_shell_variable to explicitly initialize each member
4472 of the created struct variable instead of calling bzero()
4473 - make_new_variable now just calls new_shell_variable instead
4474 of duplicating what it does
4475 - removed some code in bind_function that duplicated what
4476 new_variable does on the newly-created SHELL_VAR
4477 - since there are no local function variables (functions are always
4478 made at the global scope), kill_all_local_variables() doesn't
4479 need to consider functions
4480
4481 1/31
4482 ----
4483 variables.c
4484 - sort the array of special variables
4485 - short-circuit the search in stupidly_hack_special_variables if
4486 the passed name can't be found in the rest of the array
4487 (that is, if name[0] < special_vars[i].name[0])
4488
4489 lib/readline/history.c
4490 - unstifle_history() was returning values exactly opposite of
4491 the documentation
4492
4493 lib/readline/doc/{hsuser.texinfo,history.3}
4494 - clarified the unstifle_history() documentation a little
4495
4496 2/4
4497 ---
4498 variables.c
4499 - in bind_variable, don't call bind_tempenv_variable after a
4500 find_tempenv_variable succeeds -- just change the value inline.
4501 There's no reason to look it up twice
4502 - change makunbound to only call stupidly_hack_special_variables
4503 if we're not unsetting a function
4504
4505 variables.[ch]
4506 - new function, unbind_function, like makunbound but doesn't mess
4507 with previous contexts or calling stupidly_hack_special_variables
4508
4509 builtins/set.def
4510 - change unset_builtin to call either unbind_func or unbind_variable
4511
4512 builtins/getopts.def
4513 - call unbind_variable(name) instead of makunbound(name, shell_variables)
4514
4515 2/5
4516 ---
4517 lib/glob/sm_loop.c
4518 - use malloc instead of xmalloc in BRACKMATCH and handle failures
4519
4520 error.c
4521 - add extern declaration of executing_line_number with prototype,
4522 since execute_cmd.h can't be included without including other
4523 files
4524
4525 lib/readline/parens.c
4526 - include <unistd.h>
4527
4528 lib/malloc/stats.c
4529 - include <unistd.h>
4530 - add extern declaration of malloc_free_blocks() with prototype
4531
4532 pathexp.c
4533 - added some forward declarations with prototypes for static functions
4534
4535 lib/readline/rlprivate.h
4536 - removed declarations of rl_untranslate_keyseq, rl_discard_argument,
4537 rl_stop_output, rl_alphabetic since they appear in readline.h
4538
4539 2/6
4540 ---
4541 {arrayfunc,execute_cmd,pcomplete,shell}.c
4542 - change calls to makunbound(name, shell_variables) to
4543 unbind_variable (name)
4544
4545 2/7
4546 ---
4547 builtins/getopt.c
4548 - don't defer incrementing of OPTIND when an invalid option is
4549 encountered until the next call to sh_getopt() -- what if OPTIND
4550 is reset before that next call? This means that OPTIND is always
4551 incremented to the next option to be handled when an option is
4552 returned, whether it's valid or not. This is what POSIX-2002
4553 says to do.
4554
4555 syntax.h
4556 - new #define, CSUBSTOP
4557
4558 mksyntax.c
4559 - add "-=?+" with value CSUBSTOP to the syntax table. These are the
4560 valid expansion operators OP in ${param[:]OPword}
4561
4562 subst.c
4563 - use table lookup for CSUBSTOP in VALID_PARAM_EXPAND_CHAR
4564 - new flags for the string extraction functions: EX_NOALLOC. This
4565 indicates that the functions are being used only to skip over
4566 strings and the result won't be used, so the substring shouldn't
4567 be allocated, copied, and freed
4568 - new flag for string_extract: EX_VARNAME. This serves the same
4569 purpose as the old `varname' parameter. parameter_brace_expand()
4570 changed appropriately
4571 - extract_delimited_string and extract_dollar_brace_string now take
4572 an additional `flags' argument, which may include EX_NOALLOC
4573 - changed callers of extract_delimited_string and
4574 extract_dollar_brace_string appropriately
4575 - string_extract now understands EX_NOALLOC; callers changed
4576 - some smaller code cleanups
4577 - converted char_is_quoted(), unclosed_pair(), and skip_to_delim()
4578 to understand multibyte characters
4579
4580 2/11
4581 ----
4582 variables.[ch]
4583 - moved to a symbol organization inspired by lcc. The basic structure
4584 is no longer a HASH_TABLE, but a VAR_CONTEXT, which includes a hash
4585 table as one of its members. VAR_CONTEXTs are linked together to do
4586 variable scoping. One nice thing about this is that the entire
4587 symbol table doesn't need to be searched at function scope exit to
4588 remove local variables. Fixes problems with only one instance of
4589 builtin_env and function_env, even though it really is a stack
4590 - shell_variables is now a VAR_CONTEXT *, with a global_variables
4591 variable that points to the bottom of the stack for fast access
4592 - function-scope local variables (assignments specified on the command
4593 line before a function call) and function-local variables (declared
4594 with the `local' builtin) have been unified in the same variable
4595 context, replacing function_env
4596 - assignment statements preceding the `.' and `eval' builtins are now
4597 a separate variable scope VAR_CONTEXT, replacing builtin_env
4598 - temporary_env (a HASH_TABLE) is now the only separate environment
4599 - changes to export environment creation, variable binding, variable
4600 lookup, local variable propagation all changed to work with the
4601 new symbol table/scope structure
4602 - a SHELL_VAR no longer has a `prev_context' member; it's not needed
4603
4604 execute_cmd.c
4605 - changes to push_context calls to include any temporary variables in
4606 temporary_env; pop_context takes care of propagating any temporary
4607 variables if necessary
4608 - calls to push_scope if `eval' or `.' is called with a list of
4609 preceding variable assignments, and pop_scope called at end of
4610 builtin's execution. pop_scope takes care of merging temporary
4611 variables into the shell environment when appropriate
4612
4613 builtins/{setattr,declare}.def
4614 - changes to account for variable assignments preceding `local',
4615 `export', `readonly', `declare', etc. to work with the new
4616 variable scoping implementation
4617
4618 shell.c
4619 - since shell_variables is now a VAR_CONTEXT, call
4620 delete_all_contexts() when the shell is reinitializing instead of
4621 delete_all_variables()
4622
4623 builtins/common.c
4624 - new function, get_job_by_name(), used by execute_simple_command()
4625 for the `auto_resume' stuff and get_job_spec()
4626
4627 builtins/common.h
4628 - new set of #defined constants for flags argument to
4629 get_job_by_name()
4630
4631 2/12
4632 ----
4633 command.h
4634 - new redirection operator: r_reading_string for `here strings'
4635
4636 parse.y
4637 - new token, LESS_LESS_LESS, for new redirection `here string'
4638 operator: [N]<<< word
4639 - recognize LESS_LESS_LESS and create the appropriate redirection
4640
4641 {dispose_cmd,copy_cmd,make_cmd,print_cmd}.c
4642 - recognize r_reading_string and do the right thing (dispose_redirects,
4643 copy_redirect, print_redirection, and make_redirection, respectively)
4644
4645 redir.c
4646 - here_document_to_fd now takes the redirection operator as its
4647 second argument
4648 - new function, write_here_string, expands a here string and writes it
4649 to the here document file descriptor
4650 - here_document_to_fd calls write_here_string for r_reading_string
4651 operator
4652 - handle r_reading_string in do_redirection_internal() and
4653 stdin_redirection()
4654
4655 2/18
4656 ----
4657 doc/{bash.1,bashref.texi}
4658 - documented here strings
4659
4660 {configure,Makefile}.in
4661 - bumped version number up to bash-2.05b and the release status
4662 to alpha1
4663
4664 expr.c
4665 - make expr_streval understand that variables with the `invisible'
4666 attribute are really unset, and accessing such a variable when
4667 `set -u' is set should be an error
4668
4669 variables.h
4670 - new accessor macros: var_isset(var) and var_isnull(var), test
4671 whether var->value is NULL
4672
4673 {eval,subst,variables}.c, builtins/{declare,setattr}.def
4674 - be more consistent about using value_cell(var) instead of
4675 directly referencing var->value
4676 - use var_isset and var_isnull where appropriate
4677
4678 builtins/help.def
4679 - augmented a couple of help strings with pointers to `info' and
4680 `man -k'
4681
4682 2/14
4683 ----
4684 variables.h
4685 - new macros to use when setting variable values directly instead of
4686 through bind_variable and its siblings
4687
4688 {arrayfunc,variables}.c
4689 - use var_setarray and other lvalue macros instead of assigning to
4690 var->value directly
4691
4692 builtins/setattr.def
4693 - change show_var_attributes to show function definitions separately
4694 from function attributes. This allows the output of `declare -f'
4695 (with other flags), `export -f', and `readonly -f' to be reused as
4696 shell input, instead of the old
4697
4698 declare -f[flags] func()
4699 {
4700 foo
4701 }
4702
4703 which has syntax errors. When in posix mode, `export -fp' and
4704 `readonly -fp' still don't print function definitions
4705
4706 2/16
4707 ----
4708 parse.y
4709 - comment out calls to discard_parser_constructs; no need to call
4710 empty functions
4711
4712 2/18
4713 ----
4714 lib/sh/memset.c
4715 - replacement function for memset(3)
4716
4717 lib/sh/Makefile.in, Makefile.in
4718 - additions for memset.c
4719
4720 configure.in,config.h.in
4721 - check for memset, define HAVE_MEMSET if found, add memset.o to
4722 LIBOBJS if not
4723
4724 lib/malloc/malloc.c
4725 - removed zmemset(), replaced with calls to memset(3)
4726
4727 {subst,execute_cmd,lib/sh/netopen}.c
4728 - replaced calls to bzero with calls to memset
4729
4730 subst.c
4731 - word_split() now takes a second argument: the value of $IFS, so
4732 it doesn't have to look up IFS every time
4733 - word_list_split() now calls getifs() and passes the result to
4734 each call to word_split() as its second arg
4735 - do a quick scan for CTLNUL in remove_quoted_nulls before allocating
4736 new string, copying old string to it, copying over original string
4737 and freeing new string
4738
4739 eval.c
4740 - don't bother calling dispose_used_env_vars if temporary_env is NULL
4741
4742 execute_cmd.c
4743 - fix fix_assignment_words to only look up the builtin corresponding
4744 to the first word if one of the words in the list is marked as
4745 W_ASSIGNMENT
4746
4747 hashlib.c
4748 - renamed hash_string to hash_bucket, which better reflects what it
4749 does
4750 - extracted the portion of hash_bucket that computes the hash out
4751 into a new hash_string()
4752 - made new body of hash_bucket into a macro HASH_BUCKET; function
4753 just calls the macro
4754 - calls to hash_bucket in this file now call HASH_BUCKET macro
4755 - in add_hash_item, just add a new item at the front of the appropriate
4756 bucket list instead of at the end
4757
4758 hashcmd.h
4759 - reduced FILENAME_HASH_BUCKETS to 53 from 107
4760
4761 2/19
4762 ----
4763 hashlib.[ch]
4764 - find_hash_item, remove_hash_item, add_hash_item all take a new
4765 third `flags' argument
4766 - add_hash_item doesn't call find_hash_item if HASH_NOSRCH passed in
4767 flags arg
4768 - find_hash_item will create a new hash table entry if HASH_CREATE is
4769 passed in flags arg
4770 - new function, hash_walk, takes a pointer to a function and a table
4771 and calls the function for each item in the table. If the function
4772 returns < 0, the walk is terminated
4773 - fixed flush_hash_table to set table->nentries to 0 after freeing
4774 all entries
4775 - BUCKET_CONTENTS now has a new `khash' member, what key hashes to;
4776 set by HASH_BUCKET macro (which calls hash_string), assigned in
4777 find_hash_item (HASH_CREATE) and add_hash_item
4778 - find_hash_item and remove_hash_item check `khash' against the
4779 hash of the string argument before calling strcmp
4780
4781 {alias,hashlib,hashcmd,pcomplib,variables}.c
4782 - changed all calls to {find,remove,add}_hash_item
4783
4784 builtins/hash.def
4785 - return immediately from print_hashed_commands if there are no
4786 entries in the hash table (this eliminates need for `any_printed'
4787 variable)
4788 - change print_hashed_commands to use hash_walk
4789
4790 alias.c
4791 - short-circuit all_aliases and map_over_aliases if
4792 HASH_ENTRIES(aliases) == 0
4793 - simplify map_over_aliases by just allocating enough room in the
4794 returned list for all entries in the aliases hash table, instead
4795 of doing the check and xrealloc
4796 - add_alias now calls add_hash_item with HASH_NOSRCH argument
4797
4798 pcomplete.h
4799 - sh_csprint_func_t is no more; use hash_wfunc instead
4800
4801 pcomplib.c
4802 - short-circuit print_all_compspecs if HASH_ENTRIES(prog_completes)
4803 is 0
4804 - print_all_compspecs now takes a `hash_wfunc *' argument
4805 - print_all_compspecs now just calls hash_walk
4806
4807 builtins/complete.def
4808 - new function, print_compitem, takes a BUCKET_CONTENTS *, extracts
4809 the right info, and calls print_one_completion
4810
4811 variables.c
4812 - short-circuit map_over_funcs if HASH_ENTRIES(shell_functions) == 0
4813 - short-circuit flatten if the passed table has no entries
4814 - bind_variable_internal takes a new fourth argument: `hflags',
4815 to pass to hash table functions
4816 - make_new_variable now passes HASH_NOSRCH flag to add_hash_item
4817 - set_if_not now calls bind_variable_internal and passes
4818 HASH_NOSRCH as flags argument
4819 - bind_function now calls add_hash_item with HASH_NOSRCH argument
4820 - fixed make_local_variable: old_var == 0 && was_tmpvar can never
4821 be true
4822 - if we didn't find an old variable in make_local_variable, call
4823 bind_variable_internal with HASH_NOSRCH argument
4824 - fix push_temp_var to reset variable context to 0 if binding into
4825 global_variables->table
4826
4827 parse.y
4828 - fix to parse_compound_assignment to avoid core dumps on empty
4829 compound array assignments
4830
4831 subst.c
4832 - getifs() is now global so read_builtin can call it
4833
4834 subst.h
4835 - extern declaration for getifs()
4836
4837 2/20
4838 ----
4839 hashlib.c
4840 - changed hash_string to use a better hash function
4841 - changed HASH_BUCKET to use masking rather than modulus to hash a
4842 string to a bucket -- HASH TABLES MUST NOW BE SIZED BY POWERS
4843 OF TWO
4844
4845 hashlib.h
4846 - DEFAULT_HASH_BUCKETS is now 64
4847
4848 hashcmd.h
4849 - FILENAME_HASH_BUCKETS is now 64
4850
4851 pcomplib.c
4852 - COMPLETE_HASH_BUCKETS is now 32
4853
4854 variables.c
4855 - TEMPENV_HASH_BUCKETS is now 4
4856
4857 alias.c
4858 - new define, ALIAS_HASH_BUCKETS, set to 16, used to size alias table
4859
4860 hashlib.c
4861 - removed initialize_hash_table; folded code into make_hash_table
4862 - fixed copy_bucket_array to copy the `khash' member of an item
4863 - renamed functions to be more systematic and easier for me:
4864 make_hash_table -> hash_create
4865 hash_table_nentries -> hash_size
4866 copy_hash_table -> hash_copy
4867 find_hash_item -> hash_search
4868 remove_hash_item -> hash_remove
4869 add_hash_item -> hash_insert
4870 flush_hash_table -> hash_flush
4871 dispose_hash_table -> hash_dispose
4872 print_table_stats -> hash_pstats
4873 get_hash_bucket -> hash_items
4874 - changed hash_search to short-circuit if table->nentries == 0 and
4875 HASH_CREATE has not been passed in the flags argument
4876
4877 {alias,variables,hashcmd,pcomplib}.c
4878 - renamed calls to all renamed functions from hashlib.c
4879
4880 builtins/kill.def
4881 - don't drop a leading `-' in a pid argument
4882 - call kill_pid with an explicit third argument of 1 if the pid
4883 argument to kill is < -1, rather than rely on the behavior of
4884 kill(2)
4885
4886 2/21
4887 ----
4888 subst.c
4889 - quoted_strchr is no longer declared `inline'
4890 - skip_double_quoted is no longer declared `inline'
4891 - string_extract_double_quoted is no longer declared `inline'
4892
4893 lib/readline/input.c
4894 - rl_gather_tyi is now an `int' valued function; returns the number
4895 of characters read (0 or 1) or -1 on error
4896 - if rl_gather_tyi() returns -1 to rl_read_key(), set rl_done to 1
4897 and return a newline; something is wrong with the input fd
4898
4899 2/25
4900 ----
4901 variables.[ch]
4902 - IFS is now a special variable
4903 - new special var function, sv_ifs(), called when IFS is set or unset
4904 - call setifs() when IFS is first set in initialize_shell_variables
4905 - call setifs() from make_local_variable and assign_in_env if
4906 appropriate
4907 - if assign_in_env() is called with a var assignment like `VAR=',
4908 make the value in the new SHELL_VAR created be "" like
4909 do_assignment_internal does, since certain parts of the shell use
4910 a NULL value as evidence that the variable is unset (though
4911 attributes may have been assigned)
4912 - if push_temp_var pushes something up to the global_variables table,
4913 make sure that the context is set to 0
4914 - new function dispose_temporary_env, called by both
4915 dispose_used_env_vars and merge_temporary_env with different `free
4916 func' function pointers; calls sv_ifs after disposing the temporary
4917 environment
4918 - push_exported_var now calls bind_variable_internal instead of
4919 bind_variable
4920 - pop_scope and pop_context now call sv_ifs
4921
4922 subst.[ch]
4923 - new global variables used to keep track of IFS state, to avoid
4924 having to call find_variable("IFS") all the time:
4925
4926 ifs_var the SHELL_VAR for IFS
4927 ifs_value ifs_var ? value_cell (ifs_var) : " \t\n"
4928 ifs_cmap bitmap of characters in ifs_value
4929 ifs_firstc first character in ifs_value
4930
4931 - new function setifs(), sets the aforementioned ifs variables each
4932 time IFS is set or unset, and at nested scope exit
4933 - instead of calling getifs() from inside subst.c, use ifs_value
4934 - getifs() now just returns ifs_value
4935 - use ifs_firstc in string_list_dollar_star()
4936 - only call member() in issep() if separators is more than one char
4937 - don't cache a bitmap every time expand_word_internal() is called;
4938 use ifs_cmap instead
4939 - new macro, isifs(c), checks whether C is in ifs_cmap
4940
4941 builtins/read.def
4942 - use issep() and isifs() macros instead of looking at $IFS directly
4943
4944 syntax.h
4945 - make sure macros that access sh_syntaxtab cast the argument to
4946 `unsigned char' before array access
4947 - new macros: issyntype(c, type) and notsyntype(c, type), check
4948 sh_syntaxtab[c] for a particular flag value `type'
4949
4950 2/26
4951 ----
4952 hashlib.h
4953 - the `data' member of a `BUCKET_CONTENTS' is now a PTR_T
4954
4955 {hashlib,alias,variables,hashcmd,pcomplib}.c
4956 - removed some casts when assigning to and using `data' member of a
4957 `BUCKET_CONTENTS'
4958
4959 subst.c
4960 - in split_at_delims, call make_word_list instead of allocating and
4961 initializing a WORD_LIST * directly
4962
4963 make_cmd.[ch]
4964 - add_string_to_list is now just a macro that calls make_word_list
4965 - make_simple_command now calls make_word_list instead of allocating
4966 a WORD_LIST * directly
4967
4968 2/27
4969 ----
4970 copy_cmd.c
4971 - copy_word now calls make_bare_word to allocate the copy
4972 - copy_word_list now calls make_word_list to allocate the copy
4973
4974 shell.h
4975 - include `ocache.h' for simple object caching
4976 - call cmd_init() to initialize the WORD_DESC and WORD_LIST object
4977 caches
4978
4979 {make,dispose}_cmd.c
4980 - allocate WORD_DESC * and WORD_LIST * vars from their respective
4981 ocaches, and return them to the cache when disposing
4982
4983 jobs.c
4984 - renamed old `waiting_for_job' variable to `queue_sigchld', which
4985 better reflects its intent: sigchld_handler does not call waitchld
4986 if `queue_sigchld' is non-zero, it simply increments the count of
4987 waiting children
4988 - cleanup_dead_jobs now just sets and clears queue_sigchld instead of
4989 blocking and unblocking SIGCHLD; it calls waitchld at the end if
4990 `sigchld' is non-zero, but that's not really necessary
4991 - in setjstatus, only call xrealloc if `statsize' is less than the
4992 number of processes passed -- no reason to do it if they're the
4993 same
4994
4995 2/28
4996 ----
4997 sig.[ch]
4998 - reinitialize_signals is no more; initialize_signals takes an
4999 argument saying whether or not we are reinitializing
5000
5001 builtins/exec.def
5002 - reinitialize_signals() -> initialize_signals(1)
5003
5004 test.c
5005 - fix filecomp() to work right when one file has a non-positive
5006 timestamp and the other file does not exist
5007
5008 doc/{bash.1,bashref.texi}
5009 - document what happens for test's -nt and -ot operators when one
5010 file operand exists and the other does not
5011
5012 jobs.c
5013 - if we haven't messed with SIGTTOU, just manipulate queue_sigchld
5014 in notify_of_job_status instead of calling sigprocmask()
5015 - list_one_job now calls pretty_print_job directly instead of going
5016 through print_job
5017 - pretty_print_job now must be called with SIGCHLD blocked or held
5018 instead of blocking SIGCHLD itself
5019 - changed start_job so that it doesn't call UNBLOCK_CHILD and then
5020 immediately call BLOCK_CHILD again (explicitly or via last_pid()),
5021 call find_last_pid instead of last_pid and then UNBLOCK_CHILD
5022 - changed wait_for_job the same way
5023 - find_last_pid now takes a second argument: block; uses BLOCK_CHILD
5024 if `block' is 1, not otherwise. Changed existing calls:
5025 find_last_pid(j) -> find_last_pid(j, 0)
5026 last_pid(j) -> find_last_pid(j, 1)
5027 `last_pid()' is now gone
5028 - rewrote wait_for_background_pids(); it was a little strange
5029
5030 copy_cmd.c
5031 - copy_if_command: don't copy null false_case commands
5032 - copy_simple_command: don't copy a null redirection list
5033
5034 subst.c
5035 - in get_word_from_string and list_string, just check for " \t\n"
5036 directly rather than calling strcmp
5037 - in get_word_from_string and strip_trailing_ifs_whitespace, use
5038 isifs() instead of issep(), since they're never called with
5039 separators != $IFS
5040 - change issep() to call isifs if separators is longer than one
5041 character, since it's never called with anything but "", " ",
5042 or $IFS
5043
5044 3/1
5045 ---
5046 sig.h
5047 - enclose the BLOCK_SIGNAL macro in a do {...} while (0) loop, at it
5048 should have been all along
5049
5050 lib/readline/doc/rltech.texinfo
5051 - document that readline defaults to stdin/stdout if rl_instream/
5052 rl_outstream are NULL
5053
5054 lib/readline/terminal.c
5055 - if an application is using a custom redisplay function,
5056 rl_resize_terminal just calls rl_forced_update_display to tell
5057 (*rl_redisplay_func) to update the display, otherwise call
5058 _rl_redisplay_after_sigwinch
5059
5060 lib/readline/readline.c
5061 - change readline_internal_setup() so the change to vi insertion mode
5062 happens even if readline_echoing_p is 0
5063 - don't print the prompt to rl_outstream in readline_internal_setup
5064 if we're not echoing and the caller has defined a custom redisplay
5065 function -- let the redisplay function deal with it
5066
5067 configure.in
5068 - new option: --enable-mem-scramble, controls memory scrambling on
5069 free() (on by default; only affects use of bash malloc)
5070
5071 config.h.in
5072 - new option MEMSCRAMBLE, controlled by --enable-mem-scramble
5073
5074 3/5
5075 ---
5076 parse.y
5077 - added ksh-like behavior of [...] to read_token_word: if a `[' is
5078 seen in an assignment context and the previous characters in the
5079 token form a valid identifier, parse the [...] with
5080 parse_matched_pair to allow spaces (and newlines) in the subscript
5081
5082 bashline.c
5083 - new function bash_servicename_completion_function, for completing
5084 service names from /etc/services
5085
5086 bashline.h
5087 - new extern declaration for bash_servicename_completion_function
5088
5089 builtins/complete.def
5090 - allow new `-s/-A service' option to complete and compgen builtins
5091
5092 pcomplete.h
5093 - new CA_SERVICE define, new ITEMLIST variable it_services
5094
5095 pcomplete.c
5096 - add callback to bash_servicename_completion_function to generate
5097 list of matching service names for completion
5098
5099 doc/bash.1,lib/readline/doc/rluser.texinfo
5100 - documented new `-s/-A service' option to complete and compgen
5101
5102 3/6
5103 ---
5104 builtins/read.def
5105 - change hard-coded `0' to new variable `fd' (initially 0) in
5106 preparation for adding `-u fd' option
5107
5108 bashline.c
5109 - bash_directory_completion_hook calls expand_prompt_string instead
5110 of expand_string (it does the right thing). This keeps expansion
5111 errors from causing a longjmp, which shouldn't happen because of
5112 completion
5113 - command_subst_completion_function was augmented very slightly to
5114 do filename completion on a non-command-word in a command
5115 substitution
5116 - command_subst_completion_function now skips over the lcd that
5117 rl_completion_matches puts in matches[0] if there is more than
5118 one possible completion
5119
5120 3/7
5121 ---
5122 builtins/read.def
5123 - only add the unwind_protect to free `rlbuf' if `edit' is non-zero,
5124 since we won't be using readline otherwise
5125
5126 lib/sh/zread.c
5127 - renamed zread1 -> zreadintr
5128
5129 redir.c
5130 - small change to redirection_error() to make a slightly better
5131 guess about the invalid file descriptor if the redirection op is
5132 r_duplicating_input or r_duplicating_output
5133
5134 include/stdc.h
5135 - new macro, SH_VA_START, to encapsulate the difference between
5136 stdarg va_start and varargs va_start
5137
5138 {error,pcomplete,print_cmd}.c,builtins/common.c,lib/sh/snprintf.c
5139 - use SH_VA_START
5140
5141 3/8
5142 ---
5143 builtins/read.def
5144 - support for the ksh-like `-u fd' option
5145
5146 general.c
5147 - new function sh_validfd(fd), returns 1 if fd is a valid open file
5148 descriptor
5149
5150 general.h
5151 - extern decl for sh_validfd
5152
5153 bashline.c
5154 - don't call posix_readline_initialize() from initialize_readline();
5155 sv_strict_posix() should already have taken care of it
5156
5157 3/11
5158 ----
5159 {error,pcomplete,print_cmd}.c, builtins/common.c
5160 - removed non-varargs versions of functions
5161
5162 builtins/printf.def
5163 - if the string argument to %q has non-printing characters, call
5164 ansic_quote to quote it rather than sh_backslash_quote
5165
5166 variables.h
5167 - new attribute: att_trace (and corresponding trace_p() macro).
5168 Functions with this attribute will inherit the DEBUG trap.
5169 Currently ignored for variables
5170
5171 builtins/declare.def
5172 - new `-t' option to declare/typeset toggle the `att_trace' attribute
5173
5174 builtins/setattr.def
5175 - check for att_trace and output `-t' flag in show_var_attributes
5176
5177 execute_cmd.c
5178 - if a function is being traced (it has the `-t' attribute set),
5179 don't turn off the DEBUG trap when it executes
5180
5181 doc/{bash.1,bashref.texi}
5182 - document the new `-t' option to declare/typeset
5183
5184 3/12
5185 ----
5186 execute_cmd.c
5187 - don't execute the debug trap in the `cm_simple:' case of
5188 execute_command_internal; run it in execute_simple_command so we
5189 get the line number information right when executing in a shell
5190 function
5191 - run a DEBUG trap before executing ((...)) arithmetic commands,
5192 like ksh93
5193 - run a DEBUG trap before executing [[...]] conditional commands,
5194 like ksh93
5195
5196 eval.c
5197 - add a static forward declaration for alrm_catcher()
5198
5199 general.c
5200 - add static forward declarations for bash_special_tilde_expansions,
5201 unquoted_tilde_word, initialize_group_array
5202
5203 variables.h
5204 - add extern declarations for sh_get_env_value, map_over_funcs,
5205 local_exported_variables
5206
5207 variables.c
5208 - add static forward declarations for dispose_temporary_env,
5209 make_func_export_array
5210
5211 bashhist.c
5212 - add static forward declaration for check_history_control
5213
5214 configure.in
5215 - add a call to AC_CHECK_DECLS for strcpy
5216
5217 config.h.in
5218 - add placeholder for HAVE_DECL_STRCPY define, set by configure
5219
5220 general.h
5221 - don't declare strcpy if HAVE_DECL_STRCPY is defined with a non-zero
5222 value
5223
5224 sig.h
5225 - add prototype to typedef of SigHandler
5226
5227 lib/readline/histlib.h
5228 - removed extern declaration of strcpy()
5229 - include string.h/strings.h directly in histlib.h instead of source
5230 files
5231
5232 lib/readline/{histexpand,histfile,history,histsearch}.c
5233 - don't include string.h/strings.h now that histlib.h includes it
5234
5235 lib/tilde/tilde.c
5236 - removed extern declaration of strcpy(), rely on string.h/strings.h
5237
5238 command.h
5239 - four new redirection types: r_move_input, r_move_output,
5240 r_move_input_word, r_move_output_word, for
5241 [N]<&word- and [N]>&word- from ksh93
5242
5243 print_cmd.c
5244 - changes to print r_move_input[_word] and r_move_output[_word]
5245
5246 copy_cmd.c
5247 - changes to copy r_move_input[_word] and r_move_output[_word]
5248
5249 dispose_cmd.c
5250 - changes to dispose r_move_input_word and r_move_output_word
5251
5252 make_cmd.c
5253 - changes to make r_move_input[_word] and r_move_output[_word] from
5254 r_duplicating_{input,output}_word, which is how the new redirs
5255 are passed by the parser
5256
5257 redir.c
5258 - changes to make r_move_input[_word] and r_move_output[_word] do
5259 the right thing when executed
5260
5261 builtins/read.def
5262 - print an error message and return failure immediately if zread/zreadc
5263 return < 0
5264
5265 doc/{bash.1,bashref.texi}
5266 - documented new [n]<&word- and [n]>&word- redirections
5267
5268 3/13
5269 ----
5270 lib/readline/isearch.c
5271 - enabled code to allow chars bound to rl_rubout to delete characters
5272 from the incremental search string
5273
5274 shell.c
5275 - add `-l' invocation option to parse_shell_options; equivalent to
5276 `--login'
5277 - fixed set_login_shell to check first char of base pathname of argv0
5278 for `-', like other shells
5279 - move the check for make_login_shell after the call to
5280 parse_shell_options because the `-l' option might set it
5281
5282 doc/{bash.1,bashref.texi}
5283 - documented new `-l' invocation option
5284
5285 array.c
5286 - new function, array_shift, shifts an array left by a specified
5287 number of elements
5288 - array_walk is now compiled in by default
5289 - array_to_assignment_string now takes a second argument: int quoted.
5290 If non-zero, the result is single-quoted before being returned
5291 - quoted_array_assignment_string has been removed
5292
5293 array.[ch]
5294 - renamed most of the array functions so that all have an array_
5295 prefix and are more systematically named
5296 - array_slice now preserves the indicies from the original array
5297 - change array_to_assign to use a static buffer for expanding the
5298 array indices, instead of malloc/free
5299
5300 {arrayfunc,subst,variables}.c, builtins/read.def
5301 - changed calls to various array functions to use new names
5302
5303 lib/sh/stringvec.c, externs.h
5304 - renamed all of the functions to have a strvec_ prefix and to have
5305 a more sensible name scheme
5306 - strvec_search's arguments are now supplied in reverse order, so
5307 the char **array is first, like the other functions
5308 - new function, strvec_resize, xrealloc for strvecs
5309
5310 {alias,array,bracecomp,braces,bashline,execute_cmd,findcmd,general,pathexp,
5311 pcomplete,variables}.c
5312 lib/sh/stringlist.c
5313 builtins/{bind,complete,exec,getopts,pushd,set}.def
5314 - change calls to all functions from lib/sh/stringvec.c
5315 - use strvec_resize where appropriate
5316
5317 externs.h
5318 - only declare dup2() if HAVE_DUP2 is undefined or DUP2_BROKEN is
5319 defined
5320
5321 lib/readline/{macro,readline,util}.c, lib/readline/rlprivate.h
5322 - _rl_defining_kbd_macro is gone, use RL_ISSTATE(RL_STATE_MACRODEF)
5323
5324 lib/readline/readline.h
5325 - new struct readline_state, encapsulates most of readline's internal
5326 state in case you need reentrancy or nested calls to readline()
5327 - extern declarations for rl_save_state, rl_restore_state
5328
5329 lib/readline/readline.c
5330 - add (undocumented) int rl_save_state (struct readline_state *),
5331 int rl_restore_state (struct readline_state *)
5332
5333 3/14
5334 ----
5335 array.[ch]
5336 - new function, array_rshift, shifts an array right by a specified
5337 number of elements, optionally inserting a new element 0
5338
5339 examples/bashdb/bashdb
5340 - new single-file version of bash debugger, originally modified from
5341 version in bash-2.04 by Gary Vaughan (the old debugger still
5342 appears in examples/obashdb). This version has a more gdb-like
5343 command set
5344
5345 examples/bashdb/bashdb.el
5346 - new emacs bashdb debugger mode from Masatake YAMATO <jet@gyve.org>
5347
5348 execute_cmd.c
5349 - don't make $LINENO relative to function start unless the shell is
5350 currently interactive -- this is what ksh93 does and what I
5351 believe to be the intent of POSIX.2 (this required changing some
5352 of the test checks because the output has changed)
5353 - run the debug trap for each command in an arithmetic for expression,
5354 like ksh93 does
5355
5356 lib/readline/vi_mode.c
5357 - redid rl_vi_subst (binding func for `s' and `S') in terms of
5358 rl_vi_change_to: `S' == `cc' and `s' == `c '. This makes undo
5359 work right
5360
5361 3/18
5362 ----
5363 hashlib.c
5364 - fixed hash_walk to return if the item function returns < 0, instead
5365 of breaking out of the current hash chain
5366
5367 array.c
5368 - fixed array_walk to return if the item function returns < 0, like
5369 hash_walk
5370
5371 lib/sh/stringlist.c, externs.h
5372 - new function: strlist_walk, takes a stringlist and a pointer to an
5373 item func. Like other _walk funcs, if item func returns < 0 the
5374 walk is cancelled
5375 - new function: strlist_flush, frees items in the contained list
5376 with strvec_flush
5377 - renamed functions to have a strlist_ prefix and be more systematic
5378
5379 pcomplib.c,pcomplete.h
5380 - removed redundant `progcomp_initialized' variable
5381 - renamed functions to have `progcomp_' or `compspec_' prefixes
5382 like the hash library
5383
5384 {bashline,pcomplete}.c,builtins/complete.def
5385 - fixed calls to stringlist functions to use new names
5386 - fixed calls to functions in pcomplib.c to use new names
5387
5388 pcomplete.c
5389 - made the debugging code #ifdef DEBUG -- it should be mature enough
5390
5391 builtins/hash.def,parse.y
5392 - use REVERSE_LIST(x, t) instead of (t)reverse_list(x)
5393
5394 list.c,{externs,general}.h
5395 - renamed the list functions to have a list_ prefix, changed callers
5396
5397 externs.h,{execute_cmd,stringlib,subst}.c,builtins/common.c,lib/sh/stringvec.c
5398 - word_list_to_argv -> strvec_from_word_list
5399 - argv_to_word_list -> strvec_to_word_list
5400 - moved functions to lib/sh/stringvec.c
5401
5402 lib/sh/stringvec.c
5403 - changed name of second argument to strvec_from_word_list from `copy'
5404 to `alloc' so the use of `copy' between strvec_from_word_list and
5405 strvec_to_word_list isn't as confusing
5406 - changed name and sense of second argument to
5407 strvec_to_word_list from `copy' to `alloc' for the same reason --
5408 now both functions agree on semantics of second argument
5409
5410 lib/sh/stringlist.c
5411 - ditto for strlist_from_word_list and strlist_to_word_list
5412
5413 subst.c
5414 - changed callers of strvec_to_word_list
5415
5416 3/19
5417 ----
5418 builtins/hash.def
5419 - added `-l' option to list table or individual targets in reusable
5420 format
5421 - added `-d' option to remove one or more names from the table of
5422 hashed commands (provides `unhash' or `unalias -t' functionality)
5423
5424 doc/{bash.1,bashref.texi}
5425 - documented new `-l' and `-d' options to `hash'
5426
5427 hashcmd.[ch]
5428 - renamed functions to have a `phash_' prefix and follow new naming
5429 convention
5430 - phash_remove now returns an int: 1 if command not in hash table,
5431 0 if filename removed OK
5432
5433 {findcmd,variables}.c, builtins/{hash,type}.def
5434 - changed callers to use new names from hashcmd.c
5435
5436 builtins/common.[ch]
5437 - new function, sh_notfound(s), prints standard `not found' message
5438 - new function, sh_invalidid(s), prints standard `invalid identifier'
5439 message
5440 - new function, sh_restricted(s), prints standard `restricted' message
5441 for restricted shells
5442 - new function, sh_invalidnum(s), prints standard `invalid number'
5443 message
5444 - renamed bad_option to sh_invalidopt, changed to print
5445 `invalid option' instead of `unknown option'
5446 - new function, sh_invalidoptname, prints standard `invalid option
5447 name' for long options
5448 - new function, sh_badjob (s), prints standard `no such job' message
5449 - new function, sh_invalidsig (s), prints standard `invalid signal
5450 specification' message
5451 - new function, sh_nojobs (s), prints standard `no job control' message
5452 - new function, sh_needarg (s), prints standard `option requires an
5453 argument' message
5454 - new function, sh_neednumarg (s), prints standard `numeric
5455 argument required' message
5456 - new function, sh_badpid(s), prints standard `not a pid...' message
5457 - new function, sh_erange (s, desc) prints standard `out of range'
5458 message, optionally using `desc' to say what the argument is
5459
5460 builtins/{alias,command,declare,exec,hash,type}.def
5461 - call sh_notfound() instead of calling builtin_error directly
5462
5463 builtins/{declare,getopts,read,set,setattr}.def
5464 - call sh_invalidid() instead of calling builtin_error directly
5465
5466 builtins/{cd,command,enable,exec,hash,source}.def
5467 - call sh_restricted() instead of calling builtin_error directly
5468
5469 builtins/{printf,read,ulimit}.def, builtins/common.c
5470 - call sh_invalidnum instead of calling builtin_error directly
5471
5472 builtins/{complete,declare,pushd,set}.def, builtins/bashgetopt.c
5473 - call sh_invalidopt instead of bad_option or builtin_error directly
5474
5475 builtins/{complete,set,shopt}.def
5476 - call sh_invalidoptname instead of builtin_error directly
5477
5478 builtins/{fg_bg,jobs,kill,wait}.def
5479 - call sh_badjob instead of calling builtin_error directly
5480
5481 builtins/common.c, builtins/{kill,signal}.def
5482 - call sh_invalidsig instead of calling builtin_error directly
5483
5484 builtins/{fg_bg,suspend,wait}.def
5485 - call sh_nojobs instead of calling builtin_error directly
5486
5487 builtins/{common,bashgetopt}.c, builtins/{hash,kill}.def
5488 - call sh_neednumarg and sh_needarg where required
5489
5490 builtins/{kill,wait}.def
5491 - call sh_badpid where required
5492
5493 builtins/{break,fc,history,pushd,shift,ulimit,umask}.def
5494 - call sh_erange where appropriate
5495
5496 builtins/printf.def
5497 - new static function, printf_erange, prints standard out-of-range
5498 warning message
5499
5500 builtins/set.def
5501 - changed so that calls to sh_invalidopt always include the leading
5502 `+' or `-'
5503
5504 builtins/shopt.def
5505 - changed SHOPT_ERROR macro to shopt_error function
5506
5507 builtins/bind.def
5508 - regularized error messages to `bind: object: error string' like
5509 other error messages
5510
5511 builtins.h
5512 - the `short_doc' member of a `struct builtin' is now of type
5513 `const char *'
5514 - the strings in `long_doc' array of a struct builtin are now const
5515
5516 builtins/mkbuiltins.c
5517 - changes for new `const' members of struct builtin
5518
5519 3/20
5520 ----
5521 lib/readline/histfile.c
5522 - use pointers instead of indexing into buffer when reading the
5523 contents of the history file in read_history_range and
5524 history_truncate_file
5525
5526 3/21
5527 ----
5528 lib/readline/histfile.c
5529 - new file, with code to mmap the history file for reading and
5530 writing (depends on HAVE_MMAP, currently nothing checks for that)
5531
5532 3/25
5533 ----
5534 error.[ch]
5535 - new function, err_badarraysub(s), calls report_error with standard
5536 `bad array subscript' message
5537 - new function, err_unboundvar(s), calls report_error with standard
5538 `unbound variable' message
5539 - new function, err_readonly(s), calls report_error with standard
5540 `readonly variable' message
5541
5542 {arrayfunc,subst}.c
5543 - call err_badarraysub where appropriate
5544
5545 {expr,subst}.c
5546 - call err_unboundvar where appropriate
5547
5548 {arrayfunc,variables}.c
5549 - call err_readonly where appropriate
5550
5551 shell.c
5552 - changed text of bad option error messages to be the same as that
5553 printed for builtin errors
5554
5555 builtins/common.c
5556 - changed sh_invalidopt to print the invalid option before the rest
5557 of the error message (required some tests to be modified)
5558 - new function, sh_readonly, calls builtin_error with standard
5559 `readonly variable' message
5560
5561 variables.c,builtins/declare.def
5562 - call sh_readonly where appropriate
5563
5564 lib/sh/stringvec.c
5565 - added strvec_remove (sv, s), removes S from SV and shuffles rest of
5566 elements down 1
5567
5568 lib/sh/stringlist.c
5569 - added strlist_remove(sl, s), just calls strvec_remove on the
5570 component list
5571
5572 externs.h
5573 - new extern declarations for strvec_remove and strlist_remove
5574 - fixed extern declaration for strvec_search; the arguments were
5575 reversed (unimportant, it's not compiled into the shell)
5576
5577 subst.c
5578 - change param_expand to call quote_escapes on values retrieved when
5579 expanding the positional parameters
5580 - change parameter_brace_expand_word to quote escapes on values
5581 retrieved when expanding the positional parameters
5582 - fix parameter_brace_substring to quote escape characters on unquoted
5583 substrings extracted from variable values (needed to separate case
5584 VT_VARIABLE from VT_ARRAYMEMBER for this, since, because
5585 get_var_and_type calls array_value for VT_ARRAYMEMBER, we need to
5586 skip over quoted characters in an already-appropriately-quoted
5587 string to find the substring we want)
5588 - fix parameter_brace_substring to quote escape characters in the
5589 value returned by pos_params when expanding subsets of the
5590 positional parameters and not within double quotes (in which case
5591 pos_params() quotes the string for us)
5592 - fix parameter_brace_substring to quote escape characters in the
5593 value returned by array_subrange when expanding subsets of an
5594 array and not within double quotes (in which case
5595 array_subrange() quotes the string for us)
5596 - new function, quoted_strlen(s), does strlen(s) while skipping over
5597 characters quoted with CTLESC (#ifdef INCLUDE_UNUSED, since it's
5598 not used yet)
5599 - changed pos_params() so it always returns a list whose members are
5600 quoted strings if (quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) != 0
5601
5602 arrayfunc.c
5603 - fix array_value to consistently call quote_escapes, even when a
5604 non-array variable is being subscripted with element 0, in which
5605 case we return the variable value
5606
5607 lib/sh/strtrans.c
5608 - make the for_echo parameter to ansicstr a `flags' parameter that
5609 has its old `for echo' meaning if flags&1 is non-zero (which is
5610 consistent with the old code)
5611 - Added code to the `flags' parameter to ansicstr so that if flags&2
5612 is non-zero, CTLESC and CTLNUL are escaped with CTLESC in the
5613 expanded string
5614 - change ansiexpand() to call ansicstr with a `flags' parameter of 2
5615
5616 3/26
5617 ----
5618 lib/readline/histfile.c
5619 - when reading and writing the history file, use malloc instead of
5620 xmalloc and handle failures gracefully, so the application doesn't
5621 abort if the history file or history list is too big
5622
5623 3/27
5624 ----
5625 arrayfunc.c
5626 - changed array_value_internal to take an additional `int *'
5627 parameter, in which is returned the type of array indexing
5628 performed (array[@] vs. array or array[index])
5629 - changed array_value and get_array_value to take a corresponding
5630 extra parameter and pass it to array_value_internal
5631 - changed array_value_internal to no longer return newly-allocated
5632 memory or quote CTLESC and CTLNUL in the returned string if
5633 `simple' array indexing (subscript not `@' or `*') is being
5634 performed. This makes it more like a variable lookup
5635
5636 arrayfunc.h
5637 - changed prototypes for array_value and get_array_value
5638
5639 expr.c
5640 - added new parameter to call to get_array_value in expr_streval
5641 - don't need to free memory returned by get_array_value any more
5642
5643 subst.c
5644 - quote_escapes now works with multibyte characters
5645 - dequote_string now works with multibyte characters
5646 - dequote_escapes is now needed, so it's compiled in, and it
5647 now works with multibyte characters
5648 - remove_quoted_escapes now just calls dequote_escapes and copies the
5649 result over the argument string
5650 - remove_quoted_nulls now returns its char * argument, parallels
5651 remove_quoted_escapes
5652 - parameter_brace_expand_word now passes the new argument to
5653 array_value and quotes CTLESC and CTLNUL in the result if it's a
5654 `simple' array expansion by calling quote_escapes
5655 - get_var_and_type now returns VT_ARRAYMEMBER for references like
5656 ${array} where `array' is an array variable (just like ${array[0]}).
5657 Documented (in comment) that a VT_VARIABLE return value means that
5658 quote_escapes has been called at some point
5659 - changed callers of get_var_and_type to no longer free value if
5660 VT_ARRAYMEMBER is returned as type
5661 - changed parameter_brace_substring and parameter_brace_patsub to
5662 call dequote_escapes on the value from get_var_and_type if the
5663 type is VT_VARIABLE, since the substring and pattern substitution
5664 code doesn't understand CTLESC quoting
5665 - parameter_brace_substring no longer needs to call quoted_substring
5666 for the VT_ARRAYMEMBER case
5667 - changed parameter_brace_patsub to call quote_escapes on the result
5668 of pat_subst for the VT_VARIABLE and VT_ARRAYMEMBER cases, and to
5669 quote the returned string in the VT_ARRAYVAR and VT_POSPARAMS cases
5670 if the `MATCH_QUOTED' flag isn't set (if it is, the pattern
5671 substitution functions perform any necessary quoting)
5672 - quoted_substring is no longer used; it's now #ifdef INCLUDE_UNUSED
5673
5674 lib/malloc/mstats.h
5675 - new member in _malstats: u_bits32_t bytesreq, the total number of
5676 bytes requested by the caller via calls to malloc() and realloc()
5677
5678 lib/malloc/stats.c
5679 - print bytesreq member in _print_malloc_stats
5680 - don't print statistics for buckets for which nmal == 0 (no mallocs)
5681
5682 lib/malloc/malloc.c
5683 - modified internal_malloc, internal_realloc to keep running total of
5684 number of bytes requested by calling application
5685
5686 shell.c
5687 - sh_exit is now compiled in; exit_shell calls sh_exit
5688
5689 error.c
5690 - changed fatal_error, report_error, parser_error to call sh_exit
5691
5692 3/28
5693 ----
5694 subst.[ch]
5695 - changed Q_NOQUOTE to Q_PATQUOTE; it makes the intent more clear
5696
5697 subst.c
5698 - moved code from parameter_brace_expand into a new function that
5699 dispatches for pattern substitution: parameter_brace_remove_pattern
5700 - changed structure of parameter_brace_remove_pattern to be like
5701 parameter_brace_patsub and its ilk: call get_var_and_type to
5702 isolate the variable name, move the pattern isolation code out of
5703 the various *_remove_pattern functions into
5704 parameter_brace_remove_pattern and pass the results to the various
5705 functions, use a switch on the return value from get_var_and_type
5706 to decide which function to call, regularized the arguments to the
5707 separate pattern removal functions
5708 - parameter_brace_remove_pattern now properly quotes escape chars in
5709 the returned value
5710 - changed get_var_and_type to call dequote_escapes on the `value'
5711 parameter for case VT_VARIABLE and return the result in *valp,
5712 so the calling functions don't have to do it themselves; changed
5713 callers appropriately
5714 - fixed getpattern() where it broke posix compliance: if you enclose
5715 a pattern removal spec in double quotes, the outer double quotes
5716 have no effect on the pattern (POSIX.1-200x 2.6.2). This uncovered
5717 a bug in the test suite (!)
5718
5719 pathexp.c
5720 - fixed a problem with quote_string_for_globbing where it would change
5721 consecutive CTLESC chars all to \ instead of changing every other
5722 quoted char
5723
5724 3/31
5725 ----
5726 lib/malloc/{malloc,stats}.c
5727 - moved declaration of _mstats to malloc.c so stats.o doesn't get
5728 linked into the shell if the stats functions aren't called
5729
5730 4/2
5731 ---
5732 lib/glob/smatch.c
5733 - introduce `XCHAR' define, which is the type of arguments passed to
5734 strcoll/strcmp/strlen and their wide-character equivalents, added
5735 appropriate casts
5736 - static arrays in single-byte version of rangecmp() are `char', not
5737 `unsigned char', so compilers don't complain about calls to strcoll
5738
5739 lib/glob/sm_loop.c
5740 - casts for `XCHAR' and `XCHAR *' arguments to libc functions
5741 - use prototype declaration for BRACKMATCH if `PROTOTYPES' is defined
5742 to avoid problems with type promotion (unsigned char -> int)
5743
5744 lib/glob/collsyms.h
5745 - `name' member of struct _COLLSYM is now of type `XCHAR *', since
5746 some compilers don't like `unsigned char *' initializers from
5747 constant strings
5748
5749 [bash-2.05b-alpha1 released]
5750
5751 4/3
5752 ---
5753 builtins/{evalstring.c,common.h}
5754 - new flag for parse_and_execute, SEVAL_NOFREE, means to not free
5755 the argument string when finished
5756
5757 lib/readline/text.c
5758 - fixed a trivial typo in _rl_insert_char when reading multibyte
5759 char sequences
5760 - replace calls to ding() with rl_ding()
5761
5762 include/chartypes.h
5763 - remove SIGN_EXTEND_CHAR and TOASCII macros; they're unused
5764
5765 make_cmd.c
5766 - include dispose_cmd.h for extern function declarations
5767
5768 lib/glob/glob.c
5769 - include `shmbutil.h' and `xmalloc.h' for extern function declarations
5770
5771 lib/glob/smatch.c
5772 - include `xmalloc.h' for extern function declarations
5773
5774 shell.c
5775 - fix maybe_make_restricted to use its argument instead of global
5776 `shell_name'
5777
5778 version.c
5779 - update copyright message to include this year
5780
5781 lib/readline/display.c
5782 - fixes from Jiro SEKIBA <jir@yamato.ibm.com> to fix autowrapping
5783 when using multibyte characters
5784
5785 lib/glob/sm_loop.c
5786 - fixed a problem in BRACKMATCH where not enough memory was allocated
5787 to hold a multibyte character when parsing POSIX.2 char class names
5788
5789 support/config.{guess,sub}
5790 - updated via patch from Paul Eggert with latest GNU additions
5791
5792 variables.c
5793 - var_lookup should use its `vcontext' argument instead of
5794 unconditionally using `shell_variables'
5795
5796 4/4
5797 ---
5798 builtins/bind.def,doc/{bash.1,bashref.texi}
5799 - changed the usage summary and help text to make it clear that any
5800 readline command that may appear in ~/.inputrc may be supplied as
5801 one of the non-option arguments to `bind'
5802
5803 builtins/mkbuiltins.c
5804 - added support for `-H' option, which means to write long documentation
5805 for each builtin to a separate file in the `helpfiles' directory
5806
5807 builtins/Makefile.in
5808 - new target `helpdoc', just creates long doc files in helpfiles
5809 directory
5810
5811 lib/sh/zcatfd.c
5812 - new file, with zcatfd(int fd, int ofd, char *fn); dumps data from
5813 FD to OFD
5814
5815 Makefile.in,lib/sh/Makefile.in
5816 - added zcatfd.c, zcatfd.o member of libsh.a
5817
5818 builtins/evalstring.c
5819 - changed cat_file to call zcatfd(fd, 1, fn)
5820
5821 builtins/{shopt,colon}.def
5822 - removed the $DOCNAME directive for `shopt', `true', and `false';
5823 just use the names
5824 - changed $DOCNAME for `:' to just be `colon' instead of
5825 `colon_builtin'
5826
5827 builtins/reserved.def
5828 - added help entries for ((, [[, `for (('
5829
5830 builtins/let.def
5831 - add id++, id--, ++id, --id, ** to help text
5832
5833 4/8
5834 ---
5835 builtins/bashgetopt.[ch]
5836 - changed to allow options beginning with `+', enabled by a leading
5837 `+' in the option string
5838 - new variable, list_opttype, set to `-' or `+'
5839
5840 builtins/{common.c,{builtin,eval,exit,fg_bg,let,printf,pushd,return,source,wait}.def
5841 - changes to allow a `--' option for every builtin that accepts
5842 operands but not options, as per posix.1-2001
5843
5844 builtins/{declare,setattr}.def
5845 - use internal_getopt for parsing options, now that it supports `+'
5846
5847 builtins/set.def
5848 - use internal_getopt for initial option parse, now that it supports
5849 a leading `+'
5850
5851
5852 {configure,Makefile}.in, builtins/{Makefile.in,help.def,mkbuiltins.c}
5853 - support for a new configure option, ``--enable-separate-helpfiles'',
5854 moves the `long' help text to separate help files, installed by
5855 default into ${datadir}/bash, one file per builtin. Off by
5856 default -- it saves 47K, but it's only 47K, and it's in the text
5857 segment
5858
5859 flags.c
5860 - build internal_getopt() option string argument from flags array at
5861 runtime in shell.c
5862
5863 shell.c
5864 - new variable to control writing malloc stats at exit:
5865 malloc_trace_at_exit, 0 by default
5866
5867 lib/malloc/malloc.c
5868 - heavily updated:
5869 o partial page allocated on first call to malloc to make
5870 subsequent sbrks page-aligned no longer wasted
5871 o begin and end range guards are now the same value: the chunk
5872 requested
5873 o coalescing code was changed to attempt to coalesce first two
5874 adjacent blocks on the free list; enabled by default
5875 o blocks of size 32 are now candidates for larger block
5876 splitting, since 32 is the most popular size
5877 o blocks of size 32 are now candidates for smaller block
5878 coalescing
5879 o the IN_BUCKET check was changed to just make sure that the
5880 size isn't too big for the bucket, since the `busy block'
5881 checking code may increase the bucket by one or more,
5882 meaning that the old check would fail and cause a panic when
5883 a chunk allocated in such a way was freed
5884 o bin sizes are now precomputed and looked up in an array
5885 rather than being computed at runtime
5886 o moved the _mstats declaration here to avoid the stats code
5887 being linked in even when no stats functions were called
5888 (only matters if MALLOC_DEBUG is defined)
5889 o malloc now keeps track of the address of the top of the heap
5890 and will return large chunks to the system with calls to
5891 sbrk with a negative argument when freeing the top chunk.
5892 Two thresholds: LESSCORE_FRC means to unconditionally return
5893 memory to the system; LESSCORE_MIN means to return memory if
5894 there's at least one block already on the free list
5895
5896 lib/malloc/mstats.h
5897 - stats struct now keeps track of number of block coalesces by bin,
5898 and the number of times memory was returned to the system by bin
5899
5900 lib/malloc/stats.c
5901 - trace_malloc_stats now takes a second argument: the name of the file
5902 to write to. The first `%p' in the template file name is replaced
5903 by the pid
5904
5905 4/9
5906 ---
5907 lib/malloc/imalloc.h
5908 - added some macros derived from dlmalloc and glibc malloc to inline
5909 memcpy and memset if the requested size is <= 32 bytes
5910
5911 lib/malloc/malloc.c
5912 - use MALLOC_MEMSET instead of memset in internal_{malloc,free}
5913
5914 include/ocache.h
5915 - use OC_MEMSET (variant of MALLOC_MEMSET) in ocache_free
5916
5917 configure.in, config.h.in
5918 - check for getservent(), define HAVE_GETSERVENT if found
5919
5920 bashline.c
5921 - punt immediately from bash_servicename_completion_function if
5922 HAVE_GETSERVENT is not defined (cygwin seems to not define it)
5923 - include "input.h" for extern save_token_state() and
5924 restore_token_state() declarations
5925 - change bash_execute_unix_command to call parse_and_execute with
5926 SEVAL_NOHIST flag so the command doesn't get saved on the history
5927 list
5928 - change bash_execute_unix_command to save and restore the current
5929 command line count and the token state (last_read_token, etc.).
5930 Everything else is saved by either parse_and_execute directly or
5931 the call it makes to push_stream(). The shell_input_line stuff
5932 doesn't need to be saved and restored; it's not computed until
5933 readline() returns
5934
5935 4/10
5936 ----
5937 lib/glob/glob.[ch]
5938 - glob_filename and glob_vector now take an additional `flags' arg
5939 - define GX_MARKDIRS as possible flag value for glob_filename and
5940 glob_vector
5941
5942 lib/sh/snprintf.c
5943 - fixed some bugs with handling of `g' and `G' formats
5944 - make sure numtoa returns the fractional part correctly when passed 0
5945 - implemented thousands grouping for `'' flag character
5946
5947 lib/sh/rename.c
5948 - a few changes to make it more bulletproof
5949
5950 4/11
5951 ----
5952 lib/glob/glob.c
5953 - added the couple of dozen lines of code to glob_dir_to_array to
5954 finish implementing GX_MARKDIRS
5955
5956 builtins/set.def
5957 - changed unset builtin so that it no longer considers unsetting an
5958 unset variable or function to be an error
5959
5960 lib/readline/display.c
5961 - fix to rl_redisplay for a problem which caused display to be messed
5962 up when the last line of a multi-line prompt (possibly containing
5963 invisible characters) was longer than the screen width
5964
5965 4/15
5966 ----
5967 aclocal.m4
5968 - use AC_DEFINE_UNQUOTED in BASH_SYS_DEFAULT_MAIL_DIR instead of
5969 enumerating all of the possible values and using AC_DEFINE
5970
5971 4/16
5972 ----
5973 Makefile.in, {builtins,support}/Makefile.in
5974 - new variables, CFLAGS_FOR_BUILD and CPPFLAGS_FOR_BUILD, substituted
5975 by `configure'
5976 - changed CCFLAGS_FOR_BUILD to BASE_CCFLAGS, removing $(CPPFLAGS);
5977 CCFLAGS and CCFLAGS_FOR_BUILD now include $(BASE_CCFLAGS) with
5978 (possibly) different values for CPPFLAGS and CFLAGS
5979 - GCC_LINT_CFLAGS now includes $(BASE_CCFLAGS) and $(CPPFLAGS)
5980 instead of CCFLAGS_FOR_BUILD
5981 - new variable, LDFLAGS_FOR_BUILD, right now equivalent to LDFLAGS
5982 - remove $(CPPFLAGS) from recipes for buildversion, mksignames, and
5983 mksyntax
5984
5985 configure.in
5986 - compute and substitute CFLAGS_FOR_BUILD, CPPFLAGS_FOR_BUILD, and
5987 LDFLAGS_FOR_BUILD
5988 - changed qnx to use LOCAL_LDFLAGS and LOCAL_LIBS instead of putting
5989 everything in LOCAL_LDFLAGS
5990
5991 builtins/Makefile.in
5992 - remove $(PROFILE_FLAGS) from recipe for building `mkbuiltins'
5993 - use LDFLAGS_FOR_BUILD instead of LDFLAGS in recipe for building
5994 `mkbuiltins'
5995
5996 Makefile.in
5997 - use $(CC_FOR_BUILD) and $(CCFLAGS_FOR_BUILD) to build auxiliary
5998 test programs (printenv, recho, zecho)
5999
6000 support/Makefile.in
6001 - use CC_FOR_BUILD and CCFLAGS_FOR_BUILD in recipe for building
6002 `man2html'
6003
6004 lib/tilde/Makefile.in
6005 - substitute PROFILE_FLAGS, use PROFILE_FLAGS in $(CCFLAGS)
6006
6007 4/25
6008 ----
6009 Makefile.in, configure.in
6010 - moved RELSTATUS to configure.in; configure substitutes it into
6011 the generated Makefile
6012
6013 lib/sh/snprintf.c
6014 - fix wchars() to deal with systems where MB_CUR_MAX is not a
6015 constant expression
6016
6017 5/2
6018 ---
6019 lib/sh/shquote.c
6020 - add `,' to list of chars that are backslash-quoted. It doesn't
6021 hurt normal usage and prevents filenames with commas from being
6022 inappropriately split by brace expansion after using
6023 complete-into-braces
6024
6025 5/6
6026 ---
6027 lib/sh/xstrchr.c
6028 - we only need the check of MB_CUR_MAX and the slow code for a
6029 few encodings, and even then only for a subset of the charset
6030
6031 arrayfunc.c
6032 - some speedups for skipsubscript and multibyte chars from Bruno Haible
6033
6034 locale.c
6035 - changed set_lang to call setlocale(LC_ALL, ...) if LC_ALL doesn't
6036 already have a value, but doesn't change any shell variables
6037
6038 include/shmbutil.h
6039 - major speedups from Bruno Haible, mostly concerned with reducing
6040 the number of strlen(3) calls
6041
6042 subst.c
6043 - change callers of macros in shmbutil.h to add extra argument as
6044 necessary
6045 - skip_single_quoted and skip_double_quoted take another argument:
6046 the length of the string; mostly useful when using multibyte chars
6047 - many speedups from precomputing string lengths at function start
6048 - fixed a small bug in de_backslash in the midst of rewriting for
6049 better efficiency
6050
6051 {braces,make_cmd,pathexp}.c
6052 - change callers of macros in shmbutil.h to add extra argument as
6053 necessary
6054
6055 pathexp.c
6056 - fix a one-too-far problem with multibyte chars in
6057 unquoted_glob_pattern_p
6058
6059 braces.c
6060 - brace_gobbler takes a new argument, the length of the passed string
6061 - expand_amble takes a new argument, the length of the passed string
6062
6063 5/7
6064 ---
6065 subst.c
6066 - modified remove_quoted_nulls to eliminate the memory allocation and
6067 do the copy in place using the same strategy as de_backslash
6068
6069 lib/readline/{rldefs.h,complete.c}
6070 - new define RL_QF_OTHER_QUOTE, so _rl_find_completion_word can note
6071 that it found a quoting character other than \'" that appears in
6072 rl_completer_quote_characters
6073
6074 5/9
6075 ---
6076 jobs.c
6077 - save and restore old value of jobs_list_frozen when calling trap
6078 handlers from set_job_status_and_cleanup to avoid seg faults when
6079 running recursive trap handlers
6080
6081 5/10
6082 ----
6083 builtins/common.h
6084 - new #defines to use for value of changed_dollar_vars (provides
6085 information about the caller who wants to blow away the old dollar
6086 variables)
6087
6088 builtins/common.c
6089 - changed set_dollar_vars_changed to set changed_dollar_vars to one
6090 of the ARGS_* values depending on the caller and environment
6091
6092 builtins/source.def
6093 - source restores the positional parameters unless the `set' builtin
6094 was called to specify a new set while not executing a shell function
6095
6096 5/13
6097 ----
6098 POSIX
6099 - new file, was in CWRU/POSIX.NOTES
6100
6101 doc/{Makefile.in,Makefile}
6102 - changed `posix' rule to modify ../POSIX
6103
6104 doc/mkposix
6105 - write to `POSIX' by default
6106
6107 lib/sh/strtrans.c
6108 - when ansicstr is parsing a format string for `echo -e' (or the
6109 equivalent xpg_echo option is enabled), obey the POSIX-2001/SUSv3
6110 standard and accept 0-3 octal digits after a leading `0'
6111
6112 doc/{bash.1,bashref.texi}
6113 - updated `echo' description to note that up to three octal digits
6114 are now accepted following `\0'
6115
6116 5/16
6117 ----
6118 doc/Makefile.in
6119 - remove the generated documentation on `make distclean' if the
6120 build directory and source directory are not the same
6121
6122 Makefile.in
6123 - descend into `support' subdirectory on a `make clean' and
6124 `make distclean'
6125 - remove parser-built, y.tab[ch] on a `make distclean' if the build
6126 directory and source directory are not the same
6127
6128 support/Makefile.in
6129 - support various `clean' targets and remove man2html.o and man2html
6130
6131 {configure,Makefile}.in
6132 - move values for DEBUG and MALLOC_DEBUG into configure.in; on by
6133 default for development versions; off by default for releases
6134 (off for profiling, too)
6135
6136 5/21
6137 ----
6138 parse.y
6139 - modified the grammar to allow a simple_list followed by yacc_EOF
6140 to terminate a command. This fixes problems with things like
6141 a backslash-newline at the end of an `eval'd string
6142 - change handle_eof_input_unit() to reset the token state before
6143 calling prompt_again(), in case the prompt to be evaluated contains
6144 a command substitution
6145
6146 5/23
6147 ----
6148 lib/readline/vi_mode.c
6149 - fix `r' command (rl_vi_change_char) when HANDLE_MULTIBYTE is defined
6150 but MB_CUR_MAX == 1
6151
6152 5/24
6153 ----
6154 lib/malloc/watch.c
6155 - don't try to print `file' argument to _watch_warn if it's null
6156
6157 lib/malloc/malloc.c
6158 - changed guard checking code in internal_{malloc,free,realloc} to
6159 access memory as (char *) and copy into a union instead of
6160 casting and dereferencing a pointer to u_bits32_t, since that
6161 results in unaligned accesses which will cause Sparcs to upchuck
6162
6163 5/30
6164 ----
6165 [bash-2.05b-beta1 released]
6166
6167 lib/readline/text.c
6168 - fixed a problem with rl_transpose_chars on systems supporting
6169 multibyte characters with a locale that doesn't have any multibyte
6170 chars
6171
6172 6/4
6173 ---
6174 expr.c
6175 - fix a/=0 and a%=0 to throw evaluation errors rather than core dumps
6176
6177 lib/readline/display.c
6178 - fix core dump when line wrapping a multibyte character (line
6179 accidentally dropped from the original patch)
6180
6181 lib/readline/mbutil.c
6182 - fix reversed return value from _rl_is_mbchar_matched; fixes problem
6183 with backward-char-search
6184
6185 6/10
6186 ----
6187 lib/sh/getenv.c
6188 - fix getenv to not free value returned by find_tempenv_variable
6189 - add setenv, putenv, unsetenv for completeness
6190
6191 6/12
6192 ----
6193 shell.c
6194 - change init_noninteractive to init expand_aliases to the value of
6195 posixly_correct
6196 - don't initialize expand_aliases to posixly_correct anywhere else.
6197 This allows the -O expand_aliases invocation option to work correctly
6198
6199 general.c
6200 - fix move_to_high_fd to not try the dup2 unless the fd loop results
6201 in an fd > 3; just return the passed file descriptor otherwise
6202 - use HIGH_FD_MAX, defined in general.h, instead of hard-coded 256
6203 as highest file descriptor to try
6204
6205 subst.c
6206 - in process_substitute, call move_to_high_fd with `maxfd' parameter
6207 of -1 instead of 64, so move_to_high_fd will use its maximum
6208
6209 6/21
6210 ----
6211 lib/malloc/malloc.c
6212 - don't bother calling MALLOC_MEMSET if the requested size is 0
6213
6214 builtins/setattr.def
6215 - note in short doc that export and readonly can take assignment
6216 statements as arguments
6217
6218 error.c
6219 - new function, error_prolog(), to capture common error message
6220 prefix code (except for parser errors)
6221
6222 6/25
6223 ----
6224 aclocal.m4
6225 - add tests for standard-conforming declarations for putenv and
6226 unsetenv in system header files
6227
6228 {configure,config.h}.in
6229 - call BASH_FUNC_STD_PUTENV and BASH_FUNC_STD_UNSETENV, define
6230 HAVE_STD_GETENV and HAVE_STD_UNSETENV, respectively, if they
6231 succeed
6232
6233 lib/sh/getenv.c
6234 - change putenv and unsetenv to take differing prototypes in
6235 stdlib.h into account
6236
6237 6/27
6238 ----
6239 [bash-2.05b-beta2 released]
6240
6241 6/28
6242 ----
6243 builtins/common.c
6244 - fix get_job_spec so that %N works when N is the size of the jobs
6245 list (%8 means job 8, but the 7th member of the jobs array, so
6246 it's OK if N == job_slots because the function returns N-1)
6247
6248 7/1
6249 ---
6250 shell.c
6251 - turn off line editing if $EMACS is set to `t'
6252
6253 7/10
6254 ----
6255 builtins/set.def
6256 - remove mention of `-i' from long help doc, since it has no effect
6257
6258 7/17
6259 ----
6260 [bash-2.05b released]
6261
6262 7/18
6263 ----
6264
6265 lib/malloc/malloc.c
6266 - make sure that the `free_return' label has a non-empty statement
6267 to branch to
6268
6269 7/19
6270 ----
6271 locale.c
6272 - only call setlocale() from set_lang() if HAVE_SETLOCALE is defined;
6273 otherwise just return 0
6274
6275 lib/readline/mbutil.c
6276 - only try to memset `ps' in _rl_get_char_len if it's non-NULL. Ditto
6277 for _rl_adjust_point
6278
6279 7/23
6280 ----
6281 execute_cmd.c
6282 - fix for executing_line_number() when compiling without conditional
6283 commands, dparen arithmetic or the arithmetic for command
6284
6285
6286 7/24
6287 ----
6288 support/Makefile.in
6289 - fix maintainer-clean, distclean, mostlyclean targets
6290
6291 builtins/common.c
6292 - fix bug in sh_nojobs where it doesn't pass the right number of args
6293 to builtin_error
6294
6295 bashline.c
6296 - when using command completion and trying to avoid appending a slash
6297 if there's a directory with the same name in the current directory,
6298 use absolute_pathname() instead of just checking whether the first
6299 char of the match is a slash to catch things like ./ and ../
6300
6301 examples/complete/bashcc-1.0.1.tar.gz
6302 - a package of completions for Clear Case, from Richard S. Smith
6303 (http://www.rssnet.org/bashcc.html)
6304
6305 input.c
6306 - fix check_bash_input to call sync_buffered_stream if the passed fd
6307 is 0 and the shell is currently reading input from fd 0 -- all it
6308 should cost is maybe an additional read system call, and it fixes
6309 the bug where an input redirection to a builtin inside a script
6310 which is being read from stdin causes the already-read-and-buffered
6311 part of the script to be thrown away, e.g.:
6312
6313 bash < x1
6314
6315 where x1 is
6316
6317 hostname
6318 read Input < t.in
6319 echo $Input
6320 echo xxx
6321
6322 execute_cmd.c
6323 - in initialize_subshell(), call unset_bash_input (0) to not mess with
6324 fd 0 if that's where bash thinks it's reading input from. Fixes
6325 bug reported by jg@cs.tu-berlin.de on 17 July 2002. Should be a way
6326 to check whether or not the current fd 0 at the time of the call has
6327 not been redirected, like in the bug report. Also might eventually
6328 want to throw in a sync_buffered_stream if bash is reading input
6329 from fd 0 in a non-interactive shell into a buffered stream, so the
6330 stream is sync'd -- might be necessary for some uses
6331
6332 7/25
6333 ----
6334 lib/readline/signals.c
6335 - make sure rl_catch_sigwinch is declared even if SIGWINCH is not
6336 defined, so the readline state saving and restoring functions in
6337 readline.c are always the same size even if SIGWINCH is not defined,
6338 and undefined references don't occur when SIGWINCH is not defined
6339
6340 7/30
6341 ----
6342 bashline.c
6343 - augment patch from 7/24 to not disable rl_filename_completion_desired
6344 if the first char of the match is `~'
6345
6346 lib/readline/bind.c
6347 - when creating `shadow' keymaps `bound' to ANYOTHERKEY, don't bind
6348 a key whose type is ISFUNC but whose function is the `fake'
6349 rl_do_lowercase_version (fixes debian bash bug #154123)
6350
6351 lib/readline/readline.c
6352 - don't call _rl_vi_set_last from _rl_dispatch_subseq if
6353 key == ANYOTHERKEY (when truncated to `sizeof(char)', it will be 0,
6354 which strchr will find in `vi_textmod')
6355
6356 7/31
6357 ----
6358 lib/readline/input.c
6359 - fix rl_gather_tyi to only slurp up one line of available input, even
6360 if more than one line is available (fixes debian bash bug #144585)
6361
6362 8/3
6363 ---
6364 bashline.c
6365 - better fix for command completion problem -- test for directory
6366 explicitly with test_for_directory before turning off
6367 rl_filename_completion_desired, since that's the case we're trying
6368 to protect against
6369
6370 8/5
6371 ---
6372 include/shmbutil.h
6373 - fix ADVANCE_CHAR macro to advance the string pointer if mbrlen
6374 returns 0, indicating that the null wide character (wide string
6375 terminator) was found (debian bash bug #155436)
6376
6377 lib/readline/mbutil.c
6378 - fix _rl_adjust_point to increment the string pointer if mbrlen
6379 returns 0
6380
6381 support/shobj-conf
6382 - fix for the `-install_name' value in SHLIB_XLDFLAGS assignment for
6383 Darwin from the fink folks
6384
6385 8/6
6386 ---
6387 builtins/exit.def
6388 - broke code that runs ~/.bash_logout out into a separate function:
6389 bash_logout()
6390
6391 builtins/common.h
6392 - extern declaration for bash_logout()
6393
6394 eval.c
6395 - call bash_logout() from alrm_catcher(), so timed-out login shells
6396 run ~/.bash_logout before processing the exit trap
6397
6398 lib/sh/strtrans.c
6399 - implemented $'\x{hexdigits}' expansion from ksh93
6400
6401 configure.in
6402 - define RECYCLES_PIDS in LOCAL_CFLAGS for cygwin; don't bother to
6403 link with -luser32
6404
6405 examples/loadables/strftime.c
6406 - new loadable builtin, interface to strftime(3)
6407
6408 8/7
6409 ---
6410 parse.y
6411 - parse_arith_cmd now takes a second argument, a flag saying whether
6412 or not to add double quotes to a parsed arithmetic command; changed
6413 callers
6414 - changed parse_dparen so it tells parse_arith_cmd to not add the
6415 double quotes and therefore doesn't need to remove them
6416 - change parse_dparen to add W_NOGLOB|W_NOSPLIT|W_QUOTED flags to word
6417 created when parsing (( ... )) arithmetic command, since the double
6418 quotes are no longer added
6419
6420 make_cmd.c
6421 - in make_arith_for_expr, set the flags on the created word to
6422 W_NOGLOB|W_NOSPLIT|W_QUOTED
6423
6424 execute_cmd.c
6425 - change execute_arith_command to expand the expression with
6426 expand_words_no_vars, like the arithmetic for command code does
6427 - fix execute_arith_command to handle the case where the expanded
6428 expression results in a NULL word without crashing
6429
6430 tests/{arith-for,cprint}.tests
6431 - change expected output to account for no longer adding quotes to
6432 ((...)) commands
6433
6434 8/8
6435 ---
6436 print_cmd.c
6437 - take out the space after printing the `((' and before printing the
6438 `))' in print_arith_command, print_arith_for_command, and
6439 xtrace_print_arith_cmd
6440
6441 tests/{arith-for,cprint}.tests
6442 - change expected output to account for no longer adding leading and
6443 trailing spaces when printing ((...)) and arithmetic for commands
6444
6445 8/17
6446 ----
6447 subst.c
6448 - fix issep() define to handle case where separators[0] == '\0', in
6449 which case it always returns false
6450
6451 lib/readline/histexpand.c
6452 - fix off-by-one error in history_expand_internal when using the `g'
6453 modifier that causes it to skip every other match when matching a
6454 single character (reported by gjyun90@resl.auto.inha.ac.kr)
6455
6456 doc/{bash.1,bashref.texi}
6457 - make sure that the name=word form of argument to declare/typeset,
6458 export, and readonly is documented in the description
6459
6460 8/30
6461 ----
6462 lib/readline/histexpand.c
6463 - make history_expand_internal understand double quotes, because
6464 single quotes are not special inside double quotes, according to
6465 our shell-like quoting conventions. We don't want unmatched
6466 single quotes inside double-quoted strings inhibiting history
6467 expansion
6468 - make `a' modifier equivalent to `g' modifier for compatibility with
6469 the BSD csh
6470 - add a `G' modifier that performs a given substitution once per word
6471 (tokenized as the shell would do it) like the BSD csh `g' modifier
6472
6473 8/31
6474 ----
6475 braces.c
6476 - when compiling for the shell, treat ${...} like \{...} instead of
6477 trying to peek backward when we see a `{'. This makes it easier
6478 to handle things like \${, which should be brace expanded because
6479 the $ is quoted
6480
6481 9/7
6482 ---
6483 aclocal.m4
6484 - redirect stdin from /dev/null in BASH_CHECK_DEV_FD before testing
6485 the readability of /dev/fd/0, so we're dealing with a known quantity
6486
6487 9/11
6488 ----
6489 [prayers for the victims of 9/11/01]
6490
6491 shell.c
6492 - fix maybe_make_restricted to handle a restricted login shell with a
6493 base pathname of `-rbash' and skip over any leading `-'
6494
6495 9/13
6496 ----
6497 builtins/evalstring.c
6498 - in parse_and_execute, make sure we don't try to run unwind-protects
6499 back to `pe_dispose' after a longjmp back to top_level if the
6500 pe_dispose frame hasn't been initialized
6501
6502 lib/readline/display.c
6503 - fix problem with prompt overwriting previous output when the output
6504 doesn't contain a newline in a multi-byte locale. This also should
6505 fix the problem of bash slowing down drastically on long lines when
6506 using a multi-byte locale, because it no longer tries to rewrite the
6507 entire line each time. Patch from Jiro SEKIBA <jir@yamato.ibm.com>
6508
6509 parse.y
6510 - move the typedef for alias_t that is compiled in if ALIAS is not
6511 defined up before the prototype for push_string, since that takes
6512 an alias_t * parameter
6513
6514 lib/readline/terminal.c
6515 - bind the termcap description's left and right arrow keys to
6516 rl_backward_char and rl_forward_char, respectively, instead of
6517 rl_forward and rl_backward (which are just there for backwards
6518 compatibility)
6519
6520 aclocal.m4
6521 - when testing readability of /dev/stdin, redirect stdin from /dev/null
6522 to make sure it's a readable file
6523
6524 9/17
6525 ----
6526 config-bot.h
6527 - don't test __STDC__ when deciding whether or not to use stdarg.h;
6528 just use it if it's present
6529
6530 tests/read2.sub
6531 - redirect from /dev/tty when using `read -t'
6532
6533 9/20
6534 ----
6535 builtins/history.def
6536 - when reading `new' entries from the history file with `history -n',
6537 fix increment of history_lines_this_session by taking any change
6538 in history_base into account
6539
6540 lib/sh/pathphys.c
6541 - changes to sh_physpath to deal with pathnames that end up being
6542 longer than PATH_MAX without dumping core
6543
6544 lib/readline/doc/{history.3,hsuser.texinfo},doc/ bash.1
6545 - documented new `a' and `G' history modifiers
6546
6547 9/25
6548 ----
6549 lib/readline/misc.c
6550 - when traversing the history list with arrow keys in vi insertion
6551 mode, put the cursor at the end of the line (like in emacs mode)
6552
6553 mksyntax.c
6554 - don't try to use \a and \v unless __STDC__ is defined; use the
6555 ascii integer equivalents otherwise
6556 - include "config.h" in the generated syntax.c file for a possible
6557 definition of `const'
6558
6559 doc/{bash.1,bashref.texi}
6560 - document the meaning of a null directory in $PATH
6561
6562 9/26
6563 ----
6564 parse.y
6565 - fix set_line_mbstate to handle case where mbrlen() returns 0,
6566 indicating the null wide character
6567 - fix set_line_mbstate so we don't directly compare a char variable
6568 to EOF, since char can (and is) unsigned on some machines
6569
6570 bashline.c
6571 - change bash_execute_unix_command to save a little bit more state:
6572 last_shell_builtin, this_shell_builtin, last_command_exit_value
6573
6574 9/27
6575 ----
6576 execute_cmd.c
6577 - tentative change to execute_simple_command to avoid freeing freed
6578 memory in the case where bash forks early but still ends up calling
6579 execute_disk_command, without passing newly-allocated memory to
6580 make_child. This may fix the core dumps with the linux-from-scratch
6581 folks
6582
6583 9/28
6584 ----
6585 Makefile.in,{builtins,lib/sh}/Makefile.in
6586 - fix up dependencies, mostly on ${BUILD_DIR}/version.h, so that
6587 parallel makes work with GNU and BSD makes
6588
6589 shell.h
6590 - new struct to save partial parsing state when doing things like
6591 bash_execute_unix_command and other operations that execute
6592 commands while a line is being entered and parsed
6593
6594 parse.y
6595 - new functions, save_parser_state() and restore_parser_state(), to
6596 save and restore partial parsing state
6597
6598 bashline.c
6599 - change bash_execute_unix_command to call {save,restore}_parser_state
6600
6601 builtins/jobs.def
6602 - change execute_list_with_replacements to eliminate a run_unwind_frame
6603 in favor of calling the cleanup explicitly and discarding the frame
6604
6605 execute_cmd.c
6606 - change execute_for_command to avoid a run_unwind_frame in the case
6607 where the loop variable is readonly or otherwise not assignable
6608 - change execute_select_command and execute_simple_command to use
6609 discard_unwind_frame by running the cleanup code explicitly, instead
6610 of using run_unwind_frame
6611 - make sure execute_select_command decreases loop_level even on error
6612
6613 9/30
6614 ----
6615 doc/{bash.1,bashref.texi}
6616 - fixed description of `unset' now that unsetting a previously-unset
6617 variable is no longer an error
6618
6619 10/3
6620 ----
6621 {configure,config.h}.in
6622 - augment check for strtold with additional check to detect the
6623 horribly broken hp/ux 11.x implementation that returns `long_double';
6624 defines STRTOLD_BROKEN if so
6625
6626 builtins/printf.def
6627 - define floatmax_t as `double' if STRTOLD_BROKEN is defined
6628
6629 10/5
6630 ----
6631 lib/readline/keymaps.c
6632 - don't automatically bind uppercase keys to rl_do_lowercase_version
6633 in rl_make_bare_keymap
6634
6635 lib/readline/readline.c
6636 - explicitly check for ANYOTHERKEY binding to rl_do_lowercase_version
6637 and dispatch to lowercase of key when a prefix is not matched
6638
6639 10/12
6640 -----
6641 bashline.c
6642 - set COMP_WORDBREAKS in enable_hostname_completion to the value
6643 of rl_completer_word_break_characters
6644
6645 variables.c
6646 - new special variable COMP_WORDBREAKS, controls the value of
6647 rl_completer_word_break_characters
6648
6649 variables.h
6650 - new extern declaration for sv_comp_wordbreaks()
6651
6652 subst.c
6653 - change split_at_delims to behave more like shell word splitting if
6654 the passed value for the delimiters is NULL, indicating that the
6655 function is to use $IFS to split
6656
6657 {execute_cmd,jobs,test,findcmd,input,make_cmd,redir,shell}.c
6658 builtins/mkbuiltins.c,builtins/{fc,history,source,umask}.def
6659 lib/sh/netconn.c
6660 lib/termcap/termcap.c
6661 lib/readline/histfile.c
6662 - make sure all inclusions of <sys/file.h> are protected by
6663 HAVE_SYS_FILE_H
6664
6665 bashline.c
6666 - don't turn off rl_filename_completion_desired in
6667 attempt_shell_completion if the partial pathname contains a slash.
6668 This still doesn't solve the problem of partial pathname completion
6669 starting with a directory in the current directory without a
6670 leading `./'. There's no way to tell the difference between that
6671 and a file found in $PATH (which may contain `.') at the point that
6672 attempt_shell_completion acts
6673
6674 10/18
6675 -----
6676 locale.c
6677 - don't set lc_all to the default locale when LC_ALL is being unset
6678 - new function, reset_locale_vars(), called to recompute the correct
6679 locale variable values when LC_ALL is unset
6680 - changed set_lang to not set LC_ALL, which it never should have been
6681 doing in the first place, and to maintain a local variable `lang'
6682 corresponding to $LANG
6683 - change get_locale_var to use the precedence posix.2 specifies:
6684 LC_ALL overrides individual variables; LANG, if set, is the default
6685 - change set_locale_var to call get_locale_var to get the appropriate
6686 value for the variable being set or unset
6687 - call get_locale_var instead of using passed value in set_locale_var
6688 to get the defaulting and precedence right
6689
6690 lib/readline/nls.c
6691 - new function, _rl_get_locale_var(), which does the same thing as
6692 locale.c:get_locale_var(), with the right precedence and defaulting,
6693 using sh_get_env_value to get the right bash variable values
6694 - if HAVE_SETLOCALE is defined, _rl_init_eightbit first calls
6695 _rl_get_locale_var to get the right value for LC_CTYPE, and uses
6696 that in the call to setlocale. If _rl_get_locale_var returns NULL,
6697 call setlocale() to get the current international environment, and,
6698 finally, if that returns null, call setlocale with a second argument
6699 of "" to force the implementation's `native' environment
6700
6701 pcomplete.c
6702 - change gen_wordlist_completions to dequote the text before comparing
6703 it against the expanded word list
6704 - changed gen_matches_from_itemlist to do the same thing
6705
6706 bashline.c
6707 - new global function, bash_dequote_word, calls bash_dequote_filename
6708 on the text passed. Used by the programmable completion code
6709
6710 lib/readline/histfile.c
6711 - make sure that whenever read_history_range returns a non-zero value
6712 that it sets errno to some useful value
6713
6714 10/19
6715 -----
6716 variables.c
6717 - COMP_WORDBREAKS is now a dynamic variable, mirroring value of
6718 rl_completer_word_break_characters. Makes sure that the variable
6719 always points to dynamic memory if it's not null or the readline
6720 default
6721
6722 bashline.c
6723 - change enable_hostname_completion to manage a dynamic value of
6724 rl_completer_word_break_characters, since assignments to
6725 COMP_WORDBREAKS can change its value unpredictably
6726
6727 lib/readline/{complete.c,readline.h}
6728 - rl_completer_word_break_characters no longer has `const' attribute
6729
6730 bashline.c
6731 - clean up necessary places due to rl_completer_word_break_characters
6732 no longer being `const'
6733
6734 doc/{bash.1,bashref.texi}
6735 - document new COMP_WORDBREAKS variable
6736
6737 10/21
6738 -----
6739 print_cmd.c
6740 - fix indirection_level_string to handle the case where the decoded
6741 $PS4 is null without seg faulting
6742
6743 10/22
6744 -----
6745 builtins/shift.def
6746 - make sure that there is actually an argument when reporting a shift
6747 count that exceeds the number of positional paramters and
6748 shift_verbose is enabled
6749
6750 lib/readline/rltty.c
6751 - change SET_SPECIAL to call a new function, set_special_char, since
6752 it contains a block. It's called infrequently, so the performance
6753 impact of making it a function should be negligible, and it helps
6754 debugging
6755
6756 10/29
6757 -----
6758 bashline.c
6759 - make sure the editor in VI_EDIT_COMMAND and EMACS_EDIT_COMMAND is
6760 quoted; it might contain spaces (e.g., `emacs -nw')
6761
6762 aclocal.m4
6763 - cache ac_cv_rl_version in RL_LIB_READLINE_VERSION macro
6764
6765 configure.in
6766 - change logic that sets RL_INCLUDEDIR so that it doesn't try to set
6767 a bogus include path if the argument to --with-installed-readline
6768 is `yes' -- helps with cross-compiling
6769
6770 lib/readline/histexpand.c
6771 - fix history_tokenize_word so that it handles <( and >( better
6772
6773 10/30
6774 -----
6775 redir.c
6776 - fix write_here_string so it handles the case where `herestr' expands
6777 to NULL without seg faulting
6778
6779 10/31
6780 -----
6781 mailcheck.c
6782 - reverse logic flip from bash-2.05 that handled systems that don't
6783 change the atime when the mailbox is accessed; make sure the file
6784 is bigger before we report new mail. This is the case in the vast
6785 majority of cases. Reported by jim@jtan.com
6786
6787 11/5
6788 ----
6789 parse.y
6790 - change action for `for x; { list; }' and corresponding `select'
6791 production to use \"$@\" instead of just $@, as it is with all the
6792 other actions
6793
6794 11/9
6795 ----
6796 parse.y
6797 - new flag for parse_matched_pair: P_DQUOTE, indicating that the
6798 pair of characters being matched is between double quotes
6799 - parse_matched_pair now passes P_DQUOTE down to recursive calls:
6800 if the open char to be matched is a `"' or the passed-in flags
6801 include P_DQUOTE, set the local `rflags' variable to P_DQUOTE and
6802 pass `rflags' down to recursive calls
6803 - if `rflags' includes P_DQUOTE, don't try to ansiexpand $'...' or
6804 locale expand $"..."; consistent with other quoting constructs
6805
6806 11/11
6807 -----
6808 doc/{bash.1,bashref.texi}
6809 - explicitly note that variables referenced in arithmetic expressions
6810 without using `$' evaluate to 0 if they are null or unset
6811 - note that a null variable value evaluates to 0 when used in an
6812 arithmetic context, like when a variable with the `-i' attribute is
6813 assigned a null value
6814 - document the ${!prefix@} expansion as equivalent to ${!prefix*}
6815
6816 11/12
6817 -----
6818 doc/{bash.1,bashref.texi}
6819 - note that the value of an arithmetic expression is as in C
6820 - change the wording to note that `arithmetic evaluation' (not
6821 arithmetic expansion, which has a different meaning) is performed
6822 on the value assigned to a variable whose integer attribute is set
6823
6824 11/13
6825 -----
6826 execute_cmd.c
6827 - fix execute_disk_command so it calls exit() after printing the error
6828 message in a restricted shell context if the shell has already forked
6829 (nofork != 0 && there are no pipes)
6830
6831 11/19
6832 -----
6833 builtins/type.def
6834 - don't report on aliases unless expand_aliases is set and the parser
6835 is performing alias expansion; changed tests/type.tests and
6836 tests/type.right accordingly
6837
6838 11/25
6839 -----
6840 general.c
6841 - fix for full pathnames including drive letters on cygwin from
6842 Corinna (convert to posix-style paths, which the rest of the
6843 code handles much better)
6844
6845 lib/readline/text.c
6846 - fixes to overwrite mode from jimmy@is-vn.bg:
6847 o in _rl_overwrite_char, do the overwrite mode self-insert
6848 as one group, even when overwriting more than 1 char
6849 o in _rl_overwrite_char, do the insert before the delete so
6850 that an undo positions the cursor on the character restored,
6851 not to the right of it
6852 o in _rl_overwrite_rubout, don't do rl_insert_char(' ') unless
6853 rl_point < rl_end. Since overwrite-mode self-insert acts as
6854 in insert-mode when at eol, make rubout behave like
6855 insert-mode rubout
6856
6857 11/30
6858 -----
6859 lib/readline/misc.c
6860 - call rl_replace_line with `1' as second parameter if we're going to
6861 immediately overwrite the undo list
6862
6863 lib/readline/search.c
6864 - in make_history_line_current, use _rl_replace_text to make the line
6865 replacement an undoable operation. Affects all non-incremental
6866 search functions.
6867
6868 parse.y
6869 - make behavior introduced on 11/9 dependent on extended_quote
6870 variable, controllable by extquote shopt option. Default setting is
6871 on for backwards compatibility
6872
6873 builtins/shopt.def
6874 - new `extquote' option to control extended_quote variable
6875
6876 12/3
6877 ----
6878 jobs.c
6879 - change message printed when attempting to put a background job in
6880 the background with `bg' to include the job id and make the
6881 statement declarative
6882
6883 12/10
6884 -----
6885 bashhist.h
6886 - define explicit flag values for history_control
6887
6888 variables.c
6889 - change sv_history_control to use new flag values
6890 - change sv_history_control to parse $HISTCONTROL as a colon-separated
6891 list of values for the history_control variable
6892
6893 bashhist.c
6894 - change check_history_control to use new flag values and restructure
6895 to remove case statement
6896 - new function hc_erasedups(line); removes all entries matching LINE
6897 from the history list
6898 - call hc_erasedups() from check_add_history after we've determined
6899 that we're saving the line
6900
6901 doc/{bash.1,bashref.texi}
6902 - documented new options available for $HISTCONTROL and that it can
6903 be a colon-separated list of history control options
6904
6905 12/11
6906 -----
6907 subst.c
6908 - fix pat_subst() to not increment `e' (pointer to the end of the
6909 matched portion of the string) until after we're sure we're going
6910 around the loop again; fixes problem with empty replacements for
6911 a pattern that doesn't match (bug reported by Don Coleman
6912 <don@coleman.org>)
6913
6914 12/17
6915 -----
6916 lib/readline/display.c
6917 - fixes to multibyte redisplay from jir@yamato.ibm.com (Jiro SEKIBA):
6918 o speed up calculation of first difference between old and new
6919 lines in the common case
6920 o don't try to see if we're in the middle of a multbyte char
6921 in update_line (we'll see how this one works out)
6922
6923 12/18
6924 -----
6925 doc/bashref.texi
6926 - make it clear that the `command-list' function definition may be
6927 terminated by an ampersand before the closing brace
6928
6929 12/28
6930 -----
6931 redir.c
6932 - set `expanding_redir' flag when expanding words in a redirection
6933
6934 subst.c
6935 - new function, exp_jump_to_top_level(), to do any word expansion
6936 cleanup before a call to jump_to_top_level from within that file;
6937 sets expanding_redir back to 0 before jump_to_top_level
6938
6939 variables.c
6940 - in find_variable(), don't call find_variable_internal with a second
6941 parameter of 1 if expanding_redir is non-zero
6942 - in find_variable_internal(), don't search the temporary env if
6943 subshell_environment includes SUBSHELL_FORK (indicating a simple
6944 command) and expanding_redir is non-zero
6945
6946 parse.y
6947 - increment line_number when we read a \<newline> pair
6948
6949 array.c
6950 - added array_unshift_element and array_shift_element (which just call
6951 array_shift and array_rshift, respectively), for bash debugger
6952 support
6953
6954 1/4/2003
6955 --------
6956 doc/{bash.1,bashref.texi}
6957 - note in the section describing the execution environment passed to
6958 children that subshells inherit shell functions marked for export
6959 - note in the section describing shell functions the possibility
6960 that exported functions may result in two entries in the environment
6961 with the same name
6962
6963 parse.y
6964 - when pushing an alias expansion onto the pushed_string list, append
6965 a space to the expanded definition to make the parser's lookahead
6966 work without using the `mustpop' hack in shell_getc
6967
6968 1/8
6969 ---
6970 shell.c
6971 - change calls to exit() with EX_USAGE as a parameter to use
6972 EX_BADUSAGE instead, since EX_USAGE is defined as 258 and is
6973 technically out of range
6974
6975 1/14
6976 ----
6977 aclocal.m4
6978 - check for the termcap functions in libc first: if we don't have
6979 to link in another library, let's not do it
6980 - change the test for mbstate_t to use AC_TRY_COMPILE instead of
6981 AC_TRY_RUN
6982
6983 doc/{bash.1,bashref.texi}
6984 - document that bash turns line editing off if environment variable
6985 EMACS is set to `t' when it starts up
6986
6987 doc/bash.1
6988 - minor change to give the ftp url for the latest version of bash in
6989 the bug reports section
6990
6991 lib/readline/histexpand.c
6992 - in get_history_event, cast a couple of `const char *' variables to
6993 `char *' in function call parameter lists to avoid compiler warnings
6994
6995 1/21
6996 ----
6997 builtins/cd.def
6998 - change `cd -' so it prints the current working directory after a
6999 successful chdir even when the shell is not interactive
7000
7001 1/31
7002 ----
7003 lib/readline/doc/rltech.texinfo
7004 - clarified exactly what is meant by the term `application-specific
7005 completion function', made its use consistent, and documented
7006 what variables are changed before such a function is called
7007
7008 lib/readline/input.c
7009 - new function, _rl_pushed_input_available(), returns non-zero if
7010 there are characters in the input queue managed by rl_get_char
7011 and _rl_unget_char
7012
7013 lib/readline/rlprivate.h
7014 - new extern declaration for _rl_pushed_input_available
7015
7016 lib/readline/callback.c
7017 - change rl_callback_read_char to check _rl_pushed_input_available
7018 and loop if there's something there, so characters don't languish
7019 until more keyboard input is read
7020
7021 execute_cmd.c
7022 - new variable, last_command_exit_signal, non-zero if
7023 last_command_exit_value result from wait_for was result of a signal
7024
7025 nojobs.c
7026 - keep track of whether or not a given pid was killed by a signal with
7027 a new flag in the pid_list array
7028 - new function int find_termsig_by_pid(pid_t pid) to get the
7029 terminating signal, if any, for a particular pid
7030 - new function int get_termsig(WAIT status) returns the terminating
7031 signal corresponding to status
7032 - set last_command_exit_signal in wait_for and the various wait_for_xx
7033 functions
7034
7035 jobs.c
7036 - new functions, process_exit_signal and job_exit_signal, return the
7037 signal that killed a given process or job, if a signal caused its
7038 death
7039 - set last_command_exit_signal in wait_for by calling job_exit_signal
7040 or process_exit_signal appropriately
7041
7042 subst.c
7043 - don't resend SIGINT to ourselves unless last_command_exit_signal is
7044 SIGINT and last_command_exit_value == 128 + SIGINT. This fixes the
7045 $(exit 130) bug reported by Paul Jarc
7046
7047 expr.c
7048 - new function, expr_bind_variable, calls bind_int_variable and
7049 then stupidly_hack_special_variables. This fixes the
7050 `let OPTIND=1' bug
7051
7052 bashline.c
7053 - change history_and_alias_expand_line and shell_expand_line to call
7054 history_expand_line_internal so calls to pre_process_line are
7055 localized
7056 - change history_expand_line_internal and cleanup_expansion_error to
7057 temporarily turn off hist_verify before calling pre_process_line
7058 to avoid the effects described by teirllm@dms.auburn.edu
7059
7060 parse.y
7061 - don't unconditionally turn off PST_ALEXPNEXT in push_string. This
7062 fixes the multiple alias expansion bug reported by Paul Jarc.
7063
7064 lib/readline/vi_mode.c
7065 - change rl_vi_subst to push `l' instead of ` ' -- it should be
7066 equivalent, but this has been reported to fix a problem in multibyte
7067 locales
7068
7069 lib/readline/readline.h
7070 - new state flag value RL_STATE_TTYCSAVED, indicates that save_tty_chars
7071 has been called. Since it's only used and visible internally, it's
7072 undocumented
7073
7074 lib/readline/rltty.h
7075 - changed all of the members of _rl_tty_chars struct to `unsigned char'
7076
7077 lib/readline/rltty.c
7078 - set the RL_STATE_TTYCSAVED after save_tty_chars is called
7079 - new function, rl_tty_unset_default_bindings(), resets bindings for
7080 everything rl_tty_set_default_bindings() messes with back to
7081 rl_insert, so rl_tty_set_default_bindings can be called again with
7082 possible changes
7083 - new function that does the bulk of the work for
7084 rltty_set_default_bindings: _rl_bind_tty_special_chars()
7085 - change prepare_terminal_settings so that it can track changes to the
7086 terminal special chars made by stty(1): unset the bindings with
7087 rl_tty_unset_default_bindings before calling save_tty_chars, and
7088 _rl_tty_set_default_bindings after, with the new values from
7089 get_tty_settings(). This implements a long-standing request, most
7090 recently made by Tim Waugh of Red Hat.
7091
7092 lib/readline/readline.h
7093 - extern declaration for rl_tty_unset_default_bindings()
7094
7095 lib/readline/readline.c
7096 - new function, reset_default_bindings, calls
7097 rl_tty_unset_default_bindings() to reset the terminal special chars
7098 back to rl_insert and then read the new ones
7099
7100 lib/readline/doc/rltech.texinfo
7101 - documented rl_tty_unset_default_bindings()
7102
7103 2/1
7104 ---
7105 [prayers and condolences to the families of the space shuttle crew members]
7106
7107 aclocal.m4
7108 - add checks for mbrtowc and mbrlen in BASH_CHECK_MULTIBYTE
7109 - new check, BASH_FUNC_CTYPE_NONASCII, checks whether or not the ctype
7110 functions handle non-ascii characters correctly
7111
7112 config.h.in
7113 - add HAVE_MBRTOWC and HAVE_MBRLEN
7114 - add NO_MULTIBYTE_SUPPORT for new configure argument
7115 - add CTYPE_NON_ASCII
7116
7117 config-bot.h, lib/readline/rlmbutil.h
7118 - make sure that mbrtowc, mbrlen, and wcwidth are all present before
7119 turning on HANDLE_MULTIBYTE
7120 - turn off multibyte chars if NO_MULTIBYTE_SUPPORT is defined
7121
7122 configure.in
7123 - new argument --enable-multibyte (enabled by default), allows
7124 multibyte support to be turned off even on systems that support it
7125
7126 lib/readline/chardefs.h
7127 - define NON_NEGATIVE as 1 if CTYPE_NON_ASCII is defined
7128
7129 2/3
7130 ---
7131 config.h.in
7132 - add HAVE_WCTOMB
7133
7134 aclocal.m4
7135 - check for wctomb in BASH_CHECK_MULTIBYTE
7136
7137 2/4
7138 ---
7139 lib/readline/vi_mode.c
7140 - in _rl_vi_change_mbchar_case, make sure the result from wctomb()
7141 is NULL-terminated before trying to insert it with rl_insert_text()
7142
7143 2/5
7144 ---
7145 lib/readline/display.c
7146 - fix to update_line to avoid problems on systems with multibyte
7147 characters when moving between history lines when the new line
7148 has more glyphs but fewer bytes (twaugh@redhat.com)
7149
7150 lib/readline/vi_mode.c
7151 - use wcrtomb() instead of wctomb() in _rl_vi_change_mbchar_case
7152
7153 pcomplete.c
7154 - fix init_itemlist_from_varlist to handle the case where the
7155 `varlist' is NULL
7156
7157 doc/{bash.1,bashref.texi}
7158 - clarified when a simple command may fail without the shell exiting
7159 when -e is set
7160
7161 2/13
7162 ----
7163 parse.y
7164 - when bash is started with --nolineediting, ignore \[ and \] when
7165 decoding the prompt string
7166
7167 subst.c
7168 - fix remove_quoted_nulls so that a string with a CTLESC appearing
7169 after a CTLNUL (which was removed) does not leave characters in
7170 the string inappropriately
7171
7172 2/14
7173 ----
7174 builtins/common.h
7175 - new flag value for parse_and_execute(): SEVAL_RESETLINE, which
7176 allows the caller to specify whether or not the internal idea
7177 of the line number should be reset to 1
7178
7179 builtins/evalstring.c
7180 - parse_and_execute() now tells push_string to reset the line
7181 number only if the SEVAL_RESETLINE flag is set by the caller
7182
7183 2/15
7184 ----
7185 builtins/evalfile.c
7186 - pass SEVAL_RESETLINE from _evalfile() to parse_and_execute()
7187
7188 subst.c
7189 - if the shell is currently interactive, pass SEVAL_RESETLINE to
7190 parse_and_execute() when doing command substitution
7191
7192 jobs.c
7193 - add SEVAL_RESETLINE to parse_and_execute while running SIGCHLD trap
7194
7195 command.h
7196 - add `line' members to case_com, for_com, select_com
7197 - rearranged order of members in some of the command structs, so
7198 `flags' and `line' are first
7199 - added a `source_file' member to the function_def struct; keeps
7200 track of where the function was defined
7201
7202 doc/Makefile.in
7203 - add some new suffix rules: .dvi.ps
7204
7205 doc/{bash.1,bashref.texi}
7206 - added text to the description of the `trap' builtin tightening up
7207 the language describing when the ERR trap will be run
7208
7209 error.c
7210 - if $BASH_SOURCE (internally-maintained) exists, use BASH_SOURCE[0]
7211 in get_name_for_error if the shell is not interactive
7212
7213 array.h
7214 - new convenience defines: array_push and array_pop
7215
7216 variables.c
7217 - change get_funcname to return this_shell_function->name only if
7218 arrays have not been compiled into the shell
7219 - change init_funcname_var to initialize FUNCNAME as an array variable
7220 if we have arrays
7221 - new function: get_self(SHELL_VAR *self), a degenerate `dynamic_value'
7222 function for dynamic variables
7223 - new function: init_dynamic_array_var(), a generic dynamic array
7224 variable initializer to handle the common case
7225 - use init_dynamic_array_var() instead of explicit init_dirstack_var()
7226 - use init_dynamic_array_var() instead of explicit init_groups_var()
7227 - new dynamic array variables: BASH_ARGC, BASH_ARGV, BASH_SOURCE,
7228 BASH_LINENO, initialized with init_dynamic_array_var
7229
7230 shell.c
7231 - initialize BASH_LINENO, BASH_SOURCE, FUNCNAME in open_shell_script
7232
7233 {execute_cmd,trap}.c
7234 - take out trap_line_number, since parse_and_execute doesn't reset the
7235 line number any more when running the trap commands
7236
7237 make_cmd.c
7238 - augment make_function_def to get source file name and call
7239 bind_function_def to save the entire FUNCTION_DEF
7240
7241 variables.c
7242 - new hash table: shell_function_defs, keeps table of shell function
7243 definitions including source file and line number info corresponding
7244 to shell_functions table
7245 - new functions: find_function_def and bind_function_def to manage
7246 the shell_function_defs hash table
7247 - new function: unbind_function_def to remove a function definition
7248 from the shell_function_defs table (right now uncalled)
7249
7250 variables.h
7251 - extern declaration for bind_function_def, find_function_def
7252 - new extern declaration for unbind_function_def
7253
7254 execute_cmd.c
7255 - in function prologue and epilogue, push and pop FUNCNAME,
7256 BASH_SOURCE, and BASH_LINENO information
7257
7258 dispose_cmd.c
7259 - broke the code that disposes a FUNCTION_DEF out into two new
7260 functions: dispose_function_def and dispose_function_def_contents
7261
7262 dispose_cmd.h
7263 - new extern declarations for dispose_function_def_contents and
7264 dispose_function_def
7265
7266 copy_cmd.c
7267 - move body of copy_function_def (other than allocating a new
7268 FUNCTION_DEF) to copy_function_def_contents
7269 - make sure to copy the new source_file member of a function_def in
7270 copy_function_def_contents
7271 - copy_function_def is no longer static, copy_function_def_contents
7272 is not either
7273
7274 command.h
7275 - new extern declaration for copy_function_def_contents and
7276 copy_function_def
7277
7278 parse.y
7279 - keep a stack of line numbers where case, select, and for commands
7280 start, with a maximum nesting level of 128; increment when reading
7281 word after `for', `select' or `case' in read_token_word; decrement
7282 in grammar actions after parsing a complete for, arith_for, select,
7283 or case command
7284 - create for, case, arith_for, and select commands with an extra
7285 line number (word_lineno[word_top]) argument
7286
7287 make_cmd.c
7288 - make_for_or_select, make_for_command, make_case_command, and
7289 make_select_command all take an extra `line_number' argument
7290
7291 make_cmd.h
7292 - corresponding changes to extern declarations for those functions
7293
7294 2/16
7295 ----
7296 {execute_cmd,shell,variables}.c
7297 - follow each call to remember_args with a call to push_args or
7298 pop_args to manage the BASH_ARGV and BASH_ARGC arrays. Only set
7299 when the shell is started to run shell script or runs a shell
7300 function. Doesn't handle `set' or `shift' yet, nor `source'.
7301
7302 execute_cmd.c
7303 - keep track of the level of subshells with a new variable, manipulated
7304 in execute_in_subshell
7305 - set currently_executing_command in execute_command_internal(),
7306 even if we're running a trap
7307 - better line number management when executing simple commands,
7308 conditional commands, for commands in execute_command_internal()
7309 and the various functions that implement the commands
7310 (execute_cond_command, execute_for_command, execute_etc.)
7311
7312 variables.c
7313 - new dynamic variable BASH_SUBSHELL, with new get_subshell and
7314 assign_subshell functions to manipulate it
7315 - new functions push_args (WORD_LIST *list) and pop_args (void) to
7316 manage the BASH_ARGC and BASH_ARGV dynamic array variables
7317
7318 variables.h
7319 - new extern declarations for push_args and pop_args
7320
7321 builtins/evalfile.c
7322 - in _evalfile, do appropriate things to the FUNCNAME, BASH_ARGV,
7323 BASH_ARGC, BASH_SOURCE, and BASH_LINENO variables
7324
7325 support/mksignames.c
7326 - add another fake signal for `trap'; make NSIG+2 == `RETURN'
7327
7328 trap.c
7329 - _run_trap_internal now returns an int: the exit value of the command
7330 run as the result of the trap
7331 - run_debug_trap now returns an int: the exit value of the command
7332 run as the result of the trap
7333 - RETURN is a new special trap
7334 - new function: set_return_trap(char *command) interface for the rest
7335 of the shell, like set_{debug,error}_trap
7336 - new function: run_return_trap()
7337 - command substitution and other child processes don't inherit the
7338 return trap
7339
7340 trap.h
7341 - new extern declaration for set_return_trap() and run_return_trap
7342 - new defines for RETURN_TRAP; increment BASH_NSIG
7343 - change extern declaration for run_debug_trap() since it now returns
7344 an int
7345
7346 shell.c
7347 - new invocation long option: --debugger, turns on debugging and
7348 sets internal `debugging_mode' variable
7349
7350 execute_cmd.c
7351 - new code to save return trap when executing a shell function, so
7352 shell functions don't inherit it
7353 - run debug trap before binding the variable and running the action
7354 list in a `for' command
7355 - run debug trap before binding the selection variable and running
7356 the query in a `select' command
7357 - run debug trap before running matcher in a `case' command
7358
7359 builtins/set.def
7360 - new `set -o functrace' (set -T), causes DEBUG trap to be inherited
7361 by shell functions
7362 - new `set -o errtrace' (set -E), causes ERR trap to be inherited
7363 by shell functions
7364
7365 flags.c
7366 - new flags -E and -T, control error_trace_mode and
7367 function_trace_mode respectively
7368
7369 flags.h
7370 - new extern declarations for error_trace_mode and function_trace_mode
7371
7372 2/17
7373 ----
7374 doc/bashref.texi
7375 - changed the `dircategory' as per Karl Berry's suggestion
7376
7377 doc/texinfo.tex
7378 - update to version of 2003/02/04 from texinfo.org
7379
7380 support/texi2dvi
7381 - update to version 1.14 from texinfo-4.5 distribution
7382
7383 2/20
7384 ----
7385 support/config.{guess,sub}
7386 - update to versions of 2002/11/30
7387
7388 lib/readline/doc/manvers.texinfo
7389 - renamed to version.texi to match other GNU software
7390 - UPDATE-MONTH variable is now `UPDATED-MONTH'
7391
7392 lib/readline/doc/{hist,rlman,rluserman}.texinfo
7393 - include version.texi
7394
7395 doc/version.texi
7396 - new file, with standard stuff matching other GNU distributions
7397
7398 {doc,lib/readline/doc}/Makefile.in
7399 - include right stuff for `version.texi'
7400
7401 lib/readline/doc/{rluserman,rlman,hist}.texinfo
7402 - use @copying and @insertcopying and @ifnottex instead of @ifinfo
7403 - add FDL as an appendix entitled `Copying This Manual'
7404
7405 lib/readline/doc/{rltech,rluser,hstech,hsuser}.texi
7406 - changed the suffix from `texinfo' to `texi'
7407
7408 lib/readline/doc/{rlman,rluserman}.texinfo, doc/bashref.texi
7409 - include rltech.texi,rluser.texi,hstech.texi, and hsuser.texi
7410
7411 lib/readline/doc/Makefile.in,doc/Makefile.in
7412 - made appropriate changes for {{rl,hs}tech,{rl,hs}user}.texi
7413
7414 lib/readline/doc/{rlman,rluserman}.texinfo
7415 - changed the suffix from `texinfo' to `texi'
7416
7417 lib/readline/doc/hist.texinfo
7418 - renamed to history.texi
7419
7420 2/25
7421 ----
7422 pathnames.h.in
7423 - moved pathnames.h here so value of DEBUGGER_START_FILE can be
7424 substituted by configure
7425
7426 aclocal.m4
7427 - added AM_PATH_LISPDIR for debugger
7428
7429 configure.in
7430 - added some variables: `bashvers', `relstatus' to use info in more
7431 than one place
7432 - call AM_PATH_LISPDIR
7433 - new option: --enable-debugger, sets DEBUGGER cpp option
7434 - new option with AC_ARG_VAR: DEBUGGER_START_FILE
7435 - make `pathnames.h' a file generated by configure
7436
7437 Makefile.in
7438 - add rule to create pathnames.h
7439
7440 builtins/declare.def
7441 - added extra line number and source file name to `declare -F' output
7442 if `--debugger' is used at startup
7443
7444 builtins/evalfile.c
7445 - call run_return_trap from source_file before returning the result
7446 from _evalfile()
7447
7448 execute_cmd.c
7449 - call run_return_trap in execute_function before restoring the old
7450 context
7451
7452 builtins/source.def
7453 - arrange to save and restore DEBUG traps when sourcing files if
7454 function_trace_mode (set -o functrace) is not set
7455
7456 print_cmd.c
7457 - broke print_for_command, print_select_command, print_case_command
7458 into two functions each: one to print the `header' and one for
7459 the body
7460 - print_cond_command is no longer static
7461 - print_arith_command now takes a WORD_LIST *, since it doesn't
7462 actually do anything with the ARITH_COM it's passed except print
7463 the enclosed WORD_LIST
7464 - print_arith_command is no longer static
7465
7466 externs.h
7467 - extern declarations for print_{for,select,case}_command_head,
7468 print_cond_command, print_arith_command
7469
7470 {.,builtins,lib/sh}/Makefile.in
7471 - corrected dependencies on pathnames.h, since it's now created in
7472 the build directory
7473
7474 3/5
7475 ---
7476 lib/glob/glob.c
7477 - handle alloca() failing (it's supposed to return NULL)
7478 - use malloc() (with its attendent bookkeeping) instead of alloca()
7479 in glob_filename()
7480
7481 subst.c
7482 - check whether shell_glob_filename returns NULL in
7483 glob_expand_word_list
7484 - change parameter_brace_expand_rhs to handle cases like
7485 ${a[2]:=value} by properly creating the array element instead of a
7486 variable named `a[2]' (reported by <opengeometry@yahoo.ca>)
7487
7488 variables.c
7489 - change bind_int_variable to use valid_array_reference instead
7490 of looking for `['
7491
7492 lib/readline/vi_mode.c
7493 - check for `a' in _rl_vi_done_inserting so the text inserted by an
7494 `a' command can be reinserted with a `.'
7495
7496 lib/readline/readline.c
7497 - when entering vi insertion mode in readline_internal_setup(), make
7498 sure that _rl_vi_last_key_before_insert is set to `i' so that undo
7499 groups and redo work better (reported by <opengeometry@yahoo.ca>)
7500
7501 lib/glob/sm_loop.c
7502 - handle ?(...) in a pattern immediately following a `*', instead of
7503 ignoring the `(' and treating the `?' as a single-char match, as
7504 long as FNM_EXTFLAG is set (reported by <anderson110@poptop.llnl.gov>)
7505
7506 aclocal.m4
7507 - new test for presence of struct timezone, BASH_STRUCT_TIMEZONE
7508
7509 config.h.in
7510 - add HAVE_STRUCT_TIMEZONE
7511
7512 configure.in
7513 - call BASH_STRUCT_TIMEZONE
7514
7515 execute_cmd.c
7516 - don't try to use `struct timezone' in calls to gettimeofday unless
7517 HAVE_STRUCT_TIMEZONE is defined; use (void *)NULL otherwise
7518
7519 3/20
7520 ----
7521 execute_cmd.c
7522 - new variable, the_printed_command_except_trap, saves the command
7523 being executed before a trap is executed, for the debugger
7524
7525 trap.c
7526 - if in debugging mode, let command substitutions and other child
7527 processes inherit the DEBUG and ERR traps if the `functrace'
7528 (which is really a bad name, given this semantic) or `errtrace'
7529 options, respectively, have been set
7530
7531 shell.c
7532 - local_pending_command renamed to command_execution_string; no longer
7533 static
7534
7535 variables.c
7536 - new dynamic variable, BASH_COMMAND, set to the command string
7537 currently executing, or the one that caused a trap to execute
7538 (mapped to the_printed_command_except_trap)
7539 - new variable, BASH_EXECUTION_STRING, set to the argument to the
7540 -c invocation option, if the shell was started that way
7541
7542 3/22
7543 ----
7544 execute_cmd.c
7545 - changed execute_for_command, eval_arith_for_expr,
7546 execute_select_command, execute_arith_command, execute_cond_command,
7547 execute_simple_command to implement new DEBUG trap semantics
7548 for the debugger: if the DEBUG trap commands return a non-zero
7549 status and debugging_mode is non-zero, we skip the command to be
7550 executed
7551
7552 trap.c
7553 - change run_debug_trap for the debugger: if we're in the debugger
7554 and the DEBUG trap returns 2 while we're in a function or sourced
7555 script, we force a `return'
7556
7557 shell.c
7558 - new function, start_debugger(), that sources the debugger start file
7559 and turns the debugger on
7560
7561 builtins/shopt.def
7562 - new settable option, `extdebug', turns on debugging_mode, as if
7563 --debugger had been supplied at invocation (but does not source
7564 debugger startup file)
7565
7566 trap.c
7567 - make sure that run_exit_trap arranges for `returns' to come back
7568 there, too, so a `return' executed by an `exit' invoked within a
7569 shell function behaves correctly
7570
7571 support/shobj-conf
7572 - change darwin/MacOS X stanza based on advice from mac os x developers
7573
7574 lib/sh/mailstat.c
7575 - set the atime member of the synthesized stat struct to 0 if `cur/'
7576 is empty, rather than leaving it undefined
7577
7578 3/24
7579 ----
7580 builtins/caller.def
7581 - new builtin to provide a call stack for the debugger
7582
7583 builtins/evalfile.c
7584 - added a second `flags' argument to source_file()
7585 - new flag value for flags argument to _evalfile(): FEVAL_NOPUSHARGS.
7586 If included in flags arg, it means to not manipulate the BASH_ARGV
7587 and BASH_ARGC arrays
7588
7589 builtins/common.h
7590 - change prototype for source_file()
7591
7592 builtins/source.def
7593 - add flag value to call to source_file(): set to 1 if we replaced
7594 the positional parameters
7595 - add call to push_args if additional arguments supplied to the
7596 source builtin
7597 - add call to pop_args in maybe_pop_dollar_vars
7598
7599 execute_cmd.c
7600 - run the debug trap in execute_function so the debugger can stop
7601 before the first command in a function body is executed
7602 - modify subshell_level before executing a builtin or function in a
7603 subshell
7604 - print `for', `select', `case' command heads when set -x is enabled
7605
7606 print_cmd.c
7607 - `xtrace_print_word_list' now takes an additional flags argument,
7608 which, if non-zero, says to print indirection_level_string()
7609 - new functions to print for, select, and case command heads when
7610 set -x is enabled
7611 - add spaces after `((' and before `))' in xtrace_print_arith_command
7612
7613 externs.h
7614 - changed extern declaration for xtrace_print_word_list
7615 - new declarations for xtrace_print_{for,case,select}_command_head()
7616
7617 subst.c
7618 - modify subshell_level when executing a command substitution
7619
7620 3/25
7621 ----
7622 execute_cmd.c
7623 - use `line_number' in executing_line_number instead of looking into
7624 the current command if it's a simple command; rearrange code to
7625 make this simpler to compile in and out
7626 - need to save and restore value of currently_executing_command around
7627 calls to debug trap and return trap in execute_function
7628
7629 make_cmd.c
7630 - make sure make_arith_for_command() disposes the WORD_LIST * it is
7631 passed, since nothing else does and it's not used directly
7632
7633 3/28
7634 ----
7635 Makefile.in
7636 - fixed dependencies for `error.o' on shell.h and version.h -- makes
7637 parallel makes (gmake -j 4) work correctly
7638
7639 doc/{bash.1,bashref.texi}
7640 - documented all new features added to support the debugger
7641
7642 4/1
7643 ---
7644 lib/sh/shquote.c
7645 - make sure CTLESC and CTLNUL characters are escaped with CTLESC
7646 by sh_double_quote, sh_backslash_quote and
7647 sh_backslash_quote_for_double_quotes
7648 Fixes vulnerability reported by svdb@stack.nl
7649
7650 shell.h
7651 - new `pipestatus' member of sh_parser_state_t, to save and restore
7652 $PIPESTATUS
7653
7654 parse.y
7655 - changes to save_parser_state and restore_parser_state to save and
7656 restore $PIPESTATUS
7657
7658 builtins/read.def
7659 - add a call to word_list_remove_quoted_nulls before assigning the
7660 word list read from standard input to an array variable. Fixes
7661 bug reported by holzhey@ppprs1.phy.tu-dresden.de
7662
7663 4/3
7664 ---
7665 execute_cmd.c
7666 - in execute_null_command, if redirections are supplied, make sure
7667 things like 3</etc/passwd are undone immediately, since they're
7668 being done in the current shell
7669 - functions now inherit the RETURN trap only if function tracing is
7670 on for that function or globally
7671
7672 lib/readline/misc.c
7673 - in rl_replace_from_history, don't force rl_replace_line to clear
7674 the undo_list, since it might point directly at an undo list
7675 from a history entry (to which we have no handle)
7676
7677 4/4
7678 ---
7679 trap.c
7680 - initialize RETURN_TRAP stuff appropriately in initialize_traps()
7681 - let command substitutions inherit the RETURN trap if we're in
7682 the debugger and function tracing has been enabled
7683
7684 redir.c
7685 - do_redirections and do_redirection_internal now take a single
7686 flags argument instead of multiple boolean flags
7687
7688 redir.h
7689 - new #defines for flags argument to do_redirection{s,_internal}
7690
7691 execute_cmd.c
7692 - change all calls to do_redirection to use new flag values
7693
7694 parse.y
7695 - new function, free_pushed_string_input(), an external interface to
7696 clear the pushed_string list (alias expansion)
7697 - new define SHOULD_PROMPT to say when it's OK to call prompt_again
7698 (if the shell is currently interactive and is reading input from
7699 the terminal or readline)
7700 - make sure shell_getc and read_secondary_line only call prompt_again
7701 if SHOULD_PROMPT evaluates to true
7702 - prompt_again shouldn't do anything if the shell is currently in the
7703 middle of expanding a multiline alias, since we won't be printing a
7704 prompt anyway
7705
7706 externs.h
7707 - new extern declaration for free_pushed_string_input()
7708
7709 execute_cmd.c
7710 - command_substitute and process_substitute now call
7711 free_pushed_string_input because they shouldn't deal with any
7712 partial alias expansion the parent shell may have started
7713
7714 4/5
7715 ---
7716 braces.c
7717 - added {x..y} brace expansion, shorthand for {x,x+1,x+2,...,y}:
7718 x, y can be integers or single characters; the sequence can be
7719 ascending or descending; increment is always 1. Beware that
7720 something like {a..A} can lead to non-letters.
7721
7722 4/7
7723 ---
7724 subst.c
7725 - change extract_delimited_string and extract_dollar_brace_string to
7726 return NULL on an expansion error when no_longjmp_on_fatal_error
7727 is set, so the calling functions don't assume that the expansion
7728 was successful (primarily the prompt expansion and completion code)
7729
7730 doc/{bash.1,bashref.texi}
7731 - documented new sequence generation feature of brace expansion
7732
7733 4/8
7734 ---
7735 lib/sh/strstr.c
7736 - replacement for strstr(3), in case the C library doesn't provide it
7737
7738 configure.in
7739 - check for strstr, add to LIBOBJS if not found
7740
7741 array.c
7742 - array_walk now takes a third void * argument; it's passed to `func'
7743 as its second argument
7744
7745 array.h
7746 - change sh_ae_map_func_t prototype to add void * second argument
7747
7748 4/10
7749 ----
7750 array.c
7751 - new function: array_keys_to_word_list, returns a list of indices for
7752 a given array
7753
7754 array.h
7755 - new extern declaration for array_keys_to_word_list
7756
7757 arrayfunc.c
7758 3 - new function: char *array_keys(), returns a string with keys for a
7759 given array, with the appropriate quoting
7760
7761 arrayfunc.h
7762 - new extern declaration for array_keys
7763
7764 subst.c
7765 - code to implement ksh93-like ${!array[@]} expansion (array[*] works,
7766 too), which expands to all the keys (indices) of ARRAY
7767
7768 doc/{bash.1,bashref.texi}
7769 - documented new ${!array[@]} expansion
7770
7771 4/19
7772 ----
7773 builtins/setattr.def
7774 - remove any mention of the `-n' option from readonly builtin's short
7775 and long documentation
7776
7777 pcomplib.c
7778 - fix progcomp_insert to increase the refcount on the `cs' argument
7779 before calling hash_insert -- fixes the problem of multiple calls
7780 to progcomp_insert with the same compspec
7781
7782 doc/bash.1
7783 - add mention of characters that inhibit history expansion when found
7784 immediately following an unquoted `!'
7785
7786 bashline.c
7787 - convert the code conditionally compiled in by the NO_FORCE_FIGNORE
7788 #define to something runtime-tunable with the `force_fignore'
7789 variable (opposite sense). force_fignore is 1 by default
7790
7791 builtins/shopt.def
7792 - new tunable `shopt' option: `force_fignore', controls force_fignore
7793 variable and behavior of FIGNORE handling
7794
7795 lib/readline/complete.c
7796 - new variable, _rl_complete_show_unmodified, causes completer to list
7797 possible completions if more than one completion and partial
7798 completion cannot be done
7799 - new value for what_to_do argument to rl_complete_internal, `@',
7800 indicating that we want the show-unmodified behavior
7801 - change rl_completion_type to return `@' when appropriate
7802
7803 lib/readline/bind.c
7804 - new bindable variable, show-all-if-unmodified, which controls value
7805 of _rl_complete_show_unmodified
7806
7807 lib/readline/rlprivate.h
7808 - extern declaration for _rl_complete_show_unmodified
7809
7810 lib/readline/doc/rluser.texi
7811 - documented show-all-if-unmodified
7812
7813 lib/readline/doc/rltech.texi
7814 - documented new `@' value for second argument to rl_complete_internal
7815 - documented new return value from rl_completion_type
7816
7817 4/22
7818 ----
7819 lib/readline/signals.c
7820 - in rl_set_signal, set sa_flags to SA_RESTART for SIGWINCH, if we
7821 have POSIX signals -- this is what most applications expect, and
7822 they're not prepared to deal with EINTR
7823
7824 4/25
7825 ----
7826 bashline.c
7827 - take out attempts to suppress readline filename completion when
7828 attempting command completion and there is a directory with the
7829 same name in the current directory. #if 0'd for now; maybe make
7830 it conditional later
7831
7832 error.c
7833 - new variable, gnu_error_format, causes non-interactive errors with
7834 line numbers to be printed in the `gnu style' (filename:lineno:)
7835 instead of the `shell style' (filename: line lineno:) by
7836 error_prolog and parser_error
7837
7838 version.h,support/mkversion
7839 - don't put extern function declarations into created version.h any
7840 more
7841
7842 version.c,externs.h
7843 - add extern declarations for show_shell_version() and
7844 shell_version_string(), since they're no longer in version.h
7845 (this backs out change from 9/10/2001)
7846
7847 shell.h
7848 - don't include version.h
7849
7850 Makefile.in
7851 - remove unneeded dependencies on version.h -- only version.o
7852 needs it now
7853
7854 builtins/shopt.def
7855 - new option `gnu_errfmt', changes error messages with line numbers
7856 to use the `standard' gnu format
7857
7858 pcomplete.h
7859 - new COPT_BASHDEFAULT and COPT_PLUSDIRS defines
7860
7861 bashline.c
7862 - if the COPT_BASHDEFAULT flag is set, try the rest of the bash
7863 default completions if a compspec with that flag set generates
7864 no matches
7865 - broke bash completions out into separate function:
7866 bash_default_completion(const char *text, int start, int end,
7867 int qc, int in_command_position); change attempt_shell_completion
7868 to call it
7869
7870 bashline.h
7871 - new extern declaration for bash_default_completion
7872
7873 builtins/complete.def
7874 - added code to compgen to call bash_default_completion if a compspec
7875 with the COPT_BASHDEFAULT flag set generates no matches from the
7876 programmable completion options
7877
7878 doc/{bash.1,bashref.texi}
7879 - document new `gnu_errfmt' shopt option
7880
7881 doc/bash.1,lib/readline/doc/rluser.texi
7882 - document new `-o bashdefault' option to complete and compgen
7883
7884 4/26
7885 ----
7886 pcomplete.c
7887 - if a compspec has the COPT_PLUSDIRS flag set, generate any
7888 directory name completions and add them to the set of possible
7889 completions as the last thing in gen_compspec_completions
7890
7891 builtins/complete.def
7892 - add new `-o plusdirs' option to complete and compgen; means to
7893 do directory name completion in addition to other actions
7894 specified by the compspec, and do it last
7895
7896 5/12
7897 ----
7898 copy_cmd.c
7899 - fix copy_{for,select,case}_command to copy the line member
7900
7901 5/13
7902 ----
7903 lib/readline/rlmbutil.h,include/shmbutil.h
7904 - new #define MB_INVALIDCH, evaluates to true if return value from
7905 mbrtowc or mbrlen denotes an invalid multibyte character
7906 - new #define MB_NULLWCH, evaluates to true if return value from
7907 mbrtowc or mbrlen denotes a null multibyte character
7908
7909 lib/readline/complete.c
7910 - new function, fnwidth(), returns printed length of a filename,
7911 correctly handling multibyte characters
7912 - new function, fnprint(), displays a filename on rl_outstream
7913 correctly handling multibyte characters
7914 - use fnwidth() instead of simple strlen() for length calculations
7915 in display_matches
7916
7917 lib/readline/{display,mbutil}.c
7918 - use MB_INVALIDCH and MB_NULLWCH as appropriate
7919
7920 5/21
7921 ----
7922 configure.in
7923 - turn off the builtin malloc on GNU/FreeBSD systems (GNU userland,
7924 FreeBSD kernel)
7925
7926 5/24
7927 ----
7928 pcomplete.c
7929 - in programmable_completions, copy the compspec before using it to
7930 generate the possible completions, allowing the completion for the
7931 command to be changed by the compspec itself without causing a
7932 core dump because the shell frees freed memory (reported by
7933 marcus.harnish@gmx.net)
7934
7935 parse.y
7936 - in shell_getc, don't call notify_and_cleanup in an interactive shell
7937 unless the shell is currently reading from the terminal and would
7938 print a prompt. This fixes programmable completions printing job
7939 notifications (reported by r.d.green@lancaster.ac.uk)
7940 - use SHOULD_PROMPT macro consistently
7941
7942 shell.c
7943 - use get_string_value instead of getenv when looking up $TERM and
7944 $EMACS to see whether the shell is running under emacs
7945 - check for `TERM=dumb' as well as `EMACS=t' to decide whether or
7946 not to turn off command-line editing in emacs shell windows
7947 (reported by jik@kamens.brookline.ma.us)
7948
7949 5/28
7950 ----
7951 expr.c
7952 - save and restore the `evalbuf' context, since evalexp can be
7953 called recursively (e.g. a[b[c]])
7954
7955 5/29
7956 ----
7957 builtins/common.c
7958 - in display_signal_list, when displaying for `kill -l' in posix mode,
7959 display signal names without the `SIG' prefix
7960
7961 doc/bashref.texi
7962 - documented changed to posix mode behavior of kill -l
7963
7964 builtins/kill.def
7965 - changed the error message printed when argument is not a pid or
7966 job id
7967
7968 doc/{bash.1,bashref.texi}
7969 - fixed a slight inconsistency in the different sections describing
7970 the `promptvars' option
7971
7972 doc/Makefile.in
7973 - new rule to create `bash.info' from `bashref.info' by running sed
7974 to change the internal references. This makes the installed
7975 bash.info work right
7976 - make the install target install bash.info after it's been modified
7977 from bashref.info
7978
7979 5/30
7980 ----
7981 builtins/cd.def
7982 - after testing with ferror(), call clearerr if ferror() evaluates
7983 to true
7984
7985 execute_cmd.c
7986 - call clearerr(stdout) after executing a builtin or function,
7987 before restoring any redirections
7988
7989 bashhist.c
7990 - initialize history_comment_char in bash_history_initialize
7991
7992 builtins/alias.def
7993 - if posix mode is enabled, and the `-p' option is not supplied, don't
7994 list aliases with a preceding `alias ', as POSIX.2 specifies
7995
7996 doc/bashref.texi
7997 - note new posix mode behavior of displaying alias names and values
7998 - note new posix mode behavior of trap builtin not checking first
7999 argument to be a possible signal specification
8000 - note new posix mode behavior of `kill' not accepting signal names
8001 with a leading `SIG'
8002
8003 include/stdc.h,lib/readline/rlstdc.h
8004 - don't check the __STRICT_ANSI__ define when deciding whether or not
8005 to #undef __attribute__
8006
8007 trap.[ch]
8008 - decode_signal and signal_object_p take an additional flags arg to
8009 satisfy POSIX.2 signal name translation requirements
8010 - change decode_signal to honor the new DSIG_NOCASE (match case-
8011 insensitively) and DSIG_SIGPREFIX (allow signal specifications
8012 with the `SIG' prefix) flags
8013
8014 builtins/{common.c,{trap,kill}.def}
8015 - change calls to decode_signal to add the new argument with
8016 appropriate values. For kill, POSIX.2 says case-insensitive without
8017 the `SIG' prefix. For trap, POSIX.2 says applications may decode
8018 case-insensitively and with the SIG prefix
8019
8020 builtins/trap.def
8021 - when in posix mode, don't check for the first argument being a
8022 possible signal spec and revert the signal handling to the
8023 original disposition
8024
8025 6/1
8026 ---
8027 shell.h
8028 - new MATCH_STARSUB define, to tell the callers of the various pattern
8029 substitution and removal functions that call string_list to treat
8030 "$*" and "${array[*]}" appropriately
8031 subst.c
8032 - if get_var_and_type encounters an array variable subscripted by `*'
8033 or `$*', return VT_STARSUB or'd into the variable type value
8034 - callers of get_var_and_type check for VT_STARSUB in the returned type
8035 this will fix problems with ${*...} not being separated with the
8036 first character of $IFS when double-quoted
8037 - in parameter_brace_patsub, set MATCH_STARSUB if VT_STARSUB is set by
8038 get_var_and_type
8039 - change pos_params_pat_subst to call string_list_dollar_star if
8040 the match flags include MATCH_STARSUB
8041 - change parameter_brace_substring to call array_subrange with an
8042 additional argument indicating the character indexing the array
8043
8044 array.c
8045 - change array_patsub to join the modified array elements with the
8046 first character of $IFS if MATCH_STARSUB is set in the match flags
8047 passed in
8048 - array_subrange now takes an additional argument indicating the
8049 index type -- used to separate with first char of $IFS if the
8050 index char is `*' and the expression is double-quoted
8051
8052 array.h
8053 - change prototype declaration of array_subrange to add additional arg
8054
8055 6/2
8056 ---
8057 doc/FAQ
8058 - merged in some updates about POSIX from Andrew Josey
8059
8060 6/3
8061 ---
8062 bashjmp.h
8063 - new value for jump_to_top_level: ERREXIT
8064
8065 {eval,shell,subst,trap}.c,builtins/evalstring.c
8066 - ERREXIT is (for now) equivalent to EXITPROG as a value from
8067 jump_to_top_level
8068
8069 6/9
8070 ---
8071 doc/bash.1,lib/readline/doc/readline.3
8072 - documented new `show-all-if-unmodified' readline variable
8073
8074 6/14
8075 ----
8076 lib/readline/history.c
8077 - new function, histdata_t free_history_entry (HIST_ENTRY *h),
8078 frees H and its line, returning the application-specific data
8079 - use free_history_entry where appropriate
8080
8081 lib/readline/history.h
8082 - extern declaration for free_history_entry()
8083
8084 lib/readline/doc/{history.3,hstech.texi}
8085 - document free_history_entry
8086
8087 6/16
8088 ----
8089 lib/readline/readline.[ch]
8090 - changed varions defines for readline/history library versions to 5.0
8091
8092 subst.c
8093 - pass information about whether or not an indirectly-expanded variable
8094 contains ${array[@]}, ${array[*]}, $@, or $*
8095 - new function, chk_atstar, performs checks for ${array[@]},
8096 ${array[*]}, $@, or $* for the parameter_brace_expand* functions and
8097 sets flags (passed as args) to the results
8098 - call chk_atstar from parameter_brace_expand_indir and
8099 parameter_brace_expand
8100
8101 6/28
8102 ----
8103 doc/{bash.1,bashref.texi}
8104 - clarified that (...) commands are executed in a subshell environment
8105
8106 6/30
8107 ----
8108 lib/readline/bind.c
8109 - fix a problem with parsing nested if statements in inputrc files
8110 (fix from dimakar@yahoo.com)
8111
8112 7/3
8113 ---
8114 {jobs,nojobs}.c
8115 - fix places that use the return value from strsignal() to check
8116 for NULL return values using a new function, j_strsignal()
8117
8118 builtins/kill.def
8119 - removed JOB_CONTROL restriction; kill is now available as a builtin
8120 when the shell is built without job control
8121
8122 7/10
8123 ----
8124 jobs.c
8125 - some systems have WIFCONTINUED but not WCONTINUED; separate the
8126 #defines
8127
8128 7/14
8129 ----
8130 lib/readline/history.h
8131 - new `timestamp' member of a HIST_ENTRY
8132 - extern declarations for add_history_time and history_get_time
8133
8134 lib/readline/doc/{history.3,hstech.texi}
8135 - document add_history_time and history_get_time
8136
8137 lib/readline/history.c
8138 - implementations of history_get_time and add_history_time
8139 - change add_history to initialize the timestamp information
8140 - change free_history_entry to free the timestamp
8141 - change replace_history_entry to duplicate the timestamp
8142 - change history_total_bytes to add the memory taken by the time
8143 stamps
8144
8145 bashhist.c,builtins/history.def
8146 - use free_history_entry where appropriate
8147
8148 lib/readline/histfile.c
8149 - changes to read_history_range to deal with new history file format
8150 including timestamps
8151 - changes to history_do_write to write out the timestamp information
8152 - changes to history_truncate_file to understand the timestamp
8153 information
8154
8155 7/22
8156 ----
8157 doc/{bash.1,bashref.texi}
8158 - fixed function declaration documentation to specify that any compound
8159 command may be used as the function body, not just a group command
8160
8161 7/23
8162 ----
8163 lib/readline/histfile.c
8164 - don't allocate space for null timestamps in history_do_write, and
8165 don't write out null timestamp entries
8166
8167 parse.y
8168 - fix CHECK_FOR_RESERVED_WORD to call time_command_acceptable() and
8169 return TIME if the token is "time" and `time' is legal in that
8170 context
8171
8172 7/29
8173 ----
8174 lib/sh/fmtulong.c
8175 - include <inttypes.h> for possible definitions of intmax_t, uintmax_t
8176 (reported by ro@techfak.uni-bielefeld.de)
8177
8178 7/30
8179 ----
8180 parse.y
8181 - remove checking for `time' reserved word from special_case_tokens();
8182 use regular mechanism in CHECK_FOR_RESERVED_WORD. This allows `time'
8183 to be aliased. (Reported by Glenn Morris
8184 <gmorris+gmane@ast.cam.ac.uk>)
8185
8186 7/31
8187 ----
8188 lib/readline/history.h
8189 - extern declaration for history_write_timestamps
8190
8191 lib/readline/histfile.c
8192 - don't write timestamps to the history file in history_do_write
8193 unless history_write_timestamps is set to non-zero by the application
8194 (set to 0 by default)
8195
8196 lib/readline/doc/{hstech.texi,history.3}
8197 - document history_write_timestamps
8198
8199 variables.[ch]
8200 - new special variable function, HISTTIMEFORMAT; special function
8201 sets history_write_timestamps to 1 if HISTTIMEFORMAT is set
8202
8203 8/4
8204 ---
8205 builtins/history.def
8206 - added support for printing time stamps based on the value of the
8207 HISTTIMEFORMAT variable when displaying history entries
8208
8209 doc/{bash.1,bashref.texi}
8210 - added description of new HISTTIMEFORMAT variable
8211
8212 8/5
8213 ---
8214 config-top.h
8215 - remove /usr/ucb from any default paths
8216
8217 mailcheck.c
8218 - make_default_mailpath now returns NULL if DEFAULT_MAIL_DIRECTORY
8219 is not defined
8220 - remember_mail_dates now returns if make_default_mailpath returns
8221 NULL
8222
8223 config-bot.h
8224 - reorganized the sections; provide an explicit placeholder for
8225 builders to #undef any feature defines they don't want that
8226 configure creates for them, like the default mail path
8227
8228 8/9
8229 ---
8230 config.h.in
8231 - add HAVE_REGEX_H, HAVE_REGCOMP, HAVE_REGEXEC for detection of POSIX.2
8232 regular expression functions
8233 - add COND_REGEXP define to enable and disable the =~ operator for
8234 matching extended regular expressions in [[...]] commands
8235
8236 configure.in
8237 - new option, --enable-cond-regexp, enables =~ and code to perform
8238 regular expression matching in [[...]]
8239
8240 config-bot.h
8241 - undef COND_REGEXP if the OS doesn't provide posix regexp support
8242
8243 doc/bashref.texi
8244 - documnent new --enable-cond-regexp option to configure
8245
8246 8/18
8247 ----
8248 support/shobj-conf
8249 - support for shared objects on FreeBSD-gnu (from Robert Millan)
8250
8251 8/25
8252 ----
8253 lib/sh/shmatch.c
8254 - new file, shell interface to posix extended regular expression
8255 matching
8256
8257 externs.h
8258 - new extern declarations for functions in shmatch.c
8259
8260 execute_cmd.c
8261 - incorporate code into execute_cond_node that does extended regular
8262 expression matching for the =~ operator
8263
8264 parse.y
8265 - add `=~' to the list of binary operators accepted by the conditional
8266 command parser
8267
8268 doc/{bash.1,bashref.texi}
8269 - documented =~ conditional binary operator and the BASH_REMATCH
8270 variable
8271
8272 8/27
8273 ----
8274 lib/readline/display.c
8275 - take multibyte characters into account when looking for quoted
8276 substrings on which to do completion (fix from jir@yamato.ibm.com)
8277
8278 lib/readline/util.c
8279 - fix typo in _rl_strpbrk
8280
8281 lib/readline/rldefs.h
8282 - use function version of _rl_strpbrk in multibyte locales, because
8283 it understands to skip over special characters in multibyte
8284 character sequences
8285
8286 8/28
8287 ----
8288 jobs.c
8289 - in wait_for, check for window size changes if a job that exits due
8290 to a signal or is stopped was in the foreground, not just if it's
8291 the current job
8292
8293 9/10
8294 ----
8295 support/config.{guess,sub}
8296 - add support to recognize FreeBSD running on the amd64
8297
8298 subst.c
8299 - if the new `fail_glob_expansion' variable is non-zero, globbing that
8300 fails to match anything causes an expansion error
8301
8302 builtins/shopt.def
8303 - new `failglob' expansion: if enabled, failed globs cause an error
8304
8305 test/shopt.right
8306 - take `failglob' into account
8307
8308 doc/{bash.1,bashref.texi}
8309 - documented new `failglob' option and its effects
8310
8311 9/12
8312 ----
8313 findcmd.c
8314 - fix file_status to treat the mode bits and uid right -- in particular,
8315 don't assume the `other' bits always apply. Bug reported by
8316 <moseley@hank.org>; fix inspired by <carlo@alinoe.com>
8317
8318 command.h
8319 - new word flag: W_NOCOMSUB, meaning to not perform command
8320 substitution on a word
8321
8322 subst.c
8323 - new flag for param_expand: PF_NOCOMSUB. If non-zero, $(...)
8324 command substitutions are not expanded, but returned unchanged
8325 - change expand_word_internal to pass through `` command substitutions
8326 unchanged if (word->flags & W_NOCOMSUB) != 0
8327 - change expand_word_internal to pass PF_NOCOMSUB to param_expand
8328 if (word->flags & W_NOCOMSUB) != 0
8329
8330 builtins/shopt.def
8331 - rename set_interactive_comments to set_shellopts_after_change, which
8332 more accurately reflects its purpose
8333
8334 syntax.h
8335 - add a define for isblank() in case the system doesn't provide one
8336
8337 jobs.c
8338 - change raw_job_exit_status to understand `pipefail', using the new
8339 `pipefail_opt' variable
8340
8341 flags.[ch]
8342 - declare pipefail_opt
8343 - reset pipefail_opt to 0 in reset_shell_flags
8344
8345 builtins/set.def
8346 - add `set -o pipefail' and document it in help output
8347
8348 doc/{bash.1,bashref.texi}
8349 - document `set -o pipefail' and the effect of the pipefail option
8350
8351 mksyntax.c,syntax.h
8352 - sh_syntaxtab is no longer `const'
8353 - new generated variable, sh_syntabsiz, set to number of entries in
8354 sh_syntaxtab, written to generated syntax.c
8355
8356 locale.c
8357 - new function, locale_setblanks(), sets each member of the current
8358 locale's <blank> class to have the CSHBRK flag in sh_syntaxtab
8359
8360 9/17
8361 ----
8362 arrayfunc.c
8363 - change convert_var_to_array to not set array[0] to a NULL value
8364 (if the scalar variable had no value; e.g., after being created
8365 with `local arrayvar')
8366
8367 lib/readline/display.c
8368 - save and restore the value of prompt_invis_chars_first_line in
8369 rl_{save,restore}_prompt, and reinitialize it to 0 before printing
8370 something in the message area
8371
8372 lib/readline/bind.c
8373 - new functions: rl_bind_keyseq_if_unbound_in_map(ks, func, kmap);
8374 binds key sequence KS to function FUNC in keymap KMAP, and
8375 rl_bind_keyseq_if_unbound (ks, func); binds key sequence KS to
8376 function FUNC in the current keymap
8377
8378 lib/readline/readline.h
8379 - extern function declarations for rl_bind_keyseq_if_unbound_in_map and
8380 rl_bind_keyseq_if_unbound
8381
8382 lib/readline/{readline,terminal}.c
8383 - _rl_bind_if_unbound -> rl_bind_keyseq_if_unbound
8384
8385 lib/readline/{bind.c,rlprivate.h}
8386 - remove _rl_bind_if_unbound
8387
8388 9/18
8389 ----
8390 lib/readline/doc/rltech.texi
8391 - document rl_bind_keyseq_if_unbound and
8392 rl_bind_keyseq_if_unbound_in_map
8393
8394 9/19
8395 ----
8396 lib/readline/bind.c
8397 - new functions rl_bind_key_if_unbound_in_map and
8398 rl_bind_key_if_unbound; analogous to (and implemented in terms of)
8399 keyseq functions
8400 - rl_bind_keyseq_in_map: a new function, equivalent to rl_set_key
8401 (which remains for backwards compatibility); changed callers to
8402 use it
8403 - new function, rl_bind_keyseq, equivalent to rl_bind_keyseq_in_map
8404 with a third argument of _rl_keymap
8405
8406 lib/readline/readline.h
8407 - extern declarations for rl_bind_key_if_unbound_in_map and
8408 rl_bind_key_if_unbound
8409 - extern declarations for rl_bind_keyseq_in_map and rl_bind_keyseq
8410
8411 lib/readline/doc/rltech.texi
8412 - document rl_bind_keyseq and rl_bind_keyseq_in_map
8413
8414 configure.in
8415 - require at least readline-5.0
8416
8417 config-bot.h
8418 - define SYS_SIGLIST_DECLARED if it's not defined, but
8419 HAVE_DECL_SYS_SIGLIST is, to deal with differences between
8420 autoconf versions
8421
8422 bashline.c
8423 - use rl_bind_key_if_unbound_in_map when binding bash keybindings in
8424 initialize_readline(), so inputrc files can override them
8425
8426 9/22
8427 ----
8428 lib/readline/histsearch.c
8429 - do better bounds checking for history_offset and history_length in
8430 history_search_internal
8431
8432 builtins/history.def
8433 - in delete_last_history(), make sure we don't leave the history
8434 offset longer than the history length after calling delete_histent
8435
8436 9/23
8437 ----
8438 jobs.c
8439 - small change to notify_of_job_status so job status messages get
8440 printed even if the shell was started to run `-c command'. The
8441 old behavior was intentional, but I cannot remember why, so we'll
8442 try it the other way for a while (debian bash bug #211693)
8443
8444 9/24
8445 ----
8446 jobs.c
8447 - slightly modify change from 9/23 so that jobs started to run
8448 command substitutions don't print job status messages
8449
8450 9/25
8451 ----
8452 lib/readline/search.c
8453 - when reading a non-incremental search string from the terminal,
8454 use a separate undo list rather than chaining it to the undo list
8455 from the rest of the line, since the whole undo list will get
8456 freed when the search string is complete
8457
8458 lib/readline/readline.h
8459 - changed the defines guarding the stdarg prototype for rl_message to
8460 match what's actually used in display.c, where it's defined
8461
8462 9/26
8463 ----
8464 [bash-3.0-alpha released]
8465
8466 9/29
8467 ----
8468 lib/sh/shmatch.c
8469 - fix to build correctly when arrays are not compiled into the shell
8470
8471 subst.c
8472 - fix command substitution to run any exit trap defined in the
8473 command substitution before returning; the exit trap is not inherited
8474 from the calling shell
8475
8476 lib/readline/shell.c
8477 - change sh_set_lines_and_columns to free the memory allocated and
8478 passed to setenv(), since setenv is specified by POSIX to allocate
8479 new memory and copy its arguments
8480
8481 jobs.c
8482 - change logic in make_child so that every child process attempts to
8483 set the terminal's process group to the pipeline's process group
8484 when PGRP_PIPE is defined, just like when it's undefined. This is
8485 reported to fix some tricky synchronization problems on Red Hat
8486 Enterprise Linux 3. Fix from Ernie Petrides <petrides@redhat.com>.
8487
8488 9/30
8489 ----
8490 builtins/printf.def
8491 - tescape no longer needs a `trans_squote' argument, since it's the
8492 same as the `sawc' argument. The `sawc' argument now means to do
8493 the %b argument processing if non-null
8494 - fix processing of octal constants for %b arguments (\0 followed by
8495 up to three octal digits) and other escape sequences (\ followed by
8496 up to three octal digits)
8497 - hex constants `\xHHH' are now allowed to contain any positive
8498 number of digits; previously they were restricted to two [removed]
8499 - allow two new escape sequences: \" and \?, for compatibility with
8500 ksh93 and ANSI C
8501
8502 doc/{bash.1,bashref.texi}
8503 - documented processing that printf performs for arguments to %b
8504 escape sequences
8505
8506 lib/sh/strtrans.c
8507 - add \" and \? to escape sequences recognized by `echo -e'
8508
8509 10/1
8510 ----
8511 version.c
8512 - use snprintf instead of sprintf if configure tells us we have it
8513
8514 10/3
8515 ----
8516 subst.c
8517 - in list_remove_pattern, take into account the fact that one of the
8518 list elements may be NULL, and don't free the result of
8519 remove_pattern() without checking
8520 - in remove_pattern, return savestring(param) if *param == '\0',
8521 since callers expect to free() non-null return values
8522
8523 10/4
8524 ----
8525 subst.c
8526 - change verify_substring_values to make it clearer that the first
8527 offset deals with array indices and the second deals with numbers
8528 of elements, when doing array subranges with ${a[@]:e1:e2}
8529
8530 array.c
8531 - change array_subrange to make it explicit that the second offset
8532 argument is a count of the desired number of elements, not an
8533 ending index. This deals with sparse arrays correctly.
8534
8535 10/6
8536 ----
8537 variables.c
8538 - fix memory leak in assign_in_env
8539
8540 10/8
8541 ----
8542 subst.c
8543 - in parameter_brace_expand, check that the last characters are `]}'
8544 before checking for ${!array[@]}
8545
8546 execute_cmd.c,builtins/source.def
8547 - push and pop the args (BASH_ARGV and BASH_ARGC) when executing a
8548 shell function or sourcing a script only when in debugging mode
8549
8550 10/11
8551 -----
8552 arrayfunc.c
8553 - make sure array_variable_name returns values for the SUBP and LENP
8554 arguments if they're non-null, since callers expect to use them
8555 even if the array subscript is bad
8556
8557 error.c
8558 - call exit_shell instead of sh_exit from parser_error and
8559 report_error so the right things happen (running exit trap, doing
8560 the right interactive cleanup, etc.)
8561
8562 lib/readline/complete.c
8563 - new variable, rl_completion_quote_character, set to any quote char
8564 readline thinks it finds before any application completion
8565 function is called
8566 - new variable, rl_completion_suppress_quote, settable by an
8567 application-specific completion function. If set to non-zero, the
8568 completion code does not append a closing quote in append_to_match
8569
8570 lib/readline/readline.h
8571 - extern declarations for rl_completion_quote_character and
8572 rl_completion_suppress_quote
8573
8574 bashline.c
8575 - set rl_completion_suppress_quote in command_subst_completion_function
8576 because that would be inserted before any closing "`" or ")", which
8577 is somewhat disconcerting
8578
8579 lib/readline/doc/rltech.texi
8580 - documented rl_completion_suppress_quote and
8581 rl_completion_quote_character
8582
8583 10/13
8584 -----
8585 bashhist.c
8586 - use sv_histchars instead of setting history_comment_char directly in
8587 bash_initialize_history so assignments to $histchars made in
8588 ~/.bashrc are honored
8589
8590 10/21
8591 -----
8592 trap.c
8593 - make sure run_exit_trap sets `running_trap' appropriately
8594 - new variable, trap_saved_exit_value, set to last_command_exit_value
8595 before running any trap commands; available to the rest of the
8596 shell; use trap_saved_exit_value to replace some function-local
8597 variables
8598
8599 builtins/exit.def
8600 - if the shell is running the exit trap, and no argument is given
8601 to `exit', use trap_saved_exit_value as the exit status instead
8602 of the last command exit value (which could be the previous command
8603 run in the exit trap), as required by POSIX.2
8604
8605 10/25
8606 -----
8607 doc/{bash.1,bashref.texi}
8608 - add `alias' to the list of documented `assignment statement' builtins
8609
8610 11/1
8611 ----
8612 doc/bash.1
8613 - remove the `.' from the sample $PATH value
8614
8615 parse.y
8616 - make sure parse_compound_assignment prompts with $PS2 if it reads
8617 a newline while parsing the compound assignment statement. Bug
8618 reported by Stephane Chazelas
8619 - parse_string_to_word_list now takes a new second argument: `int flags'
8620 - new parser state flag: PST_COMPASSIGN; indicates that the shell is
8621 parsing a compound assignment statement
8622 - parse_string_to_word_list turns on PST_COMPASSIGN if `flags' arg
8623 has low bit set
8624 - turn PST_COMPASSIGN on and off in parse_compound_assignment
8625
8626 externs.h
8627 - change prototype declaration for parse_string_to_word_list
8628
8629 arrayfunc.c
8630 - change call to parse_string_to_word_list to add new flags arg
8631
8632 general.c
8633 - assignment() takes a new `flags' second argument
8634 - if `flags' is non-zero, accept `[' as a legal assignment statement
8635 starter character (for parsing compound array assignments)
8636
8637 general.h
8638 - add new argument to prototype declaration for assignment()
8639
8640 parse.y,{subst,variables}.c, builtins/{setattr,declare}.def
8641 - change calls to assignment() (parse.y calls with flags == 1 when
8642 parser_state inlcudes PST_COMPASSIGN)
8643
8644 arrayfunc.c
8645 - in assign_array_var_from_string(), don't treat an expanded word
8646 of the form [ind]=value specially unless the W_ASSIGNMENT flag is
8647 set. This means that words that are the result of expansions but
8648 happen to have the same format as compound assignment statement
8649 words will not be treated as such. For instance
8650
8651 v='[12]=foobar'
8652 a=( $v )
8653
8654 will result in a[0]='[12]=foobar' instead of a[12]=foobar. This
8655 is closer to how `regular' assignment statements are treated and
8656 compatible with ksh93. Bug reported by Stephane Chazelas
8657
8658 shell.c
8659 - new --protected argument, disables command substitution when used
8660 with --wordexp (like --wordexp, it remains undocumented)
8661 - change run_wordexp to turn on the W_NOCOMSUB flag in each word
8662 to be expanded if protected_mode is set
8663
8664 11/7
8665 ----
8666 doc/{bash.1,bashref.texi}
8667 - clarified the language concerning inherited signal dispositions and
8668 when traps are run
8669
8670 support/shobj-conf
8671 - slight changes to the darwin (Mac OS X) stanza for MacOS X 10.3
8672 (for the readline shared library builds, which shares this script)
8673
8674 lib/readline/histexpand.c
8675 - change to make `^' behave as equivalent to word one, as csh does,
8676 and as the documentation states
8677
8678 lib/readline/display.c
8679 - in update_line, make sure to use col_lendiff in all calculations
8680 where the cursor position is concerned (like when calculating
8681 the value of _rl_last_c_pos). Fixes bug reported by Andreas
8682 Schwab
8683
8684 11/12
8685 -----
8686 trap.c
8687 - make _run_trap_internal catch `return' builtin longjmps and clean
8688 up before longjmping on to where the return was intended to go
8689 (fixes bug with not turning off SIG_INPROGRESS flag when `return'
8690 executed in trap command)
8691
8692 11/18
8693 -----
8694 builtins/cd.def
8695 - in posix mode, set errno to ENOTDIR if canonicalization fails,
8696 unless the canonicalization functions leave it set to ENOENT
8697
8698 11/25
8699 -----
8700 make_cmd.c
8701 - in make_simple_command, don't blindly dereference element.redirect
8702
8703 parse.y
8704 - the list_terminator production now has an `int' value so it can be
8705 used in other grammar productions
8706 - add a rule that makes `time' on a line by itself time a null
8707 command (this is iffy)
8708
8709 11/28
8710 -----
8711 subst.c
8712 - change the pattern substitution code (${var//pat/rep}) to use the
8713 same pattern expansion function (getpattern()) as the pattern
8714 removal expansions. This has the effect of no longer performing
8715 quote removal on the pattern before trying to match it. This
8716 fixes an incompatibility with ksh93 reported on comp.unix.shell
8717
8718 nojobs.c
8719 - add replacement function for siginterrupt on the off chance that a
8720 system has posix signals but lacks siginterrrupt
8721
8722 lib/readline/display.c
8723 - fix from Tim Waugh at Red Hat to speed up inserting characters into
8724 long lines in a UTF-8 environment by optimizing the calculation of
8725 the first difference between old and new lines by checking to see
8726 whether the old line is a subset of the new
8727
8728 11/29
8729 -----
8730 lib/malloc/stats.c
8731 - break code that opens file (and interprets %p) into separate function
8732 _imalloc_fopen(char *s, char *fn, char *def, char *defbuf, size_t defsiz)
8733 for use by rest of library
8734 - default stats file is now `stats.PID'
8735
8736 lib/malloc/trace.c
8737 - new function, malloc_set_tracefn (char *s, char *fn), sets tracing
8738 to the file named by FN (with %p interpolated as the pid), using
8739 some default if FN is NULL
8740
8741 lib/malloc/shmalloc.h
8742 - new extern declaration for malloc_set_tracefn
8743
8744 12/4
8745 ----
8746 execute_cmd.c
8747 - combined several common strings from do_piping() into one
8748 dup_error() function
8749
8750 builtins/common.[ch]
8751 - new function, `sh_notbuiltin(s)' prints error message about s not
8752 being a shell builtin
8753
8754 builtins/{builtin,enable}.def
8755 - call sh_notbuiltin instead of using literal string
8756
8757 {arrayfunc,expr,error}.c
8758 - use one string variable for `bad array subscript' error message; use
8759 in calls to various error reporting functions
8760
8761 Makefile.in
8762 - add variables for localedir and the PACKAGE_* variables, auto-set
8763 by configure
8764
8765 configure.in
8766 - un-cache values for gettext, textdomain, and bindtextdomain if they're
8767 not in libc but in libintl so the right variables get set
8768
8769 bashintl.h
8770 - add necessary defines for marking strings to be translated using
8771 gettext
8772
8773 locale.c
8774 - set textdomain and directory in set_default_locale
8775 - don't call textdomain with the value of $TEXTDOMAIN, since we don't
8776 want to override the default domain ("bash")
8777 - don't call bindtextdomain unless default_domain already has a value
8778 - when translating $"..." strings, use dgettext with the script's
8779 default domain (value of $TEXTDOMAIN)
8780
8781 12/9
8782 ----
8783 builtins/mkbuiltins.c
8784 - include "bashintl.h" in the generated "builtins.c"
8785
8786 support/{config.rpath,mkinstalldirs}
8787 - new files to support gettext i18n
8788
8789 ABOUT-NLS
8790 - new readme file for gettext internationalization
8791
8792 po/{Makefile.in.in,Rules-quot,boldquot.sed,en@boldquot.header,en@quot.header,insert-header.sin,quot.sed,remove-potcdate.sin}
8793 po/{POTFILES.in,bash.pot}
8794 - new files for gettext
8795
8796 lib/intl
8797 - new directory, with libintl stuff from gettext
8798
8799 aclocal.m4
8800 - add m4 files from gettext distribution needed by libintl
8801
8802 configure.in
8803 - create po/Makefile.in and lib/intl/Makefile in AC_OUTPUT
8804 - add call to AM_GNU_GETTEXT to initialize gettext stuff
8805
8806 Makefile.in
8807 - use mkinstalldirs instead of mkdirs in the `installdirs' target
8808 - changes for intl/ and po/ subdirectories in build and install
8809 - changes to have libintl linked in, as determined by configure
8810 - changes to have libintl built, just in case it's used (though I'd
8811 rather not)
8812
8813 12/10
8814 -----
8815 config.h.in
8816 - additional #defines required by the libintl library
8817 - add ENABLE_NLS define for AM_GNU_GETTEXT
8818 - take out defines for HAVE_{BINDTEXTDOMAIN,GETTEXT,TEXTDOMAIN}
8819
8820 configure.in
8821 - removed old tests for libintl and gettext/textdomain/bindtextdomain
8822
8823 locale.c
8824 - remove HAVE_GETTEXT code; we have gettext unconditionally now
8825
8826 bashintl.h
8827 - change to include "gettext.h" and remove the conditional code based
8828 on whether or not gettext is present
8829
8830 12/16
8831 -----
8832 lib/readline/vi_mode.c
8833 - fix problem with rl_vi_eWord that caused it to skip over the last
8834 character of a word if invoked while point was on the next-to-last
8835 character
8836
8837 12/18
8838 -----
8839 {arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
8840 {mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
8841 {subst,test,trap,variables,version,xmalloc}.c
8842 parse.y
8843 builtins/{common,evalfile,getopt}.c
8844 builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
8845 builtins/{hash,help,history,jobs,kill,printf,pushd,read,return,set,setattr}.def
8846 builtins/{shift,shopt,source,suspend,type,ulimit,umask}.def
8847 lib/sh/{fmtulong,netopen}.c
8848 - include "bashintl.h" for gettext defines
8849
8850 Makefile.in
8851 - add `-DBUILDTOOL' to CFLAGS for buildversion.o
8852
8853 bashintl.h
8854 - if `BUILDTOOL' is defined, define ENABLE_NLS to 0 so we don't have
8855 to compile and link in the gettext stuff
8856
8857 Makefile.in,lib/sh/Makefile.in,builtins/Makefile.in
8858 - update dependencies on bashintl.h and include/gettext.h
8859
8860 12/19
8861 -----
8862 {arrayfunc,bashhist,bashline,error,eval,execute_cmd,expr,general,input,jobs}.c
8863 {mailcheck,make_cmd,nojobs,pcomplete,pcomplib,print_cmd,redir,shell,sig}.c
8864 {subst,test,trap,variables,version,xmalloc}.c
8865 builtins/{common,evalfile,getopt}.c
8866 builtins/{bind,break,caller,cd,complete,declare,enable,exec,exit,fc,fg_bg}.def
8867 builtins/{hash,help,history,jobs,kill,let,printf,pushd,read,return,set}.def
8868 builtins/{setattr,shift,shopt,source,suspend,type,ulimit,umask}.def
8869 lib/sh/{fmtulong,netopen}.c
8870 lib/malloc/{malloc,stats,table,watch}.c
8871 - mark up strings in source files for gettext processing
8872
8873 lib/malloc/imalloc.h
8874 - include "bashintl.h" if SHELL is defined, otherwise make _(x) an
8875 identity define
8876
8877 lib/malloc/Makefile.in
8878 - add dependencies on ${topdir}/bashintl.h and ${BASHINCDIR}/gettext.h
8879
8880 12/21
8881 -----
8882 bashline.c
8883 - make sure we index into rl_line_buffer with indexes > 0 in
8884 attempt_shell_completion
8885
8886 12/31
8887 -----
8888 Makefile.in
8889 - descend into `po' and run make recursively for the various clean
8890 targets
8891
8892 1/4
8893 ---
8894 include/shmbutil.h
8895 - two new macros: BACKUP_CHAR(str, strsize, i), which backs up one
8896 multibyte character in STR starting at index I, and
8897 BACKUP_CHAR_P(str, strsize, p), which backs up one multibyte
8898 character in STR starting at P, which is a char *
8899
8900 1/6
8901 ---
8902 pcomplete.c
8903 - in pcomp_filename_completion_function, use the quote character
8904 readline found (and assigned to rl_complete_quote_character) when
8905 dequoting the filename by a completion call from readline (when
8906 rl_dispatching != 0)
8907
8908 bashline.c
8909 - ditto for bash_directory_completion_matches
8910
8911 1/7
8912 ---
8913 lib/readline/complete.c
8914 - new variable, rl_completion_found_quote, set to non-zero value if
8915 readline finds what it thinks is quoting in the word to be completed
8916
8917 lib/readline/readline.h
8918 - extern declaration for rl_completion_found_quote
8919
8920 1/8
8921 ---
8922 lib/readline/doc/rltech.texi
8923 - documented rl_completion_found_quote
8924
8925 lib/readline/complete.c
8926 - in compute_lcd_of_matches, if it looks like what the user typed was
8927 dequoted before generating filename matches, dequote the user's
8928 text again before figuring out the case-insensitive lcd
8929
8930 1/9
8931 ---
8932 lib/readline/display.c
8933 - fix from Edward Catmur <ed@catmur.co.uk> to logic that handles
8934 invisible characters in prompt string. Original code was wrong
8935 about local_prompt_prefix; it gave incorrect results when prompt
8936 contained invisible characters after a line break
8937
8938 1/10
8939 ----
8940 subst.c
8941 - new function, mb_substring(), does character (possibly multibyte)
8942 oriented rather than strictly byte-oriented substring extraction.
8943 The passed indices, rather than strictly indexing into the string,
8944 indicate character positions that need to be calculated. From
8945 Tim Waugh <twaugh@redhat.com>
8946 - change parameter_brace_substring to use mb_substring if necessary
8947
8948 included/shmbutil.h
8949 - new define SADD_MBQCHAR_BODY, common code for adding a quoted
8950 (preceded by CTLESC) multibyte character to an accumulating string
8951 in the subst.c expansion code
8952
8953 subst.c
8954 - use SADD_MBQCHAR_BODY in expand_word_internal
8955 - new static function, mb_getcharlens, allocates and returns an array
8956 of character lengths for (possibly multibyte) characters in the
8957 argument string
8958 - change pattern matching operations to use while loops instead of
8959 for loops to handle multibyte characters better (no more simple
8960 increment or decrement)
8961 - change pattern matching operations to use multibyte character
8962 operations instead of simple increments and decrements. Don't
8963 use BACKUP_CHAR_P -- use the mblen array instead, because that
8964 avoids the N**2 behavior of having to count from the beginning
8965 of the string each time you want to back up one character. Changes
8966 to remove_pattern and match_pattern
8967
8968 1/12
8969 ----
8970 lib/readline/display.c
8971 - make expand_prompt count multbyte characters in the prompt string
8972 by using _rl_find_next_mbchar (and copying possibly more than one
8973 byte) instead of a simple increment and single byte copy
8974
8975 1/13
8976 ----
8977 lib/readline/display.c
8978 - expand_prompt takes a new reference argument -- it returns
8979 the actual count of (possibly multibyte) characters displayed
8980 on the screen
8981 - don't short-circuit in expand_prompt unless we're not going to
8982 be using any multibyte characters
8983 - change calls to expand_prompt to pass an argument for the
8984 number of physical characters the prompt occupies
8985 (prompt_physical_chars)
8986 - initialize `lpos' (the physical cursor position) from
8987 prompt_physical_chars in rl_redisplay
8988
8989 lib/readline/mbutil.c
8990 - in _rl_find_prev_mbchar_internal, if mbrtowc returns -1 or -2, and
8991 we assume that the character is a single-byte char, make sure we
8992 update `prev' so it doesn't get lost. Fixes problems encountered
8993 when a non-ascii char is the last char on the line and we're moving
8994 back past it with ^B, and other display problems caused by the same
8995 situation
8996
8997 1/15
8998 ----
8999 lib/readline/doc/rltech.texi
9000 - document RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE in the
9001 description of rl_expand_prompt()
9002
9003 1/20
9004 ----
9005 bashline.c
9006 - in initialize_readline, make sure M-C-j and M-C-m are still bound to
9007 vi-editing-mode before unbinding them -- they may have been rebound
9008 in an inputrc
9009
9010 variables.c
9011 - in unbind_variable, unset attributes other than `local' and exported
9012 (if the variable came from a temporary environment) when unsetting a
9013 local variable inside a function
9014
9015 1/21
9016 ----
9017 configure.in
9018 - add libintl build directory to the list of include directories if
9019 it's being built (using INTL_BUILDDIR)
9020
9021 Makefile.in,{builtins,lib/{sh,malloc}}/Makefile.in
9022 - substitute LIBBUILD as ${BUILD_DIR}/${LIBSUBDIR}
9023 - define INTL_BUILDDIR as ${LIBBUILD}/intl
9024
9025 {builtins,lib/sh}/Makefile.in
9026 - make sure INTL_INC is added to the list of include directories
9027 - make sure INTL_LIBSRC is defined with the correct value
9028
9029 {configure,Makefile,{builtins,lib/sh}/Makefile}.in
9030 - substitute LIBINTL_H as ${INTL_BUILDDIR}/libintl.h
9031
9032 Makefile.in,builtins/Makefile.iin
9033 - all files depending on bashintl.h also depend on ${LIBINTL_H}
9034 (which may be empty)
9035
9036 Makefile.in
9037 - make a rule telling how to build lib/intl/libintl.h if necessary
9038
9039 1/24
9040 ----
9041 builtins/read.def
9042 - make sure that the array name supplied as an argument to -a is a
9043 valid identifier
9044
9045 parse.y
9046 - make the \W expansion abbreviate $HOME with a ~ (seems to be more
9047 useful)
9048
9049 doc/{bash.1,bashref.texi}
9050 - document new behavior of \W
9051
9052 subst.c
9053 - make sure parameter_brace_expand_rhs uses the first character of
9054 $IFS when making the string to return from the expanded word
9055 (which, in the case of "$@" or $@, contains multiple words that
9056 need to be separated)
9057
9058 1/25
9059 ----
9060 builtins/common.c
9061 - change get_job_spec to make `%' by itself or an empty argument
9062 return NO_JOB
9063
9064 jobs.h
9065 - new possible value for a job spec return value: BAD_JOBSPEC
9066 (for syntactically invalid specs, like the empty string)
9067
9068 shell.c
9069 - in open_shell_script, check to see whether or not we can find and
9070 open the filename argument before setting dollar_vars[0] or
9071 manipulating BASH_SOURCE, so the error messages come out better
9072
9073 subst.c
9074 - in string_list_internal, short-circuit right away to savestring()
9075 if the list only has a single element
9076
9077 1/28
9078 ----
9079 lib/readline/rltypedefs.h
9080 - new set of typedefs for functions returning char * with various
9081 arguments (standard set)
9082
9083 lib/readline/complete.c
9084 - new function pointer, rl_completion_word_break_hook, called by
9085 _rl_find_completion_word, used to set word break characters at
9086 completion time, allowing them to be position-based
9087
9088 lib/readline/doc/rltech.texi
9089 - documented rl_completion_word_break_hook
9090
9091 lib/readline/kill.c
9092 - added new rl_unix_filename_rubout, which deletes one filename
9093 component in a Unix pathname backward (delimiters are whitespace
9094 and `/')
9095
9096 lib/readline/readline.h
9097 - extern declaration for rl_unix_filename_rubout
9098
9099 lib/readline/funmap.c
9100 - new bindable readline command `unix-filename-rubout'
9101
9102 lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
9103 - documented `unix-filename-rubout'
9104
9105 1/29
9106 ----
9107 lib/readline/histexpand.c
9108 - change history_tokenize_internal to handle non-whitespace delimiter
9109 characters by creating separate fields (like the shell does when
9110 splitting on $IFS)
9111
9112 1/30
9113 ----
9114 lib/glob/xmbsrtowcs.c
9115 - new function, xdupmbstowcs, for convenience: calls xmbsrtowcs
9116 while allocating memory for the new wide character string
9117 - some small efficiency improvments to xmbsrtowcs
9118
9119 include/shmbutil.h
9120 - extern declaration for xdupmbstowcs
9121
9122 lib/glob/strmatch.h
9123 - include config.h for definition of HANDLE_MULTIBYTE
9124 - remove the HAVE_LIBC_FNM_EXTMATCH tests
9125 - new extern declaration for wcsmatch(whchar_t *, wchar_t *, int)
9126
9127 configure.in
9128 - remove call to BASH_FUNC_FNMATCH_EXTMATCH; it's no longer used
9129
9130 lib/glob/smatch.c
9131 - simplify xstrmatch() by using xdupmbstowcs() instead of inline code
9132
9133 lib/glob/glob.c
9134 - modify mbskipname() to avoid the use of alloca
9135 - simplify mbskipname() by using xdupmbstowcs() instead of inline code
9136 - simplify glob_pattern_p() by using xdupmbstowcs() instead of
9137 inline code
9138 - fix memory leak in wdequote_pathname
9139 - simplify wdequote_pathname() by using xdupmbstowcs() instead of
9140 inline code
9141
9142 lib/glob/strmatch.c
9143 - new function, wcsmatch(), `exported' wide-character equivalent of
9144 strmatch()
9145
9146 subst.c
9147 - old match_pattern is now match_upattern
9148 - match_pattern now either calls match_upattern or converts
9149 mbstrings to wide chars and calls match_wpattern
9150 - match_upattern reverted to old non-multibyte code
9151 - new function: match_pattern_wchar, wide character version of
9152 match_pattern_char
9153
9154 2/1
9155 ---
9156 subst.c
9157 - old remove_pattern is now remove_upattern
9158 - remove_upattern reverted to old non-multibyte code (pre-Waugh patch)
9159 - new multibyte version of remove_pattern: remove_wpattern
9160 - remove_pattern now calls either remove_upattern or converts a
9161 multibyte string to a wide character string and calls
9162 remove_wpattern
9163 - new function, wcsdup, wide-character version of strdup(3)
9164
9165 2/4
9166 ---
9167 print_cmd.c
9168 - temporarily translate a >&filename redirection from
9169 r_duplicating_output_word to r_err_and_out (as the expansion code
9170 in redir.c does) so it prints without a leading `1' (file
9171 descriptor)
9172
9173 2/5
9174 ---
9175 aclocal.m4
9176 - add a check for wcsdup to BASH_CHECK_MULTIBYTE
9177
9178 config.h.in
9179 - add HAVE_WCSDUP define
9180
9181 2/9
9182 ---
9183 builtins/shift.def
9184 - fix a call to sh_erange that possibly dereferences a NULL pointer
9185
9186 2/12
9187 ----
9188 general.c
9189 - start at a general set of file property checking functions:
9190 file_isdir(), file_iswdir() (is writable directory)
9191
9192 general.h
9193 - extern declarations for new functions
9194
9195 lib/sh/tmpfile.c
9196 - use file_iswdir() to make sure the temporary directory used for
9197 here documents and other temp files is writable in get_sys_tmpdir()
9198
9199 2/17
9200 ----
9201 bashline.c
9202 - fix conditional binding of emacs-mode M-~ -- there is a default
9203 binding for it (rl_tilde_expand), so a straight call to
9204 rl_bind_key_if_unbound_in_map doesn't do the right thing
9205
9206 2/27
9207 ----
9208 [bash-3.0-beta1 released]
9209
9210 2/29
9211 ----
9212 subst.c
9213 - fixed expansion so referencing $a, when a is an array variable
9214 without an element assigned to index 0, exits the shell when
9215 `-u' is enabled
9216
9217 expr.c
9218 - make the exponentiation operator (**) associative, so things like
9219 2**3**4 work right (change `if' to `while')
9220
9221 3/3
9222 ---
9223 lib/sh/strftime.c
9224 - SCO Unix 3.2, like Solaris, requires that the system's `timezone'
9225 variable be declared as long
9226
9227 lib/readline/{bind,histfile,input,parens}.c
9228 - changes for Tandem (including `floss.h' (?))
9229
9230 3/4
9231 ---
9232 subst.c
9233 - change param_expand to quote the entire expanded string instead
9234 of just the escape characters if the expansion appears between
9235 double quotes or in a here-document (for simple variable expansions
9236 or expansions of positional parameters)
9237
9238 3/8
9239 ---
9240 subst.c
9241 - analogous changes to parameter_brace_expand_word to fix the same
9242 quoting problem as on 3/4; fix callers to understand that the
9243 value returned might be quoted now and should be dequoted if
9244 necessary
9245 - add a `quoted' argument to get_var_and_type, change callers
9246 - change today's fix and fix from 3/4 to not call quote_string if the
9247 value is "" (because quote_string turns that into CTLNUL\0)
9248
9249 3/9
9250 ---
9251 builtins/cd.def
9252 - resetpwd() now takes a `caller' argument so it can be used by pwd
9253 as well as cd
9254 - change pwd_builtin to call resetpwd() if sh_physpath() fails to
9255 return a valid pathname
9256
9257 3/14
9258 ----
9259 expr.c
9260 - reworked exp0 and readtok() to make post-increment and post-decrement
9261 into real tokens, which may be separated from their accompanying
9262 variables by whitesapce
9263 - made analogous changes to readtok() to make pre-increment and
9264 pre-decrement work when separated from their accompanying identifier
9265 by whitespace
9266
9267 3/18
9268 ----
9269 lib/readline/misc.c
9270 - in rl_maybe_unsave_line, don't force rl_replace_line to clear
9271 the undo_list, since it might point directly at an undo list
9272 from a history entry (to which we have no handle)
9273
9274 3/19
9275 ----
9276 lib/readline/display.c
9277 - rl_save_prompt and rl_restore_prompt now save and restore the value
9278 of prompt_physical_chars
9279 - set prompt_physical_chars in rl_redisplay when expand_prompt has
9280 not been called (e.g., when rl_display_prompt is set and is not
9281 equal to rl_prompt, like when searching)
9282
9283 lib/readline/histexpand.c
9284 - don't call add_history in history_expand if the `:p' modifier is
9285 supplied; leave that to the calling application. This means that
9286 `history -p', for example, will not add anything to the history
9287 list (as documented), nor will history expansions invoked by
9288 emacs-mode M-C-e line editing
9289
9290 config-bot.h
9291 - check whether HAVE_DECL_SYS_SIGLIST is defined to 1 rather than just
9292 defined, to work around newer versions of autoconf defining it to 0
9293
9294 config.h.in
9295 - change default status of HAVE_MALLOC to #undef instead of #define
9296
9297 bashhist.c
9298 - extern declarations for rl_done and rl_dispatching
9299 - don't call re_edit from pre_process_line unless rl_dispatcing is zero,
9300 so we don't call it from something like shell-expand-line
9301 - change pre_process_line to add an expanded history specification
9302 that returned `print only' to the history list, since history_expand
9303 no longer does it (and, when using readline, do it only when
9304 rl_dispatching is zero)
9305
9306 3/22
9307 ----
9308 config.h.in,aclocal.m4
9309 - change bash-specific functions that look in struct dirent to define
9310 HAVE_STRUCT_DIRENT_xxx, like AC_CHECK_MEMBERS does (though the
9311 functions are otherwise the same)
9312 - new function, BASH_STRUCT_DIRENT_D_NAMLEN, define
9313 HAVE_STRUCT_DIRENT_D_NAMLEN if struct dirent has a `d_namlen' member
9314
9315 configure.in
9316 - call BASH_STRUCT_DIRENT_D_NAMLEN
9317
9318 include/posixdir.h
9319 - use new and renamed HAVE_STRUCT_DIRENT_D_xxx defines
9320
9321 4/7
9322 ---
9323 builtins/cd.def
9324 - ensure that we print out a non-null pathname after getting a
9325 directory from CDPATH and canonicalizing it (e.g., if the result
9326 exceeds PATH_MAX in length and the_current_working_directory is
9327 set to NULL)
9328
9329 4/12
9330 ----
9331 print_cmd.c
9332 - new function to print out assignment statements when `set -x' has
9333 been enabled: xtrace_print_assignment
9334
9335 externs.h
9336 - extern declaration for xtrace_print_assignment
9337
9338 4/13
9339 ----
9340 {subst,variables}.c
9341 - call xtrace_print_assignment instead of using inline code
9342
9343 jobs.c
9344 - if turning on job control when it was previously off, set
9345 pipeline_pgrp to 0 in set_job_control so make_child puts
9346 subsequent children in their own process group
9347
9348 4/14
9349 ----
9350 general.c
9351 - new function, legal_alias_name, called to decide whether an
9352 argument to add_alias is a valid alias name -- essentially any
9353 character except one which must be quoted to the shell parser
9354 and `/'
9355
9356 general.h
9357 - new extern declaration for legal_alias_name
9358
9359 builtins/alias.def
9360 - `unalias' now returns failure status if no NAME arguments are
9361 supplied and -a is not given
9362 - call legal_alias_name to make sure alias name is valid before
9363 calling add_alias from alias_builtin
9364
9365 4/19
9366 ----
9367 include/shmbutil.h
9368 - include <config.h> for definition of HANDLE_MULTIBYTE rather than
9369 duplicating logic
9370
9371 4/20
9372 ----
9373
9374 doc/{bash.1,bashref.texi}
9375 - make sure $0 is consistently referred to as a `special parameter'
9376 - document which characters are now not allowed in alias names
9377
9378 4/23
9379 ----
9380
9381 builtins/{jobs,kill,wait}.def
9382 - removed requirement that job control be enabled to use job control
9383 notation, as SUSv3 implies
9384
9385 subst.c
9386 - based on a message from David Korn, change param_expand to not call
9387 string_list_dollar_star if the only quoting is Q_HERE_DOCUMENT --
9388 quoted here documents are like double quoting, but not exactly
9389 - analogous changes to list_remove_pattern and pos_params
9390
9391 4/24
9392 ----
9393 lib/readline/doc/rluser.texi
9394 - fix error in description of emacs-mode C-xC-e command (uses $VISUAL
9395 instead of $FCEDIT)
9396
9397 4/28
9398 ----
9399 support/bashbug.sh
9400 - integrate a patch from Stefan Nordhausen
9401 <nordhaus@informatik.hu-berlin.de> that reduces race conditions
9402 by using a temporary directory inside $TMPDIR and creating the
9403 temp files in that
9404
9405 4/30
9406 ----
9407 builtins/common.c
9408 - use pathconf(".", _PC_PATH_MAX) where available to size the argument
9409 to getcwd() rather than using a straight PATH_MAX
9410
9411 builtins/cd.def
9412 - if get_working_directory fails and returns null (causing resetpwd
9413 to return NULL), use set_working_directory to set $PWD to the
9414 absolute pathname for which chdir just succeeded
9415
9416 5/1
9417 ---
9418 lib/readline/vi_mode.c
9419 - in rl_vi_change_to, call _rl_vi_set_last with rl_numeric_arg instead
9420 of `last', since they're equal at call time and rl_vi_domove can
9421 change rl_numeric_arg (which vi apparently updates). Fixes redo bug
9422 of `c2....' reported by Marion Berryman <mwberryman@copper.net>
9423
9424 5/4
9425 ---
9426 parse.y
9427 - fix decode_prompt_string to properly deal with strftime() returning 0
9428
9429 5/6
9430 ---
9431 variables.c
9432 - in make_local_array_variable, return an already-existing local array
9433 variable immediately rather than creating a new array (causing a
9434 memory leak)
9435
9436 5/8
9437 ---
9438 lib/readline/vi_mode.c
9439 - change rl_vi_domove to set rl_explicit_arg before calling
9440 rl_digit_loop1 so that multi-digit numeric arguments work right
9441 - _rl_vi_last_command is no longer static
9442
9443 lib/readline/rlprivate.h
9444 - new extern declaration for _rl_vi_last_command
9445
9446 lib/readline/text.c
9447 - change rl_newline to only call _rl_vi_reset_last if the last command
9448 (_rl_vi_last_command) is not a text modification command. This lets
9449 the last-command and last-argument work across command lines
9450
9451 5/13
9452 ----
9453 builtins/common.c
9454 - use getcwd(0,0) rather than providing a fixed pathname with a fixed
9455 length (PATH_MAX) so getcwd() will allocate sufficient memory
9456
9457 aclocal.m4
9458 - change BASH_FUNC_GETCWD to check whether or not getcwd(0,0) will
9459 allocate memory for the returned value -- nobody implements that
9460 and getcwd-via-popen, so it should capture the old test as well
9461
9462 5/27
9463 ----
9464
9465 builtins/trap.def
9466 - the historical behavior of assuming that a signal's handling should
9467 be set to its original disposition is only in effect if a single
9468 argument is given, otherwise the first argument is assumed to be a
9469 command to execute
9470 - when in posix mode, if trap gets a single argument, display an
9471 error message and return EX_USAGE
9472 - change the help message and usage string to better explain trap's
9473 behavior
9474
9475 doc/{bash.1,bashref.texi}
9476 - describe the new default behavior when the first argument is a
9477 signal spec
9478 - note that signal names are case insensitive and the SIG prefix is
9479 optional in arguments to `trap'
9480 - note that signal name arguments to `kill' are case-insensitive
9481
9482 lib/readline/display.c
9483 - make sure rl_on_new_line_with_prompt sets rl_display_prompt to
9484 rl_prompt (just to make sure it's set)
9485 - have rl_on_new_line_with_prompt use local_prompt if it's set
9486
9487 6/2
9488 ---
9489 subst.c
9490 - in string_extract_double_quoted, cope with extract_delimited_string
9491 returning NULL, as it can when attempting completion on an unclosed
9492 command substitution
9493
9494 6/24
9495 ----
9496 lib/readline/complete.c
9497 - change print_filename to add a `/' to listed directory names if
9498 `mark-directories' has been enabled
9499
9500 builtins/umask.def
9501 - make sure that the mask passed to parse_symbolic_mode has all but
9502 the operative low eight bits masked off, to avoid complementing
9503 all 0s to -1, which is the error return code. This makes things
9504 like `a=rwx' and `ugo=rwx' work and turn off the umask
9505
9506 6/26
9507 ----
9508 builtins/getopts.def
9509 - when `getopts' reaches the end of options, unset OPTARG before
9510 returning EOF. In response to a bug report from Apple
9511
9512 configure.in
9513 - when cross-compiling, don't set CPPFLAGS_FOR_BUILD and
9514 LDFLAGS_FOR_BUILD from CPPFLAGS and LDFLAGS, respectively, since
9515 those are for the target instead of the build platform (report
9516 from robert@schwebel.de)
9517
9518 shell.c
9519 - a shell whose standard error (but not standard output) is directed
9520 to a terminal should be interactive, according to POSIX/SUS. This
9521 means that sh > sh.out will start an interactive shell. Bug report
9522 from llattanzi@apple.com
9523
9524 doc/{bash.1,bashref.texi}
9525 - change mention of standard output to standard error in definition
9526 of interactive shell
9527
9528 lib/readline/vi_mode.c
9529 - new convenience function, rl_vi_start_inserting, calls
9530 _rl_vi_set_last to save the last textmod command state and then calls
9531 rl_vi_insertion_mode to enter insert mode
9532 - change functions to use rl_vi_start_inserting
9533
9534 lib/readline/readline.h
9535 - extern declaration for rl_vi_start_inserting
9536
9537 bashline.c
9538 - new function for vi-mode completion, bash_vi_complete. Does
9539 filename expansion as POSIX specifies, unlike the default readline
9540 bindings (which don't know about globbing). Bound to `\', `*',
9541 and `=' in vi command keymap. Internals very similar to
9542 rl_vi_complete; just calls bash glob expansion functions
9543
9544 lib/readline/vi_mode.c
9545 - change rl_vi_change_char so that an entire change is a single
9546 undoable event, rather than each individual change in a [count]r
9547 command
9548 - fix rl_vi_change_char so that replacing characters up to EOL works
9549 rather than generating rl_ding
9550 - fix rl_vi_change_case so that replacing characters up to EOL works
9551 rather than generating rl_ding
9552
9553 6/28
9554 ----
9555 builtins/echo.def
9556 - call clearerr(stdout) before writing anything and testing its
9557 failure or success
9558
9559 6/29
9560 ----
9561 bashline.c
9562 - only set rl_explicit_arg in bash_glob_complete_word if readline is
9563 in emacs mode; let bash_vi_complete take care of setting it in vi
9564 mode
9565 - fix bash_vi_complete to only set rl_explicit_arg unless the posix
9566 conditions are met: no globbing characters in the vi `bigword'
9567 being completed
9568
9569 6/30
9570 ----
9571 [bash-3.0-rc1 released]
9572
9573 7/1
9574 ---
9575 lib/readline/complete.c
9576 - make sure `extension_char' is initialized before deciding whether
9577 or not the append a `/' to a possible completion when visible-stats
9578 is not enabled
9579
9580 7/2
9581 ---
9582 subst.c
9583 - fix a boundary overrun in string_extract_double_quoted that could
9584 occur when the word completion code attempts to expand an incomplete
9585 construct (like a quoted unclosed command substitution)
9586
9587 7/4
9588 ---
9589 subst.c
9590 - set tempenv_assign_error to non-zero if an assignment to the
9591 temporary environment fails for some reason (e.g., attempted
9592 assignment to a readonly variable)
9593
9594 execute_cmd.c
9595 - fix execute_simple_command to force a non-interactive shell in
9596 POSIX mode to exit if an assignment to the temporary environment
9597 preceding a special builtin fails (bug report from
9598 llattanzi@apple.com)
9599
9600 7/5
9601 ---
9602 bashline.c
9603 - in bash_directory_completion_hook, don't perform word expansions
9604 if the filename appears to have been completed from the file
9605 system rather than typed in by the user. Bug reported by Tim
9606 Waugh <twaugh@redhat.com>
9607
9608 7/7
9609 ---
9610 lib/readline/misc.c
9611 - if _rl_maybe_save_line is being asked to save a line other than
9612 what's already saved, free up the current saved line and save the
9613 current contents of rl_line_buffer. Bug reported by
9614 llattanzi@apple.com
9615
9616 7/12
9617 ----
9618 lib/readline/input.c
9619 - do better EOF detection in rl_gather_tyi -- if a read returns 0 when
9620 the fd is in non-blocking mode, stuff an EOF into the input stream
9621 (reported by mattias@virtutech.se)
9622
9623 7/13
9624 ----
9625 lib/readline/vi_mode.c
9626 - make sure rl_vi_put honors `count' arguments and yanks things
9627 multiple times if requested
9628
9629 7/16
9630 ----
9631 builtins/umask.def
9632 - make sure that the `who' part of the umask symbolic mode argument
9633 defaults to `a' if it's missing
9634
9635 flags.c
9636 - make sure that maybe_make_restricted only gets called after the
9637 shell is initialized, so `bash -r' doesn't result in inappropriate
9638 error messages
9639
9640 [bash-3.0 frozen]
9641
9642 7/27
9643 ----
9644 doc/Makefile.in
9645 - small fixes
9646
9647 [bash-3.0-released]
9648
9649 7/28
9650 ----
9651 array.c
9652 - in array_insert(), make sure the value to be added is non-NULL before
9653 calling savestring() on it
9654
9655 builtins/reserved.def
9656 - fix description of `CDPATH'
9657
9658 lib/readline/display.c
9659 - when expanding a prompt that spans multiple lines with embedded
9660 newlines, set prompt_physical_chars from the portion after the
9661 final newline, not the preceding portion. Bug reported by
9662 "Ralf S. Engelschall" <rse@engelschall.com>
9663
9664 make_cmd.c
9665 - explicitly declare `lineno' in function prologue for make_case_command
9666
9667 builtins/evalfile.c
9668 - include `trap.h' for declaration for run_return_trap
9669
9670 bashline.c
9671 - fix a `return' without a value in enable_hostname_completion
9672
9673 general.c
9674 - include test.h for extern declaration for test_eaccess
9675
9676 externs.h
9677 - add declaration for zcatfd
9678
9679 tests/{history,histexp}.tests
9680 - unset HISTFILESIZE to avoid problems if a value of 0 is inherited
9681 from the environment
9682
9683 7/30
9684 ----
9685 bashline.c
9686 - small changes to glob_expand_word to perform tilde expansion before
9687 attempting globbing
9688
9689 builtins/Makefile.in
9690 - fix the install-help target to not cd into the `helpfiles'
9691 subdirectory, so a value of $INSTALL_DATA containing a relative
9692 pathname (e.g., .././support/install.sh) remains valid
9693
9694 7/31
9695 ----
9696 subst.c
9697 - new function, mbstrlen(s), returns length of a multibyte character
9698 string
9699
9700 include/shmbutil.h
9701 - new macro, MB_STRLEN(s), calls mbstrlen or STRLEN as appropriate
9702
9703 builtins/trap.def
9704 - small change so that a first argument that's a valid signal number
9705 (digits only -- no symbolic names) will be treated as a signal and
9706 reverted back to the original handling disposition. Fixes debian
9707 complaints
9708
9709 subst.c
9710 - call MB_STRLEN instead of STRLEN where appropriate in
9711 parameter_brace_expand_length to handle multibyte characters properly
9712 - call MB_STRLEN instead of strlen in verify_substring_values so that
9713 negative substrings of strings with multibyte chars work properly
9714
9715 8/1
9716 ---
9717 jobs.c
9718 - describe_pid needs to write to stderr, not stdout (POSIX)
9719 - start_job, since it's only used by builtins (fg/bg), needs to write
9720 its output to stdout, not stderr (POSIX)
9721
9722 sig.c
9723 - add an `orig_flags' member to struct terminating_signal so the
9724 original signal handling flags (SA_RESTART, etc.) can be preserved
9725 on POSIX systems
9726 - make sure to preserve the signal flags state in
9727 initialize_terminating_signals and reset them for child processes
9728 in reset_terminating_signals
9729
9730 builtins/fc.def
9731 - fixed an off-by-one error that caused `fc -l' to list one too many
9732 history entries
9733 - in posix mode, `fc' should not list any indication as to whether or
9734 not history lines have been modified (POSIX)
9735 - when in posix mode, the default editor for `fc' should be `ed' (POSIX)
9736
9737 doc/bashref.texi
9738 - updated the description of `trap' behavior when given a first
9739 argument that is a valid signal number
9740 - noted that `fc -l' won't indicate whether a history entry has been
9741 modified if the shell is in posix mode
9742
9743 builtins/command.def
9744 - fixed bug: `command -v' is supposed to be silent if a command is not
9745 found
9746
9747 builtins/hash.def
9748 - `hash' should print its `hash table empty' message to stderr
9749
9750 lib/readline/misc.c
9751 - back out 7/7 change to _rl_maybe_save_line; it breaks emacs-mode ^P
9752
9753 general.c
9754 - changed base_pathname so that it will return reasonable results for
9755 non-absolute pathnames -- this is what is intended by all of its
9756 callers
9757
9758 arrayfunc.c
9759 - fix array_variable_part to return NULL if it finds an invisible
9760 variable in the hash table. Fixes seg fault caused by referring to
9761 unset local variable using array notation
9762
9763 {locale,variables}.c
9764 - support LC_TIME as a special locale variable so HISTTIMEFORMAT tracks
9765 the current locale
9766
9767 8/2
9768 ---
9769 variables.c
9770 - fixed small memory leak in makunbound() when a local array variable
9771 is unset. Fix from William Park
9772
9773 lib/readline/display.c
9774 - fixed a problem when computing the number of invisible characters on
9775 the first line of a prompt whose length exceeds the screen width
9776 (should only happen when invisible characters occur after the
9777 line wrap). Bug reported by agriffis@gentoo.org
9778
9779 builtins/command.def
9780 - `command -V' passes a new flag, CDESC_ABSPATH, which means to convert
9781 to an absolute path
9782
9783 builtins/type.def
9784 - in posix mode, `type' and `command -v/-V' should not report
9785 non-executable files, even if the execution code will attempt to
9786 run them. Other posix shells do this
9787
9788 doc/bashref.texi
9789 - add note to POSIX Mode section describing behavior of type and command
9790 when finding a non-executable file
9791
9792 execute_cmd.c
9793 - force extended_glob to 1 before calling binary_test in
9794 execute_cond_node so that the right extended pattern matching gets
9795 performed
9796
9797 8/3
9798 ---
9799 braces.c
9800 - make sure lhs[0] and rhs[0] are cast to `unsigned char' so chars
9801 with values > 128 are handled correctly
9802
9803 builtins/printf.def
9804 - change bexpand() and printstr() to handle strings with a leading
9805 '\0' whose length is non-zero, since that's valid input for the
9806 `%b' format specifier
9807
9808 subst.c
9809 - fix a couple of instances of find_variable that didn't check the
9810 result for an invisible variable
9811
9812 variables.c
9813 - BASH_ARGC, BASH_ARGV, BASH_SOURCE, BASH_LINENO no longer created as
9814 invisible vars
9815
9816 pcomplete.c
9817 - make sure COMP_WORDS is not invisible when bind_comp_words returns
9818 - ditto for COMPREPLY in gen_shell_function_matches
9819
9820 8/4
9821 ---
9822 braces.c
9823 - fix problem where ${ was ignored but did not increment the open
9824 brace count. Bug reported by Tim Waugh <twaugh@redhat.com>
9825
9826 variables.c
9827 - if make_local_variable finds a variable in the correct context in
9828 the right variable scope, make sure it's not invisible before
9829 returning it
9830
9831 8/5
9832 ---
9833 builtins/trap.def
9834 - fixed usage message to show `action' as not optional, though it
9835 actually is when not in posix mode (for a single argument)
9836
9837 8/7
9838 ---
9839 configure.in
9840 - kfreebsd-gnu has had its sbrk() problems fixed, and no longer needs
9841 to be configured --without-gnu-malloc
9842
9843 lib/readline/vi_mode.c
9844 - in rl_vi_search, free any saved history line before starting the
9845 search, so failure leaves you at that line, not the last line in
9846 the history (assuming the current line is not the last history line).
9847 Fix from llattanzi@apple.com to replace fix of 7/7
9848
9849 8/9
9850 ---
9851 support/Makefile.in
9852 - renamed `mostly-clean' target to `mostlyclean'
9853
9854 8/11
9855 ----
9856 lib/readline/vi_mode.c
9857 - make same change for EOL in multibyte character case of
9858 rl_vi_change_char
9859
9860 8/12
9861 ----
9862 subst.c
9863 - in verify_substring_values, fix off-by-one error checking bounds of
9864 `offset', esp. in array values (e.g., getting the highest element
9865 of an array)
9866
9867 8/16
9868 ----
9869 aclocal.m4
9870 - change BASH_CHECK_DEV_FD to make sure that file descriptors > 2 are
9871 accessible via /dev/fd, unlike FreeBSD 5.x
9872
9873 lib/sh/strftime.c
9874 - make sure `zone' is initialized with gettimeofday before it is used
9875 - work around HPUX lack of `altzone' and differing definitions of
9876 `timezone'
9877
9878 lib/malloc/malloc.c
9879 - internal_memalign and memalign now take a `size_t' as their first
9880 argument, which seems to be the prevailing standard
9881
9882 lib/malloc/{malloc.c,shmalloc.h}
9883 - change sh_memalign to take a `size_t' as its first argument
9884
9885 builtins/echo.def
9886 - if posixly_correct and xpg_echo are both set, don't try to interpret
9887 any arguments at all, as POSIX/XOPEN requires (fix inspired by Paul
9888 Eggert)
9889
9890 doc/bashref.texi
9891 - amend description of bash posix mode to include new echo behavior
9892
9893 builtins/fg_bg.def
9894 - allow bg to take multiple job arguments, as posix seems to specify,
9895 placing them all in the background, returning the status of the last
9896 one as the status of `bg'
9897
9898 lib/readline/vi_mode
9899 - fix _rl_vi_change_mbchar_case (multibyte-char version of `~'
9900 command) to have the right behavior at EOL -- handle case where vi
9901 mode backs up at the end of the line
9902
9903 8/18
9904 ----
9905 array.c
9906 - check for an empty array in array_rshift before shifting elements
9907 and adjusting max_index
9908 - check for null array in array_subrange
9909
9910 jobs.c
9911 - fix raw_job_exit_status to not ignore exit status of the last
9912 process in the pipeline when `set -o pipefail' is enabled
9913
9914 8/19
9915 ----
9916 lib/readline/mbutil.c
9917 - make sure _rl_find_next_mbchar_internal has a valid multibyte
9918 character before it checks whether or not it's a zero-width
9919 wide character and adjusts point accordingly
9920
9921 8/24
9922 ----
9923 bashline.c
9924 - new function, bash_directory_expansion, duplicates the expansions
9925 performed on the directory name by rl_filename_completion_function
9926 - call bash_directory_expansion in command_word_completion_function
9927 if we decide we're doing tilde expansion (and any other
9928 canonicalization) on the directory name being completed
9929
9930 8/25
9931 ----
9932 configure.in
9933 - use new-style AC_CHECK_HEADER to check for sys/ptem.h (which requires
9934 sys/stream.h). The correct checks are in the code, but autoconf
9935 complains if sys/stream.h is not included, rather than simply
9936 checking for the header's presence
9937
9938 8/26
9939 ----
9940 builtins/hash.def
9941 - fix a bug that prevented `hash -d' from working right (as soon as
9942 hash removed a command from the table, the bug caused it to be added
9943 right back)
9944
9945 8/27
9946 ----
9947 doc/{bash.1,bashref.texi}
9948 - explicitly note that conditional primaries that operate on files
9949 operate on the targets of symbolic links rather than the links
9950 themselves
9951
9952 8/30
9953 ----
9954 lib/readline/display.c
9955 - fix multibyte calculation of `physchars' in prompt expansion, to
9956 handle double-width multibyte characters correctly
9957 - changes to rl_redisplay to handle prompts longer than the screenwidth
9958 that might contain double-width multibyte characters. Fixes from
9959 Tomohiro Kubota
9960
9961 9/6
9962 ---
9963 subst.c
9964 - change word_list_split to avoid really bad behavior caused by calling
9965 list_append for each split word -- as the list gets long, you have
9966 to traverse it every time. Keep a pointer to the end of the list and
9967 and just tack onto it
9968
9969 9/8
9970 ---
9971 lib/readline/complete.c
9972 - change fnprint to calculate the displayed width of a filename in
9973 the same way as fnwidth
9974
9975 subst.c
9976 - in verify_substring_values, when expanding ${array[@]:offset}, make
9977 sure negative offsets count from one greater than the array's
9978 maximum index so things like ${x[@}: -1} work to give the last element
9979 (requires fixing array tests)
9980
9981 builtins/common.c
9982 - new error function, sh_wrerror(), for builtins to call when a write
9983 error occurs
9984
9985 builtins/common.h
9986 - extern declaration for sh_wrerror()
9987
9988 builtins/cd.def
9989 - change builtin_error call to use sh_wrerror()
9990
9991 builtins/echo.def
9992 - report write errors with sh_wrerror() instead of just returning
9993 failure
9994
9995 builtins/printf.def
9996 - change printstr to return failure (-1) or success (0) indication
9997 rather than void
9998 - report write errors when printstr() fails, return failure
9999 - if any of the PF/printf calls fail, report write error and return
10000 failure
10001
10002 execute_cmd.c
10003 - change execute_in_subshell so the subshell command inherits the
10004 command timing flags from the enclosing COMMAND *
10005
10006 9/11
10007 ----
10008 [prayers for the victims of 9/11/2001]
10009
10010 lib/sh/strnlen.c
10011 - new file, implementation of GNU libc extension function strnlen
10012
10013 lib/sh/Makefile.in, {config.h,configure,Makefile}.in, MANIFEST
10014 - changes for strnlen
10015
10016 configure.in
10017 - version changed to 3.1-devel
10018
10019 doc/bash.1, lib/readline/doc/rluser.texi
10020 - added description of `-o plusdirs' to complete/compgen (thanks,
10021 Arnold)
10022
10023 parse.y
10024 - new parser_state flag, PST_ASSIGNOK, if set indicates we're parsing
10025 arguments to a builtin that accepts assignment statement arguments
10026 - turn on PST_ASSIGNOK in read_token_word when appropriate
10027 - turn off PST_ASSIGNOK in read_token when appropriate
10028 - don't attempt to parse a compound assignment specially unless we're
10029 in a position where an assignment statement is acceptable, or
10030 PST_ASSIGNOK is set
10031
10032 9/13
10033 ----
10034 variables.c
10035 - make BASH_ARGC, BASH_ARGV, BASH_LINENO, and BASH_SOURCE
10036 non-unsettable, since the shell uses those values internally
10037
10038 expr.c
10039 - make exponentiation right-associative, as is apparently correct
10040
10041 9/16
10042 ----
10043 arrayfunc.c
10044 - make sure convert_var_to_array marks the environment as needing
10045 recreation if the converted variable was exported
10046
10047 9/17
10048 ----
10049 braces.c
10050 - mark ${ as introducing an additional level of braces only if it's
10051 not in a quoted string -- quoted strings are handled before brace
10052 matching is done
10053
10054 parse.y
10055 - fixed an obscure problem in history_delimiting_chars where the `in'
10056 in a case statement could have a semicolon added after it, if the
10057 `case word' was on a previous line
10058
10059 support/config.guess
10060 - support for newest versions of tandem non-stop kernel
10061
10062 lib/readline/display.c
10063 - in compute_lcd_of_matches, explicitly cast `text' to `char *' before
10064 passing it to rl_filename_dequoting_function
10065
10066 lib/readline/terminal.c
10067 - bind the key sequence sent by the keypad `delete' key to delete-char
10068 (same as ^D in emacs mode)
10069
10070 builtins/ulimit.def
10071 - in print_all_limits, don't print anything if get_limit returns
10072 -1/EINVAL, indicating that the kernel doesn't support that particular
10073 limit
10074 - add -i (max number of pending signals), -q (max size of posix msg
10075 queues), -x (max number of file locks) for systems (Linux) that
10076 support them
10077
10078 doc/{bash.1,bashref.texi}
10079 - fix description of correspondence between FUNCNAME, BASH_LINENO,
10080 and BASH_SOURCE indices in description of BASH_LINENO
10081
10082 9/18
10083 ----
10084 lib/sh/shquote.c
10085 - don't quote CTLESC and CTLNUL with CTLESC in sh_backslash_quote, as
10086 long as the resultant string never gets sent to the word expansion
10087 functions without going through the shell parser
10088
10089 externs.h
10090 - add extern declarations for strnlen and strpbkrk from lib/sh
10091
10092 subst.[ch]
10093 - changes to handle case where IFS consists of multibyte characters.
10094 Changed: string_extract_verbatim, split_at_delims,
10095 string_list_dollar_star, string_list_dollar_at, list_string,
10096 get_word_from_string, setifs
10097
10098 9/19
10099 ----
10100 mailcheck.c
10101 - change file_mod_date_changed to reset the cached mail file data if
10102 the file size drops to zero
10103
10104 lib/readline/complete.c
10105 - change append_to_match so that a non-zero value for
10106 rl_completion_suppress_append will cause no `/' to be appended to a
10107 directory name
10108
10109 bashline.c
10110 - experimental change to suppress appending a slash for a completed
10111 filename that is found in PATH as well as a directory in the current
10112 directory under certain circumstances: a single instance found in
10113 $PATH when `.' is not in $PATH, and multiple instances found in the
10114 $PATH, even when `.' is in the $PATH
10115
10116 9/24
10117 ----
10118 command.h
10119 - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
10120 - new word flag: W_NOTILDE, means word is not to be tilde expanded
10121 - new word flag (internal): W_ITILDE, means the next character is a
10122 tilde that should be expanded
10123
10124 general.c
10125 - new set of tilde suffixes for use when parsing the RHS of an
10126 assignment statement and =~ should not be subject to tilde expansion
10127 - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
10128 for parsing RHS of assignment statement
10129
10130 general.[ch]
10131 - new function bash_tilde_find_word, drop-in replacement for
10132 tilde_find_word
10133
10134 subst.c
10135 - call bash_tilde_expand with secord argument of 2 when expanding rhs
10136 of an assignment statement, so tildes after second and subsequent
10137 `=' in an assignment are not expanded
10138 - new function, expand_string_assignment, to expand the rhs of an
10139 assignment statement
10140 - add `~' to EXP_CHAR, the characters that will cause the word
10141 expansion functions to be called
10142 - move tilde expansion into expand_word_internal instead of many
10143 different calls to bash_tilde_expand scattered across different
10144 functions. NOTE: This means that double quotes surrounding a
10145 {paramOPword} expansion will cause tilde expansion to NOT be
10146 performed on `word'. I think this is right, what POSIX specifies,
10147 and consistent with the behavior of other characters in the rhs
10148
10149 execute_cmd.c
10150 - take out calls to bash_tilde_expand before calling word expansion
10151 functions
10152
10153 9/26
10154 ----
10155 execute_cmd.c
10156 - make sure to call UNBLOCK_CHILD before returning on a pipe creation
10157 failure in execute_pipeline
10158
10159 9/27
10160 ----
10161 variables.c
10162 - change get_bash_command to deal with the_printed_command_except_trap
10163 being NULL
10164
10165 execute_cmd.c
10166 - fix execute_simple_command to deal with the_printed_command being
10167 NULL when assigning to the_printed_command_except_trap -- fixes
10168 seg fault in savestring()
10169
10170 parse.y
10171 - change the parser so that the closing `)' in a compound variable
10172 assignment delimits a token -- ksh93 does it this way
10173
10174 doc/{bash.1,bashref.texi}
10175 - change description of tilde expansion to note that expansion is
10176 attempted only after the first =~ in an assignment statement
10177
10178 builtins/declare.def
10179 - when assigning to an array variable with declare -a x=(...), make
10180 sure the last character in the rhs of the variable assignment is
10181 `)', not just that it appears somewhere
10182
10183 9/28
10184 ----
10185 command.h
10186 - add a `W_NOEXPAND' flag to inhibit all expansion except quote removal
10187 - add a `W_COMPASSIGN' flag to denote a word is a compound assignment
10188 statement
10189
10190 parse.y
10191 - set W_COMPASSIGN on words that appear to be compound assignments
10192
10193 subst.c
10194 - pass W_NOXPAND and W_COMPASSIGN through end of expand_word_internal
10195
10196 subst.[ch]
10197 - new function, expand_assignment_string_to_string, calls
10198 expand_string_assignment and then string_list on the result
10199
10200 variables.c
10201 - assign_in_env now calls expand_assignment_string_to_string
10202
10203 9/30
10204 ----
10205 builtins/common.c
10206 - change get_job_spec so the null job `%' once again means the current
10207 job
10208
10209 10/1
10210 ----
10211 subst.c
10212 - do_assignment_internal now takes a WORD_DESC * as its first
10213 argument, and uses its `word' member as the assignment string
10214 - change expand_word_list_internal to call do_word_assignment instead
10215 of do_assignment, passing it `word' instead of, e.g., `word->word'
10216 - change extract_array_assignment_list to just return the passed
10217 string minus a trailing `)' if the last character is a right
10218 paren
10219 - change do_assignment_internal to call extract_array_assignment_list
10220
10221 subst.[ch]
10222 - change do_assignment and do_assignment_no_expand to take a `char *'
10223 instead of `const char *' first argument; change extern prototypes
10224 - new function, do_word_assignment, takes a WORD_DESC * and calls
10225 do_assignment_internal on it; add extern declaration with prototype
10226
10227 general.h
10228 - new typedef, sh_wassign_func_t, like sh_assign_func_t but takes a
10229 WORD_DESC * as its first argument
10230
10231 variables.[ch]
10232 - assign_in_env now takes a WORD_DESC * as its first argument
10233
10234 10/2
10235 ----
10236 command.h
10237 - new word flag, W_ASSNBLTIN, denotes that the word is a builtin
10238 command (in a command position) that takes assignment statements
10239 as arguments, like `declare'
10240 - new word flags, W_ASSIGNARG, denotes that word is an assignment
10241 statement given as argument to assignment builtin
10242
10243 execute_cmd.c
10244 - set W_ASSNBLTIN flag in fix_assignment_words if necessary (if there
10245 are any arguments that are assignment statements)
10246 - set W_ASSIGNARG flag in fix_assignment_words if necessary
10247
10248 subst.c
10249 - new function, do_compound_assignment, encapsulates the necessary
10250 code to perform a compound array assignment (including creation of
10251 local variables); called from do_assignment_internal
10252 - to fix the double-expansion problem with compound array assignments
10253 that are arguments to builtins like `declare', changed
10254 shell_expand_word_list to treat those arguments like assignment
10255 statements (with proper creation of local variables inside shell
10256 functions) and pass the attribute-setting portion of the statement
10257 onto the builtin. This is what ksh93 appears to do, from inspection
10258 of the `ksh93 -x' output
10259
10260 execute_cmd.c
10261 - fix execute_simple_command: in case of pipeline or async command,
10262 when forking early, set `subshell_environment' so that it can contain
10263 both SUBSHELL_PIPE and SUBSHELL_ASYNC -- the two should not be
10264 mutually exclusive. Fixes bug reported by pierre.humblet@ieee.org
10265 - remove references to last_pid, old_command_subst_pid; use NO_PID as
10266 a sentinel value to decide whether or not a child process has been
10267 created and needs to be waited for. Submitted by
10268 pierre.humblet@ieee.org to fix recycling-pid problem on cygwin
10269
10270 doc/{bash.1,bashref.texi}
10271 - fixed documentation of `@(pattern)' extended globbing operator --
10272 it succeeds if the string matches one of the patterns, not exactly
10273 one. This is what ksh93 does, too
10274
10275 lib/readline/complete.c
10276 - fixed rl_menu_complete so that a negative argument cycles backwards
10277 through the list
10278
10279 10/3
10280 ----
10281 subst.c
10282 - use W_COMPASSIGN flag in do_assignment_internal instead of deciding
10283 lexically which assignments are compound array assignments
10284
10285 10/6
10286 ----
10287 support/shobj-conf
10288 - additions for System V.5 from Boyd Gerber <gerberb@zenez.com>
10289
10290 subst.c
10291 - in command_substitute, if subshell_environment includes
10292 SUBSHELL_ASYNC, call make_child with the `async_p' argument set to
10293 non-zero. This keeps command substitutions for async commands or
10294 pipelines from trying to give the terminal back to the shell's
10295 pgrp. make sure to save and restore last_asynchronous_pid. Fix
10296 suggested by <pierre.humblet@ieee.org>
10297
10298 10/7
10299 ----
10300 config.h.in
10301 - add a placeholder definition for WCONTINUED_BROKEN
10302
10303 10/9
10304 ----
10305 aclocal.m4
10306 - add BASH_CHECK_WCONTINUED, checks for glibc bug where WCONTINUED is
10307 defined but rejected as invalid by waitpid(2)
10308
10309 configure.in
10310 - add call to BASH_CHECK_WCONTINUED, defines WCONTINUED_BROKEN
10311
10312 redir.c
10313 - experimental change to add_undo_redirect to save manipulations to
10314 file descriptors >= SHELL_FD_BASE (10) on the list of redirections
10315 to be undone even if `exec' causes the list to be discarded
10316
10317 doc/{bash.1,bashref.texi}
10318 - note that redirections using file descriptors > 9 should be used
10319 carefully, because they might conflict with file descriptors the
10320 shell uses internally
10321
10322 10/11
10323 -----
10324 parse.y
10325 - fix pipeline_command production to handle case where `pipeline'
10326 as `argument' of `!' or `time' is null (e.g., a syntax error not
10327 handled by the grammar)
10328
10329 10/13
10330 -----
10331 lib/readline/readline.c
10332 - new internal variable, _rl_bind_stty_chars; if non-zero, bind the
10333 terminal special characters to readline equivalents at startup
10334 - change readline_default_bindings() and reset_default_bindings() to
10335 understand _rl_bind_stty_chars
10336
10337 lib/readline/rlprivate.h
10338 - new extern declaration for _rl_bind_stty_chars
10339
10340 lib/readline/rltty.c
10341 - change rl_prep_terminal to add support for _rl_bind_stty_chars
10342
10343 10/15
10344 -----
10345 lib/readline/bind.c
10346 - new bindable variable, `bind-tty-special-chars', bound to value of
10347 _rl_bind_stty_chars
10348
10349 doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
10350 - documented new readline variable `bind-tty-special-chars'
10351
10352 builtins/pushd.def
10353 - make the first check for option `--' skip the rest of option
10354 checking
10355
10356 10/16
10357 -----
10358 lib/readline/shell.c
10359 - change sh_set_lines_and_columns to prefer setenv, which has
10360 predictable memory allocation behavior, to putenv, which does not
10361
10362 10/19
10363 -----
10364 variables.c
10365 - change push_exported_var so that a tempenv variable has to have the
10366 export attribute set (which they all do -- something to look at) and
10367 the `propagate' attribute set to be propagated down to the next
10368 scope
10369
10370 execute_cmd.c
10371 - change execute_builtin so that if CMD_COMMAND_BUILTIN is set in the
10372 passed flags argument, call pop_scope with a value that says the
10373 builtin is not special, since `command' means that preceding variable
10374 assignments don't persist in the environment. Fixes problem with
10375 variable assignments preceding command preceding special builtin
10376 keeping those variable assignments around (when in posix mode)
10377
10378 10/20
10379 -----
10380 lib/sh/shquote.c
10381 - new function, sh_mkdoublequoted, brackets a given string with
10382 double quotes and returns a new string. Flags argument, if non-
10383 zero, means to quote embedded double quotes with backslashes
10384
10385 externs.h
10386 - new extern declaration for sh_mkdoublequoted
10387
10388 parse.y
10389 - use sh_mkdoublequoted after calling localeexpand()
10390
10391 lib/sh/strtrans.c
10392 - change ansicstr to understand that (flags & 4) != 0 means to remove
10393 backslash from unrecognized escape sequences
10394
10395 general.c
10396 - fix logic problem in assignment() that caused non-variable-starter
10397 characters to be allowed, resulting in things like `1=xxx' creating
10398 a variable `1' in the hash table
10399
10400 10/21
10401 -----
10402 bashline.c
10403 - don't call programmable_completions with an assignment statement
10404 argument
10405
10406 10/22
10407 -----
10408 lib/readline/rltty.c
10409 - in prepare_terminal_settings, turn echoing on (readline_echoing_p)
10410 if get_tty_settings fails because the input is not a terminal
10411
10412 10/24
10413 -----
10414 lib/readline/util.c
10415 - include rlmbutil.h for multibyte definitions
10416 - new function, _rl_walphabetic, wide char version of rl_alphabetic
10417
10418 lib/readline/mbutil.c
10419 - new function, _rl_char_value(buf, ind), returns value of (possibly
10420 multibyte) character at buf[ind]
10421
10422 lib/readline/rlmbutil.h
10423 - extern defines for _rl_walphabetic and _rl_char_value for when
10424 multibyte chars are not being used
10425 - new wrapper definitions for _rl_find_next_mbchar (MB_NEXTCHAR) and
10426 _rl_find_prev_mbchar (MB_PREVCHAR) that try to avoid unneeded
10427 function calls
10428
10429 lib/readline/text.c
10430 - fix rl_foward_word to work with multibyte characters (or in a
10431 multibyte locale) using above utility functions
10432 - fix rl_backward_word to work with multibyte characters (or in a
10433 multibyte locale) using above utility functions
10434
10435 10/26
10436 -----
10437 parse.y
10438 - fix parse_matched_pair so that it doesn't swallow \<newline> when
10439 parsing a $'...' construct (call shell_getc with different arg)
10440
10441 10/28
10442 -----
10443 lib/glob/glob.c
10444 - after some (compiled-in) threshold, glob_vector will stop using
10445 alloca to allocate `struct globval's and will switch to using
10446 malloc, with appropriate cleanup before returning
10447
10448 subst.c
10449 - don't expand tildes after `=' in expand_word_internal, even if the
10450 W_TILDEEXP flag is set, unless it's the first tilde in a word
10451 marked W_ASSIGNMENT
10452
10453 10/31
10454 -----
10455 lib/readline/text.c
10456 - make sure rl_point doesn't go below 0 in rl_delete_horizontal_space
10457 (from SUSE, but not sent in)
10458
10459 shell.c
10460 - make sure shell_is_restricted skips over a single leading `-' in
10461 the shell name (from SUSE, but not sent in)
10462
10463 lib/readline/display.c
10464 - disable `fast redisplay' at the end of the line if in a locale that
10465 supports multibyte characters (from SUSE, but not sent in)
10466
10467 lib/readline/histexpand.c
10468 - fix a problem with finding the delimiter of a `?' substring when
10469 compiled for multibyte characters (from SUSE, but not sent in)
10470
10471 11/1
10472 ----
10473 lib/readline/display.c
10474 - correct some assignments to _rl_last_c_pos: when in a multibyte
10475 locale, it's used as an absolute cursor position; when not using
10476 multibyte characters, it's a buffer offset. I should have caught
10477 this when the multibyte character support was donated
10478
10479 11/5
10480 ----
10481 general.c
10482 - change `assignment()' to accept `+=' assignment operator
10483
10484 arrayfunc.[ch]
10485 - bind_array_variable and assign_array_element both take a new `flags'
10486 argument
10487 - assign_array_var_from_string, assign_array_from_string, and
10488 assign_array_var_from_word_list now all take a new `flags' argument
10489 - change assign_array_var_from_word_list to understand how to append
10490 to an array variable
10491 - change assign_array_var_from_string to understand how to append
10492 to an array variable. It does not unset the previous value if
10493 appending, allowing both old values to be changed and new ones to
10494 be added
10495
10496 subst.h
10497 - new flag #defines to use for evaluating assignment statements
10498
10499 {subst,variables}.c, builtins/{declare,read}.def
10500 - change callers of assign_array_element and bind_array_variable
10501 - change do_compound_assignment to understand assignment flags
10502 - change do_assignment_internal to set assignment flags and pass them
10503 to underlying functions
10504
10505 pcomplete.c,builtins/{declare,read}.def
10506 - fix callers of assign_array_var_from_string, assign_array_var_from_word_list
10507
10508 variables.[ch]
10509 - make_variable_value now takes a new `flags' argument
10510 - make_variable_value now understands how to append to a particular
10511 variable, using the old value
10512 - bind_variable_value now takes a new `flags' argument
10513 - change make_variable_value to understand ASS_APPEND flag
10514 - bind_variable now takes a new `flags' argument
10515 - bind_variable_internal now takes a new `flags' argument
10516
10517 arrayfunc.c
10518 - change callers of make_variable_value to add flags arg
10519
10520 builtins/declare.def
10521 - change callers of bind_variable_value to add flags arg
10522
10523 {execute_cmd,mailcheck,pcomplete,shell,subst,variables}.c,parse.y
10524 builtins/{cd,command,declare,getopts,read,set,setattr}.def
10525 - change callers of bind_variable to add flags arg
10526
10527 variables.c
10528 - change callers of bind_variable_internal
10529 - change bind_variable_internal to pass assignment flags on to
10530 make_variable_value
10531 - change assign_in_env to treat `var+=value' like `var=value'
10532
10533 arrayfunc.c
10534 - break code that actually constructs the new value and assigns it
10535 to a particular array index out into a new functions:
10536 bind_array_var_internal. This fakes out make_variable_value by
10537 passing a dummy SHELL_VAR * so it can do proper appending and other
10538 += processing
10539 - changes to assign_array_var_from_string to accept and process as if
10540 they were `standalone' assignment statements array assignment words
10541 of the form [ind]+=val
10542
10543 11/7
10544 ----
10545 builtins/declare.def
10546 - added support for `declare [flags] var+=value'. `Flags' are applied
10547 before the assignment is performed, which has implications for things
10548 like `-i' -- if -i is supplied, arithmetic evaluation and increment
10549 will be performed
10550
10551 builtins/setattr.def
10552 - add support for `+=' assignment for rest of `assignment builtins':
10553 export, readonly
10554
10555 11/12
10556 -----
10557 lib/readline/display.c
10558 - make sure prompt_physical_chars and prompt_invis_chars_first_line
10559 are reset to 0 if the prompt string passed to rl_expand_prompt is
10560 NULL or empty
10561
10562 11/14
10563 -----
10564 {configure,config.h}.in
10565 - check for `raise', define HAVE_RAISE if available
10566
10567 lib/intl/dcigettext.c
10568 - make sure `raise' is defined if HAVE_RAISE is not before
10569 eval-plurah.h is included
10570
10571 lib/malloc/trace.c
10572 - put extern declaration for imalloc_fopen inside the MALLOC_TRACE
10573 #ifdef
10574
10575 11/16
10576 -----
10577 lib/intl/Makefile.in
10578 - make sure SHELL is defined to cpp
10579
10580 lib/intl/dcigettext.c
10581 - make sure we use getcwd() even if HAVE_GETCWD is not defined after
10582 including config.h; if SHELL is defined, #define HAVE_GETCWD
10583
10584 11/18
10585 -----
10586 trap.[ch]
10587 - new function, int signal_in_progress(int sig), returns TRUE if the
10588 trap handler for signal SIG is currently executing
10589
10590 11/19
10591 -----
10592 redir.c
10593 - slightly change do_redirection_internal to set the close-on-exec
10594 flag for file descriptors > 2 used to save file descriptors < 2
10595 using explicit redirections (e.g., `exec 3>&1'). This keeps file
10596 descriptors pointing to pipes from being left open but doesn't
10597 change the shell's file descriptor semantics
10598
10599 11/20
10600 -----
10601 doc/{bash.1,bashref.texi}
10602 - correct some minor typos, forwarded from doko@debian.org
10603
10604 11/22
10605 -----
10606 doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
10607 - documented detail that yank-last-arg and yank-nth-arg use the history
10608 arg expansion code (and, as a result, are subject to restrictions
10609 of the history-comment character)
10610
10611 11/23
10612 -----
10613 execute_cmd.c
10614 - changes so that BASH_COMMAND preserves its value into a DEBUG trap:
10615 for commands, arithmetic for command expressions, select commands,
10616 case commands, (( commands, [[ commands, simple commands
10617
10618 11/24
10619 -----
10620 doc/{bash.1,bashref.texi}
10621 - changed description of `set' builtin slightly so that it is clear
10622 that only variables are displayed in posix mode and that read-only
10623 variables can't be reset by simply sourcing the output of `set'
10624
10625 lib/sh/strftime.c
10626 - don't try to redefine `inline' if it's already defined
10627
10628 11/26
10629 -----
10630 execute_cmd.c
10631 - fix execute_function to check funcname_a after function execution,
10632 since FUNCNAME can be changed or unset within a function
10633
10634 11/27
10635 -----
10636 builtins/evalfile.c
10637 - make same changes as 11/26, this time to _evalfile
10638
10639 execute_cmd.c
10640 - change execute_function to run the return trap after a function
10641 completes execution even if the shell is compiled without DEBUGGER
10642 defined
10643
10644 trap.c
10645 - change reset_or_restore_signal_handlers so that the RETURN trap is
10646 not inherited by command substitution when DEBUGGER is not defined
10647
10648 11/30
10649 -----
10650 lib/readline/misc.c
10651 - fix memory leaks in _rl_free_history_entry and rl_maybe_replace_line
10652 caused by not freeing `timestamp' member of history entry
10653 - make sure timestamp is initialized to NULL in rl_maybe_save_line
10654
10655 12/1
10656 ----
10657 execute_cmd.c
10658 - fix execute_function so a function calling `return' will run the
10659 RETURN trap, if one's defined
10660
10661 doc/{bash.1,bashref.texi}
10662 - fix description of RETURN trap in various places to indicate that it's
10663 only inherited by shell functions if function tracing is on globally
10664 or has been enabled for that function
10665 - fix documentation to indicate that the DEBUG and RETURN traps are
10666 inherited under the same conditions
10667
10668 execute_cmd.c
10669 - a function does not inherit the RETURN trap if a DEBUG trap is
10670 currently running
10671
10672 12/2
10673 ----
10674 lib/glob/xmbsrtowcs.c
10675 - change xmbsrtowcs to handle the one case where malloc can fail
10676 (though it should not matter) -- don't try to free a null pointer
10677
10678 12/9
10679 ----
10680 subst.c
10681 - fix get_var_and_type to handle var[@], where `var' is a scalar
10682 variable, identically to var -- all calling expansions can now
10683 handle var[@] like var. Bug reported by agriffis@gentoo.org
10684
10685 12/10
10686 -----
10687 lib/readline/bind.c
10688 - make new-style "\M-x" keybindings obey `convert-meta' settings
10689 (bug reported by twaugh@redhat.com)
10690
10691 12/14
10692 -----
10693 builtins/set.def
10694 - added description of `-' option to help text
10695
10696 builtins/shopt.def
10697 - fix bug that caused `gnu_errfmt' to not be compiled in unless
10698 READLINE is defined
10699
10700 12/16
10701 -----
10702 subst.c
10703 - fixed a typo in string_extract_verbatim in first call to MBLEN
10704 (used `slen - 1' instead of `slen - i')
10705
10706 12/17
10707 -----
10708 subst.c
10709 - avoid some calls to strlen if the value is only being used for
10710 ADVANCE_CHAR and MB_CUR_MAX == 1 (since ADVANCE_CHAR doesn't need
10711 it unless multibyte characters are possible)
10712 - change string_extract_verbatim so it takes the length of the string
10713 as a parameter, so we don't have to recompute the length of the same
10714 string over and over again when doing word splitting (that kills if
10715 it's a long string)
10716
10717 12/18
10718 -----
10719 subst.c
10720 - in string_list_dollar_star, make sure to null-terminate the
10721 separator if the character is longer than one byte
10722
10723 12/22
10724 -----
10725 doc/{bash.1,bashref.texi}
10726 - changed text in quoting section explaining that double quotes do
10727 not prevent history expansion from taking place, and that backslashes
10728 escaping ! are not removed
10729
10730 12/28
10731 -----
10732 shell.c
10733 - set gnu_error_format to 1 if running under emacs. This should allow
10734 the emacs `next-error' stuff to work, at least for interactive shells
10735
10736 parse.y
10737 - change yy_stream_get to set interrupt_immediately before calling
10738 getc_with_restart when the shell is interactive. This avoids the
10739 synchronization problem caused by the call to QUIT in read_a_line,
10740 which results in the first character after a SIGINT/^C to be
10741 dropped
10742
10743 12/30
10744 -----
10745 builtins/mkbuiltins.c
10746 - changes to write long documentation to arrays as a single string by
10747 default, rather than an array of strings -- enabled by default
10748 - new option, -S, to restore old behavior of writing multiple strings
10749 for long documentation
10750 - changes to avoid filenames written when the separate-filenames option
10751 (-H) has been supplied being run through gettext
10752
10753 configure.in
10754 - new cofiguration option, --enable-single-help-strings (on by default),
10755 causes help text to be stored as a single string (or smaller set than
10756 one string per line)
10757
10758 builtins/Makefile.in
10759 - pass `-S' to mkbuiltins if single-help-strings is turned off
10760
10761 doc/bashref.texi
10762 - documented new `single-help-strings' configure option
10763
10764 1/3/2005
10765 --------
10766 jobs.c
10767 - make wait_for return a non-zero status if the job or processed
10768 waited for is suspended. Returns 128 + stop signal. This fixes
10769 the problem with `echo one && sleep 5 && echo two' displaying
10770 `two' after the sleep is suspended
10771
10772 1/5
10773 ---
10774 print_cmd.c
10775 - change indirection_level_string so the code duplicates the first
10776 character of $PS4 to indicate the indirection level, rather than
10777 the first byte
10778
10779 1/8
10780 ---
10781 variables.c
10782 - new special variable hook function for COMP_WORDBREAKS; sets
10783 rl_completer_word_break_characters back to NULL when the variable
10784 is unset
10785 - change bind_variable_value to understand dynamic variables with
10786 assign_function set, and handle them correctly. If the variable is
10787 being appended to, use make_variable_value to create the new
10788 value
10789 - change bind_variable_internal to understand dynamic variables with
10790 assign_function set, and handle them the same way
10791 - RANDOM and LINENO now get the integer attribute, so appending works
10792 as expected
10793 - ditto for HISTCMD, MAILCHECK, OPTIND
10794
10795 lib/readline/display.c
10796 - change _rl_make_prompt_for_search to set prompt_physical_chars
10797 appropriately
10798 - rl_save_prompt and rl_restore_prompt save and restore
10799 prompt_prefix_length
10800 - change redraw_prompt to use rl_save_prompt and rl_restore_prompt
10801 - change rl_restore_prompt to set the `save' variables back to
10802 NULL/0 so code can check whether or not the prompt has been saved
10803 - change rl_message and rl_clear_message to save and restore the
10804 prompt if the caller has not already done it (using a simple
10805 semaphore-like variable)
10806 - change rl_message to call expand_prompt, so that local_prompt and
10807 local_prompt prefix are set before calling the redisplay functions,
10808 in case the prompt is longer than a screenwidth (fixes bug
10809 reported to debian by epl@unimelb.edu.au)
10810
10811 lib/readline/doc/rltech.texi
10812 - make sure to note that rl_save_prompt should be called before
10813 rl_message, and rl_restore_prompt before rl_clear_message
10814
10815 pcomplete.c
10816 - make sure to save and restore the parser state around the call to
10817 execute_shell_function in gen_shell_function_matches. Fixes bug
10818 reported by a050106.1.keeLae3x@captaincrumb.com (cute)
10819
10820 lib/readline/readline.c
10821 - fix _rl_dispatch_subseq in the case where we're recursing back up
10822 the chain (r == -2) and we encounter a key shadowed by a keymap,
10823 but originally bound to self-insert. Calling rl_dispatch with
10824 ANYOTHERKEY as the first argument will call rl_insert, but with
10825 ANYOTHERKEY (256) as the char to insert. Use the shadow keymap
10826 and set things up to dispatch to rl_insert with the shadowed key
10827 as the argument. Fixes the bug reported by Thomas Glanzmann
10828 (sithglan@stud.uni-erlangen.de)
10829
10830 1/13
10831 ----
10832 command.h
10833 - new word flag: W_HASQUOTEDNULL
10834
10835 make_cmd.c
10836 - new function to allocate a WORD_DESC * without doing anything with a
10837 containing string: alloc_word_desc
10838
10839 make_cmd.h
10840 - extern declaration for alloc_word_desc
10841
10842 dispose_cmd.c
10843 - new function to just free a WORD_DESC * without freeing the contained
10844 string: dispose_word_desc
10845
10846 dispose_cmd.h
10847 - extern declaration for dispose_word_desc
10848
10849 subst.c
10850 - change some places to use alloc_word_desc
10851 - make same changes to word_list_quote_removal as were made to
10852 word_list_split
10853 - set W_HASQUOTEDNULL when a word is created with w->word[0] ==
10854 CTLNUL and w->word[1] == '\0'
10855
10856 subst.c
10857 - parameter_brace_expand_word now returns a WORD_DESC * -- changed
10858 callers to understand
10859 - parameter_brace_expand_indir now returns a WORD_DESC * -- changed
10860 callers to understand
10861 - parameter_brace_expand_rhs now returns a WORD_DESC * -- changed
10862 callers to understand
10863 - remove W_HASQUOTEDNULL from a word's flags when remove_quoted_nulls
10864 is called on the word's enclosed string
10865
10866 1/15
10867 ----
10868 subst.c
10869 - param_expand now returns a WORD_DESC * -- changed callers to
10870 understand
10871 - parameter_brace_expand now returns a WORD_DESC * -- changed
10872 callers to understand
10873 - in expand_word_internal, only call remove_quoted_nulls after a word
10874 is returned with W_HASQUOTEDNULL
10875 - changes to pass W_HASQUOTEDNULL flag out of expand_word_internal;
10876 changed callers to call remove_quoted_nulls only if return value has
10877 W_HASQUOTEDNULL set. This is a mostly-complete fix for the
10878 long-standing CTLNUL confusion between a quoted null expansion and
10879 the expansion of a variable with a literal '\177' in its value
10880 - change string_list_dollar_at to compute the separator character the
10881 same way as string_list_dollar_star: using the already-computed
10882 values generated in setifs()
10883 - when expanding unquoted $*, if $IFS is empty, check whether or not
10884 we're eventually going to split the results (e.g., on the rhs of an
10885 assignment statement) and concatenate the positional parameters as
10886 if the expansion were within double quotes if we're not going to
10887 split
10888
10889 tests/iquote.tests
10890 - test cases based on old bug reports about the quoted-null vs. 0177
10891 problem the recent code fixes
10892
10893 1/16
10894 ----
10895 dispose_cmd.c
10896 - set w->word to 0 before putting a WORD_DESC * back in the cache in
10897 dispose_word_desc; changed callers to delete those assignments
10898
10899 variables.c
10900 - change assign_random and get_random_value so that the random number
10901 generator only gets re-seeded once in a subshell environment, and
10902 assigning a value to RANDOM counts as seeding the generator. This
10903 makes the sequences a little more predictable
10904
10905 1/20
10906 ----
10907 lib/readline/history.c
10908 - fix replace_history_entry, remove_history to return NULL if
10909 passed index is < 0
10910
10911 1/22
10912 ----
10913 lib/sh/netconn.c
10914 - fix isnetconn() to understand that getpeername can return ENOTCONN
10915 to indicate that an fd is not a socket
10916
10917 configure.in
10918 - set BUILD_DIR to contain backslashes to escape any spaces in the
10919 directory name -- this is what make will accept in targets and
10920 prerequisites, so it's better than trying to use double quotes
10921 - set SIZE to the appropriate value if some cross-compiling tool
10922 chain is being used; `size' by default (can be overridden by
10923 SIZE environment variable)
10924
10925 Makefile.in
10926 - use $(SIZE) instead of size; set SIZE from configure
10927
10928 1/31
10929 ----
10930 arrayfunc.c
10931 - in array_value_internal, return NULL right away if the variable's
10932 value is NULL, instead of passing a null string to add_string_to_list
10933
10934 2/1
10935 ---
10936 jobs.h
10937 - new struct to hold stats and counters for child processes and jobs
10938 - change some uses of global and static variables to use members of
10939 new struct (struct jobstats)
10940
10941 2/2
10942 ---
10943
10944 jobs.[ch]
10945 - change PRUNNING to PALIVE
10946 - new define INVALID_JOB
10947 - new macro get_job_by_jid(ind), currently expands to jobs[ind]
10948 - new define J_JOBSTATE, operates on a JOB * like JOBSTATE operates on
10949 a job index
10950 - new function, reset_job_indices, called from delete_job if
10951 js.j_lastj or js.j_firstj are removed
10952 - change various functions to keep counters and stats in struct jobstats
10953
10954 pcomplete.c, builtins/common.c, builtins/{exit,fg_bg,jobs,kill,wait}.def
10955 - change global variables (e.g., job_slots) to struct members
10956 (e.g., js.j_jobslots)
10957 - use INVALID_JOB define where appropriate
10958 - use get_job_by_jid and J_JOBSTATE where appropriate
10959
10960 trap.c
10961 - change reset_or_restore_signal_handler to not free the exit trap
10962 string if the function pointer is reset_signal, which is used when
10963 the trap strings shouldn't be freed, like in command substitution
10964
10965 2/4
10966 ---
10967 jobs.c
10968 - new function, realloc_jobs_list, copies jobs array to newly-allocated
10969 memory shrinking (or growing) size to have next multiple of JOB_SLOTS
10970 greater than js.j_njobs
10971 - change compact_jobs_list to just call reap_dead_jobs and then
10972 realloc_jobs_list, simplifying it considerably
10973 - discard_pipeline now returns `int': the number of processes freed
10974 - slightly changed the logic deciding whether or not to call
10975 compact_jobs_list: now non-interactive shells will compact the
10976 list if it reaches MAX_JOBS_IN_ARRAY in size
10977
10978 parse.y
10979 - move test for backslash-newline after pop_string in shell_getc so
10980 that things like
10981
10982 ((echo 5) \
10983 (echo 6))
10984
10985 work right
10986
10987 2/8
10988 ---
10989 jobs.h
10990 - new structs for holding status of exited background processes, as
10991 POSIX specifies
10992 - new job flag: J_ASYNC
10993
10994 jobs.c
10995 - new functions to manipulate struct holding status of exited
10996 background processes
10997 - new members in struct jobstats to hold pointer to last created job
10998 and last created asynchronous job
10999 - initialize js.c_childmax in initialize_job_control
11000 - if the `async' arg to stop_pipeline is non-null, set the J_ASYNC
11001 flag in the job struct
11002 - set js.j_last_made_job and js.j_last_asynchronous_job in
11003 stop_pipeline
11004 - new function: find_last_proc, returns the PROCESS * to the last proc
11005 in a job's pipeline
11006 - changed find_last_pid to call find_last_proc
11007 - change delete_job to call bgp_add on the last proc of the job being
11008 deleted
11009 - change delete_all_jobs and wait_for_background_pids to call bgp_clear
11010
11011 2/9
11012 ---
11013 jobs.c
11014 - change wait_for_single_pid to look for pid in bgpids.list (using
11015 bgp_search()) if find_pipeline returns NULL
11016
11017 2/10
11018 ----
11019 support/shobj-conf
11020 - change the solaris-gcc stanza so that it auto-selects the appropriate
11021 options for ld depending on which `ld' gcc says it's going to run
11022
11023 2/11
11024 ----
11025 jobs.h
11026 - add support for PS_RECYCLED as a process state, add PRECYCLED macro
11027 to test it. Change PALIVE and PRUNNING macros to not count processes
11028 in PS_RECYCLED state
11029
11030 execute_cmd.c
11031 - restore use of last_pid as sentinel value; use NO_PID as sentinel
11032 only if RECYCLES_PIDS is defined
11033
11034 jobs.c
11035 - change find_job to return a pointer to the PROCESS the desired pid
11036 belongs to, analogous to find_pipeline returning pointer to JOB
11037 - change find_job callers to add extra argument
11038 - change running_only arguments to find_pipeline and find_job to
11039 alive_only, since we don't want recycled pids returned here and it
11040 better describes the result
11041 - new function find_process, calls find_pipeline and searches the
11042 returned pipeline for the PROCESS * describing the desired pid
11043 - in make_child, if fork() returns the same pid as the value of
11044 last_asynchronous_pid when RECYCLES_PIDS is defined, avoid pid
11045 aliasing by resetting last_asynchronous_pid to 1
11046 - use PRUNNING instead of child->running, since we, for the most
11047 part, don't want to consider recycled pids (e.g., in make_child())
11048 - call find_process instead of find_pipeline in waitchld()
11049 - use PEXITED(p) instead of testing p->running == PS_DONE
11050 - in make_child, call bgp_delete to remove a just-created pid from the
11051 last of saved pid statuses
11052 - in add_process, check whether or not pid being added is already in
11053 the_pipeline or the jobs list (using find_process) and mark it as
11054 recycled if so
11055 - This set of fixes mostly came from Pierre Humblet
11056 <pierre.humblet@ieee.org> to fix pid aliasing and reuse problems on
11057 cygwin
11058
11059 variables.c
11060 - set $_ from the environment if we get it there, set to $0 by
11061 default if not in env
11062
11063 doc/{bashref.texi,bash.1}
11064 - a couple of clarifying changes to the description of $_ based on
11065 comments from Glenn Morris <gmorris+mail@ast.cam.ac.uk>
11066
11067 2/15
11068 ----
11069 shell.c
11070 - use strstr instead of strmatch when checking whether $EMACS contains
11071 `term' -- simpler and faster
11072
11073 2/18
11074 ----
11075 builtins/cd.def
11076 - implement posix requirement that `pwd -P' set $PWD to a directory
11077 name containing no symlinks
11078 - add new function, setpwd(), just sets (and changes exported value)
11079 of PWD
11080
11081 doc/bashref.texi
11082 - add note to posix mode section about pwd -P setting $PWD
11083
11084 doc{bash.1,bashref.texi}
11085 - added note that BASH_ARGC and BASH_ARGV are only set in extended
11086 debug mode
11087 - expand description of extdebug option to include everything changed
11088 by extended debug mode
11089
11090 2/19
11091 ----
11092 pathexp.h
11093 - new flag macro, FNMATCH_IGNCASE, evaluates to FNM_CASEFOLD if the
11094 match_ignore_case variable is non-zero
11095
11096 execute_cmd.c
11097 - new variable, match_ignore_case
11098 - change call to strmatch() in execute_case_command so it includes
11099 FNMATCH_IGNCASE
11100
11101 test.c
11102 - change call to strmatch() in patcomp() so that pattern matching
11103 calls for [[ ... ]] obey the match_ignore_case variable
11104
11105 lib/sh/shmatch.c
11106 - if match_ignore_case is set, enable REG_ICASE in the regexp match
11107 flags
11108
11109 builtins/shopt.def
11110 - new settable option, `nocasematch', controls the match_ignore_case
11111 variable. Currently alters pattern matching for case and [[ ... ]]
11112 commands (==, !=, and =~ operators)
11113
11114 doc/{bashref.texi,bash.1}
11115 - updated descriptions of [[ and case to include reference to
11116 nocasematch option
11117
11118 2/22
11119 ----
11120 builtins/mkbuiltins.c
11121 - add `times' to the list of posix special builtins
11122
11123 2/23
11124 ----
11125 builtins/cd.def
11126 - posix mode no longer turns on effect of -P option on $PWD if a
11127 directory is chosen from CDPATH
11128
11129 doc/bashref.texi
11130 - clarified that in posix mode, reserved words are not alias expanded
11131 only in a reserved word context
11132 - removed item about cd, $CDPATH, and -P from posix mode section
11133
11134 2/24
11135 ----
11136 builtins/reserved.def
11137 - minor cleanups to the description of `if'
11138
11139 3/2
11140 ---
11141 subst.c
11142 - change list_string and get_word_from_string to explicitly treat an
11143 IFS character that is not space, tab, or newline *and any adjacent
11144 IFS white space* as a single delimiter, as SUSv3/XPG6 says
11145
11146 builtins/read.def
11147 - check whether or not the number of fields is exactly the same as
11148 the number of variables instead of just assigning the rest of the
11149 line (minus any trailing IFS white space) to the last variable.
11150 This parses a field and checks whether or not it consumes all of
11151 the input (including any trailing field delimiters), falling back
11152 to the previous behavior if it does not. This is what POSIX.2
11153 specifies, I believe (and the consensus of the austin-group list).
11154 This requires a few tests in read.tests to be changed: backslashes
11155 escaping IFS whitespace characters at the end of input cause the
11156 whitespace characters to be preserved in the value assigned to the
11157 variable, and the trailing non-whitespace field delimiter issue
11158
11159 3/7
11160 ---
11161 configure.in
11162 - add -D_POSIX_SOURCE to the LOCAL_CFLAGS for Interix
11163
11164 3/8
11165 ---
11166 bashline.c
11167 - make bash_directory_expansion a void function, since it doesn't have
11168 any return value
11169
11170 3/9
11171 ---
11172 builtins/read.def
11173 - when testing for a pipe, use `fd' instead of hard-coding 0, since we
11174 can read from other file descriptors now
11175
11176 lib/sh/zread.c
11177 - in zsyncfd, only set lind and lused to 0 if the lseek succeeds.
11178 If the lseek fails, we might steal input from other programs, but
11179 a failed lseek won't cause us to erroneously discard input
11180
11181 3/11
11182 ----
11183 builtins/evalstring.c
11184 - don't allow parse_and_execute to short-circuit and call exec() if
11185 the command's return value is being inverted
11186
11187 3/15
11188 ----
11189 builtins/printf.def
11190 - new macro PC to call putchar and increment number of chars printed -
11191 fixes bug in computation of value for %n format char
11192 - `tw' is now a global var so printstr can modify it using PC()
11193 - convert PF macro to use asprintf into a local buffer
11194 Preparation for printf -v var
11195 - add code to add the text printed to a `variable buffer' if -v option
11196 supplied. The buffer grows as needed
11197 - printf now takes a `-v var' option to put the output into the variable
11198 VAR rather than sending it to stdout. It does not:
11199 print partial output on error (e.g., format string error)
11200 handle NULs in the variable value, as usual
11201
11202 3/16
11203 ----
11204 parse.y
11205 - fix bug in prompt string decoding that caused a core dump when PS1
11206 contained \W and PWD was unset (null pointer deref)
11207
11208 builtins/printf.def
11209 - changed -v var behavior so it stores partial output into the named
11210 variable upon an error
11211
11212 3/24
11213 ----
11214 lib/readline/bind.c
11215 - bool_to_int now takes a `const char *' argument
11216
11217 support/{printenv,recho,zecho}.c
11218 - include config.h
11219 - include "bashansi.h" for appropriate extern function declarations
11220
11221 configure.in
11222 - on MacOS X 10.4, compensate for loader not allowing static library
11223 to override existing system dynamic library when compiling -dynamic
11224 (affects readline and history libraries); so use absolute pathname
11225 instead of -lreadline as library name
11226
11227 lib/glob/{glob,sm_loop,smatch}.c
11228 - make sure to cast arguments to (char *) or (unsigned char *) as
11229 appropriate to avoid gcc4 warnings
11230
11231 lib/glob/smatch.c
11232 - collsym (single-byte version) now takes a (CHAR *) first argument to
11233 match callers; cast argument to strncmp appropriately
11234
11235 lib/sh/snprintf.c
11236 - fix ldfallback and dfallback to handle width and precision specs in
11237 the format passed to sprintf()
11238 - fix STAR_ARGS macro to deal with negative field widths and precisions
11239
11240 3/25
11241 ----
11242 builtins/printf.def
11243 - since a negative precision in a "x.x[fFgGeE]" format specifier should
11244 be allowed but treated as if the precision were missing, let it
11245 through
11246
11247 lib/sh/snprintf.c
11248 - fix * code to deal with a negative precision by treating it as if
11249 the `.' and any digit string in the precision had not been specified
11250 - fix format parsing code to deal with a negative inline precision,
11251 e.g., "%4.-4f" by treating it as if the `'. and any digit string in
11252 the precision had not been specified
11253 - a `+' in a format specifier should only act as a flag if it comes
11254 before a `.' (otherwise it is ignored)
11255
11256 lib/readline/vi_mode.c
11257 - new function, rl_vi_rubout, to rl_rubout as rl_vi_delete is to
11258 rl_delete; saves deleted text for possible reinsertion as with any
11259 vi-mode `text modification' command (fixes problem with `X' reported
11260 by beat.wieland@gmx.ch)
11261
11262 lib/readline/vi_keymap.c
11263 - bind `X' in vi command mode to rl_vi_rubout
11264
11265 lib/readline/funmap.c
11266 - add a bindable `vi-rubout' command, runs rl_vi_rubout
11267
11268 lib/readline/text.c
11269 - rewrote internals of _rl_rubout_char to make structure cleaner
11270
11271 lib/readline/{complete,text}.c
11272 - changed code to remove #ifdef HANDLE_MULTIBYTE where possible
11273
11274 3/28
11275 ----
11276 lib/readline/examples/rl.c
11277 - include <sys/stat.h> instead of posixstat.h if READLINE_LIBRARY not
11278 defined
11279
11280 subst.c
11281 - fix mbstrlen to treat invalid multibyte sequences as sequences of
11282 single-byte characters
11283
11284 4/8
11285 ---
11286 configure.in
11287 - default SIZE to `:' if cross-compiling and an appropriate size for
11288 the target is not found
11289
11290 4/11
11291 ----
11292 subst.c
11293 - change match_upattern and match_wpattern to check whether or not the
11294 supplied pattern matches anywhere in the supplied string, prefixing
11295 and appending the pattern with `*' if necessary. If it doesn't we
11296 can short-circuit immediately rather than waste time doing up to
11297 N-1 unsuccessful calls to strmatch/wcsmatch (which kills for long
11298 strings, even if the pattern is short)
11299
11300 4/12
11301 ----
11302 configure.in
11303 - make sure the special case for MacOS X 10.4 only kicks in if the
11304 `--with-installed-readline' option isn't supplied
11305
11306 lib/readline/{callback,readline,signals}.c
11307 - make sure rl_prep_term_function and rl_deprep_term_function aren't
11308 dereferenced if NULL (as the documentation says)
11309
11310 builtins/mkbuiltins.c
11311 - don't bother with the special HAVE_BCOPY code; just use straight
11312 assignments
11313
11314 builtins/ulimit.def
11315 - use _POSIX_PIPE_BUF in pipesize() if it's defined and PIPE_BUF is
11316 not
11317
11318 4/13
11319 ----
11320 execute_cmd.c
11321 - add cm_function_def to the list of control structures for which
11322 child processes are forked when pipes come in or out
11323
11324 4/14
11325 ----
11326 builtins/read.def
11327 - make sure the ^As added for internal quoting are not counted as
11328 characters read when -n is supplied
11329
11330 4/20
11331 ----
11332 redir.c
11333 - fix redir_open so that the repeat open on failure that AFS support
11334 adds restores the correct value of errno for any error message
11335
11336 4/26
11337 ----
11338
11339 Makefile.in
11340 - make sure mksignames and mksyntax are invoked with the $(EXEEXT)
11341 extension
11342
11343 4/28
11344 ----
11345 lib/readline/readline.h
11346 - new state variable: RL_STATE_CALLBACK, means readline is using the
11347 callback interface
11348
11349 lib/readline/callback.c
11350 - set RL_STATE_CALLBACK in rl_callback_handler_install, unset in
11351 rl_callback_handler_remove
11352
11353 4/29
11354 ----
11355 config-top.h
11356 - DONT_REPORT_SIGPIPE is now on by default, since it apparently
11357 interferes with scripts
11358
11359 configure.in
11360 - arrange things so PGRP_PIPE is defined on Linux-2.4+ and version 3
11361 kernels (ones that apparently schedule children to run before their
11362 parent)
11363
11364 4/30
11365 ----
11366 builtins/caller.def
11367 - add call to no_options, so it can handle `--' option
11368
11369 doc/{bash.1,bashref.texi}
11370 - note explicitly that test, :, true, and false don't understand --
11371 as meaning the end of options
11372
11373 5/7
11374 ---
11375 support/shobj-conf
11376 - darwin 8 needs the same LDFLAGS setting as darwin 7
11377
11378 parse.y
11379 - in save_parser_state, make sure we cast the return value from
11380 xmalloc() to the right type
11381 - remove casts to (char *) in calls to yyerror()
11382
11383 lib/readline/signals.c
11384 - make SIGQUIT and SIGALRM code conditional on their definition
11385 - use raise() to send a signal if we don't have kill()
11386
11387 lib/readline/display.c
11388 - some MS-DOS and MINGW changes from the cygwin and mingw folks
11389
11390 config.h.in
11391 - add HAVE_PWD_H for <pwd.h>
11392 - add HAVE_FCNTL, HAVE_KILL for respective system calls
11393 - add HAVE_GETPW{ENT,NAM,UID} for passwd functions
11394
11395 configure.in
11396 - add check for <pwd.h>
11397 - add checks for fcntl, kill system calls
11398 - add checks for getpw{ent,nam,uid} C library functions
11399 - pass a flag indicating we're cross compiling through to
11400 CFLAGS_FOR_BUILD in Makefile.in
11401
11402 lib/readline/complete.c
11403 - guard inclusion of <pwd.h> with HAVE_PWD_H
11404 - don't provide a missing declaration for getpwent if we don't have it
11405 - guard calls to {get,end}pwent with HAVE_GETPWENT
11406
11407 lib/readline/shell.c
11408 - guard inclusion of <pwd.h> with HAVE_PWD_H
11409 - guard inclusion of <fcntl.h> with HAVE_FCNTL_H
11410 - don't provide a missing declaration for getpwuid if we don't have it
11411 - guard calls to getpwuid with HAVE_GETPWUID
11412 - don't bother with body of sh_unset_nodelay_mode if we don't have
11413 fcntl
11414
11415 lib/tilde/tilde.c
11416 - guard inclusion of <pwd.h> with HAVE_PWD_H
11417 - guard calls to getpw{nam,uid} with HAVE_GETPW{NAM,UID}
11418 - guard calls to {get,end}pwent with HAVE_GETPWENT
11419
11420 Makefile.in,builtins/Makefile.in
11421 - @CROSS_COMPILE@ is substituted into CFLAGS_FOR_BUILD (equal to
11422 -DCROSS_COMPILING if bash is being cross-compiled)
11423
11424 5/9
11425 ---
11426 aclocal.m4
11427 - print version as `0.0' in RL_LIB_READLINE_VERSION if the
11428 `rl_gnu_readline_p' variable isn't 1 (accept no imitations)
11429
11430 5/11
11431 ----
11432 lib/readline/rlprivate.h
11433 - definition of a readline `search context', to be use for incremental
11434 search initially and other types of search later. Original from
11435 Bob Rossi as part of work on incremental searching problems when
11436 using callback interface
11437
11438 lib/readline/isearch.c
11439 - functions to allocate and free search contexts
11440 - function to take a search context and a character just read and
11441 `dispatch' on it: change search parameters, add to search string,
11442 search further, etc.
11443 - isearch is now completely context-driven: a search context is
11444 allocated and passed to the rest of the functions
11445
11446 5/12
11447 ----
11448 lib/readline/isearch.c
11449 - an additional `isearch cleanup' function that can be called from
11450 the callback interface functions when the search is to be terminated
11451 - an additional `isearch callback' function that can be called from
11452 rl_callback_read_char when input is available
11453 - short-circuit from rl_search_history after initialization if
11454 the callback interface is being used
11455
11456 lib/readline/callback.c
11457 - in rl_callback_read_char(), if RL_STATE_ISEARCH is set, call
11458 _rl_isearch_callback to read the character and dispatch on it.
11459 If RL_STATE_ISEARCH is unset when that call returns, and there is
11460 input pending, call rl_callback_read_char() again so we don't
11461 have to wait for new input to pick it up
11462
11463 support/shobj-conf,configure.in
11464 - add support for dragonfly bsd, the same as freebsd
11465
11466 5/13-5/15
11467 ---------
11468 lib/readline/callback.c
11469 - support for readline functions to `register' a function that will
11470 be called when more input is available, with a generic data
11471 structure to encapsulate the arguments and parameters. Primarily
11472 intended for functions that read a single additional character,
11473 like quoted-insert
11474 - support for callback code reading numeric arguments in a loop,
11475 using readline state and an auxiliary variable
11476 - support for callback code performing non-incremental searches using
11477 the same search context struct as the isearch code
11478
11479 lib/readline/{callback,display}.c
11480 - if a callback function sets `_rl_redisplay_wanted', the redisplay
11481 function will be called as soon as it returns
11482
11483 lib/readline/input.c
11484 - changes to _rl_read_mbchar to handle reading the null multibyte
11485 character and translating it into '\0'
11486
11487 lib/readline/misc.c
11488 - break rl_digit_loop() into component functions that can be called
11489 individually from the callback code more easily
11490 - share some of the functions with rl_digit_loop1() in vi_mode.c
11491
11492 lib/readline/readline.h
11493 - change the version #defines to reflect readline 5.1
11494
11495 lib/readline/search.c
11496 - break code into smaller functions that can be composed to work with
11497 the callback code more easily
11498
11499 lib/readline/text.c
11500 - in rl_quoted_insert(), don't mess around with the tty signals if
11501 running in `callback mode'
11502
11503 lib/readline/vi_mode.c
11504 - changed set-mark, goto-mark, change-char, and char-search to work
11505 when called by callback functions
11506
11507 5/17
11508 ----
11509
11510 lib/readline/rlprivate.h
11511 - new struct declaration for a `reading key sequence' context
11512
11513 lib/readline/readline.c
11514 - new variable, _rl_dispatching_keymap, keeps track of which keymap
11515 we are currently searching
11516 - functions to allocate and deallocate contexts for reading multi-char
11517 key sequences
11518
11519 5/18
11520 ----
11521 lib/readline/rlprivate.h
11522 - new struct defining a context for multiple-key key sequences (the
11523 base case is escape-prefixed commands)
11524
11525 lib/readline/readline.c
11526 - change structure of _rl_dispatch_subseq to allow for callback code
11527 to use it - rudimentary support for supporting the existing
11528 recursion using a stack of contexts, each with a reference to the
11529 previous
11530 - fix so that ^G works when in callback mode
11531
11532 lib/readline/callback.c
11533 - call the appropriate multiple-key sequence callback if the state is
11534 set
11535
11536 5/19
11537 ----
11538 lib/readline/readline.c
11539 - broke code from _readline_internal_char after call to rl_dispatch
11540 out into separate function: _rl_internal_char_cleanup, callable by
11541 other parts of the code
11542 - change _rl_internal_char_cleanup to unset _rl_want_redisplay after
11543 it calls (*rl_redisplay_func)
11544
11545 lib/readline/callback.c
11546 - call _rl_internal_char_cleanup from rl_callback_read_char when
11547 appropriate
11548
11549 5/24
11550 ----
11551 lib/readline/callback.c
11552 - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
11553 simulate the recursion used to decode multicharacter key sequences
11554 (even things like ESC- as meta-prefix)
11555 - call setjmp in rl_callback_read_char to give things like rl_abort
11556 a place to jump, since the saved location in readline() will not
11557 be valid
11558 - keep calling _rl_dispatch_callback from rl_callback_read_char while
11559 we are still decoding a multi-key key sequence
11560 - keep calling readline_internal_char from rl_callback_read_char while
11561 we are reading characters from a macro
11562
11563 lib/readline/macro.c
11564 - use a slightly different strategy upon encountering the end of a macro
11565 when using the callback interface: when the last character of a
11566 macro is read, and we are reading a command, pop the macro off the
11567 stack immediately so the loop in rl_callback_read_char terminates
11568 when it should
11569
11570 lib/readline/readline.c
11571 - if longjmp() is called and we end up at the saved location while
11572 using the callback interface, just return -- don't go back into a
11573 blocking read
11574 - new function to dispose a chain of rl_keyseq_cxts
11575 - only read new input in _rl_dispatch_callback if the KSEQ_DISPATCHED
11576 flag is not set in the current keyseq context -- if it is, we are
11577 traversing the chain back up and should use what we already saved
11578 - use -3 as a magic value from _rl_dispatch_subseq to indicate that
11579 we're allocating a new context and moving downward in the chain
11580 (a special return value for the benefit of _rl_dispatch_callback)
11581
11582 lib/readline/rlprivate.h
11583 - new extern declaration for _rl_keyseq_chain_dispose
11584
11585 6/1
11586 ---
11587 builtins/read.def
11588 - fixed a bug that occurred when reading a set number of chars and
11589 the nth char is a backslash (read one too many). Bug reported by
11590 Chris Morgan <chmorgan@gmail.com>
11591
11592 execute_cmd.c
11593 - fix execute_builtin so the `unset' builtin also operates on the
11594 temporary environment in POSIX mode (as well as source and eval),
11595 so that unsetting variables in the temporary environment doesn't
11596 leave them set when unset completes. Report by Eric Blake
11597 <ebb9@byu.net>
11598
11599 array.c
11600 - fix from William Park for array_rshift when shifting right on an
11601 empty array -- corrects calculation of array->max_index
11602
11603 builtins/exec.def
11604 - if an exec fails and the execfail option is set, don't call
11605 restart_job_control unless the shell is interactive or job_control
11606 is set
11607
11608 jobs.c
11609 - add a run-time check for WCONTINUED being defined in header files
11610 but rejected with EINVAL by waitpid(). Fix from Maciej Rozycki
11611 <macro@linux-mips.org>
11612
11613 6/20
11614 ----
11615 bashhist.c
11616 - make sure calls to sv_histchars are protected by #ifdef BANG_HISTORY
11617 - ditto for calls to history_expand_line_internal
11618
11619 6/23
11620 ----
11621 doc/bashref.texi
11622 - remove extra blank lines in @menu constructs
11623
11624 variables.c
11625 - assign export_env to environ (extern char **) every time it changes
11626 (mostly in add_to_export_env define), so maybe getenv will work on
11627 systems that don't allow it to be replaced
11628
11629 6/29
11630 ----
11631 bashline.c
11632 - in bash_directory_completion_hook, be careful about not turning `/'
11633 into `//' and `//' into `///' for benefit of those systems that treat
11634 `//' as some sort of `network root'. Fix from Eric Blake
11635 <ebb9@byu.net>
11636
11637 lib/readline/complete.c
11638 - in to_print, do the right thing after stripping the trailing slash
11639 from full_pathname: // doesn't turn into /, and /// doesn't become
11640 //. Fix from Eric Blake <ebb9@byu.net>
11641
11642 6/30
11643 ----
11644 lib/malloc/trace.c
11645 - include <unistd.h> if it's available for a definition of size_t
11646
11647 jobs.c
11648 - in wait_for, if a child process is marked as running but waitpid()
11649 returns -1/ECHILD (e.g., when the bash process is being traced by
11650 strace), make sure to increment c_reaped when marking the child as
11651 dead
11652 - in without_job_control, make sure to close the pgrp pipe after
11653 calling start_pipeline
11654
11655 7/1
11656 ---
11657 Makefile.in
11658 - only remove pathnames.h when the other files created by running
11659 configure are removed (e.g., Makefile). Fix from William Park
11660
11661 lib/sh/shquote.c
11662 - since backslash-newline disappears when within double quotes, don't
11663 add a backslash in front of a newline in sh_double_quote. Problem
11664 reported by William Park
11665
11666 jobs.c
11667 - in notify_of_job_status, don't print status messages about
11668 terminated background processes unless job control is active
11669
11670 bashhist.c
11671 - new variable, hist_last_line_pushed, set to 0 in really_add_history
11672 (used by `history -s' code)
11673
11674 bashhist.h
11675 - new extern declaration for history -s
11676
11677 builtins/history.def
11678 - don't remove last history entry in push_history if it was added by
11679 a call to push_history -- use hist_last_line_pushed as a sentinel
11680 and set it after adding history entry. This allows multiple
11681 calls to history -s to work right: adding all lines to the history
11682 rather than deleting all but the last. Bug reported by Matthias
11683 Schniedermeyer <ms@citd.de>
11684 - pay attention to hist_last_line_pushed in expand_and_print_history()
11685 so we don't delete an entry pushed by history -s
11686
11687 7/4
11688 ---
11689 print_cmd.c
11690 - fix print_arith_for_command to not print so many blanks between
11691 expressions in ((...))
11692
11693 command.h
11694 - new word flag: W_DQUOTE. Means word should be treated as if double
11695 quoted
11696
11697 make_cmd.c
11698 - add W_DQUOTE to word flags in make_arith_for_expr
11699
11700 parse.y
11701 - add W_DQUOTE to word flags for (( ... )) arithmetic commands
11702
11703 subst.c
11704 - don't perform tilde expansion on a word with W_DQUOTE flag set
11705 - don't perform process substitution on a word with W_DQUOTE flag set
11706
11707 arrayfunc.c
11708 - expand an array index within [...] the same way as an arithmetic
11709 expansion between (( ... ))
11710
11711 lib/readline/input.c
11712 - use getch() instead of read() on mingw
11713
11714 lib/readline/readline.c
11715 - add a few key bindings for the arrow keys on mingw
11716
11717 lib/readline/rldefs.h
11718 - if on mingw, define NO_TTY_DRIVER
11719
11720 lib/readline/rltty.c
11721 - compile in the stub functions for _rl_{disable,restore}_tty_signals
11722 if on mingw
11723 - compile in stub function for rl_restart_output on mingw
11724 - make sure enough functions and macros are defined to compile if
11725 NO_TTY_DRIVER is defined (lightly tested - builds on MacOS X, at
11726 least)
11727
11728 7/7
11729 ---
11730 command.h
11731 - add a `flags' member to the PATTERN_LIST structure
11732
11733 make_cmd.c
11734 - intialize the `flags' member of a PATTERN_LIST when it's created
11735
11736 builtins/psize.c
11737 - protect extern declaration of errno with usual #ifdef errno
11738
11739 configure.in, variables.c
11740 - changes for QNX 6.x
11741
11742 7/9
11743 ---
11744 parse.y
11745 - fix parse_matched_pair to handle single and double quoted strings
11746 inside old-style command substitution (``) since they can each
11747 quote the ` and embedded $-expansions. Report by Eric Blake
11748 <ebb9@byu.net>
11749
11750 {configure,Makefile}.in
11751 - TILDE_LIB is now substituted into Makefile by configure
11752
11753 configure.in
11754 - if configuring --with-installed-readline on cygwin, set TILDE_LIB
11755 to the empty string to avoid multiply-defined symbols. Cygwin
11756 doesn't allow undefined symbols in dynamic libraries. Report by
11757 Eric Blake <ebb9@byu.net>
11758
11759 7/11
11760 ----
11761 input.c
11762 - in duplicate_buffered_stream, don't call free_buffered_stream if the
11763 two buffered streams share the same b_buffer object (e.g., if they
11764 had already been duplicated with a previous call). Fixes Debian bug
11765 reported by eero17@bigfoot.com
11766
11767 7/12
11768 ----
11769 shell.c
11770 - make set_shell_name more resistant to a NULL argument
11771 - in bind_args, use < instead of != when counting the arguments and
11772 making the arg list
11773 - in main(), make sure arg_index is not initialized to a value greater
11774 than argc
11775
11776 7/14
11777 ----
11778 lib/readline/display.c
11779 - in expand_prompt, don't set the location of the last invisible
11780 char if the sequence is zero length (\[\])
11781
11782 7/15
11783 ----
11784 doc/{bash.1,bashref.texi}
11785 - document that the shell uses $TMPDIR when creating temporary files
11786
11787 7/20
11788 ----
11789 [bash-3.1-alpha1 frozen]
11790
11791 7/29
11792 ----
11793 builtins/evalstring.c
11794 - make sure that parse_and_execute saves and restores the value of
11795 loop_level, so loops in sourced scripts and eval'd strings don't
11796 mess up the shell's parser state
11797
11798 bashline.c
11799 - change command_subst_completion_function to suppress appending
11800 any character to a unique completion, instead of a space, unless
11801 the last word in the quoted command substitution completes to a
11802 directory name. In that case we append the expected slash
11803
11804 8/1
11805 ---
11806 builtins/printf.def
11807 - make sure variables are initialized if their values are tested later
11808
11809 [bash-3.1-alpha1 updated and re-frozen]
11810
11811 8/2
11812 ---
11813 variables.c
11814 - make sure to call stifle_history with an `int' instead of an intmax_t.
11815 Sometimes it makes a difference
11816
11817 8/3
11818 ---
11819 [bash-3.1-alpha1 released]
11820
11821 support/mksignames.c
11822 - add `SIGSTKFLT' (RHE3)
11823 - add `SIGXRES' (Solaris 9)
11824
11825 8/4
11826 ---
11827 builtins/ulimit.def
11828 - fix typo to make `x' the right option for locks
11829 - add new options to short help synopsis
11830
11831 variables.c
11832 - use get_variable_value instead of direct reference to value_cell
11833 in make_variable_value when appending to the current value, so
11834 references to array variables without subscripts will be equivalent
11835 to element 0
11836
11837 lib/readline/text.c
11838 - rewrote rl_change_case to correctly change the case of multibyte
11839 characters where appropriate
11840
11841 8/5
11842 ---
11843 configure.in
11844 - remove call to obsolete macro AC_ACVERSION
11845 - remove special calls to AC_CYGWIN and AC_MINGW32; AC_CANONICAL_HOST
11846 takes care of those cases
11847
11848 general.h
11849 - include `chartypes.h' for definition of ISALPHA
11850 - fix definitions of ABSPATH and RELPATH for cygwin
11851 - fix definition of ISDIRSEP for cygwin to allow backslash as a
11852 directory name separator
11853
11854 8/9
11855 ---
11856 builtins/setattr.def
11857 - when setting a variable from the temporary environment in
11858 set_var_attribute (e.g., `LC_ALL=C export LC_ALL'), make sure to
11859 call stupidly_hack_special_variables after binding the variable in
11860 the current context
11861
11862 builtins/printf.def
11863 - make sure to call stupidly_hack_special_variables if using `printf -v'
11864 to put formatted output in a shell variable
11865
11866 8/11
11867 ----
11868 support/shobj-conf
11869 - new variable: SHLIB_LIBPREF, prefix for shared library name (defaults
11870 to `lib'
11871 - new variable: SHLIB_DLLVERSION, used on Cygwin to set the library
11872 version number
11873 - new variable: SHLIB_DOT, separator character between library name and
11874 suffix and version information (defaults to `.')
11875 - new stanza for cygwin to generate windows-compatible dll
11876
11877 8/14
11878 ----
11879 variables.c
11880 - new special variable function for Cygwin, so the export environment
11881 is remade when HOME is changed. The environment is the only way to
11882 get information from the shell to cygwin dlls, for instanace, when
11883 bash is compiled to use an already-installed libreadline
11884
11885 variables.h
11886 - new extern declaration for sv_home
11887
11888 8/15
11889 ----
11890 lib/readline/display.c
11891 - call init_line_structures from rl_redisplay if vis_lbreaks == 0
11892 to avoid consequences of a poorly-timed SIGWINCH
11893
11894 8/16
11895 ----
11896 subst.c
11897 - fix logic for performing tilde expansion when in posix mode (don't
11898 rely on W_TILDEEXP flag always being set, because it won't be when
11899 expanding the RHS of assignment statement). Use W_TILDEEXP only
11900 when deciding to expand a word marked as W_ASSIGNMENT that doesn't
11901 precede a command name
11902
11903 8/17
11904 ----
11905 execute_cmd.c
11906 - in execute_function, when subshell == 1, don't short-cut by using
11907 the command contained in the group command -- if you do, any
11908 redirections attached to the group command (function) don't get
11909 executed
11910
11911 general.h
11912 - new #define, FS_READABLE, indicates file is readable by current
11913 user
11914
11915 findcmd.c
11916 - rewrote file_status to use S_xxx POSIX file mode bits and to add
11917 support for FS_READABLE (affects ./source and searching $PATH for
11918 scripts whose names are supplied as arguments on the command line)
11919 - change find_path_file to look for readable files -- source requires
11920 it
11921 - change find_in_path_element to do the right thing when FS_READABLE
11922 is supplied as a flag
11923
11924 doc/bashref.texi
11925 - remove note about posix non-compliance in `.': we now require and
11926 look for readable files when searching $PATH
11927
11928 8/20
11929 ----
11930 subst.c
11931 - fix setifs to handle case where passed variable is non-zero but
11932 v->value == 0 (as in an unset local variable); treat IFS as unset
11933 in this case
11934
11935 jobs.c
11936 - in kill_pid, if asked to killpg a process or pgrp whose pgrp is
11937 recorded as the same as the shell's, just call killpg and let the
11938 chips fall where they may -- there may be other processes in that
11939 pgrp that are not children of the shell, so killing each process
11940 in the pipeline will not do a complete job, and killpg'ing each
11941 such process will send too many signals in the majority of cases
11942
11943 builtins/cd.def
11944 - in posix mode, pwd needs to check that the value it prints and `.'
11945 are the same file
11946
11947 builtins/read.def
11948 - if reading input from stdin in a non-interactive shell and calling
11949 `read', call sync_buffered_stream to seek backward in the input
11950 stream if necessary (XXX - should we do this for all shell builtins?)
11951
11952 8/23
11953 ----
11954 builtins/cd.def
11955 - in posix mode, if canonicalization of the absolute pathname fails
11956 because the path length exceeds PATH_MAX, but the length of the passed
11957 (non-absolute) pathname does not, attempt the chdir, just as when
11958 not in posix mode
11959
11960 builtins/type.def
11961 - don't have describe_command call sh_makepath if the full path found
11962 is already an absolute pathname (sh_makepath will stick $PWD onto the
11963 front of it)
11964
11965 8/24
11966 ----
11967
11968 jobs.c
11969 - in posix mode, don't have start_job print out and indication of
11970 whether the job started by `bg' is the current or previous job
11971 - change start_job to return success if a job to be resumed in the
11972 background is already running. This means that bg won't fail when
11973 asked to bg a background job, as SUSv3/XPG6 requires
11974 - new function, init_job_stats, to zero out the global jobstats struct
11975
11976 {jobs,nojobs}.c
11977 - change kill_pid to handle pids < -1 by killing process groups
11978
11979 jobs.h
11980 - extern declaration for init_job_stats
11981
11982 lib/readline/history.c
11983 - check whether or not the history list is null in remove_history
11984
11985 builtins/history.def
11986 - delete_last_history is no longer static so fc builtin can use it
11987
11988 builtins/fc.def
11989 - use free_history_entry in fc_replhist instead of freeing struct
11990 members individually
11991 - call delete_last_history from fc_replhist instead of using inline
11992 code
11993 - if editing (-l not specified), make sure the fc command that caused
11994 the editing is removed from the history list, as POSIX specifies
11995
11996 builtins/kill.def
11997 - just call kill_pid with any pid argument and let it handle pids < -1
11998 This is the only way to let kill_pid know whether a negative pid or
11999 a job spec was supplied as an argument to kill
12000
12001 builtins/fg_bg.def
12002 - force fg_bg to return EXECUTION_SUCCESS explicitly if called by bg
12003 and start_job returns successfully
12004 - bg now returns success only if all the specified jobs were resumed
12005 successfully
12006
12007 execute_cmd.c
12008 - call init_job_stats from initialize_subshell to zero out the global
12009 job stats structure
12010
12011 8/25
12012 ----
12013 bashline.c
12014 - change vi_edit_and_execute_command to just call vi when in posix
12015 mode, instead of checking $FCEDIT and $EDITOR
12016
12017 lib/readline/search.c
12018 - if in vi_mode, call rl_free_undo_list in make_history_line_current
12019 to dispose of undo list accumulated while reading the search string
12020 (if this isn't done, since vi mode leaves the current history
12021 position at the entry which matched the search, the call to
12022 rl_revert_line in rl_internal_teardown will mangle the matched
12023 history entry using a bogus rl_undo_list)
12024 - call rl_free_undo_list after reading a non-incremental search string
12025 into rl_line_buffer -- that undo list should be discarded
12026
12027 lib/readline/rlprivate.h
12028 - add UNDO_LIST * member to search context struct
12029
12030 lib/readline/isearch.c
12031 - initialize UNDO_LIST *save_undo_list member of search context struct
12032
12033 8/27
12034 ----
12035 lib/readline/bind.c
12036 - change rl_parse_and_bind to strip whitespace from the end of a
12037 variable value assignment before calling rl_variable_bind
12038
12039 doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
12040 - clarified the language concerning parsing values for boolean
12041 variables in assignment statements
12042
12043 8/28
12044 ----
12045 lib/sh/pathphys.c
12046 - fix small memory leak in sh_realpath reported by Eric Blake
12047
12048 8/31
12049 ----
12050 doc/bashref.texi
12051 - add additional notes to posix mode section
12052
12053 9/3
12054 ---
12055 parse.y
12056 - if $'...' occurs within a ${...} parameter expansion within
12057 double quotes, don't single-quote the expanded result -- the double
12058 quotes will cause it to be expanded incorrectly
12059
12060 9/4
12061 ---
12062 builtins/fc.def
12063 - if STRICT_POSIX is defined, the posix mode default for the editor to
12064 use is $FCEDIT, then ed
12065
12066 shell.c
12067 - if STRICT_POSIX is defined, initialize `posixly_correct' to 1
12068
12069 config.h.in
12070 - add #undef STRICT_POSIX
12071
12072 9/5
12073 ---
12074 configure.in
12075 - add new option argument, --enable-strict-posix-default, configures
12076 bash to be posix-conformant (including defaulting echo to posix
12077 conformance) by default
12078
12079 builtins/echo.def
12080 - if STRICT_POSIX is defined, default echo to xpg-style
12081
12082 doc/bashref.texi
12083 - describe the --enable-strict-posix-default option to configure
12084
12085 9/10
12086 ----
12087 builtins/mkbuiltins.c
12088 - change to not generate N_(""), because the translated empty string is
12089 special to GNU gettext
12090
12091 9/13
12092 ----
12093 lib/readline/complete.c
12094 - a negative value for rl_completion_query_items means to not ask
12095
12096 lib/readline/doc/{{rltech,rluser}.texi,readline.3}
12097 - documented new semantics for rl_completion_query_items/
12098 completion-query-items
12099
12100 9/14
12101 ----
12102 bashline.c
12103 - bind M-TAB in emacs mode to dynamic-complete-history even if the
12104 current binding is `tab-insert' (which is what it is by default),
12105 not just if it's unbound
12106
12107 9/15
12108 ----
12109 eval.c
12110 - call QUIT before calling dispose_command on current_command after
12111 the `exec_done' label. If we dispose current_command first, the
12112 longjmp might restore the value of current_command after we've
12113 disposed it, and the subsequent call to dispose_command from the
12114 DISCARD case will free memory twice
12115
12116 9/16
12117 ----
12118 lib/sh/strto[iu]max.c
12119 - make sure the function being declared is not a cpp define before
12120 defining it -- should fix problems on HP-UX
12121
12122 9/19
12123 ----
12124 Makefile.in
12125 - make sure the binaries for the tests are at the front of $PATH
12126
12127 9/22
12128 ----
12129 parse.y
12130 - new flag for parse_matched_pair: P_COMMAND, indicating that the
12131 text being parsed is a command (`...`, $(...))
12132 - change calls to parse_matched_pair to include P_COMMAND where
12133 appropriate
12134 - if P_COMMAND flag is set and the text is unquoted, check for comments
12135 and don't try to parse embedded quoted strings if in a comment (still
12136 not exactly right yet)
12137
12138 9/24
12139 ----
12140 builtins/history.def
12141 - if running history -n, don't count these new lines as history lines
12142 for the current session if the `histappend' shell option is set.
12143 If we're just appending to the history file, the issue that caused
12144 history_lines_this_session to be recalculated doesn't apply -- the
12145 history file won't be missing any entries
12146
12147 lib/readline/isearch.c
12148 - fix C-w handler for isearch string reader to handle multibyte chars
12149
12150 lib/readline/rlmbutil.h
12151 - new defines for _rl_to_wupper and _rl_to_wlower
12152
12153 lib/readline/text.c
12154 - use _rl_to_wupper and _rl_to_wlower as appropriate
12155
12156 9/26
12157 ----
12158 execute_cmd.c
12159 - in shell_execve, if the exec fails due to E2BIG or ENOMEM, just print
12160 the appropriate error message instead of checking out any interpreter
12161 specified with #!
12162
12163 9/30
12164 ----
12165 bashhist.c
12166 - make $HISTCMD available anytime remember_on_history is non-zero,
12167 which indicates that we're saving commands to the history, and
12168 let it evaluate to 1 if we're not
12169
12170 10/4
12171 ----
12172 lib/sh/snprintf.c
12173 - in floating(), make sure d != 0 before calling chkinfnan -- gcc on the
12174 version of Solaris 9 I have translates 0 to -inf on the call
12175
12176 [bash-3.1-beta1 frozen]
12177
12178 10/6
12179 ----
12180 jobs.c
12181 - set the_pipeline to NULL right away in cleanup_the_pipeline, and
12182 dispose a copy of the pointer so we don't mess with the_pipeline
12183 while we're in the process of destroying it
12184 - block and unblock SIGCHLD around manipulating the_pipeline in
12185 cleanup_the_pipeline
12186
12187 10/7
12188 ----
12189 [bash-3.1-beta1 released]
12190
12191 lib/readline/isearch.c
12192 - when switching directions, make sure we turn off the SF_REVERSE
12193 flag in the search context's flags word if we're going from reverse
12194 to forward i-search
12195
12196 lib/readline/bind.c
12197 - new function, rl_variable_value, returns a string representing a
12198 bindable readline variable's value
12199 - new auxiliary function, _rl_get_string_variable_value, encapsulates
12200 everything needed to get a bindable string variable's value
12201 - rewrote rl_variable_dumper to use _rl_get_string_variable_value
12202
12203 lib/readline/readline.h
12204 - new extern declaration for rl_variable_value
12205
12206 lib/readline/doc/rltech.texi
12207 - documented rl_variable_value
12208
12209 bashline.c
12210 - in command_word_completion_function, if readline sets
12211 rl_completion_found_quote, but doesn't set rl_completion_quote_character,
12212 we have an embedded quoted string or backslash-escaped character in
12213 the passed text. We need to dequote that before calling
12214 filename_completion_function. So far, this is in place only for
12215 absolute program names (those containing a `/')
12216 - in command_word_completion_function, use rl_variable_value to decide
12217 whether or not we should ignore case, and use strncasecmp instead of
12218 strncmp where appropriate
12219
12220 10/11
12221 -----
12222 builtins/fc.def
12223 - fixed a typo when using POSIX_FC_EDIT_COMMAND
12224
12225 redir.h
12226 - new flag values for redirections: RX_INTERNAL and RX_USER (currently
12227 unused)
12228
12229 redir.c
12230 - add_undo_redirect and add_undo_close_redirect now set RX_INTERNAL
12231 flag when making new redirects
12232 - in do_redirection_internal, only set file descriptors > 2 to CLEXEC
12233 if they're marked as RX_INTERNAL
12234
12235 10/12
12236 -----
12237 jobs.c
12238 - in wait_for_single_pid, if in posix mode, remove the waited-for pid
12239 from the list of background pids, forgetting it entirely. POSIX
12240 conformance tests test for this.
12241
12242 lib/readline/{readline.h,vi_mode.c}
12243 - new state flag, RL_STATE_VICMDONCE, set after entering vi command
12244 mode the first time; reset on each call to readline()
12245
12246 10/13
12247 -----
12248 lib/readline/undo.c
12249 - in rl_revert_line, make sure that revert-line in vi mode leaves
12250 rl_point set to 0 no matter the state of the line buffer
12251
12252 lib/readline/vi_mode.c
12253 - when entering vi_command mode for the first time, free any existing
12254 undo list so the previous insertions won't be undone by the `U'
12255 command. This is how POSIX.2 says `U' should work (and the test
12256 suite tests for it)
12257
12258 lib/readline/bind.c
12259 - change rl_parse_and_bind so only `set' commands involving boolean
12260 readline variables have trailing whitespace stripped from the value
12261 string
12262
12263 10/16
12264 -----
12265 lib/glob/sm_loop.c
12266 - fix patscan() to correctly scan backslash-escaped characters
12267
12268 10/18
12269 -----
12270 lib/sh/{winsize.c,Makefile.in},{jobs,nojobs}.c,Makefile.in,externs.h
12271 - moved get_new_window_size from jobs.c/nojobs.c to new file,
12272 lib/sh/winsize.c, made function global
12273
12274 {jobs,nojobs,sig}.c,{jobs,sig}.h
12275 - moved SIGWINCH handling code to sig.c rather than duplicate it in
12276 jobs.c and nojobs.c
12277 - call set_sigwinch_handler from sig.c code rather than job control
12278 signal initialization
12279
12280 sig.[ch]
12281 - new variable, sigwinch_received, acts like interrupt_state for
12282 SIGWINCH, set by sigwinch_sighandler. sigwinch_sighandler no longer
12283 calls get_new_window_size
12284
12285 parse.y
12286 - add call to get_new_window_size if sigwinch_received at top of
12287 shell_getc
12288
12289 10/19
12290 -----
12291 lib/malloc/malloc.c
12292 - to avoid orphaning memory on free if the right bucket is busy, use a
12293 new function xplit(mem, bucket) to split the block into two or more
12294 smaller ones and add those to the right bucket (appropriately marking
12295 it as busy)
12296 - audit bsplit(), bcoalesce(), and xsplit() for proper use of busy[],
12297 since they're dealing with two separate buckets
12298
12299 10/22
12300 -----
12301 subst.c
12302 - new flag for string_extract: EX_REQMATCH, means to return an error
12303 if a matching/closing character is not found before EOS
12304 - new static flag variables: extract_string_error and extract_string_fatal
12305 - change expand_word_internal to check for new error returns from
12306 string_extract and return errors if appropriate
12307
12308 10/23
12309 -----
12310 builtins/cd.def
12311 - make sure we free TDIR in change_to_directory after calling
12312 set_working_directory (which allocates new memory) and other places
12313 we short-circuit and return
12314
12315 10/24
12316 -----
12317 subst.c
12318 - modified fix from 10/22 to allow bare ` to pass through (for
12319 some backwards compatibility and more correctness)
12320
12321 10/27
12322 -----
12323 conftypes.h
12324 - make MacOS X use the RHAPSODY code that gets HOSTTYPE, et al.
12325 at build rather than configure time, to support universal binaries
12326 (fix from llattanzi@apple.com)
12327
12328 10/30
12329 -----
12330 builtins/evalstring.c
12331 - make sure we don't turn on CMD_NO_FORK in parse_and_execute if
12332 we're running a trap command on signal receipt or exit
12333
12334 execute_cmd.c
12335 - in shell_execve, improve the error message a little bit if the
12336 interpreter name in a #! exec header ends with a ^M (as in a DOS-
12337 format file)
12338
12339 11/1
12340 ----
12341 lib/readline/vi_mode.c
12342 - fix vi-mode `r' command to leave the cursor in the right place
12343
12344 [bash-3.1-rc1 frozen]
12345
12346 11/5
12347 ----
12348 execute_cmd.c
12349 - make sure a DEBUG trap doesn't overwrite a command string passed to
12350 make_child in execute_simple_command
12351
12352 bashline.c
12353 - rearrange some code in bash_quote_filename so filenames with leading
12354 tildes containing spaces aren't tilde-expanded before being
12355 returned to the caller
12356
12357 11/6
12358 ----
12359 lib/readline/display.c
12360 - when deciding where to move the cursor in rl_redisplay and needing
12361 to move the cursor back after moving it vertically and compensate
12362 for invisible characters in the prompt string, make sure that
12363 _rl_last_c_pos is treated as an absolute cursor position in a
12364 multibyte locale and the wrap offset (number of invisible characters)
12365 is added explicitly when deciding how many characters to backspace
12366
12367 11/10
12368 -----
12369 lib/readline/terminal.c
12370 - _rl_set_screen_size now interprets a lines or columns argument < 0
12371 as an indication not to change the current value
12372
12373 11/11
12374 -----
12375
12376 lib/readline/terminal.c
12377 - new function, rl_reset_screen_size, calls _rl_get_screen_size to
12378 reset readline's idea of the terminal size
12379 - don't call _rl_get_screen_size in _rl_init_terminal_io if both
12380 _rl_screenheight and _rl_screenwidth are > 0
12381 - don't initialize _rl_screenheight and _rl_screenwidth to 0 in
12382 _rl_init_terminal_io; let caller take care of it
12383 - set _rl_screenheight and _rl_screenwidth to 0 before calling
12384 _rl_init_terminal_io
12385
12386 lib/readline/readline.h
12387 - new extern declaration for rl_reset_screen_size
12388
12389 lib/readline/doc/rltech.texi
12390 - documented rl_reset_screen_size
12391
12392 variables.c
12393 - if readline is being used, compile in a special var function for
12394 assignments to LINES and COLUMNS that calls rl_set_screen_size or
12395 rl_reset_screen_size as appropriate. Only do this in posix mode
12396 and only when STRICT_POSIX is defined at compile time
12397 - new semaphore variable, winsize_assignment, set while doing an
12398 assignment to LINES or COLUMNS
12399 - new variable, winsize_assigned, says LINES or COLUMNS was assigned
12400 to or found in the environment
12401 - if in the middle of an assignment to LINES or COLUMNS, make
12402 sh_set_lines_and_columns a no-op
12403
12404 lib/sh/winsize.c
12405 - get_new_window_size now takes two int * arguments, to return the
12406 screen dimensions
12407
12408 externs.h
12409 - change extern declaration for get_new_window_size
12410
12411 {jobs,nojobs}.c, parse.y
12412 - change callers of get_new_window_size
12413
12414 11/12
12415 -----
12416 lib/readline/terminal.c
12417 - new variable, rl_prefer_env_winsize, gives LINES and COLUMNS
12418 precedence over values from the kernel when computing window size
12419
12420 lib/readline/readline.h
12421 - extern declaration for rl_prefer_env_winsize
12422
12423 lib/readline/doc/rltech.texi
12424 - document rl_prefer_env_winsize
12425
12426 11/13
12427 -----
12428 lib/readline/rltty.c
12429 - change rl_prep_terminal to make sure we set and reset the tty
12430 special characters in the vi insertion keymap if in vi mode. This
12431 matters if we get accept-line for the previous line while in vi
12432 command mode
12433
12434 11/14
12435 -----
12436 builtins/pushd.def
12437 - make sure any call to cd_builtin includes a leading `--' from the
12438 argument list (or constructs one)
12439
12440 11/16
12441 -----
12442 pcomplete.c
12443 - fix small memory leak in gen_wordlist_matches
12444
12445 [bash-3.1-rc2 frozen]
12446
12447 11/21
12448 -----
12449 [bash-3.1-rc2 released]
12450
12451 11/23
12452 -----
12453 lib/readline/display.c
12454 - changes to rl_redisplay to compensate for update_line updating
12455 _rl_last_c_pos without taking invisible characters in the line into
12456 account. Important in multibyte locales where _rl_last_c_pos is an
12457 absolute cursor position
12458 - changes to _rl_move_cursor_relative to account for _rl_last_c_pos
12459 being an absolute cursor position in a multibyte character locale
12460 - rewrote _rl_move_cursor_relative to make it a little simpler
12461
12462 11/29
12463 -----
12464 lib/readline/display.c
12465 - changes to rl_redisplay and update_line for update_line to communicate
12466 upward that it took the number of invisible characters on the current
12467 line into account when modifying _rl_last_c_pos
12468 - in update_line, adjust _rl_last_c_pos by wrap_offset before calling
12469 _rl_move_cursor_relative, so we pass correct information about the
12470 true cursor position
12471
12472 12/1
12473 ----
12474 configure.in
12475 - changed release status to `release'
12476
12477 [bash-3.1 frozen]
12478
12479 12/8
12480 ----
12481 [bash-3.1 released]
12482
12483 12/9
12484 ----
12485 doc/{bash.1,version.texi},lib/readline/doc/version.texi
12486 - remove `beta1' from man page footer and texinfo documents
12487
12488 variables.c
12489 - make sure winsize_assignment is protected by #ifdef READLINE, so
12490 minimal shell will compile
12491
12492 builtins/read.def
12493 - make sure error cases free memory and run any unwind-protects to
12494 avoid memory leaks
12495
12496 12/10
12497 -----
12498 execute_cmd.c
12499 - change execute_command_internal to set $PIPESTATUS for ((...)) and
12500 [[ ... ]] commands
12501
12502 doc/{bash.1,bashref.texi,version.texi}
12503 - add documentation for ulimit -[iqx] and bump revision date
12504
12505 12/12
12506 -----
12507 parse.y
12508 - make sure parse_compound_assignment saves and restores the
12509 PST_ASSIGNOK parser state flag around its calls to read_token.
12510 Fixes bug reported by Mike Frysinger
12511
12512 12/13
12513 -----
12514 parse.y
12515 - change parse_compound_assignment to save and restore the value of
12516 last_read_token. Not sure why it was set unconditionally in the
12517 first place after parsing the complete compound assignment
12518
12519 12/14
12520 -----
12521 lib/readline/text.c
12522 - don't use return value of rl_kill_text (which always succeeds and
12523 returns the number of characters killed) in rl_delete as an indication
12524 of success or failure
12525 - ditto for return value of rl_delete_text
12526
12527 lib/readline/readline.c
12528 - don't return the value of the called readline function as the return
12529 value from _rl_dispatch_subseq; -1 means something different to the
12530 callers (return 0 all the time to indicate that a readline function
12531 was found and dispatched). Fix from Andreas Schwab for <DEL><DEL>
12532 bug in callback interface first reported by Mike Frysinger
12533
12534 execute_cmd.c
12535 - fixed a typo in execute_case_command
12536
12537 12/15
12538 -----
12539 aclocal.m4
12540 - add check for wctype() to BASH_CHECK_MULTIBYTE, define HAVE_WCTYPE
12541
12542 config.h.in
12543 - add HAVE_WCTYPE #define
12544
12545 config-bot.h
12546 - add HAVE_WCTYPE to the set of checks for HANDLE_MULTIBYTE. This
12547 should catch the deficient NetBSD multibyte support
12548
12549 12/16
12550 -----
12551 parse.y
12552 - use CTLESC instead of literal '\001' when decode_prompt_string
12553 prefixes RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE
12554
12555 12/20
12556 -----
12557 lib/readline/display.c
12558 - don't treat RL_PROMPT_START_IGNORE specially inside a sequence of
12559 ignored characters
12560 - keep track of the start of the current sequence of ignored
12561 characters; make sure that an empty sequence of such characters
12562 really is an empty sequence, not one that happens to end with '\001'
12563 (RL_PROMPT_START_IGNORE)
12564
12565 12/21
12566 -----
12567 subst.c
12568 - change expand_word_internal to process rest of `tilde-word' as a
12569 regular part of the word if tilde expansion leaves the tilde-word
12570 unchanged. This means that ~$USER expands to ~chet, which seems
12571 more intuitive, and is effectively what bash-3.0 did
12572
12573 12/23
12574 -----
12575 subst.c
12576 - when making a local array variable in do_compound_assignment, make
12577 sure that we don't use a variable of the same name from a previous
12578 context
12579
12580 doc/bash.1
12581 - documented expansions for word and patterns in case statement
12582
12583 builtins/ulimit.def,doc/{bashref.texi,bash.1}
12584 - added new -e and -r (nice and rtprio) options to ulimit; documented
12585 them
12586
12587 12/26
12588 -----
12589 variables.c
12590 - use `hmax' instead of `num' in sv_histsize to avoid integer overflow
12591 problems with intmax_t
12592
12593 builtins/read.def
12594 - add unwind-protect to restore rl_attempted_completion_function in
12595 case of a timeout
12596
12597 {bashline,variables}.c
12598 - move initialization of HISTSIZE from initialization path to
12599 load_history, so it can be overridden by a value assigned in a
12600 startup file
12601
12602 lib/readline/misc.c
12603 - add a missing `return r' so that rl_digit_loop returns a meaningful
12604 value
12605
12606 lib/readline/{bind,callback,display,isearch,rltty,search,text,vi_mode}.c
12607 - minor cleanups to satisfy compiler warnings, mostly removing unused
12608 variables
12609
12610 12/27
12611 -----
12612 support/Makefile.in
12613 - add LIBS_FOR_BUILD support; defaults to ${LIBS}
12614
12615 Makefile.in
12616 - add LIBS_FOR_BUILD with no default value; use when linking programs
12617 using CC_FOR_BUILD (e.g., bashversion)
12618
12619 12/28
12620 -----
12621 lib/readline/bind.c
12622 - fix rl_translate_keyseq bad translation of \M-\C-x sequences
12623
12624 execute_cmd.c
12625 - in execute_arith_command, if the expression expands to more than one
12626 word, make sure we join the words into a single string and pass the
12627 entire thing to evalexp()
12628
12629 expr.c
12630 - new functions: _is_arithop(c), returns true if C is a valid single-
12631 character arithmetic operator; _is_multiop(c), returns true if C is
12632 a token corresponding to a valid multi-character arithmetic operator
12633 - if we encounter a character that isn't a valid arithmetic
12634 operator, throw an error. Try to be intelligent about what type of
12635 error message to print
12636
12637 subst.c
12638 - new function, expand_arith_string, calls expand_string_if_necessary;
12639 used where an arithmetic expression needs to be expanded
12640
12641 subst.h
12642 - new extern declaration for expand_arith_string
12643
12644 arrayfunc.c
12645 - in array_expand_index, call expand_arith_string to expand the
12646 subscript in a fashion consistent with other arithmetic expressions
12647
12648 subst.c
12649 - fix parameter_brace_patsub so that we don't try to anchor the pattern
12650 at the beginning or end of the string if we're doing global
12651 replacement -- that combination doesn't doesn't make sense, and
12652 the changed behavior is compatible with ksh93
12653
12654 doc/{bash.1,bashref.texi}
12655 - changed description of pattern substitution to match the new
12656 semantics
12657
12658 tests/new-exp.tests
12659 - change tests to remove all ${pat//#rep} and ${pat//%rep}
12660 expansions, since they don't mean the same thing anymore
12661
12662 12/29
12663 -----
12664 support/signames.c
12665 - new file, initialize_signames() function from old mksignames.c. This
12666 file builds the signal_names array
12667
12668 support/mksignames.c
12669 - strip out initialize_signames(), move to signames.c. This file only
12670 writes signames.h
12671 - set up to only write a stub signames.h if CROSS_COMPILING is defined,
12672 with extern declaration for initialize_signames
12673 - if not cross compiling, #define initialize_signames to nothing
12674
12675 Makefile.in
12676 - mksignames is now linked from mksignames.o and buildsignames.o
12677 - add rules to build signames.o, assuming we're building it as part
12678 of the shell (cross-compiling)
12679
12680 trap.c
12681 - call initialize_signames from initialize_traps
12682
12683 configure.in
12684 - set SIGNAMES_O to nothing (normal) or signames.o (cross-compiling),
12685 substitute into Makefile
12686 - don't set SIGNAMES_H if cross-compiling any more
12687
12688 12/30
12689 -----
12690 command.h
12691 - new word flag: W_NOPROCSUB, inhibits process substitution on a word
12692
12693 subst.c
12694 - change expand_word_internal to suppress process substitution if the
12695 word has the W_NOPROCSUB flag
12696
12697 shell.c
12698 - --wordexp turns on W_NOPROCSUB in addition to W_NOCOMSUB
12699
12700 subst.c
12701 - change string_list_dollar_at and string_list_dollar_star so that
12702 MB_CUR_MAX is used to size an array only when using gcc, since gcc
12703 can handle non-constant array sizes using a mechanism like alloca.
12704 Other compilers, e.g. Sun's compiler, do not implement that
12705 extension
12706
12707 12/31
12708 -----
12709 builtins/mkbuiltins.c
12710 - when cross-compiling, don't include <config.h>, since it's for the
12711 target rather than the host system. Instead, choose a reasonable
12712 set of default #defines based on a minimal POSIX system
12713
12714 jobs.c
12715 - change find_process to handle a NULL return value from find_pipeline
12716 - return immediately from delete_job if jobs[index] is already NULL or
12717 if it has a null pipeline associated with it
12718 - in delete_job, if find_last_proc returns NULL, don't try to call
12719 bgp_delete
12720
12721 1/7
12722 ---
12723 doc/bash.1
12724 - patch from Tim Waugh to replace some literal single quotes with
12725 \(aq, the groff special character for it
12726
12727 jobs.c
12728 - in realloc_jobs_list, make sure to zero out slots after j_lastj
12729 in the new list
12730
12731 1/9
12732 ---
12733 support/mksignames.c
12734 - make sure to include <signal.h> to get right value of NSIG from
12735 (usually) <sys/signal.h>
12736
12737 1/10
12738 ----
12739 parse.y
12740 - when calling parse_matched_pair on a $(...) command substitution,
12741 don't pass the P_DQUOTE flag so that single quotes don't get
12742 stripped from $'...' inside the command substitution. Bug report
12743 and fix from Mike Stroyan <mike.stroyan@hp.com>
12744
12745 jobs.c
12746 - start maintaining true count of living children in js.c_living
12747 - call reset_current in realloc_jobs_list, since old values for current
12748 and previous job are most likely incorrect
12749 - don't allocate a new list in realloc_jobs_list if the old size and
12750 new size are the same; just compact the existing list
12751 - make sure realloc_jobs_list updates value of js.j_njobs
12752 - add some more itrace messages about non-null jobs after j_lastj in
12753 jobs array
12754
12755 1/11
12756 ----
12757 bashjmp.h
12758 - new value for second argument to longjmp: SIGEXIT. Reserved for
12759 future use
12760
12761 1/12
12762 ----
12763 jobs.c
12764 - add logic to make_child to figure out when pids wrap around
12765 - turn second argument to delete_job into flags word, added flag to
12766 prevent adding proc to bgpids list
12767
12768 1/13
12769 ----
12770 lib/readline/vi_mode.c
12771 - move code that moves forward a character out of rl_vi_append_mode
12772 into a separate function, _rl_vi_append_forward
12773 - change _rl_vi_append_mode to save `a' as the last command, so it
12774 can be redone properly
12775 - new function _rl_vi_backup, moves point back a character taking
12776 multibyte locales into account
12777 - change rl_vi_redo to handle redoing an `a' command specially --
12778 it should be redone like `i' but after moving forward a character
12779 - change rl_vi_redo to use _rl_vi_backup to move point backward
12780 after redoing `i' or `a'
12781
12782 jobs.c
12783 - new function, delete_old_job (pid), checks whether or not PID is in
12784 a job in the jobs list. If so, and the job is dead, it just removes
12785 the job from the list. If so, and the job is not dead, it zeros
12786 the pid in the appropriate PROCESS so pid aliasing doesn't occur
12787 - make_child calls delete_old_job to potentially remove an already-used
12788 instance of the pid just forked from the jobs list if pids have
12789 wrapped around. Finally fixes the bug reported by Tim Waugh
12790 <twaugh@redhat.com>
12791
12792 trap.c
12793 - new define, GETORIGSIG(sig), gets the original handling for SIG and
12794 sets SIG_HARD_IGNORE if that handler is SIG_IGN
12795 - call GETORIGSIG from initialize_traps, get_original_signal, and
12796 set_signal
12797
12798 jobs.c
12799 - in wait_for, if the original SIGINT handler is SIG_IGN, don't set
12800 the handler to wait_sigint_handler. This keeps scripts started in
12801 the background (and ignoring SIGINT) from dying due to SIGINT while
12802 they're waiting for a child to exit. Bug reported by Ingemar
12803 Nilsson <init@kth.se>
12804
12805 lib/readline/vi_mode.c
12806 - don't save text to buffer unless undo pointer points to a record of
12807 type UNDO_INSERT; zero it out instead. This fixes bug reported by
12808 Craig Turner <craig@synect.com> with redoing `ctd[ESC]' (empty
12809 insert after change to)
12810
12811 shell.c
12812 - change set_shell_name so invocations like "-/bin/bash" are marked as
12813 login shells
12814
12815 doc/bash.1
12816 - add note about destroying functions with `unset -f' to the section
12817 on shell functions
12818
12819 lib/readline/terminal.c
12820 - if readline hasn't been initialized (_rl_term_autowrap == -1, the
12821 value it's now initialized with), call _rl_init_terminal_io from
12822 _rl_set_screen_size before deciding whether or not to decrement
12823 _rl_screenwidth. Fixes bug from Mike Frysinger <vapier@gentoo.org>
12824
12825 1/14
12826 ----
12827 lib/readline/input.c
12828 - allow rl_set_keyboard_input_timeout to set the timeout to 0, for
12829 applications that want to use select() like a poll without any
12830 waiting
12831
12832 lib/readline/doc/rltech.texi
12833 - documented valid values for timeout in rl_set_keyboard_input_timeout
12834
12835 jobs.c
12836 - in stop_pipeline, don't have the parent shell call give_terminal_to
12837 if subshell_environment contains SUBSHELL_ASYNC (no background
12838 process should ever give the terminal to anything other than
12839 shell_pgrp)
12840 - in make_child, don't give the terminal away if subshell_environment
12841 contains SUBSHELL_ASYNC
12842
12843 1/15
12844 ----
12845 subst.c
12846 - in parameter_brace_expand, if extracting ${#varname}, only allow
12847 `}' to end the expansion, since none of the other expansions are
12848 valid. Fixes Debian bug reported by Jan Nordhorlz <jckn@gmx.net>
12849
12850 1/17
12851 ----
12852 parse.y
12853 - in parse_matched_pair, protect all character tests with the MBTEST
12854 macro
12855 - in parse_dparen, take out extra make_word after call to alloc_word_desc
12856 (mem leak)
12857
12858 1/18
12859 ----
12860 parse.y
12861 - in parse_matched_pair, add P_ALLOWESC to flags passed to recursive
12862 parse_matched_pair call when encountering a single or double quote
12863 inside a ``-style command substitution
12864
12865 execute_cmd.c
12866 - add call to QUIT at beginning of execute_command_internal; better
12867 responsiveness to SIGINT
12868
12869 1/21
12870 ----
12871 lib/readline/bind.c
12872 - change rl_invoking_keyseqs_in_map to honor the setting of
12873 convert-meta when listing key bindings, since if convert-meta is off,
12874 using '\M-' as the prefix for bindings in, for instance,
12875 emacs-escape-keymap, is wrong. This affects `bind -p' output
12876 - change rl_untranslate_keyseq to add '\e' instead of '\C-[' for
12877 ESC
12878
12879 execute_cmd.c
12880 - add call to QUIT at end of execute_command
12881
12882 1/23
12883 ----
12884 lib/readline/display.c
12885 - changed two places in update_line where a check of whether the cursor
12886 is before the last invisible character in the prompt string to
12887 differentiate between the multibyte character case (where
12888 _rl_last_c_pos is a physical cursor position) and the single-byte
12889 case (where it is a buffer index). This prevents many unnecessary
12890 \r-redraw the line sequences. Reported by Dan Jacobson.
12891
12892 1/24
12893 ----
12894 quit.h
12895 - wrap QUIT macro in do...while(0) like other compound statement
12896 macros
12897 - CHECK_TERMSIG define (placeholder for now); future use will be to
12898 handle any received signals that should cause the shell to
12899 terminate (e.g., SIGHUP)
12900
12901 {input,jobs,nojobs}.c
12902 - add calls to CHECK_TERMSIG where appropriate (reading input and
12903 waiting for children)
12904 - include quit.h if necessary
12905
12906 1/25
12907 ----
12908 parse.y
12909 - undo change that makes `)' in a compound assignment delimit a token.
12910 It messes up arithmetic expressions in assignments to `let', among
12911 other things
12912
12913 sig.h,{jobs,nojobs,sig,trap}.c,builtins/trap.def
12914 - rename termination_unwind_protect to termsig_sighandler
12915
12916 sig.c
12917 - split termsig_sighandler into two functions: termsig_sighandler, which
12918 runs as a signal handler and sets a flag noting that a terminating
12919 signal was received, and termsig_handler, which runs when it is `safe'
12920 to handle the signal and exit
12921 - new terminate_immediately variable, similar to interrupt_immediately
12922 - termsig_sighandler calls termsig_handler immediately if
12923 terminate_immediately is non-zero
12924
12925 quit.h
12926 - change CHECK_TERMSIG macro to check terminating_signal and call
12927 termsig_handler if it's non-zero
12928 - add same check of terminating_signal and call to termsig_handler to
12929 QUIT macro
12930
12931 {jobs,nojobs}.c
12932 - change call to termsig_sighandler to call termsig_handler directly,
12933 as was intended
12934
12935 parse.y,builtins/read.def
12936 - set terminate_immediately to non-zero value when reading interactive
12937 input, as is done with interrupt_immediately
12938
12939 1/26
12940 ----
12941 doc/{bash.1,bashref.texi}
12942 - reworded the POSIX standard references to remove mention of POSIX.2
12943 or 1003.2 -- it's all the 1003.1 standard now. Recommended by
12944 Arnold Robbins
12945
12946 1/27
12947 ----
12948 lib/readline/complete.c
12949 - move call to filename dequoting function into
12950 rl_filename_completion_function; call only if directory completion
12951 hook isn't set. This means that directory-completion-hook now needs
12952 to dequote the directory name. We don't want to dequote the directory
12953 name before calling the directory-completion-hook. Bug reported by
12954 Andrew Parker <andrewparker@bigfoot.com>
12955
12956 bashline.c
12957 - add necessary directory name dequoting to bash_directory_completion_hook
12958 and bash_directory_expansion
12959
12960 lib/readline/doc/rltech.texi
12961 - add note to description of rl_directory_completion_hook that it
12962 needs to dequote the directory name even if no other expansions are
12963 performed
12964
12965 1/28
12966 ----
12967 braces.c
12968 - make sure that we skip over braces that don't start a valid matched
12969 brace expansion construct in brace_expand -- there might be a valid
12970 brace expansion after the unmatched `{' later in the string
12971 - brace_gobbler now checks that when looking for a `}' to end a brace
12972 expansion word, there is an unquoted `,' or `..' that's not inside
12973 another pair of braces. Fixes the a{b{c,d}e}f problem reported by
12974 Tim Waugh
12975
12976 builtins/declare.def
12977 - when not in posix mode, and operating on shell functions, typeset
12978 and declare do not require their variable operands to be valid
12979 shell identifiers. The other `attribute' builtins work this way.
12980 Fixes inconsistency reported by Mike Frysinger
12981
12982 {configure,config.h}.in
12983 - add test for setregid, define HAVE_SETREGID and HAVE_DECL_SETREGID
12984 as appropriate
12985 - add test for eaccess, define HAVE_EACCESS if found
12986
12987 lib/sh/eaccess.c
12988 - new file, with sh_stat and sh_eaccess functions, moved from test.c
12989 - renamed old sh_eaccess as sh_stataccess, since it uses the stat(2)
12990 information to determine file accessibility
12991 - new function, sh_euidaccess, to call when uid != euid or gid != egid;
12992 temporarily swaps uid/euid and gid/egid around call to access
12993 - rewrote sh_eaccess to call eaccess, access, sh_euidaccess or
12994 sh_stataccess as appropriate. access(2) will take into account
12995 things like ACLs, read-only file systems, file flags, and so on.
12996
12997 lib/sh/Makefile.in,Makefile.in
12998 - add necessary entries for eaccess.[co]
12999
13000 test.c
13001 - change calls to test_stat to call sh_stat
13002
13003 {test,general}.c
13004 - change calls to test_eaccess to call sh_eaccess
13005
13006 externs.h
13007 - new extern declaration for sh_eaccess
13008
13009 test.[ch]
13010 - remove test_stat and test_eaccess
13011
13012 1/29
13013 ----
13014 braces.c
13015 - make change from 1/28 dependant on CSH_BRACE_COMPAT not being
13016 defined (since old bash behavior is what csh does, defining
13017 CSH_BRACE_COMPAT will produce old bash behavior)
13018
13019 1/30
13020 ----
13021 bashline.c
13022 - last argument of bash_default_completion is now a flags word:
13023 DEFCOMP_CMDPOS (in command position) is only current value
13024 - attempt_shell_completion now computes flags before calling
13025 bash_default_completion
13026 - if no_empty_command_completion is set, bash does not attempt command
13027 word completion even if not at the beginning of the line, as long
13028 as the word to be completed is empty and start == end (catches
13029 beginning of line and all whitespace preceding point)
13030
13031 2/4
13032 ---
13033 lib/readline/display.c
13034 - change _rl_make_prompt_for_search to use rl_prompt and append the
13035 search character to it, so the call to expand_prompt in rl_message
13036 will process the non-printing characters correctly. Bug reported
13037 by Mike Stroyan <mike.stroyan@hp.com>
13038
13039 2/5
13040 ---
13041 lib/readline/display.c
13042 - fix off-by-one error when comparing against PROMPT_ENDING_INDEX,
13043 which caused a prompt with invisible characters to be redrawn one
13044 extra time in a multibyte locale. Change from <= to < fixes
13045 multibyte locale, but I added 1 to single-byte definition of
13046 PROMPT_ENDING_INDEX (worth checking) to compensate. Bug reported
13047 by Egmont Koblinger <egmont@uhulinux.hu>
13048
13049 2/8
13050 ---
13051 lib/readline/terminal.c
13052 - call _emx_get_screensize with wr, wc like ioctl code for consistency
13053 - new function, _win_get_screensize, gets screen dimensions using
13054 standard Windows API for mingw32 (code from Denis Pilat)
13055 - call _win_get_screensize from _rl_get_screen_size on mingw32
13056
13057 lib/readline/rlconf.h
13058 - define SYS_INPUTRC (/etc/inputrc) as system-wide default inputrc
13059 filename
13060
13061 support/shobj-conf
13062 - changes to make loadable builtins work on MacOS X 10.[34]
13063
13064 builtins/pushd.def
13065 - changes to make it work as a loadable builtin compiled with gcc4
13066
13067 2/9
13068 ---
13069 lib/readline/bind.c
13070 - add SYS_INPUTRC as last-ditch default (if DEFAULT_INPUTRC does not
13071 exist or can't be read) in rl_read_init_file
13072
13073 lib/readline/doc/rluser.texi
13074 - add description of /etc/inputrc as ultimate default startup file
13075
13076 2/10
13077 ----
13078 lib/readline/bind.c
13079 - fix problem with rl_function_of_keyseq that returns a non-keymap
13080 bound to a portion of the passed key sequence without processing
13081 the entire thing. We can bind maps with existing non-map
13082 functions using the ANYOTHERKEY binding code.
13083
13084 variables.c
13085 - shells running in posix mode do not set $HOME, as POSIX apparently
13086 requires
13087
13088 2/15
13089 ----
13090 braces.c
13091 - mkseq() now takes the increment as an argument; changed callers
13092
13093 2/16
13094 ----
13095 builtins/hash.def
13096 - print `hash table empty' message to stdout instead of stderr
13097
13098 2/17
13099 ----
13100 lib/readline/readline.c
13101 - when resetting rl_prompt in rl_set_prompt, make sure rl_display_prompt
13102 is set when the function returns
13103
13104 2/18
13105 ----
13106 lib/readline/display.c
13107 - further fixes to _rl_make_prompt_for_search from Eric Blake to deal
13108 with multiple calls to expand_prompt
13109
13110 2/21
13111 ----
13112 builtins/hash.def
13113 - don't print `hash table empty' message in posix mode
13114
13115 2/27
13116 ----
13117 lib/glob/sm_loop.c
13118 - change extmatch() to turn off FNM_PERIOD in flags passed to recursive
13119 calls to gmatch() when calling it with a substring after the start
13120 of the string it receives. Changed `+', `*', `?, `@', and `!' cases
13121 to do the right thing. Fixes bug reported by Benoit Vila
13122 <bvila@free.fr>
13123
13124 braces.c
13125 - add QUIT; statements to mkseq to make large sequence generation
13126 interruptible
13127
13128 2/28
13129 ----
13130 lib/glob/glob.c
13131 - initialize nalloca in glob_vector
13132
13133 3/1
13134 ---
13135 lib/glob/glob.c
13136 - in glob_vector, when freeing up the linked list after some error,
13137 make sure to set `tmplink' to 0 if `firstlink' is set to 0, else we
13138 get multiple-free errors
13139
13140 3/5
13141 ---
13142 trap.c
13143 - inheritance of the DEBUG, RETURN, and ERR traps is now dependent
13144 only on the `functrace' and `errtrace' shell options, as the
13145 documentation says, rather than on whether or not the shell is in
13146 debugging mode. Reported by Philip Susi <psusi@cfl.rr.com>
13147
13148 parse.y
13149 - in parse_matched_pair, don't recursively parse ${...} or other
13150 ${...} constructs inside ``
13151 - in parse_matched_pair, remove special code that recursively parses
13152 quoted strings inside `` constructs. For Bourne shell compatibility
13153
13154 3/6
13155 ---
13156 builtins/pushd.def
13157 - let get_directory_stack take take an `int flags' argument and convert
13158 $HOME to ~ if flags&1 is non-zero
13159
13160 builtins/common.h
13161 - change extern declaration for get_directory_stack
13162
13163 variables.c
13164 - call get_directory_stack with an arg of 0 to inhibit converting
13165 $HOME to ~ in the result. Fixes cd ${DIRSTACK[1]} problem
13166 reported by Len Lattanzi <llattanzi@apple.com> (cd fails because
13167 the tildes won't be expanded after variable expansion)
13168
13169 jobs.c
13170 - changed hangup_all_jobs slightly so stopped jobs marked J_NOHUP
13171 won't get a SIGCONT
13172
13173 general.c
13174 - changed check_binary_file() to check for a NUL byte instead of a
13175 non-printable character. Might at some point want to check
13176 entire (possibly multibyte) characters instead of just bytes. Hint
13177 from ksh via David Korn
13178
13179 3/7
13180 ---
13181 builtins/reserved.def
13182 - changed runs of spaces to tabs in variables help text to make
13183 indentation better when displayed
13184
13185 builtins/mkbuiltins.c
13186 - changes to avoid the annoying extra space that keeps gettext from
13187 being passed an empty string
13188
13189 3/9
13190 ---
13191 lib/glob/glob.c
13192 - make sure globbing is interrupted if the shell receives a terminating
13193 signal
13194
13195 3/14
13196 ----
13197 lib/readline/search.c
13198 - call rl_message with format argument of "%" in _rl_nsearch_init
13199 to avoid `%' characters in the prompt string from being interpreted
13200 as format specifiers to vsnprintf/vsprintf
13201
13202 3/19
13203 ----
13204 parse.y, eval.c, input.h
13205 - change execute_prompt_command to execute_variable_command; takes the
13206 variable name as a new second argument
13207
13208 3/25
13209 ----
13210 bashline.c
13211 - command_word_completion_function keeps track of when it's searching
13212 $PATH and doesn't return directory names as matches in that case.
13213 Problem reported by Pascal Terjan <pterjan@mandriva.com>
13214 - command_word_completion_function returns what it's passed as a
13215 possible match if it's the name of a directory in the current
13216 directory (only non-absolute pathnames are so tested).
13217
13218 3/27
13219 ----
13220 subst.c
13221 - expand_arith_string takes a new argument: quoted. Either 0 (outside
13222 subst.c) or Q_DOUBLE_QUOTES (substitution functions); changed callers
13223
13224 subst.h
13225 - changed extern declaration for expand_arith_string
13226
13227 arrayfunc.c
13228 - changed call to expand_arith_string in array_expand_index
13229
13230 3/31
13231 ----
13232 lib/readline/histfile.c
13233 - change read_history_range to allow windows-like \r\n line endings
13234
13235 execute_cmd.c
13236 - add new variable, line_number_for_err_trap, currently set but not
13237 used
13238
13239 4/2
13240 ---
13241 lib/sh/strtrans.c
13242 - add code to echo -e and echo with xpg_echo enabled to require
13243 a leading 0 to specify octal constants
13244
13245 4/3
13246 ---
13247 subst.c
13248 - slight change to wcsdup() replacement: use memcpy instead of wcscpy
13249
13250 parse.y
13251 - before turning on W_COMPASSIGN, make sure the final character in the
13252 token is a `(' (avoids problems with things like a=(4*3)/2)
13253
13254 4/4
13255 ---
13256 lib/sh/snprintf.c
13257 - in number() and lnumber(), turn off PF_ZEROPAD if explicit precision
13258 supplied in format
13259 - change number() and lnumber() to correctly implement zero-padding
13260 specified by a non-zero `.precision' part of the format
13261
13262 subst.c
13263 - new flag for extract_delimited_string: EX_COMMAND. For $(...), so
13264 we can do things like skip over delimiters in comments. Added to
13265 appropriate callers
13266 - changes to extract_delimited_string to skip over shell comments when
13267 extracting a command for $(...) (EX_COMMAND is contained in the
13268 flags argument)
13269
13270 4/5
13271 ---
13272 subst.c
13273 - first argument to skip_single_quoted is now a const char *
13274 - new function, chk_arithsub, checks for valid arithmetic expressions
13275 by balancing parentheses. Fix based on a patch from Len Lattanzi
13276
13277 4/6
13278 ---
13279 {configure,config.h}.in
13280 - add separate test for isnan in libc, instead of piggybacking on
13281 isinf-in-libc test
13282
13283 lib/sh/snprintf.c
13284 - separate the isnan replacement function so it's guarded by its own
13285 HAVE_ISNAN_IN_LIBC define
13286
13287 lib/sh/wcsdup.c
13288 - new file, contains replacement wcsdup library function from subst.c
13289 with change back to using wcscpy
13290
13291 Makefile.in,lib/sh/Makefile.in
13292 - make sure wcsdup.c is compiled and linked in
13293
13294 subst.c
13295 - wcsdup now found in libsh; removed static definition
13296
13297 4/10
13298 ----
13299 lib/readline/callback.c
13300 - loop over body of rl_callback_read_char as long as there is additional
13301 input rather than just calling readline_internal_char, which does
13302 not handle multi-character key sequences or escape-prefixed chars
13303
13304 lib/readline/macro.c
13305 - make sure we turn off RL_STATE_MACROINPUT when the macro stack is
13306 empty if we are reading additional input with RL_STATE_MOREINPUT
13307
13308 support/shobj-conf
13309 - Mac OS X no longer likes the `-bundle' option to gcc when creating a
13310 dynamic shared library
13311
13312 4/11
13313 ----
13314 lib/tilde/tilde.c
13315 - don't try to dereference user_entry if HAVE_GETPWENT isn't defined
13316
13317 lib/readline/input.c
13318 - make sure chars_avail is not used without being assigned a value in
13319 rl_gather_tyi
13320 - use _kbhit() to check for available input on Windows consoles, in
13321 rl_gather_tyi and _rl_input_available
13322
13323 4/21
13324 ----
13325 lib/readline/display.c
13326 - calculate (in expand_prompt) and keep track of length of local_prompt
13327 in local_prompt_len; use where appropriate
13328 - when using o_pos to check whether or not we need to adjust
13329 _rl_last_c_pos after calling update_line, assume that it's correct
13330 (a buffer index in non-multibyte locales and a cursor position in
13331 multibyte locales) and adjust with wrap_offset as appropriate
13332 - in update_line, set cpos_adjusted to 1 after calling
13333 _rl_move_cursor_relative to move to the end of the displayed prompt
13334 string
13335 - in _rl_move_cursor_relative, check that the multibyte display
13336 position is after the last invisible character in the prompt string
13337 before offsetting it by the number of invisible characters in the
13338 prompt (woff)
13339
13340 4/26
13341 ----
13342 lib/readline/doc/{rluser.texi,readline.3}
13343 - make sure to note that key bindings don't allow any whitespace
13344 between the key name or sequence to be bound and the colon
13345
13346 4/28
13347 ----
13348 lib/readline/display.c
13349 - in update_line, make sure we compare _rl_last_c_pos as strictly less
13350 than PROMPT_ENDING_INDEX, since it's 0-based, to avoid multiple
13351 prompt redraws
13352
13353 5/4
13354 ---
13355 parse.y
13356 - in decode_prompt_string, only prefix the expansion of \[ or \]
13357 with CTLESC if the corresponding readline escape character is
13358 CTLESC (coincidentally the same as \[) or CTLNUL. Bug report sent
13359 by Mike Frysinger <vapier@gentoo.org> prompted the discovery
13360
13361 aclocal.m4
13362 - slight change to test for /dev/fd to compensate for a linux
13363 failing; suggested by Mike Frysinger <vapier@gentoo.org>
13364
13365 5/9
13366 ---
13367 arrayfunc.c
13368 - broke assign_array_var_from_string into two functions:
13369 expand_compound_array_assignment and assign_compound_array_list;
13370 assign_array_var_from_string just calls those functions now
13371
13372 arrayfunc.h
13373 - new extern declarations for expand_compound_array_assignment and
13374 assign_compound_array_list
13375
13376 subst.c
13377 - in do_compound_assignment, call expand_compound_array_assignment
13378 before creating the local variable so a previous inherited
13379 value can be used when expanding the rhs of the compound assignment
13380 statement
13381
13382 5/11
13383 ----
13384 doc/{bash.1,bashref.texi}
13385 - clarifed `trap' description to make it clear that trapped signals
13386 that are not set to SIG_IGN are reset when a subshell is created
13387
13388 5/18
13389 ----
13390 locale.c
13391 - change reset_locale_vars to call setlocale (LC_ALL, "") if LANG
13392 is unset or NULL
13393 - if LANG is unset or NULL, reset the export environment before
13394 calling setlocale in reset_locale_vars, and trust that it will
13395 change the environment setlocale() inspects
13396
13397 5/21
13398 ----
13399 lib/readline/history.c
13400 - new function, HIST_ENTRY *alloc_history_entry (char *string, char *ts);
13401 creates a new history entry with text STRING and timestamp TS (both
13402 of which may be NULL)
13403 - new function, HIST_ENTRY *copy_history_entry (HIST_ENTRY *hist),
13404 which copies the line and timestamp entries to new memory but just
13405 copies the data member, since that's an opaque pointer
13406 - new function, void replace_history_data (int which, histdata_t *old, histdata_t *new)
13407 which replaces the `data' member of specified history entries with
13408 NEW, as long as it is OLD. WHICH says which history entries to
13409 modify
13410 - add calls to replace_history_data in rl_free_undo_list and
13411 rl_do_undo
13412
13413 lib/readline/undo.c
13414 - new function, alloc_undo_entry (enum undo_code what, int start, int end, char *text)
13415 takes care of allocating and populating a struct for an individual
13416 undo list entry
13417 - new function: _rl_copy_undo_entry(UNDO_LIST *entry)
13418 - new function: _rl_copy_undo_list(UNDO_LIST *head)
13419
13420 lib/readline/rlprivate.h
13421 - new extern declarations for _rl_copy_undo_{entry,list}
13422
13423 execute_cmd.c
13424 - change execute_cond_node so that quoting the rhs of the =~
13425 operator forces string matching, like the == and != operators
13426
13427 5/23
13428 ----
13429 redir.c
13430 - add_undo_redirect now takes as an additional argument the type of
13431 redirection we're trying to undo
13432 - don't add a "preservation" redirection for fds > SHELL_FD_BASE if
13433 the redirection is closing the fd
13434
13435 5/24
13436 ----
13437 subst.c
13438 - make sure that parameter_brace_substring leaves this_command_name
13439 set to either NULL or its previous value after setting it so that
13440 arithmetic evaluation errors while expanding substring values
13441 contain meaningful information
13442
13443 6/9
13444 ---
13445 execute_cmd.c
13446 - make sure that SUBSHELL_ASYNC and SUBSHELL_PIPE are set as flag bits
13447 in subshell_environment, rather than setting only a single value
13448 - change execute_subshell_builtin_or_function to give the `return'
13449 builtin a place to longjmp to when executed in a subshell or pipeline
13450 (mostly as the last command in a pipeline). Bug reported by
13451 Oleg Verych <olecom@gmail.com>
13452 - in execute_simple_command, make sure to call execute_disk_command
13453 with the_printed_command_except_trap to keep DEBUG trap command
13454 strings from overwriting the command strings associated with jobs
13455 and printed in job control messages. Bug reported by Daniel Kahn
13456 Gillmor <dkg-debian.org@fifthhorseman.net>
13457
13458 [bash-3.2-alpha frozen]
13459
13460 6/22
13461 ----
13462 syntax.h
13463 - add new CBLANK (for [:blank:] class) flag value for syntax table and
13464 shellblank(c) character test macro
13465
13466 mksyntax.c
13467 - add support for setting CBLANK flag in the syntax table depending on
13468 whether or not isblank(x) returns true for character x
13469
13470 locale.c
13471 - change locale_setblanks to set or unset CBLANK flag for each
13472 character when locale changes
13473
13474 parse.y
13475 - change call to whitespace(c) in lexical analyzer (read_token()) to
13476 call shellblank(c) instead, so locale-specific blank characters are
13477 treated as white space. Fixes bug reported by Serge van deb Boom
13478 <svdb+bug-bash@stack.nl>
13479
13480 print_cmd.c
13481 - when printing redirections, add a space between <, >, and <> and the
13482 following word, to avoid conflicts with process substitution. Bug
13483 reported by Ittay Dror <ittyad@qlusters.com>
13484
13485 6/26
13486 ----
13487 configure.in
13488 - set CROSS_COMPILE to the empty string by default, so we don't inherit
13489 a random value from the environment. Bug reported by
13490 Lee Revell <rlrevell@joe-job.com>
13491
13492 6/29
13493 ----
13494 lib/glob/xmbsrtowcs.c
13495 - make sure destp is non-null before assigning a 0 to *destp in
13496 xdupmbstowcs. Fix from Louiwa Salem <loulwas@us.ibm.com>
13497
13498 execute_cmd.c
13499 - fix execute_in_subshell to make sure asynchronous isn't set to 0
13500 before subshell_environment is set appropriately and
13501 setup_async_signals is run. Based on report by Louiwa Salem
13502 <loulwas@us.ibm.com>
13503
13504 lib/readline/bind.c
13505 - in rl_generic_bind(), make sure that the keys array is freed before
13506 an error return. Fix from Louiwa Salem <loulwas@us.ibm.com>
13507
13508 7/1
13509 ---
13510 builtins/read.def
13511 - make sure all editing code is protected with #ifdef READLINE, esp.
13512 unwind-protect that restores the default completion function
13513
13514 lib/readline/display.c
13515 - make sure to set local_prompt_len in rl_message() [in bash-3.2-alpha]
13516
13517 7/5
13518 ---
13519 builtins/printf.def
13520 - add more of echo's write error handling to printf. Suggested by
13521 martin.wilck@fujitsu-siemens.com
13522
13523 7/7
13524 ---
13525 lib/readline/display.c
13526 - save and restore local_prompt_len in rl_{save,restore}_prompt
13527 [in bash-3.2-alpha]
13528
13529 7/8
13530 ---
13531 [bash-3.2-alpha released]
13532
13533 7/9
13534 ---
13535 lib/readline/display.c
13536 - make sure that _rl_move_cursor_relative sets cpos_adjusted when it
13537 offsets `dpos' by wrap_offset in a multi-byte locale. Bug reported
13538 by Andreas Schwab and Egmont Koblinger
13539
13540 subst.c
13541 - make sure that the call to mbstowcs in string_extract_verbatim is
13542 passed a string with enough space for the closing NUL. Reported
13543 by Andreas Schwab
13544
13545 7/18
13546 ----
13547 lib/readline/{display,terminal}.c
13548 - remove #ifdefs for HACK_TERMCAP_MOTION so we can use
13549 _rl_term_forward_char in the redisplay code unconditionally
13550
13551 lib/readline/rlprivate.h
13552 - new extern declaration for _rl_term_forward_char
13553
13554 lib/readline/display.c
13555 - in _rl_move_cursor_relative, use `dpos' instead of `new' when
13556 deciding whether or not a CR is faster than moving the cursor from
13557 its current position
13558 - in _rl_move_cursor_relative, we can use _rl_term_forward_char to
13559 move the cursor forward in a multibyte locale, if it's available.
13560 Since that function doesn't have a handle on where the cursor is in
13561 the display buffer, it has to output a cr and print all the data.
13562 Fixes rest of problem reported by Egmont Koblinger
13563 - change variable denoting the position of the cursor in the line buffer
13564 from c_pos (variable local to rl_redisplay) to cpos_buffer_position
13565 (variable local to file) for future use by other functions
13566
13567 7/25
13568 ----
13569 lib/malloc/{stats,table}.h
13570 - include <string.h> for prototypes for memset, strlen
13571
13572 lib/termcap/{termcap,tparam}.c
13573 - include <string.h> and provide macro replacement for bcopy if
13574 necessary
13575
13576 7/27
13577 ----
13578 lib/readline/histexpand.c
13579 - add support for `<<<' here-string redirection operator to
13580 history_tokenize_word. Bug reported by agriffis@gentoo.org
13581
13582 externs.h
13583 - don't add prototype for strerror() if HAVE_STRERROR defined
13584
13585 7/29
13586 ----
13587 subst.c
13588 - in list_string, use `string' instead of `s' -- s is not initialized
13589
13590 8/9
13591 ---
13592 subst.c
13593 - fix parameter_brace_expand to set W_HASQUOTEDNULL in the WORD_DESC it
13594 returns if the result of parameter_brace_substring is a quoted null
13595 ("\177"). Fixes bug reported by Igor Peshansky <pechtcha@cs.nyu.edu>
13596
13597 8/16
13598 ----
13599 lib/readline/readline.h
13600 - new #define, READERR, intended to be used to denote read/input errors
13601
13602 lib/readline/input.c
13603 - in rl_getc, if read() returns an error other than EINTR (after the
13604 EWOULDBLOCK/EAGAIN cases are handled), return READERR rather than
13605 converting return value to EOF if readline is reading a top-level
13606 command (RL_STATE_READCMD)
13607
13608 lib/readline/readline.c
13609 - if rl_read_key returns READERR to readline_internal_char[loop],
13610 abort as if it had read EOF on an empty line, without any conversion
13611 to newline, which would cause a partial line to be executed. This
13612 fixes the bug reported by Mathieu Bonnet <mathieu.bonnet@nalkym.org>
13613
13614 aclocal.m4
13615 - when testing for validity of /dev/fd/3, use /dev/null instead of
13616 standard input, since the standard input fails with linux and `su'.
13617 Bug reported by Greg Shafer <gschafer@zip.com.au>
13618
13619 8/17
13620 ----
13621 Makefile.in
13622 - switch the TAGS and tags targets so TAGS is the output of `etags' and
13623 tags is the output of `ctags'. Suggested by Masatake YAMATO
13624
13625 8/25
13626 ----
13627 execute_cmd.c
13628 - change code to match documentation: set BASH_COMMAND (which takes its
13629 value from the_printed_command_except_trap) only when not running a
13630 trap. Rocky says the debugger is ok with this, and this is what his
13631 original diffs did
13632
13633 8/29
13634 ----
13635 variables.c
13636 - change set_if_not to create shell_variables if it is NULL, since
13637 -o invocation options can cause variables to be set before the
13638 environment is scanned
13639
13640 [bash-3.2-beta frozen]
13641
13642 9/5
13643 ---
13644 [bash-3.2-beta released]
13645
13646 9/8
13647 ---
13648 variables.c
13649 - change dispose_used_env_vars to call maybe_make_export_env
13650 immediately if we're disposing a temporary environment, since
13651 `environ' points to the export environment and getenv() will use
13652 that on systems that don't allow getenv() to be replaced. This
13653 could cause the temporary environment to affect the shell. Bug
13654 reported by Vasco Pedro <vp@di.uevora.pt>
13655
13656 builtins/echo.def,doc/{bash.1,bashref.texi}
13657 - clarify that `echo -e' and echo when the `xpg_echo' shell option is
13658 enabled require the \0 to precede any octal constant to be expanded.
13659 Reported by Vasco Pedro <vp@di.uevora.pt>
13660
13661 9/12
13662 ----
13663 builtins/printf.def
13664 - make sure `%q' format specifier outputs '' for empty string arguments
13665 Bug reported by Egmont Koblinger <egmont@uhulinux.hu>
13666
13667 make_cmd.c
13668 - change make_here_document to echo lines in here-doc if set -v has
13669 been executed. Reported by Eduardo Ochs <eduardoochs@gmail.com>
13670
13671 aclocal.m4
13672 - change BASH_CHECK_MULTIBYTE:
13673 o replace check for wctomb with check for wcrtomb
13674 o add checks for wcscoll, iswctype, iswupper, iswlower,
13675 towupper, towlower
13676 o add call to AC_FUNC_MBRTOWC to check for mbrtowc and mbstate_t
13677 define HAVE_MBSTATE_T manually
13678 o add checks for wchar_t, wctype_t, wint_t
13679
13680 config.h.in
13681 - add defines for wcscoll, iswctype, iswupper, iswlower, towupper,
13682 towlower functions
13683 - replace define for wctomb with one for wcrtomb
13684 - add defines for wchar_t, wint_t, wctype_t types
13685
13686 config-bot.h, lib/readline/rlmbutil.h
13687 - add check for HAVE_LOCALE_H before defining HANDLE_MULTIBYTE
13688 - add checks for: ISWCTYPE, ISWLOWER, ISWUPPER, TOWLOWER, TOWUPPER
13689 - add checks for: WCTYPE_T, WCHAR_T, WCTYPE_T
13690
13691 9/13
13692 ----
13693 lib/readline/display.c
13694 - when displaying prompts longer than the screenwidth in rl_redisplay,
13695 and looking for the index of the last character whose buffer index
13696 is <= the screen width to set up the inv_lbreaks array, make sure to
13697 catch the case where the index == the screen width (an off-by-one
13698 error occurs otherwise with prompts one character longer than the
13699 screen width). Bug reported by Alexey Toptygin <alexeyt@freeshell.org>
13700
13701 configure.in
13702 - change DEBUGGER_START_FILE to start with ${ac_default_prefix}/share,
13703 like bashdb installs itself. Reported by Nick Brown
13704 <nickbroon@blueyonder.co.uk>
13705
13706 9/14
13707 ----
13708 lib/readline/display.c
13709 - make multibyte code that computes the buffer indices of line breaks
13710 for a multi-line prompt dependent on MB_CUR_MAX, so we don't take
13711 the function call hit unless we're in a locale that can have
13712 multibyte characters
13713
13714 9/19
13715 ----
13716 subst.c
13717 - make dequote_list extern so other parts of the shell can use it
13718
13719 subst.h
13720 - extern declaration for dequote_list
13721
13722 builtins/read.def
13723 - call dequote_list before assigning words read to array variable if
13724 we saw an escape character. Old code left spurious CTLESCs in the
13725 string after processing backslashes. Bug reported by Daniel Dawson
13726 <ddawson@icehouse.net>
13727
13728 9/21
13729 ----
13730 [bash-3.2 frozen]