No specific user configuration
[platform/upstream/bash.git] / CWRU / changelog
1                                  2/14/2011
2                                  ---------
3 [bash-4.2 released]
4
5                                    2/15
6                                    ----
7 lib/glob/gmisc.c
8         - fix wmatchlen and umatchlen to avoid going past the end of the
9           string on an incomplete bracket expression that ends with a
10           NUL.  Partial fix for bug reported by Clark Wang <dearvoid@gmail.com>
11
12                                    2/16
13                                    ----
14 subst.h
15         - new string extract flag value: SX_WORD.  Used when calling
16           extract_dollar_brace_string to skip over the word in
17           ${param op word} from parameter_brace_expand
18
19 subst.c
20         - change parameter_brace_expand to add SX_WORD to flags passed to
21           extract_dollar_brace_string
22         - change parameter_brace_expand to use SX_POSIXEXP for all non-posix
23           word expansion operators that treat single quotes as special, not
24           just % and #
25         - change extract_dollar_brace_string to initialize dolbrace_state to
26           DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use
27           DOLBRACE_QUOTE.  Fixes bug reported by Juergen Daubert <jue@jue.li>
28
29 doc/{bash.1,bashref.texi}
30         - document the exact expansions here strings undergo
31
32                                    2/17
33                                    ----
34 lib/readline/vi_mode.c
35         - make sure that `dd', `cc', and `yy' call vidomove_dispatch from
36           rl_domove_read_callback.  Fixes bug reported by Clark Wang
37           <dearvoid@gmail.com>
38
39 lib/readline/callback.c
40         - make sure _rl_internal_char_cleanup is called after the
41           vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char.
42           Companion to above fix
43
44 doc/{bash.1,bashref.texi}
45         - make sure that the text describing the rhs of the == and =~
46           operators to [[ states that only the quoted portion of the pattern
47           is matched as a string
48
49                                    2/18
50                                    ----
51 lib/glob/gmisc.c
52         - better fix for umatchlen/wmatchlen: keep track of the number of
53           characters in a bracket expression as the value to increase
54           matchlen by if the bracket expression is not well-formed.  Fixes
55           bug reported by Clark Wang <dearvoid@gmail.com>
56
57 subst.c
58         - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag
59           in the word flags.  We will not perform word splitting or quote
60           removal on the result, so we do not want to add quoted nulls if
61           we see "" or ''.  Fixes bug reported by Mike Frysinger
62           <vapier@gentoo.org>
63
64                                    2/19
65                                    ----
66 variables.c
67         - new function, int chkexport(name), checks whether variable NAME is
68           exported and remakes the export environment if necessary.  Returns
69           1 if NAME is exported and 0 if not
70         - call chkexport(name) to get tzset to look at the right variable in
71           the environment when modifying TZ in sv_tz.  Don't call tzset if
72           chkexport doesn't indicate that the variable is exported
73
74 variables.h
75         - new extern declaration for chkexport
76
77
78 {parse.y,builtins/printf.def}
79         - call sv_tz before calling localtime() when formatting time strings
80           in prompt strings or using printf.  Fixes bug reported by
81           Dennis Williamson <dennistwilliamson@gmail.com>
82
83 execute_cmd.c
84         - modify fix of 2/9 to add casts when those variables are passed to
85           functions; some compilers throw errors instead of warnings.  Report
86           and fix from Joachim Schmitz <jojo@schmitz-digital.de>
87
88 support/shobj-conf
89         - add a stanza for nsk on the Tandem from Joachim Schmitz
90           <jojo@schmitz-digital.de>
91
92 {shell,lib/readline/shell}.c
93         - Tandem systems should use getpwnam (getlogin()); for some reason
94           they don't do well with using getuid().  Fix from Joachim Schmitz
95           <jojo@schmitz-digital.de>
96
97                                     3/1
98                                     ---
99 variables.c
100         - make sure that the return value from find_variable is non-null
101           before trying to use it in chkexport.  Fixes bug reported by
102           Evangelos Foutras <foutrelis@gmail.com>
103
104                                     3/3
105                                     ---
106 parse.y
107         - when adding $$ to the current token buffer in read_token_word(),
108           don't xmalloc a buffer for two characters and then strcpy it, just
109           copy the characters directly into the token buffer.  Fix from
110           Michael Whitten <mfwitten@gmail.com>
111
112 execute_cmd.c
113         - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to
114           be expanded, so "" doesn't add CTLNUL.  Similar to fix of 2/18 to
115           expand_string_for_rhs.  Fixes bug reported by Nathanael D. Noblet
116           <nathanael@gnat.ca> and Matthias Klose <doko@debian.org>
117
118 parse.y
119         - fix extended_glob case of read_token_word to allocate an extra
120           space in the buffer for the next character read after the extended
121           glob specification if it's a CTLESC or CTLNUL.  Report and fix from
122           Michael Witten <mfwitten@gmail.com>
123         - fix shell expansions case of read_token_word to allocate an extra
124           space in the buffer for the next character read after the shell
125           expansion if it's a CTLESC or CTLNUL.  Report and fix from
126           Michael Witten <mfwitten@gmail.com>
127         - TENTATIVE: fix read_token_word to reduce the amount of buffer space
128           required to hold the translated and double-quoted value of $"..."
129           strings.  Report and fix from Michael Witten <mfwitten@gmail.com>
130         - change code around got_character and got_escaped_character labels to
131           make sure that we call RESIZE_MALLOCED_BUFFER before adding the
132           CTLESC before a CTLESC or CTLNUL, and before adding the character if
133           we're not adding a CTLESC.  Report and fix from
134           Michael Witten <mfwitten@gmail.com>
135
136 subst.c
137         - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that
138           parameter expansion is on rhs of assignment statement.  That inhibits
139           word splitting
140         - change param_expand to call string_list_dollar_at with quoted == 1
141           if PF_ASSIGNRHS is set, so it will quote IFS characters in the
142           positional parameter before separating them with the first char of
143           $IFS.  This keeps the rhs from being split inappropriately.  Fixes
144           bug reported by Andres Perera <andres.p@zoho.com>
145
146                                     3/4
147                                     ---
148 lib/readline/bind.c
149         - add a missing free of `names' in rl_function_dumper.  Bug report
150           and fix from Michael Snyder <msnyder@vmware.com>
151
152                                     3/5
153                                     ---
154 lib/readline/rltty.c
155         - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd
156           if rl_instream is not set, like rl_prep_terminal
157
158                                     3/6
159                                     ---
160 lib/readline/display.c
161         - fix rl_message to use a dynamically-allocated buffer instead of a
162           fixed-size buffer of 128 chars for the `local message prompt'.  Bug
163           report and fix from Micah Cowan <micah@cowan.name>
164
165                                     3/7
166                                     ---
167 jobs.c
168         - add sentinel to wait_sigint_handler so it only sets wait_sigint_received
169           if waiting_for_child is non-zero; otherwise, it restores the old
170           SIGINT handler and sends itself the SIGINT
171         - set waiting_for_child around the calls to waitchld that use it to
172           synchronously wait for a process
173         - change logic that decides whether or not the child process blocked
174           or handled SIGINT based on whether or not waitpid returns -1/EINTR
175           and the shell receives a SIGINT and the child does not exit.  If
176           the child later exits due to SIGINT, cancel the assumoption that it
177           was handled
178         - instead of testing whether or not the child exited due to SIGINT
179           when deciding whether the shell should act on a SIGINT it received
180           while waiting, test whether or not we think the child caught
181           SIGINT.  If it did, we let it go (unless the shell has it trapped);
182           if it did not catch it, the shell acts on the SIGINT.  Fix from
183           Linus Torvalds <torvalds@linux-foundation.org>, bug report originally
184           from Oleg Nesterov <oleg@redhat.com>
185
186                                     3/8
187                                     ---
188 shell.c
189         - initialize no_line_editing to 1 if READLINE is not defined -- we
190           can't have line editing without readline
191
192                                    3/12
193                                    ----
194 lib/readline/signals.c
195         - add SIGHUP to the set of signals readline handles
196
197 lib/readline/doc/rltech.texi
198         - document that SIGHUP is now part of the set of signals readline
199           handles
200
201 lib/readline/input.c
202         - if _rl_caught_signal indicates that read() was interrupted by a
203           SIGHUP or SIGTERM, return READERR or EOF as appropriate
204         - call rl_event_hook, if it's set, if call to read in rl_getc
205           returns -1/EINTR.  If rl_event_hook doesn't do anything, this
206           continues the loop as before.  This handles the other fatal
207           signals
208
209 execute_cmd.c
210         - add a couple of QUIT; calls to execute_disk_command and
211           execute_simple_command to improve responsiveness to interrupts
212           and fatal signals
213
214 input.c
215         - rearrange getc_with_restart so that the return values from read()
216           are handled right
217
218 parse.y
219         - don't need to set terminate_immediately in yy_stream_get, since
220           getc_with_restart checks for terminating signals itself
221         - since readline returns READERR on SIGHUP or SIGTERM, don't need
222           to set terminate_immediately.  Still doesn't handle other
223           signals well -- will have to check that some more
224
225 bashline.c
226         - new function, bash_event_hook, for rl_event_hook.  Just checks for
227           terminating signals and acts on them using CHECK_TERMSIG.
228         - set rl_event_hook to bash_event_hook
229
230 builtins/read.def
231         - take out setting terminate_immediately; add calls to CHECK_TERMSIG
232           after read calls
233
234 doc/{bash.1,bashref.texi}
235         - move the text describing the effect of negative subscripts used to
236           reference indexed array elements to the paragraphs describing
237           ${parameter[subscript]}, since that's where they are implemented.
238           Pointed out by Christopher F. A. Johnson <cfajohnson@gmail.com>
239
240 arrayfunc.[ch],subst.c
241         - array_expand_index now takes a new first argument: a SHELL_VAR *
242           of the array variable being subscripted.  Can be used later to fully
243           implement negative subscripts
244
245                                    3/14
246                                    ----
247 lib/glob/glob.c
248         - fix mbskipname to not turn the directory entry name into a wide char
249           string if the conversion of the pattern to a wide char string fails
250         - fix mbskipname to call skipname if either the pattern or the filename
251           can't be converted into a wide-char string
252
253 lib/glob/xmbsrtowcs.c
254         - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and
255           short-circuit with failure in that case.  Fixes bug reported by
256           Roman Rakus <rrakus@redhat.com>
257
258                                    3/15
259                                    ----
260 bashline.c
261         - new variable, bash_filename_quote_characters to store the value
262           assigned to rl_filename_quote_characters so it can be restored
263           if changed.
264         - change bashline_reset and attempt_shell_completion to restore
265           rl_filename_quote_characters if not set to default
266
267                                    3/22
268                                    ----
269 lib/glob/glob.c
270         - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs
271           fails to convert the pathname to a wide-character string
272
273 lib/glob/xmbsrtowcs.c
274         - xdupmbstowcs2: change to fix problem with leading '\\' (results in
275           nms == 0, which causes it to short-circuit with failure right
276           away).  Fixes bug pointed out by Werner Fink <werner@suse.de>
277         - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the
278           next single-byte character and going on
279         - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC
280           bytes; try to avoid calls to realloc (even if they don't actually
281           result in more memory being allocated)
282
283                                    3/24
284                                    ----
285 doc/{bash.1,bashref.texi}
286         - slightly modify BASH_SUBSHELL description based on complaint from
287           Sam Liddicott <sam@liddicott.com>
288
289                                    3/25
290                                    ----
291 trap.c
292         - change free_trap_strings to not call free_trap_string for signals
293           that are being ignored, like reset_or_restore_signal_handlers.
294           Fixes bug reported by Satoshi Takahashi <blue3waters@gmail.com>
295
296                                    3/26
297                                    ----
298 lib/readline/rltypedefs.h
299         - remove old Function/VFunction/CPFunction/CPPFunction typedefs as
300           suggested by Tom Tromey <tromey@redhat.com>
301
302 lib/readline/rlstdc.h
303         - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from
304           config.h.in to here because declaration of rl_message in
305           readline.h uses the defines.  This makes it hard for another packages
306           to use after the header files are installed, since config.h is not
307           one of the installed files.  Suggested by Tom Tromey
308           <tromey@redhat.com>
309
310                                    3/27
311                                    ----
312 print_cmd.c
313         - change indirection_string from a static buffer to a dynamic one
314           managed by indirection_level_string(), so we don't end up truncating
315           PS4.  Suggested by Dennis Williamson <dennistwilliamson@gmail.com>
316
317 lib/readline/shell.c
318         - change sh_set_lines_and_columns to use static buffers instead of
319           allocating the buffers to pass to setenv/putenv
320
321 lib/readline/terminal.c
322         - change _rl_get_screen_size to not call sh_set_lines_and_columns if
323           ignore_env == 0
324         - _rl_sigwinch_resize_terminal: new function to just retrieve terminal
325           size, ignoring environment
326
327 lib/readline/rlprivate.h
328         - new external declaration for _rl_sigwinch_resize_terminal() (currently
329           unused)
330
331 lib/readline/signals.c
332         - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH
333         - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just
334           leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle
335         - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH.
336           Should fix hang when sending multiple repeated SIGWINCH reported by
337           Henning Bekel <h.bekel@googlemail.com>
338
339                                    3/29
340                                    ----
341 lib/sh/snprintf.c
342         - include math.h for any defines for isinf/isnan
343         - use code from gnulib documentation to implement isinf/isnan if they
344           are not defined
345
346 configure.in
347         - don't check for isinf or isnan; c99 says they're macros anyway
348
349 config.h.in
350         - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used
351           by snprintf.c
352
353                                     4/2
354                                     ---
355 braces.c
356         - brace_gobbler: fix to understand double-quoted command substitution,
357           since the shell understands unquoted comsubs.  Fixes bug reported
358           by Michael Whitten <mfwitten@gmail.com>
359
360 lib/readline/display.c
361         - include <pc.h> on MDOS
362         - get and set screen size using DJGPP-specific calls on MSDOS
363         - move cursor up clear screen using DJGPP-specific calls
364         - don't call tputs on DJGPP; there is no good terminfo support
365
366 lib/readline/terminal.c
367         - include <pc.h> on MDOS
368         - get and set screen size using DJGPP-specific calls on MSDOS
369         - use DJGPP-specific initialization on MSDOS, zeroing all the
370           _rl_term_* variables
371         - don't call tputs on DJGPP; there is no good terminfo support
372           DJGPP support from Eli Zaretskii  <eliz@gnu.org>
373
374                                     4/6
375                                     ---
376
377 config-top.h
378         - change DEFAULT_PATH_VALUE to something more useful and modern
379
380                                     4/8
381                                     ---
382 tests/printf2.sub
383         - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect.
384           Reported by Cedric Arbogast <arbogast.cedric@gmail.com>
385
386                                    4/11
387                                    ----
388 include/chartypes.h
389         - fix a couple of dicey defines (though ones that don't cause any
390           compiler warnings) in IN_CTYPE_DOMAIN
391
392 doc/{bashref.texi,bash.1}
393         - add note referring to duplicating file descriptors in sections
394           describing redirecting stdout and stderr and appending to stdout
395           and stderr.  Suggested by Matthew Dinger <mdinger.bugzilla@gmail.com>
396
397 pcomplete.c
398         - it_init_helptopics: new function to support completing on help topics,
399           not just builtins
400         - it_helptopics: new programmable completion list of help topics
401         - build list of helptopic completions in gen_action_completions on
402           demand
403
404 pcomplete.h
405         - new extern declaration for it_helptopics
406
407 builtins/complete.def
408         - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN,
409           since there are more help topics than just builtins.  Suggested by
410           Clark Wang <dearvoid@gmail.com>
411
412                                    4/12
413                                    ----
414 print_cmd.c
415         - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS
416           before ending the body of the command, so heredocs get attached to
417           the right command instead of to the loop.  From gentoo bug 363371
418           http://bugs.gentoo.org/show_bug.cgi?id=363371
419
420 execute_cmd.c
421         - change coproc_pidchk to unset the appropriate shell variables when
422           the (currently single) known coproc pid terminates
423         - cleanup and new functions to fully support multiple coprocesses when
424           and if I decide to go there
425
426                                    4/13
427                                    ----
428 print_cmd.c
429         - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS
430           after call to make_command_string_internal before printing closing
431           `}'
432         - fix make_command_string_internal to add a call to
433           PRINT_DEFERRED_HEREDOCS after recursive call to
434           make_command_string_internal in case cm_subshell before printing
435           closing `)'
436
437                                    4/14
438                                    ----
439 print_cmd.c
440         - change overlapping strcpy in named_function_string to memmove
441
442 sig.h
443         - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just
444           restores an old signal mask
445
446 trap.c
447         - set_signal: instead of setting the signal handler to SIG_IGN while
448           installing the new trap handler, block the signal and unblock it
449           after the new handler is installed.  Fixes bug reported by Roman
450           Rakus <rrakus@redhat.com>
451
452                                    4/15
453                                    ----
454 doc/{bash.1,bashref.texi}
455         - make it clear that enabling monitor mode means that all jobs run in
456           separate process groups
457
458                                    4/18
459                                    ----
460 builtins/fc.def
461         - update fix of 4/15/2010 to not take saved_command_line_count into
462           account when stepping down the history list to make sure that
463           last_hist indexes something that is valid.  Fixes bug reported by
464           <piuma@piumalab.org>
465
466                                    4/19
467                                    ----
468 builtins/fc.def
469         - fc_gethnum: make sure the calculation to decide the last history
470           entry is exactly the same as fc_builtin.  Fixes bug uncovered by
471           fix of 4/18 to stop seg fault
472
473                                    4/22
474                                    ----
475 lib/readline/terminal.c
476         - change _rl_enable_meta_key to set a flag indicating that it sent the
477           enable-meta sequence
478         - _rl_disable_meta_key: new function to turn off meta mode after we
479           turned it on with _rl_enable_meta_key
480
481 lib/readline/rlprivate.h
482         - extern declaration for _rl_disable_meta_key
483
484 configure.in
485         - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited
486           from the environment.  Fixes HP/UX build problem reported by
487           "Daniel Richard G." <skunk@iSKUNK.ORG>
488
489                                    4/26
490                                    ----
491 config-top.h
492         - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy
493           to enable via configure option or editing this file
494
495                                    4/29
496                                    ----
497 lib/sh/eaccess.c
498         - freebsd provides faccessat, with the same misfeature as their eaccess
499           and access implementations (X_OK returns true for uid==0 regardless
500           of the actual file permissions), so reorganize code to check the
501           file permissions as with eaccess.  Report and fix from Johan Hattne
502           <johan.hattne@utsouthwestern.edu>
503
504                                     5/2
505                                     ---
506 doc/{bash.1,bashref.texi}
507         - add forward reference to `Pattern Matching' from `Pathname
508           Expansion', suggested by Greg Wooledge <wooledg@eeg.ccf.org>
509
510                                     5/5
511                                     ---
512 pcomplib.c
513         - the bash_completion project now distributes over 200 completions
514           for various programs, with no end in sight, so increase the value
515           of COMPLETE_HASH_BUCKETS from 32 to 128
516
517 pathexp.c
518         - quote_string_for_globbing: make sure CTLESC quoting CTLESC is
519           translated into \<CTLESC> even if the flags include QGLOB_REGEXP.
520           We don't want to process the second CTLESC as a quote character.
521           Fixes bug reported by Shawn Bohrer <sbohrer@rgmadvisors.com>
522
523                                     5/6
524                                     ---
525 builtins/printf.def
526         - change PRETURN to not call fflush if ferror(stdout) is true
527         - if a call to one of the stdio functions or printstr leaves
528           ferror(stdout) true, and PRETURN is going to be called, let PRETURN
529           print the error message rather than doubling up the messages.  Fixes
530           problem reported by Roman Rakus <rrakus@redhat.com>
531
532                                     5/9
533                                     ---
534 doc/{bash.1,bashref.texi}
535         - add note to the effect that lists inside compound command can be
536           terminated by newlines as well as semicolons.  Suggested by
537           Roman Byshko <rbyshko@gmail.com>
538
539                                    5/10
540                                    ----
541 subst.c
542         - remove_quoted_nulls: fix problem that caused it to skip over the
543           character after a CTLNUL, which had the effect of skipping every
544           other of a series of CTLNULs.  Fixes bug reported by
545           Marten Wikstrom <marten.wikstrom@keystream.se>
546
547                                    5/11
548                                    ----
549 subst.c
550         - extract_process_subst: add SX_COMMAND flag to call to
551           extract_delimited_string, since we're expanding the same sort of
552           command as command substitution.  Fixes bug reported in Ubuntu
553           bug 779848
554
555                                    5/12
556                                    ----
557 configure.in
558         - set the prefer_shared and prefer_static variables appropriately
559           depending on the value of $opt_static_link
560
561 aclocal.m4
562         - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the
563           libraries it's searching for if the prefer_shared variable is "no".
564           Fixes problem reported by Cedric Arbogast <arbogast.cedric@gmail.com>
565
566                                    5/13
567                                    ----
568 lib/readline/readline.c
569         - _rl_internal_teardown: add call to _rl_disable_meta_key to make the
570           meta key active only for the duration of the call to readline()
571         - _rl_internal_setup: move call to _rl_enable_meta_key here from
572           readline_initialize_everything so the meta key is active only for
573           the duration of the call to readline().  Suggestion from Miroslav
574           Lichvar <mlichvar@redhat.com>
575
576 builtins/help.def
577         - help_builtin: change strncmp to strcmp so that `help read' no longer
578           matches `readonly'.  Suggested by Clark Wang <dearvoid@gmail.com>
579
580 config.h.in
581         - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests
582           for libintl
583
584 lib/malloc/malloc.c
585         - internal_free: don't use the cached value of memtop when deciding
586           whether or not to adjust the break and give memory back to the kernel
587           when using the GNU C library, since glibc uses sbrk for its own
588           internal purposes.  From Debian bug 614815, reported by Samuel
589           Thibault <samuel.thibault@gnu.org>
590
591 aclocal.m4
592         - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN
593           to avoid warning about not using AC_LANG_SOURCE
594
595                                    5/14
596                                    ----
597 bashline.[ch]
598         - two new functions, bashline_set_event_hook and bashline_reset_event_hook,
599           to set rl_event_hook to bash_event_hook and back to NULL, respectively
600         - don't set rl_event_hook unconditionally
601
602 sig.c
603         - termsig_sighandler: if the shell is currently interactive and
604           readline is active, call bashline_set_event_hook to cause
605           termsig_handler to be called via bash_event_hook when the shell
606           returns from the signal handler
607
608                                    5/15
609                                    ----
610 lib/readline/display.c
611         - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0
612           for UTF-8 combining characters.  Added workaround dependent on
613           MACOSX.  Fixes problem pointed out by Thomas De Contes
614           <d.l.tDecontes@free.fr>
615
616                                    5/16
617                                    ----
618 lib/readline/rlmbutil.h
619         - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining
620           characters on systems where wcwidth is broken (e.g., Mac OS X).
621
622 lib/readline/{complete,display,mbutil}.c
623         - use WCWIDTH instead of wcwidth
624
625                                    5/17
626                                    ----
627 lib/readline/display.c
628         - update_line: after computing ofd and nfd, see whether the next
629           character in ofd is a zero-width combining character.  If it is,
630           back ofd and nfd up one, so the base characters no longer compare
631           as equivalent.  Fixes problem reported by Keith Winstein
632           <keithw@mit.edu>
633
634 lib/readline/nls.c
635         - _rl_utf8locale: new flag variable, set to non-zero if the current
636           locale is UTF-8
637         - utf8locale(): new function, returns 1 if the passed lspec (or the
638           current locale) indicates that the locale is UTF-8.  Called from
639           _rl_init_eightbit
640
641 lib/readline/rlprivate.h
642         - extern declaration for _rl_utf8locale
643
644 locale.c
645         - locale_utf8locale: new flag variable, set to non-zero if the current
646           locale is UTF-8 (currently unused)
647         - locale_isutf8(): new function, returns 1 if the passed lspec (or the
648           current locale) indicates that the locale is UTF-8.  Should be called
649           whenever the locale or LC_CTYPE value is modified
650
651 aclocal.m4
652         - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns
653           zero-width characters like unicode combining characters as having
654           display length 1; define WCWIDTH_BROKEN in this case
655
656 config.h.in
657         - WCWIDTH_BROKEN: new define
658
659 lib/readline/rlmbutil.h
660         - change WCWIDTH macro to use _rl_utf8locale and the full range of
661           Unicode combining characters (U+0300-U+036F)
662
663                                    5/19
664                                    ----
665 lib/readline/rlprivate.h
666         - _rl_search_context: new member, prevc, will hold character read
667           prior to lastc
668
669 lib/readline/isearch.c
670         - _rl_isearch_dispatch: if the character causes us to index into
671           another keymap, save that character in cxt->prevc
672         - _rl_isearch_dispatch: if we index into another keymap, but don't
673           find a function that's special to i-search, and the character that
674           caused us to index into that keymap would have terminated the
675           search, push back cxt->prevc and cxt->lastc to make it appear as
676           if `prevc' terminated the search, and execute lastc as a command.
677           We have to push prevc back so we index into the same keymap before
678           we read lastc.  Fixes bug report from Davor Cubranic
679           <cubranic@stat.ubc.ca>
680
681                                    5/20
682                                    ----
683 expr.c
684         - expr_bind_variable: pay attention to the return value from
685           bind_variable and check whether or not we should error out due to
686           a readonly or noassign variable.  Fixes bug reported by Eric
687           Blake <eblake@redhat.com>
688
689                                    5/26
690                                    ----
691
692 lib/readline/search.c
693         - include histlib.h for ANCHORED_SEARCH defines
694         - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for
695           the duration of a history search
696         - rl_history_search_reinit: takes a new flags variable, defines whether
697           or not the search is anchored; assigned to rl_history_search_flags
698         - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to
699           beginning of search string; otherwise search string is unmodified
700         - rl_history_search_internal: set rl_point appropriately based on
701           whether or not rl_history_search_flags includes ANCHORED_SEARCH
702         - rl_history_substr_search_forward: new function, for non-anchored
703           substring search forward through history for string of characters
704           preceding rl_point
705         - rl_history_substr_search_backward: new function, for non-anchored
706           substring search backward through history for string of characters
707           preceding rl_point.  Original code from Niraj Kulkarni
708           <kulkarniniraj14@gmail.com>
709
710 lib/readline/readline.h
711         - extern declarations for rl_history_substr_search_{for,back}ward
712
713 lib/readline/funmap.c
714         - history-substring-search-forward: new bindable command, invokes
715           rl_history_substr_search_forward
716         - history-substring-search-backward: new bindable command, invokes
717           rl_history_substr_search_backward
718
719 lib/readline/doc/{rluser.texi,readline.3}
720         - document history-substring-search-forward and
721           history-substring-search-backward
722
723                                    5/27
724                                    ----
725 {nojobs,jobs}.c
726         - add support for DONT_REPORT_SIGTERM so that the shell doesn't print
727           a message when a job exits due to SIGTERM since that's the default
728           signal sent by the kill builtin.  Suggested by Marc Herbert
729           <mark.herbert@gmail.com>
730
731 config-top.h
732         - DONT_REPORT_SIGTERM: new user-modifiable setting.  Commented out
733           by default
734
735                                    5/28
736                                    ----
737 lib/readline/bind.c
738         - _rl_skip_to_delim: skip to a closing double quote or other delimiter,
739           allowing backslash to quote any character, including the delimiter
740         - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline
741           code
742         - rl_parse_and_bind: allow quoted strings as the values of string
743           variables.  Variable values without double quotes have trailing
744           whitespace removed (which still allows embedded whitespace, for
745           better or worse).  Fixes problem with string variables not matching
746           in `set' command if values happen to have trailing spaces or tabs
747           (debian bash bug #602762), but introduces slight incompatibility.
748
749                                    5/29
750                                    ----
751 doc/{bash.1,bashref.texi}
752         - clarify unset description to specify that without options, a
753           variable, then a shell function if there is no variable by that
754           name, is unset.  Fixes discrepancy reported by Mu Qiao
755           <qiaomuf@gentoo.org>
756
757                                    6/4
758                                    ----
759 doc/{bash.1,bashref.texi}
760         - clarify description of LINES and COLUMNS (and checkwinsize shopt
761           option) to make it clear that only interactive shells set a
762           handler for SIGWINCH and update LINES and COLUMNS.  Original
763           report submitted by Jonathan Nieder <jrnieder@gmail.com>
764
765 arrayfunc.c
766         - expand_compound_array_assignment: defer expansion of words between
767           parens when performing compound assignmnt to an associative array
768           variable
769         - assign_compound_array_list: perform the same expansions when doing
770           a compound array assignment to an associative array variable as
771           when doing a straight array index assignment.  The idea is that
772                 foo=( [ind1]=bar [ind2]=quux)
773           is the same as
774                 foo[ind1]=bar ; foo[ind2]=quux
775
776           This fixes problems with double-expansion and quote removal being
777           performed on the array indices
778
779                                    6/13
780                                    ----
781 doc/{bash.1,bashref.texi}
782         - Add a little text to make it clear that the locale determines how
783           range expressions in glob patterns are handled.
784
785
786                                    6/21
787                                    ----
788 builtins/read.def
789         - display a message and return error status if -a is used with an
790           existing associative array.  Fixes bug reported by Curtis Doty
791           <curtis@greenkey.net>
792
793                                    6/24
794                                    ----
795 {jobs,nojobs}.c
796         - non-interactive shells now react to the setting of checkwinsize
797           and set LINES and COLUMNS after a foreground job exits.  From a
798           suggestion by Leslie Rhorer <lrhorer@satx.rr.com>
799
800 doc/{bash.1,bashref.texi}
801         - checkwinsize: remove language saying that only interactive shells
802           check the window size after each command
803
804 lib/readline/histfile.c
805         - history_backupfile: new file, creates a backup history file name
806           given a filename (appending `-')
807         - history_do_write: when overwriting the history file, back it up
808           before writing.  Restore backup file on a write error.  Suggested
809           by chkno@chkno.net
810
811 bashline.c
812         - find_cmd_name: two new arguments, return the start and end of the
813           actual text string used to find the command name, without taking
814           whitespace into account
815         - attempt_shell_completion: small changes to make sure that completion
816           attempted at the beginning of a non-empty line does not find a
817           programmable completion, even if the command name starts at point
818         - attempt_shell_completion: small change to make sure that completion
819           does not find a progcomp when in whitespace before the command
820           name
821         - attempt_shell_completion: small change to make sure that completion
822           does not find a progcomp when point is at the first character of a
823           command name, even when there is leading whitespace (similar to
824           above).  Fixes problems noted by Ville Skytta <ville.skytta@iki.fi>
825
826 subst.c
827         - brace_expand_word_list: since the individual strings in the strvec
828           returned by brace_expand are already allocated, don't copy them to
829           newly-allocated memory when building the WORD_LIST, just use them
830           intact
831
832 locale.c
833         - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change
834           the locale to avoid a function call every time we need to read it
835
836 shell.h
837         - new struct to save shell_input_line and associated variables:
838           shell_input_line_state_t
839         - add members of sh_parser_state_t to save and restore token and the
840           size of the token buffer
841
842 parse.y
843         - {save,restore}_input_line_state: new functions to save and restore
844           shell_input_line and associated variables
845         - {save,restore}_parser_state: add code to save and restore the token
846           and token buffer size
847         - xparse_dolparen: call save_ and restore_input_line_state to avoid
848           problems with overwriting shell_input_line when we recursively
849           call the parser to parse a command substitution.  Fixes bug
850           reported by Rui Santos <rsantos@grupopie.com>
851
852 include/shmbutil.h
853         - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and
854           similar macros
855
856 lib/glob/smatch.c
857         - rangecmp,rangecmp_wc: change to take an additional argument, which
858           forces the use of strcoll/wscoll when non-zero.  If it's 0, a new
859           variable `glob_asciirange' controls whether or not we use strcoll/
860           wscoll.  If glob_asciirange is non-zero, we use straight
861           C-locale-like ordering. Suggested by  Aharon Robbins
862           <arnold@skeeve.com>
863
864                                    6/30
865                                    ----
866 execute_cmd.c
867         - execute_pipeline: make sure the lastpipe code is protected by
868           #ifdef JOB_CONTROL.  Fixes problem reported by Thomas Cort
869           <tcort@minix3.org>
870
871                                     7/2
872                                     ---
873 lib/readline/complete.c
874         - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around
875           completion functions that touch the file system.  Idea from Jan
876           Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
877           team
878
879 lib/readline/signals.c
880         - rl_signal_handler: if we're in callback mode, don't interrupt
881           immediately on a SIGWINCH
882
883                                     7/3
884                                     ---
885 bashline.c
886         - set_directory_hook: and its siblings are a new set of functions to
887           set, save, and restore the appropriate directory completion hook
888         - change callers to use {set,save,restore}_directory_hook instead of
889           manipulating rl_directory_rewrite_hook directly
890         - dircomplete_expand: new variable, defaults to 0, if non-zero causes
891           directory names to be word-expanded during word and filename
892           completion
893         - change {set,save,restore}_directory_hook to look at dircomplete_expand
894           and change rl_directory_completion_hook or rl_directory_rewrite_hook
895           appropriately
896
897 bashline.h
898         - extern declaration for set_directory_hook so shopt code can use it
899
900                                     7/6
901                                     ---
902 builtins/shopt.def
903         - globasciiranges: new settable shopt option, makes glob ranges act
904           as if in the C locale (so b no longer comes between A and B).
905           Suggested by Aharon Robbins <arnold@skeeve.com>
906
907                                     7/7
908                                     ---
909 doc/{bash.1,bashref.texi}
910         - document new `globasciiranges' shopt option
911
912                                     7/8
913                                     ---
914 builtins/shopt.def
915         - direxpand: new settable option, makes filename completion expand
916           variables in directory names like bash-4.1 did.
917         - shopt_set_complete_direxpand: new function, does the work for the
918           above by calling set_directory_hook
919
920 doc/{bash.1,bashref.texi}
921         - document new `direxpand' shopt option
922
923                                    7/15
924                                    ----
925 lib/readline/isearch.c
926         - _rl_isearch_dispatch: when adding character to search string, use
927           cxt->lastc (which we use in the switch statement) instead of c,
928           since lastc can be modified earlier in the function
929
930                                    7/18
931                                    ----
932 lib/readline/rlprivate.h
933         - _rl_search_context: add another member to save previous value of
934           (multibyte) lastc: pmb is to mb as prevc is to lastc
935
936 lib/readline/isearch.c:
937         - _rl_isearch_dispatch: if a key sequence indexes into a new keymap,
938           but doesn't find any bound function (k[ind].function == 0) or is
939           bound to self-insert (k[ind].function == rl_insert), back up and
940           insert the previous character (the one that caused the index into a
941           new keymap) and arrange things so the current character is the next
942           one read, so both of them end up in the search string.  Fixes bug
943           reported by Clark Wang <dearvoid@gmail.com>
944         - _rl_isearch_dispatch: a couple of efficiency improvements when adding
945           characters to the isearch string
946
947                                    7/24
948                                    ----
949 lib/readline/isearch.c
950         - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb
951           appropriately when in a multibyte locale
952
953 doc/{bash.1,bashref.texi}
954         - correct description of {x}>file (and other redirection operators
955           that allocate a file descriptor) to note the the fd range is
956           greater than or equal to 10.  Fixes problem reported by
957           Christian Ullrich 
958
959 lib/readline/signals.c
960         - rl_signal_handler: don't interrupt immediately if in callback mode
961
962 lib/readline/callback.c
963         - rl_callback_read_char: install signal handlers only when readline
964           has control in callback mode, so readline's signal handlers aren't
965           called when the application is active (e.g., between the calls to
966           rl_callback_handler_install and rl_callback_read_char).  If the
967           readline signal handlers only set a flag, which the application
968           doesn't know about, the signals will effectively be ignored until
969           the next time the application calls into the readline callback
970           interface.  Fixes problem of calling unsafe functions from signal
971           handlers when in callback mode reported by Jan Kratochvil
972           <jan.kratochvil@redhat.com>
973
974 execute_cmd.c
975         - fix_assignment_words: when in Posix mode, the `command' builtin
976           doesn't change whether or not the command name it protects is an
977           assignment builtin.  One or more instances of `command'
978           preceding `export', for instance, doesn't make `export' treat its
979           assignment statement arguments differently.  Posix interpretation
980           #351
981
982 doc/{bash.1,bashref.texi}
983         - document new Posix-mode behavior of `command' when preceding builtins
984           that take assignment statements as arguments
985
986 builtins/printf.def
987         - printstr: if fieldwidth or precision are < 0 or > INT_MAX when
988           supplied explicitly (since we take care of the `-' separately),
989           clamp at INT_MAX like when using getint().  Fixes issue reported
990           by Ralph Coredroy <ralph@inputplus.co.uk>
991
992                                    7/25
993                                    ----
994 lib/readline/chardefs.h
995         - isxdigit: don't define if compiling with c++; declared as a c++
996           template function.  Fixes bug reported by Miroslav Lichvar
997           <mlichvar@redhat.com>
998
999 builtins/printf.def
1000         - getint: if garglist == 0, return whatever getintmax returns (0).
1001           Fixes bug reported  by Ralph Coredroy <ralph@inputplus.co.uk>
1002
1003                                    7/28
1004                                    ----
1005 doc/{bash.1,bashref.texi}
1006         - minor changes to the descriptions of the cd and pushd builtins
1007
1008 lib/sh/zread.c
1009         - zsyncfd: change variable holding return value from lseek to
1010           off_t.  Bug report and fix from Gregory Margo <gmargo@pacbell.net>
1011
1012                                     8/1
1013                                     ---
1014 expr.c
1015         - don't check for division by 0 when in a context where no evaluation
1016           is taking place.  Fixes bug reported by dnade.ext@orange-ftgroup.com
1017
1018                                     8/6
1019                                     ---
1020 execute_cmd.c
1021         - execute_command_internal: the parent branch of the subshell code
1022           (where the child calls execute_in_subshell) should not close all
1023           open FIFOs with unlink_fifo_list if it's part of a shell function
1024           that's still executing.  Fixes bug reported by Maarten Billemont
1025           <lhunath@lyndir.com>
1026
1027                                     8/9
1028                                     ---
1029 builtins/common.c
1030         - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument
1031
1032 builtins/return.def
1033         - return_builtin: just call get_exitstat to get the return status,
1034           let it handle proper parsing and handling of arguments.  Fixes
1035           issue most recently raised by Linda Walsh <bash@tlinx.org>.
1036           Reverses change from 9/11/2008 (see above)
1037
1038                                    8/16
1039                                    ----
1040 doc/{bash.1,bashref.texi}
1041         - clean up `set -e' language to make it clearer that any failure of
1042           a compound command will cause the shell to exit, not just subshells
1043           and brace commands
1044
1045                                    8/17
1046                                    ----
1047 configure.in
1048         - make the various XXX_FOR_BUILD variables `precious' to autoconf to
1049           avoid stale data
1050         - change how CC_FOR_BUILD is initialized when cross-compiling and not,
1051           but do not change behavior
1052         - initialize CFLAGS_FOR_BUILD to -g when cross-compiling
1053         - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty
1054           when cross-compiling
1055         - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when
1056           CFLAGS not inherited from environment (like effect of old
1057           auto_cflags variable)
1058         - substitute LIBS_FOR_BUILD into output Makefiles
1059           [changes inspired by bug report from Nathan Phillip Brink
1060           <ohnobinki@ohnopublishing.net> -- gentoo bug 378941]
1061
1062 builtins/Makefile.in    
1063         - substitute LIBS_FOR_BUILD from configure, not strictly initialized
1064           to $(LIBS)
1065
1066                                    8/27
1067                                    ----
1068 doc/{bash.1,bashref.texi}
1069         - minor changes to the here string description to clarify the
1070           expansions performed on the word
1071
1072 support/shobj-conf
1073         - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes
1074           to darwin stanzas.  Fixes readline bug reported by Vincent
1075           Sheffer <vince.sheffer@apisphere.com>
1076
1077 lib/sh/strtrans.c
1078         - ansic_wshouldquote: check a string with multi-byte characters for
1079           characters that needs to be backslash-octal escaped for $'...'
1080         - ansic_shouldquote: if is_basic fails for one character, let
1081           ansic_wshouldquote examine the rest of the string and return what
1082           it returns.  From a patch sent by Roman Rakus <rrakus@redhat.com>
1083
1084                                    8/30
1085                                    ----
1086 lib/sh/strtrans.c
1087         - ansic_quote: changes to quote (or not) multibyte characters.  New
1088           code converts them to wide characters and uses iswprint to check
1089           valid wide chars.  From a patch sent by Roman Rakus
1090           <rrakus@redhat.com>
1091
1092                                     9/7
1093                                     ---
1094 lib/sh/shquote.c
1095         - sh_backslash_quote: change to be table-driven so we can use a
1096           different table if we want to
1097         - sh_backslash_quote: takes a second char table[256] argument;
1098
1099 externs.h
1100         - sh_backslash_quote: add second argument to function prototype
1101
1102 bashline.c,braces.c,parse.y,builtins/printf.def
1103         - change callers of sh_backslash_quote to add second argument
1104
1105 bashline.c
1106         - filename_bstab: table of characters to pass to sh_backslash_quote;
1107           characters with value 1 will be backslash-quoted
1108         - set_filename_bstab: turn on characters in filename backslash-quote
1109           table according to passed string argument
1110         - call set_filename_bstab every time rl_filename_quote_characters is
1111           assigned a value
1112         - bash_quote_filename: call sh_backslash_quote with filename_bstab
1113           as second argument.  This allows other characters in filenames to
1114           be quoted without quoting, for instance, a dollar sign in a shell
1115           variable reference
1116
1117                                     9/8
1118                                     ---
1119 bashline.c
1120         - complete_fullquote: new variable, controls table passed to
1121           sh_backslash_quote.  If non-zero (the default), the standard set
1122           of shell metacharacters -- as in bash versions up to and including
1123           bash-4.2 -- gets backslash-quoted by the completion code.  If zero,
1124           sh_backslash_quote gets the table with the characters in the
1125           variable reference removed, which means they are removed from the
1126           set of characters to be quoted in filenames
1127
1128                                    9/10
1129                                    ----
1130 bashline.c
1131         - bash_filename_stat_hook: new function, designed to expand variable
1132           references in filenames before readline passes them to stat(2)
1133           to determine whether or not they are a directory
1134
1135                                    9/15
1136                                    ----
1137 builtins/declare.def
1138         - if assign_array_element fails due to a bad (or empty) subscript, mark
1139           it as an assignment error and don't attempt any further processing
1140           of that declaration.  Fixes segfault bug reported by Diego Augusto
1141           Molina <diegoaugustomolina@gmail.com>
1142
1143                                    9/19
1144                                    ----
1145 expr.c
1146         - exppower: replace the simple exponentiation algorithm with an
1147           implementation of exponentiation by squaring.  Inspired by report
1148           from Nicolas ARGYROU <nargy@yahoo.com>
1149
1150 bashline.c
1151         - bash_quote_filename: check for rtext being non-null before
1152           dereferencing it
1153         - set_saved_history: operate_and_get_next assumes that the previous
1154           line was added to the history, even when the history is stifled and
1155           at the max number of entries.  If it wasn't, make sure the history
1156           number is incremented properly.  Partial fix for bug reported by
1157           gregrwm <backuppc-users@whitleymott.net>
1158
1159 doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi
1160         - minor editorial changes inspired by suggestions from
1161           Roger Zauner <rogerx.oss@gmail.com>
1162
1163                                    9/20
1164                                    ----
1165 lib/intl/localealias.c
1166         - read_alias_file: close resource leak (fp) when returning on error
1167
1168                                    9/22
1169                                    ----
1170 execute_command.c
1171         - execute_intern_function: implement Posix interpretation 383 by making
1172           it an error to define a function with the same name as a special
1173           builtin when in Posix mode.
1174           http://austingroupbugs.net/view.php?id=383#c692
1175
1176                                    9/25
1177                                    ----
1178 doc/{bash.1,bashref.texi}
1179         - formatting and some content changes from Benno Schulenberg
1180           <bensberg@justemail.net>
1181         - document new posix-mode behavior from interp 383 change of 9/22
1182
1183                                    9/30
1184                                    ----
1185 execute_cmd.c
1186         - shell_execve: add strerror to error message about executable file
1187           that shell can't execute as a shell script.  From suggestion by
1188           daysleeper <daysleeper@centrum.cz>
1189
1190                                    10/1
1191                                    ----
1192 bashhist.c
1193         - maybe_add_history: act as if literal_history is set when parser_state
1194           includes PST_HEREDOC, so we save the bodies of here-documents just
1195           as they were entered.  Fixes bug reported by Jonathan Wakely
1196           <bugs@kayari.org>
1197         - bash_add_history: make sure that the second and subsequent lines of
1198           a here document don't have extra newlines or other delimiting
1199           chars added, since they have the trailing newline preserved, when
1200           `lithist' is set and history_delimiting_chars isn't called
1201
1202 execute_cmd.c
1203         - execute_command_internal: avoid fd exhaustion caused by using
1204           process substitution in loops inside shell functions by using
1205           copy_fifo_list and close_new_fifos ().  Fixes debian bash bug
1206           642504
1207
1208 lib/readline/complete.c
1209         - new variable, rl_filename_stat_hook, used by append_to_match.  If
1210           filename completion is desired, and rl_filename_stat_hook points
1211           to a function, call that function to expand the filename in an
1212           application-specific way before calling stat.
1213
1214 bashline.c
1215         - bash_default_completion: if variable completion returns a single
1216           match, use bash_filename_stat_hook and file_isdir to determine
1217           whether or not the variable name expands to a directory.  If it
1218           does, set the filename_append_character to `/'.  This is not
1219           perfect, so we will see how it works out.  Adds functionality
1220           requested by Peter Toft <pto@linuxbog.dk> and Patrick Pfeifer
1221           <patrick@pfeifer.de>
1222         - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things
1223           like $HOME/Downloads (after completion) have a slash appended.
1224           In general, this causes the stat hook to be called whenever
1225           filename completion is appended.  Adds functionality requested by
1226           Patrick Pfeifer <patrick@pfeifer.de>
1227
1228 lib/readline/readline.h
1229         - new extern declaration for rl_filename_stat_hook
1230
1231 lib/readline/doc/rltech.texi
1232         - rl_directory_rewrite_hook: now documented
1233         - rl_filename_stat_hook: document
1234
1235 pcomplete.c
1236         - gen_action_completions: in the CA_DIRECTORY case, turn off
1237           rl_filename_completion_desired if it was off before we called
1238           rl_filename_completion_function and we didn't get any matches.
1239           Having it on causes readline to quote the matches as if they
1240           were filenames.  Adds functionality requested by many,
1241           including Clark Wang <dearvoid@gmail.com>
1242
1243 assoc.[ch]
1244         - assoc_replace: new function, takes the same arguments as
1245           assoc_insert, but returns the old data instead of freeing it
1246         - assoc_insert: if the object returned by hash_insert doesn't have
1247           the same value for its key as the key passed as an argument, we
1248           are overwriting an existing value.  In this case, we can free the
1249           key.  Fixes bug reported by David Parks <davidparks21@yahoo.com>
1250
1251                                    10/5
1252                                    ----
1253 print_cmd.c
1254         - indirection_level_string: small change to only re-enable `x'
1255           option after calling decode_prompt_string if it was on before.  In
1256           normal mode, it will be, but John Reiser <jreiser@bitwagon.com>
1257           has a novel use for that code in conjunction with a pre-loaded
1258           shared library that traces system call usage in shell scripts
1259
1260                                    10/10
1261                                    -----
1262 Makefile.in
1263         - Fix from Mike Frysinger <vapier@gentoo.org> to avoid trying to
1264           build y.tab.c and y.tab.h with two separate runs of yacc if
1265           parse.y changes.  Problem with parallel makes
1266         - Fix from Mike Frysinger <vapier@gentoo.org> to avoid subdirectory
1267           builds each trying to make version.h (and all its dependencies)
1268
1269 lib/sh/Makefile.in
1270         - remove some dependencies on version.h where it doesn't make sense
1271
1272 variables.c
1273         - initialize_shell_variables: while reading the environment, a shell
1274           running in posix mode now checks for SHELLOPTS being readonly (it
1275           gets set early on in main()) before trying to assign to it.  It
1276           saves an error message and the variable gets parsed as it should.
1277           Fixes bug reported by Len Giambrone <Len.Giambrone@intersystems.com>
1278
1279                                    10/14
1280                                    -----
1281 doc/{bash.1,bashref.texi}
1282         - add to the "duplicating file descriptors" description that >&word
1283           doesn't redirect stdout and stderr if word expands to `-'
1284         - add to the "appending standard output and standard error"
1285           description a note that >&word, where word is a number or `-',
1286           causes other redirection operators to apply for sh and Posix
1287           compatibility reasons.  Suggested by Greg Wooledge
1288           <wooledg@eeg.ccf.org>
1289
1290                                    10/15
1291                                    -----
1292 pcomplete.c
1293         - change pcomp_filename_completion_function to only run the filename
1294           dequoting function in the cases (as best as it can figure) where
1295           readline won't do it via rl_filename_completion_function.  Based
1296           on reports from <lolilolicon@gmail.com>
1297
1298                                    10/19
1299                                    -----
1300 bashline.c
1301         - attempt_shell_completion: add call to set_directory_hook() to make
1302           sure the rewrite functions are correct.  It's cheap and doesn't
1303           hurt
1304         - command_word_completion_function: if completing a command name that
1305           starts with `.' or `..', temporarily suppress the effects of the
1306           `direxpand' option and restore the correct value after calling
1307           rl_filename_completion_function.  If it's enabled, the directory
1308           name will be rewritten and no longer match `./' or `../'.  Fixes
1309           problem reported by Michael Kalisz <michael@kalisz.homelinux.net>
1310
1311                                    10/22
1312                                    -----
1313 builtins/history.def
1314         - push_history: make sure remember_on_history is enabled before we
1315           try to delete the last history entry -- the `history -s' command
1316           might not have been saved.  Fixes bug reported by
1317           lester@vmw-les.eng.vmware.com
1318
1319 lib/readline/complete.c
1320         - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN
1321           instead of straight return; add same call at end of function.
1322           Placeholder for future work in deinstalling signal handlers when
1323           readline is not active
1324
1325                                    10/25
1326                                    -----
1327 expr.c
1328         - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1
1329           for DIV and MOD and avoid SIGFPE.  Bug report and pointer to fix
1330           from Jaak Ristioja <jaak.ristioja@cyber.ee>
1331         - expassign: same changes for arithmetic overflow for DIV and MOD
1332
1333                                    10/28
1334                                    -----
1335 subst.c
1336         - parameter_brace_expand: allow pattern substitution when there is an
1337           expansion of the form ${var/} as a no-op: replacing nothing with
1338           nothing
1339         - parameter_brace_patsub: don't need to check for PATSUB being NULL;
1340           it never is
1341
1342 flags.c
1343         - if STRICT_POSIX is defined, initialize history_expansion to 0, since
1344           history expansion (and its treatment of ! within double quotes) is
1345           not a conforming posix environment.  From austin-group issue 500
1346
1347 lib/readline/histexpand.c
1348         - history_expand: when processing a string within double quotes
1349           (DQUOTE == 1), make the closing double quote inhibit history
1350           expansion, as if the word were outside double quotes.  In effect,
1351           we assume that the double quote is followed by a character in
1352           history_no_expand_chars.  tcsh and csh seem to do this.  This
1353           answers a persistent complaint about history expansion
1354
1355                                    10/29
1356                                    -----
1357 make_cmd.c
1358         - make_arith_for_command: use skip_to_delim to find the next `;'
1359           when breaking the string between the double parens into three
1360           separate components instead of a simple character loop.  Fixes
1361           bug reported by Dan Douglas <ormaaj@gmail.com>
1362
1363                                    11/2
1364                                    ----
1365 Makefile.in
1366         - make libbuiltins.a depend on builtext.h to serialize its creation
1367           and avoid conflict between multiple invocations of mkbuiltins.
1368           Fix from Mike Frysinger <vapier@gentoo.org>
1369
1370                                    11/5
1371                                    ----
1372 findcmd.c
1373         - user_command_matches: if stat(".", ...) returns -1, set st_dev
1374           and st_ino fields in dotinfo to 0 to avoid same_file matches
1375         - find_user_command_in_path: check stat(2) return the same way
1376
1377 lib/glob/glob.c
1378         - glob_vector: don't call strlen(pat) without checking pat == 0
1379         - glob_dir_to_array: make sure to free `result' and all allocated
1380           members before returning error due to malloc failure
1381         - glob_vector: make sure to free `nextname' and `npat' on errors
1382           (mostly when setting lose = 1)
1383         - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make
1384           sure we free `subdir'
1385         - glob_filename: when expanding ** (GX_ALLDIRS), make sure we
1386           free temp_results (return value from glob_vector)
1387
1388 lib/glob/xmbsrtowcs.c
1389         - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead
1390           of sizeof (char **) when assigning idxtmp
1391
1392 execute_cmd.c
1393         - print_index_and_element: return 0 right away if L == 0
1394         - is_dirname: fix memory leak by freeing `temp'
1395         - time_command: don't try to deref NULL `command' when assigning
1396           to `posix_time'
1397         - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's
1398           terminated for functions that expect that
1399
1400 builtins/read.def
1401         - read_builtin: don't call bind_read_variable with a potentially-null
1402           string
1403
1404 pcomplete.c
1405         - gen_command_matches: don't call dispose_word_desc with a NULL arg
1406         - gen_compspec_completions: fix memory leak by freeing `ret' before
1407           calling gen_action_completions (tcs, ...).  happens when
1408           performing directory completion as default and no completions
1409           have been generated
1410         - gen_progcomp_completions: make sure to set foundp to 0 whenever
1411           returning NULL
1412         - it_init_aliases: fix memory leak by freeing alias_list before
1413           returning
1414
1415 bashline.c
1416         - command_word_completion_function: don't call restore_tilde with a
1417           NULL directory_part argument
1418         - bash_directory_expansion: bugfix: don't throw away results of
1419           rl_directory_rewrite_hook if it's set and returns non-zero
1420         - bind_keyseq_to_unix_command: free `kseq' before returning error
1421
1422 arrayfunc.c
1423         - assign_array_element_internal: make sure `akey' is freed if non-null
1424           before returning error
1425         - assign_compound_array_list: free `akey' before returning error
1426         - array_value_internal: free `akey' before returning error
1427         - unbind_array_element: free `akey' before returning error
1428
1429 subst.c
1430         - array_length_reference: free `akey' before returning error in case
1431           of expand_assignment_string_to_string error
1432         - array_length_reference: free `akey' after call to assoc_reference
1433         - skip_to_delim: if skipping process and command substitution, free
1434           return value from extract_process_subst
1435         - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before
1436           returning if verify_substring_values fails
1437         - parameter_brace_expand: remove two duplicate lines that allocate
1438           ret in parameter_brace_substring case
1439         - parameter_brace_expand: convert `free (name); name = xmalloc (...)'
1440           to use `xrealloc (name, ...)'
1441         - parameter_brace_expand: free `name' before returning when handling
1442           ${!PREFIX*} expansion
1443         - split_at_delims: fix memory leak by freeing `d2' before returning
1444
1445 redir.c
1446         - redirection_error: free `filename' if the redirection operator is
1447           REDIR_VARASSIGN by assigning allocname
1448
1449 eval.c
1450         - send_pwd_to_eterm: fix memory leak by freeing value returned by
1451           get_working_directory()
1452
1453 builtins/cd.def
1454         - change_to_directory: fix memory leak by freeing return value from
1455           resetpwd()
1456         - cd_builtin: fix memory leak by freeing value returned by dirspell()
1457         - cd_builtin: fix memory leak by freeing `directory' if appropriate
1458           before overwriting with return value from resetpwd()
1459
1460 builtins/type.def
1461         - describe_command: free `full_path' before overwriting it with return
1462           value from sh_makepath
1463
1464 builtins/complete.def
1465         - compgen_builtin: fix memory leak by calling strlist_dispose (sl)
1466           before overwriting sl with return value from completions_to_stringlist
1467
1468 builtins/hash.def
1469         - list_hashed_filename_targets: fix memory leak by freeing `target'
1470
1471 make_cmd.c
1472         - make_arith_for_command: free `init', `test', and `step' before
1473           returning error on parse error
1474
1475 jobs.c
1476         - initialize_job_control: don't call move_to_high_fd if shell_tty == -1
1477
1478 general.c
1479         - check_dev_tty: don't call close with an fd < 0
1480         - legal_number: deal with NULL `string' argument, return invalid
1481
1482 lib/sh/fmtulong.c
1483         - fmtulong: if the `base' argument is invalid, make sure we index
1484           buf by `len-1' at maximum
1485
1486 print_cmd.c
1487         - print_deferred_heredocs: don't try to dereference a NULL `cstring'
1488         - cprintf: make sure to call va_end (args)
1489
1490 variables.c
1491         - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *)
1492           instead of sizeof (WORD_LIST **)
1493
1494 lib/sh/zmapfd.c
1495         - zmapfd: if read returns error, free result and return -1 immediately
1496           instead of trying to reallocate it
1497
1498                                    11/6
1499                                    ----
1500 execute_cmd.c
1501         - cpl_reap: rewrote to avoid using pointer after freeing it; now builds
1502           new coproc list on the fly while traversing the old one and sets the
1503           right values for coproc_list when done
1504
1505                                    11/12
1506                                    -----
1507 builtins/set.def
1508         - if neither -f nor -v supplied, don't allow a readonly function to
1509           be implicitly unset.  Fixes bug reported by Jens Schmidt
1510           <jens.schmidt35@arcor.de>
1511
1512 lib/readline/callback.c
1513         - change CALLBACK_READ_RETURN to clear signal handlers before returning
1514           from rl_callback_read_char so readline's signal handlers aren't
1515           installed when readline doesn't have control.  Idea from Jan
1516           Kratochvil <jan.ktratochvil@redhat.com> and the GDB development
1517           team
1518
1519 pcomplete.h
1520         - COPT_NOQUOTE: new complete/compgen option value
1521
1522 builtins/complete.def
1523         - noquote: new complete/compgen option; will be used to disable
1524           filename completion quoting
1525
1526 pcomplete.c
1527         - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns
1528           of rl_filename_quoting_desired if set; turns it on if unset (value
1529           is inverted, since default is on)
1530
1531 doc/bash.1,lib/readline/doc/rluser.texi
1532         - document new -o noquote option to complete/compgen/compopt
1533
1534 pathexp.c
1535         - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters
1536           between brackets in an ERE bracket expression are not inappropriately
1537           quoted with backslashes.  This is a pretty substantial change,
1538           should be stressed when opening bash up for alpha and beta tests.
1539           Fixes bug pointed out by Stephane Chazleas
1540           <stephane_chazelas@yahoo.fr>
1541
1542 doc/{bash.1,bashref.texi}
1543         - document that regexp matches can be inconsistent when quoting
1544           characters in bracket expressions, since usual quoting characters
1545           lose their meaning within brackets
1546         - note that regular expression matching when the pattern is stored
1547           in a shell variable which is quoted for expansion causes string
1548           matching
1549
1550 redir.h
1551         - RX_SAVEFD: new flag value; notes that a redirection denotes an
1552           fd used to save another even if it's not >= SHELL_FD_BASE
1553
1554 redir.c
1555         - do_redirection_internal: when deciding whether or not to reset the
1556           close-on-exec flag on a restored file descriptor, trust the value
1557           of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE
1558           if the RX_SAVEFD flag is set
1559         - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor
1560           limit is such that the shell can't duplicate to a file descriptor
1561           >= 10.  Fixes a limitation that tripped a coreutils test reported
1562           by Paul Eggert <eggert@cs.ucla.edu>
1563
1564                                    11/19
1565                                    -----
1566 doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi
1567         - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading
1568           the startup files
1569         - make it clear that bash runs HISTSIZE=500 after reading the
1570           startup files
1571         - make it clear that setting HISTSIZE=0 causes commands to not be
1572           saved in the history list
1573         - make it clear that setting HISTFILESIZE=0 causes the history file
1574           to be truncated to zero size
1575
1576 variables.c
1577         - sv_histsize: change so setting HISTSIZE to a value less than 0
1578           causes the history to be `unstifled'
1579         - sv_histsize: change so setting HISTFILESIZE to a value less than 0
1580           results in no file truncation
1581         - make it clear that numeric values less than 0 for HISTFILESIZE or
1582           HISTSIZE inhibit the usual functions
1583
1584                                    11/23
1585                                    -----
1586 parse.y
1587         - save_input_line_state: add missing `return ls' at the end, since the
1588           function is supposed to return its argument.  Pointed out by
1589           Andreas Schwab <schwab@linux-m68k.org>
1590
1591 builtins/read.def
1592         - skip over NUL bytes in input, as most modern shells seem to.  Bug
1593           report by Matthew Story <matt@tablethotels.com>
1594
1595 lib/readline/vi_mode.c
1596         - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key
1597
1598                                    11/25
1599                                    -----
1600 builtins/read.def
1601         - read_builtin: if xrealloc returns same pointer as first argument,
1602           don't bother with the remove_unwind_protect/add_unwind_protect pair
1603         - read_builtin: set a flag (`reading') around calls to zread/zreadc
1604           and readline()
1605         - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if
1606           currently in read(2) (reading != 0)
1607         - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero,
1608           behavior of old SIGALRM catching function
1609         - read_builtin: call CHECK_ALRM in appropriate places while reading
1610           line of input.  Fixes bug reported by Pierre Gaston
1611           <pierre.gaston@gmail.com>
1612
1613 lib/readline/vi_mode.c
1614         - rl_vi_replace: initialize characters before printing characters in
1615           vi_replace_keymap to their default values in vi_insertion_keymap,
1616           since we're supposed to be in insert mode replacing characters
1617         - rl_vi_replace: call rl_vi_start_inserting to set last command to
1618           `R' for undo
1619         - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future
1620           use by _rl_vi_done_inserting
1621         - vi_save_insert_buffer: new function, broke out code that copies text
1622           into vi_insert_buffer from _rl_vi_save_insert
1623         - _rl_vi_save_replace: new function, saves text modified by
1624           rl_vi_replace (using current point and vi_replace_count to figure
1625           it out) to vi_replace_buffer
1626         - _rl_vi_save_insert: call vi_save_insert_buffer
1627         - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call
1628           _rl_vi_save_replace to save text modified in replace mode (uses
1629           vi_save_insert_buffer)
1630         - _rl_vi_replace_insert: new function, replaces the number of chars
1631           in vi_insert_buffer after rl_point with contents ov vi_insert_buffer
1632         - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and
1633           there's something in vi_insert_buffer.  Fixes bug with `.' not
1634           redoing the most recent `R' command, reported by Geoff Clare
1635           <g.clare@opengroup.org> in readline area on savannah
1636
1637                                    11/26
1638                                    -----
1639 lib/readline/rlprivate.h
1640         - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal
1641           to be handled
1642         - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending
1643           SIGINT to be handled
1644
1645 lib/readline/complete.c
1646         - remove all mention of _rl_interrupt_immediately
1647         - rl_completion_matches: check RL_SIG_RECEIVED after each call to
1648           the entry function, call RL_CHECK_SIGNALS if true to handle the
1649           signal
1650         - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free
1651           and zero out the match_list this function allocated
1652         - rl_completion_matches: if the completion entry function is
1653           rl_filename_completion_function, free the contents of match_list,
1654           because that function does not keep state and will not free the
1655           entries; avoids possible memory leak pointed out by
1656           Garrett Cooper <yanegomi@gmail.com>
1657         - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after
1658           calling rl_attempted_completion_function, free the returned match
1659           list and handle the signal with RL_CHECK_SIGNALS; avoids
1660           possible memory leak pointed out by Garrett Cooper
1661           <yanegomi@gmail.com>
1662         - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after
1663           calling rl_completion_matches, free the returned match list and
1664           handle the signal with RL_CHECK_SIGNALS
1665
1666 lib/readline/util.c
1667         - rl_settracefp: new utility function to set the tracing FILE *
1668
1669 lib/readline/signals.c
1670         - _rl_sigcleanup: pointer to a function that will be called with the
1671           signal and a void * argument from _rl_handle_signal
1672         - _rl_sigcleanarg: void * that the rest of the code can set to have
1673           passed to the signal cleanup function
1674         - _rl_handle_signal: if _rl_sigcleanup set, call as
1675                 (*_rl_sigcleanup) (sig, _rl_sigcleanarg)
1676
1677 lib/readline/rlprivate.h
1678         - extern declarations for _rl_sigcleanup and _rl_sigcleanarg
1679
1680 lib/readline/complete.c
1681         - _rl_complete_sigcleanup: signal cleanup function for completion code;
1682           calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT
1683         - rl_complete_internal: before calling display_matches if what_to_do
1684           == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match
1685           list gets freed on SIGINT; avoids possible memory leak pointed out
1686           by Garrett Cooper <yanegomi@gmail.com>
1687         - rl_complete_internal: in default switch case, call _rl_free_match_list
1688           before returning to avoid memory leak
1689
1690 doc/bashref.texi
1691         - start at a set of examples for the =~ regular expression matching
1692           operator, touching on keeping the pattern in a shell variable and
1693           quoting portions of the pattern to remove their special meaning
1694
1695                                    12/1
1696                                    ----
1697 lib/glob/gmisc.c
1698         - extglob_pattern: new function, returns 1 if pattern passed as an
1699           argument looks like an extended globbing pattern
1700
1701 lib/glob/glob.c
1702         - skipname: return 0 immediately if extglob_pattern returns non-zero,
1703           let the extended globbing code do the right thing with skipping
1704           names beginning with a `.'
1705         - mbskipname: return 0 immediately if extglob_pattern returns non-zero,
1706           let the extended globbing code do the right thing with skipping
1707           names beginning with a `.'.  Fixes bug reported by Yongzhi Pan
1708           <panyongzhi@gmail.com>
1709
1710                                    12/2
1711                                    ----
1712 lib/glob/smatch.c
1713         - patscan, patscan_wc: no longer static so other parts of the glob
1714           library can use them, renamed to glob_patscan, glob_patscan_wc
1715
1716 lib/glob/glob.c
1717         - extern declarations for glob_patscan, glob_patscan_wc
1718         - wchkname: new function, does skipname on wchar_t pattern and dname,
1719           old body of mbskipname after converting to wide chars
1720         - extglob_skipname: new function, checks all subpatterns in an extglob
1721           pattern to determine whether or not a filename should be skipped.
1722           Calls skipname for each subpattern.  Dname is only skipped if all
1723           subpatterns indicate it should be.  Better fix for bug reported by
1724           Yongzhi Pan <panyongzhi@gmail.com>
1725         - wextglob_skipname: wide-char version of extglob_skipname, calls
1726           wchkname instead of calling back into mbskipname for each
1727           subpattern to avoid problems with char/wchar_t mismatch
1728         - skipname: call extglob_skipname if extglob_pattern returns non-zero
1729         - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero
1730         - mbskipname: short-circuit immediately if no multibyte chars in
1731           pattern or filename
1732
1733 execute_cmd.c
1734         - execute_cond_node: added parens to patmatch assignment statement to
1735           make intent clearer
1736
1737                                    12/3
1738                                    ----
1739 configure.in,config.h.in
1740         - check for imaxdiv, define HAVE_IMAXDIV if present
1741
1742 expr.c
1743         - expassign, exp2: use imaxdiv if available.  Doesn't help with checks
1744           for overflow from 10/25
1745
1746                                    12/6
1747                                    ----
1748 lib/readline/complete.c
1749         - compute_lcd_of_matches: if we're ignoring case in the matches, only
1750           use what the user typed as the lcd if it matches the first match
1751           (after sorting) up to the length of what was typed (if what the
1752           user typed is longer than the shortest of the possible matches, use
1753           the shortest common length of the matches instead).  If it doesn't
1754           match, use the first of the list of matches, as if case were not
1755           being ignored.  Fixes bug reported by Clark Wang
1756           <dearvoid@gmail.com>
1757
1758                                    12/7
1759                                    ----
1760 builtins/cd.def
1761         - cd_builtin: add code to return error in case cd has more than one
1762           non-option argument, conditional on CD_COMPLAINS define (which is
1763           not defined anywhere)
1764
1765 doc/{bash.1,bashref.texi}
1766         - note that additional arguments to cd following the directory name
1767           are ignored.  Suggested by Vaclav Hanzl <hanzl@noel.feld.cvut.cz>
1768
1769                                    12/10
1770                                    -----
1771 lib/readline/input.c
1772         - rl_read_key: don't need to increment key sequence length here; doing
1773           it leads to an off-by-one error
1774
1775 lib/readline/macro.c
1776         - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length
1777           fixed, can decrement current_macro_index by rl_key_sequence_length
1778           (length of key sequence that closes keyboard macro)
1779
1780 lib/readline/readline.c
1781         - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length
1782           when ESC maps to a new keymap and we're converting meta characters
1783           to ESC+key
1784         - _rl_dispatch_subseq: better increment of rl_key_sequence_length
1785           before we dispatch to a function in the ISFUNC case (where the
1786           second increment above should have happened)
1787         - rl_executing_keyseq: the full key sequence that ended up executing
1788           a readline command.  Available to the calling application, maintained
1789           by _rl_dispatch_subseq, indexed by rl_key_sequence_length
1790         - rl_executing_key: the key that was bound to the currently-executing
1791           readline command.  Same as the `key' argument to the function
1792
1793 lib/readline/readline.h
1794         - rl_executing_keyseq: extern declaration
1795         - rl_executing_key: extern declaration
1796         - rl_key_sequence_length: declaration moved here from rlprivate.h,
1797           now part of public interface
1798
1799 lib/readline/rlprivate.h
1800         - new extern declaration for _rl_executing_keyseq_size, buffer size
1801           for rl_executing_keyseq
1802
1803 lib/readline/doc/rltech.texi
1804         - documented new variables: rl_executing_key, rl_executing_keyseq,
1805           rl_key_sequence_length
1806
1807                                    12/13
1808                                    -----
1809 bashline.c
1810         - bash_execute_unix_command: replace ad-hoc code that searches
1811           cmd_xmap for correct command with call to rl_function_of_keyseq
1812           using rl_executing_keyseq; now supports key sequences longer
1813           than two characters.  Fixes bug reported by Michael Kazior
1814           <kazikcz@gmail.com>
1815
1816                                    12/15
1817                                    -----
1818 make_cmd.c
1819         - make_function_def: don't null out source_file before calling
1820           make_command so it can be used later on when the function definition
1821           is executed
1822
1823 execute_cmd.c
1824         - execute_intern_function: second argument is now FUNCTION_DEF *
1825           instead of COMMAND *
1826         - execute_command_internal: call execute_intern_function with the
1827           new second argument (the entire FUNCTION_DEF instead of just the
1828           command member)
1829         - execute_intern_function: if DEBUGGER is defined, call
1830           bind_function_def before calling bind_function, just like
1831           make_function_def does (might be able to take out the call in
1832           make_function_def depending on what the debugger does with it).
1833           Fixes bug reported by <dethrophes@motd005>
1834
1835 expr.c
1836         - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1;
1837           fix typos and logic errors
1838
1839                                    12/16
1840                                    -----
1841 bashline.c
1842         - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over
1843           command substitutions and doesn't treat them as command separators
1844         - attempt_shell_completion: instead of taking first return from
1845           find_cmd_name as command name to use for programmable completion,
1846           use loop to skip over assignment statements.  Fixes problem reported
1847           by Raphael Droz <raphael.droz+floss@gmail.com>
1848         - attempt_shell_completion: if we don't find a command name but the
1849           command line is non-empty, assume the other words are all assignment
1850           statements and flag that point is in a command position so we can
1851           do command name completion
1852         - attempt_shell_completion: if the word being completed is the first
1853           word following a series of assignment statements, and the
1854           command line is non-empty, flag that point is in a command position
1855           so we can do command name completion
1856
1857 lib/readline/history.c
1858         - history_get_time: atol -> strtol
1859
1860                                    12/18
1861                                    -----
1862 parse.y
1863         - parser_in_command_position: external interface to the
1864           command_token_position macro for use by other parts of the shell,
1865           like the completion mechanism
1866
1867 externs.h
1868         - extern declaration for parser_in_command_position
1869
1870                                    12/19
1871                                    -----
1872
1873 builtins/read.def
1874         - read_builtin: make sure all calls to bind_read_variable are passed
1875           a non-null string.  Fixes bug reported by Dan Douglas
1876           <ormaaj@gmail.com>
1877
1878 bashline.c
1879         - attempt_shell_completion: mark that we're in a command position if
1880           we're at the start of the line and the parser is ready to accept
1881           a reserved word or command name.  Feature most recently suggested
1882           by Peng Yu <pengyu.ut@gmail.com>
1883
1884                                    12/21
1885                                    -----
1886 lib/readline/bind.c
1887         - _rl_escchar: return the character that would be backslash-escaped
1888           to denote the control character passed as an argument ('\n' -> 'n')
1889         - _rl_isescape: return 1 if character passed is one that has a
1890           backslash escape
1891         - _rl_untranslate_macro_value: new second argument: use_escapes, if
1892           non-zero translate to backslash escapes where possible instead of
1893           using straight \C-x for control character `x'.  Change callers
1894         - _rl_untranslate_macro_value: now global
1895
1896 lib/readline/rlprivate.h
1897         - _rl_untranslate_macro_value: extern declaration
1898
1899 lib/readline/{macro.c,readline.h}
1900         - rl_print_last_kbd_macro: new bindable function, inspired by patch
1901           from Mitchel Humpherys
1902
1903 lib/readline/funmap.c
1904         - print-last-kbd-macro: new bindable command, bound to
1905           rl_print_last_kbd_macro
1906
1907 lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
1908         - print-last-kbd-macro: document.
1909
1910 lib/readline/text.c
1911         - _rl_insert_next: if we're defining a macro, make sure the key gets
1912           added to the macro text (should really audit calls to rl_read_key()
1913           and make sure the right thing is happening for all of them)
1914
1915 bashline.[ch]
1916         - print_unix_command_map: new function, prints all bound commands in
1917           cmd_xmap using rl_macro_dumper in a reusable format
1918
1919 builtins/bind.def
1920         - new -X option: print all keysequences bound to Unix commands using
1921           print_unix_command_map.  Feature suggested by Dennis Williamson
1922           (2/2011)
1923
1924 doc/{bash.1,bashref.texi}
1925         - document new `bind -X' option
1926
1927                                    12/24
1928                                    -----
1929
1930 doc/{bash.1,bashref.texi}
1931         - add a couple of sentences to the description of the case modification
1932           operators making it clearer that each character of parameter is
1933           tested against the pattern, and that the pattern should only attempt
1934           to match a single character.  Suggested by Bill Gradwohl
1935           <bill@ycc.com>
1936
1937                                    12/28
1938                                    -----
1939 shell.c
1940         - init_noninteractive: instead of calling set_job_control(0) to
1941           unconditionally turn off job control, turn on job control if
1942           forced_interactive or jobs_m_flag is set
1943         - shell_initialize: call initialize_job_control with jobs_m_flag as
1944           argument so `bash -m script' enables job control while running the
1945           script
1946
1947 jobs.c
1948         - initialize_job_control: if the `force' argument is non-zero, turn on
1949           job control even if the shell is not currently interactive
1950           (interactive == 0)
1951
1952                                    12/29
1953                                    -----
1954
1955 flags.h
1956         - new extern declaration for jobs_m_flag
1957
1958 builtins/{cd,set}.def,doc/{bash.1,bashref.texi}
1959         - added text clarifying the descriptions of cd -L and -P, suggested by
1960           Padraig Brady <p@draigbrady.com>
1961         - slight change to the description of `set -P' about resolving symbolic
1962           links
1963
1964 lib/readline/doc/rluser.texi
1965         - Added an example to the programmable completion section: _comp_cd,
1966           a completion function for cd, with additional verbiage.  Text
1967           includes a reference to the bash_completion project
1968
1969                                  1/1/2012
1970                                  --------
1971 jobs.c
1972         - set_job_status_and_cleanup: note that a job is stopped due to
1973           SIGTSTP (any_tstped) if job_control is set; there's no need to
1974           test interactive
1975
1976                                     1/5
1977                                     ---
1978 quit.h
1979         - LASTSIG(): new macro, expands to signal number of last terminating
1980           signal received (terminating_signal or SIGINT)
1981
1982 trap.c
1983         - first_pending_trap: returns lowest signal number with a trap pending
1984         - trapped_signal_received: set to the last trapped signal the shell
1985           received in trap_handler(); reset to 0 in run_pending_traps
1986
1987 builtins/read.def
1988         - read_builtin: changes to posix-mode (posixly_correct != 0) to make
1989           `read' interruptible by a trapped signal.  After the trap runs,
1990           read returns 128+sig and does not assign the partially-read line
1991           to the named variable(s).  From an austin-group discussion started
1992           by David Korn
1993
1994                                    1/11
1995                                    ----
1996 doc/{bash.1,bashref.texi}
1997         - slight changes to the descriptions of the compat32 and compat40 shell
1998           options to clarify their meaning
1999
2000                                    1/12
2001                                    ----
2002 lib/readline/{colors.[ch],parse-colors.[ch]}
2003         - new files, part of color infrastructure support
2004
2005 Makefile.in,lib/readline/Makefile.in
2006         - arrange to have colors.o and parse-colors.o added to readline
2007           library
2008
2009 {configure,config.h}.in
2010         - check for stdbool.h, define HAVE_STDBOOL_H if found
2011
2012                                    1/14
2013                                    ----
2014 lib/readline/bind.c
2015         - colored_stats: new bindable variable, enables using colors to
2016           indicate file type when listing completions
2017
2018 lib/readline/complete.c
2019         - _rl_colored_stats: new variable, controlled by colored-stats bindable
2020           variable
2021         - colored_stat_start, colored_stat_end: new functions to set and reset
2022           the terminal color appropriately depending on the type of the
2023           filename to be printed
2024         - print_filename: changes to print colors if `colored-stats' variable
2025           set.  Changes contributed by Raphael Droz
2026           <raphael.droz+floss@gmail.com>
2027
2028 lib/readline/readline.c
2029         - rl_initialize_everything: add call to _rl_parse_colors to parse
2030           color values out of $LS_COLORS.  May have to add to rl_initialize
2031           to make more dynamic if LS_COLORS changes (which doesn't happen
2032           very often, if at all)
2033
2034 lib/readline/rlprivate.h
2035         - _rl_colored_stats: new extern declaration
2036
2037 lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
2038         - colored-stats: document new bindable readline variable
2039
2040 lib/readline/colors.c
2041         - _rl_print_color_indicator: call rl_filename_stat_hook before calling
2042           lstat/stat so we can get color indicators for stuff like
2043           $HOME/Applications
2044
2045 lib/readline/complete.c
2046         - stat_char: call rl_filename_stat_hook before calling lstat/stat
2047
2048 findcmd.[ch],execute_cmd.c
2049         - search_for_command: now takes a second `flags' argument; changed
2050           header function prototype and callers
2051         - search_for_command: if (flags & 1), put the command found in $PATH
2052           into the command hash table (previous default behavior)
2053
2054 execute_cmd.c
2055         - is_dirname: call search_for_command with flags argument of 0 so it
2056           doesn't try to put something in the command hash table
2057
2058 bashline.c
2059         - bash_command_name_stat_hook: a hook function for readline's
2060           filename_stat_hook that does $PATH searching the same way that
2061           execute_cmd.c:execute_disk_command() does it, and rewrites the
2062           passed filename if found.  Does not put names into command hash
2063           table.  This allows command name completion to take advantage
2064           of `visible-stats' and `colored-stats' settings.
2065         - executable_completion: new function, calls the directory completion
2066           hook to expand the filename before calling executable_file or
2067           executable_or_directory; change command_word_completion_function to
2068           call executable_completion.  This allows $HOME/bin/[TAB] to do
2069           command completion and display alternatives
2070
2071                                    1/17
2072                                    ----
2073 pcomplete.c
2074         - gen_command_matches: now takes a new second argument: the command
2075           name as deciphered by the programmable completion code and used
2076           to look up the compspec; changed callers (gen_compspec_completions)
2077         - gen_shell_function_matches: now takes a new second argument: the
2078           command that originally caused the completion function to be
2079           invoked; changed callers (gen_compspec_completions))
2080         - build_arg_list: now takes a new second argument: the command name
2081           corresponding to the current compspec; changed callers
2082           (gen_command_matches, gen_shell_function_matches)
2083         - build_arg_list: now uses `cmd' argument to create $1 passed to
2084           invoked command or shell function
2085         - gen_compspec_completions: if we skipped a null command at the
2086           beginning of the line (e.g., for completing `>'), add a new word for
2087           it at the beginning of the word list and increment nw and cw
2088           appropriately.  This is all a partial fix for the shortcoming
2089           pointed out by Sung Pae <sungpae@gmail.com>
2090
2091                                    1/18
2092                                    ----
2093
2094 {configure,config.h}.in
2095         - new check: check for AUDIT_USER_TTY defined in <linux/audit.h>,
2096           define HAVE_DECL_AUDIT_USER_TTY if both are found
2097
2098 lib/readline/rlconf.h
2099         - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel
2100           tty auditing system if it's available and enabled
2101
2102 lib/readline/util.c
2103         - _rl_audit_tty: new function, send a string to the kernel tty audit
2104           system
2105
2106 lib/readline/rlprivate.h
2107         - _rl_audit_tty: new extern declaration
2108
2109 lib/readline/readline.c
2110         - readline: call _rl_audit_tty with line to be returned before returning
2111           it if the Linux tty audit system is available and it's been enabled
2112           in rlconf.h  Original patch from Miroslav Trmac; recent request
2113           from Miroslav Lichvar <mlichvar@redhat.com>
2114
2115                                    1/21
2116                                    ----
2117
2118 lib/readline/readline.c:
2119         - _rl_dispatch_subseq: add an inter-character timeout for multi-char
2120           key sequences.  Suggested by <rogerx.oss@gmail.com>.  Still needs
2121           work to make a user-settable variable
2122
2123 parse.y
2124         - shell_getc: make code that uses the pop_alias dependent on ALIAS
2125           define
2126
2127 variables.h
2128         - sv_tz: extern define should only depend on HAVE_TZSET
2129
2130 expr.c
2131         - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1;
2132           move assignment to `ind' inside define
2133         - expr_bind_array_element: declaration and uses need to be #ifdef
2134           ARRAY_VARS
2135
2136 arrayfunc.h
2137         - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not
2138           defined; used in subst.c unconditionally
2139
2140 sig.h
2141         - make the signal blocking functions not dependent on JOB_CONTROL
2142
2143 sig.c
2144         - sigprocmask: make the replacement definition not dependent on
2145           JOB_CONTROL
2146
2147 trap.c
2148         - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on
2149           HAVE_POSIX_SIGNALS and BSD signals
2150
2151                                    1/24
2152                                    ----
2153
2154 print_cmd.c
2155         - print_redirection_list: change the conditions under which
2156           r_duplicating_output_word is mapped to r_err_and_out to more or
2157           less match those used in redir.c.  Fixes bug pointed out by
2158           Dan Douglas <ormaaj@gmail.com>
2159
2160
2161                                    1/29
2162                                    ----
2163 lib/readline/signals.c
2164         - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies
2165           unless SIGWINCH is defined.  Fixes bug reported by Pierre Muller
2166           <pierre.muller@ics-cnrs.unistra.fr>
2167
2168 doc/{bash.1,bashref.texi}
2169         - small modifications to the introduction to the REDIRECTION section
2170           to describe how redirections can modify file handles
2171         - small modification to the section describing base#n to make it
2172           clearer that n can be denoted using non-numerics.  From a posting
2173           by Linda Walsh <bash@tlinx.org>
2174
2175                                     2/2
2176                                     ---
2177 builtins/printf.def
2178         - printf_builtin: make sure vbuf is intialized and non-null when -v
2179           is supplied, since other parts of the code assume that it's not
2180           null (e.g., bind_printf_variable()).  Fixes bug reported by Jim
2181           Avera <james_avera@yahoo.com>
2182
2183                                     2/4
2184                                     ---
2185 lib/readline/undo.c
2186         - _rl_free_undo_list: new function, old body of rl_free_undo_list,
2187           frees undo entries in UNDO_LIST * passed as argument
2188         - rl_free_undo_list: call _rl_free_undo_list
2189
2190 lib/readline/rlprivate.h
2191         - _rl_free_undo_list: new extern declaration
2192         - _rl_keyseq_timeout: new extern declaration (see below)
2193
2194 lib/readline/misc.c
2195         - rl_clear_history: new function.  Clears the history list and frees
2196           all associated data similar to history.c:clear_history(), but
2197           takes rl_undo_list into account and frees and UNDO_LISTs saved as
2198           `data' members of a history list entry
2199
2200 lib/readline/doc/rltech.texi
2201         - rl_clear_history: documented
2202
2203 lib/readline/readline.c
2204         - _rl_keyseq_timeout: new variable to hold intra-key timeout value
2205           from 1/21 fix; specified in milliseconds.  Default value is 500
2206         - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key
2207           timeout if it's greater than 0; no timeout if <= 0
2208         - _rl_dispatch_subseq: don't check for queued keyboard input if we have
2209           pushed or pending input, or if we're reading input from a macro
2210
2211 lib/readline/bind.c
2212         - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout
2213         - string_varlist: add keyseq-timeout
2214         - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout;
2215           clamps negative values at 0 for now
2216         - _rl_get_string_variable_value: return value for keyseq-timeout
2217
2218 doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
2219         - keyseq-timeout: documented
2220
2221 lib/readline/isearch.c
2222         - _rl_isearch_dispatch: modification to fix from 7/18 to not use
2223           cxt->keymap and cxt->okeymap, since by the time this code is
2224           executed, they are equal.  Use `f' to check for rl_insert or
2225           unbound func
2226         - _rl_isearch_dispatch: if we're switching keymaps, not in
2227           callback mode, and don't have pending or pushed input, use
2228           _rl_input_queued to resolve a potentially ambiguous key sequence.
2229           Suggested by Roger Zauner <rogerx.oss@gmail.com>
2230         - _rl_isearch_dispatch: if we have changed keymaps and resolved to
2231           an editing function (not self-insert), make sure we stuff the
2232           right characters back onto the input after changing the keymap
2233           back so the right editing function is executed after the search
2234           is terminated.  Rest of fix for bug reported by Roger Zauner
2235           <rogerx.oss@gmail.com>
2236
2237                                     2/5
2238                                     ---
2239 builtins/gen-helpfiles.c
2240         - new file: reads struct builtin and writes the long docs to files
2241           in the `helpdirs' subdirectory.  The filename is given in the
2242           previously-unused `handle' member of the struct builtin.  Links
2243           with `tmpbuiltins.o', which is created by Makefile to have the
2244           right long documentation.  When not cross-compiling, gets the
2245           right #defines based on configuration options from config.h instead
2246           of trying to parse conditional parts of def files.  Fixes
2247           shortcoming pointed out by Andreas Schwab <schwab@linux-m68k.org>
2248
2249 builtins/Makefile.in
2250         - tmpbuiltins.c: new generated file, created to enable creation of
2251           separate helpfiles based on correct #defines instead of trying to
2252           parse conditional parts of def files
2253         - gen-helpfiles: new program to generate helpfiles, links with
2254           tmpbuiltins.o
2255         - HELPFILES_TARGET: new target, substituted by configure to `helpdoc'
2256           if separate helpfiles requested
2257         - targets: new target, libbuiltins.a and $(HELPFILES_TARGET)
2258         - CREATED_OBJECTS: new variable, holds created object files for
2259           make clean; changed make clean to remove created objects
2260         - helpdoc: changed to call gen-helpfiles instead of mkbuiltins
2261
2262 Makefile.in
2263         - when building libbuiltins.a, recursively call make with `targets'
2264           argument to make sure separate helpfiles get built
2265
2266 configure.in
2267         - substitute `helpdoc' as value of HELPFILES_TARGET if
2268           --enable-separate-helpfiles supplied as configure argument
2269
2270 builtins/mkbuiltins.c
2271         - `-nofunctions': new argument, causes mkbuiltins to not write value
2272           for function implementing a particular builtin to struct builtin
2273           and to write document file name to `handle' member of struct builtin
2274         - no longer writes separate helpfiles; that is left to gen-helpfiles
2275
2276                                     2/8
2277                                     ---
2278 subst.c
2279         - make sure last_command_exit_value is set to a non-zero value before
2280           any calls to report_error, since `-e' set will short-circuit
2281           report_error.  Fixes bug reported by Ewan Mellor
2282           <Ewan.Mellor@eu.citrix.com>
2283
2284 variables.c
2285         - make_local_array_variable: added second argument; if non-zero,
2286           function will return an existing local associative array variable
2287           instead of insisting on an indexed array
2288
2289 variable.h,subst.c
2290         - make_local_array_variable: changed prototype and caller
2291
2292 builtins/declare.def
2293         - declare_internal: add second arg to call to make_local_array_variable;
2294           making_array_special, which indicates we're processing an
2295           assignment like declare a[b]=c.  Fixes seg fault resulting from
2296           a being an already-declared local associative array variable in a
2297           function.  Ubuntu bash bug 928900.
2298
2299                                    2/14
2300                                    ----
2301
2302 execute_cmd.c
2303         - execute_command_internal: if redirections into or out of a loop fail,
2304           don't try to free ofifo_list unless saved_fifo is non-zero.  It's
2305           only valid if saved_fifo is set
2306
2307                                    2/15
2308                                    ----
2309 {arrayfunc,braces,variables}.c
2310         - last_command_exit_value: make sure it's set before any calls to
2311           report_error, since -e will cause that to exit the shell
2312
2313 builtins/common.c
2314         - get_job_by_name: call internal_error instead of report_error so this
2315           doesn't exit the shell
2316
2317                                    2/18
2318                                    ----
2319 builtins/evalstring.c
2320         - parse_and_execute: make sure the file descriptor to be redirected to
2321           is 1 before calling cat_file.  One fix for bug reported by Dan Douglas
2322           <ormaaj@gmail.com>
2323
2324 parse.y
2325         - read_token_word: don't return NUMBER if a string of all digits
2326           resolves to a number that overflows the bounds of an intmax_t.
2327           Other fix for bug reported by Dan Douglas <ormaaj@gmail.com>
2328
2329                                    2/19
2330                                    ----
2331 lib/sh/strtrans.c
2332         - ansicstr: use 0x7f as the boundary for characters that translate
2333           directly from ASCII to unicode (\u and \U escapes) instead of
2334           UCHAR_MAX, since everything >= 0x80 requires more than one byte.
2335           Bug and fix from John Kearney <dethrophes@web.de>
2336
2337 builtins/printf.def
2338         - tescape: ditto for printf \u and \U escape sequences
2339
2340                                    2/20
2341                                    ----
2342 lib/sh/unicode.c
2343         - u32toutf8: fix to handle encodings up to six bytes long correctly
2344           (though technically UTF-8 only has characters up to 4 bytes long).
2345           Report and fix from John Kearney <dethrophes@web.de>
2346         - u32toutf8: first argument is now an unsigned 32-bit quantity,
2347           changed callers (u32cconv) to pass c instead of wc
2348         - u32reset: new function, resets local static state to uninitialized
2349           (locale information, currently)
2350
2351 locale.c
2352         - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the
2353           cached locale information used by u32cconv.  From a report from
2354           John Kearney <dethrophes@web.de>
2355
2356                                    2/21
2357                                    ----
2358 doc/{bash,builtins}.1
2359         - minor changes from Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
2360
2361 lib/sh/unicode.c
2362         - u32cconv: only assume you can directly call wctomb on the passed
2363           value if __STDC_ISO_10646__ is defined and the value is <=
2364           0x7fffffff
2365         - stub_charset: return locale as default instead of "ASCII", let
2366           rest of code decide what to do with it
2367
2368 lib/readline/parens.c
2369         - _rl_enable_paren_matching: make paren matching work in vi insert
2370           mode.  Bug report from <derflob@derflob.de>
2371
2372                                    2/22
2373                                    ----
2374 lib/sh/shquote.c
2375         - sh_backslash_quote: quote tilde in places where it would be
2376           expanded.  From a report from John Kearney <dethrophes@web.de>
2377
2378                                    2/23
2379                                    ----
2380 execute_cmd.c
2381         - execute_pipeline: wrap the discard_unwind_frame call in #ifdef
2382           JOB_CONTROL, since the frame is only created if JOB_CONTROL is
2383           defined.  Bug and fix from Doug Kehn <rdkehn@yahoo.com>
2384
2385                                    2/25
2386                                    ----
2387 error.c
2388         - report_error: make sure last_command_exit_value is non-zero before
2389           we call exit_shell, since the exit trap may reference it.  Call
2390           exit_shell with last_command_exit_value to allow exit statuses
2391           other than 1
2392
2393 unicode.c
2394         - stub_charset: use local static buffer to hold charset, don't change
2395           value returned by get_locale_var.  Based on idea and code from
2396           John Kearney <dethrophes@web.de>
2397         - u32toutf16: function to convert unsigned 32-bit value (unicode) to
2398           UTF-16.  From John Kearney <dethrophes@web.de>
2399         - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t
2400           is two bytes, send result to wcstombs, return if not encoding error.
2401           From John Kearney <dethrophes@web.de>
2402         - u32cconv: return UTF-8 conversion if iconv conversion to local
2403           charset is unsupported
2404
2405                                     3/2
2406                                     ---
2407 lib/readline/complete.c
2408         - print_filename: if there is no directory hook, but there is a stat
2409           hook, and we want to append a slash to directories, call the stat
2410           hook before calling path_isdir on the expanded directory name.
2411           Report and pointer to fix from Steve Rago <sar@nec-labs.com>
2412
2413                                     3/3
2414                                     ---
2415 builtins/evalstring.c
2416         - parse_and_execute: fix to change of 2/18: make sure the file
2417           descriptor being redirected to is 0 before calling cat_file when
2418           we see something like $(< file).  Real fix for bug reported by
2419           Dan Douglas <ormaaj@gmail.com>
2420
2421 subst.c
2422         - parameter_brace_patsub: run the replacement string through quote
2423           removal even if the expansion is within double quotes, because
2424           the parser and string extract functions treat the quotes and
2425           backslashes as special.  If they're treated as special, quote
2426           removal should remove them (this is the Posix position and
2427           compatible with ksh93).  THIS IS NOT BACKWARDS COMPATIBLE.
2428
2429                                     3/4
2430                                     ---
2431 lib/readline/complete.c
2432         - rl_menu_complete: fix to make show-all-if-ambiguous and
2433           menu-complete-display-prefix work together if both are set.  Fix
2434           from Sami Pietila <sami.pietila@gmail.com>
2435
2436                                     3/5
2437                                     ---
2438 bashline.c
2439         - dircomplete_expand_relpath: new variable, if non-zero, means that
2440           `shopt -s direxpand' should expand relative pathnames.  Zero by
2441           default, not user-settable yet
2442         - bash_directory_completion_hook: if we have a relative pathname that
2443           isn't changed by canonicalization or spell checking after being
2444           appended to $PWD, then don't change what the user typed.  Controlled
2445           by dircomplete_expand_relpath
2446
2447                                     3/7
2448                                     ---
2449 m4/timespec.m4
2450         - new macros, cribbed from gnulib and coreutils: find out whether we
2451           have `struct timespec' and what file includes it
2452
2453 m4/stat-time.m4
2454         - new macros, cribbed from gnulib and coreutils: find out whether the
2455           mtime/atime/ctime/etctime fields of struct stat are of type
2456           struct timespec, and what the name is
2457
2458 include/stat-time.h
2459         - new file, cribbed from gnulib, with additions from coreutils: include
2460           the right file to get the struct timespec define, or provide our own
2461           replacement.  Provides a bunch of inline functions to turn the
2462           appropriate members of struct stat into `struct timespec' values,
2463           zeroing out the tv_nsec field if necessary
2464
2465 test.c
2466         - include "stat-time.h" for the nanosecond timestamp resolution stuff
2467         - stat_mtime: new function, returns struct stat and the mod time
2468           normalized into a `struct timespec' for the filename passed as the
2469           first argument
2470         - filecomp: call stat_mtime instead of sh_stat for each filename
2471           argument to get the mtime as a struct timespec
2472         - filecomp: call timespec_cmp instead of using a straight arithmetic
2473           comparison for the -nt and -ot operators, using timespec returned by
2474           stat_mtime.  Added functionality requested by by Werner Fink
2475           <werner@suse.de> for systems that can support it
2476
2477                                    3/10
2478                                    ----
2479 include/posixdir.h
2480         - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature
2481           test macros to decide whether dirent.d_ino is present and usable;
2482           define D_INO_AVAILABLE.  Report and fix from Fabrizion Gennari
2483           <fabrizio.ge@tiscali.it>
2484         - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno
2485
2486 lib/sh/getcwd.c
2487         - use D_FILENO_AVAILABLE to decide whether or not to compile in
2488           _path_checkino and whether or not to call it.  Report and initial
2489           fix from Fabrizion Gennari <fabrizio.ge@tiscali.it>
2490
2491 lib/readline/signals.c
2492         - make sure all occurrences of SIGWINCH are protected by #ifdef
2493
2494 sig.c
2495         - make sure all occurrences of SIGCHLD are protected by #ifdef
2496
2497 nojobs.c
2498         - make sure SA_RESTART is defined to 0 if the OS doesn't define it
2499
2500 version.c
2501         - show_shell_version: don't use string literals in printf, use %s.
2502           Has added benefit of removing newline from string to be translated
2503
2504 trap.c
2505         - queue_sigchld_trap: new function, increments the number of pending
2506           SIGCHLD signals by the argument, which is by convention the number
2507           of children reaped in a call to waitchld()
2508
2509 trap.h
2510         - queue_sigchld_trap: new extern declaration
2511
2512 jobs.c
2513         - waitchld: if called from the SIGCHLD signal handler (sigchld > 0),
2514           then call queue_sigchld_trap to avoid running the trap in a signal
2515           handler context.  Report and original fix from Siddhesh Poyarekar
2516           <siddhesh@redhat.com>
2517
2518 lib/sh/unicode.c
2519         - u32tocesc: take an unsigned 32-bit quantity and encode it using
2520           ISO C99 string notation (\u/\U)
2521         - u32cconv: call u32tocesc as a fallback instead of u32cchar
2522         - u32cconv: call u32tocesc if iconv cannot convert the character.
2523           Maybe do the same thing if iconv_open fails
2524         - u32reset: call iconv_close on localconv if u32init == 1
2525
2526                                    3/11
2527                                    ----
2528 config-top.h
2529         - CHECKWINSIZE_DEFAULT: new define, set to initial value of
2530           check_window_size (shopt checkwinsize): 0 for off, 1 for on.
2531           Default is 0
2532
2533 {jobs,nojobs}.c
2534         - check_window_size: default initial value to CHECKWINSIZE_DEFAULT
2535
2536                                    3/13
2537                                    ----
2538 doc/bashref.texi
2539         - change text referring to the copying restrictions to that
2540           recommended by the FSF (no Front-Cover Texts and no Back-Cover
2541           Texts)
2542
2543 lib/readline/doc/{history,rlman,rluserman}.texi
2544         - change text referring to the copying restrictions to that
2545           recommended by the FSF (no Front-Cover Texts and no Back-Cover
2546           Texts)
2547
2548                                    3/15
2549                                    ----
2550 array.c
2551         - LASTREF_START: new macro to set the starting position for an array
2552           traversal to `lastref' if that's valid, and to the start of the array
2553           if not.  Used in array_reference, array_insert, array_remove
2554         - array_remove: try to be a little smarter with lastref instead of
2555           unconditionally invalidating it
2556
2557                                    3/16
2558                                    ----
2559 array.c
2560         - array_insert: fix memory leak by deleting element to be added in the
2561           case of an error
2562
2563                                    3/18
2564                                    ----
2565 lib/sh/mbschr.c
2566         - mbschr: don't call mbrlen unless is_basic is false; devolves to a
2567           straight character-by-character run through the string
2568
2569                                    3/19
2570                                    ----
2571 stringlib.c
2572         - substring: use memcpy instead of strncpy, since we know the length
2573           and are going to add our own NUL terminator
2574
2575                                    3/20
2576                                    ----
2577 subst.c
2578         - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted
2579           null string (a list with one element for which
2580           QUOTED_NULL(list->word->word) returns true), return the quoted null
2581           and set the flags in the returned word to indicate it.  Fixes bug
2582           reported by Mark Edgar <medgar123@gmail.com>
2583
2584 lib/sh/tmpfile.c
2585         - use random(3) instead of get_random_number to avoid perturbing the
2586           random sequence you get using $RANDOM.  Bug report and fix from
2587           Jurij Mihelic <jurij.mihelic@fri.uni-lj.si>
2588
2589                                    3/21
2590                                    ----
2591 config-top.h
2592         - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize
2593           sequential indexed array assignment patterns.  Defined to 1 by
2594           default
2595
2596 array.c
2597         - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined,
2598           start the search at lastref (see change from 3/15)
2599
2600                                    3/27
2601                                    ----
2602 print_cmd.c
2603         - debug_print_word_list: new debugging function, prints a word list
2604           preceded by an optional string and using a caller-specified
2605           separator
2606
2607                                     4/1
2608                                     ---
2609 command.h
2610         - W_ASSNGLOBAL: new flag, set to indicate declare -g
2611
2612 execute_cmd.c
2613         - fix_assignment_words: note that we have a -g argument to an assignment
2614           builtin and set the W_ASSNGLOBAL flag in the variable word
2615
2616 subst.c
2617         - dump_word_flags: print out W_ASSNGLOBAL if present
2618         - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set
2619           and W_ASSNGLOBAL is not.  Don't want to create a local variable even
2620           if variable_context is non-zero if ASSNGLOBAL is set.  Fixes bug
2621           reported by Bill Gradwohl <bill@ycc.com>
2622
2623                                     4/7
2624                                     ---
2625 lib/readline/readline.c
2626         - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to
2627           ESC processing when in vi mode.  After hitting ESC, readline will
2628           wait up to _rl_keyseq_timeout*1000 microseconds (if set) for
2629           additional input before dispatching on the ESC and switching to
2630           command/movement mode.  Completes timeout work suggested by
2631           <rogerx.oss@gmail.com>; this prompted by report from Barry Downes
2632           <barry.downes@gmail.com>
2633
2634 lib/sh/shmbchar.c
2635         - sh_mbsnlen: new function, returns the number of (possibly multibyte)
2636           characters in a passed string with a passed length, examining at most
2637           maxlen (third argument) bytes
2638
2639 externs.h
2640         - sh_mbsnlen: extern declaration for new function
2641
2642 shell.c
2643         - exit_shell: call maybe_save_shell_history if remember_on_history is
2644           set, not just in interactive shells.  That means the history is
2645           saved if history is enabled, regardless of whether or not the shell
2646           is interactive
2647
2648 doc/{bash.1,bashref.texi}
2649         - TMOUT: fix description to make it explicit that TMOUT is the timeout
2650           period for a complete line of input, not just any input.  Fixes
2651           problem reported in Ubuntu bug 957303:
2652           https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303
2653         - HISTFILE: document change to write history list to history file in
2654           any shell with history enabled, not just interactive shells.  This
2655           seems to be more logical behavior.  Suggested by Greg Wooledge
2656           <wooledg@eeg.ccf.org>
2657
2658                                    4/12
2659                                    ----
2660 lib/readline/colors.h
2661         - only include stdbool.h if HAVE_STDBOOL_H is defined
2662         - if HAVE_STDBOOL_H is not defined, provide enough definition for the
2663           library to use `bool', `true', and `false'
2664
2665 lib/readline/parse-colors.[ch]
2666         - don't try to include <stdbool.h> at all; rely on colors.h to do it
2667
2668 lib/sh/snprintf.c
2669         - vsnprintf_internal: only treat '0' as a flag to indicate zero padding
2670           if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat
2671           it as the first digit of a precision specifier.  Fixes bug reported
2672           by Petr Sumbera <petr.sumbera@sun.com>
2673
2674                                    4/15
2675                                    ----
2676 lib/sh/snprintf.c
2677         - vsnprintf_internal: if the '0' and '-' flags both occur, the '0'
2678           flag is ignored -- Posix.  Start of a series of fixes based on
2679           tests and patches from Petr Sumbera <petr.sumbera@sun.com>
2680         - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+'
2681         - vsnprintf_internal: when '+' is read as a flag, don't set right-
2682           justify flag if the LADJUST (`-') flag has already been supplied
2683         - floating: make sure to output space padding before the `+', zero
2684           padding after
2685         - exponent: make sure to output space padding before the `+', zero
2686           padding after
2687         - exponent: only subtract one from the width for the decimal point
2688           if we're really going to print one
2689         - floating: use presence of PF_PLUS flag to decide whether to account
2690           for the `+' in the padded field width.  Ditto for exponent()
2691
2692                                    4/16
2693                                    ----
2694 lib/sh/snprintf.c
2695         - vsnprint_internal: only reduce precision by 1 when processing the `g'
2696           format if it's > 0.  A precision of 0 should stay 0; otherwise it
2697           gets set to -1 (NOT_FOUND) and converted to the default
2698         - number, lnumber: if an explicit precision is supplied, turn off the
2699           zero-padding flag and set the pad character back to space
2700         - number, lnumber: only account for a `+' when performing the field
2701           width calculation if the coversion is base 10; we don't add a `+'
2702           for other bases
2703
2704                                    4/18
2705                                    ----
2706 tests/printf3.sub
2707         - try using "perl -e 'print time'" to get the current time in seconds
2708           since the epoch if "date +%s" is not available (solaris 8-10)
2709
2710                                    4/19
2711                                    ----
2712 tests/run-printf
2713         - use cat -v instead of relying on diff -a being available to convert
2714           control characters to ascii and avoid the dreaded "Binary files
2715           /tmp/xx and printf.right differ"
2716
2717                                    4/20
2718                                    ----
2719 lib/sh/strftime.c
2720         - incoporated new version from Aharon Robbins <arnold@skeeve.com>
2721
2722                                    4/22
2723                                    ----
2724 doc/{bash.1,bashref.texi}
2725         - slight change to the description of /dev/tcp and /dev/udp
2726
2727 subst.c
2728         - match_wpattern: logic fix to the calculation of `simple' (was |=,
2729           needs to be &=).  Bug report from Mike Frysinger <vapier@gentoo.org>,
2730           fix from Andreas Schwab <schwab@linux-m68k.org>
2731
2732 bashline.c
2733         - bash_filename_stat_hook: add code from bash_directory_completion_hook
2734           that performs pathname canonicalization in the same way that cd and
2735           other builtins will do
2736
2737                                    4/25
2738                                    ----
2739 execute_cmd.c
2740         - execute_pipeline: change the call to move_to_high_fd to make it use
2741           getdtablesize() and to not stomp on existing open file descriptors,
2742           like the fd the shell is using to read a script.  Bug report from
2743           Greg Wooledge <wooledg@eeg.ccf.org>
2744
2745                                     5/6
2746                                     ---
2747 subst.c
2748         - expand_word_internal: case '$': after calling param_expand and
2749           setting had_quoted_null, set TEMP to null.  The code that builds the
2750           returned string at the end of the function will take care of making
2751           and returning a quoted null string if there's nothing else in
2752           ISTRING.  If there is, the quoted null should just go away.  Part of
2753           fix for bug reported by Ruediger Kuhlmann <RKuhlmann@orga-systems.com>
2754         - expand_word_internal: when processing ISTRING to build return value,
2755           only set W_HASQUOTEDNULL in the returned word flags if the word is
2756           a quoted null string AND had_quoted_null is set.  Rest of fix
2757
2758                                     5/9
2759                                     ---
2760 variables.c
2761         - bind_variable_internal: if we get an array variable here (implicit
2762           assignment to index 0), call make_array_variable_value, which
2763           dummies up a fake SHELL_VAR * from array[0].  This matters when
2764           we're appending and have to use the current value
2765         - bind_variable_internal: after computing the new value, treat assoc
2766           variables with higher precedence than simple array variables; it
2767           might be that a variable has both attributes set
2768
2769 arrayfunc.c
2770         - bind_array_var_internal: break code out that handles creating the
2771           new value to be assigned to an array variable index into a new
2772           function, make_array_variable_value.  This handles creating a
2773           dummy SHELL_VAR * for implicit array[0] assignment.  Fixes bug
2774           reported by Dan Douglas <ormaaj@gmail.com>
2775
2776 arrayfunc.h
2777         - make_array_variable_value: new extern declaration
2778
2779                                    5/19
2780                                    ----
2781 variables.c
2782         - bind_int_variable: if an assignment statement like x=y comes in
2783           from the expression evaluator, and x is an array, handle it like
2784           x[0]=y.  Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
2785
2786                                    5/24
2787                                    ----
2788
2789 braces.c
2790         - mkseq: handle possible overflow and break the sequence generating
2791           loop if it occurs.  Fixes OpenSUSE bug 763591:
2792           https://bugzilla.novell.com/show_bug.cgi?id=763591
2793
2794                                    5/25
2795                                    ----
2796 Makefile.in
2797         - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
2798           buildversion, mksignames, mksyntax
2799         - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools
2800           recho, zecho, printenv, xcase
2801
2802 builtins/Makefile.in
2803         - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools
2804           gen-helpfiles, psize.aux
2805
2806 variables.c
2807         - bind_int_variable: if LHS is a simple variable name without an array
2808           reference, but resolves to an array variable, call
2809           bind_array_variable with index 0 to make x=1 equivalent to x[0]=1.
2810           Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
2811
2812                                    5/27
2813                                    ----
2814 subst.c
2815         - expand_word_internal: make sure has_dollar_at doesn't get reset before
2816           recursive calls to param_expand or expand_word_internal, since it has
2817           to save state of what came before.  Use temp variable and make sure
2818           has_dollar_at is incremented if recursive call processes "$@".
2819           Fixes bug reported by gregrwm <backuppc-users@whitleymott.net> and
2820           supplemented by Dan Douglas <ormaaj@gmail.com>
2821
2822 doc/{bash.1,bashref.texi}
2823         - changes to the description of substring expansion inspired by
2824           suggestions from Bill Gradwohl <bill@ycc.com>
2825
2826 doc/bashref.texi
2827         - added substring expansion examples inspired by suggestions from
2828           Bill Gradwohl <bill@ycc.com>
2829
2830 variables.c
2831         - find_shell_variable: search for a variable in the list of shell
2832           contexts, ignore the temporary environment
2833         - find_variable_tempenv: search for a variable in the list of shell
2834           contexts, force search of the temporary environment
2835         - find_variable_notempenv: search for a variable in the list of shell
2836           contexts, don't force search of the temporary environment
2837
2838 variables.h
2839         - find_shell_variable: extern declaration
2840         - find_variable_tempenv: extern declaration
2841         - find_variable_notempenv: extern declaration
2842
2843 arrayfunc.c
2844         - bind_array_variable: call find_shell_variable instead of calling
2845           var_lookup directly
2846
2847 findcmd.c
2848         - search_for_command: call find_variable_tempenv instead of
2849           find_variable_internal directly
2850         - _find_user_command_internal: call find_variable_tempenv instead of
2851           find_variable_internal directly
2852
2853 builtins/setattr.def
2854         - set_var_attribute: call find_variable_notempenv instead of
2855           find_variable_internal directly
2856         - show_name_attributes:  call find_variable_tempenv instead of
2857           find_variable_internal directly
2858
2859                                     6/1
2860                                     ---
2861 sig.c
2862         - termsig_handler: don't try to save the shell history on a terminating
2863           signal any more, since it just causes too many problems on Linux
2864           systems using glibc and glibc malloc
2865
2866 lib/readline/vi_mode.c
2867         - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi
2868           motion character.  From Red Hat bug 813289
2869         - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi
2870           motion character
2871         - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi
2872           motion character
2873
2874                                     6/4
2875                                     ---
2876 lib/sh/mktime.c
2877         - current versions of VMS do not need to include <stddef.h>.  Fix from
2878           John E. Malmberg <wb8tyw@qsl.net>
2879
2880                                     6/5
2881                                     ---
2882 lib/sh/eaccess.c
2883         - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX
2884           translation, use a dynamically-allocated buffer that we keep
2885           resizing.  Fixes potential security hole reported by David Leverton
2886           <levertond@googlemail.com>
2887
2888                                     6/5
2889                                     ---
2890 braces.c
2891         - expand_seqterm: check errno == ERANGE after calling strtoimax for
2892           rhs and incr.  Part of a set of fixes from Scott McMillan
2893           <scotty.mcmillan@gmail.com>
2894         - expand_seqterm: incr now of type `intmax_t', which changes
2895           arguments to mkseq
2896         - mkseq: a better fix for detecting overflow and underflow since it's
2897           undefined in C and compilers `optimize' out overflow checks.  Uses
2898           ADDOVERFLOW and SUBOVERFLOW macros
2899         - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t
2900           variables
2901         - mkseq: don't allow incr to be converted to -INTMAX_MIN
2902         - mkseq: make sure that strvec_create isn't called with a size argument
2903           greater than INT_MAX, since it only takes an int
2904
2905                                     6/6
2906                                     ---
2907 braces.c
2908         - mkseq: try and be smarter about not overallocating elements in
2909           the return array if the increment is not 1 or -1
2910
2911                                     6/7
2912                                     ---
2913 parse.y
2914         - history_delimiting_chars: if the parser says we're in the middle of
2915           a compound assignment (PST_COMPASSIGN), just return a space to avoid
2916           adding a stray semicolon to the history entry.  Fixes bug reported
2917           by "Davide Brini" <dave_br@gmx.com>
2918
2919                                     6/8
2920                                     ---
2921 bashline.c
2922         - bash_directory_completion_hook: don't attempt spelling correction
2923           on the directory name unless the direxpand option is set and we are
2924           going to replace the directory name with the corrected one in the
2925           readline line.  Suggested by Linda Walsh <bash@tlinx.org>
2926
2927 lib/sh/shquote.c
2928         - sh_backslash_quote: now takes a third argument: flags.  If non-zero,
2929           tildes are not backslash-escaped.  Have to handle both printf %q,
2930           where they should be escaped, and filename completion, where they
2931           should not when used as usernames
2932
2933 externs.h
2934         - sh_backslash_quote: declaration now takes a third argument
2935
2936 builtins/printf.def
2937         - printf_builtin: call sh_backslash_quote with 1 as third argument
2938           so tildes get escaped
2939
2940 {bashline,bracecomp}.c
2941         - call sh_backslash_quote with 0 as third argument so tildes are not
2942           escaped in completed words
2943
2944 doc/bash.1
2945         - add `coproc' to the list of reserved words.  From a report by
2946           Jens Schweikhardt <schweikh@schweikhardt.net>
2947
2948                                    6/10
2949                                    ----
2950 execute_cmd.c
2951         - line_number_for_err_trap: now global, so parse_and_execute can save
2952           and restore it with unwind-protect
2953
2954 builtins/evalstring.c
2955         - parse_prologue: save and restore line_number_for_err_trap along
2956           with line_number
2957         - restore_lastcom: new function, unwind-protect to restore
2958           the_printed_command_except_trap
2959         - parse_prologue: use restore_lastcom to save and restore the value
2960           of the_printed_command_except_trap around calls to parse_and_execute
2961           (eval/source/.)
2962
2963                                    6/15
2964                                    ----
2965 lib/readline/complete.c
2966         - complete_fncmp: change filename comparison code to understand
2967           multibyte characters, even when doing case-sensitive or case-mapping
2968           comparisons.  Fixes problem reported by Nikolay Shirokovskiy
2969           <nshyrokovskiy@gmail.com>
2970
2971                                    6/20
2972                                    ----
2973 builtins/mapfile.def
2974         - mapfile: move the line count increment and check for having read
2975           the specified number of lines to the end of the loop to avoid
2976           reading an additional line with zgetline.  Fixes bug reported by
2977           Dan Douglas <ormaaj@gmail.com>
2978
2979                                    6/21
2980                                    ----
2981
2982 execute_cmd.c
2983         - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on
2984           all systems, since it's tested later in the function.  Fixes bug
2985           reported by John E. Malmberg <wb8tyw@qsl.net>
2986
2987                                    6/22
2988                                    ----
2989 mailcheck.c
2990         - file_mod_date_changed: return 0 right away if mailstat() does not
2991           return success.  Fixes bug with using uninitialized values reported
2992           by szymon.kalasz@uj.edu.pl
2993
2994 builtins/set.def
2995         - the `monitor' option is not available when the shell is compiled
2996           without job control, since the underlying `m' flag is not available
2997
2998 nojobs.c
2999         - job_control: now declared as int variable, initialized to 0, never
3000           modified
3001
3002 jobs.h
3003         - job_control: extern declaration no longer dependent on JOB_CONTROL
3004
3005 execute_cmd.c
3006         - execute_pipeline: made necessary changes so `lastpipe' shell option
3007           is now available in all shells, even those compiled without
3008           JOB_CONTROL defined
3009
3010                                    6/23
3011                                    ----
3012 lib/glob/glob.c
3013         - glob_filename: check for interrupts before returning if glob_vector
3014           returns NULL or an error.  Bug reported by Serge van den Boom
3015           <svdb@stack.nl>, fix from Andreas Schwab <schwab@linux-m68k.org>
3016         - call run_pending_traps after each call to QUIT or test of
3017           interrupt_state, like we do in mainline shell code
3018         - glob_vector: don't call QUIT; in `if (lose)' code block; just free
3019           memory, return NULL, and let callers deal with interrupt_state or
3020           other signals and traps
3021
3022                                    6/25
3023                                    ----
3024 lib/readline/input.c
3025         - rl_read_key: restructure the loop that calls the event hook a little,
3026           so that the hook is called only after rl_gather_tyi returns no input,
3027           and any pending input is returned first.  This results in better
3028           efficiency for processing pending input without calling the hook
3029           on every input character as bash-4.1 did.  From a report from
3030           Max Horn <max@quendi.de>
3031
3032                                    6/26
3033                                    ----
3034 trap.c
3035         - signal_is_pending: return TRUE if SIG argument has been received and
3036           a trap is waiting to execute
3037
3038 trap.h
3039         - signal_is_pending: extern declaration
3040
3041 lib/glob/glob.c
3042         - glob_vector: check for pending SIGINT trap each time through the loop,
3043           just like we check for interrupt_state or terminating_signal, and
3044           set `lose = 1' so we clean up after ourselves and interrupt the
3045           operation before running the trap.  This may require a change later,
3046           maybe call run_pending_traps and do that if run_pending_traps returns?
3047
3048 variables.c
3049         - sv_histtimefmt: set history_comment_character to default (`#') if
3050           it's 0 when we're turning on history timestamps.  The history code
3051           uses the history comment character to prefix timestamps, and
3052           leaving it at 0 effectively removes them from the history.  From a
3053           report to help-bash by Dennis Williamson <dennistwilliamson@gmail.com>
3054
3055                                    6/27
3056                                    ----
3057 lib/readline/signals.c
3058         - rl_maybe_restore_sighandler: new function, sets handler for SIG to
3059           HANDLER->sa_handler only if it's not SIG_IGN.  Needs to be called
3060           on same signals set using rl_maybe_set_sighandler, which does not
3061           override an existing SIG_IGN handler (SIGALRM is ok since it does
3062           the check inline; doesn't mess with SIGWINCH)
3063
3064                                    6/30
3065                                    ----
3066 variables.h
3067         - additional defines for the new `nameref' variable attribute
3068           (att_nameref): nameref_p, nameref_cell, var_setref
3069
3070 variables.c
3071         - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs
3072         - find_variable_last_nameref: resolve variable NAME until last in a
3073           chain of possibly more than one nameref starting at shell_variables
3074         - find_global_variable_last_nameref: resolve variable NAME until last
3075           in a chain of possibly more than one nameref starting at
3076           global_variables
3077         - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs        
3078           in a specific variable context (usually a local variable hash table)
3079         - find_variable_nameref_context: resolve SHELL_VAR V through chain of
3080           namerefs following a chain of varible contexts
3081         - find_variable_last_nameref_context: resolve SHELL_VAR V as in
3082           find_variable_last_context, but return the final nameref instead of
3083           what the final nameref resolves to
3084         - find_variable_tempenv, find_variable_notempenv, find_global_variable,
3085           find_shell_variable, find_variable: modified to follow namerefs
3086         - find_global_variable_noref: look up a global variable without following
3087           any namerefs
3088         - find_variable_noref: look up a shell variable without following any
3089           namerefs
3090         - bind_variable_internal: modify to follow a chain of namerefs in the
3091           global variables table; change to handle assignments to a nameref by
3092           following nameref chain
3093         - bind_variable: modify to follow chain of namerefs when binding to a
3094           local variable
3095         - unbind_variable: changes to unset nameref variables (unsets both
3096           nameref and variable it resolves to)
3097
3098 subst.c
3099         - parameter_brace_expand_word: change to handle expanding nameref whose
3100           value is x[n]
3101         - parameter_brace_expand_indir: change to expand in ksh93-compatible
3102           way if variable to be indirected is nameref and a simple (non-array)
3103           expansion
3104         - param_expand: change to expand $foo where foo is a nameref whose value
3105           is x[n]
3106
3107 execute_cmd.c
3108         - execute_for_command: changes to implement ksh93 semantics when index
3109           variable is a nameref
3110
3111 builtins/setattr.def
3112         - show_var_attributes: change to add `n' to flags list if att_nameref
3113           is set
3114
3115 builtins/set.def
3116         - unset_builtin: changes to error messages to follow nameref variables
3117
3118 builtins/declare.def
3119         - document new -n option
3120         - declare_internal: new `-n' and `+n' options
3121         - declare_internal: handle declare -n var[=value] and
3122           declare +n var[=value] for existing and non-existant variables.
3123           Enforce restriction that nameref variables cannot be arrays.
3124           Implement semi-peculiar ksh93 semantics for typeset +n ref=value
3125
3126                                     7/5
3127                                     ---
3128 variables.c
3129         - unbind_variable: unset whatever a nameref resolves to, leaving the
3130           nameref variable itself alone
3131         - unbind_nameref: new function, unsets a nameref variable, not the
3132           variable it references
3133
3134 variables.h
3135         - unbind_nameref: extern declaration
3136
3137 builtins/set.def
3138         - unset_builtin: modify to add -n option, which calls unbind_nameref
3139           leaving unbind_variable for the usual case.  This required slight
3140           changes and additions to the test suite
3141
3142 doc/{bash.1,bashref.texi}
3143         - document namerefs and typeset/declare/local/unset -n
3144
3145                                    7/13
3146                                    ----
3147 lib/sh/casemod.c
3148         - include shmbchar.h for is_basic and supporting pieces
3149         - sh_casemod: use _to_wupper and _to_wlower to convert wide character
3150           case instead of TOUPPER and TOLOWER.  Fixes bug reported by
3151           Dennis Williamson <dennistwilliamson@gmail.com>, fix from
3152           Andreas Schwab <schwab@linux-m68k.org>
3153         - cval: short-circuit and return ascii value if is_basic tests true
3154         - sh_casemod: short-circuit and use non-multibyte case modification
3155           and toggling code if is_basic tests true
3156
3157 lib/readline/signals.c
3158         - _rl_{block,release}_sigint: remove the code that actually blocks and
3159           releases the signals, since we defer signal handling until calls to
3160           RL_CHECK_SIGNALS()
3161
3162 lib/readline/{callback,readline,util}.c
3163         - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without
3164           saving and restoring the signal mask instead of setjmp/longjmp
3165
3166 lib/readline/rltty.c
3167         - prepare_terminal_settings: don't mess with IXOFF setting if
3168           USE_XON_XOFF defined
3169
3170 doc/{bash.1,bashref.texi}
3171         - add some text to the description of set -e clarifying its effect
3172           on shell functions and shell function execution.  Suggested by
3173           Rainer Blome <rainer.blome@gmx.de>
3174
3175 bashline.c
3176         - edit_and_execute_command: increment current_command_line_count before
3177           adding partial line to command history (for command-oriented-history
3178           because of rl_newline at beginning of function), then reset it to 0
3179           before adding the dummy history entry to make sure the dummy entry
3180           doesn't get added to previous incomplete command.  Partial fix for
3181           problem reported by Peng Yu <pengyu.ut@gmail.com>
3182
3183                                    7/24
3184                                    ----
3185 configure.in
3186         - interix: define RECYCLES_PIDS.  Based on a report from Michael
3187           Haubenwallner <michael.haubenwallner@salomon.at>
3188
3189                                    7/26
3190                                    ----
3191 jobs.c
3192         - make_child: call bgp_delete on the newly-created pid unconditionally.
3193           Some systems reuse pids before cycling through an entire set of
3194           CHILD_MAX/_SC_CHILD_MAX unique pids.  This is no longer dependent
3195           on RECYCLES_PIDS.  Based on a report from Michael Haubenwallner
3196           <michael.haubenwallner@salomon.at>
3197
3198 support/shobj-conf
3199         - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We
3200           can finally kill Panther
3201
3202                                    7/28
3203                                    ----
3204 subst.c
3205         - command_substitute: make sure last_made_pid gets reset if make_child
3206           fails
3207
3208 execute_cmd.c
3209         - execute_command_internal: case cm_simple: decide whether or not to
3210           wait_for a child if already_making_children is non-zero, indicates
3211           that there is an unwaited-for child.  More of fix for bug report
3212           from Michael Haubenwallner <michael.haubenwallner@salomon.at>
3213
3214 jobs.c
3215         - make_child: call delete_old_job (new_pid) unconditionally, don't
3216           bother to check whether or not pid wrap occurred.  Rest of fix for
3217           bug report from Michael Haubenwallner
3218           <michael.haubenwallner@salomon.at>
3219
3220                                    7/29
3221                                    ----
3222 shell.c
3223         - subshell_exit: new function, exits the shell (via call to sh_exit())
3224           after calling any defined exit trap
3225
3226 externs.h
3227         - subshell_exit: new extern declaration
3228
3229 execute_cmd.c
3230         - execute_command_internal: make sure to call subshell_exit for
3231           {} group commands executed asynchronously (&).  Part of fix for
3232           EXIT trap bug reported by Maarten Billemont <lhunath@lyndir.com>
3233
3234 sig.c
3235         - reset_terminating_signals: make sure to set termsigs_initialized back
3236           to 0, so a subsequent call to initialize_terminating_signals works
3237           right.  Rest of fix for bug reported by Maarten Billemont
3238           <lhunath@lyndir.com>
3239
3240 {execute_cmd,general,jobs,mailcheck,mksyntax,test}.c
3241 builtins/{cd,fc,pushd,ulimit}.def
3242 lib/malloc/getpagesize.h
3243 lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c
3244         - make inclusion of <sys/param.h> dependent on HAVE_SYS_PARAM_H
3245           consistently
3246
3247                                     8/6
3248                                     ---
3249 lib/readline/histexpand.c
3250         - history_expand_internal: now takes an additional argument saying
3251           whether the history expansion occurs within a quoted string, set to
3252           the open quote character
3253         - history_expand_internal: use new argument instead of checking prev
3254           char and initializing quoted_search_delimiter, pass qc directly to
3255           get_history_event, where it allows a matching quote to terminate a
3256           string defining an event
3257         - history_expand: change single-quote handling code so that if
3258           history_quotes_inhibit_expansion is 0, single quotes are treated
3259           like double quotes
3260         - history_expand: change call to history_expand_internal to pass new
3261           argument of `"' if double-quoted string, `'' if single-quoted string;
3262           this lets history_expand decide what is a quoted string and what
3263           is not
3264
3265                                     8/7
3266                                     ---
3267 configure.in
3268         - AC_CANONICAL_BUILD: invoke for later use
3269
3270 lib/readline/macro.c
3271         - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key:
3272           backs up the index into the current macro by 1
3273
3274 lib/readline/rlprivate.h
3275         - _rl_prev_macro_key: extern declaration
3276
3277
3278 lib/readline/readline.c
3279         - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char
3280           if we're currently reading from a macro; call _rl_prev_macro_key
3281           instead.  Fixes bug reported by Clark Wang <clark.wang@oracle.com>
3282
3283                                    8/13
3284                                    ----
3285 builtins/evalstring.c
3286         - evalstring(): new function, wrapper around parse_and_execute.
3287           make sure we handle cases where parse_and_execute can call `return'
3288           and short-circuit without cleaning up properly.  We call
3289           parse_and_execute_cleanup() then jump to the previous-saved return
3290           location
3291
3292 builtins/common.h
3293         - extern declaration for evalstring()
3294
3295 builtins/eval.def
3296         - eval_builtin: make sure we handle `eval " ... return"' in contexts
3297           where `return' is valid by calling evalstring().  Fixes bug with
3298           `eval return' in sourced files reported by Clark Wang
3299           <dearvoid@gmail.com>
3300
3301 trap.c
3302         - run_pending_traps: call evalstring instead of parse_and_execute.
3303           XXX - still needs to handle saving and restoring token state in the
3304           presence of `return'; could use unwind_protects for that
3305
3306 builtins/mapfile.def
3307         - run_callback: call evalstring instead of parse_and_execute
3308
3309                                    8/15
3310                                    ----
3311 bashline.c
3312         - bash_filename_stat_hook: make sure we don't free local_dirname
3313           before using it to canonicalize any expanded filename.  Make sure
3314           it always points to *dirname and only free it if we're replacing
3315           it.
3316
3317 lib/readline/complete.c
3318         - append_to_match: make sure we call rl_filename_stat_hook with
3319           newly-allocated memory to avoid problems with freeing it twice
3320
3321                                    8/17
3322                                    ----
3323 variables.c,config-top.h
3324         - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the
3325           code that allows indexed arrays to be exported is enabled and
3326           included
3327
3328                                    8/19
3329                                    ----
3330 shell.c
3331         - call start_debugger from main() only if dollar_vars[1] != 0 (close
3332           enough to a non-interactive shell, since we can be interactive with
3333           -i while running a shell script).  Fixes oddity reported by
3334           Techlive Zheng <techlivezheng@gmail.com>
3335
3336                                    8/20
3337                                    ----
3338 arrayfunc.c
3339         - quote_array_assignment_chars: don't bother quoting if the word has
3340           not been marked as an assignment (W_ASSIGNMENT)
3341         - quote_array_assignment_chars: turn on W_NOGLOB in the word flags
3342           so assignment statements don't undergo globbing.  Partial fix for
3343           problems reported by Dan Douglas <ormaaj@gmail.com>
3344
3345                                    8/21
3346                                    ----
3347 command.h
3348         - W_NOBRACE: new word flag that means to inhibit brace expansion
3349
3350 subst.c
3351         - brace_expand_word_list: suppress brace expansion for words with
3352           W_NOBRACE flag
3353
3354                                    8/22
3355                                    ----
3356 builtins/read.def
3357         - read_builtin: don't call dequote_string on what we've read, even if
3358           we saw an escape character, unless (input_string && *input_string).
3359           We may have escaped an IFS whitespace character.  Fixes seg fault
3360           reported by <armandsl@gmail.com>
3361
3362 execute_cmd.c
3363         - execute_command_internal: set the_printed_command_except trap when
3364           about to execute a ( ... ) user subshell.  For now, set it only if
3365           ERR is trapped; can relax that later.  Fixes bug reported by
3366           Mike Frysinger <vapier@gentoo.org>
3367
3368                                    8/23
3369                                    ----
3370 jobs.c
3371         - remove references to first_pid and pid_wrap, since we're not using
3372           them for anything anymore
3373
3374                                    8/24
3375                                    ----
3376 subst.c
3377         - changes for W_NOBRACE everywhere appropriate: so it can be displayed
3378           for debugging, and passed out of expand_word_internal
3379
3380 doc/{bash.1,bashref.texi}
3381         - small changes to make it clearer that the = and == operators are
3382           equivalent, and will cause pattern matching when used with [[.
3383           From a question from Michal Soltys <soltys@ziu.info>
3384
3385 doc/bashref.texi
3386         - some small formatting changes from Karl Berry <karl@freefriends.org>
3387
3388                                    8/27
3389                                    ----
3390 lib/readline/doc/{history,rlman,rluserman}.texi
3391         - some small formatting changes from Karl Berry <karl@freefriends.org>
3392
3393 arrayfunc.c
3394         - assign_array_element_internal, assign_compound_array_list,
3395           unbind_array_element, array_value_internal: changes to make
3396           assignment statements to negative indices (a[-1]=2) and unsetting
3397           array elements using negative indices (unset 'a[-1]') work.
3398           From suggestions by Dennis Williamson <dennistwilliamson@gmail.com>
3399           and Chris F. A. Johnson <chris@cfajohnson.com>
3400
3401 subst.c
3402         - array_length_reference: changes to make length references to array
3403           elements using negative indices (${#a[-1]}) work
3404
3405                                    8/28
3406                                    ----
3407 doc/{bash.1,bashref.texi}
3408         - document new treatment of negative indices to indexed arrays when
3409           assigning, referencing, calculating length, and unsetting
3410
3411                                    8/29
3412                                    ----
3413 shell.c
3414         - show_shell_usage: add -l to list of shell invocation options (short
3415           for --login).  From Red Hat bug 852469
3416
3417 configure.ac
3418         - renamed from configure.in, as latest autoconf versions want.  Patches
3419           Stefano Lattarini <stefano.lattarini@gmail.com>
3420
3421 MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles
3422         - configure.in -> configure.ac
3423
3424                                     9/1
3425                                     ---
3426
3427 parse.y
3428         - read_token_word: allow words like {array[ind]} to be valid redirection
3429           words for constructs like {x}<file
3430
3431 redir.c
3432         - redir_varassign: bind_var_to_int already handles array assignments,
3433           so don't need to do anything more for things like {a[i]}<file
3434         - redir_varvalue: changes to allow references to {a[i]} when
3435           performing redirections using valid_array_reference and
3436           get_array_value.  Adds functionality requested most recently by
3437           <unknown@vmw-les.eng.vmware.com>
3438
3439 lib/readline/display.c
3440         - update_line: if the first difference between the old and new lines
3441           is completely before any invisible characters in the prompt, we
3442           should not adjust _rl_last_c_pos, since it's before any invisible
3443           characters.  Fixed in two places
3444         - prompt_modechar: return a character indicating the editing mode:
3445           emacs (@), vi command (:), or vi insert (+)
3446         - _rl_reset_prompt: new function, just calls rl_expand_prompt.  Will be
3447           inlined, placeholder for more changes
3448         - expand_prompt: if show-mode-in-prompt is enabled, add a character to
3449           the front of the prompt indicating the editing mode, adjusting the
3450           various variables as appropriate to keep track of the number of
3451           visible characters and number of screen positions
3452
3453 lib/readline/bind.c
3454         - show-mode-in-prompt: new bindable boolean variable, shadowed by
3455           _rl_show_mode_in_prompt variable
3456         - hack_special_boolean_var: call _rl_reset_prompt when toggling or
3457           setting show-mode-in-prompt
3458
3459 lib/readline/readline.c
3460         - readline_internal_setup: make sure the correct vi mode keymap is set
3461           before expanding the prompt string for the first time
3462
3463 lib/readline/misc.c
3464         - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're
3465           showing the editing mode in the prompt
3466
3467 lib/readline/rlprivate.h
3468         - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations
3469
3470 lib/readline/vi_mode.c
3471         - rl_vi_insertion_mode: call _rl_reset_prompt
3472         - rl_vi_movement_mode: call _rl_reset_prompt.  Finishes changes for
3473           showing mode in prompt string, originally requested by Miroslav
3474           Koskar <mkoskar@gmail.com> and most recently by Jordan Michael
3475           Ziegler <jziegler@bnl.gov>
3476
3477 doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
3478         - document new show-mode-in-prompt variable, off by default
3479
3480                                     9/3
3481                                     ---
3482
3483 jobs.c
3484         - set_childmax: new function, external mechanism for other parts of
3485           the shell to set js.c_childmax, the number of saved exited child
3486           statuses to remember
3487 jobs.h
3488         - set_childmax: extern declaration
3489
3490 variables.c
3491         - CHILD_MAX: new special variable, with sv_childmax function to
3492           run when it changes.  Setting CHILD_MAX to a value greater than
3493           zero but less than some maximum (currently 8192) sets the number of
3494           exited child statuses to remember.  set_childmax (jobs.c) ensures
3495           that the number does not drop below the posix-mandated minimum
3496           (CHILD_MAX)
3497
3498 doc/{bash.1,bashref.texi}
3499         - CHILD_MAX: document new meaning and action when variable is set
3500
3501                                     9/5
3502                                     ---
3503 redir.c
3504         - redir_varassign: call stupidly_hack_special_variables after
3505           assigning fd number to specified variable, so we can use constructs
3506           like {BASH_XTRACEFD}>foo.  Suggested by Pierre Gaston
3507           <pierre.gaston@gmail.com>
3508
3509                                     9/8
3510                                     ---
3511 expr.c
3512         - readtok: invalidate previous contents of `curlval' before freeing
3513           and reallocating tokstr (which, chances are, will get the same
3514           pointer as before and render curlval inconsistent).  Fixes other
3515           bug reported by Dan Douglas <ormaaj@gmail.com>
3516
3517                                     9/9
3518                                     ---
3519 lib/readline/complete.c
3520         - rl_username_completion_function: protect call to setpwent() with
3521           #ifdef (HAVE_GETPWENT)/#endif.  Fixes bug reported by
3522           Gerd Hofmann <gerd.hofmann.nbg@googlemail.com>
3523
3524 lib/readline/display.c
3525         - rl_message: second and subsequent calls to rl_message can result in
3526           local_prompt being overwritten with new values (e.g., from the
3527           successive calls displaying the incremental search string).  Need
3528           to free before overwriting if it's not the same as the value saved
3529           in saved_local_prompt.  Fixes memory leak reported by
3530           Wouter Vermaelen <vermaelen.wouter@gmail.com>
3531
3532 lib/readline/{terminal.c,rlprivate.h}
3533         - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from
3534           terminal.c to rlprivate.h so other files can use them
3535
3536 expr.c
3537         - expr_streval: if noeval is non-zero, just return 0 right away,
3538           short-circuiting evaluation completely.  readtok will leave curtok
3539           set correctly without re-entering the evaluator at all.  Rest of
3540           fix for bug reported by Dan Douglas <ormaaj@gmail.com>
3541
3542                                    9/11
3543                                    ----
3544
3545 parse.y
3546         - parse_comsub: make sure the `reserved word ok in this context' flag
3547           is preserved after we read `do' followed by whitespace.  Fixes bug
3548           reported by Benoit Vaugon <benoit.vaugon@gmail.com>
3549
3550                                    9/13
3551                                    ----
3552 configure.ac,config.h.in
3553         - enable-direxpand-default: new configure option, turns the `direxpand'
3554           shell option on by default
3555
3556 bashline.c
3557         - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if
3558           DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero
3559
3560 doc/bashref.texi
3561         - enable-direxpand-default: document new configure option
3562
3563                                    9/14
3564                                    ----
3565 shell.c
3566         - --protected: make option valid only when wordexp is compiled into
3567           the shell.  Fix from Roman Rakus <rrakus@redhat.com>
3568
3569 configure.ac
3570         - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from
3571           Joachim Schmitz <jojo@schmitz-digital.de>
3572
3573                                    9/16
3574                                    ----
3575 subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c
3576         - minor code cleanups from Joachim Schmitz <jojo@schmitz-digital.de>
3577
3578 lib/readline/colors.h
3579         - workaround for HP NonStop compiler issue with <stdbool.h> from
3580           Joachim Schmitz <jojo@schmitz-digital.de>
3581
3582                                    9/17
3583                                    ----
3584 builtins/printf.def
3585         - printf_builtin: handle localtime returning NULL, as can happen when
3586           encountering overflow.  Bug report and initial fix from
3587           Eduardo A. Bustamante López <dualbus@gmail.com>
3588
3589 doc/{bash.1,bashref.texi}
3590         - emphasize that brace expansion using character ranges ({a..c}) acts
3591           as if the C locale were in use.  Prompted by message from
3592           Marcel Giannelia <info@skeena.net>
3593
3594                                    9/20
3595                                    ----
3596 lib/sh/wcsnwidth.c
3597         - wcsnwidth: new function, variant of wcwidth, returns the number of
3598           wide characters from a string that will be displayed to not exceed
3599           a specified max column position
3600
3601                                    9/21
3602                                    ----
3603 builtins/help.def
3604         - show_builtin_command_help: break code that displays the short-doc
3605           for each builtin in two columns into a new function: dispcolumn
3606         - wdispcolumn: multibyte-char version of dispcolumn; uses wide
3607           chars and printf "%ls" format.  Fixes problem reported by
3608           Nguyá»n Thái Ngá»c Duy <pclouds@gmail.com>
3609
3610                                    9/22
3611                                    ----
3612 execute_cmd.c
3613         - execute_disk_command: before running the command-not-found hook,
3614           call kill_current_pipeline() to make sure we don't add processes
3615           to an existing pipeline or wait for processes erroneously
3616
3617                                    9/23
3618                                    ----
3619 lib/readline/input.c
3620         - rl_input_available_hook: new hook function, called from
3621           _rl_input_available (or _rl_input_queued) to return whether or not
3622           input is available wherever the input source is
3623
3624 lib/readline/doc/rltech.texi
3625         - rl_input_available_hook: document
3626
3627                                    9/27
3628                                    ----
3629 lib/glob/sm_loop.c:
3630         - GMATCH: after one or more `*', an instance of ?(x) can match zero or
3631           1 times (unlike ?, which has to match one character).  The old code
3632           failed if it didn't match at least once.  Fixes `a*?(x)' bug.
3633         - GMATCH: if we hit the end of the search string, but not the end of
3634           the pattern, and the rest of the pattern is something that can
3635           match the NUL at the end of the search string, we should successfully
3636           match.  Fixes `a*!(x)' bug reported by <hans1worst@gmail.com>
3637
3638                                    10/2
3639                                    ----
3640 command.h
3641         - add c_lock member to coproc structure for future use to tell who is
3642           manipulating it
3643
3644 execute_cmd.c
3645         - execute_coproc: block SIGCHLD while parent is forking coproc
3646           process and adding pid to sh_coproc struct to avoid race condition
3647           where child is reaped before the pid is assigned and the coproc is
3648           never marked as having died.  Fixes race condition identified by
3649           Davide Baldini <baldiniebaldini@gmail.com>
3650         - add assignments to c_lock member of struct coproc in various
3651           functions that manipulate it; was used to identify race condition
3652         - coproc_pidchk: don't call coproc_dispose to avoid using malloc and
3653           other functions in a signal handler context
3654         - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while
3655           manipulating the sh_coproc struct
3656
3657                                    10/6
3658                                    ----
3659 lib/readline/complete.c
3660         - rl_display_match_list: if printing completions horizontally, don't
3661           bother with spacing calculations if limit == 1, which means we are
3662           printing one completion per line no matter what.  Fixes bug
3663           reported by David Kaasen <kaasen@nvg.ntnu.no>
3664
3665                                    10/7
3666                                    ----
3667 builtins/declare.def
3668         - declare_internal: add error checking for nameref attribute and
3669           variable assignments: self-references, attempts to make an array
3670           variable a nameref
3671
3672 subst.c
3673         - parameter_brace_expand: handle parameter_brace_expand_word returning
3674           &expand_param_fatal or &expand_param_error and return the appropriate
3675           error value
3676         - parameter_brace_expand_word: if a nameref variable's value is not a
3677           valid identifier, return an error
3678         - param_expand: if a nameref variable's value is not a valid identifier,
3679           return an error
3680
3681 test.c
3682         - unary_operator: add new -R variable, returns true if variable is set
3683           and has the nameref attribute. From ksh93
3684
3685 builtins/test.def
3686         - add -R to description of conditional commands for help test
3687
3688 doc/{bash.1,bashref.texi}
3689         - document new -R unary conditional operator
3690
3691                                    10/13
3692                                    -----
3693 trap.c
3694         - check_signals_and_traps: new function, convenience function for the
3695           rest of the shell to check for pending terminating and interrupt
3696           signals, and to check for and process any pending traps
3697         - any_signals_trapped: new function, returns non-zero if any signals
3698           are trapped and -1 if not
3699
3700 trap.h
3701         - extern declaration for check_signals_and_traps
3702
3703 bashline.c
3704         - bashline_reset: make sure we reset the event hook
3705         - bash_event_hook: call check_signals_and_traps instead of just
3706           checking for terminating signals so we can run pending traps and
3707           react to interrupts, and reset the event hook when we're done
3708
3709
3710                                    10/14
3711                                    -----
3712 trap.c
3713         - trap_handler: if executing in a readline signal handler context,
3714           call bashline_set_event_hook to install bash_event_hook to process
3715           the signal (if bash cares about it)
3716
3717 sig.c
3718         - sigint_sighandler: call bashline_set_event_hook to set the event
3719           hook if we're executing in a readline signal handler context
3720
3721 lib/readline/input.c
3722         - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught
3723           signal is SIGINT or SIGQUIT rather than waiting until the next time
3724           around the loop
3725         - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow
3726           an application signal handler to set the event hook in its own
3727           signal handler (e.g., like bash trap_handler or sigint_sighandler)
3728
3729
3730 parse.y
3731         - yy_readline_get: don't set interrupt_immediately before we call
3732           readline().  Inspired by report from lanshun zhou
3733           <zls.sogou@gmail.com>
3734
3735 input.c
3736         - getc_with_restart: add call to run_pending_traps after call to
3737           CHECK_TERMSIG
3738
3739 lib/sh/zread.c
3740         - zread: call check_signals_and_traps if read() returns -1/EINTR
3741           instead of just ignoring the EINTR and deferring handling any
3742           signal that generated it
3743
3744 builtins/mapfile.def
3745         - mapfile: don't set interrupt_immediately before calling zgetline()
3746           (which uses zread internally)
3747
3748 builtins/read.def
3749         - read_builtin: don't set interrupt_immediately before calling zread
3750           (moved code around so that it was only being set right around calls
3751           to zread to avoid signal handler conflicts).  Inspired by report
3752           from lanshun zhou <zls.sogou@gmail.com>
3753         - edit_line: don't set interrupt_immediately around call to readline()
3754         - include shmbutil.h
3755         - read_builtin: don't call read_mbchar unless is_basic(c) returns
3756           false for the character we just read
3757
3758                                    10/15
3759                                    -----
3760 sig.c
3761         - throw_to_top_level: if interrupt_state is non-zero, make sure that
3762           last_command_exit_value reflects 128+SIGINT if it's not already
3763           greater than 128
3764
3765                                    10/20
3766                                    -----
3767 builtins/wait.def
3768         - WAIT_RETURN: set wait_signal_received back to 0 for the potential
3769           next call to wait
3770
3771 quit.h
3772         - CHECK_WAIT_INTR: macro to check whether trap_handler handled a
3773           signal and set wait_signal_received; longjmp to wait_intr_buf in
3774           that case
3775
3776 jobs.c
3777         - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call
3778           CHECK_TERMSIG to check for terminating signals
3779         - wait_sigint_handler: don't longjmp out of the wait builtin unless
3780           interrupt_immediately is set; otherwise just SIGRETURN from the
3781           handler
3782         - wait_sigint_handler: if interrupt_immediately not set, but we are
3783           executing in the wait builtin and SIGINT is not trapped, treat it
3784           as a `normally received' SIGINT: restore the signal handler and
3785           send SIGINT to ourselves
3786         - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp
3787           to wait_intr_buf (and let wait be interrupted) if we're running from
3788           a signal handler.  Wait for CHECK_WAIT_INTR to do the longjmp.
3789           run_pending_traps will run the SIGCHLD trap later
3790
3791 nojobs.c
3792         - reap_zombie_children, wait_for_single_pid, wait_for: call
3793           CHECK_WAIT_INTR where we call CHECK_TERMSIG
3794         - wait_sigint_handler: don't longjmp out of the wait builtin unless
3795           interrupt_immediately is set; otherwise just SIGRETURN from the
3796           handler
3797
3798 trap.c
3799         - trap_handler: make sure wait_signal_received is set if the wait
3800           builtin is executing, and only longjmp if interrupt_immediately is
3801           set.  This whole set of fixes was prompted by report from
3802           lanshun zhou <zls.sogou@gmail.com>
3803
3804                                    10/24
3805                                    -----
3806 lib/glob/glob.c
3807         - glob_filename: only check directory_name for globbing chars if
3808           it's of non-zero length
3809
3810 lib/sh/strchrnul.c
3811         - new simpler implementation
3812
3813 subst.c
3814         - command_substitute: call set_shellopts after turning off errexit
3815           in subshells so it's reflected in $SHELLOPTS
3816
3817                                    11/7
3818                                    ----
3819 builtins/evalstring.c
3820         - parse_and_execute: treat ERREXIT case like reader_loop does: set
3821           variable_context to 0 before longjmping back to top_level. Don't
3822           run the unwind-protect context to avoid side effects from popping
3823           function contexts.  Part of fix for problem reported by Nikolai
3824           Kondrashov <nikolai.kondrashov@redhat.com>
3825
3826 execute_cmd.c
3827         - execute_simple_command: call unlink_fifo_list only if this is the
3828           last element of a pipeline (or not in a pipeline), rather than for
3829           every child.  Fixes difference in behavior between /dev/fd and
3830           FIFOs reported by Zev Weiss <zev@bewilderbeest.net>
3831         - execute_null_command: do the same thing in the parent branch after
3832           make_child
3833
3834                                    11/14
3835                                    -----
3836 subst.c
3837         - parameter_brace_expand: a variable is null if it's special ($@, $*),
3838           the expansion occurs within double quotes, and the expansion turns
3839           into a quoted null.  Fixes debian bug 692447 reported by
3840           Matrosov Dmitriy <sgf.dma@gmail.com>
3841
3842 jobs.c
3843         - run_sigchld_trap: make sure `running_trap' sentinel is set
3844           appropriately
3845         - waitchld: only run the sigchld trap if we're not in a signal
3846           handler, not running a trap, and executing the wait builtin.
3847           Otherwise, queue for later handling.  We still run one instance
3848           of the trap handler per exited child.  Bulk of fix for bug
3849           reported by Elliott Forney <idfah@cs.colostate.edu>
3850
3851 trap.c
3852         - queue_sigchld_trap: set catch_flag so run_pending_traps notices,
3853           and set trapped_signal_received for completeness.  Rest of fix
3854           for bug reported by Elliott Forney <idfah@cs.colostate.edu>
3855
3856 lib/malloc/malloc.c
3857         - block_signals: renamed to _malloc_block_signals, made public
3858         - unblock_signals: renamed to _malloc_unblock_signals, made public
3859
3860 lib/malloc/imalloc.h
3861         - extern declarations for _malloc_{un,}block_signals
3862
3863 lib/malloc/table.c
3864         - mregister_alloc, mregister_free: block signals around table
3865           manipulation
3866
3867                                    11/15
3868                                    -----
3869 trap.c
3870         - run_pending_traps: set SIG_INPROGRESS flag around calls to
3871           run_sigchld_handler so other parts of the shell know that the
3872           SIGCHLD trap handler is executing
3873         - run_pending_traps: if we get a situation where we are looking at
3874           running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER
3875           and the SIG_INPROGRESS flag is set, just skip it.  This is possible
3876           if run_pending_traps is called from a SIGCHLD trap handler run by
3877           run_sigchld_trap
3878
3879 doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
3880         - corrected description of the effect of `set history-size 0'.  Report
3881           from Vesa-Matti J Kari <vmkari@cc.helsinki.fi>
3882
3883 include/stdc.h
3884         - CPP_STRING: new define, replaces __STRING
3885
3886 lib/malloc/{malloc.c,imalloc.h}
3887         - replace __STRING with CPP_STRING
3888
3889                                    11/16
3890                                    -----
3891 lib/readline/bind.c
3892         - sv_histsize: if argument evaluates to a value < 0, unstifle the
3893           history
3894
3895                                    11/22
3896                                    -----
3897 redir.c
3898         - do_redirection_internal: if we have REDIR_VARASSIGN set in the
3899           redirection flags and we set up `redirector' using fcntl or dup2,
3900           don't add a redirect to make sure it stays open.  Let the
3901           script programmer manage the file handle.  Fixes bug reported by
3902           Sam Liddicott <sam@liddicott.com>
3903
3904                                    11/24
3905                                    -----
3906 jobs.c
3907         - wait_for_any_job: new function, waits for an unspecified background
3908           job to exit and returns its exit status.  Returns -1 on no background
3909           jobs or no children or other errors.  Calls wait_for with new
3910           sentinel value ANY_PID
3911         - wait_for: changes to handle argument of ANY_PID: don't look up or
3912           try to modify the child struct, only go through the wait loop once.
3913           Return -1 if waitpid returns no children
3914
3915 jobs.h
3916         - ANY_PID: new define
3917
3918 builtins/wait.def
3919         - new option: -n. Means to wait for the next job and return its exit
3920           status.  Returns 127 if there are no background jobs (or no
3921           children).  Feature most recently requested by Elliott Forney
3922           <idfah@cs.colostate.edu>
3923
3924 doc/{bash.1,bashref.texi}
3925         - document new `wait -n' option
3926
3927 execute_cmd.c
3928         - execute_command_internal: save make_command_string () result in a
3929           temp variable before calling savestring() on it; avoids evaluating
3930           make_command_string() result twice.  Fix from John E. Malmberg
3931           <wb8tyw@qsl.net>
3932
3933                                    11/28
3934                                    -----
3935
3936 builtins/declare.def
3937         - declare_internal: if an array variable is declared using `declare -a'
3938           or `declare -A', but not assigned a value, set the `invisible'
3939           attribute so the variable does not show up as set.  Fix for bug
3940           about variable initialization reported by Tim Friske <me@timfriske.com>
3941
3942 builtins/{mapfile,read}.def
3943         - after calling find_or_make_array_variable, make sure the invisible
3944           flag is turned off, in case the variable was declared previously
3945           using `declare -a' or `declare -A'.  Side effect of above change to
3946           declare_internal
3947
3948 subst.c
3949         - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into
3950           the list of options passed to make_internal_declare as appropriate.
3951           Fix for bug reported by Tim Friske <me@timfriske.com>
3952
3953                                    11/30
3954                                    -----
3955 test.c
3956         - unary_op: make sure -v and -n check that the variable is not marked
3957           as invisible before calling var_isset.  Fix for bug reported by Tim
3958           Friske <me@timfriske.com>
3959
3960                                    12/2
3961                                    ----
3962 subst.c
3963         - process_substitute: turn off the `expanding_redir' flag, which
3964           controls whether or not variables.c:find_variable_internal uses the
3965           temporary environment to find variables.  We want to use the
3966           temp environment, since we don't have to worry about order of
3967           evaluation in a subshell.  Fixes bug reported by Andrey Borzenkov
3968           <arvidjaar@gmail.com>
3969
3970                                    12/4
3971                                    ----
3972 lib/glob/glob.c
3973         - glob_filename: changes to avoid null filenames and multiple entries
3974           returned for patterns like **/** (globstar enabled).  Fixes bug
3975           reported by Ulf Magnusson <ulfalizer@gmail.com>
3976
3977                                    12/10
3978                                    -----
3979 lib/glob/glob.c
3980         - glob_filename: finish up a series of changes to make globstar-style   
3981           globbing more efficient, avoid more duplicate filenames, and be more
3982           compatible with other shells that implement it
3983                 o collapse a sequence of **/**/** to one **
3984                 o note when the directory name is all ** or ends in ** so we
3985                   can treat it specially when the filename is **
3986           All inspired by report from Andrey Borzenkov <arvidjaar@gmail.com>
3987
3988 lib/sh/zread.c
3989         - zreadn: new function, like zread, but takes an additional argument
3990           saying how many bytes to read into the local buffer.  Can be used to
3991           implement `read -N' without so many one-byte calls to zreadc.  Code
3992           from Mike Frysinger <vapier@gentoo.org>
3993
3994                                    12/12
3995                                    -----
3996 lib/glob/sm_loop.c
3997         - PATSCAN (glob_patscan): if passed string already points to end of
3998           pattern, return NULL immediately.  Fixes problem with
3999           extglob_skipname reported by Raphaël Droz <raphael.droz@gmail.com>
4000
4001                                    12/13
4002                                    -----
4003 execute_cmd.c
4004         - execute_coproc: handle the command's exit status being inverted
4005           (an oversight).  Fixes bug reported by DJ Mills
4006           <danielmills1@gmail.com> and Andreas Schwab <schwab@linux-m68k.org>
4007
4008                                    12/14
4009                                    -----
4010 lib/readline/readline.c
4011         - bind_arrow_keys_internal: add MINGW key bindings for Home, End,
4012           Delete, and Insert keys.  Fix from Pierre Muller
4013           <pierre.muller@ics-cnrs.unistra.fr>
4014
4015 builtins/printf.def
4016         - printf_builtin: '%()T' conversion: if there is no argument supplied,
4017           behave as if -1 had been supplied (current time).  ksh93-like feature
4018           suggested by Clark Wang <dearvoid@gmail.com>
4019
4020 doc/{bash.1,bashref.texi}
4021         - document new printf %()T default argument behavior
4022
4023                                    12/15
4024                                    -----
4025 lib/readline/display.c
4026         - displaying_prompt_first_line: new variable, indicates whether or
4027           not the first line of output is displaying the prompt.  Always true
4028           in normal mode, sometimes false in horizontal scrolling mode
4029         - rl_redisplay: set displaying_prompt_first_line to true unless we
4030           are in horizontal mode; set to false in horizontal mode if the left
4031           margin of the displayed line is greater than the end of the prompt
4032           string
4033         - rl_redisplay: when in horizontal scroll mode, don't adjust
4034           _rl_last_c_pos by the wrap offset unless the line is displaying
4035           a prompt containing invisible chars
4036         - update line: don't adjust _rl_last_c_pos by the wrap offset unless
4037           the line is displaying a prompt containing invisible chars
4038         - update_line: if shrinking the line by reducing the number of
4039           displayed characters, but we have already moved the cursor to the
4040           beginning of the line where the first difference starts, don't
4041           try to delete characters
4042
4043 builtins/read.def
4044         - unbuffered_read: set to 2 if invoked as `read -N'
4045         - if unbuffered_read is set to 2, compute the number of chars we
4046           need to read and read that many with zreadn.  Posix mode still
4047           uses zreadintr.  Code from Mike Frysinger <vapier@gentoo.org>
4048
4049 doc/{bash.1,bashref.texi}
4050         - read: make it clear that if read times out, it saves any input
4051           read to that point into the variable arguments.  Report from
4052           Fiedler Roman <Roman.Fiedler@ait.ac.at>
4053
4054 subst.c
4055         - command_substitute: change direct assignment of exit_immediately_on_error
4056           to use change_flag ('e', FLAG_OFF) instead
4057
4058 flags.c
4059         - use errexit_flag as the variable modified by changes to the -e
4060           option, reflect those changes to exit_immediately_on_error
4061
4062 execute_cmd.c
4063         - execute_builtin: new global variable, builtin_ignoring_errexit, set
4064           to 0 by default and set to 1 if eval/source/command executing in a
4065           context where -e should be ignored
4066         - execute_builtin: set exit_immediately_on_error to errextit_flag
4067           after executing eval/source/command in a context where -e should
4068           be ignored
4069
4070 flags.c
4071         - if builtin_ignoring_errexit is set, changes to errexit_flag are
4072           not reflected in the setting of exit_immediately_on_error.  Fixes
4073           bug reported by Robert Schiele <rschiele@gmail.com>
4074
4075                                    12/23
4076                                    -----
4077 include/posixjmp.h
4078         - setjmp_nosigs: new define, call setjmp in such a way that it will
4079           not manipulate the signal mask
4080
4081 {expr,test,trap}.c
4082         - setjmp_nosigs: call instead of setjmp; don't need to manipulate
4083           signal mask
4084
4085 builtins/read.def
4086         - read_builtin: setjmp_nosigs: call instead of setjmp; don't need
4087           to manipulate signal mask
4088
4089 builtins/evalstring.c:
4090         - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need
4091           to manipulate signal mask
4092         - parse_string: setjmp_nosigs: call instead of setjmp; don't need
4093           to manipulate signal mask
4094         - parse_and_execute: save and restore the signal mask if we get a
4095           longjmp that doesn't cause us to return or exit (case DISCARD)
4096
4097                                    12/24
4098                                    -----
4099 general.c
4100         - bash_tilde_expand: only set interrupt_immediately if there are no
4101           signals trapped; we want to jump to top level if interrupted but
4102           not run any trap commands
4103
4104                                    12/25
4105                                    -----
4106 jobs.c
4107         - run_sigchld_trap: no longer set interrupt_immediately before calling
4108           parse_and_execute, even if this is no longer run in a signal handler
4109           context
4110
4111 input.c
4112         - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG
4113
4114 parse.y
4115         - yy_stream_get: now that getc_with_restart calls QUIT, don't need to
4116           set interrupt_immediately (already had call to run_pending_traps)
4117
4118 execute_cmd.c
4119         - execute_subshell_builtin_or_function,execute_function,execute_in_subshell:
4120           setjmp_nosigs: call instead of setjmp when saving return_catch; don't
4121           need to manipulate signal mask
4122         - execute_subshell_builtin_or_function,execute_in_subshell:
4123           setjmp_nosigs: call instead of setjmp where appropriate when saving
4124           top_level; don't need to manipulate signal mask if we're going to
4125           exit right away
4126
4127 subst.c
4128         - command_substitute: setjmp_nosigs: call instead of setjmp when saving
4129           return_catch; don't need to manipulate signal mask
4130         - command_substitute: setjmp_nosigs: call instead of setjmp where
4131           appropriate when saving top_level; don't need to manipulate signal
4132           mask if we're going to exit right away
4133
4134 trap.c
4135         - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving
4136           return_catch; don't need to manipulate signal mask
4137         - run_exit_trap: setjmp_nosigs: call instead of setjmp where
4138           appropriate when saving top_level; don't need to manipulate signal
4139           mask if we're going to exit right away
4140         - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving
4141           return_catch; don't need to manipulate signal mask
4142
4143 builtins/evalfile.c
4144         - _evalfile: setjmp_nosigs: call instead of setjmp when saving
4145           return_catch; don't need to manipulate signal mask
4146
4147 builtins/evalstring.c
4148         - evalstring: setjmp_nosigs: call instead of setjmp when saving
4149           return_catch; don't need to manipulate signal mask
4150
4151 shell.c
4152         - main: setjmp_nosigs: call instead of setjmp where appropriate when
4153           saving top_level; don't need to manipulate signal mask if we're
4154           going to exit right away
4155         - run_one_command: setjmp_nosigs: call instead of setjmp where
4156           appropriate when saving top_level; don't need to manipulate signal
4157           mask if we're going to exit right away
4158         - run_wordexp: setjmp_nosigs: call instead of setjmp where
4159           appropriate when saving top_level; don't need to manipulate signal
4160           mask if we're going to exit right away
4161
4162 eval.c
4163         - reader_loop: save and restore the signal mask if we get a longjmp
4164           that doesn't cause us to return or exit (case DISCARD)
4165
4166                                    12/26
4167                                    -----
4168 parse.y
4169         - shell_input_line_{index,size,len}: now of type size_t; in some cases
4170           the unsigned property makes a difference
4171         - STRING_SAVER: saved_line_{size,index} now of type size_t
4172         - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX;
4173           lines longer than that are truncated until read sees a newline;
4174           addresses theoretical buffer overflow described by Paul Eggert
4175           <eggert@cs.ucla.edu>
4176         - set_line_mbstate: size_t changes like shell_getc
4177         - shell_getc: if shell_input_line is larger than 32K, free it and
4178           start over to avoid large memory allocations sticking around
4179
4180 variables.c
4181         - bind_global_variable: new function, binds value to a variable in
4182           the global shell_variables table
4183
4184 variables.h
4185         - bind_global_variable: new extern declaration
4186
4187 builtins/declare.def
4188         - declare_internal: if -g given with name=value, but variable is not
4189           found in the global variable table, make sure to call
4190           bind_global_variable so the variable is created and modified at
4191           global scope.  Fixes a bug where declare -g x=y could modify `x'
4192           at a previous function scope
4193
4194 command.h
4195         - W_ASSIGNARRAY: new word flag, compound indexed array assignment
4196
4197 subst.h
4198         - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in
4199           a function context, used by declare -g
4200
4201 execute_cmd.c
4202         - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to
4203           declaration builtin
4204
4205 subst.c
4206         - do_assignment_internal: explicitly handle case where we are
4207           executing in a function and we want to create a global array or
4208           assoc variable
4209         - shell_expand_word_list: call make_internal_declare if -a option
4210           given to declaration builtin (W_ASSIGNARRAY); handle -g option with
4211           it (W_ASSNGLOBAL).  Fixes inconsistency noticed by Vicente Couce
4212           Diaz <vituko@gmail.com>, where declare -ag foo=(bar) could modify
4213           array variable foo at previous function scope, not global scope
4214
4215                                    12/27
4216                                    -----
4217 bashline.c
4218         - Minix needs the third argument to tputs to be a void funtion taking
4219           an int argument, not an int-returning function.  Fix from
4220           John E. Malmberg <wb8tyw@qsl.net> as part of VMS bash port
4221
4222                                    12/29
4223                                    -----
4224 configure.ac,version.c,patchlevel.h
4225         - bash-4.3-devel: new version, new shell compatibility level (43)
4226
4227 subst.c
4228         - parameter_brace_patsub: put the bash-4.2 code back in from the
4229           change of 3/3 that runs the replacement string through quote
4230           removal, make it dependent on shell_compatibility_level <= 42
4231
4232 builtins/shopt.def
4233         - compat42: new shopt option
4234         - set_compatibility_level: change logic to set and unset various
4235           compat variables and shell_compatibility_level
4236
4237 COMPAT
4238         - new documentation for bash-4.3 compatibility changes
4239
4240 doc/{bash.1,bashref.texi}
4241         - compat42: document new shopt option
4242
4243 builtins/shopt.def
4244         - set_compatibility_opts: new function, sets the various shopt
4245           compat variables based on the value of shell_compatibility_level
4246
4247 builtins/common.h
4248         - set_compatibility_opts: new extern declaration
4249
4250 variables.c
4251         - BASH_COMPAT: new special variable; sets the shell compatibility
4252           level.  Accepts values in decimal (4.2) or integer (42) form;
4253           Unsetting variable, setting it to empty string, or setting it to
4254           out-of-range value sets the shell's compatibility level to the
4255           default for the current version.  Valid values are 3.1/31 through
4256           the current version
4257         - sv_shcompat: new function implementing logic for BASH_COMPAT
4258
4259 variables.h
4260         - sv_shcompat: new extern declaration
4261
4262 doc/{bash.1,bashref.texi}
4263         - BASH_COMPAT: description of new variable
4264
4265 lib/readline/complete.c
4266         - _rl_colored_stats: default back to 0 for 4.3 release branch
4267
4268                                  1/5/2013
4269                                  --------
4270 quit.h
4271         - remove spurious call to itrace in CHECK_WAIT_INTR
4272
4273 bashline.c
4274         - bash_event_hook: if we're going to jump to top_level, make sure we
4275           clean up after readline() by calling rl_cleanup_after_signal().
4276           Fixes bug reported against devel branch by Raphaël Droz
4277           <raphael.droz@gmail.com>
4278         - bash_event_hook: reset the event hook before checking for signals
4279           or traps in case we longjmp
4280
4281 doc/{bash.1,bashref.texi}
4282         - small additions to the set -e section to make it more clear that
4283           contexts where -e is ignored extend to compound commands as well
4284           as shell functions
4285
4286 lib/readline/readline.h
4287         - rl_signal_event_hook: new extern declaration
4288
4289 lib/readline/input.c
4290         - rl_signal_event_hook: new variable, hook function to call when a
4291           function (currently just read(2)) is interrupted by a signal and
4292           not restarted
4293         - rl_getc: call rl_signal_event_hook instead of rl_event_hook
4294
4295 lib/readline/doc/rltech.texi
4296         - rl_signal_event_hook: document new function
4297
4298 bashline.c
4299         - changes to set rl_signal_event_hook instead of rl_event_hook
4300
4301 lib/readline/readline.h
4302         - change readline version numbers to 6.3
4303
4304                                     1/6
4305                                     ---
4306 doc/{bash.1,bashref.texi}
4307         - a couple of changes to the descriptions of the ERR trap and its
4308           effects based on a message from Rob Nagler <nagler@bivio.biz>
4309
4310                                     1/9
4311                                     ---
4312 expr.c
4313         - expassign: invalidate curlval before freeing and NULLing tokstr to
4314           avoid aliasing issues.  Fixes bug reported by Eduardo A. Bustamante
4315           López<dualbus@gmail.com>  and Dan Douglas <ormaaj@gmail.com>
4316
4317 braces.c
4318         - array_concat: don't be so aggressive in trying to short-circuit. We
4319           can only short-circuit if we have a single-element array where the
4320           element is an empty string (array[0] == "" array[1] = 0x0).  Existing
4321           practice requires us to replicate arrays and prefix or append empty
4322           strings.  Fixes bug reported by Eduardo A. Bustamante López
4323           <dualbus@gmail.com>
4324
4325                                    1/11
4326                                    ----
4327 execute_cmd.c
4328         - execute_builtin: since mapfile uses evalstring() to run its callbacks
4329           internally, just like eval, so it needs to handle the case where the
4330           temp environment given to mapfile persists throughout the entire
4331           set of callback commands.  This might be a problem with trap also, but
4332           trap isn't run in the same way.  Fixes bug reported by Dan Douglas
4333           <ormaaj@gmail.com>
4334
4335                                    1/13
4336                                    ----
4337 redir.c
4338         - redirection_error: before expanding the redirection word (if
4339           expandable_redirection_filename returns true), disable command
4340           substitution during expansion.  Fixes bug reported by Dan Douglas
4341           <ormaaj@gmail.com>
4342
4343 subst.c
4344         - expand_word_internal: case '\\': if the next character is an IFS
4345           character, and the expansion occurs within double quotes, and the
4346           character is not one for which backslash retains its meaning, add
4347           the (escaped) '\' and the (escaped) character.  Fixes bug reported
4348           by Dan Douglas <ormaaj@gmail.com>
4349
4350                                    1/15
4351                                    ----
4352 builtins/cd.def
4353         - cd_builtin: make sure call to internal_getopt handles -e option.
4354           Fixes bug reported by <mashimiao.fnst@cn.fujitsu.com>
4355
4356                                    1/17
4357                                    ----
4358 subst.c
4359         - expand_word_list_internal: make sure tempenv_assign_error is
4360           initialized to 0
4361
4362 execute_cmd.c
4363         - execute_simple_command: make sure tempenv_assign_error is reset to 0
4364           after it's tested to see if an error should force the shell to exit.
4365           Fixes problem where a the failure of a tempenv assignment preceding
4366           a non-special builtin `sticks' and causes the next special builtin
4367           to exit the shell.  From a discussion on bug-bash started by
4368           douxin <wq-doux@cn.fujitsu.com>
4369
4370                                    1/20
4371                                    ----
4372 subst.c
4373         - parameter_brace_expand_rhs: call stupidly_hack_special_variables
4374           after assigning with ${param[:]=word} even if IFS is changing.
4375           Suggested by Dan Douglas <ormaaj@gmail.com> [TENTATIVE, needs work
4376           on IFS side effects]
4377
4378 command.h
4379         - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used
4380           yet)
4381
4382 {execute_cmd,subst,variables}.c
4383         - removed all code that mentioned W_GLOBEXP
4384         - removed mention of gnu_argv_flags and code that set it
4385
4386                                    1/22
4387                                    ----
4388 subst.c
4389         - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and
4390           IFS is unset or null so we can be sure to split this on spaces
4391           no matter what happens with IFS later
4392         - expand_word_internal: note that param_expand returns W_SPLITSPACE
4393           in the returned word flags and keep track of that state with
4394           `split_on_spaces'
4395
4396                                    1/23
4397                                    ----
4398 subst.c
4399         - expand_word_internal: if split_on_spaces is non-zero, make sure
4400           we split `istring' on spaces and return the resultant word.  The
4401           previous expansions should have quoted spaces in the positional
4402           parameters where necessary.  Suggested by Dan Douglas
4403           <ormaaj@gmail.com>
4404
4405 execute_cmd.c
4406         - execute_command_internal: make sure any subshell forked to run a
4407           group command or user subshell at the end of a pipeline runs any
4408           EXIT trap it sets.  Fixes debian bash bug 698411
4409           http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698411
4410
4411 subst.c
4412         - shell_expand_word_list: fix code that creates args for and calls
4413           make_internal_declare to avoid calling it twice (missing `else'
4414           in 12/26 change)
4415         - do_assignment_internal: fix code from 12/26 change to fix problem
4416           where an existing assoc variable could be converted to an array
4417           without checking `mkassoc'
4418
4419                                    1/24
4420                                    ----
4421 builtins/evalfile.c
4422         - _evalfile: add missing `close (fd)' calls before returning to
4423           avoid fd leaks.  Bug and fix from Roman Rakus <rrakus@redhat.com>
4424
4425                                    1/25
4426                                    ----
4427 builtins/read.def
4428         - read_builtin: don't try to play tricks with the top of the unwind-
4429           protect stack after read gets a SIGALRM; save input_string to new
4430           memory, run the stack, then restore input_string and assign the
4431           variables.  Part of fix for bug reported by konsolebox
4432           <konsolebox@gmail.com>; the rest of the fix is with the changes in
4433           trap and signal handling and doing away with interrupt_immediately
4434
4435                                    1/26
4436                                    ----
4437 redir.c
4438         - redirection_expand, write_here_string, write_here_document: before
4439           calling any of the word expansion functions, after setting
4440           expanding_redir to 1 (which bypasses the temp environment in the
4441           variable lookup functions), call sv_ifs to reset the cached IFS-
4442           related variables set by subst.c:setifs().  This ensures that
4443           redirections will not get any IFS values that are set in the
4444           temporary environment, as Posix specifies.  Then, after the word
4445           expansions, after resetting expanding_redir to 0, call sv_ifs
4446           again to make sure the cached IFS values are set from any
4447           assignments in the temporary environment.  We force executing_builtin
4448           to 1 to `fool' the variable lookup functions into using any temp
4449           environment, then reset it to its old value after sv_ifs returns.
4450           This is what allows read() to use the (cached) IFS variables set
4451           in the temp environment. Fixes inconsistency reported by Dan Douglas
4452           <ormaaj@gmail.com>
4453
4454                                    1/29
4455                                    ----
4456 lib/readline/display.c
4457         - update_line: fix off-by-one error when updating vis_lbreaks array
4458           in a multibyte locale that occurs when moving multibyte chars from
4459           one line down to another.  Bug report and fix from Egmont
4460           Koblinger <egmont@gmail.com>
4461
4462                                    1/30
4463                                    ----
4464 configure.ac
4465         - changed version to 4.3-alpha
4466
4467 redir.c
4468         - redir_open: handle open returning -1/EINTR, which seems to happen
4469           a lot with FIFOs and SIGCHLD, and call QUIT to handle other
4470           signals that can interrupt open(2).  Bug report and initial fix
4471           from Mike Frysinger <vapier@gentoo.org>
4472
4473                                    1/31
4474                                    ----
4475 subst.c
4476         - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag
4477           to parameter_brace_expand_word
4478         - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag
4479           is set and we are expanding ${a[@]} or ${a[*]} we set quoted to
4480           include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring
4481           what we do for $@ and $*.  Fixes inconsistency reported by Dan
4482           Douglas <ormaaj@gmail.com>
4483
4484 configure.ac
4485         - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it
4486           will find $host-prefixed versions of utilities.  Report and fix from
4487           Mike Frysinger <vapier@gentoo.org>
4488
4489 builtins/setattr.def
4490         - set_var_attribute: check whether bind_variable (called when the
4491           variable whose attributes are being modified is found in the temp
4492           environment) just modified a read-only global variable, and don't
4493           bother marking the temporary variable for propagation if so.  The
4494           propagation is superfluous and will result in a strange error
4495           message
4496
4497                                     2/2
4498                                     ---
4499 variables.c
4500         - initialize_shell_variables: don't try to import function definitions
4501           with invalid names from the environment if already in posix mode,
4502           but create them as (invisible) exported variables so they pass
4503           through the environment.  Print an error message so user knows
4504           what's wrong.  Fixes bug reported by Tomas Trnka <ttrnka@mail.muni.cz>
4505
4506                                     2/9
4507                                     ---
4508
4509 builtins/read.def
4510         - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c)
4511           can use them
4512         - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was
4513           longjmp without manipulating signal mask, leaving SIGALRM blocked
4514
4515 quit.h
4516         - move CHECK_ALRM macro here from builtins/read.def so trap.c:
4517           check_signals() can call it
4518
4519 trap.c
4520         - check_signals: add call to CHECK_ALRM before QUIT
4521         - check_signals_and_traps: call check_signals() instead of including
4522           CHECK_ALRM and QUIT inline.  Integrating check for read builtin's
4523           SIGALRM (where zread call to check_signals_and_traps can see it)
4524           fixes problem reported by Mike Frysinger <vapier@gentoo.org>
4525
4526                                    2/12
4527                                    ----
4528 lib/glob/xmbsrtowcs.c
4529         - xdupmbstowcs2: fixed but where end of string was not handled
4530           correctly, causing loop to go past end of string in a bunch of cases.
4531           Fixes bug reported by "Dashing" <dashing@hushmail.com>
4532
4533
4534                                    2/13
4535                                    ----
4536 builtins/pushd.def
4537         - popd_builtin: treat any argument that isn't -n or of the form
4538           [-+][[:digit:]]* as an error.  Fixes problem reported by Bruce
4539           Korb <bruce.korb@gmail.com>
4540
4541                                    2/14
4542                                    ----
4543 configure.ac
4544         - add check for sig_atomic_t; already a placeholder for it in
4545           config.h.in
4546
4547                                    2/15
4548                                    ----
4549 subst.c
4550         - do_compound_assignment: don't call assign_compound_array_list with
4551           a NULL variable in case make_local_xxx_variable returns NULL
4552           (it will if you try to shadow a readonly or noassign variable).
4553           Fixes bug reported by Richard Tollerton <rich.tollerton@ni.com>
4554
4555                                    2/16
4556                                    ----
4557 variables.c
4558         - make_local_variable: print error messager if an attempt is made to
4559           create a local variable shadowing a `noassign' variable.  Previously
4560           we just silently refused to do it
4561
4562 trap.[ch]
4563         - get_original_signal: now global so rest of the shell can use it
4564
4565 sig.c
4566         - initialize_shell_signals: install a signal handler for SIGTERM
4567           that does nothing except set a sigterm_received flag instead of
4568           ignoring it with SIG_IGN, as long as SIGTERM is not ignored when
4569           the shell is started.  Use get_original_signal early to get the
4570           original handler, since we will do that later anyway
4571         - set_signal_handler: if installing sigterm_sighandler as the SIGTERM
4572           handler, make sure to add SA_RESTART flag to make it as close to
4573           SIG_IGN as possible
4574
4575 sig.h
4576         - sigterm_sighandler: new extern declaration
4577
4578 quit.h
4579         - RESET_SIGTERM: set sigterm_receved to 0
4580         - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it
4581           as a fatal signal and call termsig_handler to exit the shell
4582
4583 jobs.c
4584         - make_child: call RESET_SIGTERM just before fork() so we can detect
4585           if the child process received a SIGTERM before it's able to change
4586           the signal handler back to what it was when the shell started
4587           (presumably SIG_DFL).  Only has effect if the shell installed
4588           sigterm_sighandler for SIGTERM, interactive shells that were not
4589           started with SIG_IGN as the SIGTERM handler
4590         - make_child: call RESET_SIGTERM in the parent after fork() so the
4591           rest of the shell won't react to it
4592
4593 execute_cmd.c
4594         - execute_simple_command: call CHECK_SIGTERM after make_child in child
4595           to catch SIGTERM received after fork() and before restoring old
4596           signal handlers
4597         - execute_disk_command: call CHECK_SIGTERM after make_child in child
4598           process after restoring old signal handlers and again just before
4599           calling shell_execve.  Fixes race condition observed by
4600           Padraig Brady <p@draigbrady.com> when testing with his `timeout'
4601           program
4602
4603 lib/readline/display.c
4604         - open_some_spaces: new function, subset of insert_some_chars that just
4605           opens up a specified number of spaces to be overwritten
4606         - insert_some_spaces: now just calls to open_some_spaces followed by
4607           _rl_output_some_chars
4608         - update_line: use col_temp instead of recalculating it using
4609           _rl_col_width in the case where we use more columns with fewer bytes
4610         - update_line: use open_some_spaces and then output the right number
4611           of chars instead of trying to print new characters then overwrite
4612           existing characters in two separate calls.  This includes removing
4613           some dodgy code and making things simpler.  Fix from Egmont
4614           Koblinger <egmont@gmail.com>
4615         - use new variable `bytes_to_insert' instead of overloading temp in
4616           some code blocks (nls - nfd, bytes that comprise the characters
4617           different in the new line from the old)
4618
4619                                    2/18
4620                                    ----
4621 redir.c
4622         - do_redirection_internal: add undoable redirection for the implicit
4623           close performed by the <&n- and >&n- redirections.  Fixes bug
4624           reported by Stephane Chazelas <stephane.chazelas@gmail.com>
4625
4626                                    2/19
4627                                    ----
4628 sig.c
4629         - termsig_handler: an interactive shell killed by SIGHUP and keeping
4630           command history will try to save the shell history before exiting.
4631           This is an attempt to preserve the save-history-when-the-terminal-
4632           window-is-closed behavior
4633
4634                                    2/21
4635                                    ----
4636 braces.c
4637         - brace_expand: if a sequence expansion fails (e.g. because the
4638           integers overflow), treat that expansion as a simple string, including
4639           the braces, and try to process any remainder of the string.  The
4640           remainder may include brace expansions.  Derived from SuSE bug
4641           804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551)
4642
4643                                    2/23
4644                                    ----
4645 {quit,sig}.h,sig.c
4646         - sigterm_received declaration now in sig.h; type is sig_atomic_t
4647         - sigwinch_received type now sig_atomic_t
4648         - sig.h includes bashtypes.h and <signal.h> if SIG_DFL not defined
4649           (same logic as trap.h) to pick up sig_atomic_t
4650
4651 unwind_prot.c
4652         - include sig.h before quit.h (reverse order)
4653
4654                                    2/27
4655                                    ----
4656 builtins/shopt.def
4657         - reset_shopt_options: make sure check_window_size is reset to the
4658           default from config.h, not unconditionally to 0
4659
4660 jobs.[ch]
4661         - last_made_pid, last_asynchronous_pid: now volatile.  Change from SuSE
4662
4663 jobs.c
4664         - wait_for: if we're using sigaction to install a handler for SIGCHLD,
4665           make sure we specify SA_RESTART
4666
4667 lib/{tilde,readline}/shell.c
4668         - get_home_dir: instead of looking in the password file every time,
4669           look once and cache the result
4670
4671 sig.[ch]
4672         - sigwinch_received, sigterm_received: now `volatile' qualified
4673
4674 sig.c,quit.h
4675         - interrupt_state,terminating_signal: now sig_atomic_t
4676
4677                                     3/1
4678                                     ---
4679 MANIFEST,examples/*
4680         - removed around 120 files without FSF copyrights; requested by
4681           Karl Berry in early January
4682
4683                                     3/2
4684                                     ---
4685 lib/malloc/malloc.c
4686         - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined
4687
4688 doc/bashref.texi
4689         - Fixed most of the examples in the GNU Parallel section to use better
4690           shell idioms following complaints on bug-bash; added a couple of
4691           examples and smoothed out the text
4692
4693 quit.h
4694         - include "sig.h" for sig_atomic_t
4695
4696 lib/readline/display.c
4697         - update_line: when inserting one or more characters at the end of
4698           the display line in a non-multibyte environment, just write from the
4699           first difference to the end of the line and return. We don't have
4700           to adjust _rl_last_c_pos.  This is needed to adjust from the old
4701           two-part copy to a single call to _rl_output_some_chars (change of
4702           2/16)
4703
4704                                     3/4
4705                                     ---
4706 Makefile.in,doc/Makefile.in
4707         - PACKAGE_TARNAME, docdir: new variables substituted by autoconf
4708         - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary
4709           documentation files to be installed into $(docdir)
4710         - install: add new rule to install $(OTHER_DOCS)
4711         - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS)
4712
4713 doc/bash.1
4714         - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that
4715           section in --posix and set -o posix descriptions
4716
4717 examples/
4718         - removed around 110 examples at the request of the FSF due to copyright
4719           issues
4720
4721                                     3/5
4722                                     ---
4723 builtins/setattr.def
4724         - readonly: modified help text slightly to make it clearer that
4725           functions aren't changed or displayed unless the -f option is given.
4726           Report from <gotmynick@gmail.com>
4727
4728                                     3/9
4729                                     ---
4730 include/typemax.h
4731         - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined
4732
4733 parse.y
4734         - include "typemax.h" for possible SIZE_MAX definition, make sure we
4735           include it after shell.h
4736
4737 {braces,expr}.c
4738         - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions
4739
4740                                    3/10
4741                                    ----
4742 bashline.c
4743         - bash_default_completion: make sure completion type of `!' (same as
4744           TAB but with show-all-if-ambiguous set) and glob-word-completion
4745           sets rl_filename_completion_desired to 0 so extra backslashes don't
4746           get inserted by `quoting' the completion.  We can't kill all the
4747           matches because show-all-if-ambiguous needs them.   Bug report from
4748           Marcel (Felix) Giannelia <info@skeena.net>
4749
4750 [bash-4.3-alpha frozen]
4751
4752                                    3/14
4753                                    ----
4754 general.c
4755         - trim_pathname: use memmove instead of memcpy since the source and
4756           destination pathnames may overlap.  Report and fix from Matthew
4757           Riley <mattdr@google.com>
4758
4759                                    3/18
4760                                    ----
4761 configure.ac
4762         - socklen_t is defined as `unsigned int' if configure can't find it
4763
4764                                    3/20
4765                                    ----
4766 lib/readline/complete.c
4767         - S_ISVTX: since it's not defined on all platforms (Minix), make sure
4768           its use is protected with #ifdef
4769
4770                                    3/21
4771                                    ----
4772 doc/{bash.1,bashref.texi}
4773         - Added mention of ${!name[@]} and ${!name[*]} expansions to get all
4774           indices of an array.  Suggested by Jonathan Leffler
4775           <jonathan.leffler@gmail.com>
4776
4777                                    3/24
4778                                    ----
4779 subst.h
4780         - SD_IGNOREQUOTE: new define for skip_to_delim; if set, means that
4781           single quotes (for now) will be treated as ordinary characters
4782
4783 subst.c
4784         - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now
4785
4786                                    3/25
4787                                    ----
4788 support/config.{guess,sub}
4789         - updated to versions from autoconf-2.69
4790
4791                                    3/31
4792                                    ----
4793 lib/sh/shquote.c
4794         - sh_single_quote: short-circuit quoting a single "'" instead of
4795           creating a long string with empty single-quoted strings
4796
4797 parser.h
4798         - DOLBRACE_QUOTE2: new define, like DOLBRACE_QUOTE, but need to single-
4799           quote results of $'...' expansion because quote removal will be
4800           done later.  Right now this is only done for ${word/pat/rep}
4801
4802 parse.y
4803         - parse_matched_pair: set state to DOLBRACE_QUOTE2 for pattern
4804           substitution word expansion so we don't treat single quote specially
4805           in the pattern or replacement string
4806         - parse_matched_pair: if we're parsing a dollar-brace word expansion
4807           (${...}) and we're not treating single quote specially within
4808           double quotes, single-quote the translation of $'...' ansi-c
4809           escaped strings.  Original report and fix from Eduardo A.
4810           Bustamante López <dualbus@gmail.com>
4811
4812 subst.c
4813         - extract_dollar_brace_string: ${word/pat/rep} scanning now sets the
4814           DOLBRACE_QUOTE2 flag instead of DOLBRACE_QUOTE so we don't treat
4815           single quotes specially within a double-quoted string
4816
4817 execute_cmd.c
4818         - fix_assignment_words: skip over assignment statements preceding a
4819           command word before trying to figure out whether or not assignment
4820           statements following a possible declaration command should be 
4821           treated specially.  Fixes bug reported by Dan Douglas
4822           <ormaaj@gmail.com>
4823
4824                                     4/4
4825                                     ---
4826 lib/readline/readline.c
4827         - _rl_dispatch_subseq: only call _rl_vi_set_last (and check whether
4828           the key is a text modification command) if the key sequence length
4829           is 1.  That keeps the arrow keys from setting the last command
4830           when called in vi command mode.  Fixes bug reported by Ian A.
4831           Watson <watson_ian_a@lilly.com>
4832
4833                                     4/6
4834                                     ---
4835 lib/readline/bind.c
4836         - rl_parse_and_bind: when parsing a double-quoted string as the value
4837           of a variable, make sure we skip past the leading double quote.
4838           Fix from Andreas Schwab <schwab@linux-m68k.org>
4839
4840 variables.c
4841         - hash_lookup: set new local variable last_table_searched to the table
4842           a successful lookup appears in; tested in make_local_variable to
4843           solve the problem below
4844         - make_local_variable: if we find a variable with the tempenv flag
4845           set at the same `level' as variable_context', but not found in the
4846           temporary_env (temp environment preceding the builtin), return it.
4847           The temp environment preceding the function call has already been
4848           merged (in execute_function) into the list of variable contexts the
4849           function sees as shell_variables by the time this is called.  Fixes
4850           inconsistency pointed out by Dan Douglas <ormaaj@gmail.com>
4851
4852 subst.c
4853         - expand_arith_string: expanded out contents of expand_string,
4854           expand_string_internal, expand_string_if_necessary to create a
4855           WORD_DESC and call call_expand_word_internal() on it directly.
4856           We don't want process substitution to be performed ( 1<(2) ) should
4857           mean something different in an arithmetic expression context.
4858           It doesn't work to just turn on the DQUOTE flag, since that means
4859           that things like ${x["expression"]} are not expanded correctly.
4860           Fixes problem pointed out by Dan Douglas <ormaaj@gmail.com>
4861
4862                                    4/13
4863                                    ----
4864 subst.c
4865         - process_substitute: run the EXIT trap before exiting, as other
4866           shells seem to.  Fixes problem pointed out by Dan Douglas
4867           <ormaaj@gmail.com>
4868
4869 lib/readline/readline.c
4870         - readline_internal_setup: call rl_vi_insertion_mode to enter vi
4871           mode instead of rl_vi_insert_mode to avoid resetting the saved last
4872           command information.  Posix says that `.' can repeat a command
4873           that was entered on a previous line so we need to save the info.
4874           Fixes bug reported by Ian A. Watson <watson_ian_a@lilly.com>
4875
4876                                    4/14
4877                                    ----
4878 lib/readline/complete.c
4879         - rl_completion_matches: make sure xrealloc returns something non-null
4880           (can happen when interrupted by a signal) before trying to add
4881           matches to match_list
4882
4883 subst.c
4884         - array_remove_pattern: return NULL right away if array_variable_part
4885           returns an invisible variable
4886         - array_length_reference: handle array_variable_part returning an
4887           invisible variable
4888         - get_var_and_type: handle array_variable_part returning an invisible
4889           variable
4890
4891                                    4/15
4892                                    ----
4893 execute_cmd.c
4894         - execute_command_internal: make sure to run the EXIT trap for group
4895           commands anywhere in pipelines, not just at the end.  From a point
4896           raised by Andreas Schwab <schwab@linux-m68k.org>
4897
4898 variables.c
4899         - bind_int_variable: make sure invisible flag is unset.  Fixes problems
4900           like "declare -ai a; : $(( a[4]=4 ));"
4901
4902 arrayfunc.c
4903         - array_variable_part: return variable even if invisible flag set,
4904           callers must handle invisible vars
4905
4906                                    4/18
4907                                    ----
4908 builtins/set.def
4909         - unset_builtin: if -n flag given, call unset_nameref instead of
4910           unset_variable
4911
4912 variables.c
4913         - find_variable_nameref: print warning message if nameref circular
4914           reference detected, return NULL and let caller deal with it
4915
4916 builtins/declare.def
4917         - declare_builtin: only disallow global references at this point if
4918           we are at the global scope
4919
4920                                    5/16
4921                                    ----
4922 configure.ac
4923         - update release status to beta
4924
4925                                    5/23
4926                                    ----
4927 trap.c
4928         - run_pending_traps: save and restore pipeline around calls to
4929           evalstring() in case we get a trap while running a trap. Have to
4930           figure out the recursive running traps issue elsewhere.  Fixes
4931           bug reported by Roman Rakus <rrakus@redhat.com>
4932         - run_pending_traps: make sure to set running_trap to the appropriate
4933           signal value when running a trap command
4934         - run_pending_traps: short-circuit immediately if running_trap set
4935           when invoked.  Could change this later to only skip if it would
4936           run the same trap as currently being run (running_trap == sig + 1)
4937
4938 configure.ac
4939         - add warning if bison not found
4940
4941 lib/readline/doc/rltech.texi
4942         - new section with an example program illustrating the callback
4943           interface. Suggested by Peng Yu <pengyu.ut@gmail.com>
4944
4945 examples/loadables/Makefile.in
4946         - remove references to `cut' and `getconf', which were removed in
4947           early March
4948
4949                                    5/28
4950                                    ----
4951 lib/sh/pathphys.c
4952         - sh_realpath: correct inverted two arguments to call to sh_makepath.
4953           Report and fix from Julien Thomas <jthomas@exosec.fr>
4954
4955                                     6/7
4956                                     ---
4957 execute_cmd.c
4958         - executing_line_number: the else clauses that are conditional on
4959           various options being defined can simply be if clauses -- they are
4960           mutually exclusive and all have `return' in the body.  Fixes bug
4961           reported by Flavio Medeiros <flaviomotamedeiros@gmail.com>
4962
4963                                    6/25
4964                                    ----
4965 lib/readline/readline.c
4966         - readline_internal_setup: only sent the meta-key enable string to the
4967           terminal if we've been told to use one and the terminal has been
4968           successfully initialized (RL_ISSTATE (RL_STATE_TERMPREPPED) != 0).
4969           Suggested by Dan Mick <dan.mick@inktank.com>
4970
4971 lib/readline/signals.c
4972         - _rl_signal_handler: call any defined signal hook after calling
4973           rl_resize_terminal when handling a SIGWINCH.  We already have called
4974           the original SIGWINCH handler but will not be resending the signal
4975           to ourselves
4976
4977                                    6/27
4978                                    ----
4979 lib/readline/doc/history.3, doc/bash.1
4980         - fix description of the `$' modifier to note that it expands to the
4981           last *word*, which is not always the last argument.  Report from
4982           ariyetz@gmail.com via gnu.org RT
4983
4984                                    6/29
4985                                    ----
4986 lib/glob/smatch.c
4987         - glob_asciiranges: initialize to value of GLOBASCII_DEFAULT instead
4988           of 0 (0 if not defined)
4989
4990 configure.ac,config.h.in
4991         - --enable-glob-asciiranges-default: new option, controls the value of
4992           GLOBASCII_DEFAULT; use it to turn globasciiranges shopt option on
4993           by default
4994
4995 doc/bashref.texi
4996         - document new --enable-glob-asciiranges-default configure option
4997
4998 variables.c
4999         - assign_in_env: implement += value appending semantics for assignments
5000           preceding command names
5001
5002                                     7/4
5003                                     ---
5004 expr.c
5005         - set lasttok = NUM in all of the functions that result in a number,
5006           even if it's a boolean, to avoid errors with constructs like
5007           1 * x = 1, which should be an asignment error.  Fixes problem
5008           pointed out by Dan Douglas <ormaaj@gmail.com>
5009
5010 parse.y
5011         - decode_prompt_string: don't bother to call strcpy if
5012           polite_directory_format returns its argument unchanged.  It's not
5013           necessary and Mac OS X 10.9 aborts because of a supposed overlapping
5014           string copy.  Bug and fix from simon@hitzemann.org
5015
5016 subst.c
5017         - parameter_brace_find_indir: new function, code from
5018           parameter_brace_expand_indir that looks up the indirectly-referenced
5019           variable, but does not expand it
5020         - parameter_brace_expand_indir: call parameter_brace_find_indir to
5021           look up indirected variable reference
5022         - get_var_and_type: call parameter_brace_find_indir if it looks like we
5023           are trying to manipulate an indirect variable reference like
5024           ${!b%%foo}.  This makes a difference if !b references an array
5025           variable.  Bug report from Dan Douglas <ormaaj@gmail.com>
5026
5027                                     7/6
5028                                     ---
5029 lib/sh/casemod.c
5030         - sh_modcase: make sure argument passed to is_basic is <= UCHAR_MAX,
5031           since cval can convert something to a wchar_t greater than UCHAR_MAX.
5032           Fixes bug reported by Tomasz Tomasik <scx.mail@gmail.com>
5033
5034                                     7/8
5035                                     ---
5036 lib/readline/history.c
5037         - add_history_time: if history_length == 0, referencing history_length
5038           - 1 will result in an array bounds error, so make history_length be
5039           at least 1 before going on.  Fixes bug reported by Geng Sheng Liu
5040           <gsliu.tju@gmail.com>
5041
5042 builtins/setattr.def
5043         - show_func_attributes: display definition (if NODEFS argument is 0) and
5044           attributes for a particular function; used by `declare -fp name'
5045
5046 builtins/declare.def
5047         - declare_internal: call show_func_attributes if -f supplied with -p.
5048           Fixes inconsistency observed by Linda Walsh <bash@tlinx.org>
5049
5050 builtins/common.h
5051         - new extern declaration for show_func_attributes
5052
5053 builtins/read.def
5054         - read_builtin: check the first supplied variable name for validity
5055           before attempting to read any input, since we know we will have to
5056           at least use that one.  Don't check any other names yet.  Suggested
5057           by jidanni@jidanni.org
5058
5059                                    7/10
5060                                    ----
5061 redir.c
5062         - do_redirection_internal: when closing a file descriptor with
5063           r_close_this ([n]<&-) count close errors as redirection errors if
5064           errno ends up as EIO or ENOSPC.  Originally reported back in April
5065           2012 by Andrey Zaitsev <jstcdr@gmail.com>
5066
5067                                    7/11
5068                                    ----
5069 redir.c
5070         - do_redirection_internal: before calling check_bash_input, make sure
5071           that we don't call check_bash_input for an asynchronous process that
5072           is replacing stdin with something else. The seek backwards affects
5073           the parent process as well, since parents and children share the
5074           file pointer. Fixes problem originally reported in March 2013 by
5075           Martin Jackson <mjackson220.list@gmail.com>
5076
5077                                    7/13
5078                                    ----
5079 doc/{bash.1,bashref.texi}
5080         - slight change to add a description of `shopt -o' suggested by Bruce
5081           Korb <bruce.korb@gmail.com>
5082
5083                                    7/19
5084                                    ----
5085 lib/readline/histfile.c
5086         - history_do_write: if close returns < 0, make sure we restore the
5087           backup history file and return a non-zero value
5088         - history_truncate_file: if write or close return < 0, make sure we
5089           return a non-zero value
5090
5091 [bash-4.3-beta frozen]
5092
5093                                    7/21
5094                                    ----
5095 lib/readline/isearch.c
5096         - rl_display_search: now takes an entire search context flags word as
5097           the second argument, instead of just reverse flag; changed callers
5098         - rl_display_search: if the search has failed, add `failed ' to the
5099           beginning of the search prompt
5100         - _rl_isearch_dispatch: if the search has failed, display the entire
5101           search string with an indication that the search failed but with the
5102           last matching line.  Suggested by jidanni@jidanni.org
5103
5104 command.h
5105         - W_ASSIGNINT: new word flag; used internally for make_internal_declare
5106           and set by fix_assignment_words
5107
5108 execute_cmd.c
5109         - fix_assignment_words: set W_ASSIGNINT if compound assignment and -i
5110           given as option.  We don't do anything with the value yet
5111
5112 subst.c
5113         - shell_expand_word_list: rework the way the option list that is
5114           passed to make_internal_declare is created
5115
5116                                     8/1
5117                                     ---
5118 doc/{bash.1,bashref.texi}
5119         - minor changes to description of $! based on a report from Chris
5120           Down <chris@chrisdown.name>
5121
5122 arrayfunc.c
5123         - assign_array_element_internal: before trying to get an array's max
5124           index to process a negative subscript, make sure the array exists.
5125           Bug report from Geir Hauge <geir.hauge@gmail.com>
5126
5127                                     8/2
5128                                     ---
5129 arrayfunc.c
5130         - assign_array_element_internal: before using array_max_index() when
5131           processing a negative subscript, make sure the variable is an array.
5132           if it's not, use 0 as array_max_index assuming it's a string.
5133           Fixes bug report from Geir Hauge <geir.hauge@gmail.com>
5134
5135                                     8/3
5136                                     ---
5137 Makefile.in
5138         - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by
5139           Curtis Doty <curtis@greenkey.net>
5140
5141                                     8/5
5142                                     ---
5143 lib/glob/sm_loop.c
5144         - strcompare: short-circuit and return FNM_NOMATCH if the lengths of the
5145           pattern and string (pe - p  and se - s, respectively) are not equal
5146         - strcompare: don't bother trying to set *pe or *se to '\0' if that's
5147           what they already are.  Fixes bug reported by Geir Hauge
5148           <geir.hauge@gmail.com>
5149
5150                                     8/6
5151                                     ---
5152 doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi
5153         - minor typo changes from Geir Hauge <geir.hauge@gmail.com>
5154
5155 bultins/help.def
5156         - show_longdoc: avoid trying to translate the empty string because it
5157           often translates to some boilerplate about the project and
5158           translation.  Report and fix from Geir Hauge <geir.hauge@gmail.com>
5159
5160                                     8/8
5161                                     ---
5162 builtins/help.def
5163         - help_builtin: try two passes through the list of help topics for each
5164           argument: one doing exact string matching and one, if the first pass
5165           fails to find a match, doing string prefix matching like previous
5166           versions.  This prevents `help read' from matching both `read' and
5167           `readonly', but allows `help r' to match everything beginning with
5168           `r'.  Inspired by report from Geir Hauge <geir.hauge@gmail.com>
5169
5170                                    8/13
5171                                    ----
5172 builtins/fc.def
5173         - fc_builtin,fc_gethnum: calculate `real' end of the history list and
5174           use it if -0 is specified as the beginning or end of the history
5175           range to list.  Doesn't work for fc -e or fc -s by design.  Feature
5176           requested by Mike Fied <micfied@gmail.com>
5177
5178                                    8/16
5179                                    ----
5180 trap.c
5181         - _run_trap_internal: use {save,restore}_parser_state instead of
5182           {save,restore}_token_state. It's more comprehensive
5183
5184                                    8/23
5185                                    ----
5186 doc/bash.1
5187         - disown: remove repeated text.  Report and fix from Thomas Hood
5188           <jdthood@gmail.com>
5189
5190                                    8/25
5191                                    ----
5192 lib/readline/rltty.c
5193         - set_special_char: fix prototype (last arg is rl_command_func_t *)
5194
5195 sig.c
5196         - set_signal_handler: return oact.sa_handler only if sigaction
5197           succeeds; if it doesn't, return SIG_DFL (reasonable default).  From
5198           https://bugzilla.redhat.com/show_bug.cgi?id=911404
5199
5200 bashline.c
5201         - attempt_shell_completion: fix to skip assignment statements preceding
5202           command name even if there are no programmable completions defined.
5203           From https://bugzilla.redhat.com/show_bug.cgi?id=994659
5204         - attempt_shell_completion: if still completing command word following
5205           assignment statements, do command completion even if programmable
5206           completion defined for partial command name entered so far
5207
5208                                    8/26
5209                                    ----
5210 pcomplete.c
5211         - pcomp_filename_completion_function: make sure rl_filename_dequoting_function
5212           is non-NULL before trying to call it.  Bug and fix from
5213           Andreas Schwab <schwab@linux-m68k.org>
5214
5215 bashline.c
5216         - bash_command_name_stat_hook: if *name is not something we're going
5217           to look up in $PATH (absolute_program(*name) != 0), just call the
5218           usual bash_filename_stat_hook and return those results.  This makes
5219           completions like $PWD/exam[TAB] add a trailing slash
5220
5221                                     9/2
5222                                     ---
5223 builtins/read.def
5224         - read_builtin: before comparing what we read to the delim, make sure
5225           we are not supposed to be ignoring the delimiter (read -N).  We
5226           set the delim to -1, but it's possible to read a character whose
5227           int value ends up being between -1 and -128.  Fixes bug
5228           reported by Stephane Chazelas <stephane.chazelas@gmail.com>
5229
5230 doc/{bash.1,bashref.texi}
5231         - word splitting: crib some language from Posix to make it clear that
5232           characters in IFS are treated as field *terminators*, not field
5233           *separators*.  Addresses issue raised by DJ Mills
5234           <danielmills1@gmail.com>
5235
5236 lib/readline/{util.c,rldefs.h}
5237         - _rl_stricmp,_rl_strnicmp: now take const char * string arguments;
5238           changed prototype declarations
5239
5240                                     9/5
5241                                     ---
5242 doc/{bash.1,bashref.texi}
5243         - [[: modify description of pattern matching to make it clear that the
5244           match is performed as if the extglob option were enabled.  From Red
5245           Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=1002078
5246
5247                                    9/12
5248                                    ----
5249 lib/readline/isearch.c
5250         - _rl_isearch_dispatch: if we read an ESC and it's supposed to
5251           terminate the search, make sure we check for typeahead with
5252           _rl_pushed_input_available, since installing a hook function causes
5253           typeahead to be collected in `ibuffer' (input.c).  If there is any,
5254           make sure we still use the ESC as a prefix character.  Bug and fix
5255           from Mike Miller <mtmiller@ieee.org>
5256
5257                                    9/16
5258                                    ----
5259 builtins/{caller,cd,kill,pushd,wait}.def
5260         - builtin_usage(): make sure call to this sets return status to
5261           EX_USAGE
5262
5263                                    9/18
5264                                    ----
5265 terminal.c
5266         - rl_change_environment: new application-settable variable; if non-
5267           zero (the default), readline will modify LINES and COLUMNS in the
5268           environment when it handles SIGWINCH
5269         - _rl_get_screen_size: if rl_change_environment is non-zero, use setenv
5270           to modify LINES and COLUMNS environment variables
5271
5272 readline.h
5273         - rl_change_environment: new extern declaration for applications
5274
5275                                    9/22
5276                                    ----
5277 configure.ac
5278         - relstatus: bumped version to bash-4.3-beta2
5279
5280                                    9/24
5281                                    ----
5282
5283 lib/readline/readline.c
5284         - bind_arrow_keys_internal: added more key bindings for the numeric key
5285           pad arrow keys on mingw32.  Patch from Pierre Muller
5286           <pierre.muller@ics-cnrs.unistra.fr>
5287
5288                                    10/19
5289                                    -----
5290
5291 bashline.c
5292         - maybe_restore_tilde: version of restore_tilde that honors `direxpand';
5293           calls restore_tilde after saving directory expansion hook if
5294           necessary.  Report from Andreas Schwab <schwab@linux-m68k.org>
5295
5296 builtins/cd.def
5297         - -@: new option, allows cd to use `extended attributes' present in
5298           NFSv4, ZFS; idea taken from ksh93.  Attributes associated with a
5299           file are presented as a directory containing the attributes as
5300           individual files.  Original patch contributed by Cedric Blancher
5301           <cedric.blancher@gmail.com>
5302
5303                                    10/20
5304                                    -----
5305 aclocal.m4
5306         - BASH_CHECK_MULTIBYTE: check for wcwidth being broken with unicode
5307           combining characters needs a value to use when cross-compiling.
5308           Bug report from Bert Sutherland <bertsutherland@gmail.com>
5309
5310 doc/{bash.1,bashref.texi}
5311         - document new -@ option to cd builtin
5312
5313                                    10/28
5314                                    -----
5315 lib/glob/{{gmisc,glob}.c,glob.h}
5316         - extglob_pattern renamed to extglob_pattern_p, declared in glob.h
5317
5318 subst.c
5319         - expand_word_internal: typo fix: case to fix " $@\ " bug in bash-4.2
5320           had a typo (& isexp instead of &&)
5321
5322                                    10/29
5323                                    -----
5324 input.c
5325         - getc_with_restart: make sure local_index and local_bufused are
5326           reset to 0 before returning EOF, in case we are running an interactive
5327           shell without line editing and ignoreeof is set.  Report and fix
5328           from Yong Zhang <yong.zhang@windriver.com>
5329
5330 lib/readline/search.c
5331         - _rl_nsearch_init: take out extra third argument to rl_message; it
5332           only matches prototype (and maybe format) in cases where
5333           PREFER_STDARG and USE_VARARGS are both undefined, which is rare
5334
5335                                    10/31
5336                                    -----
5337 subst.c
5338         - process_substitute: when opening the named pipe in the child, open
5339           without O_NONBLOCK to avoid race conditions.  Happens often on AIX.
5340           Bug report and fix from Michael Haubenwallner
5341           <michael.haubenwallner@salomon.at>
5342
5343 builtins/ulimit.def
5344         - RLIMIT_NTHR: if RLIMIT_PTHREAD is not defined, but RLIMIT_NTHR is,
5345           use RLIMIT_NTHR (NetBSD)
5346
5347                                    11/5
5348                                    ----
5349 locale.c
5350         - set_default_locale_vars,set_locale_var: if TEXTDOMAINDIR has been
5351           set, and default_dir has a non-null value, call bindtextdomain(3)
5352           when TEXTDOMAIN is assigned a value.  Fixes problem reported by
5353           Michael Arlt <qwertologe@googlemail.com>
5354
5355                                    11/6
5356                                    ----
5357 builtins/cd.def
5358         - cdxattr: only create synthetic pathname in `buf' if NDIRP argument
5359           is non-null
5360         - change_to_directory: if we have specified -@ and cdxattr returns
5361           failure, fail immediately.  Fixes bug reported by Joshuah Hurst
5362           <joshhurst@gmail.com>
5363
5364                                    11/12
5365                                    -----
5366 redir.c
5367         - print_redirection: change r_err_and_out (&>) and its append form,
5368           r_append_err_and_out (&>>) cases to separate redirection operator
5369           from filename by a space, in case we have a process substitution.
5370           Fixes bug reported by admn ombres <admn.ombres@gmail.com>
5371
5372                                    11/15
5373                                    -----
5374 execute_cmd.c
5375         - execute_simple_command: don't close process substitution fds until
5376           we are finished executing any current shell function.  Partial fix
5377           for bug reported by John Dawson <john.dawson@gmail.com>
5378
5379 support/shobj-conf
5380         - add support for Darwin 13 (Mac OS X 10.9, Mavericks).  Based on a
5381           report by Ludwig Schwardt <ludwig.schwardt@gmail.com>
5382
5383                                    11/20
5384                                    -----
5385 [bash-4.3-rc1 frozen]
5386
5387                                    11/24
5388                                    -----
5389 builtins/printf.def
5390         - bind_printf_variable: make sure that the variable assigned to is
5391           no longer marked as invisible. Fixes bug reported by NBaH
5392           <nbah@sfr.fr>
5393
5394                                    11/28
5395                                    -----
5396 jobs.c
5397         - delete_old_job: fix off-by-one error in job index in call to
5398           internal_warning. Bug report from Peter Cordes <peter@cordes.ca>
5399
5400                                    11/30
5401                                    -----
5402 doc/bashref.texi
5403         - add string to description of special parameters with name of
5404           special parameter prefixed by a $, so you can search for $#,
5405           for instance
5406
5407                                    12/2
5408                                    ----
5409 lib/readline/{histexpand.c
5410         - get_history_event: account for current_history() possibly returning
5411           NULL. Report and fix from Pankaj Sharma <pankaj.s01@samsung.com>
5412
5413
5414                                    12/11
5415                                    -----
5416
5417 lib/readline/parse-colors.c
5418         - get_funky_string: don't call abort if we see something we can't
5419           parse; just return an error
5420         - _rl_parse_colors: if we encounter an error while parsing $LS_COLORS
5421           we need to leave _rl_color_ext_list as NULL after freeing its
5422           elements, then turn off _rl_colored_stats. Report and fix from Martin
5423           Wesdorp <mwesdorp@casema.nl>
5424
5425                                    12/13
5426                                    -----
5427
5428 lib/readline/parse-colors.c
5429         - _rl_parse_colors: if we encounter an unrecognized prefix, throw an
5430           error but try to recover and go on to the next specification
5431
5432 variables.c
5433         - make_local_variable: for new variables this function creates, set
5434           the att_invisible attribute.  All callers from declare_internal.
5435           Indirectly, this is a fix for bug with `declare -n var; var=foo;'
5436           reported by Pierre Gaston <pierre.gaston@gmail.com>
5437         - bind_variable: if assigning to nameref variable that doesn't have
5438           a value yet (e.g., with `declare -n var; var=foo'), don't try to
5439           use the unset name. Fixes a segfault reported by Pierre Gaston
5440           <pierre.gaston@gmail.com>
5441
5442 execute_cmd.c
5443         - execute_command_internal: make sure last_command_exit_value is set
5444           to 0 after any command executed in the background.  Fixes bug
5445           reported by Martin Kealey <martin@kurahaupo.gen.nz>
5446
5447                                    12/17
5448                                    -----
5449 support/config.{guess,sub}
5450         - updated to latest versions from git
5451
5452                                    12/19
5453                                    -----
5454 parse.y
5455         - struct STRING_SAVER: now has a new `flags' element, to identify the
5456           caller: alias expansion, double-paren parsing, or parse_and_execute
5457         - push_string: now sets flags to PSH_ALIAS if `ap' argument is non-NULL
5458         - push_string: now doesn't attempt to call strlen on a NULL string to
5459           set shell_input_line_size
5460         - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
5461           functions to provide an external interface to push_string and
5462           pop_string; parser_save_alias sets flags element to PSH_SOURCE (could
5463           be renamed PSH_EXTERN someday)
5464         - shell_getc: when yy_getc returns '\0', instead of just testing
5465           whether the pushed_string_list is not-empty before popping it, don't
5466           pop if if the saved string has flags PSH_SOURCE, indicating that
5467           parse_and_execute set it before setting bash_input to the string.
5468           We should continue reading to the end of that string before popping
5469           back to a potential alias. Partial solution for the problem of aliases
5470           with embedded newlines containing `.' commands being executed out of
5471           order reported by Andrew Martin <andrew.martin@gmail.com>
5472         - shell_getc: when yy_getc returns '\0' and there is a saved string of
5473           type PSH_SOURCE, restart the read without popping the string stack
5474           if we have not read to the end of bash_input.location.string.  Rest
5475           of fix for out-of-order execution problem
5476
5477 externs.h
5478         - parser_expanding_alias, parser_save_alias, parser_restore_alias: new
5479           extern function declarations
5480
5481 builtins/evalstring.c
5482         - pe_prologue: if the parser is expanding an alias, make sure to add
5483           an unwind-protect to restore the alias; undoes the work that will be
5484           performed by parse_and_execute/parse_string
5485         - parse_and_execute,parse_string: after calling push_stream to save
5486           bash_input, check whether or not the parser is currently expanding
5487           an alias (parser_expanding_alias() != 0). If it is, we want to save
5488           that string in the pushed_string_list, which we do with
5489           parser_save_alias.
5490
5491                                    12/23
5492                                    -----
5493 execute_cmd.c
5494         - execute_for_command: make sure to set line_number before expanding
5495           the word list, so expansion errors have the right line number.
5496           From a report from Ben Okopnik <ben@okopnik.com>
5497
5498 expr.c
5499         - exp2: save token pointer before calling readtok(), arrange to use
5500           saved token pointer when printing error token on a division by 0
5501           error
5502
5503                                    12/27
5504                                    -----
5505 lib/readline/display.c
5506         - rl_redisplay: when calculating effects of invisible characters in a
5507           prompt that is split across physical screen lines to set the indices
5508           of linebreaks, don't bother testing local_prompt_prefix (line 751).
5509           That prefix doesn't matter when calculating prompt visible and
5510           invisible characters.  Fixes problem reported by Jinesh Choksi
5511           <jinesh@onelittlehope.com>
5512
5513 Makefile.in
5514         - install: make sure to use $(DESTDIR) when installing OTHER_DOCS.
5515           Report and fix from Matthias Klose <doko@debian.org>
5516
5517 doc/texinfo.tex
5518         - updated to version of 2013-09-11
5519
5520                                    12/28
5521                                    -----
5522 lib/readline/undo.c
5523         - rl_do_undo: if we are undoing from a history entry (rl_undo_list ==
5524           current_history()->data), make sure the change to rl_line_buffer is
5525           reflected in the history entry. We use the guts of
5526           rl_maybe_replace_line to do the work.  Fixes problem reported by
5527           gregrwm <backuppc-users@whitleymott.net>
5528
5529                                    12/30
5530                                    -----
5531 sig.c
5532         - sigint_sighandler: if we get a SIGINT (and this signal handler is
5533           installed) while the wait builtin is running, note that we received
5534           it in the same way as jobs.c:wait_sigint_handler and return.  The
5535           various wait_for functions will look for that with CHECK_WAIT_INTR.
5536           This fixes the wait builtin not being interruptible in an interactive
5537           job control shell
5538
5539                                    12/31
5540                                    -----
5541 trap.c
5542         - set_signal_hard_ignored: rename set_signal_ignored to this, since it
5543           both sets original_signals[sig] and sets the HARD_IGNORE flag
5544         - set_signal_ignored: new function, now just sets original_signals[sig]
5545
5546 trap.h
5547         - set_signal_hard_ignored: new external declaration
5548
5549 sig.c
5550         - initialize_terminating_signals: call set_signal_hard_ignored instead
5551           of set_signal_ignored for signals with disposition SIG_IGN when the
5552           shell starts
5553
5554 execute_cmd.c
5555         - setup_async_signals: make sure we get the original dispositions for
5556           SIGINT and SIGQUIT before starting the subshell, and don't call
5557           set_signal_ignored  because that sets original_signals[sig].  If we
5558           don't, subsequent attempts to reset handling using trap will fail
5559           because it thinks the original dispositions were SIG_IGN. Posix
5560           interpretation 751 (http://austingroupbugs.net/view.php?id=751)
5561
5562                                  1/2/2014
5563                                  --------
5564 lib/sh/stringvec.c
5565         - strvec_mcreate, strvec_mresize: versions of create and resize that
5566           use malloc and realloc, respectively, instead of xmalloc/xrealloc
5567
5568 braces.c
5569         - expand_amble,mkseq: use strvec_mcreate/strvec_mresize so we can
5570           catch and handle memory allocation failures instead of aborting
5571           with the xmalloc/xrealloc interface
5572
5573 lib/sh/strdup.c
5574         - strdup replacement function for ancient systems that don't have it
5575
5576 lib/sh/itos.c
5577         - mitos: new function, itos that uses strdup instead of savestring
5578
5579 externs.h
5580         - strvec_mcreate/strvec_mresize: new extern declarations
5581         - mitos: new extern declaration
5582
5583 configure.ac
5584         - bash version moved to 4.3-rc2
5585
5586                                     1/6
5587                                     ---
5588 doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
5589         - separate the description of what happens when readline reads the
5590           tty EOF character from the description of delete-char, leaving a
5591           note in the delete-char description about common binding for ^D.
5592           From suggestion by Parke <parke.nexus@gmail.com>
5593
5594 lib/readline/doc/{version.texi,history.3,*.texi}
5595         - updated email addresses and copyright dates
5596
5597                                     1/7
5598                                     ---
5599 variables.c
5600         - delete_var: new function, just removes a variable from a hash table
5601           and frees it, without doing anything else
5602         - make_variable_value: if we are trying to assign to a nameref variable,
5603           return NULL if the value is null or the empty string or not a valid
5604           identifier
5605
5606 variables.h
5607         - delete_var: new extern declaration
5608
5609 subst.h
5610         - ASS_NAMEREF: new define for assignments, means assigning to a nameref
5611           variable
5612
5613 builtins/declare.def
5614         - declare_internal: if we are creating and assigning to a nameref
5615           variable, make sure the value is a valid variable name (checks done
5616           by make_variable_value via bind_variable_value) and display an
5617           error message, deleting the variable we just created, if it is not.
5618           Fixes bug reported by Peggy Russell <prusselltechgroup@gmail.com>
5619
5620                                     1/9
5621                                     ---
5622 builtins/declare.def
5623         - declare_internal: turning on nameref attribute for an existing
5624           variable turns off -i/-l/-u/-c attributes (essentially the ones
5625           that cause evaluation at assignment time) for ksh93 compat
5626
5627 builtins/setattr.def
5628         - show_name_attributes: if asked to display attributes and values for
5629           a nameref variable, don't follow the nameref chain to the end. More
5630           ksh93 compat
5631
5632                                    1/10
5633                                    ----
5634 trap.c
5635         - _run_trap_internal: use {save,restore}_parser_state instead of
5636           {save,restore}_token_state, like in run_pending_traps(); don't
5637           need to save and restore last_command_exit_value as a result
5638         - _run_trap_internal: call {save,restore}_pipeline like in
5639           run_pending_traps()
5640         - run_pending_traps: since we no longer run traps in a signal handler
5641           context, do not block and unblock the trapped signal while the
5642           trap is executing
5643         - run_pending_traps: allow recursive invocations (basically, running
5644           traps from a trap handler) with only a warning if the shell is
5645           compiled in debug mode.  If a caller doesn't want this to happen,
5646           it should test running_trap > 0. signal_in_progress (sig) only works
5647           for the signals the shell handles specially
5648
5649 bashline.c
5650         - bash_event_hook: make sure we clean up readline if interrupt_state
5651           is set, not only when SIGINT is not trapped.  check_signals_and_traps
5652           will call check_signals, which calls QUIT, which will longjmp back
5653           to top_level, running the interrupt trap along the way.  Fixes the
5654           problem of signal handlers being reset out from under readline, and
5655           not being set properly the next time readline is called, because
5656           signals_set_flag is still set to 1.  XXX - might need to do this
5657           for other signals too?
5658
5659                                    1/11
5660                                    ----
5661 subst.h
5662         - SD_GLOB: new define for skip_to_delim; means we are scanning a
5663           glob pattern.
5664
5665 subst.c
5666         - skip_to_delim: if flags include SD_GLOB, assume we are scanning a
5667           glob pattern.  Currently only used to skip bracket expressions
5668           which may contain one of the delimiters
5669
5670                                    1/12
5671                                    ----
5672 subst.c
5673         - parameter_brace_expand: when expanding $@ as part of substring
5674           expansion, pattern substitution, or case modification, don't turn
5675           on the QUOTED_NULL flag.  The code that constructs the word to be
5676           returned from expand_word_internal expects a different code path
5677           when $@ is being expanded.  Fixes bug reported by Theodoros
5678           V. Kalamatianos <thkala@gmail.com>
5679
5680                                    1/19
5681                                    ----
5682 subst.c
5683         - list_dequote_escapes: new function; analogue of list_quote_escapes
5684
5685 pathexp.c
5686         - quote_string_for_globbing: fix case where unescaped ^A is last char
5687           in string; need to pass it through unaltered instead of turning it
5688           into a bare backslash
5689         - quote_string_for_globbing: when quoting for regexp matching in [[,
5690           don't treat backslash as a quote character; quote the backslash as
5691           any other character.  Part of investigation into reports from
5692           Eduardo A. Bustamante López <dualbus@gmail.com>
5693
5694                                    1/25
5695                                    ----
5696 builtins/gen-helpfiles.c
5697         - write_helpfiles: add prototype
5698         - make sure to #undef xmalloc/xfree/xrealloc/free if USING_BASH_MALLOC
5699           is defined. the code does not use them, and we don't link against
5700           xmalloc.o. Report from Linda Walsh <bash@tlinx.org>
5701
5702 Makefile.in
5703         - variables.o: add dependency on builtins/builtext.h; helps with
5704           parallel builds.  Report from Linda Walsh <bash@tlinx.org>
5705
5706 support/shobj-conf
5707         - darwin: combine the stanzas into one that will not require them to
5708           be updated on each Mac OS X release.  Report and fix from Max Horn
5709           <max@quendi.de>
5710
5711                                    1/27
5712                                    ----
5713 support/shobj-conf
5714         - darwin: changed the install_name embedded into the shared library
5715           to contain only the major version number, not the minor one. The
5716           idea is that the minor versions should all be API/ABI compatible,
5717           and it is better to link automatically with the latest one.  Idea
5718           from Max Horn <max@quendi.de>
5719
5720                                    1/29
5721                                    ----
5722 [bash-4.3-rc2 released]
5723
5724                                    1/30
5725                                    ----
5726 lib/readline/readline.h
5727         - rl_clear_history, rl_free_keymap: add extern declarations.  Report
5728           from Hiroo Hayashi <hiroo.hayashi@computer.org>
5729
5730 general.c
5731         - include trap.h for any_signals_trapped() prototype
5732
5733 lib/sh/unicode.c
5734         - include <stdio.h> for sprintf prototype
5735
5736                                    1/31
5737                                    ----
5738 execute_cmd.c
5739         - execute_simple_command: only posix-mode shells should exit on an
5740           assignment failure in the temporary environment preceding a special
5741           builtin. This is what the documentation and code comments have
5742           always said
5743         - execute_simple_command: make sure redirection errors, word expansion
5744           errors, and assignment errors to Posix special builtins cause a
5745           non-interactive posix mode shell to exit.  Previously the shell
5746           would not exit if the failed special builtin was on the LHS of ||
5747           or &&
5748
5749 pathexp.c
5750         - quote_string_for_globbing: when quoting a regular expression
5751           (QGLOB_REGEXP), allow an unquoted backslash to pass through
5752           unaltered. Don't use it as a quote character or quote it.  More
5753           investigation from 1/24 and report by Mike Frysinger
5754           <vapier@gentoo.org>
5755         - quote_string_for_globbing: when quoting a regular expression
5756           (QGLOB_REGEXP), turn CTLESC CTLESC into CTLESC without adding a
5757           backslash to quote it. We should not have to quote it because it is
5758           not a character special to EREs. More investigation from 1/24
5759
5760 lib/glob/glob.c
5761         - glob_testdir: now takes a second flags argument (currently unused);
5762           changed prototype and callers
5763
5764                                     2/1
5765                                     ---
5766 lib/glob/glob.c
5767         - glob_testdir: if flags argument includes GX_ALLDIRS (globstar), use
5768           lstat so we skip symlinks when traversing the directory tree.
5769           Originally reported by Chris Down <chris@chrisdown.name>
5770
5771                                     2/2
5772                                     ---
5773 lib/readline/undo.c
5774         - rl_do_undo: make sure CUR is non-zero before dereferencing it to
5775           check cur->data against rl_undo_list.  Report and fix from
5776           Andreas Schwab <schwab@linux-m68k.org>
5777
5778 doc/{bash.1,bashref.texi}
5779         - added slight clarifying language to the description of $*,
5780           describing what happens when the expansion is not within double
5781           quotes
5782
5783                                     2/4
5784                                     ---
5785 test.c
5786         - unary_test: add code to -v case so that it interprets `bare' array
5787           references (foo[1]) and returns true if that index has a value
5788
5789                                     2/5
5790                                     ---
5791 trap.c
5792         - restore_default_signal: fix SIGCHLD special case for SIG_TRAPPED flag
5793           off but SIG_INPROGRESS mode set and handler IMPOSSIBLE_TRAP_HANDLER;
5794           continue with resetting handler in this case. maybe_set_sigchld_trap
5795           will check these things before resetting sigchld trap from
5796           run_sigchld_trap.  Fixes (apparently long-standing?) problem reported
5797           by Alexandru Damian <alexandru.damian@intel.com>
5798
5799                                     2/6
5800                                     ---
5801 lib/sh/strtrans.c
5802         - ansic_quote: fixed a bug when copying a printable character that
5803           consumes more than one byte; byte counter was not being incremented.
5804           Bug report from jidanni@jidanni.org
5805
5806                                     2/7
5807                                     ---
5808 input.c
5809         - getc_with_restart: if read(2) returns -1/EINTR and interrupt_state or
5810           terminating_signal is set (which means QUIT; will longjmp out of this
5811           function), make sure the local buffer variables are zeroed out to
5812           avoid reading past the end of the buffer on the next call.  Bug report
5813           from Dan Jacobson <jidanni@jidanni.org>
5814
5815                                     2/9
5816                                     ---
5817 bashline.c
5818         - command_word_completion_function: if a directory in $PATH contains
5819           quote characters, we need to quote them before passing the candidate
5820           path to rl_filename_completion_function, which performs dequoting on
5821           the pathname it's passed.  Fixes bug reported by Ilyushkin Nikita
5822           <ilyushkeane@gmail.com>
5823
5824                                    2/11
5825                                    ----
5826 parse.y
5827         - xparse_dolparen: save and restore shell_eof_token around call to
5828           parse_string, intead of just leaving it set to ')'
5829         - shell_getc: when -v is set, only print the command line when
5830           shell_eof_token is 0, so we don't print it multiple times when
5831           recursively entering the parser to parse $(...) commands.  Fixes
5832           bug reported by Greg Wooledge <wooledg@eeg.ccf.org>
5833
5834 [changed release status to 4.3-release]
5835
5836                                    2/13
5837                                    ----
5838 lib/sh/strtrans.c
5839         - ansic_quote: handle case where mbrtowc reports that the multibyte
5840           sequence is incomplete or invalid.  Fixes bug reported by
5841           Eduardo A. Bustamante López <dualbus@gmail.com>
5842
5843                                    2/14
5844                                    ----
5845 variables.c
5846         - find_variable_nameref_context: fix a problem that caused the loop
5847           to go one context too close to the global context.  In some cases,
5848           simple variable assignment would set a variable in the global
5849           context instead of a local context.  Bug report from
5850           Geir Hauge <geir.hauge@gmail.com>