Demacified bin/sh
authorNick Downing <downing.nick@gmail.com>
Mon, 30 Jan 2017 00:06:47 +0000 (11:06 +1100)
committerNick Downing <downing.nick@gmail.com>
Mon, 30 Jan 2017 00:06:47 +0000 (11:06 +1100)
24 files changed:
bin/sh/args.c
bin/sh/blok.c
bin/sh/cmd.c
bin/sh/ctype.c
bin/sh/ctype.h
bin/sh/defs.h
bin/sh/error.c
bin/sh/expand.c
bin/sh/fault.c
bin/sh/io.c
bin/sh/macro.c
bin/sh/main.c
bin/sh/mode.h
bin/sh/msg.c
bin/sh/name.c
bin/sh/name.h
bin/sh/print.c
bin/sh/service.c
bin/sh/setbrk.c
bin/sh/stak.c
bin/sh/stak.h
bin/sh/string.c
bin/sh/word.c
bin/sh/xec.c

index c75a958..5b38781 100644 (file)
@@ -13,70 +13,73 @@ static char sccsid[] = "@(#)args.c  4.4 7/31/85";
 
 #include       "defs.h"
 
-PROC STRING *copyargs();
-LOCAL DOLPTR   dolh;
+extern char **copyargs();
+static struct dolnod   *dolh;
 
-CHAR   flagadr[10];
+char   flagadr[10];
 
-CHAR   flagchar[] = {
+char   flagchar[] = {
        'x',    'n',    'v',    't',    's',    'i',    'e',    'r',    'k',    'u',    0
-};
-INT    flagval[]  = {
+}
+int    flagval[]  = {
        execpr, noexec, readpr, oneflg, stdflg, intflg, errflg, rshflg, keyflg, setflg, 0
-};
+}
 
 /* ========    option handling ======== */
 
 
-INT    options(argc,argv)
-       STRING          *argv;
-       INT             argc;
+int    options(argc,argv)
+       char            **argv;
+       int             argc;
 {
-       REG STRING      cp;
-       REG STRING      *argp=argv;
-       REG STRING      flagc;
-       STRING          flagp;
+       register char   *cp;
+       register char   **argp=argv;
+       register char   *flagc;
+       char            *flagp;
 
-       IF argc>1 ANDF *argp[1]=='-'
-       THEN    cp=argp[1];
+       if (argc>1 && *argp[1]=='-') {
+               cp=argp[1];
                flags &= ~(execpr|readpr);
-               WHILE *++cp
-               DO      flagc=flagchar;
-
-                       WHILE *flagc ANDF *flagc != *cp DO flagc++ OD
-                       IF *cp == *flagc
-                       THEN    flags |= flagval[flagc-flagchar];
-                       ELIF *cp=='c' ANDF argc>2 ANDF comdiv==0
-                       THEN    comdiv=argp[2];
+               while (*++cp) {
+                       flagc=flagchar;
+
+                       while (*flagc && *flagc != *cp) { flagc++; }
+                       if (*cp == *flagc) {
+                               flags |= flagval[flagc-flagchar];
+                       }
+                       else if (*cp=='c' && argc>2 && comdiv==0) {
+                               comdiv=argp[2];
                                argp[1]=argp[0]; argp++; argc--;
-                       ELSE    failed(argv[1],badopt);
-                       FI
-               OD
+                       }
+                       else {
+                               failed(argv[1],badopt);
+                       }
+               }
                argp[1]=argp[0]; argc--;
-       FI
+       }
 
        /* set up $- */
        flagc=flagchar;
        flagp=flagadr;
-       WHILE *flagc
-       DO IF flags&flagval[flagc-flagchar]
-          THEN *flagp++ = *flagc;
-          FI
+       while (*flagc) {
+          if (flags&flagval[flagc-flagchar]) {
+               *flagp++ = *flagc;
+          }
           flagc++;
-       OD
+       }
        *flagp++=0;
 
        return(argc);
 }
 
-VOID   setargs(argi)
-       STRING          argi[];
+void   setargs(argi)
+       char            *argi[];
 {
        /* count args */
-       REG STRING      *argp=argi;
-       REG INT         argn=0;
+       register char   **argp=argi;
+       register int            argn=0;
 
-       WHILE Rcheat(*argp++)!=ENDARGS DO argn++ OD
+       while (Rcheat(*argp++)!=ENDARGS) { argn++; }
 
        /* free old ones unless on for loop chain */
        freeargs(dolh);
@@ -85,36 +88,34 @@ VOID        setargs(argi)
 }
 
 freeargs(blk)
-       DOLPTR          blk;
+       struct dolnod           *blk;
 {
-       REG STRING      *argp;
-       REG DOLPTR      argr=0;
-       REG DOLPTR      argblk;
-
-       IF argblk=blk
-       THEN    argr = argblk->dolnxt;
-               IF (--argblk->doluse)==0
-               THEN    FOR argp=argblk->dolarg; Rcheat(*argp)!=ENDARGS; argp++
-                       DO free(*argp) OD
+       register char   **argp;
+       register struct dolnod  *argr=0;
+       register struct dolnod  *argblk;
+
+       if (argblk=blk) {
+               argr = argblk->dolnxt;
+               if ((--argblk->doluse)==0) {
+                       for (argp=argblk->dolarg; Rcheat(*argp)!=ENDARGS; argp++) { free(*argp); }
                        free(argblk);
-               FI
-       FI
+               }
+       }
        return(argr);
 }
 
-LOCAL STRING * copyargs(from, n)
-       STRING          from[];
+static char*CHECKME *  copyargs(from, n)
+       char            *from[];
 {
-       REG STRING *    np=alloc(sizeof(STRING*)*n+3*BYTESPERWORD);
-       REG STRING *    fp=from;
-       REG STRING *    pp=np;
+       register char **        np=alloc(sizeof(char*CHECKME*)*n+3*BYTESPERWORD);
+       register char **        fp=from;
+       register char **        pp=np;
 
        np->doluse=1;   /* use count */
        np=np->dolarg;
        dolv=np;
 
-       WHILE n--
-       DO *np++ = make(*fp++) OD
+       while (n--) { *np++ = make(*fp++); }
        *np++ = ENDARGS;
        return(pp);
 }
@@ -122,18 +123,20 @@ LOCAL STRING *    copyargs(from, n)
 clearup()
 {
        /* force `for' $* lists to go away */
-       WHILE argfor=freeargs(argfor) DONE
+       while (argfor=freeargs(argfor));
 
        /* clean up io files */
-       WHILE pop() DONE
+       while (pop());
 }
 
-DOLPTR useargs()
+struct dolnod  *useargs()
 {
-       IF dolh
-       THEN    dolh->doluse++;
+       if (dolh) {
+               dolh->doluse++;
                dolh->dolnxt=argfor;
                return(argfor=dolh);
-       ELSE    return(0);
-       FI
+       }
+       else {
+               return(0);
+       }
 }
index 52b4ff0..2992895 100644 (file)
@@ -22,94 +22,100 @@ static char sccsid[] = "@(#)blok.c 4.2 8/11/83";
 #define BUSY 01
 #define busy(x)        (Rcheat((x)->word)&BUSY)
 
-POS            brkincr=BRKINCR;
-BLKPTR         blokp;                  /*current search pointer*/
-BLKPTR         bloktop=BLK(end);       /*top of arena (last blok)*/
+unsigned               brkincr=BRKINCR;
+struct blk             *blokp;                 /*current search pointer*/
+struct blk             *bloktop=(struct blk *)(end);   /*top of arena (last blok)*/
 
 
 
-ADDRESS        alloc(nbytes)
-       POS             nbytes;
+void   *alloc(nbytes)
+       unsigned                nbytes;
 {
-       REG POS         rbytes = round(nbytes+BYTESPERWORD,BYTESPERWORD);
-
-       LOOP    INT             c=0;
-               REG BLKPTR      p = blokp;
-               REG BLKPTR      q;
-               REP     IF !busy(p)
-                       THEN    WHILE !busy(q = p->word) DO p->word = q->word OD
-                               IF ADR(q)-ADR(p) >= rbytes
-                               THEN    blokp = BLK(ADR(p)+rbytes);
-                                       IF q > blokp
-                                       THEN    blokp->word = p->word;
-                                       FI
-                                       p->word=BLK(Rcheat(blokp)|BUSY);
-                                       return(ADR(p+1));
-                               FI
-                       FI
-                       q = p; p = BLK(Rcheat(p->word)&~BUSY);
-               PER     p>q ORF (c++)==0 DONE
+       register unsigned               rbytes = round(nbytes+BYTESPERWORD,BYTESPERWORD);
+
+       for(;;) {
+               int             c=0;
+               register struct blk     *p = blokp;
+               register struct blk     *q;
+               do {
+                       if (!busy(p)) {
+                               while (!busy(q = p->word)) { p->word = q->word; }
+                               if ((void *)(q)-(void *)(p) >= rbytes) {
+                                       blokp = (struct blk *)((void *)(p)+rbytes);
+                                       if (q > blokp) {
+                                               blokp->word = p->word;
+                                       }
+                                       p->word=(struct blk *)(Rcheat(blokp)|BUSY);
+                                       return((void *)(p+1));
+                               }
+                       }
+                       q = p; p = (struct blk *)(Rcheat(p->word)&~BUSY);
+               } while (p>q || (c++)==0);
                addblok(rbytes);
-       POOL
+       }
 }
 
-VOID   addblok(reqd)
-       POS             reqd;
+void   addblok(reqd)
+       unsigned                reqd;
 {
-       IF stakbas!=staktop
-       THEN    REG STKPTR      rndstak;
-               REG BLKPTR      blokstak;
+       if (stakbas!=staktop) {
+               register char   *rndstak;
+               register struct blk     *blokstak;
 
                pushstak(0);
                rndstak=round(staktop,BYTESPERWORD);
-               blokstak=BLK(stakbas)-1;
+               blokstak=(struct blk *)(stakbas)-1;
                blokstak->word=stakbsy; stakbsy=blokstak;
-               bloktop->word=BLK(Rcheat(rndstak)|BUSY);
-               bloktop=BLK(rndstak);
-       FI
+               bloktop->word=(struct blk *)(Rcheat(rndstak)|BUSY);
+               bloktop=(struct blk *)(rndstak);
+       }
        reqd += brkincr; reqd &= ~(brkincr-1);
        blokp=bloktop;
-       bloktop=bloktop->word=BLK(Rcheat(bloktop)+reqd);
-       bloktop->word=BLK(ADR(end)+1);
-       BEGIN
-          REG STKPTR stakadr=STK(bloktop+2);
+       bloktop=bloktop->word=(struct blk *)(Rcheat(bloktop)+reqd);
+       bloktop->word=(struct blk *)((void *)(end)+1);
+       {
+            
+          register char *stakadr=(char *)(bloktop+2);
           staktop=movstr(stakbot,stakadr);
           stakbas=stakbot=stakadr;
-       END
+       }
 }
 
-VOID   free(ap)
-       BLKPTR          ap;
+void   free(ap)
+       struct blk              *ap;
 {
-       REG BLKPTR      p;
+       register struct blk     *p;
 
-       IF (p=ap) ANDF p<bloktop
-       THEN    Lcheat((--p)->word) &= ~BUSY;
-       FI
+       if ((p=ap) && p<bloktop) {
+               Lcheat((--p)->word) &= ~BUSY;
+       }
 }
 
 #ifdef DEBUG
 chkbptr(ptr)
-       BLKPTR  ptr;
+       struct blk      *ptr;
 {
-       INT             exf=0;
-       REG BLKPTR      p = end;
-       REG BLKPTR      q;
-       INT             us=0, un=0;
+       int             exf=0;
+       register struct blk     *p = end;
+       register struct blk     *q;
+       int             us=0, un=0;
 
-       LOOP
+       for(;;) {
+           
           q = Rcheat(p->word)&~BUSY;
-          IF p==ptr THEN exf++ FI
-          IF q<end ORF q>bloktop THEN abort(3) FI
-          IF p==bloktop THEN break FI
-          IF busy(p)
-          THEN us += q-p;
-          ELSE un += q-p;
-          FI
-          IF p>=q THEN abort(4) FI
+          if (p==ptr) { exf++; }
+          if (q<end || q>bloktop) { abort(3); }
+          if (p==bloktop) { break; }
+          if (busy(p)) {
+               us += q-p;
+          }
+          else {
+               un += q-p;
+          }
+          if (p>=q) { abort(4); }
           p=q;
-       POOL
-       IF exf==0 THEN abort(1) FI
-       prn(un); prc(SP); prn(us); prc(NL);
+       }
+       if (exf==0) { abort(1); }
+       prn(un); prc(' '); prn(us); prc('\n');
 }
 #endif
index f6e1b19..e76f54c 100644 (file)
@@ -14,17 +14,17 @@ static char sccsid[] = "@(#)cmd.c   4.2 8/11/83";
 #include       "defs.h"
 #include       "sym.h"
 
-PROC IOPTR     inout();
-PROC VOID      chkword();
-PROC VOID      chksym();
-PROC TREPTR    term();
-PROC TREPTR    makelist();
-PROC TREPTR    list();
-PROC REGPTR    syncase();
-PROC TREPTR    item();
-PROC VOID      skipnl();
-PROC VOID      prsym();
-PROC VOID      synbad();
+extern struct ionod    *inout();
+extern void    chkword();
+extern void    chksym();
+extern struct trenod   *term();
+extern struct trenod   *makelist();
+extern struct trenod   *list();
+extern struct regnod   *syncase();
+extern struct trenod   *item();
+extern void    skipnl();
+extern void    prsym();
+extern void    synbad();
 
 
 /* ========    command line decoding   ========*/
@@ -32,29 +32,31 @@ PROC VOID   synbad();
 
 
 
-TREPTR makefork(flgs, i)
-       INT             flgs;
-       TREPTR          i;
+struct trenod*CHECKME  makefork(flgs, i)
+       int             flgs;
+       struct trenod           *i;
 {
-       REG TREPTR      t;
+       register struct trenod  *t;
 
-       t=getstak(FORKTYPE);
+       t=getstak(sizeof(struct forknod));
        t->forktyp=flgs|TFORK; t->forktre=i; t->forkio=0;
        return(t);
 }
 
-LOCAL TREPTR   makelist(type,i,r)
-       INT             type;
-       TREPTR          i, r;
+static struct trenod*CHECKME   makelist(type,i,r)
+       int             type;
+       struct trenod*CHECKME           i, r;
 {
-       REG TREPTR      t;
+       register struct trenod  *t;
 
-       IF i==0 ORF r==0
-       THEN    synbad();
-       ELSE    t = getstak(LSTTYPE);
+       if (i==0 || r==0) {
+               synbad();
+       }
+       else {
+               t = getstak(sizeof(struct lstnod));
                t->lsttyp = type;
                t->lstlef = i; t->lstrit = r;
-       FI
+       }
        return(t);
 }
 
@@ -66,47 +68,51 @@ LOCAL TREPTR        makelist(type,i,r)
  *     list [ ; cmd ]
  */
 
-TREPTR cmd(sym,flg)
-       REG INT         sym;
-       INT             flg;
+struct trenod*CHECKME  cmd(sym,flg)
+       register int            sym;
+       int             flg;
 {
-       REG TREPTR      i, e;
+       register struct trenod*CHECKME  i, e;
 
        i = list(flg);
 
-       IF wdval==NL
-       THEN    IF flg&NLFLG
-               THEN    wdval=';'; chkpr(NL);
-               FI
-       ELIF i==0 ANDF (flg&MTFLG)==0
-       THEN    synbad();
-       FI
+       if (wdval=='\n') {
+               if (flg&NLFLG) {
+                       wdval=';'; chkpr('\n');
+               }
+       }
+       else if (i==0 && (flg&MTFLG)==0) {
+               synbad();
+       }
 
-       SWITCH wdval IN
+       switch (wdval) {
+         
 
            case '&':
-               IF i
-               THEN    i = makefork(FINT|FPRS|FAMP, i);
-               ELSE    synbad();
-               FI
+               if (i) {
+                       i = makefork(FINT|FPRS|FAMP, i);
+               }
+               else {
+                       synbad();
+               }
 
            case ';':
-               IF e=cmd(sym,flg|MTFLG)
-               THEN    i=makelist(TLST, i, e);
-               FI
+               if (e=cmd(sym,flg|MTFLG)) {
+                       i=makelist(TLST, i, e);
+               }
                break;
 
            case EOFSYM:
-               IF sym==NL
-               THEN    break;
-               FI
+               if (sym=='\n') {
+                       break;
+               }
 
            default:
-               IF sym
-               THEN    chksym(sym);
-               FI
+               if (sym) {
+                       chksym(sym);
+               }
 
-       ENDSW
+       }
        return(i);
 }
 
@@ -117,15 +123,15 @@ TREPTR    cmd(sym,flg)
  *     list || term
  */
 
-LOCAL TREPTR   list(flg)
+static struct trenod   *list(flg)
 {
-       REG TREPTR      r;
-       REG INT         b;
+       register struct trenod  *r;
+       register int            b;
 
        r = term(flg);
-       WHILE r ANDF ((b=(wdval==ANDFSYM)) ORF wdval==ORFSYM)
-       DO      r = makelist((b ? TAND : TORF), r, term(NLFLG));
-       OD
+       while (r && ((b=(wdval==ANDFSYM)) || wdval==ORFSYM)) {
+               r = makelist((b ? TAND : TORF), r, term(NLFLG));
+       }
        return(r);
 }
 
@@ -135,48 +141,59 @@ LOCAL TREPTR      list(flg)
  *     item |^ term
  */
 
-LOCAL TREPTR   term(flg)
+static struct trenod   *term(flg)
 {
-       REG TREPTR      t;
+       register struct trenod  *t;
 
        reserv++;
-       IF flg&NLFLG
-       THEN    skipnl();
-       ELSE    word();
-       FI
-
-       IF (t=item(TRUE)) ANDF (wdval=='^' ORF wdval=='|')
-       THEN    return(makelist(TFIL, makefork(FPOU,t), makefork(FPIN|FPCL,term(NLFLG))));
-       ELSE    return(t);
-       FI
+       if (flg&NLFLG) {
+               skipnl();
+       }
+       else {
+               word();
+       }
+
+       if ((t=item(-1)) && (wdval=='^' || wdval=='|')) {
+               return(makelist(TFIL, makefork(FPOU,t), makefork(FPIN|FPCL,term(NLFLG))));
+       }
+       else {
+               return(t);
+       }
 }
 
-LOCAL REGPTR   syncase(esym)
-       REG INT esym;
+static struct regnod   *syncase(esym)
+       register int    esym;
 {
        skipnl();
-       IF wdval==esym
-       THEN    return(0);
-       ELSE    REG REGPTR      r=getstak(REGTYPE);
+       if (wdval==esym) {
+               return(0);
+       }
+       else {
+               register struct regnod  *r=getstak(sizeof(struct regnod));
                r->regptr=0;
-               LOOP wdarg->argnxt=r->regptr;
+               for(;;) {
+                    wdarg->argnxt=r->regptr;
                     r->regptr=wdarg;
-                    IF wdval ORF ( word()!=')' ANDF wdval!='|' )
-                    THEN synbad();
-                    FI
-                    IF wdval=='|'
-                    THEN word();
-                    ELSE break;
-                    FI
-               POOL
+                    if (wdval || ( word()!=')' && wdval!='|' )) {
+                         synbad();
+                    }
+                    if (wdval=='|') {
+                         word();
+                    }
+                    else {
+                         break;
+                    }
+               }
                r->regcom=cmd(0,NLFLG|MTFLG);
-               IF wdval==ECSYM
-               THEN    r->regnxt=syncase(esym);
-               ELSE    chksym(esym);
+               if (wdval==ECSYM) {
+                       r->regnxt=syncase(esym);
+               }
+               else {
+                       chksym(esym);
                        r->regnxt=0;
-               FI
+               }
                return(r);
-       FI
+       }
 }
 
 /*
@@ -190,221 +207,242 @@ LOCAL REGPTR    syncase(esym)
  *     begin ... end
  */
 
