From 4017b73ab2101c2c82dc18b2c92008f72333e038 Mon Sep 17 00:00:00 2001 From: Giacomo Tesio Date: Wed, 18 Oct 2017 22:38:30 +0200 Subject: [PATCH] rc: define constants for rc variable names --- sys/src/cmd/rc/code.c | 2 +- sys/src/cmd/rc/exec.c | 16 ++++++++-------- sys/src/cmd/rc/havefork.c | 2 +- sys/src/cmd/rc/here.c | 2 +- sys/src/cmd/rc/lex.c | 2 +- sys/src/cmd/rc/rc.h | 10 ++++++++++ sys/src/cmd/rc/simple.c | 8 ++++---- sys/src/cmd/rc/subr.c | 2 +- sys/src/cmd/rc/trap.c | 4 ++-- 9 files changed, 29 insertions(+), 19 deletions(-) diff --git a/sys/src/cmd/rc/code.c b/sys/src/cmd/rc/code.c index 07d1f7c..76963a8 100644 --- a/sys/src/cmd/rc/code.c +++ b/sys/src/cmd/rc/code.c @@ -141,7 +141,7 @@ outcode(tree *t, int eflag) } else { emitf(Xmark); emitf(Xword); - emits(estrdup("ifs")); + emits(estrdup(ENV_IFS)); emitf(Xdol); } emitf(Xbackq); diff --git a/sys/src/cmd/rc/exec.c b/sys/src/cmd/rc/exec.c index 9afc894..f429e58 100644 --- a/sys/src/cmd/rc/exec.c +++ b/sys/src/cmd/rc/exec.c @@ -175,7 +175,7 @@ main(int argc, char *argv[]) Trapinit(); Vinit(); inttoascii(num, mypid = getpid()); - setvar("pid", newword(num, (word *)0)); + setvar(ENV_PID, newword(num, (word *)0)); setvar("cflag", flag['c']?newword(flag['c'][0], (word *)0) :(word *)0); setvar("rcname", newword(argv[0], (word *)0)); @@ -330,7 +330,7 @@ Xexit(void) if(trapreq->fn){ beenhere = 1; --runq->pc; - starval = vlook("*")->val; + starval = vlook(ENV_RCARGLIST)->val; start(trapreq->fn, trapreq->pc, (struct var *)0); runq->local = newvar("*", runq->local); runq->local->val = copywords(starval, (struct word *)0); @@ -686,7 +686,7 @@ Xdol(void) if(n==0 || *t) a = copywords(vlook(s)->val, a); else{ - star = vlook("*")->val; + star = vlook(ENV_RCARGLIST)->val; if(star && 1<=n && n<=count(star)){ while(--n) star = star->next; a = newword(star->word, a); @@ -797,7 +797,7 @@ Xcount(void) inttoascii(num, count(a)); } else{ - a = vlook("*")->val; + a = vlook(ENV_RCARGLIST)->val; inttoascii(num, a && 1<=n && n<=count(a)?1:0); } poplist(); @@ -916,9 +916,9 @@ Xrdcmds(void) flush(err); nerror = 0; if(flag['s'] && !truestatus()) - pfmt(err, "status=%v\n", vlook("status")->val); + pfmt(err, "%s=%v\n", ENV_STATUS, vlook(ENV_STATUS)->val); if(runq->iflag){ - prompt = vlook("prompt")->val; + prompt = vlook(ENV_PROMPT)->val; if(prompt) promptstr = prompt->word; else @@ -975,13 +975,13 @@ Xerror1(char *s) void setstatus(char *s) { - setvar("status", newword(s, (word *)0)); + setvar(ENV_STATUS, newword(s, (word *)0)); } char* getstatus(void) { - var *status = vlook("status"); + var *status = vlook(ENV_STATUS); return status->val?status->val->word:""; } diff --git a/sys/src/cmd/rc/havefork.c b/sys/src/cmd/rc/havefork.c index 11518a0..6012b0d 100644 --- a/sys/src/cmd/rc/havefork.c +++ b/sys/src/cmd/rc/havefork.c @@ -41,7 +41,7 @@ Xasync(void) close(null); runq->pc = runq->code[runq->pc].i; inttoascii(npid, pid); - setvar("apid", newword(npid, (word *)0)); + setvar(ENV_APID, newword(npid, (word *)0)); break; } } diff --git a/sys/src/cmd/rc/here.c b/sys/src/cmd/rc/here.c index f9a197f..4d37218 100644 --- a/sys/src/cmd/rc/here.c +++ b/sys/src/cmd/rc/here.c @@ -137,7 +137,7 @@ psubst(io *f, uint8_t *s) for(u = s; *u && '0' <= *u && *u <= '9'; u++) n = n*10 + *u - '0'; if(n && *u=='\0'){ - star = vlook("*")->val; + star = vlook(ENV_RCARGLIST)->val; if(star && 1 <= n && n <= count(star)){ while(--n) star = star->next; diff --git a/sys/src/cmd/rc/lex.c b/sys/src/cmd/rc/lex.c index 546ea3d..bce20ce 100644 --- a/sys/src/cmd/rc/lex.c +++ b/sys/src/cmd/rc/lex.c @@ -111,7 +111,7 @@ pprompt(void) } newwdir = 0; } - prompt = vlook("prompt"); + prompt = vlook(ENV_PROMPT); if(prompt->val && prompt->val->next) promptstr = prompt->val->next->word; else diff --git a/sys/src/cmd/rc/rc.h b/sys/src/cmd/rc/rc.h index 497a8d7..63373b4 100644 --- a/sys/src/cmd/rc/rc.h +++ b/sys/src/cmd/rc/rc.h @@ -9,6 +9,16 @@ #include #include +#define ENV_RCARGLIST "*" +#define ENV_APID "apid" +#define ENV_HOME "home" +#define ENV_IFS "ifs" +#define ENV_PATH "path" +#define ENV_PID "pid" +#define ENV_PROMPT "prompt" +#define ENV_STATUS "status" +#define ENV_CDPATH "cdpath" + #define NSIG 32 #define SIGINT 2 #define SIGQUIT 3 diff --git a/sys/src/cmd/rc/simple.c b/sys/src/cmd/rc/simple.c index 465e349..84ca202 100644 --- a/sys/src/cmd/rc/simple.c +++ b/sys/src/cmd/rc/simple.c @@ -111,7 +111,7 @@ searchpath(char *w) || strncmp(w, "#", 1)==0 || strncmp(w, "./", 2)==0 || strncmp(w, "../", 3)==0 - || (path = vlook("path")->val)==0) + || (path = vlook(ENV_PATH)->val)==0) path=&nullpath; return path; } @@ -162,7 +162,7 @@ execcd(void) char *dir; setstatus("can't cd"); - cdpath = vlook("cdpath")->val; + cdpath = vlook(ENV_CDPATH)->val; switch(count(a)){ default: pfmt(err, "Usage: cd [directory]\n"); @@ -191,7 +191,7 @@ execcd(void) pfmt(err, "Can't cd %s: %r\n", a->next->word); break; case 1: - a = vlook("home")->val; + a = vlook(ENV_HOME)->val; if(count(a)>=1){ if(dochdir(a->word)>=0) setstatus(""); @@ -236,7 +236,7 @@ execshift(void) n = 1; break; } - star = vlook("*"); + star = vlook(ENV_RCARGLIST); for(;n>0 && star->val;--n){ a = star->val->next; free(star->val->word); diff --git a/sys/src/cmd/rc/subr.c b/sys/src/cmd/rc/subr.c index 71bc1ae..f3a0d9a 100644 --- a/sys/src/cmd/rc/subr.c +++ b/sys/src/cmd/rc/subr.c @@ -62,7 +62,7 @@ yyerror(char *m) lastdol = 0; while(lastc!='\n' && lastc!=EOF) advance(); nerror++; - setvar("status", newword(m, (word *)0)); + setvar(ENV_STATUS, newword(m, (word *)0)); } char *bp; diff --git a/sys/src/cmd/rc/trap.c b/sys/src/cmd/rc/trap.c index ed0f715..f7e13c8 100644 --- a/sys/src/cmd/rc/trap.c +++ b/sys/src/cmd/rc/trap.c @@ -19,7 +19,7 @@ dotrap(void) int i; struct var *trapreq; struct word *starval; - starval = vlook("*")->val; + starval = vlook(ENV_RCARGLIST)->val; while(ntrap) for(i = 0;i!=NSIG;i++) while(trap[i]){ --trap[i]; --ntrap; @@ -27,7 +27,7 @@ dotrap(void) trapreq = vlook(Signame[i]); if(trapreq->fn){ start(trapreq->fn, trapreq->pc, (struct var *)0); - runq->local = newvar("*", runq->local); + runq->local = newvar(ENV_RCARGLIST, runq->local); runq->local->val = copywords(starval, (struct word *)0); runq->local->changed = 1; runq->redir = runq->startredir = 0;