From: Chet Ramey Date: Sun, 4 Dec 2011 03:51:55 +0000 (-0500) Subject: commit bash-20060824 snapshot X-Git-Tag: bash-3.2-beta~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3c50baa89649f556f4fbe4997ab0ef49d305815;p=thirdparty%2Fbash.git commit bash-20060824 snapshot --- diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index da1cb6897..0f27170e6 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -13486,7 +13486,8 @@ print_cmd.c ---- configure.in - set CROSS_COMPILE to the empty string by default, so we don't inherit - a random value from the environment + a random value from the environment. Bug reported by + Lee Revell 6/29 ---- @@ -13525,6 +13526,10 @@ lib/readline/display.c - save and restore local_prompt_len in rl_{save,restore}_prompt [in bash-3.2-alpha] + 7/8 + --- +[bash-3.2-alpha released] + 7/9 --- lib/readline/display.c @@ -13553,7 +13558,8 @@ lib/readline/display.c - in _rl_move_cursor_relative, we can use _rl_term_forward_char to move the cursor forward in a multibyte locale, if it's available. Since that function doesn't have a handle on where the cursor is in - the display buffer, it has to output a cr and print all the data + the display buffer, it has to output a cr and print all the data. + Fixes rest of problem reported by Egmont Koblinger - change variable denoting the position of the cursor in the line buffer from c_pos (variable local to rl_redisplay) to cpos_buffer_position (variable local to file) for future use by other functions @@ -13603,9 +13609,23 @@ lib/readline/readline.c - if rl_read_key returns READERR to readline_internal_char[loop], abort as if it had read EOF on an empty line, without any conversion to newline, which would cause a partial line to be executed. This - fixes the bug reported by mathieu Bonnet + fixes the bug reported by Mathieu Bonnet aclocal.m4 - when testing for validity of /dev/fd/3, use /dev/null instead of standard input, since the standard input fails with linux and `su'. Bug reported by Greg Shafer + + 8/17 + ---- +Makefile.in + - switch the TAGS and tags targets so TAGS is the output of `etags' and + tags is the output of `ctags'. Suggested by Masatake YAMATO + + 8/25 + ---- +execute_cmd.c + - change code to match documentation: set BASH_COMMAND (which takes its + value from the_printed_command_except_trap) only when not running a + trap. Rocky says the debugger is ok with this, and this is what his + original diffs did diff --git a/CWRU/CWRU.chlog~ b/CWRU/CWRU.chlog~ index 8af91ae2b..a5f61fbd9 100644 --- a/CWRU/CWRU.chlog~ +++ b/CWRU/CWRU.chlog~ @@ -13486,7 +13486,8 @@ print_cmd.c ---- configure.in - set CROSS_COMPILE to the empty string by default, so we don't inherit - a random value from the environment + a random value from the environment. Bug reported by + Lee Revell 6/29 ---- @@ -13525,6 +13526,10 @@ lib/readline/display.c - save and restore local_prompt_len in rl_{save,restore}_prompt [in bash-3.2-alpha] + 7/8 + --- +[bash-3.2-alpha released] + 7/9 --- lib/readline/display.c @@ -13553,7 +13558,8 @@ lib/readline/display.c - in _rl_move_cursor_relative, we can use _rl_term_forward_char to move the cursor forward in a multibyte locale, if it's available. Since that function doesn't have a handle on where the cursor is in - the display buffer, it has to output a cr and print all the data + the display buffer, it has to output a cr and print all the data. + Fixes rest of problem reported by Egmont Koblinger - change variable denoting the position of the cursor in the line buffer from c_pos (variable local to rl_redisplay) to cpos_buffer_position (variable local to file) for future use by other functions @@ -13603,9 +13609,15 @@ lib/readline/readline.c - if rl_read_key returns READERR to readline_internal_char[loop], abort as if it had read EOF on an empty line, without any conversion to newline, which would cause a partial line to be executed. This - fixes the bug reported by mathieu Bonnet + fixes the bug reported by Mathieu Bonnet aclocal.m4 - when testing for validity of /dev/fd/3, use /dev/null instead of standard input, since the standard input fails with linux and `su'. - Bug reported by + Bug reported by Greg Shafer + + 8/17 + ---- +Makefile.in + - switch the TAGS and tags targets so TAGS is the output of `etags' and + tags is the output of `ctags'. Suggested by Masatake YAMATO diff --git a/Makefile.in b/Makefile.in index f75363100..b5339b72b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -707,10 +707,10 @@ info dvi ps: force force: -tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) -TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) +tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ # Targets that actually do things not part of the build diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 index cd8c83b75..f81a66332 100644 --- a/autom4te.cache/output.0 +++ b/autom4te.cache/output.0 @@ -26872,7 +26872,7 @@ else bash_cv_dev_fd="" if test -d /dev/fd && test -r /dev/fd/0 < /dev/null; then # check for systems like FreeBSD 5 that only provide /dev/fd/[012] - exec 3<&0 + exec 3 1, 'AC_CHECK_FUNCS' => 1 } - ], 'Autom4te::Request' ), - bless( [ - '1', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.in' - ], - { - 'm4_pattern_forbid' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_TYPE_OFF_T' => 1, - 'AC_C_VOLATILE' => 1, - 'AC_FUNC_CLOSEDIR_VOID' => 1, - 'AC_REPLACE_FNMATCH' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AC_FUNC_STAT' => 1, - 'AC_HEADER_TIME' => 1, - 'AC_FUNC_WAIT3' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AC_STRUCT_TM' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_TYPE_MODE_T' => 1, - 'AC_FUNC_GETMNTENT' => 1, - 'AC_FUNC_STRTOD' => 1, - 'AC_CHECK_HEADERS' => 1, - 'AC_FUNC_STRNLEN' => 1, - 'm4_sinclude' => 1, - 'AC_PROG_CXX' => 1, - 'AC_PATH_X' => 1, - 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, - 'AC_PROG_AWK' => 1, - '_m4_warn' => 1, - 'AC_HEADER_STDC' => 1, - 'AC_HEADER_MAJOR' => 1, - 'AC_FUNC_ERROR_AT_LINE' => 1, - 'AC_PROG_GCC_TRADITIONAL' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_FUNC_MBRTOWC' => 1, - 'AC_STRUCT_ST_BLOCKS' => 1, - 'AC_TYPE_SIGNAL' => 1, - 'AC_TYPE_UID_T' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AC_PROG_MAKE_SET' => 1, - 'sinclude' => 1, - 'm4_pattern_allow' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_FUNC_STRERROR_R' => 1, - 'AC_PROG_CC' => 1, - 'AC_FUNC_FORK' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, - 'AC_FUNC_VPRINTF' => 1, - 'AC_FUNC_STRCOLL' => 1, - 'AC_PROG_YACC' => 1, - 'AC_INIT' => 1, - 'AC_STRUCT_TIMEZONE' => 1, - 'AC_FUNC_CHOWN' => 1, - 'AC_SUBST' => 1, - 'AC_FUNC_ALLOCA' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_FUNC_GETPGRP' => 1, - 'AC_PROG_RANLIB' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_FUNC_SETPGRP' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AC_FUNC_MMAP' => 1, - 'AC_FUNC_REALLOC' => 1, - 'AC_TYPE_SIZE_T' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_CHECK_TYPES' => 1, - 'AC_CHECK_MEMBERS' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_FUNC_UTIME_NULL' => 1, - 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_FUNC_STRFTIME' => 1, - 'AC_HEADER_STAT' => 1, - 'AC_C_INLINE' => 1, - 'AC_PROG_CPP' => 1, - 'AC_TYPE_PID_T' => 1, - 'AC_C_CONST' => 1, - 'AC_PROG_LEX' => 1, - 'AC_CONFIG_FILES' => 1, - 'include' => 1, - 'AC_FUNC_SETVBUF_REVERSED' => 1, - 'AC_PROG_INSTALL' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_FUNC_OBSTACK' => 1, - 'AC_CHECK_LIB' => 1, - 'AC_FUNC_MALLOC' => 1, - 'AC_FUNC_GETGROUPS' => 1, - 'AC_FUNC_GETLOADAVG' => 1, - 'AH_OUTPUT' => 1, - 'AC_FUNC_FSEEKO' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AC_FUNC_MKTIME' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_HEADER_SYS_WAIT' => 1, - 'AC_FUNC_MEMCMP' => 1, - 'AC_PROG_LN_S' => 1, - 'm4_include' => 1, - 'AC_HEADER_DIRENT' => 1, - 'AC_CHECK_FUNCS' => 1 - } ], 'Autom4te::Request' ) ); diff --git a/builtins/caller.def b/builtins/caller.def index b6e823882..f5f2c0836 100644 --- a/builtins/caller.def +++ b/builtins/caller.def @@ -28,9 +28,9 @@ $SHORT_DOC caller [EXPR] Returns the context of the current subroutine call. -Without EXPR, returns returns "$line $filename". With EXPR, +Without EXPR, returns "$line $filename". With EXPR, returns "$line $subroutine $filename"; this extra information -can be used used to provide a stack trace. +can be used to provide a stack trace. The value of EXPR indicates how many call frames to go back before the current one; the top frame is frame 0. diff --git a/execute_cmd.c b/execute_cmd.c index 5d2ae1220..dde6b52c4 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1670,7 +1670,11 @@ execute_for_command (for_command) /* Save this command unless it's a trap command and we're not running a debug trap. */ +#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2089,7 +2093,11 @@ execute_select_command (select_command) if (echo_command_at_execute) xtrace_print_select_command_head (select_command); +#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2221,7 +2229,11 @@ execute_case_command (case_command) if (echo_command_at_execute) xtrace_print_case_command_head (case_command); +#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = savestring (the_printed_command); @@ -2758,7 +2770,11 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) command_string_index = 0; print_simple_command (simple_command); +#if 0 if (signal_in_progress (DEBUG_TRAP) == 0 && (this_command_name == 0 || (STREQ (this_command_name, "trap") == 0))) +#else + if (signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) +#endif { FREE (the_printed_command_except_trap); the_printed_command_except_trap = the_printed_command ? savestring (the_printed_command) : (char *)0; diff --git a/execute_cmd.c~ b/execute_cmd.c~ index 245081001..5d2ae1220 100644 --- a/execute_cmd.c~ +++ b/execute_cmd.c~ @@ -1259,6 +1259,11 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) reset_terminating_signals (); /* in sig.c */ /* Cancel traps, in trap.c. */ restore_original_signals (); + + /* Make sure restore_original_signals doesn't undo the work done by + make_child to ensure that asynchronous children are immune to SIGINT + and SIGQUIT. Turn off asynchronous to make sure more subshells are + not spawned. */ if (asynchronous) { setup_async_signals (); diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index 50c02ec43..64aa7bdd3 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -33,7 +33,6 @@ * Global structs undocumented in texinfo manual and not in readline.h * * * *************************************************************************/ - /* search types */ #define RL_SEARCH_ISEARCH 0x01 /* incremental search */ #define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */ diff --git a/subst.c b/subst.c index 07e0dbbcf..ecbe41250 100644 --- a/subst.c +++ b/subst.c @@ -3005,7 +3005,9 @@ dequote_escapes (string) return result; } -/* Return a new string with the quoted representation of character C. */ +/* Return a new string with the quoted representation of character C. + This turns "" into QUOTED_NULL, so the W_HASQUOTEDNULL flag needs to be + set in any resultant WORD_DESC where this value is the word. */ static char * make_quoted_char (c) int c; @@ -3027,7 +3029,9 @@ make_quoted_char (c) return (temp); } -/* Quote STRING. Return a new string. */ +/* Quote STRING, returning a new string. This turns "" into QUOTED_NULL, so + the W_HASQUOTEDNULL flag needs to be set in any resultant WORD_DESC where + this value is the word. */ char * quote_string (string) char *string; @@ -3117,6 +3121,7 @@ quote_list (list) w->word->word = quote_string (t); free (t); w->word->flags |= W_QUOTED; + /* XXX - turn on W_HAVEQUOTEDNULL here? */ } return list; } @@ -3133,6 +3138,7 @@ dequote_list (list) s = dequote_string (tlist->word->word); free (tlist->word->word); tlist->word->word = s; + /* XXX - turn off W_HAVEQUOTEDNULL here? */ } return list; } @@ -5011,9 +5017,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) a $@ in TEMP. It does not matter if the $@ is quoted, as long as it does not expand to anything. In this case, we want to return a quoted empty string. */ - temp = (char *)xmalloc (2); - temp[0] = CTLNUL; - temp[1] = '\0'; + temp = make_quoted_char ('\0'); w->flags |= W_HASQUOTEDNULL; } else diff --git a/support/mkversion.sh b/support/mkversion.sh index 6aca944fe..92fa77c73 100644 --- a/support/mkversion.sh +++ b/support/mkversion.sh @@ -67,7 +67,7 @@ fi # increment the build version if that's what's required if [ -n "$inc_build" ]; then - build_ver=`expr $build_ver + 1` + build_ver=`expr 1 + $build_ver` fi # what's the patch level?