-LOCAL TREPTR   item(flag)
-       BOOL            flag;
+static struct trenod   *item(flag)
+       bool            flag;
 {
-       REG TREPTR      t;
-       REG IOPTR       io;
+       register struct trenod  *t;
+       register struct ionod   *io;
 
-       IF flag
-       THEN    io=inout((IOPTR)0);
-       ELSE    io=0;
-       FI
+       if (flag) {
+               io=inout((struct ionod*CHECKME)0);
+       }
+       else {
+               io=0;
+       }
 
-       SWITCH wdval IN
+       switch (wdval) {
+         
 
            case CASYM:
-               BEGIN
-                  t=getstak(SWTYPE);
+               {
+                    
+                  t=getstak(sizeof(struct swnod));
                   chkword();
                   t->swarg=wdarg->argval;
                   skipnl(); chksym(INSYM|BRSYM);
                   t->swlst=syncase(wdval==INSYM?ESSYM:KTSYM);
                   t->swtyp=TSW;
                   break;
-               END
+               }
 
            case IFSYM:
-               BEGIN
-                  REG INT      w;
-                  t=getstak(IFTYPE);
+               {
+                    
+                  register int w;
+                  t=getstak(sizeof(struct ifnod));
                   t->iftyp=TIF;
                   t->iftre=cmd(THSYM,NLFLG);
                   t->thtre=cmd(ELSYM|FISYM|EFSYM,NLFLG);
                   t->eltre=((w=wdval)==ELSYM ? cmd(FISYM,NLFLG) : (w==EFSYM ? (wdval=IFSYM, item(0)) : 0));
-                  IF w==EFSYM THEN return(t) FI
+                  if (w==EFSYM) { return(t); }
                   break;
-               END
+               }
 
            case FORSYM:
-               BEGIN
-                  t=getstak(FORTYPE);
+               {
+                    
+                  t=getstak(sizeof(struct fornod));
                   t->fortyp=TFOR;
                   t->forlst=0;
                   chkword();
                   t->fornam=wdarg->argval;
-                  IF skipnl()==INSYM
-                  THEN chkword();
+                  if (skipnl()==INSYM) {
+                       chkword();
                        t->forlst=item(0);
-                       IF wdval!=NL ANDF wdval!=';'
-                       THEN    synbad();
-                       FI
+                       if (wdval!='\n' && wdval!=';') {
+                               synbad();
+                       }
                        chkpr(wdval); skipnl();
-                  FI
+                  }
                   chksym(DOSYM|BRSYM);
                   t->fortre=cmd(wdval==DOSYM?ODSYM:KTSYM,NLFLG);
                   break;
-               END
+               }
 
            case WHSYM:
            case UNSYM:
-               BEGIN
-                  t=getstak(WHTYPE);
+               {
+                    
+                  t=getstak(sizeof(struct whnod));
                   t->whtyp=(wdval==WHSYM ? TWH : TUN);
                   t->whtre = cmd(DOSYM,NLFLG);
                   t->dotre = cmd(ODSYM,NLFLG);
                   break;
-               END
+               }
 
            case BRSYM:
                t=cmd(KTSYM,NLFLG);
                break;
 
            case '(':
-               BEGIN
-                  REG PARPTR    p;
-                  p=getstak(PARTYPE);
+               {
+                    
+                  register struct parnod        *p;
+                  p=getstak(sizeof(struct parnod));
                   p->partre=cmd(')',NLFLG);
                   p->partyp=TPAR;
                   t=makefork(0,p);
                   break;
-               END
+               }
 
            default:
-               IF io==0
-               THEN    return(0);
-               FI
+               if (io==0) {
+                       return(0);
+               }
 
            case 0:
-               BEGIN
-                  REG ARGPTR   argp;
-                  REG ARGPTR   *argtail;
-                  REG ARGPTR   *argset=0;
-                  INT          keywd=1;
-                  t=getstak(COMTYPE);
+               {
+                    
+                  register struct argnod       *argp;
+                  register struct argnod       **argtail;
+                  register struct argnod       **argset=0;
+                  int          keywd=1;
+                  t=getstak(sizeof(struct comnod));
                   t->comio=io; /*initial io chain*/
                   argtail = &(t->comarg);
-                  WHILE wdval==0
-                  DO   argp = wdarg;
-                       IF wdset ANDF keywd
-                       THEN    argp->argnxt=argset; argset=argp;
-                       ELSE    *argtail=argp; argtail = &(argp->argnxt); keywd=flags&keyflg;
-                       FI
+                  while (wdval==0) {
+                       argp = wdarg;
+                       if (wdset && keywd) {
+                               argp->argnxt=argset; argset=argp;
+                       }
+                       else {
+                               *argtail=argp; argtail = &(argp->argnxt); keywd=flags&keyflg;
+                       }
                        word();
-                       IF flag
-                       THEN t->comio=inout(t->comio);
-                       FI
-                  OD
+                       if (flag) {
+                            t->comio=inout(t->comio);
+                       }
+                  }
 
                   t->comtyp=TCOM; t->comset=argset; *argtail=0;
                   return(t);
-               END
+               }
 
-       ENDSW
+       }
        reserv++; word();
-       IF io=inout(io)
-       THEN    t=makefork(0,t); t->treio=io;
-       FI
+       if (io=inout(io)) {
+               t=makefork(0,t); t->treio=io;
+       }
        return(t);
 }
 
 
-LOCAL VOID     skipnl()
+static void    skipnl()
 {
-       WHILE (reserv++, word()==NL) DO chkpr(NL) OD
+       while ((reserv++, word()=='\n')) { chkpr('\n'); }
        return(wdval);
 }
 
-LOCAL IOPTR    inout(lastio)
-       IOPTR           lastio;
+static struct ionod    *inout(lastio)
+       struct ionod            *lastio;
 {
-       REG INT         iof;
-       REG IOPTR       iop;
-       REG CHAR        c;
+       register int            iof;
+       register struct ionod   *iop;
+       register char   c;
 
        iof=wdnum;
 
-       SWITCH wdval IN
+       switch (wdval) {
+         
 
            case DOCSYM:
                iof |= IODOC; break;
 
            case APPSYM:
            case '>':
-               IF wdnum==0 THEN iof |= 1 FI
+               if (wdnum==0) { iof |= 1; }
                iof |= IOPUT;
-               IF wdval==APPSYM
-               THEN    iof |= IOAPP; break;
-               FI
+               if (wdval==APPSYM) {
+                       iof |= IOAPP; break;
+               }
 
            case '<':
-               IF (c=nextc(0))=='&'
-               THEN    iof |= IOMOV;
-               ELIF c=='>'
-               THEN    iof |= IORDW;
-               ELSE    peekc=c|MARK;
-               FI
+               if ((c=nextc(0))=='&') {
+                       iof |= IOMOV;
+               }
+               else if (c=='>') {
+                       iof |= IORDW;
+               }
+               else {
+                       peekc=c|MARK;
+               }
                break;
 
            default:
                return(lastio);
-       ENDSW
+       }
 
        chkword();
-       iop=getstak(IOTYPE); iop->ioname=wdarg->argval; iop->iofile=iof;
-       IF iof&IODOC
-       THEN iop->iolst=iopend; iopend=iop;
-       FI
+       iop=getstak(sizeof(struct ionod)); iop->ioname=wdarg->argval; iop->iofile=iof;
+       if (iof&IODOC) {
+            iop->iolst=iopend; iopend=iop;
+       }
        word(); iop->ionxt=inout(lastio);
        return(iop);
 }
 
-LOCAL VOID     chkword()
+static void    chkword()
 {
-       IF word()
-       THEN    synbad();
-       FI
+       if (word()) {
+               synbad();
+       }
 }
 
-LOCAL VOID     chksym(sym)
+static void    chksym(sym)
 {
-       REG INT         x = sym&wdval;
-       IF ((x&SYMFLG) ? x : sym) != wdval
-       THEN    synbad();
-       FI
+       register int            x = sym&wdval;
+       if (((x&SYMFLG) ? x : sym) != wdval) {
+               synbad();
+       }
 }
 
-LOCAL VOID     prsym(sym)
+static void    prsym(sym)
 {
-       IF sym&SYMFLG
-       THEN    REG SYSPTR      sp=reserved;
-               WHILE sp->sysval
-                       ANDF sp->sysval!=sym
-               DO sp++ OD
+       if (sym&SYMFLG) {
+               register struct sysnod  *sp=reserved;
+               while (sp->sysval
+                       && sp->sysval!=sym) { sp++; }
                prs(sp->sysnam);
-       ELIF sym==EOFSYM
-       THEN    prs(endoffile);
-       ELSE    IF sym&SYMREP THEN prc(sym) FI
-               IF sym==NL
-               THEN    prs("newline");
-               ELSE    prc(sym);
-               FI
-       FI
+       }
+       else if (sym==EOFSYM) {
+               prs(endoffile);
+       }
+       else {
+               if (sym&SYMREP) { prc(sym); }
+               if (sym=='\n') {
+                       prs("newline");
+               }
+               else {
+                       prc(sym);
+               }
+       }
 }
 
-LOCAL VOID     synbad()
+static void    synbad()
 {
        prp(); prs(synmsg);
-       IF (flags&ttyflg)==0
-       THEN    prs(atline); prn(standin->flin);
-       FI
+       if ((flags&ttyflg)==0) {
+               prs(atline); prn(standin->flin);
+       }
        prs(colon);
-       prc(LQ);
-       IF wdval
-       THEN    prsym(wdval);
-       ELSE    prs(wdarg->argval);
-       FI
-       prc(RQ); prs(unexpected);
+       prc('`');
+       if (wdval) {
+               prsym(wdval);
+       }
+       else {
+               prs(wdarg->argval);
+       }
+       prc('\''); prs(unexpected);
        newline();
        exitsh(SYNBAD);
 }
index d061104..0ea55c6 100644 (file)
@@ -59,7 +59,7 @@ char  _ctype1[] {
 
 /*     x       y       z       {       |       }       ~       del     */
        0,      0,      0,      0,      _BAR,   0,      0,      0
-};
+}
 
 
 char   _ctype2[] {
@@ -108,5 +108,5 @@ char        _ctype2[] {
 
 /*     x       y       z       {       |       }       ~       del     */
        _LPC,   _LPC,   _LPC,   _CBR,   0,      _CKT,   0,      0
-};
+}
 
index 19ffa66..afe9ee5 100644 (file)
 char   _ctype1[];
 
 /* nb these args are not call by value !!!! */
-#define        space(c)        (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_SPC))
-#define eofmeta(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(_META|T_EOF))
-#define qotchar(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_QOT))
-#define eolchar(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_EOR|T_EOF))
-#define dipchar(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_DIP))
-#define subchar(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_SUB|T_QOT))
-#define escchar(c)     (((c)&QUOTE)==0 ANDF _ctype1[c]&(T_ESC))
+#define        space(c)        (((c)&0200)==0 && _ctype1[c]&(T_SPC))
+#define eofmeta(c)     (((c)&0200)==0 && _ctype1[c]&(_META|T_EOF))
+#define qotchar(c)     (((c)&0200)==0 && _ctype1[c]&(T_QOT))
+#define eolchar(c)     (((c)&0200)==0 && _ctype1[c]&(T_EOR|T_EOF))
+#define dipchar(c)     (((c)&0200)==0 && _ctype1[c]&(T_DIP))
+#define subchar(c)     (((c)&0200)==0 && _ctype1[c]&(T_SUB|T_QOT))
+#define escchar(c)     (((c)&0200)==0 && _ctype1[c]&(T_ESC))
 
 char   _ctype2[];
 
-#define        digit(c)        (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_DIG))
-#define fngchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_FNG))
-#define dolchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
-#define defchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_DEF))
-#define setchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_SET))
-#define digchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST|T_DIG))
-#define        letter(c)       (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_IDC))
-#define alphanum(c)    (((c)&QUOTE)==0 ANDF _ctype2[c]&(_IDCH))
-#define astchar(c)     (((c)&QUOTE)==0 ANDF _ctype2[c]&(T_AST))
+#define        digit(c)        (((c)&0200)==0 && _ctype2[c]&(T_DIG))
+#define fngchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_FNG))
+#define dolchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
+#define defchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_DEF))
+#define setchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_SET))
+#define digchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_AST|T_DIG))
+#define        letter(c)       (((c)&0200)==0 && _ctype2[c]&(T_IDC))
+#define alphanum(c)    (((c)&0200)==0 && _ctype2[c]&(_IDCH))
+#define astchar(c)     (((c)&0200)==0 && _ctype2[c]&(T_AST))
index 6c01c69..d273b91 100644 (file)
 
 /* result type declarations */
 #define alloc malloc
-ADDRESS                alloc();
-VOID           addblok();
-STRING         make();
-STRING         movstr();
-TREPTR         cmd();
-TREPTR         makefork();
-NAMPTR         lookup();
-VOID           setname();
-VOID           setargs();
-DOLPTR         useargs();
-REAL           expr();
-STRING         catpath();
-STRING         getpath();
-STRING         *scan();
-STRING         mactrim();
-STRING         macro();
-STRING         execs();
-VOID           await();
-VOID           post();
-STRING         copyto();
-VOID           exname();
-STRING         staknam();
-VOID           printnam();
-VOID           printflg();
-VOID           prs();
-VOID           prc();
-VOID           setupenv();
-STRING         *setenv();
+void           *alloc();
+void           addblok();
+char           *make();
+char           *movstr();
+struct trenod          *cmd();
+struct trenod          *makefork();
+struct namnod          *lookup();
+void           setname();
+void           setargs();
+struct dolnod          *useargs();
+float          expr();
+char           *catpath();
+char           *getpath();
+char           **scan();
+char           *mactrim();
+char           *macro();
+char           *execs();
+void           await();
+void           post();
+char           *copyto();
+void           exname();
+char           *staknam();
+void           printnam();
+void           printflg();
+void           prs();
+void           prc();
+void           setupenv();
+char           **setenv();
 
 #define attrib(n,f)    (n->namflg |= f)
-#define round(a,b)     (((int)((ADR(a)+b)-1))&~((b)-1))
+#define round(a,b)     (((int)(((void *)(a)+b)-1))&~((b)-1))
 #define closepipe(x)   (close(x[INPIPE]), close(x[OTPIPE]))
 #define eq(a,b)                (cf(a,b)==0)
 #define max(a,b)       ((a)>(b)?(a):(b))
 #define assert(x)      ;
 
 /* temp files and io */
-UFD            output;
-INT            ioset;
-IOPTR          iotemp;         /* files to be deleted sometime */
-IOPTR          iopend;         /* documents waiting to be read at NL */
+int            output;
+int            ioset;
+struct ionod           *iotemp;                /* files to be deleted sometime */
+struct ionod           *iopend;                /* documents waiting to be read at '\n' */
 
 /* substitution */
-INT            dolc;
-STRING         *dolv;
-DOLPTR         argfor;
-ARGPTR         gchain;
+int            dolc;
+char           **dolv;
+struct dolnod          *argfor;
+struct argnod          *gchain;
 
 /* stak stuff */
 #include       "stak.h"
 
 /* string constants */
-MSG            atline;
-MSG            readmsg;
-MSG            colon;
-MSG            minus;
-MSG            nullstr;
-MSG            sptbnl;
-MSG            unexpected;
-MSG            endoffile;
-MSG            synmsg;
+char           atline[];
+char           readmsg[];
+char           colon[];
+char           minus[];
+char           nullstr[];
+char           sptbnl[];
+char           unexpected[];
+char           endoffile[];
+char           synmsg[];
 
 /* name tree and words */
-SYSTAB         reserved;
-INT            wdval;
-INT            wdnum;
-ARGPTR         wdarg;
-INT            wdset;
-BOOL           reserv;
+struct sysnod          reserved[];
+int            wdval;
+int            wdnum;
+struct argnod          *wdarg;
+int            wdset;
+bool           reserv;
 
 /* prompting */
-MSG            stdprompt;
-MSG            supprompt;
-MSG            profile;
+char           stdprompt[];
+char           supprompt[];
+char           profile[];
 
 /* built in names */
-NAMNOD         fngnod;
-NAMNOD         ifsnod;
-NAMNOD         homenod;
-NAMNOD         mailnod;
-NAMNOD         pathnod;
-NAMNOD         ps1nod;
-NAMNOD         ps2nod;
+struct namnod          fngnod;
+struct namnod          ifsnod;
+struct namnod          homenod;
+struct namnod          mailnod;
+struct namnod          pathnod;
+struct namnod          ps1nod;
+struct namnod          ps2nod;
 
 /* special names */
-MSG            flagadr;
-STRING         cmdadr;
-STRING         exitadr;
-STRING         dolladr;
-STRING         pcsadr;
-STRING         pidadr;
+char           flagadr[];
+char           *cmdadr;
+char           *exitadr;
+char           *dolladr;
+char           *pcsadr;
+char           *pidadr;
 
-MSG            defpath;
+char           defpath[];
 
 /* names always present */
-MSG            mailname;
-MSG            homename;
-MSG            pathname;
-MSG            fngname;
-MSG            ifsname;
-MSG            ps1name;
-MSG            ps2name;
+char           mailname[];
+char           homename[];
+char           pathname[];
+char           fngname[];
+char           ifsname[];
+char           ps1name[];
+char           ps2name[];
 
 /* transput */
-CHAR           tmpout[];
-STRING         tmpnam;
-INT            serial;
+char           tmpout[];
+char           *tmpnam;
+int            serial;
 #define                TMPNAM 7
-FILE           standin;
+struct fileblk         *standin;
 #define input  (standin->fdes)
 #define eof    (standin->feof)
-INT            peekc;
-STRING         comdiv;
-MSG            devnull;
+int            peekc;
+char           *comdiv;
+char           devnull[];
 
 /* flags */
 #define                noexec  01
@@ -210,7 +210,7 @@ MSG         devnull;
 #define                readpr  010000
 #define                keyflg  020000
 #define                batchflg        040000
-INT            flags;
+int            flags;
 
 /* error exits from various parts of shell */
 #include       <setjmp.h>
@@ -220,7 +220,7 @@ jmp_buf             INTbuf;
 
 /* fault handling */
 #include       "brkincr.h"
-POS            brkincr;
+unsigned               brkincr;
 
 #define MINTRAP        0
 #define MAXTRAP        32
@@ -234,50 +234,50 @@ POS               brkincr;
 #define SIGSET 4
 #define SIGMOD 8
 
-VOID           fault();
-BOOL           trapnote;
-STRING         trapcom[];
-BOOL           trapflg[];
-BOOL           trapjmp[];
+void           fault();
+bool           trapnote;
+char           *trapcom[];
+bool           trapflg[];
+bool           trapjmp[];
 
 /* name tree and words */
-STRING         *environ;
-CHAR           numbuf[];
-MSG            export;
-MSG            readonly;
+char           **environ;
+char           numbuf[];
+char           export[];
+char           readonly[];
 
 /* execflgs */
-INT            exitval;
-BOOL           execbrk;
-INT            loopcnt;
-INT            breakcnt;
+int            exitval;
+bool           execbrk;
+int            loopcnt;
+int            breakcnt;
 
 /* messages */
