3
static char *vexpand(char*, Envy*, Bufblock*);
5
#define getfields mkgetfields
8
getfields(char *str, char **args, int max, int mflag, char *set)
22
nr = chartorune(&r, str);
30
args[narg] = str + nr;
43
shprint(char *s, Envy *env, Bufblock *buf, Shell *sh)
49
n = chartorune(&r, s);
51
s = vexpand(s, env, buf);
55
s = sh->copyq(s, r, buf); /*handle quoted strings*/
62
mygetenv(char *name, Envy *env)
66
if (symlook(name, S_WESET, 0) == 0 && symlook(name, S_INTERNAL, 0) == 0)
68
/* only resolve internal variables and variables we've set */
69
for(; env->name; env++){
70
if (strcmp(env->name, name) == 0)
71
return wtos(env->values, ' ');
77
vexpand(char *w, Envy *env, Bufblock *buf)
79
char *s, carry, *p, *q;
81
assert("vexpand no $", *w == '$');
82
p = w+1; /* skip dollar sign */
97
bufcpy(buf, s, strlen(s));
99
} else /* copy name intact*/
112
i = getfields(q, flds, 512, 0, " \t\n");
119
for(j = 0; j < i; j++){
120
for(s = flds[j]; *s; *t++ = *s++);