aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Kraai <kraai@debian.org>2001-08-06 14:14:18 +0000
committerMatt Kraai <kraai@debian.org>2001-08-06 14:14:18 +0000
commit69edfecfb981d5761c3e39f43f33451fd55e81b8 (patch)
tree0f462202cb5d5eda360d2d67955d82a444b74ae3
parentb373a8d0ca73acfc042a9741f8e3f803dc1cefa3 (diff)
downloadbusybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.tar.gz
busybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.tar.bz2
busybox-w32-69edfecfb981d5761c3e39f43f33451fd55e81b8.zip
Add support for underscores in variable names.
-rw-r--r--msh.c26
-rw-r--r--shell/msh.c26
2 files changed, 26 insertions, 26 deletions
diff --git a/msh.c b/msh.c
index 92a0f8536..e16d6f304 100644
--- a/msh.c
+++ b/msh.c
@@ -1261,7 +1261,7 @@ static void
1261ronly(vp) 1261ronly(vp)
1262struct var *vp; 1262struct 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
1269isassign(s) 1269isassign(s)
1270register char *s; 1270register 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
1301checkname(cp) 1301checkname(cp)
1302register char *cp; 1302register 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)
3406register char *s; 3406register char *s;
3407int out; 3407int 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
1261ronly(vp) 1261ronly(vp)
1262struct var *vp; 1262struct 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
1269isassign(s) 1269isassign(s)
1270register char *s; 1270register 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
1301checkname(cp) 1301checkname(cp)
1302register char *cp; 1302register 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)
3406register char *s; 3406register char *s;
3407int out; 3407int 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);