-MSG            mailmsg;
-MSG            coredump;
-MSG            badopt;
-MSG            badparam;
-MSG            badsub;
-MSG            nospace;
-MSG            notfound;
-MSG            badtrap;
-MSG            baddir;
-MSG            badshift;
-MSG            illegal;
-MSG            restricted;
-MSG            execpmsg;
-MSG            notid;
-MSG            wtfailed;
-MSG            badcreate;
-MSG            piperr;
-MSG            badopen;
-MSG            badnum;
-MSG            arglist;
-MSG            txtbsy;
-MSG            toobig;
-MSG            badexec;
-MSG            notfound;
-MSG            badfile;
+char           mailmsg[];
+char           coredump[];
+char           badopt[];
+char           badparam[];
+char           badsub[];
+char           nospace[];
+char           notfound[];
+char           badtrap[];
+char           baddir[];
+char           badshift[];
+char           illegal[];
+char           restricted[];
+char           execpmsg[];
+char           notid[];
+char           wtfailed[];
+char           badcreate[];
+char           piperr[];
+char           badopen[];
+char           badnum[];
+char           arglist[];
+char           txtbsy[];
+char           toobig[];
+char           badexec[];
+char           notfound[];
+char           badfile[];
 
 address        end[];
 
index 358b23a..47fab9b 100644 (file)
@@ -27,29 +27,29 @@ sigchk()
         * `trapnote' is set to SIGSET when fault is seen and
         * no trap has been set.
         */
-       IF trapnote&SIGSET
-       THEN    exitsh(SIGFAIL);
-       FI
+       if (trapnote&SIGSET) {
+               exitsh(SIGFAIL);
+       }
 }
 
 failed(s1,s2)
-       STRING  s1, s2;
+       char*CHECKME    s1, s2;
 {
        prp(); prs(s1); 
-       IF s2
-       THEN    prs(colon); prs(s2);
-       FI
+       if (s2) {
+               prs(colon); prs(s2);
+       }
        newline(); exitsh(ERROR);
 }
 
 error(s)
-       STRING  s;
+       char    *s;
 {
        failed(s,NIL);
 }
 
 exitsh(xno)
-       INT     xno;
+       int     xno;
 {
        /* Arrive here from `FATAL' errors
         *  a) exit command,
@@ -59,29 +59,31 @@ exitsh(xno)
         * Action is to return to command level or exit.
         */
        exitval=xno;
-       IF (flags & (forked|errflg|ttyflg)) != ttyflg
-       THEN    done();
-       ELSE    clearup();
+       if ((flags & (forked|errflg|ttyflg)) != ttyflg) {
+               done();
+       }
+       else {
+               clearup();
                longjmp(errshell,1);
-       FI
+       }
 }
 
 done()
 {
-       REG STRING      t;
-       IF t=trapcom[0]
-       THEN    trapcom[0]=0; /*should free but not long */
+       register char   *t;
+       if (t=trapcom[0]) {
+               trapcom[0]=0; /*should free but not long */
                execexp(t,0);
-       FI
+       }
        rmtemp(0);
        exit(exitval);
 }
 
 rmtemp(base)
-       IOPTR           base;
+       struct ionod            *base;
 {
-       WHILE iotemp>base
-       DO  unlink(iotemp->ioname);
+       while (iotemp>base) {
+           unlink(iotemp->ioname);
            iotemp=iotemp->iolst;
-       OD
+       }
 }
index 38ce8d3..f0d4a48 100644 (file)
@@ -27,166 +27,175 @@ static char sccsid[] = "@(#)expand.c      4.5 8/11/83";
  *
  */
 
-PROC VOID      addg();
+extern void    addg();
 
 
-INT    expand(as,rflg)
-       STRING          as;
+int    expand(as,rflg)
+       char            *as;
 {
-       INT             count;
+       int             count;
        DIR             *dirf;
-       BOOL            dir=0;
-       STRING          rescan = 0;
-       REG STRING      s, cs;
-       ARGPTR          schain = gchain;
+       bool            dir=0;
+       char            *rescan = 0;
+       register char*CHECKME   s, cs;
+       struct argnod           *schain = gchain;
        struct direct   *dp;
-       STATBUF         statb;
+       struct stat             statb;
 
-       IF trapnote&SIGSET THEN return(0); FI
+       if (trapnote&SIGSET) { return(0); }
 
        s=cs=as;
 
        /* check for meta chars */
-       BEGIN
-          REG BOOL slash; slash=0;
-          WHILE !fngchar(*cs)
-          DO   IF *cs++==0
-               THEN    IF rflg ANDF slash THEN break; ELSE return(0) FI
-               ELIF *cs=='/'
-               THEN    slash++;
-               FI
-          OD
-       END
-
-       LOOP    IF cs==s
-               THEN    s=nullstr;
+       {
+            
+          register bool slash; slash=0;
+          while (!fngchar(*cs)) {
+               if (*cs++==0) {
+                       if (rflg && slash) { break; }NEWLINEelse { return(0); }
+               }
+               else if (*cs=='/') {
+                       slash++;
+               }
+          }
+       }
+
+       for(;;) {
+               if (cs==s) {
+                       s=nullstr;
                        break;
-               ELIF *--cs == '/'
-               THEN    *cs=0;
-                       IF s==cs THEN s="/" FI
+               }
+               else if (*--cs == '/') {
+                       *cs=0;
+                       if (s==cs) { s="/"; }
                        break;
-               FI
-       POOL
-       IF stat(s,&statb)>=0
-           ANDF (statb.st_mode&S_IFMT)==S_IFDIR
-           ANDF (dirf=opendir(s)) != NULL
-       THEN    dir++;
-       FI
+               }
+       }
+       if (stat(s,&statb)>=0
+           && (statb.st_mode&S_IFMT)==S_IFDIR
+           && (dirf=opendir(s)) != NULL) {
+               dir++;
+       }
        count=0;
-       IF *cs==0 THEN *cs++=0200 FI
-       IF dir
-       THEN    /* check for rescan */
-               REG STRING rs; rs=cs;
-
-               REP     IF *rs=='/' THEN rescan=rs; *rs=0; gchain=0 FI
-               PER     *rs++ DONE
-
-               IF setjmp(INTbuf) == 0 THEN trapjmp[INTR] = 1; FI
-               WHILE (trapnote&SIGSET) == 0 ANDF (dp = readdir(dirf)) != NULL
-               DO      IF (*dp->d_name=='.' ANDF *cs!='.')
-                       THEN    continue;
-                       FI
-                       IF gmatch(dp->d_name, cs)
-                       THEN    addg(s,dp->d_name,rescan); count++;
-                       FI
-               OD
+       if (*cs==0) { *cs++=0200; }
+       if (dir) {
+               /* check for rescan */
+               register char *rs; rs=cs;
+
+               do {
+                       if (*rs=='/') { rescan=rs; *rs=0; gchain=0; }
+               } while (*rs++);
+
+               if (setjmp(INTbuf) == 0) { trapjmp[INTR] = 1; }
+               while ((trapnote&SIGSET) == 0 && (dp = readdir(dirf)) != NULL) {
+                       if ((*dp->d_name=='.' && *cs!='.')) {
+                               continue;
+                       }
+                       if (gmatch(dp->d_name, cs)) {
+                               addg(s,dp->d_name,rescan); count++;
+                       }
+               }
                closedir(dirf); trapjmp[INTR] = 0;
 
-               IF rescan
-               THEN    REG ARGPTR      rchain;
+               if (rescan) {
+                       register struct argnod  *rchain;
                        rchain=gchain; gchain=schain;
-                       IF count
-                       THEN    count=0;
-                               WHILE rchain
-                               DO      count += expand(rchain->argval,1);
+                       if (count) {
+                               count=0;
+                               while (rchain) {
+                                       count += expand(rchain->argval,1);
                                        rchain=rchain->argnxt;
-                               OD
-                       FI
+                               }
+                       }
                        *rescan='/';
-               FI
-       FI
+               }
+       }
 
-       BEGIN
-          REG CHAR     c;
+       {
+            
+          register char        c;
           s=as;
-          WHILE c = *s
-          DO   *s++=(c&STRIP?c:'/') OD
-       END
+          while (c = *s) { *s++=(c&0177?c:'/'); }
+       }
        return(count);
 }
 
 gmatch(s, p)
