🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by James Clark Mon, 10 Jul 1989 11:54
bash 1.02 - 386/ix
#287
Author: James Clark
Date: Mon, 10 Jul 1989 11:54
193 lines
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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads