Changeset View
Changeset View
Standalone View
Standalone View
bin/sh/eval.c
Show First 20 Lines • Show All 146 Lines • ▼ Show 20 Lines | |||||
* Execute a command or commands contained in a string. | * Execute a command or commands contained in a string. | ||||
*/ | */ | ||||
void | void | ||||
evalstring(const char *s, int flags) | evalstring(const char *s, int flags) | ||||
{ | { | ||||
union node *n; | union node *n; | ||||
struct stackmark smark; | struct stackmark smark; | ||||
int flags_exit; | int flags_exit, inter; | ||||
int any; | int any; | ||||
flags_exit = flags & EV_EXIT; | flags_exit = flags & EV_EXIT; | ||||
inter = (flags & EV_INTER) != 0; | |||||
flags &= ~EV_EXIT; | flags &= ~EV_EXIT; | ||||
any = 0; | any = 0; | ||||
setstackmark(&smark); | setstackmark(&smark); | ||||
setinputstring(s, 1); | setinputstring(s, 1); | ||||
while ((n = parsecmd(0)) != NEOF) { | while ((n = parsecmd(inter)) != NEOF) { | ||||
if (n != NULL && !nflag) { | if (n != NULL && !nflag) { | ||||
if (flags_exit && preadateof()) | if (flags_exit && preadateof()) | ||||
evaltree(n, flags | EV_EXIT); | evaltree(n, flags | EV_EXIT); | ||||
else | else | ||||
evaltree(n, flags); | evaltree(n, flags); | ||||
any = 1; | any = 1; | ||||
if (evalskip) | if (evalskip) | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 1,204 Lines • Show Last 20 Lines |