-       REG STRING      s, p;
+       register char*CHECKME   s, p;
 {
-       REG INT         scc;
-       CHAR            c;
+       register int            scc;
+       char            c;
 
-       IF scc = *s++
-       THEN    IF (scc &= STRIP)==0
-               THEN    scc=0200;
-               FI
-       FI
-       SWITCH c = *p++ IN
+       if (scc = *s++) {
+               if ((scc &= 0177)==0) {
+                       scc=0200;
+               }
+       }
+       switch (c = *p++) {
+         
 
            case '[':
-               {BOOL ok; INT lc;
+               {bool ok; int lc;
                ok=0; lc=077777;
-               WHILE c = *p++
-               DO      IF c==']'
-                       THEN    return(ok?gmatch(s,p):0);
-                       ELIF c==MINUS
-                       THEN    IF lc<=scc ANDF scc<=(*p++) THEN ok++ FI
-                       ELSE    IF scc==(lc=(c&STRIP)) THEN ok++ FI
-                       FI
-               OD
+               while (c = *p++) {
+                       if (c==']') {
+                               return(ok?gmatch(s,p):0);
+                       }
+                       else if (c=='-') {
+                               if (lc<=scc && scc<=(*p++)) { ok++; }
+                       }
+                       else {
+                               if (scc==(lc=(c&0177))) { ok++; }
+                       }
+               }
                return(0);
                }
 
            default:
-               IF (c&STRIP)!=scc THEN return(0) FI
+               if ((c&0177)!=scc) { return(0); }
 
            case '?':
                return(scc?gmatch(s,p):0);
 
            case '*':
-               IF *p==0 THEN return(1) FI
+               if (*p==0) { return(1); }
                --s;
-               WHILE *s
-               DO  IF gmatch(s++,p) THEN return(1) FI OD
+               while (*s) {
+                   if (gmatch(s++,p)) { return(1); }NEWLINE}
                return(0);
 
            case 0:
                return(scc==0);
-       ENDSW
+       }
 }
 
-LOCAL VOID     addg(as1,as2,as3)
-       STRING          as1, as2, as3;
+static void    addg(as1,as2,as3)
+       char*CHECKME            as1, as2, as3;
 {
-       REG STRING      s1, s2;
-       REG INT         c;
+       register char*CHECKME   s1, s2;
+       register int            c;
 
        s2 = locstak()+BYTESPERWORD;
 
        s1=as1;
-       WHILE c = *s1++
-       DO      IF (c &= STRIP)==0
-               THEN    *s2++='/';
+       while (c = *s1++) {
+               if ((c &= 0177)==0) {
+                       *s2++='/';
                        break;
-               FI
+               }
                *s2++=c;
-       OD
+       }
        s1=as2;
-       WHILE *s2 = *s1++ DO s2++ OD
-       IF s1=as3
-       THEN    *s2++='/';
-               WHILE *s2++ = *++s1 DONE
-       FI
+       while (*s2 = *s1++) { s2++; }
+       if (s1=as3) {
+               *s2++='/';
+               while (*s2++ = *++s1);
+       }
        makearg(endstak(s2));
 }
 
 makearg(args)
-       REG STRING      args;
+       register char   *args;
 {
        args->argnxt=gchain;
        gchain=args;
index 8207b74..152194b 100644 (file)
@@ -14,35 +14,38 @@ static char sccsid[] = "@(#)fault.c 4.3 8/11/83";
 #include       "defs.h"
 
 
-STRING         trapcom[MAXTRAP];
-BOOL           trapflg[MAXTRAP];
-BOOL           trapjmp[MAXTRAP];
+char           *trapcom[MAXTRAP];
+bool           trapflg[MAXTRAP];
+bool           trapjmp[MAXTRAP];
 
 /* ========    fault handling routines    ======== */
 
 
-VOID   fault(sig)
-       REG INT         sig;
+void   fault(sig)
+       register int            sig;
 {
-       REG INT         flag;
-
-       IF sig==MEMF
-       THEN    IF setbrk(brkincr) == -1
-               THEN    error(nospace);
-               FI
-       ELIF sig==ALARM
-       THEN    IF flags&waiting
-               THEN    done();
-               FI
-       ELSE    flag = (trapcom[sig] ? TRAPSET : SIGSET);
+       register int            flag;
+
+       if (sig==MEMF) {
+               if (setbrk(brkincr) == -1) {
+                       error(nospace);
+               }
+       }
+       else if (sig==ALARM) {
+               if (flags&waiting) {
+                       done();
+               }
+       }
+       else {
+               flag = (trapcom[sig] ? TRAPSET : SIGSET);
                trapnote |= flag;
                trapflg[sig] |= flag;
-       FI
-       IF trapjmp[sig] ANDF sig==INTR
-       THEN
+       }
+       if (trapjmp[sig] && sig==INTR) {
+           
                trapjmp[sig] = 0;
                longjmp(INTbuf, 1);
-       FI
+       }
 }
 
 stdsigs()
@@ -55,64 +58,64 @@ stdsigs()
 
 ignsig(n)
 {
-       REG INT         s, i;
+       register int            s, i;
 
-       IF (s=signal(i=n,1)&01)==0
-       THEN    trapflg[i] |= SIGMOD;
-       FI
+       if ((s=signal(i=n,1)&01)==0) {
+               trapflg[i] |= SIGMOD;
+       }
        return(s);
 }
 
 getsig(n)
 {
-       REG INT         i;
+       register int            i;
 
-       IF trapflg[i=n]&SIGMOD ORF ignsig(i)==0
-       THEN    signal(i,fault);
-       FI
+       if (trapflg[i=n]&SIGMOD || ignsig(i)==0) {
+               signal(i,fault);
+       }
 }
 
 oldsigs()
 {
-       REG INT         i;
-       REG STRING      t;
+       register int            i;
+       register char   *t;
 
        i=MAXTRAP;
-       WHILE i--
-       DO  t=trapcom[i];
-           IF t==0 ORF *t
-           THEN clrsig(i);
-           FI
+       while (i--) {
+           t=trapcom[i];
+           if (t==0 || *t) {
+                clrsig(i);
+           }
            trapflg[i]=0;
-       OD
+       }
        trapnote=0;
 }
 
 clrsig(i)
-       INT             i;
+       int             i;
 {
        free(trapcom[i]); trapcom[i]=0;
-       IF trapflg[i]&SIGMOD
-       THEN    signal(i,fault);
+       if (trapflg[i]&SIGMOD) {
+               signal(i,fault);
                trapflg[i] &= ~SIGMOD;
-       FI
+       }
 }
 
 chktrap()
 {
        /* check for traps */
-       REG INT         i=MAXTRAP;
-       REG STRING      t;
+       register int            i=MAXTRAP;
+       register char   *t;
 
        trapnote &= ~TRAPSET;
-       WHILE --i
-       DO IF trapflg[i]&TRAPSET
-          THEN trapflg[i] &= ~TRAPSET;
-               IF t=trapcom[i]
-               THEN    INT     savxit=exitval;
+       while (--i) {
+          if (trapflg[i]&TRAPSET) {
+               trapflg[i] &= ~TRAPSET;
+               if (t=trapcom[i]) {
+                       int     savxit=exitval;
                        execexp(t,0);
                        exitval=savxit; exitset();
-               FI
-          FI
-       OD
+               }
+          }
+       }
 }
index ca8bad5..e6687ae 100644 (file)
@@ -17,19 +17,19 @@ static char sccsid[] = "@(#)io.c    4.3 3/19/85";
 /* ========    input output and file copying ======== */
 
 initf(fd)
-       UFD             fd;
+       int             fd;
 {
-       REG FILE        f=standin;
+       register struct fileblk *f=standin;
 
        f->fdes=fd; f->fsiz=((flags&(oneflg|ttyflg))==0 ? BUFSIZ : 1);
        f->fnxt=f->fend=f->fbuf; f->feval=0; f->flin=1;
-       f->feof=FALSE;
+       f->feof=0;
 }
 
 estabf(s)
-       REG STRING      s;
+       register char   *s;
 {
-       REG FILE        f;
+       register struct fileblk *f;
 
        (f=standin)->fdes = -1;
        f->fend=length(s)+(f->fnxt=s);
@@ -38,9 +38,9 @@ estabf(s)
 }
 
 push(af)
-       FILE            af;
+       struct fileblk          *af;
 {
-       REG FILE        f;
+       register struct fileblk *f;
 
        (f=af)->fstak=standin;
        f->feof=0; f->feval=0;
@@ -49,54 +49,60 @@ push(af)
 
 pop()
 {
-       REG FILE        f;
+       register struct fileblk *f;
 
-       IF (f=standin)->fstak
-       THEN    IF f->fdes>=0 THEN close(f->fdes) FI
+       if ((f=standin)->fstak) {
+               if (f->fdes>=0) { close(f->fdes); }
                standin=f->fstak;
-               return(TRUE);
-       ELSE    return(FALSE);
-       FI
+               return(-1);
+       }
+       else {
+               return(0);
+       }
 }
 
 chkpipe(pv)
-       INT             *pv;
+       int             *pv;
 {
-       IF pipe(pv)<0 ORF pv[INPIPE]<0 ORF pv[OTPIPE]<0
-       THEN    error(piperr);
-       FI
+       if (pipe(pv)<0 || pv[INPIPE]<0 || pv[OTPIPE]<0) {
+               error(piperr);
+       }
 }
 
 chkopen(idf)
-       STRING          idf;
+       char            *idf;
 {
-       REG INT         rc;
-
-       IF (rc=open(idf,0))<0
-       THEN    failed(idf,badopen);
-       ELSE    return(rc);
-       FI
+       register int            rc;
+
+       if ((rc=open(idf,0))<0) {
+               failed(idf,badopen);
+       }
+       else {
+               return(rc);
+       }
 }
 
 rename(f1,f2)
-       REG INT         f1, f2;
+       register int            f1, f2;
 {
-       IF f1!=f2
-       THEN    dup2(f1, f2);
+       if (f1!=f2) {
+               dup2(f1, f2);
                close(f1);
-               IF f2==0 THEN ioset|=1 FI
-       FI
+               if (f2==0) { ioset|=1; }
+       }
 }
 
 create(s)
-       STRING          s;
+       char            *s;
 {
-       REG INT         rc;
-
-       IF (rc=creat(s,0666))<0
-       THEN    failed(s,badcreate);
-       ELSE    return(rc);
-       FI
+       register int            rc;
+
+       if ((rc=creat(s,0666))<0) {
+               failed(s,badcreate);
+       }
+       else {
+               return(rc);
+       }
 }
 
 tmpfil()
@@ -106,31 +112,32 @@ tmpfil()
 }
 
 /* set by trim */
-BOOL           nosubst;
+bool           nosubst;
 
 copy(ioparg)
-       IOPTR           ioparg;
+       struct ionod            *ioparg;
 {
-       CHAR            c, *ends;
-       REG CHAR        *cline, *clinep;
-       INT             fd;
-       REG IOPTR       iop;
-
-       IF iop=ioparg
-       THEN    copy(iop->iolst);
-               ends=mactrim(iop->ioname); IF nosubst THEN iop->iofile &= ~IODOC FI
+       char            c, *ends;
+       register char   *cline, *clinep;
+       int             fd;
+       register struct ionod   *iop;
+
+       if (iop=ioparg) {
+               copy(iop->iolst);
+               ends=mactrim(iop->ioname); if (nosubst) { iop->iofile &= ~IODOC; }
                fd=tmpfil();
                iop->ioname=cpystak(tmpout);
                iop->iolst=iotemp; iotemp=iop;
                cline=locstak();
 
-               LOOP    clinep=cline; chkpr(NL);
-                       WHILE (c = (nosubst ? readc() :  nextc(*ends)),  !eolchar(c)) DO *clinep++ = c OD
+               for(;;) {
+                       clinep=cline; chkpr('\n');
+                       while ((c = (nosubst ? readc() :  nextc(*ends)),  !eolchar(c))) { *clinep++ = c; }
                        *clinep=0;
-                       IF eof ORF eq(cline,ends) THEN break FI
-                       *clinep++=NL;
+                       if (eof || eq(cline,ends)) { break; }
+                       *clinep++='\n';
                        write(fd,cline,clinep-cline);
-               POOL
+               }
                close(fd);
-       FI
+       }
 }
index eb60e4b..ec969fd 100644 (file)
@@ -14,180 +14,203 @@ static char sccsid[] = "@(#)macro.c       4.3 8/11/83";
 #include       "defs.h"
 #include       "sym.h"
 
-LOCAL CHAR     quote;  /* used locally */
-LOCAL CHAR     quoted; /* used locally */
+static char    quote;  /* used locally */
+static char    quoted; /* used locally */
 
 
 
-LOCAL STRING   copyto(endch)
-       REG CHAR        endch;
+static char    *copyto(endch)
+       register char   endch;
 {
-       REG CHAR        c;
+       register char   c;
 
-       WHILE (c=getch(endch))!=endch ANDF c
-       DO pushstak(c|quote) OD
+       while ((c=getch(endch))!=endch && c) { pushstak(c|quote); }
        zerostak();
-       IF c!=endch THEN error(badsub) FI
+       if (c!=endch) { error(badsub); }
 }
 
-LOCAL  skipto(endch)
-       REG CHAR        endch;
+static skipto(endch)
+       register char   endch;
 {
        /* skip chars up to } */
-       REG CHAR        c;
-       WHILE (c=readc()) ANDF c!=endch
-       DO      SWITCH c IN
+       register char   c;
+       while ((c=readc()) && c!=endch) {
+               switch (c) {
+                 
 
                case SQUOTE:    skipto(SQUOTE); break;
 
                case DQUOTE:    skipto(DQUOTE); break;
 
-               case DOLLAR:    IF readc()==BRACE
-                               THEN    skipto('}');
-                               FI
-               ENDSW
-       OD
-       IF c!=endch THEN error(badsub) FI
+               case DOLLAR:    if (readc()==BRACE) { skipto('}');
+                               }
+               }
+       }
+       if (c!=endch) { error(badsub); }
 }
 
-LOCAL  getch(endch)
-       CHAR            endch;
+static getch(endch)
+       char            endch;
 {
-       REG CHAR        d;
+       register char   d;
 
 retry:
        d=readc();
-       IF !subchar(d)
-       THEN    return(d);
-       FI
-       IF d==DOLLAR
-       THEN    REG INT c;
-               IF (c=readc(), dolchar(c))
-               THEN    NAMPTR          n=NIL;
-                       INT             dolg=0;
-                       BOOL            bra;
-                       REG STRING      argp, v;
-                       CHAR            idb[2];
-                       STRING          id=idb;
-
-                       IF bra=(c==BRACE) THEN c=readc() FI
-                       IF letter(c)
-                       THEN    argp=relstak();
-                               WHILE alphanum(c) DO pushstak(c); c=readc() OD
+       if (!subchar(d)) {
+               return(d);
+       }
+       if (d==DOLLAR) {
+               register int    c;
+               if ((c=readc(), dolchar(c))) {
+                       struct namnod           *n=NIL;
+                       int             dolg=0;
+                       bool            bra;
+                       register char*CHECKME   argp, v;
+                       char            idb[2];
+                       char            *id=idb;
+
+                       if (bra=(c==BRACE)) { c=readc(); }
+                       if (letter(c)) {
+                               argp=relstak();
+                               while (alphanum(c)) { pushstak(c); c=readc(); }
                                zerostak();
                                n=lookup(absstak(argp)); setstak(argp);
                                v = n->namval; id = n->namid;
-                               peekc = c|MARK;;
-                       ELIF digchar(c)
-                       THEN    *id=c; idb[1]=0;
-                               IF astchar(c)
-                               THEN    dolg=1; c='1';
-                               FI
+                               peekc = c|MARK;
+                       }
+                       else if (digchar(c)) {
+                               *id=c; idb[1]=0;
+                               if (astchar(c)) {
+                                       dolg=1; c='1';
+                               }
                                c -= '0';
                                v=((c==0) ? cmdadr : (c<=dolc) ? dolv[c] : (dolg=0));
-                       ELIF c=='$'
-                       THEN    v=pidadr;
-                       ELIF c=='!'
-                       THEN    v=pcsadr;
-                       ELIF c=='#'
-                       THEN    v=dolladr;
-                       ELIF c=='?'
-                       THEN    v=exitadr;
-                       ELIF c=='-'
-                       THEN    v=flagadr;
-                       ELIF bra THEN error(badsub);
-                       ELSE    goto retry;
-                       FI
+                       }
+                       else if (c=='$') {
+                               v=pidadr;
+                       }
+                       else if (c=='!') {
+                               v=pcsadr;
+                       }
+                       else if (c=='#') {
+                               v=dolladr;
+                       }
+                       else if (c=='?') {
+                               v=exitadr;
+                       }
+                       else if (c=='-') {
+                               v=flagadr;
+                       }
+                       else if (bra) {
+                            error(badsub);
+                       }
+                       else {
+                               goto retry;
+                       }
                        c = readc();
-                       IF !defchar(c) ANDF bra
-                       THEN    error(badsub);
-                       FI
+                       if (!defchar(c) && bra) {
+                               error(badsub);
+                       }
                        argp=0;
-                       IF bra
-                       THEN    IF c!='}'
-                               THEN    argp=relstak();
-                                       IF (v==0)NEQ(setchar(c))
-                                       THEN    copyto('}');
-                                       ELSE    skipto('}');
-                                       FI
+                       if (bra) { if (c!='}') {
+                                       argp=relstak();
+                                       if ((v==0)^(setchar(c))) { copyto('}');
+                                       }
+                                       else { skipto('}');
+                                       }
                                        argp=absstak(argp);
-                               FI
-                       ELSE    peekc = c|MARK; c = 0;
-                       FI
-                       IF v
-                       THEN    IF c!='+'
-                               THEN    LOOP WHILE c = *v++
-                                            DO pushstak(c|quote); OD
-                                            IF dolg==0 ORF (++dolg>dolc)
-                                            THEN break;
-                                            ELSE v=dolv[dolg]; pushstak(SP|(*id=='*' ? quote : 0));
-                                            FI
-                                       POOL
-                               FI
-                       ELIF argp
-                       THEN    IF c=='?'
-                               THEN    failed(id,*argp?argp:badparam);
-                               ELIF c=='='
-                               THEN    IF n
-                                       THEN    assign(n,argp);
-                                       ELSE    error(badsub);
-                                       FI
-                               FI
-                       ELIF flags&setflg
-                       THEN    failed(id,badparam);
-                       FI
+                               }
+                       }
+                       else {
+                               peekc = c|MARK; c = 0;
+                       }
+                       if (v) {
+                               if (c!='+') {
+                                       for(;;) {
+                                            while (c = *v++) { pushstak(c|quote); }
+                                            if (dolg==0 || (++dolg>dolc)) {
+                                                 break;
+                                            }
+                                            else {
+                                                 v=dolv[dolg]; pushstak(' '|(*id=='*' ? quote : 0));
+                                            }
+                                       }
+                               }
+                       }
+                       else if (argp) {
+                               if (c=='?') {
+                                       failed(id,*argp?argp:badparam);
+                               }
+                               else if (c=='=') {
+                                       if (n) {
+                                               assign(n,argp);
+                                       }
+                                       else {
+                                               error(badsub);
+                                       }
+                               }
+                       }
+                       else if (flags&setflg) {
+                               failed(id,badparam);
+                       }
                        goto retry;
-               ELSE    peekc=c|MARK;
-               FI
-       ELIF d==endch
-       THEN    return(d);
-       ELIF d==SQUOTE
-       THEN    comsubst(); goto retry;
-       ELIF d==DQUOTE
-       THEN    quoted++; quote^=QUOTE; goto retry;
-       FI
+               }
+               else {
+                       peekc=c|MARK;
+               }
+       }
+       else if (d==endch) {
+               return(d);
+       }
+       else if (d==SQUOTE) {
+               comsubst(); goto retry;
+       }
+       else if (d==DQUOTE) {
+               quoted++; quote^=0200; goto retry;
+       }
        return(d);
 }
 
-STRING macro(as)
-       STRING          as;
+char   *macro(as)
+       char            *as;
 {
        /* Strip "" and do $ substitution
         * Leaves result on top of stack
         */
-       REG BOOL        savqu =quoted;
-       REG CHAR        savq = quote;
-       FILEHDR         fb;
+       register bool   savqu =quoted;
+       register char   savq = quote;
+       struct filehdr          fb;
 
        push(&fb); estabf(as);
        usestak();
        quote=0; quoted=0;
        copyto(0);
        pop();
-       IF quoted ANDF (stakbot==staktop) THEN pushstak(QUOTE) FI
+       if (quoted && (stakbot==staktop)) { pushstak(0200); }
        quote=savq; quoted=savqu;
        return(fixstak());
 }
 
-LOCAL  comsubst()
+static comsubst()
 {
        /* command substn */
-       FILEBLK         cb;
-       REG CHAR        d;
-       REG STKPTR      savptr = fixstak();
+       struct fileblk          cb;
+       register char   d;
+       register char   *savptr = fixstak();
 
        usestak();
-       WHILE (d=readc())!=SQUOTE ANDF d
-       DO pushstak(d) OD
+       while ((d=readc())!=SQUOTE && d) { pushstak(d); }
 
-       BEGIN
-          REG STRING   argc;
+       {
+            
+          register char        *argc;
           trim(argc=fixstak());
           push(&cb); estabf(argc);
-       END
-       BEGIN
-          REG TREPTR   t = makefork(FPOU,cmd(EOFSYM,MTFLG|NLFLG));
-          INT          pv[2];
+       }
+       {
+            
+          register struct trenod*CHECKME       t = makefork(FPOU,cmd(EOFSYM,MTFLG|NLFLG));
+          int          pv[2];
 
           /* this is done like this so that the pipe
            * is open only when needed
@@ -196,42 +219,42 @@ LOCAL     comsubst()
           initf(pv[INPIPE]);
           execute(t, 0, 0, pv);
           close(pv[OTPIPE]);
-       END
+       }
        tdystak(savptr); staktop=movstr(savptr,stakbot);
-       WHILE d=readc() DO locstak(); pushstak(d|quote) OD
+       while (d=readc()) { locstak(); pushstak(d|quote); }
        await(0);
-       WHILE stakbot!=staktop
-       DO      IF (*--staktop&STRIP)!=NL
-               THEN    ++staktop; break;
-               FI
-       OD
+       while (stakbot!=staktop) {
+               if ((*--staktop&0177)!='\n') {
+                       ++staktop; break;
+               }
+       }
        pop();
 }
 
 #define CPYSIZ 512
 
 subst(in,ot)
-       INT             in, ot;
+       int             in, ot;
 {
-       REG CHAR        c;
-       FILEBLK         fb;
-       REG INT         count=CPYSIZ;
+       register char   c;
+       struct fileblk          fb;
+       register int            count=CPYSIZ;
 
        push(&fb); initf(in);
        /* DQUOTE used to stop it from quoting */
-       WHILE c=(getch(DQUOTE)&STRIP)
-       DO pushstak(c);
-          IF --count == 0
-          THEN flush(ot); count=CPYSIZ;
-          FI
-       OD
+       while (c=(getch(DQUOTE)&0177)) {
+          pushstak(c);
+          if (--count == 0) {
+               flush(ot); count=CPYSIZ;
+          }
+       }
        flush(ot);
        pop();
 }
 
-LOCAL  flush(ot)
+static flush(ot)
 {
        write(ot,stakbot,staktop-stakbot);
-       IF flags&execpr THEN write(output,stakbot,staktop-stakbot) FI
+       if (flags&execpr) { write(output,stakbot,staktop-stakbot); }
        staktop=stakbot;
 }
index 439bba9..502c908 100644 (file)
@@ -19,43 +19,43 @@ static char sccsid[] = "@(#)main.c  4.3 3/19/85";
 #include       <sgtty.h>
 #include       <signal.h>
 
-UFD            output = 2;
-LOCAL BOOL     beenhere = FALSE;
-CHAR           tmpout[20] = "/tmp/sh-";
-FILEBLK                stdfile;
-FILE           standin = &stdfile;
+int            output = 2;
+static bool    beenhere = 0;
+char           tmpout[20] = "/tmp/sh-";
+struct fileblk         stdfile;
+struct fileblk         *standin = &stdfile;
 #ifdef stupid
 #include       <execargs.h>
 #endif
 
-PROC VOID      exfile();
+extern void    exfile();
 
 
 
 
 main(c, v)
-       INT             c;
-       STRING          v[];
+       int             c;
+       char            *v[];
 {
-       REG INT         rflag=ttyflg;
+       register int            rflag=ttyflg;
 
        /* initialise storage allocation */
        stdsigs();
        setbrk(BRKINCR);
-       addblok((POS)0);
+       addblok((unsigned)0);
 
        /* set names from userenv */
        setupenv();
 
        /* look for restricted */
-/*     IF c>0 ANDF any('r', *v) THEN rflag=0 FI */
+/*     if (c>0 && any('r', *v)) { rflag=0; } */
 
        /* look for options */
        dolc=options(c,v);
-       IF dolc<2 THEN flags |= stdflg FI
-       IF (flags&stdflg)==0
-       THEN    dolc--;
-       FI
+       if (dolc<2) { flags |= stdflg; }
+       if ((flags&stdflg)==0) {
+               dolc--;
+       }
        dolv=v+c-dolc; dolc--;
 
        /* return here for shell file execution */
@@ -74,53 +74,57 @@ main(c, v)
        /* default ifs */
        dfault(&ifsnod, sptbnl);
 
-       IF (beenhere++)==FALSE
-       THEN    /* ? profile */
-               IF *cmdadr=='-'
-                   ANDF (input=pathopen(nullstr, profile))>=0
-               THEN    exfile(rflag); flags &= ~ttyflg;
-               FI
-               IF rflag==0 THEN flags |= rshflg FI
+       if ((beenhere++)==0) {
+               /* ? profile */
+               if (*cmdadr=='-'
+                   && (input=pathopen(nullstr, profile))>=0) {
+                       exfile(rflag); flags &= ~ttyflg;
+               }
+               if (rflag==0) { flags |= rshflg; }
 
                /* open input file if specified */
-               IF comdiv
-               THEN    estabf(comdiv); input = -1;
-               ELSE    input=((flags&stdflg) ? 0 : chkopen(cmdadr));
+               if (comdiv) {
+                       estabf(comdiv); input = -1;
+               }
+               else {
+                       input=((flags&stdflg) ? 0 : chkopen(cmdadr));
                        comdiv--;
-               FI
+               }
 #ifdef stupid
-       ELSE    *execargs=dolv; /* for `ps' cmd */
-#endif
-       FI
+       }
+       else {
+               *execargs=dolv; /* for `ps' cmd */
+#endif;
+       }
 
        exfile(0);
        done();
 }
 
-LOCAL VOID     exfile(prof)
-BOOL           prof;
+static void    exfile(prof)
+bool           prof;
 {
-       REG L_INT       mailtime = 0;
-       REG INT         userid;
+       register long   mailtime = 0;
+       register int            userid;
        struct stat     statb;
 
        /* move input */
-       IF input>0
-       THEN    Ldup(input,INIO);
+       if (input>0) {
+               Ldup(input,INIO);
                input=INIO;
-       FI
+       }
 
        /* move output to safe place */
-       IF output==2
-       THEN    Ldup(dup(2),OTIO);
+       if (output==2) {
+               Ldup(dup(2),OTIO);
                output=OTIO;
-       FI
+       }
 
        userid=getuid();
 
        /* decide whether interactive */
-       IF (flags&intflg) ORF ((flags&oneflg)==0 ANDF gtty(output,&statb)==0 ANDF gtty(input,&statb)==0)
-       THEN    dfault(&ps1nod, (userid?stdprompt:supprompt));
+       if ((flags&intflg) || ((flags&oneflg)==0 && gtty(output,&statb)==0 && gtty(input,&statb)==0)) {
+               dfault(&ps1nod, (userid?stdprompt:supprompt));
                dfault(&ps2nod, readmsg);
                flags |= ttyflg|prompt; ignsig(KILL);
 /*
@@ -131,47 +135,50 @@ BOOL              prof;
                signal(SIGTSTP, SIG_IGN);
                }
 */
-       ELSE    flags |= prof; flags &= ~prompt;
-       FI
+       }
+       else {
+               flags |= prof; flags &= ~prompt;
+       }
 
-       IF setjmp(errshell) ANDF prof
-       THEN    close(input); return;
-       FI
+       if (setjmp(errshell) && prof) {
+               close(input); return;
+       }
 
        /* error return here */
        loopcnt=breakcnt=peekc=0; iopend=0;
-       IF input>=0 THEN initf(input) FI
+       if (input>=0) { initf(input); }
 
        /* command loop */
-       LOOP    tdystak(0);
+       for(;;) {
+               tdystak(0);
                stakchk(); /* may reduce sbrk */
                exitset();
-               IF (flags&prompt) ANDF standin->fstak==0 ANDF !eof
-               THEN    IF mailnod.namval
-                           ANDF stat(mailnod.namval,&statb)>=0 ANDF statb.st_size
-                           ANDF (statb.st_mtime != mailtime)
-                           ANDF mailtime
-                       THEN    prs(mailmsg)
-                       FI
+               if ((flags&prompt) && standin->fstak==0 && !eof) {
+                       if (mailnod.namval
+                           && stat(mailnod.namval,&statb)>=0 && statb.st_size
+                           && (statb.st_mtime != mailtime)
+                           && mailtime) {
+                               prs(mailmsg);
+                       }
                        mailtime=statb.st_mtime;
                        prs(ps1nod.namval);
-               FI
+               }
 
                trapnote=0; peekc=readc();
-               IF eof
-               THEN    return;
-               FI
-               execute(cmd(NL,MTFLG),0);
+               if (eof) {
+                       return;
+               }
+               execute(cmd('\n',MTFLG),0);
                eof |= (flags&oneflg);
-       POOL
+       }
 }
 
 chkpr(eor)
 char eor;
 {
-       IF (flags&prompt) ANDF standin->fstak==0 ANDF eor==NL
-       THEN    prs(ps2nod.namval);
-       FI
+       if ((flags&prompt) && standin->fstak==0 && eor=='\n') {
+               prs(ps2nod.namval);
+       }
 }
 
 settmp()
@@ -181,7 +188,7 @@ settmp()
 }
 
 Ldup(fa, fb)
-       REG INT         fa, fb;
+       register int            fa, fb;
 {
        dup2(fa, fb);
        close(fa);
index 85fc1ec..ab2ad72 100644 (file)
  * into an Rvalue so two cheats
  * are necessary, one for each context.
  */
-union { int _cheat;};
+union { int _cheat;}
 #define Lcheat(a)      ((a)._cheat)
 #define Rcheat(a)      ((int)(a))
 
 
 /* address puns for storage allocation */
-UNION {
-       FORKPTR _forkptr;
-       COMPTR  _comptr;
-       PARPTR  _parptr;
-       IFPTR   _ifptr;
-       WHPTR   _whptr;
-       FORPTR  _forptr;
-       LSTPTR  _lstptr;
-       BLKPTR  _blkptr;
-       NAMPTR  _namptr;
-       BYTPTR  _bytptr;
+typedef union {
+       struct forknod  *_forkptr;
+       struct comnod   *_comptr;
+       struct parnod   *_parptr;
+       struct ifnod    *_ifptr;
+       struct whnod    *_whptr;
+       struct fornod   *_forptr;
+       struct lstnod   *_lstptr;
+       struct blk      *_blkptr;
+       struct namnod   *_namptr;
+       char    *_bytptr;
        }       address;
 
 
 /* for functions that do not return values */
 /*
-struct void {INT vvvvvvvv;};
+struct void {int vvvvvvvv;}
 */
 
 
 /* heap storage */
 struct blk {
-       BLKPTR  word;
-};
+       struct blk      *word;
+}
 
 #define        BUFSIZ  64
 struct fileblk {
-       UFD     fdes;
-       POS     flin;
-       BOOL    feof;
-       CHAR    fsiz;
-       STRING  fnxt;
-       STRING  fend;
-       STRING  *feval;
-       FILE    fstak;
-       CHAR    fbuf[BUFSIZ];
-};
+       int     fdes;
+       unsigned        flin;
+       bool    feof;
+       char    fsiz;
+       char    *fnxt;
+       char    *fend;
+       char    **feval;
+       struct fileblk  *fstak;
+       char    fbuf[BUFSIZ];
+}
 
 /* for files not used with file descriptors */
 struct filehdr {
-       UFD     fdes;
-       POS     flin;
-       BOOL    feof;
-       CHAR    fsiz;
-       STRING  fnxt;
-       STRING  fend;
-       STRING  *feval;
-       FILE    fstak;
-       CHAR    _fbuf[1];
-};
+       int     fdes;
+       unsigned        flin;
+       bool    feof;
+       char    fsiz;
+       char    *fnxt;
+       char    *fend;
+       char    **feval;
+       struct fileblk  *fstak;
+       char    _fbuf[1];
+}
 
 struct sysnod {
-       STRING  sysnam;
-       INT     sysval;
-};
+       char    *sysnam;
+       int     sysval;
+}
 
 /* this node is a proforma for those that follow */
 struct trenod {
-       INT     tretyp;
-       IOPTR   treio;
-};
+       int     tretyp;
+       struct ionod    *treio;
+}
 
 /* dummy for access only */
 struct argnod {
-       ARGPTR  argnxt;
-       CHAR    argval[1];
-};
+       struct argnod   *argnxt;
+       char    argval[1];
+}
 
 struct dolnod {
-       DOLPTR  dolnxt;
-       INT     doluse;
-       CHAR    dolarg[1];
-};
+       struct dolnod   *dolnxt;
+       int     doluse;
+       char    dolarg[1];
+}
 
 struct forknod {
-       INT     forktyp;
-       IOPTR   forkio;
-       TREPTR  forktre;
-};
+       int     forktyp;
+       struct ionod    *forkio;
+       struct trenod   *forktre;
+}
 
 struct comnod {
-       INT     comtyp;
-       IOPTR   comio;
-       ARGPTR  comarg;
-       ARGPTR  comset;
-};
+       int     comtyp;
+       struct ionod    *comio;
+       struct argnod   *comarg;
+       struct argnod   *comset;
+}
 
 struct ifnod {
-       INT     iftyp;
-       TREPTR  iftre;
-       TREPTR  thtre;
-       TREPTR  eltre;
-};
+       int     iftyp;
+       struct trenod   *iftre;
+       struct trenod   *thtre;
+       struct trenod   *eltre;
+}
 
 struct whnod {
-       INT     whtyp;
-       TREPTR  whtre;
-       TREPTR  dotre;
-};
+       int     whtyp;
+       struct trenod   *whtre;
+       struct trenod   *dotre;
+}
 
 struct fornod {
-       INT     fortyp;
-       TREPTR  fortre;
-       STRING  fornam;
-       COMPTR  forlst;
-};
+       int     fortyp;
+       struct trenod   *fortre;
+       char    *fornam;
+       struct comnod   *forlst;
+}
 
 struct swnod {
-       INT     swtyp;
-       STRING  swarg;
-       REGPTR  swlst;
-};
+       int     swtyp;
+       char    *swarg;
+       struct regnod   *swlst;
+}
 
 struct regnod {
-       ARGPTR  regptr;
-       TREPTR  regcom;
-       REGPTR  regnxt;
-};
+       struct argnod   *regptr;
+       struct trenod   *regcom;
+       struct regnod   *regnxt;
+}
 
 struct parnod {
-       INT     partyp;
-       TREPTR  partre;
-};
+       int     partyp;
+       struct trenod   *partre;
+}
 
 struct lstnod {
-       INT     lsttyp;
-       TREPTR  lstlef;
-       TREPTR  lstrit;
-};
+       int     lsttyp;
+       struct trenod   *lstlef;
+       struct trenod   *lstrit;
+}
 
 struct ionod {
-       INT     iofile;
-       STRING  ioname;
-       IOPTR   ionxt;
-       IOPTR   iolst;
-};
+       int     iofile;
+       char    *ioname;
+       struct ionod    *ionxt;
+       struct ionod    *iolst;
+}
index 4cff25f..ab74648 100644 (file)
@@ -15,63 +15,63 @@ static char sccsid[] = "@(#)msg.c   4.4 5/22/85";
 #include       "defs.h"
 #include       "sym.h"
 
