register char *acname
, **v
;
if((uid
= getuid()) == 0)
if(c
>1 && v
[1][0]=='-' && v
[1][1]=='e') {
err(": cannot open",255);
if ((arginp
==0&&onelflg
==0) || (f
&01)==0)
treeend
= &trebuf
[TRESIZ
];
err("syntax error",255); else
while((c
=readc()) != c1
) {
if(any(c
, " '\"\t;&<>()|^\n")) {
prs("Command line overflow\n");
while((c
=getc()) != '\n');
err("Too many args",255);
while((c
=getc()) != '\n');
err("Too many characters",255);
if ((c
= *arginp
++) == 0) {
if((rdstat
= read(0, &cc
, 1)) != 1)
if(rdstat
==0) exit(errval
); /* end of file*/
else exit(255); /* error */
t1
[DFLG
] =| FAND
|FPRS
|FINT
;
t
[DRIT
] = syntax(p
+1, p2
);
* ( syn1 ) [ < in ] [ > out ]
* word word* [ < in ] [ > out ]
register char *cp1
, *cp2
;
if(equal(cp1
, "chdir")) {
err("chdir: bad directory",255);
err("chdir: arg count",255);
if(equal(cp1
, "shift")) {
if(equal(cp1
, "login")) {
execv("/bin/login", t
+DCOM
);
prs("login: cannot execute\n");
if(equal(cp1
, "newgrp")) {
execv("/bin/newgrp", t
+DCOM
);
prs("newgrp: cannot execute\n");
err(": cannot open",255);
i
= creat(t
[DRIT
], 0666);
err(": cannot create",255);
if((f
&FINT
)!=0 && t
[DLEF
]==0 && (f
&FPIN
)==0) {
if((f
&FINT
) == 0 && setintr
) {
prs("glob: cannot execute\n");
t1
[DFLG
] =| FPOU
| (f
&(FPIN
|FINT
|FPRS
));
t1
[DFLG
] =| FPIN
| (f
&(FPOU
|FINT
|FAND
|FPRS
));
t
[DSPR
] = "/usr/bin/osh";
if (e
>=NSIG
|| mesg
[e
]) {