summaryrefslogtreecommitdiffstats
path: root/bin/sh/expand.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1996-09-10 02:07:27 +0000
committerpeter <peter@FreeBSD.org>1996-09-10 02:07:27 +0000
commit3d58e0bf86507cdd7dd291260d2d8b7928f21eda (patch)
tree4b7d992e0383711d94ddd23149bd0ab1cd468b01 /bin/sh/expand.c
parent2a6480c367bd2621cada668a2e36069cd73c2e0a (diff)
downloadFreeBSD-src-3d58e0bf86507cdd7dd291260d2d8b7928f21eda.zip
FreeBSD-src-3d58e0bf86507cdd7dd291260d2d8b7928f21eda.tar.gz
ack! back these out so I can see what I did wrong. It looks like a
patch-by-hand botch, but it sig-11's during make world.
Diffstat (limited to 'bin/sh/expand.c')
-rw-r--r--bin/sh/expand.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/bin/sh/expand.c b/bin/sh/expand.c
index ee88ad8..ea2bef3 100644
--- a/bin/sh/expand.c
+++ b/bin/sh/expand.c
@@ -97,8 +97,8 @@ STATIC char *exptilde __P((char *, int));
STATIC void expbackq __P((union node *, int, int));
STATIC int subevalvar __P((char *, char *, int, int, int));
STATIC char *evalvar __P((char *, int));
-STATIC int varisset __P((char *));
-STATIC void varvalue __P((char *, int, int));
+STATIC int varisset __P((int));
+STATIC void varvalue __P((int, int, int));
STATIC void recordregion __P((int, int, int));
STATIC void ifsbreakup __P((char *, struct arglist *));
STATIC void expandmeta __P((struct strlist *, int));
@@ -547,7 +547,7 @@ evalvar(p, flag)
p = strchr(p, '=') + 1;
again: /* jump here after setting a variable with ${var=text} */
if (special) {
- set = varisset(var);
+ set = varisset(*var);
val = NULL;
} else {
val = lookupvar(var);
@@ -563,7 +563,7 @@ again: /* jump here after setting a variable with ${var=text} */
/* insert the value of the variable */
if (special) {
char *exp, *oexpdest = expdest;
- varvalue(var, varflags & VSQUOTE, flag & EXP_FULL);
+ varvalue(*var, varflags & VSQUOTE, flag & EXP_FULL);
if (subtype == VSLENGTH) {
for (exp = oexpdest;exp != expdest; exp++)
varlen++;
@@ -677,23 +677,22 @@ record:
STATIC int
varisset(name)
- char *name;
+ char name;
{
char **ap;
- int num;
- if (*name == '!') {
+ if (name == '!') {
if (backgndpid == -1)
return 0;
- } else if (*name == '@' || *name == '*') {
+ } else if (name == '@' || name == '*') {
if (*shellparam.p == NULL)
return 0;
- } else if (is_digit(*name)) {
- num = atoi(name);
+ } else if ((unsigned)(name -= '1') <= '9' - '1') {
ap = shellparam.p;
- while (num-- > 0)
+ do {
if (*ap++ == NULL)
return 0;
+ } while (--name >= 0);
}
return 1;
}
@@ -706,7 +705,7 @@ varisset(name)
STATIC void
varvalue(name, quoted, allow_split)
- char *name;
+ char name;
int quoted;
int allow_split;
{
@@ -733,7 +732,7 @@ varvalue(name, quoted, allow_split)
} while (0)
- switch (*name) {
+ switch (name) {
case '$':
num = rootpid;
goto numvar;
@@ -774,12 +773,9 @@ allargs:
STRTODEST(p);
break;
default:
- if (is_digit(*name)) {
- num = atoi(name);
- if (num > 0 && num <= shellparam.nparam) {
- p = shellparam.p[*name];
- STRTODEST(p);
- }
+ if ((unsigned)(name -= '1') <= '9' - '1') {
+ p = shellparam.p[name];
+ STRTODEST(p);
}
break;
}
OpenPOWER on IntegriCloud