From 3568e27ec8774a212564c8d2bf6b3d9a19d4d571 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 4 Jan 2022 00:19:36 +0000 Subject: [PATCH] rc: only have single instance of a symbol, extern in header (thanks mcf) --- sys/src/cmd/rc/code.c | 2 +- sys/src/cmd/rc/exec.c | 7 +++++-- sys/src/cmd/rc/exec.h | 13 ++++++------- sys/src/cmd/rc/io.h | 1 - sys/src/cmd/rc/rc.h | 10 ++++------ sys/src/cmd/rc/subr.c | 1 - sys/src/cmd/rc/trap.c | 4 +++- sys/src/cmd/rc/var.c | 2 ++ 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/sys/src/cmd/rc/code.c b/sys/src/cmd/rc/code.c index d5427aff5..958907c57 100644 --- a/sys/src/cmd/rc/code.c +++ b/sys/src/cmd/rc/code.c @@ -7,7 +7,7 @@ #define c1 t->child[1] #define c2 t->child[2] code *codebuf; -int codep, ncode, codeline; +static int codep, ncode, codeline; #define emitf(x) ((codep!=ncode || morecode()), codebuf[codep].f = (x), codep++) #define emiti(x) ((codep!=ncode || morecode()), codebuf[codep].i = (x), codep++) #define emits(x) ((codep!=ncode || morecode()), codebuf[codep].s = (x), codep++) diff --git a/sys/src/cmd/rc/exec.c b/sys/src/cmd/rc/exec.c index fa32a182b..6de94ebb7 100644 --- a/sys/src/cmd/rc/exec.c +++ b/sys/src/cmd/rc/exec.c @@ -4,6 +4,11 @@ #include "io.h" #include "fns.h" +char *argv0="rc"; +io *err; +int mypid; +thread *runq; + /* * Start executing the given code at the given pc with the given redirection */ @@ -216,8 +221,6 @@ shuffleredir(void) * fabricate bootstrap code and start it (*=(argv);. -bq /usr/lib/rcmain $*) * start interpreting code */ -char *argv0="rc"; - void main(int argc, char *argv[]) { diff --git a/sys/src/cmd/rc/exec.h b/sys/src/cmd/rc/exec.h index 308802679..69b1004ca 100644 --- a/sys/src/cmd/rc/exec.h +++ b/sys/src/cmd/rc/exec.h @@ -57,16 +57,17 @@ struct thread{ char *status; /* status for Xpipewait */ thread *ret; /* who continues when this finishes */ }; - -thread *runq; +extern thread *runq; void turfstack(var*); +extern int mypid; +extern int ntrap; /* number of outstanding traps */ +extern int trap[NSIG]; /* number of outstanding traps per type */ + code *codecopy(code*); -code *codebuf; /* compiler output */ +extern code *codebuf; /* compiler output */ extern int ifnot; -int ntrap; /* number of outstanding traps */ -int trap[NSIG]; /* number of outstanding traps per type */ struct builtin{ char *name; void (*fnc)(void); @@ -82,5 +83,3 @@ void startfunc(var*, word*, var*, redir*); char *srcfile(thread*); char *getstatus(void); - -extern char *argv0; diff --git a/sys/src/cmd/rc/io.h b/sys/src/cmd/rc/io.h index e9537ecb3..1c345810c 100644 --- a/sys/src/cmd/rc/io.h +++ b/sys/src/cmd/rc/io.h @@ -5,7 +5,6 @@ struct io{ unsigned char *buf, *bufp, *ebuf; io *next; }; -io *err; io *openiofd(int), *openiostr(void), *openiocore(void*, int); void pchr(io*, int); diff --git a/sys/src/cmd/rc/rc.h b/sys/src/cmd/rc/rc.h index d02c1312f..2967a44b4 100644 --- a/sys/src/cmd/rc/rc.h +++ b/sys/src/cmd/rc/rc.h @@ -123,8 +123,7 @@ var *vlook(char*), *gvlook(char*), *newvar(char*, var*); void setvar(char*, word*), freevar(var*); #define NVAR 521 - -var *gvar[NVAR]; /* hash for globals */ +extern var *gvar[NVAR]; /* hash for globals */ #define new(type) ((type *)emalloc(sizeof(type))) @@ -132,8 +131,6 @@ void *emalloc(long); void *erealloc(void *, long); char *estrdup(char*); -int mypid; - /* * Glob character escape in strings: * In a string, GLOB must be followed by *?[ or GLOB. @@ -152,10 +149,10 @@ int mypid; #define fourbyte(c) (((c)&0xf8)==0xf0) #define xbyte(c) (((c)&0xc0)==0x80) -extern char **argp; -extern char **args; +extern char *argv0; extern int nerror; /* number of errors encountered during compilation */ extern int doprompt; /* is it time for a prompt? */ +extern io *err; /* * Which fds are the reading/writing end of a pipe? @@ -166,3 +163,4 @@ extern int doprompt; /* is it time for a prompt? */ #define PRD 0 #define PWR 1 extern char Rcmain[], Fdprefix[]; +extern char *Signame[]; diff --git a/sys/src/cmd/rc/subr.c b/sys/src/cmd/rc/subr.c index 4c3ada4fc..c6bc64cbc 100644 --- a/sys/src/cmd/rc/subr.c +++ b/sys/src/cmd/rc/subr.c @@ -1,5 +1,4 @@ #include "rc.h" -#include "exec.h" #include "io.h" #include "fns.h" diff --git a/sys/src/cmd/rc/trap.c b/sys/src/cmd/rc/trap.c index 8ee8b2441..498218ab4 100644 --- a/sys/src/cmd/rc/trap.c +++ b/sys/src/cmd/rc/trap.c @@ -2,7 +2,9 @@ #include "exec.h" #include "fns.h" #include "io.h" -extern char *Signame[]; + +int ntrap; +int trap[NSIG]; void dotrap(void) diff --git a/sys/src/cmd/rc/var.c b/sys/src/cmd/rc/var.c index 586ebe75b..73b01fa5e 100644 --- a/sys/src/cmd/rc/var.c +++ b/sys/src/cmd/rc/var.c @@ -2,6 +2,8 @@ #include "exec.h" #include "fns.h" +var *gvar[NVAR]; + int hash(char *s, int n) {