diff options
author | Matt Kraai <kraai@debian.org> | 2001-08-06 14:14:18 +0000 |
---|---|---|
committer | Matt Kraai <kraai@debian.org> | 2001-08-06 14:14:18 +0000 |
commit | 69edfecfb981d5761c3e39f43f33451fd55e81b8 (patch) | |
tree | 0f462202cb5d5eda360d2d67955d82a444b74ae3 | |
parent | b373a8d0ca73acfc042a9741f8e3f803dc1cefa3 (diff) | |
download | busybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.tar.gz busybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.tar.bz2 busybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.zip |
Add support for underscores in variable names.
-rw-r--r-- | msh.c | 26 | ||||
-rw-r--r-- | shell/msh.c | 26 |
2 files changed, 26 insertions, 26 deletions
@@ -1261,7 +1261,7 @@ static void | |||
1261 | ronly(vp) | 1261 | ronly(vp) |
1262 | struct var *vp; | 1262 | struct var *vp; |
1263 | { | 1263 | { |
1264 | if (isalpha(vp->name[0])) /* not an internal symbol ($# etc) */ | 1264 | if (isalpha(vp->name[0]) || vp->name[0] == '_') /* not an internal symbol */ |
1265 | vp->status |= RONLY; | 1265 | vp->status |= RONLY; |
1266 | } | 1266 | } |
1267 | 1267 | ||
@@ -1269,10 +1269,10 @@ static int | |||
1269 | isassign(s) | 1269 | isassign(s) |
1270 | register char *s; | 1270 | register char *s; |
1271 | { | 1271 | { |
1272 | if (!isalpha((int)*s)) | 1272 | if (!isalpha((int)*s) && *s != '_') |
1273 | return(0); | 1273 | return(0); |
1274 | for (; *s != '='; s++) | 1274 | for (; *s != '='; s++) |
1275 | if (*s == 0 || !isalnum(*s)) | 1275 | if (*s == 0 || (!isalnum(*s) && *s != '_')) |
1276 | return(0); | 1276 | return(0); |
1277 | return(1); | 1277 | return(1); |
1278 | } | 1278 | } |
@@ -1285,10 +1285,10 @@ int cf; | |||
1285 | register char *cp; | 1285 | register char *cp; |
1286 | struct var *vp; | 1286 | struct var *vp; |
1287 | 1287 | ||
1288 | if (!isalpha(*s)) | 1288 | if (!isalpha(*s) && *s != '_') |
1289 | return(0); | 1289 | return(0); |
1290 | for (cp = s; *cp != '='; cp++) | 1290 | for (cp = s; *cp != '='; cp++) |
1291 | if (*cp == 0 || !isalnum(*cp)) | 1291 | if (*cp == 0 || (!isalnum(*cp) && *cp != '_')) |
1292 | return(0); | 1292 | return(0); |
1293 | vp = lookup(s); | 1293 | vp = lookup(s); |
1294 | nameval(vp, ++cp, cf == COPYV? (char *)NULL: s); | 1294 | nameval(vp, ++cp, cf == COPYV? (char *)NULL: s); |
@@ -1301,10 +1301,10 @@ static int | |||
1301 | checkname(cp) | 1301 | checkname(cp) |
1302 | register char *cp; | 1302 | register char *cp; |
1303 | { | 1303 | { |
1304 | if (!isalpha(*cp++)) | 1304 | if (!isalpha(*cp++) && *(cp-1) != '_') |
1305 | return(0); | 1305 | return(0); |
1306 | while (*cp) | 1306 | while (*cp) |
1307 | if (!isalnum(*cp++)) | 1307 | if (!isalnum(*cp++) && *(cp-1) != '_') |
1308 | return(0); | 1308 | return(0); |
1309 | return(1); | 1309 | return(1); |
1310 | } | 1310 | } |
@@ -1316,7 +1316,7 @@ register int f, out; | |||
1316 | register struct var *vp; | 1316 | register struct var *vp; |
1317 | 1317 | ||
1318 | for (vp = vlist; vp; vp = vp->next) | 1318 | for (vp = vlist; vp; vp = vp->next) |
1319 | if (vp->status & f && isalpha(*vp->name)) { | 1319 | if (vp->status & f && (isalpha(*vp->name) || *vp->name == '_')) { |
1320 | if (vp->status & EXPORT) | 1320 | if (vp->status & EXPORT) |
1321 | write(out, "export ", 7); | 1321 | write(out, "export ", 7); |
1322 | if (vp->status & RONLY) | 1322 | if (vp->status & RONLY) |
@@ -3406,7 +3406,7 @@ varput(s, out) | |||
3406 | register char *s; | 3406 | register char *s; |
3407 | int out; | 3407 | int out; |
3408 | { | 3408 | { |
3409 | if (isalnum(*s)) { | 3409 | if (isalnum(*s) || *s == '_') { |
3410 | write(out, s, strlen(s)); | 3410 | write(out, s, strlen(s)); |
3411 | write(out, "\n", 1); | 3411 | write(out, "\n", 1); |
3412 | } | 3412 | } |
@@ -3613,7 +3613,7 @@ loop: | |||
3613 | c = 0; | 3613 | c = 0; |
3614 | } | 3614 | } |
3615 | unget(c); | 3615 | unget(c); |
3616 | if (!isalpha(c)) | 3616 | if (!isalpha(c) && c != '_') |
3617 | scanequals = 0; | 3617 | scanequals = 0; |
3618 | for (;;) { | 3618 | for (;;) { |
3619 | c = subgetc('"', foundequals); | 3619 | c = subgetc('"', foundequals); |
@@ -3631,7 +3631,7 @@ loop: | |||
3631 | foundequals = 1; | 3631 | foundequals = 1; |
3632 | scanequals = 0; | 3632 | scanequals = 0; |
3633 | } | 3633 | } |
3634 | else if (!isalnum(c)) | 3634 | else if (!isalnum(c) && c != '_') |
3635 | scanequals = 0; | 3635 | scanequals = 0; |
3636 | } | 3636 | } |
3637 | *e.linep++ = c; | 3637 | *e.linep++ = c; |
@@ -3684,8 +3684,8 @@ int quoted; | |||
3684 | s = e.linep; | 3684 | s = e.linep; |
3685 | if (c != '{') { | 3685 | if (c != '{') { |
3686 | *e.linep++ = c; | 3686 | *e.linep++ = c; |
3687 | if (isalpha(c)) { | 3687 | if (isalpha(c) || c == '_') { |
3688 | while ((c = readc())!=0 && isalnum(c)) | 3688 | while ((c = readc())!=0 && (isalnum(c) || c == '_')) |
3689 | if (e.linep < elinep) | 3689 | if (e.linep < elinep) |
3690 | *e.linep++ = c; | 3690 | *e.linep++ = c; |
3691 | unget(c); | 3691 | unget(c); |
diff --git a/shell/msh.c b/shell/msh.c index 92a0f8536..e16d6f304 100644 --- a/shell/msh.c +++ b/shell/msh.c | |||
@@ -1261,7 +1261,7 @@ static void | |||
1261 | ronly(vp) | 1261 | ronly(vp) |
1262 | struct var *vp; | 1262 | struct var *vp; |
1263 | { | 1263 | { |
1264 | if (isalpha(vp->name[0])) /* not an internal symbol ($# etc) */ | 1264 | if (isalpha(vp->name[0]) || vp->name[0] == '_') /* not an internal symbol */ |
1265 | vp->status |= RONLY; | 1265 | vp->status |= RONLY; |
1266 | } | 1266 | } |
1267 | 1267 | ||
@@ -1269,10 +1269,10 @@ static int | |||
1269 | isassign(s) | 1269 | isassign(s) |
1270 | register char *s; | 1270 | register char *s; |
1271 | { | 1271 | { |
1272 | if (!isalpha((int)*s)) | 1272 | if (!isalpha((int)*s) && *s != '_') |
1273 | return(0); | 1273 | return(0); |
1274 | for (; *s != '='; s++) | 1274 | for (; *s != '='; s++) |
1275 | if (*s == 0 || !isalnum(*s)) | 1275 | if (*s == 0 || (!isalnum(*s) && *s != '_')) |
1276 | return(0); | 1276 | return(0); |
1277 | return(1); | 1277 | return(1); |
1278 | } | 1278 | } |
@@ -1285,10 +1285,10 @@ int cf; | |||
1285 | register char *cp; | 1285 | register char *cp; |
1286 | struct var *vp; | 1286 | struct var *vp; |
1287 | 1287 | ||
1288 | if (!isalpha(*s)) | 1288 | if (!isalpha(*s) && *s != '_') |
1289 | return(0); | 1289 | return(0); |
1290 | for (cp = s; *cp != '='; cp++) | 1290 | for (cp = s; *cp != '='; cp++) |
1291 | if (*cp == 0 || !isalnum(*cp)) | 1291 | if (*cp == 0 || (!isalnum(*cp) && *cp != '_')) |
1292 | return(0); | 1292 | return(0); |
1293 | vp = lookup(s); | 1293 | vp = lookup(s); |
1294 | nameval(vp, ++cp, cf == COPYV? (char *)NULL: s); | 1294 | nameval(vp, ++cp, cf == COPYV? (char *)NULL: s); |
@@ -1301,10 +1301,10 @@ static int | |||
1301 | checkname(cp) | 1301 | checkname(cp) |
1302 | register char *cp; | 1302 | register char *cp; |
1303 | { | 1303 | { |
1304 | if (!isalpha(*cp++)) | 1304 | if (!isalpha(*cp++) && *(cp-1) != '_') |
1305 | return(0); | 1305 | return(0); |
1306 | while (*cp) | 1306 | while (*cp) |
1307 | if (!isalnum(*cp++)) | 1307 | if (!isalnum(*cp++) && *(cp-1) != '_') |
1308 | return(0); | 1308 | return(0); |
1309 | return(1); | 1309 | return(1); |
1310 | } | 1310 | } |
@@ -1316,7 +1316,7 @@ register int f, out; | |||
1316 | register struct var *vp; | 1316 | register struct var *vp; |
1317 | 1317 | ||
1318 | for (vp = vlist; vp; vp = vp->next) | 1318 | for (vp = vlist; vp; vp = vp->next) |
1319 | if (vp->status & f && isalpha(*vp->name)) { | 1319 | if (vp->status & f && (isalpha(*vp->name) || *vp->name == '_')) { |
1320 | if (vp->status & EXPORT) | 1320 | if (vp->status & EXPORT) |
1321 | write(out, "export ", 7); | 1321 | write(out, "export ", 7); |
1322 | if (vp->status & RONLY) | 1322 | if (vp->status & RONLY) |
@@ -3406,7 +3406,7 @@ varput(s, out) | |||
3406 | register char *s; | 3406 | register char *s; |
3407 | int out; | 3407 | int out; |
3408 | { | 3408 | { |
3409 | if (isalnum(*s)) { | 3409 | if (isalnum(*s) || *s == '_') { |
3410 | write(out, s, strlen(s)); | 3410 | write(out, s, strlen(s)); |
3411 | write(out, "\n", 1); | 3411 | write(out, "\n", 1); |
3412 | } | 3412 | } |
@@ -3613,7 +3613,7 @@ loop: | |||
3613 | c = 0; | 3613 | c = 0; |
3614 | } | 3614 | } |
3615 | unget(c); | 3615 | unget(c); |
3616 | if (!isalpha(c)) | 3616 | if (!isalpha(c) && c != '_') |
3617 | scanequals = 0; | 3617 | scanequals = 0; |
3618 | for (;;) { | 3618 | for (;;) { |
3619 | c = subgetc('"', foundequals); | 3619 | c = subgetc('"', foundequals); |
@@ -3631,7 +3631,7 @@ loop: | |||
3631 | foundequals = 1; | 3631 | foundequals = 1; |
3632 | scanequals = 0; | 3632 | scanequals = 0; |
3633 | } | 3633 | } |
3634 | else if (!isalnum(c)) | 3634 | else if (!isalnum(c) && c != '_') |
3635 | scanequals = 0; | 3635 | scanequals = 0; |
3636 | } | 3636 | } |
3637 | *e.linep++ = c; | 3637 | *e.linep++ = c; |
@@ -3684,8 +3684,8 @@ int quoted; | |||
3684 | s = e.linep; | 3684 | s = e.linep; |
3685 | if (c != '{') { | 3685 | if (c != '{') { |
3686 | *e.linep++ = c; | 3686 | *e.linep++ = c; |
3687 | if (isalpha(c)) { | 3687 | if (isalpha(c) || c == '_') { |
3688 | while ((c = readc())!=0 && isalnum(c)) | 3688 | while ((c = readc())!=0 && (isalnum(c) || c == '_')) |
3689 | if (e.linep < elinep) | 3689 | if (e.linep < elinep) |
3690 | *e.linep++ = c; | 3690 | *e.linep++ = c; |
3691 | unget(c); | 3691 | unget(c); |