This patch documents two implemented and classical command line options "-v" and "-x". It is derived from Debian GNU/Linux. Index: doc/bash.1 --- doc/bash.1.orig 2004-07-12 17:27:08 +0200 +++ doc/bash.1 2004-07-27 19:47:10 +0200 @@ -113,6 +113,12 @@ This option allows the positional parameters to be set when invoking an interactive shell. .TP +.B \-v +Print shell input lines as they are read. +.TP +.B \-x +Print commands and their arguments as they are executed. +.TP .B \-D A list of all double-quoted strings preceded by \fB$\fP is printed on the standard ouput. ----------------------------------------------------------------------------- This patch adds an explicit recognition for terminal sequence "kD" to be "Delete" key. This is derived from Debian GNU/Linux and SuSE Linux. Index: lib/readline/terminal.c --- lib/readline/terminal.c.orig 2003-09-18 17:03:42 +0200 +++ lib/readline/terminal.c 2004-07-27 20:03:17 +0200 @@ -145,6 +145,9 @@ static char *_rl_term_kH; static char *_rl_term_at7; /* @7 */ +/* The key sequence sent by the Delete key, if any. */ +static char *_rl_term_kD; + /* Insert key */ static char *_rl_term_kI; @@ -313,6 +316,7 @@ { "ei", &_rl_term_ei }, { "ic", &_rl_term_ic }, { "im", &_rl_term_im }, + { "kD", &_rl_term_kD }, /* delete */ { "kH", &_rl_term_kH }, /* home down ?? */ { "kI", &_rl_term_kI }, /* insert */ { "kd", &_rl_term_kd }, @@ -492,6 +496,7 @@ rl_bind_keyseq_if_unbound (_rl_term_kh, rl_beg_of_line); /* Home */ rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */ + rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete); /* Delete */ _rl_keymap = xkeymap; } ----------------------------------------------------------------------------- This patch makes sure a signal state variable is declared "volatile" so it is consistent throughout signal handling. This patch is derived from SuSE Linux. Index: quit.h --- quit.h.orig 2001-09-10 16:08:33 +0200 +++ quit.h 2004-07-27 19:47:10 +0200 @@ -22,7 +22,7 @@ #define _QUIT_H_ /* Non-zero means SIGINT has already ocurred. */ -extern int interrupt_state; +extern volatile int interrupt_state; /* Macro to call a great deal. SIGINT just sets above variable. When it is safe, put QUIT in the code, and the "interrupt" will take place. */ Index: sig.c --- sig.c.orig 2003-12-19 22:11:35 +0100 +++ sig.c 2004-07-27 19:47:10 +0200 @@ -59,7 +59,7 @@ extern int parse_and_execute_level, shell_initialized; /* Non-zero after SIGINT. */ -int interrupt_state; +volatile int interrupt_state = 0; /* The environment at the top-level R-E loop. We use this in the case of error return. */ @@ -71,7 +71,7 @@ #endif /* JOB_CONTROL */ /* When non-zero, we throw_to_top_level (). */ -int interrupt_immediately = 0; +volatile int interrupt_immediately = 0; static void initialize_shell_signals __P((void)); ----------------------------------------------------------------------------- Port to HP-UX 11i and similar less smart platforms. Index: configure --- configure.orig 2004-07-21 22:18:56 +0200 +++ configure 2004-07-27 19:47:10 +0200 @@ -1479,6 +1479,7 @@ *-beos*) opt_bash_malloc=no ;; # they say it's suitable *-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft +*-hpux*) opt_bash_malloc=no ;; # HP HP-UX esac # memory scrambling on free() @@ -1624,7 +1625,7 @@ else MALLOC_LIB= - MALLOC_LIBRARY= + MALLOC_LIBRARY=dummy MALLOC_LDFLAGS= MALLOC_DEP= fi Index: syntax.h --- syntax.h.orig 2004-04-15 05:19:36 +0200 +++ syntax.h 2004-07-27 19:47:10 +0200 @@ -21,6 +21,8 @@ #ifndef _SYNTAX_H_ #define _SYNTAX_H_ +#include "config.h" + /* Defines for use by mksyntax.c */ #define slashify_in_quotes "\\`$\"\n" ----------------------------------------------------------------------------- This adds the OpenPKG packaging brand. Index: version.c --- version.c.orig 2003-12-19 22:34:02 +0100 +++ version.c 2004-07-27 19:47:10 +0200 @@ -77,7 +77,7 @@ show_shell_version (extended) int extended; { - printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); + printf ("GNU bash, version %s (%s) [@l_openpkg_release@]\n", shell_version_string (), MACHTYPE); if (extended) printf (_("Copyright (C) 2004 Free Software Foundation, Inc.\n")); } ----------------------------------------------------------------------------- Fix display handling of multi-line prompts. Index: lib/readline/display.c --- lib/readline/display.c.orig 2004-05-28 04:57:51 +0200 +++ lib/readline/display.c 2004-07-28 20:17:43 +0200 @@ -351,14 +351,14 @@ local_prompt = expand_prompt (p, &prompt_visible_length, &prompt_last_invisible, (int *)NULL, - (int *)NULL); + &prompt_physical_chars); c = *t; *t = '\0'; /* The portion of the prompt string up to and including the final newline is now null-terminated. */ local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, (int *)NULL, &prompt_invis_chars_first_line, - &prompt_physical_chars); + (int *)NULL); *t = c; return (prompt_prefix_length); } ----------------------------------------------------------------------------- Fix timezone handling for HPUX Index: lib/sh/strftime.c --- lib/sh/strftime.c.orig 2004-03-04 04:13:23 +0100 +++ lib/sh/strftime.c 2004-08-06 12:40:06 +0200 @@ -97,6 +97,8 @@ extern int daylight; #if defined(SOLARIS) || defined(mips) || defined (M_UNIX) extern long int timezone, altzone; +#elif defined(HPUX) +extern long int timezone; #else extern int timezone, altzone; #endif @@ -480,7 +482,11 @@ * Systems with tzname[] probably have timezone as * secs west of GMT. Convert to mins east of GMT. */ +#if defined(HPUX) + off = -(timezone / 60); +#else off = -(daylight ? timezone : altzone) / 60; +#endif /* HPUX */ #else /* !HAVE_TZNAME */ off = -zone.tz_minuteswest; #endif /* !HAVE_TZNAME */ ----------------------------------------------------------------------------- Fix segfault when accessing an unset array. http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00026.html Index: arrayfunc.c --- arrayfunc.c.orig 2003-12-19 06:03:09 +0100 +++ arrayfunc.c 2004-08-11 15:17:03 +0200 @@ -611,7 +611,7 @@ var = find_variable (t); free (t); - return var; + return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; } /* Return a string containing the elements in the array and subscript ----------------------------------------------------------------------------- Fix nested brace vs. variable expansion. http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00056.html Index: braces.c --- braces.c.orig 2003-12-04 17:09:52 +0100 +++ braces.c 2004-08-11 15:18:14 +0200 @@ -402,6 +402,7 @@ { pass_next = 1; i++; + level++; continue; } #endif