Add --login support. This is the bash way of starting a shell that should
authorRobert Griebl <griebl@gmx.de>
Tue, 14 May 2002 23:22:06 +0000 (23:22 -0000)
committerRobert Griebl <griebl@gmx.de>
Tue, 14 May 2002 23:22:06 +0000 (23:22 -0000)
parse the profile files.

shell/ash.c

index 99d5e7d740e768a6573707257c1d346837f20472..f3b641d53510609acd6258acdb7f27cfd20fa547 100644 (file)
@@ -7441,6 +7441,8 @@ static short profile_buf[16384];
 extern int etext();
 #endif
 
+static int isloginsh = 0;
+
 static void read_profile (const char *);
 static void cmdloop (int);
 static void options (int);
@@ -7526,7 +7528,9 @@ ash_main(int argc, char **argv)
        init();
        setstackmark(&smark);
        procargs(argc, argv);
-       if (argv[0] && argv[0][0] == '-') {
+       if (argv[0] && argv[0][0] == '-')
+               isloginsh = 1;
+       if (isloginsh) {
                state = 1;
                read_profile("/etc/profile");
 state1:
@@ -8828,7 +8832,6 @@ nodexstrdup(const char *s)
 static int getopts (char *, char *, char **, int *, int *);
 #endif
 
-
 /*
  * Process the shell command line arguments.
  */
@@ -8950,6 +8953,10 @@ options(int cmdline)
                                minus_o(*argptr, val);
                                if (*argptr)
                                        argptr++;
+                       } else if (cmdline && (c == '-')) { // long options
+                               if ( strcmp ( p, "login" ) == 0 )
+                                       isloginsh = 1;
+                               break;
                        } else {
                                setoption(c, val);
                        }
@@ -12435,7 +12442,7 @@ findvar(struct var **vpp, const char *name)
 /*
  * Copyright (c) 1999 Herbert Xu <herbert@debian.org>
  * This file contains code for the times builtin.
- * $Id: ash.c,v 1.49 2002/04/26 23:39:48 andersen Exp $
+ * $Id: ash.c,v 1.50 2002/05/14 23:22:06 sandman Exp $
  */
 static int timescmd (int argc, char **argv)
 {