REG STRING flagc;
STRING flagp;
- IF argc>1 ANDF *argp[1]=='-'
+ IF argc>1 && *argp[1]=='-'
THEN cp=argp[1];
flags &= ~(execpr|readpr);
WHILE *++cp
DO flagc=flagchar;
- WHILE *flagc ANDF *flagc != *cp DO flagc++ OD
+ WHILE *flagc && *flagc != *cp DO flagc++ OD
IF *cp == *flagc
THEN flags |= flagval[flagc-flagchar];
- ELIF *cp=='c' ANDF argc>2 ANDF comdiv==0
+ ELIF *cp=='c' && argc>2 && comdiv==0
THEN comdiv=argp[2];
argp[1]=argp[0]; argp++; argc--;
ELSE failed(argv[1],badopt);
FI
FI
q = p; p = BLK(Rcheat(p->word)&~BUSY);
- PER p>q ORF (c++)==0 DONE
+ PER p>q || (c++)==0 DONE
addblok(rbytes);
POOL
}
{
BLKPTR p;
- IF (p=ap) ANDF p<bloktop
+ IF (p=ap) && p<bloktop
THEN Lcheat((--p)->word) &= ~BUSY;
FI
}
LOOP
q = Rcheat(p->word)&~BUSY;
IF p==ptr THEN exf++ FI
- IF q<end ORF q>bloktop THEN abort(3) FI
+ IF q<end || q>bloktop THEN abort(3) FI
IF p==bloktop THEN break FI
IF busy(p)
THEN us += q-p;
{
REG LSTPTR t;
- IF i==0 ORF r==0
+ IF i==0 || r==0
THEN synbad();
ELSE t = (LSTPTR)getstak(LSTTYPE);
t->lsttyp = type;
THEN IF flg&NLFLG
THEN wdval=';'; chkpr(NL);
FI
- ELIF i==0 ANDF (flg&MTFLG)==0
+ ELIF i==0 && (flg&MTFLG)==0
THEN synbad();
FI
REG INT b;
r = term(flg);
- WHILE r ANDF ((b=(wdval==ANDFSYM)) ORF wdval==ORFSYM)
- DO r = makelist((b ? TAND : TORF), r, term(NLFLG));
+ WHILE r && ((b=(wdval==ANDFSYM)) || wdval==||SYM)
+ DO r = makelist((b ? TAND : T||), r, term(NLFLG));
OD
return(r);
}
ELSE word();
FI
- IF (t=item(TRUE)) ANDF (wdval=='^' ORF wdval=='|')
+ IF (t=item(TRUE)) && (wdval=='^' || wdval=='|')
THEN return(makelist(TFIL, makefork(FPOU,t), makefork(FPIN|FPCL,term(NLFLG))));
ELSE return(t);
FI
r->regptr=0;
LOOP wdarg->argnxt=r->regptr;
r->regptr=wdarg;
- IF wdval ORF ( word()!=')' ANDF wdval!='|' )
+ IF wdval || ( word()!=')' && wdval!='|' )
THEN synbad();
FI
IF wdval=='|'
IF skipnl()==INSYM
THEN chkword();
((FORPTR)t)->forlst=(COMPTR)item(0);
- IF wdval!=NL ANDF wdval!=';'
+ IF wdval!=NL && wdval!=';'
THEN synbad();
FI
chkpr(wdval); skipnl();
argtail = &(((COMPTR)t)->comarg);
WHILE wdval==0
DO argp = wdarg;
- IF wdset ANDF keywd
+ IF wdset && keywd
THEN argp->argnxt=(ARGPTR)argset;
argset=(ARGPTR *)argp;
ELSE *argtail=argp; argtail = &(argp->argnxt); keywd=flags&keyflg;
IF sym&SYMFLG
THEN REG SYSPTR sp=reserved;
WHILE sp->sysval
- ANDF sp->sysval!=sym
+ && sp->sysval!=sym
DO sp++ OD
prs(sp->sysnam);
ELIF sym==EOFSYM
extern char _ctype1[];
/* nb these args are not call by value !!!! */
-#define space(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SPC))
-#define eofmeta(c) (((c)"E)==0 ANDF _ctype1[c]&(_META|T_EOF))
-#define qotchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_QOT))
-#define eolchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_EOR|T_EOF))
-#define dipchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_DIP))
-#define subchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SUB|T_QOT))
-#define escchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_ESC))
+#define space(c) (((c)"E)==0 && _ctype1[c]&(T_SPC))
+#define eofmeta(c) (((c)"E)==0 && _ctype1[c]&(_META|T_EOF))
+#define qotchar(c) (((c)"E)==0 && _ctype1[c]&(T_QOT))
+#define eolchar(c) (((c)"E)==0 && _ctype1[c]&(T_EOR|T_EOF))
+#define dipchar(c) (((c)"E)==0 && _ctype1[c]&(T_DIP))
+#define subchar(c) (((c)"E)==0 && _ctype1[c]&(T_SUB|T_QOT))
+#define escchar(c) (((c)"E)==0 && _ctype1[c]&(T_ESC))
extern char _ctype2[];
-#define digit(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DIG))
-#define fngchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_FNG))
-#define dolchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
-#define defchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DEF))
-#define setchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_SET))
-#define digchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_DIG))
-#define letter(c) (((c)"E)==0 ANDF _ctype2[c]&(T_IDC))
-#define alphanum(c) (((c)"E)==0 ANDF _ctype2[c]&(_IDCH))
-#define astchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST))
+#define digit(c) (((c)"E)==0 && _ctype2[c]&(T_DIG))
+#define fngchar(c) (((c)"E)==0 && _ctype2[c]&(T_FNG))
+#define dolchar(c) (((c)"E)==0 && _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
+#define defchar(c) (((c)"E)==0 && _ctype2[c]&(T_DEF))
+#define setchar(c) (((c)"E)==0 && _ctype2[c]&(T_SET))
+#define digchar(c) (((c)"E)==0 && _ctype2[c]&(T_AST|T_DIG))
+#define letter(c) (((c)"E)==0 && _ctype2[c]&(T_IDC))
+#define alphanum(c) (((c)"E)==0 && _ctype2[c]&(_IDCH))
+#define astchar(c) (((c)"E)==0 && _ctype2[c]&(T_AST))
REG BOOL slash; slash=0;
WHILE !fngchar(*cs)
DO IF *cs++==0
- THEN IF rflg ANDF slash THEN break; ELSE return(0) FI
+ THEN IF rflg && slash THEN break; ELSE return(0) FI
ELIF *cs=='/'
THEN slash++;
FI
FI
POOL
IF stat(s,&statb)>=0
- ANDF (statb.st_mode&S_IFMT)==S_IFDIR
- ANDF (dirf=open(s,0))>0
+ && (statb.st_mode&S_IFMT)==S_IFDIR
+ && (dirf=open(s,0))>0
THEN dir++;
FI
count=0;
PER *rs++ DONE
// FIXME: readdir
- WHILE read(dirf, (void *)&entry, 32) == 32 ANDF (trapnote&SIGSET) == 0
- DO IF entry.d_ino==0 ORF
- (*entry.d_name=='.' ANDF *cs!='.')
+ WHILE read(dirf, (void *)&entry, 32) == 32 && (trapnote&SIGSET) == 0
+ DO IF entry.d_ino==0 ||
+ (*entry.d_name=='.' && *cs!='.')
THEN continue;
FI
IF gmatch(entry.d_name, cs)
DO IF c==']'
THEN return(ok?gmatch(s,p):0);
ELIF c==MINUS
- THEN IF lc<=scc ANDF scc<=(*p++) THEN ok++ FI
+ THEN IF lc<=scc && scc<=(*p++) THEN ok++ FI
ELSE IF scc==(lc=(c&STRIP)) THEN ok++ FI
FI
OD
{
REG INT i;
- IF trapflg[i=n]&SIGMOD ORF ignsig(i)==0
+ IF trapflg[i=n]&SIGMOD || ignsig(i)==0
THEN signal(i,fault);
FI
}
i=MAXTRAP;
WHILE i--
DO t=trapcom[i];
- IF t==0 ORF *t
+ IF t==0 || *t
THEN clrsig(i);
FI
trapflg[i]=0;
chkpipe(pv)
INT *pv;
{
- IF pipe(pv)<0 ORF pv[INPIPE]<0 ORF pv[OTPIPE]<0
+ IF pipe(pv)<0 || pv[INPIPE]<0 || pv[OTPIPE]<0
THEN error(piperr);
FI
}
LOOP clinep=cline; chkpr(NL);
WHILE (c = (nosubst ? readc() : nextc(*ends)), !eolchar(c)) DO *clinep++ = c OD
*clinep=0;
- IF eof ORF eq(cline,ends) THEN break FI
+ IF eof || eq(cline,ends) THEN break FI
*clinep++=NL;
write(fd,cline,clinep-cline);
POOL
#define LOOP for(;;){
#define POOL }
-
-#define NEQ ^
-#define ANDF &&
-#define ORF ||
-
#define TRUE (-1)
#define FALSE 0
#define LOBYTE 0377
{
REG CHAR c;
- WHILE (c=getch(endch))!=endch ANDF c
+ WHILE (c=getch(endch))!=endch && c
DO pushstak(c|quote) OD
zerostak();
IF c!=endch THEN error(badsub) FI
{
/* skip chars up to } */
REG CHAR c;
- WHILE (c=readc()) ANDF c!=endch
+ WHILE (c=readc()) && c!=endch
DO SWITCH c IN
case SQUOTE: skipto(SQUOTE); break;
ELSE goto retry;
FI
c = readc();
- IF !defchar(c) ANDF bra
+ IF !defchar(c) && bra
THEN error(badsub);
FI
argp=0;
THEN IF c!='+'
THEN LOOP WHILE c = *v++
DO pushstak(c|quote); OD
- IF dolg==0 ORF (++dolg>dolc)
+ IF dolg==0 || (++dolg>dolc)
THEN break;
ELSE v=dolv[dolg]; pushstak(SP|(*id=='*' ? quote : 0));
FI
quote=0; quoted=0;
copyto(0);
pop();
- IF quoted ANDF (stakbot==staktop) THEN pushstak(QUOTE) FI
+ IF quoted && (stakbot==staktop) THEN pushstak(QUOTE) FI
quote=savq; quoted=savqu;
return(fixstak());
}
REG STKPTR savptr = fixstak();
usestak();
- WHILE (d=readc())!=SQUOTE ANDF d
+ WHILE (d=readc())!=SQUOTE && d
DO pushstak(d) OD
BEGIN
sh_getenv();
/* look for restricted */
-/* IF c>0 ANDF any('r', *v) THEN rflag=0 FI */
+/* IF c>0 && any('r', *v) THEN rflag=0 FI */
/* look for options */
dolc=options(c,v);
IF (beenhere++)==FALSE
THEN /* ? profile */
IF *cmdadr=='-'
- ANDF (input=pathopen(nullstr, profile))>=0
+ && (input=pathopen(nullstr, profile))>=0
THEN exfile(rflag); flags &= ~ttyflg;
FI
IF rflag==0 THEN flags |= rshflg FI
userid=getuid();
/* decide whether interactive */
- IF (flags&intflg) ORF ((flags&oneflg)==0 ANDF isatty(output) ANDF isatty(input))
+ IF (flags&intflg) || ((flags&oneflg)==0 && isatty(output) && isatty(input))
THEN dfault(&ps1nod, (userid?stdprompt:supprompt));
dfault(&ps2nod, readmsg);
flags |= ttyflg|prompt; ignsig(KILL);
ELSE flags |= prof; flags &= ~prompt;
FI
- IF setjmp(errshell) ANDF prof
+ IF setjmp(errshell) && prof
THEN close(input); return;
FI
LOOP tdystak(0);
stakchk(); /* may reduce sbrk */
exitset();
- IF (flags&prompt) ANDF standin->fstak==0 ANDF !eof
+ IF (flags&prompt) && standin->fstak==0 && !eof
THEN IF mailnod.namval
- ANDF stat(mailnod.namval,&statb)>=0 ANDF statb.st_size
- ANDF (statb.st_mtime != mailtime)
- ANDF mailtime
+ && stat(mailnod.namval,&statb)>=0 && statb.st_size
+ && (statb.st_mtime != mailtime)
+ && mailtime
THEN prs(mailmsg)
FI
mailtime=statb.st_mtime;
chkpr(eor)
char eor;
{
- IF (flags&prompt) ANDF standin->fstak==0 ANDF eor==NL
+ IF (flags&prompt) && standin->fstak==0 && eor==NL
THEN prs(ps2nod.namval);
FI
}
WHILE s=syscan->sysnam
DO IF first == *s
- ANDF eq(w,s)
+ && eq(w,s)
THEN return(syscan->sysval);
FI
syscan++;
FI
LOOP c=nextc(0);
- IF (*names ANDF any(c, ifsnod.namval)) ORF eolchar(c)
+ IF (*names && any(c, ifsnod.namval)) || eolchar(c)
THEN zerostak();
assign(n,absstak(rel)); setstak(rel);
IF *names
prp()
{
- IF (flags&prompt)==0 ANDF cmdadr
+ IF (flags&prompt)==0 && cmdadr
THEN prs(cmdadr); prs(colon);
FI
}
REG INT r = 0;
REG CHAR c;
- WHILE (c = *cp, digit(c)) ANDF c ANDF r>=0
+ WHILE (c = *cp, digit(c)) && c && r>=0
DO r = r*10 + c - '0'; cp++ OD
- IF r<0 ORF cp==icp
+ IF r<0 || cp==icp
THEN failed(icp,badnum);
ELSE return(r);
FI
IF iop
THEN iof=iop->iofile;
ion=mactrim(iop->ioname);
- IF *ion ANDF (flags&noexec)==0
+ IF *ion && (flags&noexec)==0
THEN IF iof&IODOC
THEN subst(chkopen(ion),(fd=tmpfil()));
close(fd); fd=chkopen(tmpout); unlink(tmpout);
THEN fd=chkopen(ion);
ELIF flags&rshflg
THEN failed(ion,restricted);
- ELIF iof&IOAPP ANDF (fd=open(ion,1))>=0
+ ELIF iof&IOAPP && (fd=open(ion,1))>=0
THEN lseek(fd, 0L, 2);
ELSE fd=create(ion);
FI
REG UFD f;
REP path=catpath(path,name);
- PER (f=open(curstak(),0))<0 ANDF path DONE
+ PER (f=open(curstak(),0))<0 && path DONE
return(f);
}
REG STRING scanp = path,
argp = locstak();
- WHILE *scanp ANDF *scanp!=COLON DO *argp++ = *scanp++ OD
+ WHILE *scanp && *scanp!=COLON DO *argp++ = *scanp++ OD
IF scanp!=path THEN *argp++='/' FI
IF *scanp==COLON THEN scanp++ FI
path=(*scanp ? scanp : 0); scanp=name;
sig = w_hi;
FI
IF sysmsg[sig]
- THEN IF i!=p ORF (flags&prompt)==0 THEN prp(); prn(p); blank() FI
+ THEN IF i!=p || (flags&prompt)==0 THEN prp(); prn(p); blank() FI
prs(sysmsg[sig]);
IF w&0200 THEN prs(coredump) FI
FI
wx |= w;
OD
- IF wx ANDF flags&errflg
+ IF wx && flags&errflg
THEN exitsh(rc);
FI
exitval=rc; exitset();
IF argp = argp->argnxt
THEN trim(*comargn);
FI
- IF argp==0 ORF Rcheat(argp)&ARGMK
+ IF argp==0 || Rcheat(argp)&ARGMK
THEN gsort(comargn,comargm);
comargm = comargn;
FI
IF !eofmeta(c)
THEN REP IF c==LITERAL
THEN *argp++=(DQUOTE);
- WHILE (c=readc()) ANDF c!=LITERAL
+ WHILE (c=readc()) && c!=LITERAL
DO *argp++=(c|QUOTE); chkpr(c) OD
*argp++=(DQUOTE);
ELSE *argp++=(c);
IF !alphanum(c) THEN alpha=0 FI
IF qotchar(c)
THEN d=c;
- WHILE (*argp++=(c=nextc(d))) ANDF c!=d
+ WHILE (*argp++=(c=nextc(d))) && c!=d
DO chkpr(c) OD
FI
FI
IF !letter(((ARGPTR)argp)->argval[0]) THEN wdset=0 FI
peekc=c|MARK;
- IF ((ARGPTR)argp)->argval[1]==0 ANDF (d=((ARGPTR)argp)->argval[0], digit(d)) ANDF (c=='>' ORF c=='<')
+ IF ((ARGPTR)argp)->argval[1]==0 && (d=((ARGPTR)argp)->argval[0], digit(d)) && (c=='>' || c=='<')
THEN word(); wdnum=d-'0';
ELSE /*check for reserved words*/
- IF reserv==FALSE ORF (wdval=syslook(((ARGPTR)argp)->argval,reserved))==0
+ IF reserv==FALSE || (wdval=syslook(((ARGPTR)argp)->argval,reserved))==0
THEN wdarg=(ARGPTR)argp; wdval=0;
FI
FI
ELSE IF (wdval=c)==EOF
THEN wdval=EOFSYM;
FI
- IF iopend ANDF eolchar(c)
+ IF iopend && eolchar(c)
THEN copy(iopend); iopend=0;
FI
FI
IF (d=readc())==ESCAPE
THEN IF (c=readc())==NL
THEN chkpr(NL); d=nextc(quote);
- ELIF quote ANDF c!=quote ANDF !escchar(c)
+ ELIF quote && c!=quote && !escchar(c)
THEN peekc=c|MARK;
ELSE d = c|QUOTE;
FI
ELSE goto retry; /* = c=readc(); */
FI
FI
- IF flags&readpr ANDF standin->fstak==0 THEN prc(c) FI
+ IF flags&readpr && standin->fstak==0 THEN prc(c) FI
IF c==NL THEN f->flin++ FI
- ELIF f->feof ORF f->fdes<0
+ ELIF f->feof || f->fdes<0
THEN c=EOF; f->feof++;
ELIF (len=readb())<=0
THEN close(f->fdes); f->fdes = -1; c=EOF; f->feof++;
REG INT len;
REP IF trapnote&SIGSET THEN newline(); sigchk() FI
- PER (len=read(f->fdes,f->fbuf,f->fsiz))<0 ANDF trapnote DONE
+ PER (len=read(f->fdes,f->fbuf,f->fsiz))<0 && trapnote DONE
return(len);
}
static INT parent;
-SYSTAB commands;
+extern SYSTAB commands;
sigchk();
- IF (t=argt) ANDF execbrk==0
+ IF (t=argt) && execbrk==0
THEN REG INT treeflgs;
INT oldexit, type;
REG STRING *com;
com=scan(argn);
a1=com[1]; gchain=schain;
- IF (internal=syslook(com[0],commands)) ORF argn==0
+ IF (internal=syslook(com[0],commands)) || argn==0
THEN setlist(((COMPTR)t)->comset, 0);
FI
- IF argn ANDF (flags&noexec)==0
+ IF argn && (flags&noexec)==0
THEN /* print command if execpr */
IF flags&execpr
THEN argn=0; prs(execpmsg);
execbrk = -loopcnt; break;
case SYSBREAK:
- IF (execbrk=loopcnt) ANDF a1
+ IF (execbrk=loopcnt) && a1
THEN breakcnt=stoi(a1);
FI
break;
FI
WHILE *++com
DO INT i;
- IF (i=stoi(*com))>=MAXTRAP ORF i<MINTRAP
+ IF (i=stoi(*com))>=MAXTRAP || i<MINTRAP
THEN failed(*com,badtrap);
ELIF clear
THEN clrsig(i);
case SYSCD:
IF flags&rshflg
THEN failed(com[0],restricted);
- ELIF (a1==0 ANDF (a1=homenod.namval)==0) ORF chdir(a1)<0
+ ELIF (a1==0 && (a1=homenod.namval)==0) || chdir(a1)<0
THEN failed(a1,baddir);
FI
break;
END
case TFORK:
- IF execflg ANDF (treeflgs&(FAMP|FPOU))==0
+ IF execflg && (treeflgs&(FAMP|FPOU))==0
THEN parent=0;
ELSE WHILE (parent=fork()) == -1
DO sigchk(); alarm(10); pause() OD
IF parent
THEN /* This is the parent branch of fork; */
/* it may or may not wait for the child. */
- IF treeflgs&FPRS ANDF flags&ttyflg
+ IF treeflgs&FPRS && flags&ttyflg
THEN prn(parent); newline();
FI
IF treeflgs&FPCL THEN closepipe(pf1) FI
FI
/* default std input for & */
- IF treeflgs&FINT ANDF ioset==0
+ IF treeflgs&FINT && ioset==0
THEN sh_rename(chkopen(devnull),0);
FI
FI
break;
- case TORF:
+ case T||:
IF execute(((LSTPTR)t)->lstlef,0)!=0
THEN execute(((LSTPTR)t)->lstrit,execflg);
FI
gchain=schain;
FI
loopcnt++;
- WHILE *args!=ENDARGS ANDF execbrk==0
+ WHILE *args!=ENDARGS && execbrk==0
DO assign(n,*args++);
execute(((FORPTR)t)->fortre,0);
IF execbrk<0 THEN execbrk=0 FI
INT i=0;
loopcnt++;
- WHILE execbrk==0 ANDF (execute(((WHPTR)t)->whtre,0)==0)==(type==TWH)
+ WHILE execbrk==0 && (execute(((WHPTR)t)->whtre,0)==0)==(type==TWH)
DO i=execute(((WHPTR)t)->dotre,0);
IF execbrk<0 THEN execbrk=0 FI
OD
DO ARGPTR rex=((REGPTR)t)->regptr;
WHILE rex
DO REG STRING s;
- IF gmatch(r,s=macro(rex->argval)) ORF (trim(s), eq(r,s))
+ IF gmatch(r,s=macro(rex->argval)) || (trim(s), eq(r,s))
THEN execute(((REGPTR)t)->regcom,0);
t=0; break;
ELSE rex=((ARGPTR)rex)->argnxt;