diff options
author | peter <peter@FreeBSD.org> | 1996-09-10 02:07:27 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1996-09-10 02:07:27 +0000 |
commit | 3d58e0bf86507cdd7dd291260d2d8b7928f21eda (patch) | |
tree | 4b7d992e0383711d94ddd23149bd0ab1cd468b01 /bin/sh/expand.c | |
parent | 2a6480c367bd2621cada668a2e36069cd73c2e0a (diff) | |
download | FreeBSD-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.c | 34 |
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; } |