]> git.ipfire.org Git - thirdparty/bash.git/blob - CWRU/changelog
Bash-4.3 patch 32
[thirdparty/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>