svn commit: trunk/busybox/shell
vda at busybox.net
vda at busybox.net
Sat Jul 14 11:33:12 UTC 2007
Author: vda
Date: 2007-07-14 04:33:10 -0700 (Sat, 14 Jul 2007)
New Revision: 19086
Log:
ash: recognize -l as --login equivalent; do not recognize +-login
Modified:
trunk/busybox/shell/ash.c
Changeset:
Modified: trunk/busybox/shell/ash.c
===================================================================
--- trunk/busybox/shell/ash.c 2007-07-14 07:26:41 UTC (rev 19085)
+++ trunk/busybox/shell/ash.c 2007-07-14 11:33:10 UTC (rev 19086)
@@ -134,7 +134,6 @@
static char *minusc; /* argument to -c option */
-static int isloginsh;
/* pid of main shell */
static int rootpid;
/* shell level: 0 for the main shell, 1 for its children, and so on */
@@ -142,6 +141,7 @@
#define rootshell (!shlvl)
/* trap handler commands */
static char *trap[NSIG];
+static smallint isloginsh;
/* current value of signal */
static char sigmode[NSIG - 1];
/* indicates specified signal received */
@@ -9027,8 +9027,11 @@
if (cmdline)
minusc = NULL;
while ((p = *argptr) != NULL) {
+ c = *p++;
+ if (c != '-' && c != '+')
+ break;
argptr++;
- c = *p++;
+ val = 0; /* val = 0 if c == '+' */
if (c == '-') {
val = 1;
if (p[0] == '\0' || LONE_DASH(p)) {
@@ -9042,20 +9045,20 @@
}
break; /* "-" or "--" terminates options */
}
- } else if (c == '+') {
- val = 0;
- } else {
- argptr--;
- break;
}
+ /* first char was + or - */
while ((c = *p++) != '\0') {
+ /* bash 3.2 indeed handles -c CMD and +c CMD the same */
if (c == 'c' && cmdline) {
- minusc = p; /* command is after shell args*/
+ minusc = p; /* command is after shell args */
} else if (c == 'o') {
minus_o(*argptr, val);
if (*argptr)
argptr++;
- } else if (cmdline && (c == '-')) { // long options
+ } else if (cmdline && (c == 'l')) { /* -l or +l == --login */
+ isloginsh = 1;
+ /* bash does not accept +-login, we also won't */
+ } else if (cmdline && val && (c == '-')) { /* long options */
if (strcmp(p, "login") == 0)
isloginsh = 1;
break;
More information about the busybox-cvs
mailing list