void prbgnlst(void) { if (nonl) prc_buff(SPACE); else prc_buff(NL); }
void printexp(register struct namnod *n) { if (n->namflg & N_EXPORT) { prs_buff(export); prc_buff(SPACE); prs_buff(n->namid); prc_buff(NL); }
void prendlst(void) { if (nonl) { prc_buff(';'); prc_buff(SPACE); } else prc_buff(NL); }
void printro(register struct namnod *n) { if (n->namflg & N_RDONLY) { prs_buff(readonly); prc_buff(SPACE); prs_buff(n->namid); prc_buff(NL); } }
static void prarg(struct argnod *argp) { while (argp) { prs_buff(argp->argval); argp=argp->argnxt; if (argp) prc_buff(SPACE); } }
void printnam(struct namnod *n) { register unsigned char *s; sigchk(); if (n->namflg & N_FUNCTN) { prs_buff(n->namid); prs_buff("(){\n"); prf((struct trenod *)n->namenv); prs_buff("\n}\n"); } else if (s = n->namval) { prs_buff(n->namid); prc_buff('='); prs_buff(s); prc_buff(NL); } }
static void prio(struct ionod *iop) { int iof; unsigned char *ion; while (iop) { iof = iop->iofile; ion = (unsigned char *) iop->ioname; if (*ion) { prc_buff(SPACE); prn_buff(iof & IOUFD); if (iof & IODOC) prs_buff("<<"); else if (iof & IOMOV) { if (iof & IOPUT) prs_buff(">&"); else prs_buff("<&"); } else if ((iof & IOPUT) == 0) prc_buff('<'); else if (iof & IOAPP) prs_buff(">>"); else prc_buff('>'); prs_buff(ion); } iop = iop->ionxt; } }
void cwdprint(void) { unsigned char *cp; cwd2(); if (didpwd == FALSE) { if (getcwd((char *)cwdname, PATH_MAX+1) == NULL) { if (errno && errno != ERANGE) error(badpwd); else error(longpwd); } didpwd = TRUE; } for (cp = cwdname; *cp; cp++) { prc_buff(*cp); } prc_buff(NL); return; }
int echo(int argc, unsigned char **argv) { unsigned char *cp; int i, wd; int nflg = 0; int j; int len; wchar_t wc; if (ucb_builtins) { nflg = 0; if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'n' && !argv[1][2]) { nflg++; argc--; argv++; } for (i = 1; i < argc; i++) { sigchk(); for (cp = argv[i]; *cp; cp++) { prc_buff(*cp); } if (i < argc-1) prc_buff(' '); } if (nflg == 0) prc_buff('\n'); exit(0); } else { if (--argc == 0) { prc_buff('\n'); exit(0); } for (i = 1; i <= argc; i++) { sigchk(); for (cp = argv[i]; *cp; cp++) { if ((len = mbtowc(&wc, (char *)cp, MB_LEN_MAX)) <= 0) { prc_buff(*cp); continue; } if (wc == '\\') { switch (*++cp) { case 'b': prc_buff('\b'); continue; case 'c': exit(0); case 'f': prc_buff('\f'); continue; case 'n': prc_buff('\n'); continue; case 'r': prc_buff('\r'); continue; case 't': prc_buff('\t'); continue; case 'v': prc_buff('\v'); continue; case '\\': prc_buff('\\'); continue; case '0': j = wd = 0; while ((*++cp >= '0' && *cp <= '7') && j++ < 3) { wd <<= 3; wd |= (*cp - '0'); } prc_buff(wd); --cp; continue; default: cp--; } prc_buff(*cp); continue; } else { for (; len > 0; len--) prc_buff(*cp++); cp--; continue; } } prc_buff(i == argc? '\n': ' '); } exit(0); } }
void prf(struct trenod *t) { sigchk(); if (t) { int type; type = t->tretyp & COMMSK; switch(type) { case TFND: { struct fndnod *f = (struct fndnod *)t; prs_buff(f->fndnam); prs_buff("(){"); prbgnlst(); prf(f->fndval); prbgnlst(); prs_buff("}"); break; } case TCOM: if (comptr(t)->comset) { prarg(comptr(t)->comset); prc_buff(SPACE); } prarg(comptr(t)->comarg); prio(comptr(t)->comio); break; case TFORK: prf(forkptr(t)->forktre); prio(forkptr(t)->forkio); if (forkptr(t)->forktyp & FAMP) prs_buff(" &"); break; case TPAR: prs_buff("("); prf(parptr(t)->partre); prs_buff(")"); break; case TFIL: prf(lstptr(t)->lstlef); prs_buff(" | "); prf(lstptr(t)->lstrit); break; case TLST: prf(lstptr(t)->lstlef); prendlst(); prf(lstptr(t)->lstrit); break; case TAND: prf(lstptr(t)->lstlef); prs_buff(" && "); prf(lstptr(t)->lstrit); break; case TORF: prf(lstptr(t)->lstlef); prs_buff(" || "); prf(lstptr(t)->lstrit); break; case TFOR: { struct argnod *arg; struct fornod *f = (struct fornod *)t; prs_buff("for "); prs_buff(f->fornam); if (f->forlst) { arg = f->forlst->comarg; prs_buff(" in"); while(arg != ENDARGS) { prc_buff(SPACE); prs_buff(arg->argval); arg = arg->argnxt; } } prendlst(); prs_buff("do"); prbgnlst(); prf(f->fortre); prendlst(); prs_buff("done"); } break; case TWH: case TUN: if (type == TWH) prs_buff("while "); else prs_buff("until "); prf(whptr(t)->whtre); prendlst(); prs_buff("do"); prbgnlst(); prf(whptr(t)->dotre); prendlst(); prs_buff("done"); break; case TIF: { struct ifnod *f = (struct ifnod *)t; prs_buff("if "); prf(f->iftre); prendlst(); prs_buff("then"); prendlst(); prf(f->thtre); if (f->eltre) { prendlst(); prs_buff("else"); prendlst(); prf(f->eltre); } prendlst(); prs_buff("fi"); break; } case TSW: { struct regnod *swl; prs_buff("case "); prs_buff(swptr(t)->swarg); swl = swptr(t)->swlst; while(swl) { struct argnod *arg = swl->regptr; if (arg) { prs_buff(arg->argval); arg = arg->argnxt; } while(arg) { prs_buff(" | "); prs_buff(arg->argval); arg = arg->argnxt; } prs_buff(")"); prf(swl->regcom); prs_buff(";;"); swl = swl->regnxt; } } break; } } sigchk(); }
void sysumask(int argc, char **argv) { BOOL symbolic = 0; mode_t mode; register int i; register char *cp; if (argc > 1 && eq(argv[1], "-S")) { umask(um = mode = umask(0)); prs_buff("u="); if ((mode & 0400) == 0) prc_buff('r'); if ((mode & 0200) == 0) prc_buff('w'); if ((mode & 0100) == 0) prc_buff('x'); prs_buff(",g="); if ((mode & 040) == 0) prc_buff('r'); if ((mode & 020) == 0) prc_buff('w'); if ((mode & 010) == 0) prc_buff('x'); prs_buff(",o="); if ((mode & 04) == 0) prc_buff('r'); if ((mode & 02) == 0) prc_buff('w'); if ((mode & 01) == 0) prc_buff('x'); prc_buff(NL); } else if (argc == 1) { umask(um = mode = umask(0)); prc_buff('0'); for (i = 6; i >= 0; i -= 3) prc_buff(((mode >> i) & 07) +'0'); prc_buff(NL); } else {