diff -ru bash-4.2/execute_cmd.c bash-4.2patch/execute_cmd.c --- bash-4.2/execute_cmd.c 2011-02-09 23:32:25.000000000 +0100 +++ bash-4.2patch/execute_cmd.c 2013-03-02 13:43:21.342462272 +0100 @@ -2202,7 +2202,11 @@ /* If the `lastpipe' option is set with shopt, and job control is not enabled, execute the last element of non-async pipelines in the current shell environment. */ - if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) + if (lastpipe_opt +#if defined (JOB_CONTROL) + && job_control == 0 +#endif + && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0) { lstdin = move_to_high_fd (0, 0, 255); if (lstdin > 0) diff -ru bash-4.2/include/posixdir.h bash-4.2patch/include/posixdir.h --- bash-4.2/include/posixdir.h 2008-08-12 16:01:57.000000000 +0200 +++ bash-4.2patch/include/posixdir.h 2013-03-02 14:30:39.610503840 +0100 @@ -50,7 +50,7 @@ # define d_fileno d_ino #endif -#if defined (_POSIX_SOURCE) && (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)) +#if (!defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)) /* Posix does not require that the d_ino field be present, and some systems do not provide it. */ # define REAL_DIR_ENTRY(dp) 1 diff -ru bash-4.2/lib/malloc/malloc.c bash-4.2patch/lib/malloc/malloc.c --- bash-4.2/lib/malloc/malloc.c 2008-08-12 16:23:51.000000000 +0200 +++ bash-4.2patch/lib/malloc/malloc.c 2013-03-02 14:36:15.302508757 +0100 @@ -561,7 +561,7 @@ /* Block all signals in case we are executed from a signal handler. */ blocked_sigs = 0; -#ifdef SHELL +#if (defined SHELL && defined SIGCHLD) if (interrupt_immediately || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD)) #endif { diff -ru bash-4.2/lib/readline/signals.c bash-4.2patch/lib/readline/signals.c --- bash-4.2/lib/readline/signals.c 2011-02-11 16:53:33.000000000 +0100 +++ bash-4.2patch/lib/readline/signals.c 2013-03-02 14:35:19.614507942 +0100 @@ -587,7 +587,7 @@ { if (sigwinch_blocked) return; - +#ifdef SIGWINCH #if defined (HAVE_POSIX_SIGNALS) sigemptyset (&sigwinch_set); sigemptyset (&sigwinch_oset); @@ -602,7 +602,7 @@ # endif /* HAVE_USG_SIGHOLD */ # endif /* !HAVE_BSD_SIGNALS */ #endif /* !HAVE_POSIX_SIGNALS */ - +#endif /* SIGWINCH */ sigwinch_blocked = 1; } diff -ru bash-4.2/lib/sh/getcwd.c bash-4.2patch/lib/sh/getcwd.c --- bash-4.2/lib/sh/getcwd.c 2009-06-17 02:16:55.000000000 +0200 +++ bash-4.2patch/lib/sh/getcwd.c 2013-03-02 14:40:33.686512541 +0100 @@ -48,7 +48,7 @@ #include -#if defined (BROKEN_DIRENT_D_INO) +#if (!defined (HAVE_STRUCT_DIRENT_D_FILENO) && !defined (HAVE_STRUCT_DIRENT_D_INO)) || defined (BROKEN_DIRENT_D_INO) # include "command.h" # include "general.h" # include "externs.h" @@ -71,7 +71,7 @@ /* If the d_fileno member of a struct dirent doesn't return anything useful, we need to check inode number equivalence the hard way. Return 1 if the inode corresponding to PATH/DIR is identical to THISINO. */ -#if defined (BROKEN_DIRENT_D_INO) +#if (!defined (HAVE_STRUCT_DIRENT_D_FILENO) && !defined (HAVE_STRUCT_DIRENT_D_INO)) || defined (BROKEN_DIRENT_D_INO) static int _path_checkino (dotp, name, thisino) char *dotp; @@ -206,7 +206,7 @@ (d->d_name[1] == '\0' || (d->d_name[1] == '.' && d->d_name[2] == '\0'))) continue; -#if !defined (BROKEN_DIRENT_D_INO) +#if (defined (HAVE_STRUCT_DIRENT_D_FILENO) || defined (HAVE_STRUCT_DIRENT_D_INO)) && !defined (BROKEN_DIRENT_D_INO) if (mount_point || d->d_fileno == thisino) #else if (mount_point || _path_checkino (dotp, d->d_name, thisino)) diff -ru bash-4.2/nojobs.c bash-4.2patch/nojobs.c --- bash-4.2/nojobs.c 2010-07-05 21:58:08.000000000 +0200 +++ bash-4.2patch/nojobs.c 2013-03-02 13:44:37.426463386 +0100 @@ -446,6 +446,10 @@ } #endif /* WAITPID */ +#if !defined (SA_RESTART) +# define SA_RESTART 0 +#endif + #if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS) static int siginterrupt (sig, flag) diff -ru bash-4.2/sig.c bash-4.2patch/sig.c --- bash-4.2/sig.c 2010-11-23 14:21:22.000000000 +0100 +++ bash-4.2patch/sig.c 2013-03-02 14:07:41.198483652 +0100 @@ -663,11 +663,13 @@ act.sa_handler = handler; act.sa_flags = 0; +#ifdef SIGCHLD /* XXX - bash-4.2 */ /* We don't want a child death to interrupt interruptible system calls, even if we take the time to reap children */ if (sig == SIGCHLD) act.sa_flags |= SA_RESTART; /* XXX */ +#endif sigemptyset (&act.sa_mask); sigemptyset (&oact.sa_mask);