aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/mk/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/mk/parse.c')
-rw-r--r--src/cmd/mk/parse.c37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/cmd/mk/parse.c b/src/cmd/mk/parse.c
index 2d1816b9..48bad3d8 100644
--- a/src/cmd/mk/parse.c
+++ b/src/cmd/mk/parse.c
@@ -91,18 +91,18 @@ cp = wtos(tail, ' '); print("assign %s to %s\n", head->s, cp); free(cp);
*/
setvar(head->s, (void *) tail);
symlook(head->s, S_WESET, (void *)"");
+ if(strcmp(head->s, "MKSHELL") == 0){
+ if((err = setshell(tail)) != nil){
+ SYNERR(hline);
+ fprint(2, "%s\n", err);
+ Exit();
+ break;
+ }
+ }
}
if(attr)
symlook(head->s, S_NOEXPORT, (void *)"");
break;
- case 'S':
- if((err = setshell(tail)) != nil){
- SYNERR(hline);
- fprint(2, "%s\n", err);
- Exit();
- break;
- }
- break;
default:
SYNERR(hline);
fprint(2, "expected one of :<=\n");
@@ -144,19 +144,14 @@ rhead(char *line, Word **h, Word **t, int *attr, char **prog)
int n;
Word *w;
- if(*line == '|'){
- sep = 'S'; /* shell */
- p = line+1;
- }else{
- p = shellt->charin(line,":=<");
- if(p == 0)
- return('?');
- sep = *p;
- *p++ = 0;
- if(sep == '<' && *p == '|'){
- sep = '|';
- p++;
- }
+ p = shellt->charin(line,":=<");
+ if(p == 0)
+ return('?');
+ sep = *p;
+ *p++ = 0;
+ if(sep == '<' && *p == '|'){
+ sep = '|';
+ p++;
}
*attr = 0;
*prog = 0;