|
|
@@ -20,41 +20,6 @@ Index: doc/bash.1
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
-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.
|
|
|
@@ -146,82 +111,3 @@ Index: version.c
|
|
|
printf (_("Copyright (C) 2004 Free Software Foundation, Inc.\n"));
|
|
|
}
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
-
|
|
|
-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 */
|
|
|
-
|
|
|
------------------------------------------------------------------------------
|
|
|
-
|
|
|
-On brain-dead Linux platforms somewhere between glibc 2.3.3 (20040405)
|
|
|
-and glibc 2.3.3 (20040917) (e.g. between SuSE 9.1 and SuSE 9.2 or
|
|
|
-between Gentoo 1.4.x and 1.5.x) the system headers provide the
|
|
|
-waitpid(2) option WCONTINUED although the underlying Linux kernels 2.4
|
|
|
-and 2.6 still do not support this option and return EINVAL on waitpid(2)
|
|
|
-using WCONTINUED.
|
|
|
-
|
|
|
-As a side-effect the GNU Bash goes into an endless loop with waitpid(3)
|
|
|
-calls after the first executed command terminated. The following
|
|
|
-patch is derived from Gentoo Portage and workarounds this problems by
|
|
|
-gracefully and efficiently degrading the options on waitpid(2) calls.
|
|
|
-
|
|
|
-Well, it's just another great example of how good Linux provides
|
|
|
-standardized APIs -- actually they are nothing more than Potemkin
|
|
|
-villages. Ggrrrrr!
|
|
|
-
|
|
|
-Index: jobs.c
|
|
|
---- jobs.c.orig 2004-11-04 10:29:23 +0100
|
|
|
-+++ jobs.c 2004-11-04 10:32:47 +0100
|
|
|
-@@ -2476,6 +2476,9 @@
|
|
|
- PROCESS *child;
|
|
|
- pid_t pid;
|
|
|
- int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
|
|
|
-+#ifdef __linux__
|
|
|
-+ static int wcontinued_not_supported = 0;
|
|
|
-+#endif
|
|
|
-
|
|
|
- call_set_current = children_exited = 0;
|
|
|
- last_stopped_job = NO_JOB;
|
|
|
-@@ -2489,7 +2492,18 @@
|
|
|
- : 0;
|
|
|
- if (sigchld || block == 0)
|
|
|
- waitpid_flags |= WNOHANG;
|
|
|
-+#ifdef __linux__
|
|
|
-+ retry:
|
|
|
-+ if (wcontinued_not_supported)
|
|
|
-+ waitpid_flags &= ~WCONTINUED;
|
|
|
-+#endif
|
|
|
- pid = WAITPID (-1, &status, waitpid_flags);
|
|
|
-+#ifdef __linux__
|
|
|
-+ if (pid == -1 && errno == EINVAL) {
|
|
|
-+ wcontinued_not_supported = 1;
|
|
|
-+ goto retry;
|
|
|
-+ }
|
|
|
-+#endif
|
|
|
-
|
|
|
- /* The check for WNOHANG is to make sure we decrement sigchld only
|
|
|
- if it was non-zero before we called waitpid. */
|