-MSG            version = "\nVERSION sys137     DATE 1978 Nov 6 14:29:22\n";
+char           version[] = "\nVERSION sys137   DATE 1978 Nov 6 14:29:22\n";
 
 /* error messages */
-MSG    badopt          = "bad option(s)";
-MSG    mailmsg         = "you have mail\n";
-MSG    nospace         = "no space";
-MSG    synmsg          = "syntax error";
+char   badopt[]                = "bad option(s)";
+char   mailmsg[]               = "you have mail\n";
+char   nospace[]               = "no space";
+char   synmsg[]                = "syntax error";
 
-MSG    badnum          = "bad number";
-MSG    badparam        = "parameter not set";
-MSG    badsub          = "bad substitution";
-MSG    badcreate       = "cannot create";
-MSG    illegal         = "illegal io";
-MSG    restricted      = "restricted";
-MSG    piperr          = "cannot make pipe";
-MSG    badopen         = "cannot open";
-MSG    coredump        = " - core dumped";
-MSG    arglist         = "arg list too long";
-MSG    txtbsy          = "text busy";
-MSG    toobig          = "too big";
-MSG    badexec         = "cannot execute";
-MSG    notfound        = "not found";
-MSG    badfile         = "bad file number";
-MSG    badshift        = "cannot shift";
-MSG    baddir          = "bad directory";
-MSG    badtrap         = "bad trap";
-MSG    wtfailed        = "is read only";
-MSG    notid           = "is not an identifier";
+char   badnum[]                = "bad number";
+char   badparam[]      = "parameter not set";
+char   badsub[]                = "bad substitution";
+char   badcreate[]     = "cannot create";
+char   illegal[]               = "illegal io";
+char   restricted[]    = "restricted";
+char   piperr[]                = "cannot make pipe";
+char   badopen[]               = "cannot open";
+char   coredump[]      = " - core dumped";
+char   arglist[]               = "arg list too long";
+char   txtbsy[]                = "text busy";
+char   toobig[]                = "too big";
+char   badexec[]               = "cannot execute";
+char   notfound[]      = "not found";
+char   badfile[]               = "bad file number";
+char   badshift[]      = "cannot shift";
+char   baddir[]                = "bad directory";
+char   badtrap[]               = "bad trap";
+char   wtfailed[]      = "is read only";
+char   notid[]         = "is not an identifier";
 
 /* built in names */
-MSG    pathname        = "PATH";
-MSG    homename        = "HOME";
-MSG    mailname        = "MAIL";
-MSG    fngname         = "FILEMATCH";
-MSG    ifsname         = "IFS";
-MSG    ps1name         = "PS1";
-MSG    ps2name         = "PS2";
+char   pathname[]      = "PATH";
+char   homename[]      = "HOME";
+char   mailname[]      = "MAIL";
+char   fngname[]               = "FILEMATCH";
+char   ifsname[]               = "IFS";
+char   ps1name[]               = "PS1";
+char   ps2name[]               = "PS2";
 
 /* string constants */
-MSG    nullstr         = "";
-MSG    sptbnl          = " \t\n";
-MSG    defpath         = ":/bin:/usr/bin";
-MSG    colon           = ": ";
-MSG    minus           = "-";
-MSG    endoffile       = "end of file";
-MSG    unexpected      = " unexpected";
-MSG    atline          = " at line ";
-MSG    devnull         = "/dev/null";
-MSG    execpmsg        = "+ ";
-MSG    readmsg         = "> ";
-MSG    stdprompt       = "$ ";
-MSG    supprompt       = "# ";
-MSG    profile         = ".profile";
+char   nullstr[]               = "";
+char   sptbnl[]                = " \t\n";
+char   defpath[]               = ":/bin:/usr/bin";
+char   colon[]         = ": ";
+char   minus[]         = "-";
+char   endoffile[]     = "end of file";
+char   unexpected[]    = " unexpected";
+char   atline[]                = " at line ";
+char   devnull[]               = "/dev/null";
+char   execpmsg[]      = "+ ";
+char   readmsg[]               = "> ";
+char   stdprompt[]     = "$ ";
+char   supprompt[]     = "# ";
+char   profile[]               = ".profile";
 
 
 /* tables */
