🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Ray Moody Thu, 03 Aug 1989 23:25
Bash as a root shell (also bug in polite_directory_format)
#421
Author: Ray Moody
Date: Thu, 03 Aug 1989 23:25
133 lines
4263 bytes
    I fixed a bug in polite_directory_format:  If $HOME was /a/ray,
the directory /a/raymond would be politely printed as ~mond.

    I also have a few enhancements that make bash work better when you
are root:

    I have added stuff to decde_prompt_string so that "\$" prints "$"
unless you are root, and then it prints "#".  I have changed the
default prompt to make use of this feature.  (This seemed to be a
better approach than picking a default prompt at startup -- now I can
use the same PS1 for both root and normal shells).

    I have changed polite_directory_format so that "/usr/bin" will not
be politely printed as "~usr/bin" when $HOME is /.  (This last one is
really a bugfix and not an enhancement.)

								Ray
-------------------------------------------------------------------------------
RCS file: RCS/builtins.c,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 builtins.c
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:49 1989
--- builtins.c	Thu Aug  3 17:55:45 1989
***************
*** 2680,2686
    char *home = get_string_value ("HOME");
    int l = home ? strlen (home) : 0;
  
!   if (l && strncmp (home, name, l) == 0) {
      strcpy (tdir + 1, name + l);
      tdir[0] = '~';
      return (tdir);

--- 2680,2686 -----
    char *home = get_string_value ("HOME");
    int l = home ? strlen (home) : 0;
  
!   if (l > 1 && strncmp (home, name, l) == 0 && name[strlen (name) - 1] == '/') {
      strcpy (tdir + 1, name + l);
      tdir[0] = '~';
      return (tdir);
===================================================================
RCS file: RCS/Makefile,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 Makefile
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:57 1989
--- Makefile	Thu Aug  3 17:46:07 1989
***************
*** 93,99
  PROGRAM = bash
  
  # The default primary and secondary prompts.
! PPROMPT = '"${PROGRAM}$$ "'
  SPROMPT = '"${PROGRAM}>"'
  
  # The group of configuration flags.  These are for shell.c

--- 93,99 -----
  PROGRAM = bash
  
  # The default primary and secondary prompts.
! PPROMPT = '"${PROGRAM}\\$$ "'
  SPROMPT = '"${PROGRAM}>"'
  
  # The group of configuration flags.  These are for shell.c
===================================================================
RCS file: RCS/shell.c,v
retrieving revision 1.2
diff -c -r1.2 shell.c
*** /tmp/,RCSt1005909	Thu Aug  3 18:17:58 1989
--- shell.c	Thu Aug  3 17:46:03 1989
***************
*** 67,73
  char *the_current_maintainer = MAINTAINER;
  
  #ifndef PPROMPT
! #define PPROMPT "bash$ ";
  #endif
  char *primary_prompt = PPROMPT;
  

--- 67,73 -----
  char *the_current_maintainer = MAINTAINER;
  
  #ifndef PPROMPT
! #define PPROMPT "bash\\$ ";
  #endif
  char *primary_prompt = PPROMPT;
  
===================================================================
RCS file: RCS/parse.y,v
retrieving revision 1.2.1.1
diff -c -r1.2.1.1 parse.y
*** /tmp/,RCSt1005909	Thu Aug  3 18:18:02 1989
--- parse.y	Thu Aug  3 17:43:33 1989
***************
*** 1419,1424
  	\h	the hostname
  	\#	the command number of this command
  	\!	the history number of this command
  	\<octal> character code in octal
  	\\	a backslash
  */

--- 1419,1425 -----
  	\h	the hostname
  	\#	the command number of this command
  	\!	the history number of this command
+ 	\$	a $, unless you are root, then a #.
  	\<octal> character code in octal
  	\\	a backslash
  */
***************
*** 1574,1579
  
  	    case '\\':
  	      temp = savestring ("\\");
  	      goto add_string;
  
  	    default:

--- 1575,1584 -----
  
  	    case '\\':
  	      temp = savestring ("\\");
+ 	      goto add_string;
+ 
+             case '$':
+ 	      temp = savestring (getuid () == 0 ? "#" : "$");
  	      goto add_string;
  
  	    default:
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