Article View: gnu.bash.bug
Article #287bash 1.02 - 386/ix
From: James Clark
Date: Mon, 10 Jul 1989 11:54
Date: Mon, 10 Jul 1989 11:54
193 lines
6073 bytes
6073 bytes
Here are some patches to make bash 1.02 work on 386/ix (SVR3.2).
The significant problems were:
-- it dumps core on EOF; this happens on a Sun 4/SunOS 4 as well
-- when a child process that catches interrupts gets an interrupt,
bash also gets an interrupt and does a throw_to_top_level() with
the result that the child process and bash end up reading
simultaneously from the terminal.
There were also a couple of minor glitches in the Makefiles: System V
make doesn't understand `%' in rules, and there's no ranlib.
James Clark
jjc@jclark.uucp
diff -rc bash-1.02/general.h bash/general.h
*** bash-1.02/general.h Thu Jun 29 13:43:24 1989
--- bash/general.h Mon Jul 10 07:19:20 1989
***************
*** 39,45 ****
#endif
/* The output of `signal' is different on different systems. Yechh. */
! #if defined(SUNOS4) || defined (NeXT)
#define sighandler void
#else
#define sighandler int
--- 39,45 ----
#endif
/* The output of `signal' is different on different systems. Yechh. */
! #if defined(SUNOS4) || defined (NeXT) || defined (i386)
#define sighandler void
#else
#define sighandler int
diff -rc bash-1.02/lib/readline.c bash/lib/readline.c
*** bash-1.02/lib/readline.c Thu Jul 6 13:36:14 1989
--- bash/lib/readline.c Sun Jul 9 19:22:01 1989
***************
*** 59,65 ****
#include <pwd.h>
#ifdef SYSV
! struct pwd *getpwuid (), *getpwent ();
#endif
#define HACK_TERMCAP_MOTION
--- 59,65 ----
#include <pwd.h>
#ifdef SYSV
! struct passwd *getpwuid (), *getpwent ();
#endif
#define HACK_TERMCAP_MOTION
diff -rc bash-1.02/lib/readline.h bash/lib/readline.h
*** bash-1.02/lib/readline.h Thu Jun 29 16:07:03 1989
--- bash/lib/readline.h Sun Jul 9 19:43:34 1989
***************
*** 138,144 ****
/* Pointer to the generator function for completion_matches ().
NULL means to use filename_entry_function (), the default filename
completer. */
! Function *rl_completion_entry_function;
/* Pointer to alternative function to create matches.
Function is called with TEXT, START, and END.
--- 138,144 ----
/* Pointer to the generator function for completion_matches ().
NULL means to use filename_entry_function (), the default filename
completer. */
! extern Function *rl_completion_entry_function;
/* Pointer to alternative function to create matches.
Function is called with TEXT, START, and END.
***************
*** 147,153 ****
If this function exists and returns NULL then call the value of
rl_completion_entry_function to try to match, otherwise use the
array of strings returned. */
! Function *rl_attempted_completion_function;
/* **************************************************************** */
--- 147,153 ----
If this function exists and returns NULL then call the value of
rl_completion_entry_function to try to match, otherwise use the
array of strings returned. */
! extern Function *rl_attempted_completion_function;
/* **************************************************************** */
diff -rc bash-1.02/nojobs.c bash/nojobs.c
*** bash-1.02/nojobs.c Fri Jun 23 00:44:18 1989
--- bash/nojobs.c Mon Jul 10 07:14:30 1989
***************
*** 135,146 ****
{
int got_pid, return_val;
union wait status;
while ((got_pid = wait (&status)) != pid) {
if (got_pid < 0 && errno != EINTR)
programming_error ("got errno %d while waiting for %d", errno, pid);
}
!
/* Default return value. */
return_val = status.w_retcode & 0x7f;
--- 135,153 ----
{
int got_pid, return_val;
union wait status;
+ SigHandler *old_int, *old_quit;
+ old_int = signal (SIGINT, SIG_IGN);
+ old_quit = signal (SIGQUIT, SIG_IGN);
+
while ((got_pid = wait (&status)) != pid) {
if (got_pid < 0 && errno != EINTR)
programming_error ("got errno %d while waiting for %d", errno, pid);
}
!
! signal (SIGINT, old_int);
! signal (SIGQUIT, old_quit);
!
/* Default return value. */
return_val = status.w_retcode & 0x7f;
diff -rc bash-1.02/parse.y bash/parse.y
*** bash-1.02/parse.y Sat Jul 1 21:42:28 1989
--- bash/parse.y Sun Jul 9 19:51:26 1989
***************
*** 430,435 ****
--- 430,442 ----
current_readline_line = readline (current_readline_prompt);
current_readline_line_index = 0;
+
+ if (current_readline_line == (char *)EOF)
+ {
+ current_readline_line = NULL;
+ return EOF;
+ }
+
current_readline_line =
(char *)xrealloc (current_readline_line,
2 + strlen (current_readline_line));
diff -rc bash-1.02/shell.c bash/shell.c
*** bash-1.02/shell.c Sat Jul 1 14:33:04 1989
--- bash/shell.c Mon Jul 10 04:11:03 1989
***************
*** 301,307 ****
else
{
interactive = 0;
! #ifndef JOB_CONTROL
job_control = 0;
#endif
}
--- 301,307 ----
else
{
interactive = 0;
! #ifndef NOJOBS
job_control = 0;
#endif
}
diff -rc bash-1.02/variables.c bash/variables.c
*** bash-1.02/variables.c Tue Jun 27 16:40:42 1989
--- bash/variables.c Sun Jul 9 19:19:25 1989
***************
*** 27,33 ****
#include "version.h"
#ifdef SYSV
! struct pwd *getpwuid (), *getpwent ();
#endif
/* The list of shell variables that the user has created, or that came from
--- 27,33 ----
#include "version.h"
#ifdef SYSV
! struct passwd *getpwuid (), *getpwent ();
#endif
/* The list of shell variables that the user has created, or that came from
Technical Details
Message-ID:
<8907101154.AA02386@jclark.uucp>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjcShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!UUNET.UU.NET!jclark!jjc From: jclark!jjc@UUNET.UU.NET (James Clark) Newsgroups: gnu.bash.bug Subject: bash 1.02 - 386/ix Message-ID: <8907101154.AA02386@jclark.uucp> Date: 10 Jul 89 11:54:32 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 193