-SYSTAB reserved {
+struct sysnod reserved[] {
                {"in",          INSYM},
                {"esac",        ESSYM},
                {"case",        CASYM},
@@ -88,9 +88,9 @@ SYSTAB reserved {
                { "{",          BRSYM},
                { "}",          KTSYM},
                {0,     0},
-};
+}
 
-STRING sysmsg[] {
+char   *sysmsg[] {
                0,
                "Hangup",
                0,      /* Interrupt */
@@ -124,12 +124,12 @@ STRING    sysmsg[] {
                "User defined signal 1",
                "User defined signal 2",
                "Signal 32",
-};
-INT            num_sysmsg = (sizeof sysmsg / sizeof sysmsg[0]);
+}
+int            num_sysmsg = (sizeof sysmsg / sizeof sysmsg[0]);
 
-MSG            export = "export";
-MSG            readonly = "readonly";
-SYSTAB commands {
+char           export[] = "export";
+char           readonly[] = "readonly";
+struct sysnod  commands[] {
                {"cd",          SYSCD},
                {"read",        SYSREAD},
 /*
@@ -153,4 +153,4 @@ SYSTAB      commands {
                {"times",       SYSTIMES},
                {"umask",       SYSUMASK},
                {0,     0},
-};
+}
index 2bc361f..f9774d7 100644 (file)
@@ -13,198 +13,212 @@ static char sccsid[] = "@(#)name.c        4.4 10/31/85";
 
 #include       "defs.h"
 
-PROC BOOL      chkid();
+extern bool    chkid();
 
 
-NAMNOD ps2nod  = {     NIL,            NIL,            ps2name},
+struct namnod  ps2nod  = {     NIL,            NIL,            ps2name},
        fngnod  = {     NIL,            NIL,            fngname},
        pathnod = {     NIL,            NIL,            pathname},
        ifsnod  = {     NIL,            NIL,            ifsname},
        ps1nod  = {     &pathnod,       &ps2nod,        ps1name},
        homenod = {     &fngnod,        &ifsnod,        homename},
-       mailnod = {     &homenod,       &ps1nod,        mailname};
+       mailnod = {     &homenod,       &ps1nod,        mailname}
 
-NAMPTR         namep = &mailnod;
+struct namnod          *namep = &mailnod;
 
 
 /* ========    variable and string handling    ======== */
 
 syslook(w,syswds)
-       STRING          w;
-       SYSTAB          syswds;
+       char            *w;
+       struct sysnod           syswds[];
 {
-       REG CHAR        first;
-       REG STRING      s;
-       REG SYSPTR      syscan;
+       register char   first;
+       register char   *s;
+       register struct sysnod  *syscan;
 
        syscan=syswds; first = *w;
 
-       WHILE s=syscan->sysnam
-       DO  IF first == *s
-               ANDF eq(w,s)
-           THEN return(syscan->sysval);
-           FI
+       while (s=syscan->sysnam) {
+           if (first == *s
+               && eq(w,s)) {
+                return(syscan->sysval);
+           }
            syscan++;
-       OD
+       }
        return(0);
 }
 
 setlist(arg,xp)
-       REG ARGPTR      arg;
-       INT             xp;
+       register struct argnod  *arg;
+       int             xp;
 {
-       WHILE arg
-       DO REG STRING   s=mactrim(arg->argval);
+       while (arg) {
+          register char        *s=mactrim(arg->argval);
           setname(s, xp);
           arg=arg->argnxt;
-          IF flags&execpr
-          THEN prs(s);
-               IF arg THEN blank(); ELSE newline(); FI
-          FI
-       OD
+          if (flags&execpr) {
+               prs(s);
+               if (arg) { blank(); }NEWLINEelse { newline(); }
+          }
+       }
 }
 
-VOID   setname(argi, xp)
-       STRING          argi;
-       INT             xp;
+void   setname(argi, xp)
+       char            *argi;
+       int             xp;
 {
-       REG STRING      argscan=argi;
-       REG NAMPTR      n;
+       register char   *argscan=argi;
+       register struct namnod  *n;
 
-       IF letter(*argscan)
-       THEN    WHILE alphanum(*argscan) DO argscan++ OD
-               IF *argscan=='='
-               THEN    *argscan = 0;
+       if (letter(*argscan)) {
+               while (alphanum(*argscan)) { argscan++; }
+               if (*argscan=='=') {
+                       *argscan = 0;
                        n=lookup(argi);
                        *argscan++ = '=';
                        attrib(n, xp);
-                       IF xp&N_ENVNAM
-                       THEN    
+                       if (xp&N_ENVNAM) {
+                               
                                /*
                                 * Importing IFS can be very dangerous
                                 */
-                               IF !bcmp(argi, "IFS=", sizeof("IFS=") - 1)
-                               THEN 
+                               if (!bcmp(argi, "IFS=", sizeof("IFS=") - 1)) {
+                                    
                                        int uid;
-                                       IF (uid = getuid())!=geteuid() ORF !uid
-                                       THEN
+                                       if ((uid = getuid())!=geteuid() || !uid) {
+                                           
                                                return;
-                                       FI
-                               FI
+                                       }
+                               }
                                n->namenv = n->namval = argscan;
-                       ELSE    assign(n, argscan);
-                       FI
+                       }
+                       else {
+                               assign(n, argscan);
+                       }
                        return;
-               FI
-       FI
+               }
+       }
        failed(argi,notid);
 }
 
 replace(a, v)
-       REG STRING      *a;
-       STRING          v;
+       register char   **a;
+       char            *v;
 {
        free(*a); *a=make(v);
 }
 
 dfault(n,v)
-       NAMPTR          n;
-       STRING          v;
+       struct namnod           *n;
+       char            *v;
 {
-       IF n->namval==0
-       THEN    assign(n,v)
-       FI
+       if (n->namval==0) {
+               assign(n,v);
+       }
 }
 
 assign(n,v)
-       NAMPTR          n;
-       STRING          v;
+       struct namnod           *n;
+       char            *v;
 {
-       IF n->namflg&N_RDONLY
-       THEN    failed(n->namid,wtfailed);
-       ELSE    replace(&n->namval,v);
-       FI
+       if (n->namflg&N_RDONLY) {
+               failed(n->namid,wtfailed);
+       }
+       else {
+               replace(&n->namval,v);
+       }
 }
 
-INT    readvar(names)
-       STRING          *names;
+int    readvar(names)
+       char            **names;
 {
-       FILEBLK         fb;
-       REG FILE        f = &fb;
-       REG CHAR        c;
-       REG INT         rc=0;
-       NAMPTR          n=lookup(*names++); /* done now to avoid storage mess */
-       STKPTR          rel=relstak();
+       struct fileblk          fb;
+       register struct fileblk *f = &fb;
+       register char   c;
+       register int            rc=0;
+       struct namnod           *n=lookup(*names++); /* done now to avoid storage mess */
+       char            *rel=relstak();
 
        push(f); initf(dup(0));
-       IF lseek(0,0L,1)==-1
-       THEN    f->fsiz=1;
-       FI
-
-       LOOP    c=nextc(0);
-               IF (*names ANDF any(c, ifsnod.namval)) ORF eolchar(c)
-               THEN    zerostak();
+       if (lseek(0,0L,1)==-1) {
+               f->fsiz=1;
+       }
+
+       for(;;) {
+               c=nextc(0);
+               if ((*names && any(c, ifsnod.namval)) || eolchar(c)) {
+                       zerostak();
                        assign(n,absstak(rel)); setstak(rel);
-                       IF *names
-                       THEN    n=lookup(*names++);
-                       ELSE    n=0;
-                       FI
-                       IF eolchar(c)
-                       THEN    break;
-                       FI
-               ELSE    pushstak(c);
-               FI
-       POOL
-       WHILE n
-       DO assign(n, nullstr);
-          IF *names THEN n=lookup(*names++); ELSE n=0; FI
-       OD
-
-       IF eof THEN rc=1 FI
+                       if (*names) {
+                               n=lookup(*names++);
+                       }
+                       else {
+                               n=0;
+                       }
+                       if (eolchar(c)) {
+                               break;
+                       }
+               }
+               else {
+                       pushstak(c);
+               }
+       }
+       while (n) {
+          assign(n, nullstr);
+          if (*names) { n=lookup(*names++); }NEWLINEelse { n=0; }
+       }
+
+       if (eof) { rc=1; }
        lseek(0, (long)(f->fnxt-f->fend), 1);
        pop();
        return(rc);
 }
 
 assnum(p, i)
-       STRING          *p;
-       INT             i;
+       char            **p;
+       int             i;
 {
        itos(i); replace(p,numbuf);
 }
 
-STRING make(v)
-       STRING          v;
+char   *make(v)
+       char            *v;
 {
-       REG STRING      p;
+       register char   *p;
 
-       IF v
-       THEN    movstr(v,p=alloc(length(v)));
+       if (v) {
+               movstr(v,p=alloc(length(v)));
                return(p);
-       ELSE    return(0);
-       FI
+       }
+       else {
+               return(0);
+       }
 }
 
 
-NAMPTR         lookup(nam)
-       REG STRING      nam;
+struct namnod          *lookup(nam)
+       register char   *nam;
 {
-       REG NAMPTR      nscan=namep;
-       REG NAMPTR      *prev;
-       INT             LR;
-
-       IF !chkid(nam)
-       THEN    failed(nam,notid);
-       FI
-       WHILE nscan
-       DO      IF (LR=cf(nam,nscan->namid))==0
-               THEN    return(nscan);
-               ELIF LR<0
-               THEN    prev = &(nscan->namlft);
-               ELSE    prev = &(nscan->namrgt);
-               FI
+       register struct namnod  *nscan=namep;
+       register struct namnod  **prev;
+       int             LR;
+
+       if (!chkid(nam)) {
+               failed(nam,notid);
+       }
+       while (nscan) {
+               if ((LR=cf(nam,nscan->namid))==0) {
+                       return(nscan);
+               }
+               else if (LR<0) {
+                       prev = &(nscan->namlft);
+               }
+               else {
+                       prev = &(nscan->namrgt);
+               }
                nscan = *prev;
-       OD
+       }
 
        /* add name node */
        nscan=alloc(sizeof *nscan);
@@ -214,118 +228,121 @@ NAMPTR          lookup(nam)
        return(*prev = nscan);
 }
 
-LOCAL BOOL     chkid(nam)
-       STRING          nam;
+static bool    chkid(nam)
+       char            *nam;
 {
-       REG CHAR *      cp=nam;
-
-       IF !letter(*cp)
-       THEN    return(FALSE);
-       ELSE    WHILE *++cp
-               DO IF !alphanum(*cp)
-                  THEN return(FALSE);
-                  FI
-               OD
-       FI
-       return(TRUE);
+       register char * cp=nam;
+
+       if (!letter(*cp)) {
+               return(0);
+       }
+       else {
+               while (*++cp) {
+                  if (!alphanum(*cp)) {
+                       return(0);
+                  }
+               }
+       }
+       return(-1);
 }
 
-LOCAL VOID (*namfn)();
+static void (*namfn)();
 namscan(fn)
-       VOID            (*fn)();
+       void            (*fn)();
 {
        namfn=fn;
        namwalk(namep);
 }
 
-LOCAL VOID     namwalk(np)
-       REG NAMPTR      np;
+static void    namwalk(np)
+       register struct namnod  *np;
 {
-       IF np
-       THEN    namwalk(np->namlft);
+       if (np) {
+               namwalk(np->namlft);
                (*namfn)(np);
                namwalk(np->namrgt);
-       FI
+       }
 }
 
-VOID   printnam(n)
-       NAMPTR          n;
+void   printnam(n)
+       struct namnod           *n;
 {
-       REG STRING      s;
+       register char   *s;
 
        sigchk();
-       IF s=n->namval
-       THEN    prs(n->namid);
+       if (s=n->namval) {
+               prs(n->namid);
                prc('='); prs(s);
                newline();
-       FI
+       }
 }
 
-LOCAL STRING   staknam(n)
-       REG NAMPTR      n;
+static char    *staknam(n)
+       register struct namnod  *n;
 {
-       REG STRING      p;
+       register char   *p;
 
        p=movstr(n->namid,staktop);
        p=movstr("=",p);
        p=movstr(n->namval,p);
-       return(getstak(p+1-ADR(stakbot)));
+       return(getstak(p+1-(void *)(stakbot)));
 }
 
-VOID   exname(n)
-       REG NAMPTR      n;
+void   exname(n)
+       register struct namnod  *n;
 {
-       IF n->namflg&N_EXPORT
-       THEN    free(n->namenv);
+       if (n->namflg&N_EXPORT) {
+               free(n->namenv);
                n->namenv = make(n->namval);
-       ELSE    free(n->namval);
+       }
+       else {
+               free(n->namval);
                n->namval = make(n->namenv);
-       FI
+       }
 }
 
-VOID   printflg(n)
-       REG NAMPTR              n;
+void   printflg(n)
+       register struct namnod          *n;
 {
-       IF n->namflg&N_EXPORT
-       THEN    prs(export); blank();
-       FI
-       IF n->namflg&N_RDONLY
-       THEN    prs(readonly); blank();
-       FI
-       IF n->namflg&(N_EXPORT|N_RDONLY)
-       THEN    prs(n->namid); newline();
-       FI
+       if (n->namflg&N_EXPORT) {
+               prs(export); blank();
+       }
+       if (n->namflg&N_RDONLY) {
+               prs(readonly); blank();
+       }
+       if (n->namflg&(N_EXPORT|N_RDONLY)) {
+               prs(n->namid); newline();
+       }
 }
 
-VOID   setupenv()
+void   setupenv()
 {
-       REG STRING      *e=environ;
+       register char   **e=environ;
 
-       WHILE *e
-       DO setname(*e++, N_ENVNAM) OD
+       while (*e) { setname(*e++, N_ENVNAM); }
 }
 
-LOCAL INT      namec;
+static int     namec;
 
-VOID   countnam(n)
-       NAMPTR          n;
+void   countnam(n)
+       struct namnod           *n;
 {
        namec++;
 }
 
-LOCAL STRING   *argnam;
+static char    **argnam;
 
-VOID   pushnam(n)
-       NAMPTR          n;
+void   pushnam(n)
+       struct namnod           *n;
 {
-       IF n->namval
-       THEN    *argnam++ = staknam(n);
-       FI
+       if (n->namval) {
+               *argnam++ = staknam(n);
+       }
 }
 
-STRING *setenv()
+char   **setenv()
 {
-       REG STRING      *er;
+       register char   **er;
 
        namec=0;
        namscan(countnam);
index 67109d4..8d59e84 100644 (file)
 #define N_DEFAULT 0
 
 struct namnod {
-       NAMPTR  namlft;
-       NAMPTR  namrgt;
-       STRING  namid;
-       STRING  namval;
-       STRING  namenv;
-       INT     namflg;
-};
+       struct namnod   *namlft;
+       struct namnod   *namrgt;
+       char    *namid;
+       char    *namval;
+       char    *namenv;
+       int     namflg;
+}
index ee7ccac..2f51ba4 100644 (file)
@@ -13,89 +13,90 @@ static char sccsid[] = "@(#)print.c 4.2 8/11/83";
 
 #include       "defs.h"
 
-CHAR           numbuf[6];
+char           numbuf[6];
 
 
 /* printing and io conversion */
 
 newline()
-{      prc(NL);
+{      prc('\n');
 }
 
 blank()
-{      prc(SP);
+{      prc(' ');
 }
 
 prp()
 {
-       IF (flags&prompt)==0 ANDF cmdadr
-       THEN    prs(cmdadr); prs(colon);
-       FI
+       if ((flags&prompt)==0 && cmdadr) {
+               prs(cmdadr); prs(colon);
+       }
 }
 
-VOID   prs(as)
-       STRING          as;
+void   prs(as)
+       char            *as;
 {
-       REG STRING      s;
+       register char   *s;
 
-       IF s=as
-       THEN    write(output,s,length(s)-1);
-       FI
+       if (s=as) {
+               write(output,s,length(s)-1);
+       }
 }
 
-VOID   prc(c)
-       CHAR            c;
+void   prc(c)
+       char            c;
 {
-       IF c
-       THEN    write(output,&c,1);
-       FI
+       if (c) {
+               write(output,&c,1);
+       }
 }
 
 prt(t)
-       L_INT           t;
+       long            t;
 {
-       REG INT hr, min, sec;
+       register int    hr, min, sec;
 
        t += 30; t /= 60;
        sec=t%60; t /= 60;
        min=t%60;
-       IF hr=t/60
-       THEN    prn(hr); prc('h');
-       FI
+       if (hr=t/60) {
+               prn(hr); prc('h');
+       }
        prn(min); prc('m');
        prn(sec); prc('s');
 }
 
 prn(n)
-       INT             n;
+       int             n;
 {
        itos(n); prs(numbuf);
 }
 
 itos(n)
 {
-       REG char *abuf; REG POS a, i; INT pr, d;
-       abuf=numbuf; pr=FALSE; a=n;
-       FOR i=10000; i!=1; i/=10
-       DO      IF (pr |= (d=a/i)) THEN *abuf++=d+'0' FI
+       register char *abuf; register unsigned a, i; int pr, d;
+       abuf=numbuf; pr=0; a=n;
+       for (i=10000; i!=1; i/=10) {
+               if ((pr |= (d=a/i))) { *abuf++=d+'0'; }
                a %= i;
-       OD
+       }
        *abuf++=a+'0';
        *abuf++=0;
 }
 
 stoi(icp)
-STRING icp;
+char   *icp;
 {
-       REG CHAR        *cp = icp;
-       REG INT         r = 0;
-       REG CHAR        c;
-
-       WHILE (c = *cp, digit(c)) ANDF c ANDF r>=0
-       DO r = r*10 + c - '0'; cp++ OD
-       IF r<0 ORF cp==icp
-       THEN    failed(icp,badnum);
-       ELSE    return(r);
-       FI
+       register char   *cp = icp;
+       register int            r = 0;
+       register char   c;
+
+       while ((c = *cp, digit(c)) && c && r>=0) { r = r*10 + c - '0'; cp++; }
+       if (r<0 || cp==icp) {
+               failed(icp,badnum);
+       }
+       else {
+               return(r);
+       }
 }
 
index 997b11e..e940797 100644 (file)
@@ -14,13 +14,13 @@ static char sccsid[] = "@(#)service.c       4.4 3/19/85";
 #include       "defs.h"
 
 
-PROC VOID      gsort();
+extern void    gsort();
 
 #define ARGMK  01
 
-INT            errno;
-STRING         sysmsg[];
-INT            num_sysmsg;
+int            errno;
+char           *sysmsg[];
+int            num_sysmsg;
 
 /* fault handling */
 #define ENOMEM 12
@@ -33,120 +33,136 @@ INT               num_sysmsg;
 
 /* service routines for `execute' */
 
-VOID   initio(iop)
-       IOPTR           iop;
+void   initio(iop)
+       struct ionod            *iop;
 {
-       REG STRING      ion;
-       REG INT         iof, fd;
+       register char   *ion;
+       register int            iof, fd;
 
-       IF iop
-       THEN    iof=iop->iofile;
+       if (iop) {
+               iof=iop->iofile;
                ion=mactrim(iop->ioname);
-               IF *ion ANDF (flags&noexec)==0
-               THEN    IF iof&IODOC
-                       THEN    subst(chkopen(ion),(fd=tmpfil()));
+               if (*ion && (flags&noexec)==0) {
+                       if (iof&IODOC) {
+                               subst(chkopen(ion),(fd=tmpfil()));
                                close(fd); fd=chkopen(tmpout); unlink(tmpout);
-                       ELIF iof&IOMOV
-                       THEN    IF eq(minus,ion)
-                               THEN    fd = -1;
+                       }
+                       else if (iof&IOMOV) {
+                               if (eq(minus,ion)) {
+                                       fd = -1;
                                        close(iof&IOUFD);
-                               ELIF (fd=stoi(ion))>=USERIO
-                               THEN    failed(ion,badfile);
-                               ELSE    fd=dup(fd);
-                               FI
-                       ELIF (iof&IOPUT)==0
-                       THEN    fd=chkopen(ion);
-                       ELIF flags&rshflg
-                       THEN    failed(ion,restricted);
-                       ELIF iof&IOAPP ANDF (fd=open(ion,1))>=0
-                       THEN    lseek(fd, 0L, 2);
-                       ELSE    fd=create(ion);
-                       FI
-                       IF fd>=0
-                       THEN    rename(fd,iof&IOUFD);
-                       FI
-               FI
+                               }
+                               else if ((fd=stoi(ion))>=USERIO) {
+                                       failed(ion,badfile);
+                               }
+                               else {
+                                       fd=dup(fd);
+                               }
+                       }
+                       else if ((iof&IOPUT)==0) {
+                               fd=chkopen(ion);
+                       }
+                       else if (flags&rshflg) {
+                               failed(ion,restricted);
+                       }
+                       else if (iof&IOAPP && (fd=open(ion,1))>=0) {
+                               lseek(fd, 0L, 2);
+                       }
+                       else {
+                               fd=create(ion);
+                       }
+                       if (fd>=0) {
+                               rename(fd,iof&IOUFD);
+                       }
+               }
                initio(iop->ionxt);
-       FI
+       }
 }
 
-STRING getpath(s)
-       STRING          s;
+char   *getpath(s)
+       char            *s;
 {
-       REG STRING      path;
-       IF any('/',s)
-       THEN    IF flags&rshflg
-               THEN    failed(s, restricted);
-               ELSE    return(nullstr);
-               FI
-       ELIF (path = pathnod.namval)==0
-       THEN    return(defpath);
-       ELSE    return(cpystak(path));
-       FI
+       register char   *path;
+       if (any('/',s)) {
+               if (flags&rshflg) {
+                       failed(s, restricted);
+               }
+               else {
+                       return(nullstr);
+               }
+       }
+       else if ((path = pathnod.namval)==0) {
+               return(defpath);
+       }
+       else {
+               return(cpystak(path));
+       }
 }
 
-INT    pathopen(path, name)
-       REG STRING      path, name;
+int    pathopen(path, name)
+       register char*CHECKME   path, name;
 {
-       REG UFD         f;
+       register int            f;
 
-       REP path=catpath(path,name);
-       PER (f=open(curstak(),0))<0 ANDF path DONE
+       do {
+           path=catpath(path,name);
+       } while ((f=open(curstak(),0))<0 && path);
        return(f);
 }
 
-STRING catpath(path,name)
-       REG STRING      path;
-       STRING          name;
+char*CHECKME   catpath(path,name)
+       register char   *path;
+       char            *name;
 {
        /* leaves result on top of stack */
-       REG STRING      scanp = path,
+       register char*CHECKME   scanp = path,
                        argp = locstak();
 
-       WHILE *scanp ANDF *scanp!=COLON DO *argp++ = *scanp++ OD
-       IF scanp!=path THEN *argp++='/' FI
-       IF *scanp==COLON THEN scanp++ FI
+       while (*scanp && *scanp!=':') { *argp++ = *scanp++; }
+       if (scanp!=path) { *argp++='/'; }
+       if (*scanp==':') { scanp++; }
        path=(*scanp ? scanp : 0); scanp=name;
-       WHILE (*argp++ = *scanp++) DONE
+       while ((*argp++ = *scanp++));
        return(path);
 }
 
-LOCAL STRING   xecmsg;
-LOCAL STRING   *xecenv;
+static char    *xecmsg;
+static char    **xecenv;
 
-VOID   execa(at)
-       STRING          at[];
+void   execa(at)
+       char            *at[];
 {
-       REG STRING      path;
-       REG STRING      *t = at;
+       register char   *path;
+       register char   **t = at;
 
-       IF (flags&noexec)==0
-       THEN    xecmsg=notfound; path=getpath(*t);
+       if ((flags&noexec)==0) {
+               xecmsg=notfound; path=getpath(*t);
                namscan(exname);
                xecenv=setenv();
-               WHILE path=execs(path,t) DONE
+               while (path=execs(path,t));
                failed(*t,xecmsg);
-       FI
+       }
 }
 
-LOCAL STRING   execs(ap,t)
-       STRING          ap;
-       REG STRING      t[];
+static char*CHECKME    execs(ap,t)
+       char            *ap;
+       register char   *t[];
 {
-       REG STRING      p, prefix;
+       register char*CHECKME   p, prefix;
 
        prefix=catpath(ap,t[0]);
        trim(p=curstak());
 
        sigchk();
        execve(p, &t[0] ,xecenv);
-       SWITCH errno IN
+       switch (errno) {
+         
 
            case ENOEXEC:
                flags=0;
                comdiv=0; ioset=0;
                clearup(); /* remove open files and for loop junk */
-               IF input THEN close(input) FI
+               if (input) { close(input); }
                close(output); output=2;
                input=chkopen(p);
 
@@ -178,7 +194,7 @@ LOCAL STRING        execs(ap,t)
                xecmsg=badexec;
            case ENOENT:
                return(prefix);
-       ENDSW
+       }
 }
 
 gocsh(t, cp, xecenv)
@@ -198,205 +214,217 @@ gocsh(t, cp, xecenv)
 
 /* for processes to be waited for */
 #define MAXP 20
-LOCAL INT      pwlist[MAXP];
-LOCAL INT      pwc;
+static int     pwlist[MAXP];
+static int     pwc;
 
 postclr()
 {
-       REG INT         *pw = pwlist;
+       register int            *pw = pwlist;
 
-       WHILE pw <= &pwlist[pwc]
-       DO *pw++ = 0 OD
+       while (pw <= &pwlist[pwc]) { *pw++ = 0; }
        pwc=0;
 }
 
-VOID   post(pcsid)
-       INT             pcsid;
+void   post(pcsid)
+       int             pcsid;
 {
-       REG INT         *pw = pwlist;
-
-       IF pcsid
-       THEN    WHILE *pw DO pw++ OD
-               IF pwc >= MAXP-1
-               THEN    pw--;
-               ELSE    pwc++;
-               FI
+       register int            *pw = pwlist;
+
+       if (pcsid) {
+               while (*pw) { pw++; }
+               if (pwc >= MAXP-1) {
+                       pw--;
+               }
+               else {
+                       pwc++;
+               }
                *pw = pcsid;
-       FI
+       }
 }
 
-VOID   await(i)
-       INT             i;
+void   await(i)
+       int             i;
 {
-       INT             rc=0, wx=0;
-       INT             w;
-       INT             ipwc = pwc;
+       int             rc=0, wx=0;
+       int             w;
+       int             ipwc = pwc;
 
        post(i);
-       WHILE pwc
-       DO      REG INT         p;
-               REG INT         sig;
-               INT             w_hi;
-
-               BEGIN
-                  REG INT      *pw=pwlist;
-                  IF setjmp(INTbuf) == 0
-                  THEN trapjmp[INTR] = 1; p=wait(&w);
-                  ELSE p = -1;
-                  FI
+       while (pwc) {
+               register int            p;
+               register int            sig;
+               int             w_hi;
+
+               {
+                    
+                  register int *pw=pwlist;
+                  if (setjmp(INTbuf) == 0) {
+                       trapjmp[INTR] = 1; p=wait(&w);
+                  }
+                  else {
+                       p = -1;
+                  }
                   trapjmp[INTR] = 0;
-                  WHILE pw <= &pwlist[ipwc]
-                  DO IF *pw==p
-                     THEN *pw=0; pwc--;
-                     ELSE pw++;
-                     FI
-                  OD
-               END
+                  while (pw <= &pwlist[ipwc]) {
+                     if (*pw==p) {
+                          *pw=0; pwc--;
+                     }
+                     else {
+                          pw++;
+                     }
+                  }
+               }
 
-               IF p == -1 THEN continue FI
+               if (p == -1) { continue; }
 
-               w_hi = (w>>8)&LOBYTE;
+               w_hi = (w>>8)&0377;
 
-               IF sig = w&0177
-               THEN    IF sig == 0177  /* ptrace! return */
-                       THEN    prs("ptrace: ");
+               if (sig = w&0177) {
+                       if (sig == 0177 /* ptrace! return */) {
+                               prs("ptrace: ");
                                sig = w_hi;
-                       FI
-                       IF sig < num_sysmsg ANDF sysmsg[sig]
-                       THEN    IF i!=p ORF (flags&prompt)==0
-                               THEN prp(); prn(p); blank()
-                               FI
+                       }
+                       if (sig < num_sysmsg && sysmsg[sig]) {
+                               if (i!=p || (flags&prompt)==0) {
+                                    prp(); prn(p); blank();
+                               }
                                prs(sysmsg[sig]);
-                               IF w&0200 THEN prs(coredump) FI
-                       FI
+                               if (w&0200) { prs(coredump); }
+                       }
                        newline();
-               FI
+               }
 
-               IF rc==0
-               THEN    rc = (sig ? sig|SIGFLG : w_hi);
-               FI
+               if (rc==0) {
+                       rc = (sig ? sig|SIGFLG : w_hi);
+               }
                wx |= w;
-       OD
+       }
 
-       IF wx ANDF flags&errflg
-       THEN    exitsh(rc);
-       FI
+       if (wx && flags&errflg) {
+               exitsh(rc);
+       }
        exitval=rc; exitset();
 }
 
-BOOL           nosubst;
+bool           nosubst;
 
 trim(at)
-       STRING          at;
+       char            *at;
 {
-       REG STRING      p;
-       REG CHAR        c;
-       REG CHAR        q=0;
-
-       IF p=at
-       THEN    WHILE c = *p
-               DO *p++=c&STRIP; q |= c OD
-       FI
-       nosubst=q&QUOTE;
+       register char   *p;
+       register char   c;
+       register char   q=0;
+
+       if (p=at) {
+               while (c = *p) { *p++=c&0177; q |= c; }
+       }
+       nosubst=q&0200;
 }
 
-STRING mactrim(s)
-       STRING          s;
+char   *mactrim(s)
+       char            *s;
 {
-       REG STRING      t=macro(s);
+       register char   *t=macro(s);
        trim(t);
        return(t);
 }
 
-STRING *scan(argn)
-       INT             argn;
+char   **scan(argn)
+       int             argn;
 {
-       REG ARGPTR      argp = Rcheat(gchain)&~ARGMK;
-       REG STRING      *comargn, *comargm;
+       register struct argnod  *argp = Rcheat(gchain)&~ARGMK;
+       register char*CHECKME   *comargn, *comargm;
 
        comargn=getstak(BYTESPERWORD*argn+BYTESPERWORD); comargm = comargn += argn; *comargn = ENDARGS;
 
-       WHILE argp
-       DO      *--comargn = argp->argval;
-               IF argp = argp->argnxt
-               THEN trim(*comargn);
-               FI
-               IF argp==0 ORF Rcheat(argp)&ARGMK
-               THEN    gsort(comargn,comargm);
+       while (argp) {
+               *--comargn = argp->argval;
+               if (argp = argp->argnxt) {
+                    trim(*comargn);
+               }
+               if (argp==0 || Rcheat(argp)&ARGMK) {
+                       gsort(comargn,comargm);
                        comargm = comargn;
-               FI
+               }
                /* Lcheat(argp) &= ~ARGMK; */
                argp = Rcheat(argp)&~ARGMK;
-       OD
+       }
        return(comargn);
 }
 
-LOCAL VOID     gsort(from,to)
-       STRING          from[], to[];
+static void    gsort(from,to)
+       char*CHECKME            from[], to[];
 {
-       INT             k, m, n;
-       REG INT         i, j;
-
-       IF (n=to-from)<=1 THEN return FI
-
-       FOR j=1; j<=n; j*=2 DONE
-
-       FOR m=2*j-1; m/=2;
-       DO  k=n-m;
-           FOR j=0; j<k; j++
-           DO  FOR i=j; i>=0; i-=m
-               DO  REG STRING *fromi; fromi = &from[i];
-                   IF cf(fromi[m],fromi[0])>0
-                   THEN break;
-                   ELSE STRING s; s=fromi[m]; fromi[m]=fromi[0]; fromi[0]=s;
-                   FI
-               OD
-           OD
-       OD
+       int             k, m, n;
+       register int            i, j;
+
+       if ((n=to-from)<=1) { return; }
+
+       for (j=1; j<=n; j*=2);
+
+       for (m=2*j-1; m/=2;) {
+           k=n-m;
+           for (j=0; j<k; j++) {
+               for (i=j; i>=0; i-=m) {
+                   register char **fromi; fromi = &from[i];
+                   if (cf(fromi[m],fromi[0])>0) {
+                        break;
+                   }
+                   else {
+                        char *s; s=fromi[m]; fromi[m]=fromi[0]; fromi[0]=s;
+                   }
+               }
+           }
+       }
 }
 
 /* Argument list generation */
 
-INT    getarg(ac)
-       COMPTR          ac;
+int    getarg(ac)
+       struct comnod           *ac;
 {
-       REG ARGPTR      argp;
-       REG INT         count=0;
-       REG COMPTR      c;
-
-       IF c=ac
-       THEN    argp=c->comarg;
-               WHILE argp
-               DO      count += split(macro(argp->argval));
+       register struct argnod  *argp;
+       register int            count=0;
+       register struct comnod  *c;
+
+       if (c=ac) {
+               argp=c->comarg;
+               while (argp) {
+                       count += split(macro(argp->argval));
                        argp=argp->argnxt;
-               OD
-       FI
+               }
+       }
        return(count);
 }
 
-LOCAL INT      split(s)
-       REG STRING      s;
+static int     split(s)
+       register char   *s;
 {
-       REG STRING      argp;
-       REG INT         c;
-       INT             count=0;
-
-       LOOP    sigchk(); argp=locstak()+BYTESPERWORD;
-               WHILE (c = *s++, !any(c,ifsnod.namval) && c)
-               DO *argp++ = c OD
-               IF argp==staktop+BYTESPERWORD
-               THEN    IF c
-                       THEN    continue;
-                       ELSE    return(count);
-                       FI
-               ELIF c==0
-               THEN    s--;
-               FI
-               IF c=expand((argp=endstak(argp))->argval,0)
-               THEN    count += c;
-               ELSE    /* assign(&fngnod, argp->argval); */
+       register char   *argp;
+       register int            c;
+       int             count=0;
+
+       for(;;) {
+               sigchk(); argp=locstak()+BYTESPERWORD;
+               while ((c = *s++, !any(c,ifsnod.namval) && c)) { *argp++ = c; }
+               if (argp==staktop+BYTESPERWORD) {
+                       if (c) {
+                               continue;
+                       }
+                       else {
+                               return(count);
+                       }
+               }
+               else if (c==0) {
+                       s--;
+               }
+               if (c=expand((argp=endstak(argp))->argval,0)) {
+                       count += c;
+               }
+               else {
+                       /* assign(&fngnod, argp->argval); */
                        makearg(argp); count++;
-               FI
+               }
                Lcheat(gchain) |= ARGMK;
-       POOL
+       }
 }
index 0451687..8842f64 100644 (file)
@@ -15,7 +15,7 @@ static char sccsid[] = "@(#)setbrk.c  4.2 8/11/83";
 
 setbrk(incr)
 {
-       REG BYTPTR      a=sbrk(incr);
+       register char   *a=sbrk(incr);
        brkend=a+incr;
        return(a);
 }
index c627dc5..fb91613 100644 (file)
@@ -13,17 +13,17 @@ static char sccsid[] = "@(#)stak.c  4.2 8/11/83";
 
 #include       "defs.h"
 
-STKPTR         stakbot=nullstr;
+char           *stakbot=nullstr;
 
 
 
 /* ========    storage allocation      ======== */
 
-STKPTR getstak(asize)
-       INT             asize;
+char   *getstak(asize)
+       int             asize;
 {      /* allocate requested stack */
-       REG STKPTR      oldstak;
-       REG INT         size;
+       register char   *oldstak;
+       register int            size;
 
        size=round(asize,BYTESPERWORD);
        oldstak=stakbot;
@@ -31,55 +31,55 @@ STKPTR      getstak(asize)
        return(oldstak);
 }
 
-STKPTR locstak()
+char   *locstak()
 {      /* set up stack for local use
         * should be followed by `endstak'
         */
-       IF brkend-stakbot<BRKINCR
-       THEN    setbrk(brkincr);
-               IF brkincr < BRKMAX
-               THEN    brkincr += 256;
-               FI
-       FI
+       if (brkend-stakbot<BRKINCR) {
+               setbrk(brkincr);
+               if (brkincr < BRKMAX) {
+                       brkincr += 256;
+               }
+       }
        return(stakbot);
 }
 
-STKPTR savstak()
+char   *savstak()
 {
        assert(staktop==stakbot);
        return(stakbot);
 }
 
-STKPTR endstak(argp)
-       REG STRING      argp;
+char   *endstak(argp)
+       register char   *argp;
 {      /* tidy up after `locstak' */
-       REG STKPTR      oldstak;
+       register char   *oldstak;
        *argp++=0;
        oldstak=stakbot; stakbot=staktop=round(argp,BYTESPERWORD);
        return(oldstak);
 }
 
-VOID   tdystak(x)
-       REG STKPTR      x;
+void   tdystak(x)
+       register char   *x;
 {
        /* try to bring stack back to x */
-       WHILE ADR(stakbsy)>ADR(x)
-       DO free(stakbsy);
+       while ((void *)(stakbsy)>(void *)(x)) {
+          free(stakbsy);
           stakbsy = stakbsy->word;
-       OD
-       staktop=stakbot=max(ADR(x),ADR(stakbas));
+       }
+       staktop=stakbot=max((void *)(x),(void *)(stakbas));
        rmtemp(x);
 }
 
 stakchk()
 {
-       IF (brkend-stakbas)>BRKINCR+BRKINCR
-       THEN    setbrk(-BRKINCR);
-       FI
+       if ((brkend-stakbas)>BRKINCR+BRKINCR) {
+               setbrk(-BRKINCR);
+       }
 }
 
-STKPTR cpystak(x)
-       STKPTR          x;
+char   *cpystak(x)
+       char            *x;
 {
        return(endstak(movstr(x,locstak())));
 }
index 7cda327..50a7e0f 100644 (file)
@@ -36,7 +36,7 @@
 /* for local use only since it hands
  * out a real address for the stack top
  */
-STKPTR         locstak();
+char           *locstak();
 
 /* Will allocate the item being used and return its
  * address (safe now).
@@ -46,33 +46,33 @@ STKPTR              locstak();
 /* For use after `locstak' to hand back
  * new stack top and then allocate item
  */
-STKPTR         endstak();
+char           *endstak();
 
 /* Copy a string onto the stack and
  * allocate the space.
  */
-STKPTR         cpystak();
+char           *cpystak();
 
 /* Allocate given ammount of stack space */
-STKPTR         getstak();
+char           *getstak();
 
 /* A chain of ptrs of stack blocks that
  * have become covered by heap allocation.
  * `tdystak' will return them to the heap.
  */
-BLKPTR         stakbsy;
+struct blk             *stakbsy;
 
 /* Base of the entire stack */
-STKPTR         stakbas;
+char           *stakbas;
 
 /* Top of entire stack */
-STKPTR         brkend;
+char           *brkend;
 
 /* Base of current item */
-STKPTR         stakbot;
+char           *stakbot;
 
 /* Top of current item */
-STKPTR         staktop;
+char           *staktop;
 
 /* Used with tdystak */
-STKPTR         savstak();
+char           *savstak();
index 9bded58..56981c3 100644 (file)
@@ -17,43 +17,43 @@ static char sccsid[] = "@(#)string.c        4.2 8/11/83";
 /* ========    general purpose string handling ======== */
 
 
-STRING movstr(a,b)
-       REG STRING      a, b;
+char*CHECKME   movstr(a,b)
+       register char*CHECKME   a, b;
 {
-       WHILE *b++ = *a++ DONE
+       while (*b++ = *a++);
        return(--b);
 }
 
-INT    any(c,s)
-       REG CHAR        c;
-       STRING          s;
+int    any(c,s)
+       register char   c;
+       char            *s;
 {
-       REG CHAR d;
-
-       WHILE d = *s++
-       DO      IF d==c
-               THEN    return(TRUE);
-               FI
-       OD
-       return(FALSE);
+       register char d;
+
+       while (d = *s++) {
+               if (d==c) {
+                       return(-1);
+               }
+       }
+       return(0);
 }
 
-INT    cf(s1, s2)
-       REG STRING s1, s2;
+int    cf(s1, s2)
+       register char*CHECKME s1, s2;
 {
-       WHILE *s1++ == *s2
-       DO      IF *s2++==0
-               THEN    return(0);
-               FI
-       OD
+       while (*s1++ == *s2) {
+               if (*s2++==0) {
+                       return(0);
+               }
+       }
        return(*--s1 - *s2);
 }
 
-INT    length(as)
-       STRING as;
+int    length(as)
+       char *as;
 {
-       REG STRING s;
+       register char *s;
 
-       IF s=as THEN WHILE *s++ DONE FI
+       if (s=as) { while (*s++); }
        return(s-as);
 }
index c378f43..8ad9036 100644 (file)
@@ -20,118 +20,139 @@ static char sccsid[] = "@(#)word.c        4.6 10/31/85";
 
 word()
 {
-       REG CHAR        c, d;
-       REG CHAR        *argp=locstak()+BYTESPERWORD;
-       INT             alpha=1;
+       register char   c, d;
+       register char   *argp=locstak()+BYTESPERWORD;
+       int             alpha=1;
 
        wdnum=0; wdset=0;
 
-       WHILE (c=nextc(0), space(c)) DONE
+       while ((c=nextc(0), space(c)));
 
-       IF c=='#' ANDF ((flags&prompt)==0 ORF ((flags&ttyflg) ANDF
-           standin->fstak!=0))
-       THEN    WHILE (c=readc()) ANDF c!=NL DONE
-       FI
+       if (c=='#' && ((flags&prompt)==0 || ((flags&ttyflg) &&
+           standin->fstak!=0))) {
+               while ((c=readc()) && c!='\n');
+       }
 
-       IF !eofmeta(c)
-       THEN    REP     IF c==LITERAL
-                       THEN    *argp++=(DQUOTE);
-                               WHILE (c=readc()) ANDF c!=LITERAL
-                               DO *argp++=(c|QUOTE); chkpr(c) OD
+       if (!eofmeta(c)) {
+               do {
+                       if (c==LITERAL) {
+                               *argp++=(DQUOTE);
+                               while ((c=readc()) && c!=LITERAL) { *argp++=(c|0200); chkpr(c); }
                                *argp++=(DQUOTE);
 
-                       ELSE    *argp++=(c);
-                               IF c=='=' THEN wdset |= alpha FI
-                               IF !alphanum(c) THEN alpha=0 FI
-                               IF qotchar(c)
-                               THEN    d=c;
-                                       WHILE (*argp++=(c=nextc(d))) ANDF c!=d
-                                       DO chkpr(c) OD
-                               FI
-                       FI
-               PER (c=nextc(0), !eofmeta(c)) DONE
+                       }
+                       else {
+                               *argp++=(c);
+                               if (c=='=') { wdset |= alpha; }
+                               if (!alphanum(c)) { alpha=0; }
+                               if (qotchar(c)) {
+                                       d=c;
+                                       while ((*argp++=(c=nextc(d))) && c!=d) { chkpr(c); }
+                               }
+                       }
+               } while ((c=nextc(0), !eofmeta(c)));
                argp=endstak(argp);
-               IF !letter(argp->argval[0]) THEN wdset=0 FI
+               if (!letter(argp->argval[0])) { wdset=0; }
 
                peekc=c|MARK;
-               IF argp->argval[1]==0 ANDF (d=argp->argval[0], digit(d)) ANDF (c=='>' ORF c=='<')
-               THEN    word(); wdnum=d-'0';
-               ELSE    /*check for reserved words*/
-                       IF reserv==FALSE ORF (wdval=syslook(argp->argval,reserved))==0
-                       THEN    wdarg=argp; wdval=0;
-                       FI
-               FI
-
-       ELIF dipchar(c)
-       THEN    IF (d=nextc(0))==c
-               THEN    wdval = c|SYMREP;
-               ELSE    peekc = d|MARK; wdval = c;
-               FI
-       ELSE    IF (wdval=c)==EOF
-               THEN    wdval=EOFSYM;
-               FI
-               IF iopend ANDF eolchar(c)
-               THEN    copy(iopend); iopend=0;
-               FI
-       FI
-       reserv=FALSE;
+               if (argp->argval[1]==0 && (d=argp->argval[0], digit(d)) && (c=='>' || c=='<')) {
+                       word(); wdnum=d-'0';
+               }
+               else {
+                       /*check for reserved words*/
+                       if (reserv==0 || (wdval=syslook(argp->argval,reserved))==0) {
+                               wdarg=argp; wdval=0;
+                       }
+               }
+
+       }
+       else if (dipchar(c)) {
+               if ((d=nextc(0))==c) {
+                       wdval = c|SYMREP;
+               }
+               else {
+                       peekc = d|MARK; wdval = c;
+               }
+       }
+       else {
+               if ((wdval=c)==0) {
+                       wdval=EOFSYM;
+               }
+               if (iopend && eolchar(c)) {
+                       copy(iopend); iopend=0;
+               }
+       }
+       reserv=0;
        return(wdval);
 }
 
 nextc(quote)
-       CHAR            quote;
+       char            quote;
 {
-       REG CHAR        c, d;
-       IF (d=readc())==ESCAPE
-       THEN    IF (c=readc())==NL
-               THEN    chkpr(NL); d=nextc(quote);
-               ELIF quote ANDF c!=quote ANDF !escchar(c)
-               THEN    peekc=c|MARK;
-               ELSE    d = c|QUOTE;
-               FI
-       FI
+       register char   c, d;
+       if ((d=readc())==ESCAPE) {
+               if ((c=readc())=='\n') {
+                       chkpr('\n'); d=nextc(quote);
+               }
+               else if (quote && c!=quote && !escchar(c)) {
+                       peekc=c|MARK;
+               }
+               else {
+                       d = c|0200;
+               }
+       }
        return(d);
 }
 
 readc()
 {
-       REG CHAR        c;
-       REG INT         len;
-       REG FILE        f;
+       register char   c;
+       register int            len;
+       register struct fileblk *f;
 
 retry:
-       IF peekc
-       THEN    c=peekc; peekc=0;
-       ELIF (f=standin, f->fnxt!=f->fend)
-       THEN    IF (c = *f->fnxt++)==0
-               THEN    IF f->feval
-                       THEN    IF estabf(*f->feval++)
-                               THEN    c=EOF;
-                               ELSE    c=SP;
-                               FI
-                       ELSE    goto retry; /* = c=readc(); */
-                       FI
-               FI
-               IF flags&readpr ANDF standin->fstak==0 THEN prc(c) FI
-               IF c==NL THEN f->flin++ FI
-       ELIF f->feof ORF f->fdes<0
-       THEN    c=EOF; f->feof++;
-       ELIF (len=readb())<=0
-       THEN    close(f->fdes); f->fdes = -1; c=EOF; f->feof++;
-       ELSE    f->fend = (f->fnxt = f->fbuf)+len;
+       if (peekc) {
+               c=peekc; peekc=0;
+       }
+       else if ((f=standin, f->fnxt!=f->fend)) {
+               if ((c = *f->fnxt++)==0) {
+                       if (f->feval) {
+                               if (estabf(*f->feval++)) {
+                                       c=0;
+                               }
+                               else {
+                                       c=' ';
+                               }
+                       }
+                       else {
+                               goto retry; /* = c=readc(); */;
+                       }
+               }
+               if (flags&readpr && standin->fstak==0) { prc(c); }
+               if (c=='\n') { f->flin++; }
+       }
+       else if (f->feof || f->fdes<0) {
+               c=0; f->feof++;
+       }
+       else if ((len=readb())<=0) {
+               close(f->fdes); f->fdes = -1; c=0; f->feof++;
+       }
+       else {
+               f->fend = (f->fnxt = f->fbuf)+len;
                goto retry;
-       FI
+       }
        return(c);
 }
 
-LOCAL  readb()
+static readb()
 {
-       REG FILE        f=standin;
-       REG INT         len;
+       register struct fileblk *f=standin;
+       register int            len;
 
-       IF setjmp(INTbuf) == 0 THEN trapjmp[INTR] = 1; FI
-       REP     IF trapnote&SIGSET THEN newline(); sigchk() FI
-       PER (len=read(f->fdes,f->fbuf,f->fsiz))<0 ANDF trapnote DONE
+       if (setjmp(INTbuf) == 0) { trapjmp[INTR] = 1; }
+       do {
+               if (trapnote&SIGSET) { newline(); sigchk(); }
+       } while ((len=read(f->fdes,f->fbuf,f->fsiz))<0 && trapnote);
        trapjmp[INTR] = 0;
        return(len);
 }
index f95771f..2a32c37 100644 (file)
@@ -14,9 +14,9 @@ static char sccsid[] = "@(#)xec.c     4.3 8/11/83";
 #include       "defs.h"
 #include       "sym.h"
 
-LOCAL INT      parent;
+static int     parent;
 
-SYSTAB         commands;
+struct sysnod          commands[];
 
 
 
@@ -24,65 +24,69 @@ SYSTAB              commands;
 
 
 execute(argt, execflg, pf1, pf2)
-       TREPTR          argt;
-       INT             *pf1, *pf2;
+       struct trenod           *argt;
+       int             *pf1, *pf2;
 {
        /* `stakbot' is preserved by this routine */
-       REG TREPTR      t;
-       STKPTR          sav=savstak();
+       register struct trenod  *t;
+       char            *sav=savstak();
 
        sigchk();
 
-       IF (t=argt) ANDF execbrk==0
-       THEN    REG INT         treeflgs;
-               INT             oldexit, type;
-               REG STRING      *com;
+       if ((t=argt) && execbrk==0) {
+               register int            treeflgs;
+               int             oldexit, type;
+               register char   **com;
 
                treeflgs = t->tretyp; type = treeflgs&COMMSK;
                oldexit=exitval; exitval=0;
 
-               SWITCH type IN
+               switch (type) {
+                 
 
                case TCOM:
-                       BEGIN
-                       STRING          a1;
-                       INT             argn, internal;
-                       ARGPTR          schain=gchain;
-                       IOPTR           io=t->treio;
+                       {
+                            
+                       char            *a1;
+                       int             argn, internal;
+                       struct argnod           *schain=gchain;
+                       struct ionod            *io=t->treio;
                        gchain=0;
                        argn = getarg(t);
                        com=scan(argn);
                        a1=com[1]; gchain=schain;
 
-                       IF argn==0 ORF (internal=syslook(com[0],commands))
-                       THEN    setlist(t->comset, 0);
-                       FI
+                       if (argn==0 || (internal=syslook(com[0],commands))) {
+                               setlist(t->comset, 0);
+                       }
 
-                       IF argn ANDF (flags&noexec)==0
-                       THEN    /* print command if execpr */
-                               IF flags&execpr
-                               THEN    argn=0; prs(execpmsg);
-                                       WHILE com[argn]!=ENDARGS
-                                       DO prs(com[argn++]); blank() OD
+                       if (argn && (flags&noexec)==0) {
+                               /* print command if execpr */
+                               if (flags&execpr) {
+                                       argn=0; prs(execpmsg);
+                                       while (com[argn]!=ENDARGS) { prs(com[argn++]); blank(); }
                                        newline();
-                               FI
+                               }
 
-                               SWITCH internal IN
+                               switch (internal) {
+                                 
 
                                case SYSDOT:
-                                       IF a1
-                                       THEN    REG INT         f;
+                                       if (a1) {
+                                               register int            f;
        
-                                               IF (f=pathopen(getpath(a1), a1)) < 0
-                                               THEN failed(a1,notfound);
-                                               ELSE execexp(0,f);
-                                               FI
-                                       FI
+                                               if ((f=pathopen(getpath(a1), a1)) < 0) {
+                                                    failed(a1,notfound);
+                                               }
+                                               else {
+                                                    execexp(0,f);
+                                               }
+                                       }
                                        break;
        
                                case SYSTIMES:
                                        {
-                                       L_INT   t[4]; times(t);
+                                       long    t[4]; times(t);
                                        prt(t[2]); blank(); prt(t[3]); newline();
                                        }
                                        break;
@@ -98,63 +102,73 @@ execute(argt, execflg, pf1, pf2)
                                        execbrk = -loopcnt; break;
        
                                case SYSBREAK:
-                                       IF (execbrk=loopcnt) ANDF a1
-                                       THEN breakcnt=stoi(a1);
-                                       FI
+                                       if ((execbrk=loopcnt) && a1) {
+                                            breakcnt=stoi(a1);
+                                       }
                                        break;
        
                                case SYSTRAP:
-                                       IF a1
-                                       THEN    BOOL    clear;
-                                               IF (clear=digit(*a1))==0
-                                               THEN    ++com;
-                                               FI
-                                               WHILE *++com
-                                               DO INT  i;
-                                                  IF (i=stoi(*com))>=MAXTRAP ORF i<MINTRAP
-                                                  THEN failed(*com,badtrap);
-                                                  ELIF clear
-                                                  THEN clrsig(i);
-                                                  ELSE replace(&trapcom[i],a1);
-                                                       IF *a1
-                                                       THEN    getsig(i);
-                                                       ELSE    ignsig(i);
-                                                       FI
-                                                  FI
-                                               OD
-                                       ELSE    /* print out current traps */
-                                               INT             i;
+                                       if (a1) {
+                                               bool    clear;
+                                               if ((clear=digit(*a1))==0) {
+                                                       ++com;
+                                               }
+                                               while (*++com) {
+                                                  int  i;
+                                                  if ((i=stoi(*com))>=MAXTRAP || i<MINTRAP) {
+                                                       failed(*com,badtrap);
+                                                  }
+                                                  else if (clear) {
+                                                       clrsig(i);
+                                                  }
+                                                  else {
+                                                       replace(&trapcom[i],a1);
+                                                       if (*a1) {
+                                                               getsig(i);
+                                                       }
+                                                       else {
+                                                               ignsig(i);
+                                                       }
+                                                  }
+                                               }
+                                       }
+                                       else {
+                                               /* print out current traps */
+                                               int             i;
        
-                                               FOR i=0; i<MAXTRAP; i++
-                                               DO IF trapcom[i]
-                                                  THEN prn(i); prs(colon); prs(trapcom[i]); newline();
-                                                  FI
-                                               OD
-                                       FI
+                                               for (i=0; i<MAXTRAP; i++) {
+                                                  if (trapcom[i]) {
+                                                       prn(i); prs(colon); prs(trapcom[i]); newline();
+                                                  }
+                                               }
+                                       }
                                        break;
        
                                case SYSEXEC:
                                        com++;
                                        initio(io); ioset=0; io=0;
-                                       IF a1==0 THEN break FI
+                                       if (a1==0) { break; }
        
                                case SYSLOGIN:
                                        flags |= forked;
                                        oldsigs(); execa(com); done();
        
                                case SYSCD:
-                                       IF flags&rshflg
-                                       THEN    failed(com[0],restricted);
-                                       ELIF (a1==0 ANDF (a1=homenod.namval)==0) ORF chdir(a1)<0
-                                       THEN    failed(a1,baddir);
-                                       FI
+                                       if (flags&rshflg) {
+                                               failed(com[0],restricted);
+                                       }
+                                       else if ((a1==0 && (a1=homenod.namval)==0) || chdir(a1)<0) {
+                                               failed(a1,baddir);
+                                       }
                                        break;
        
                                case SYSSHFT:
-                                       IF dolc<1
-                                       THEN    error(badshift);
-                                       ELSE    dolv++; dolc--;
-                                       FI
+                                       if (dolc<1) {
+                                               error(badshift);
+                                       }
+                                       else {
+                                               dolv++; dolc--;
+                                       }
                                        assnum(&dolladr, dolc);
                                        break;
        
@@ -173,96 +187,105 @@ execute(argt, execflg, pf1, pf2)
 */
 
                                case SYSSET:
-                                       IF a1
-                                       THEN    INT     argc;
+                                       if (a1) {
+                                               int     argc;
                                                argc = options(argn,com);
-                                               IF argc>1
-                                               THEN    setargs(com+argn-argc);
-                                               FI
-                                       ELIF t->comset==0
-                                       THEN    /*scan name chain and print*/
+                                               if (argc>1) {
+                                                       setargs(com+argn-argc);
+                                               }
+                                       }
+                                       else if (t->comset==0) {
+                                               /*scan name chain and print*/
                                                namscan(printnam);
-                                       FI
+                                       }
                                        break;
        
                                case SYSRDONLY:
                                        exitval=N_RDONLY;
                                case SYSXPORT:
-                                       IF exitval==0 THEN exitval=N_EXPORT; FI
+                                       if (exitval==0) { exitval=N_EXPORT; }
        
-                                       IF a1
-                                       THEN    WHILE *++com
-                                               DO attrib(lookup(*com), exitval) OD
-                                       ELSE    namscan(printflg);
-                                       FI
+                                       if (a1) {
+                                               while (*++com) { attrib(lookup(*com), exitval); }
+                                       }
+                                       else {
+                                               namscan(printflg);
+                                       }
                                        exitval=0;
                                        break;
        
                                case SYSEVAL:
-                                       IF a1
-                                       THEN    execexp(a1,&com[2]);
-                                       FI
+                                       if (a1) {
+                                               execexp(a1,&com[2]);
+                                       }
                                        break;
 
-                                case SYSUMASK:
-                                        if (a1) {
-                                                int c, i
-                                                i = 0;
-                                                while ((c = *a1++) >= '0' &&
-                                                        c <= '7')
-                                                        i = (i << 3) + c - '0';
-                                                umask(i);
-                                        } else {
-                                                int i, j;
-                                                umask(i = umask(0));
-                                                prc('0');
-                                                for (j = 6; j >= 0; j -= 3)
-                                                        prc(((i>>j)&07) + '0');
-                                                newline();
-                                        }
-                                        break;
+                               case SYSUMASK:
+                                       if (a1) {
+                                               int c, i
+                                               i = 0;
+                                               while ((c = *a1++) >= '0' &&
+                                                       c <= '7')
+                                                       i = (i << 3) + c - '0';
+                                               umask(i);
+                                       } else {
+                                               int i, j;
+                                               umask(i = umask(0));
+                                               prc('0');
+                                               for (j = 6; j >= 0; j -= 3)
+                                                       prc(((i>>j)&07) + '0');
+                                               newline();
+                                       }
+                                       break;
        
                                default:
                                        internal=builtin(argn,com);
        
-                               ENDSW
+                               }
 
-                               IF internal
-                               THEN    IF io THEN error(illegal) FI
+                               if (internal) {
+                                       if (io) { error(illegal); }
                                        chktrap();
                                        break;
-                               FI
-                       ELIF t->treio==0
-                       THEN    break;
-                       FI
-                       END
+                               }
+                       }
+                       else if (t->treio==0) {
+                               break;
+                       }
+                       }
        
                case TFORK:
-                       IF execflg ANDF (treeflgs&(FAMP|FPOU))==0
-                       THEN    parent=0;
-                       ELSE    WHILE (parent=fork()) == -1
-                               DO sigchk(); alarm(10); pause() OD
-                       FI
-
-                       IF parent
-                       THEN    /* This is the parent branch of fork;    */
+                       if (execflg && (treeflgs&(FAMP|FPOU))==0) {
+                               parent=0;
+                       }
+                       else {
+                               while ((parent=fork()) == -1) { sigchk(); alarm(10); pause(); }
+                       }
+
+                       if (parent) {
+                               /* This is the parent branch of fork;    */
                                /* it may or may not wait for the child. */
-                               IF treeflgs&FPRS ANDF flags&ttyflg
-                               THEN    prn(parent); newline();
-                               FI
-                               IF treeflgs&FPCL THEN closepipe(pf1) FI
-                               IF (treeflgs&(FAMP|FPOU))==0
-                               THEN    await(parent);
-                               ELIF (treeflgs&FAMP)==0
-                               THEN    post(parent);
-                               ELSE    assnum(&pcsadr, parent);
-                               FI
+                               if (treeflgs&FPRS && flags&ttyflg) {
+                                       prn(parent); newline();
+                               }
+                               if (treeflgs&FPCL) { closepipe(pf1); }
+                               if ((treeflgs&(FAMP|FPOU))==0) {
+                                       await(parent);
+                               }
+                               else if ((treeflgs&FAMP)==0) {
+                                       post(parent);
+                               }
+                               else {
+                                       assnum(&pcsadr, parent);
+                               }
 
                                chktrap();
                                break;
 
 
-                       ELSE    /* this is the forked branch (child) of execute */
+                       }
+                       else {
+                               /* this is the forked branch (child) of execute */
                                flags |= forked; iotemp=0;
                                postclr();
                                settmp();
@@ -271,35 +294,36 @@ execute(argt, execflg, pf1, pf2)
                                /* Reset ramaining signals to parent */
                                /* except for those `lost' by trap   */
                                oldsigs();
-                               IF treeflgs&FINT
-                               THEN    signal(INTR,1); signal(QUIT,1);
-                               FI
+                               if (treeflgs&FINT) {
+                                       signal(INTR,1); signal(QUIT,1);
+                               }
 
                                /* pipe in or out */
-                               IF treeflgs&FPIN
-                               THEN    rename(pf1[INPIPE],0);
+                               if (treeflgs&FPIN) {
+                                       rename(pf1[INPIPE],0);
                                        close(pf1[OTPIPE]);
-                               FI
-                               IF treeflgs&FPOU
-                               THEN    rename(pf2[OTPIPE],1);
+                               }
+                               if (treeflgs&FPOU) {
+                                       rename(pf2[OTPIPE],1);
                                        close(pf2[INPIPE]);
-                               FI
+                               }
 
                                /* default std input for & */
-                               IF treeflgs&FINT ANDF ioset==0
-                               THEN    rename(chkopen(devnull),0);
-                               FI
+                               if (treeflgs&FINT && ioset==0) {
+                                       rename(chkopen(devnull),0);
+                               }
 
                                /* io redirection */
                                initio(t->treio);
-                               IF type!=TCOM
-                               THEN    execute(t->forktre,1);
-                               ELIF com[0]!=ENDARGS
-                               THEN    setlist(t->comset,N_EXPORT);
+                               if (type!=TCOM) {
+                                       execute(t->forktre,1);
+                               }
+                               else if (com[0]!=ENDARGS) {
+                                       setlist(t->comset,N_EXPORT);
                                        execa(com);
-                               FI
+                               }
                                done();
-                       FI
+                       }
 
                case TPAR:
                        rename(dup(2),output);
@@ -307,13 +331,16 @@ execute(argt, execflg, pf1, pf2)
                        done();
 
                case TFIL:
-                       BEGIN
-                          INT pv[2]; chkpipe(pv);
-                          IF execute(t->lstlef, 0, pf1, pv)==0
-                          THEN execute(t->lstrit, execflg, pv, pf2);
-                          ELSE closepipe(pv);
-                          FI
-                       END
+                       {
+                            
+                          int pv[2]; chkpipe(pv);
+                          if (execute(t->lstlef, 0, pf1, pv)==0) {
+                               execute(t->lstrit, execflg, pv, pf2);
+                          }
+                          else {
+                               closepipe(pv);
+                          }
+                       }
                        break;
 
                case TLST:
@@ -322,86 +349,95 @@ execute(argt, execflg, pf1, pf2)
                        break;
 
                case TAND:
-                       IF execute(t->lstlef,0)==0
-                       THEN    execute(t->lstrit,execflg);
-                       FI
+                       if (execute(t->lstlef,0)==0) {
+                               execute(t->lstrit,execflg);
+                       }
                        break;
 
                case TORF:
-                       IF execute(t->lstlef,0)!=0
-                       THEN    execute(t->lstrit,execflg);
-                       FI
+                       if (execute(t->lstlef,0)!=0) {
+                               execute(t->lstrit,execflg);
+                       }
                        break;
 
                case TFOR:
-                       BEGIN
-                          NAMPTR       n = lookup(t->fornam);
-                          STRING       *args;
-                          DOLPTR       argsav=0;
-
-                          IF t->forlst==0
-                          THEN    args=dolv+1;
+                       {
+                            
+                          struct namnod        *n = lookup(t->fornam);
+                          char **args;
+                          struct dolnod        *argsav=0;
+
+                          if (t->forlst==0) {
+                                  args=dolv+1;
                                   argsav=useargs();
-                          ELSE    ARGPTR       schain=gchain;
+                          }
+                          else {
+                                  struct argnod        *schain=gchain;
                                   gchain=0;
                                   trim((args=scan(getarg(t->forlst)))[0]);
                                   gchain=schain;
-                          FI
+                          }
                           loopcnt++;
-                          WHILE *args!=ENDARGS ANDF execbrk==0
-                          DO   assign(n,*args++);
+                          while (*args!=ENDARGS && execbrk==0) {
+                               assign(n,*args++);
                                execute(t->fortre,0);
-                               IF execbrk<0 THEN execbrk=0 FI
-                          OD
-                          IF breakcnt THEN breakcnt-- FI
+                               if (execbrk<0) { execbrk=0; }
+                          }
+                          if (breakcnt) { breakcnt--; }
                           execbrk=breakcnt; loopcnt--;
                           argfor=freeargs(argsav);
-                       END
+                       }
                        break;
 
                case TWH:
                case TUN:
-                       BEGIN
-                          INT          i=0;
+                       {
+                            
+                          int          i=0;
 
                           loopcnt++;
-                          WHILE execbrk==0 ANDF (execute(t->whtre,0)==0)==(type==TWH)
-                          DO i=execute(t->dotre,0);
-                             IF execbrk<0 THEN execbrk=0 FI
-                          OD
-                          IF breakcnt THEN breakcnt-- FI
+                          while (execbrk==0 && (execute(t->whtre,0)==0)==(type==TWH)) {
+                             i=execute(t->dotre,0);
+                             if (execbrk<0) { execbrk=0; }
+                          }
+                          if (breakcnt) { breakcnt--; }
                           execbrk=breakcnt; loopcnt--; exitval=i;
-                       END
+                       }
                        break;
 
                case TIF:
-                       IF execute(t->iftre,0)==0
-                       THEN    execute(t->thtre,execflg);
-                       ELSE    execute(t->eltre,execflg);
-                       FI
+                       if (execute(t->iftre,0)==0) {
+                               execute(t->thtre,execflg);
+                       }
+                       else {
+                               execute(t->eltre,execflg);
+                       }
                        break;
 
                case TSW:
-                       BEGIN
-                          REG STRING   r = mactrim(t->swarg);
+                       {
+                            
+                          register char        *r = mactrim(t->swarg);
                           t=t->swlst;
-                          WHILE t
-                          DO   ARGPTR          rex=t->regptr;
-                               WHILE rex
-                               DO      REG STRING      s;
-                                       IF gmatch(r,s=macro(rex->argval)) ORF (trim(s), eq(r,s))
-                                       THEN    execute(t->regcom,0);
+                          while (t) {
+                               struct argnod           *rex=t->regptr;
+                               while (rex) {
+                                       register char   *s;
+                                       if (gmatch(r,s=macro(rex->argval)) || (trim(s), eq(r,s))) {
+                                               execute(t->regcom,0);
                                                t=0; break;
-                                       ELSE    rex=rex->argnxt;
-                                       FI
-                               OD
-                               IF t THEN t=t->regnxt FI
-                          OD
-                       END
+                                       }
+                                       else {
+                                               rex=rex->argnxt;
+                                       }
+                               }
+                               if (t) { t=t->regnxt; }
+                          }
+                       }
                        break;
-               ENDSW
+               }
                exitset();
-       FI
+       }
 
        sigchk();
        tdystak(sav);
@@ -410,16 +446,17 @@ execute(argt, execflg, pf1, pf2)
 
 
 execexp(s,f)
-       STRING          s;
-       UFD             f;
+       char            *s;
+       int             f;
 {
-       FILEBLK         fb;
+       struct fileblk          fb;
        push(&fb);
-       IF s
-       THEN    estabf(s); fb.feval=f;
-       ELIF f>=0
-       THEN    initf(f);
-       FI
-       execute(cmd(NL, NLFLG|MTFLG),0);
+       if (s) {
+               estabf(s); fb.feval=f;
+       }
+       else if (f>=0) {
+               initf(f);
+       }
+       execute(cmd('\n', NLFLG|MTFLG),0);
        pop();
 }