diff options
author | chin <none@none> | 2005-09-13 16:43:41 -0700 |
---|---|---|
committer | chin <none@none> | 2005-09-13 16:43:41 -0700 |
commit | 965005c81e0f731867d47892b9fb677030b102df (patch) | |
tree | 386a7f02c7fbc400e4974cf6a2cab6c77c48ff43 /usr/src | |
parent | efaef81f6f4b9f1509dfc641a082086bb8aa24cd (diff) | |
download | illumos-joyent-965005c81e0f731867d47892b9fb677030b102df.tar.gz |
6268998 cmd/sh and gcc don't get along
6277636 *sh* can crash if it creates too many temporary files
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/sh/args.c | 59 | ||||
-rw-r--r-- | usr/src/cmd/sh/blok.c | 40 | ||||
-rw-r--r-- | usr/src/cmd/sh/bltin.c | 24 | ||||
-rw-r--r-- | usr/src/cmd/sh/cmd.c | 91 | ||||
-rw-r--r-- | usr/src/cmd/sh/defs.c | 9 | ||||
-rw-r--r-- | usr/src/cmd/sh/defs.h | 40 | ||||
-rw-r--r-- | usr/src/cmd/sh/echo.c | 20 | ||||
-rw-r--r-- | usr/src/cmd/sh/error.c | 53 | ||||
-rw-r--r-- | usr/src/cmd/sh/expand.c | 35 | ||||
-rw-r--r-- | usr/src/cmd/sh/fault.c | 43 | ||||
-rw-r--r-- | usr/src/cmd/sh/func.c | 88 | ||||
-rw-r--r-- | usr/src/cmd/sh/hash.c | 11 | ||||
-rw-r--r-- | usr/src/cmd/sh/hash.h | 23 | ||||
-rw-r--r-- | usr/src/cmd/sh/hashserv.c | 77 | ||||
-rw-r--r-- | usr/src/cmd/sh/io.c | 144 | ||||
-rw-r--r-- | usr/src/cmd/sh/jobs.c | 165 | ||||
-rw-r--r-- | usr/src/cmd/sh/macro.c | 63 | ||||
-rw-r--r-- | usr/src/cmd/sh/main.c | 86 | ||||
-rw-r--r-- | usr/src/cmd/sh/name.c | 164 | ||||
-rw-r--r-- | usr/src/cmd/sh/pwd.c | 23 | ||||
-rw-r--r-- | usr/src/cmd/sh/service.c | 135 | ||||
-rw-r--r-- | usr/src/cmd/sh/stak.c | 27 | ||||
-rw-r--r-- | usr/src/cmd/sh/string.c | 32 | ||||
-rw-r--r-- | usr/src/cmd/sh/test.c | 58 | ||||
-rw-r--r-- | usr/src/cmd/sh/word.c | 24 | ||||
-rw-r--r-- | usr/src/cmd/sh/xec.c | 45 |
26 files changed, 815 insertions, 764 deletions
diff --git a/usr/src/cmd/sh/args.c b/usr/src/cmd/sh/args.c index d0fe087e27..4e6062def2 100644 --- a/usr/src/cmd/sh/args.c +++ b/usr/src/cmd/sh/args.c @@ -19,11 +19,16 @@ * * CDDL HEADER END */ + +/* + * Copyright 1995 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ - -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.10.4.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell @@ -32,7 +37,7 @@ #include "defs.h" static struct dolnod *copyargs(); -static struct dolnod *freedolh(); +static void freedolh(void); extern struct dolnod *freeargs(); static struct dolnod *dolh; @@ -86,13 +91,12 @@ long flagval[] = /* ======== option handling ======== */ -options(argc,argv) - unsigned char **argv; - int argc; +int +options(int argc, unsigned char **argv) { - register unsigned char *cp; - register unsigned char **argp = argv; - register unsigned char *flagc; + unsigned char *cp; + unsigned char **argp = argv; + unsigned char *flagc; unsigned char *flagp; int len; wchar_t wc; @@ -203,11 +207,11 @@ options(argc,argv) /* * sets up positional parameters */ -setargs(argi) - unsigned char *argi[]; +void +setargs(unsigned char *argi[]) { - register unsigned char **argp = argi; /* count args */ - register int argn = 0; + unsigned char **argp = argi; /* count args */ + int argn = 0; while (*argp++ != (unsigned char *)ENDARGS) argn++; @@ -220,11 +224,11 @@ setargs(argi) } -static struct dolnod * -freedolh() +static void +freedolh(void) { - register unsigned char **argp; - register struct dolnod *argblk; + unsigned char **argp; + struct dolnod *argblk; if (argblk = dolh) { @@ -242,9 +246,9 @@ struct dolnod * freeargs(blk) struct dolnod *blk; { - register unsigned char **argp; - register struct dolnod *argr = 0; - register struct dolnod *argblk; + unsigned char **argp; + struct dolnod *argr = 0; + struct dolnod *argblk; int cnt; if (argblk = blk) @@ -277,9 +281,9 @@ static struct dolnod * copyargs(from, n) unsigned char *from[]; { - register struct dolnod *np = (struct dolnod *)alloc(sizeof(struct dolnod)); - register unsigned char **fp = from; - register unsigned char **pp; + struct dolnod *np = (struct dolnod *)alloc(sizeof (struct dolnod)); + unsigned char **fp = from; + unsigned char **pp; np -> dolnxt = 0; np->doluse = 1; /* use count */ @@ -297,9 +301,9 @@ struct dolnod * clean_args(blk) struct dolnod *blk; { - register unsigned char **argp; - register struct dolnod *argr = 0; - register struct dolnod *argblk; + unsigned char **argp; + struct dolnod *argr = 0; + struct dolnod *argblk; if (argblk = blk) { @@ -318,7 +322,8 @@ clean_args(blk) return(argr); } -clearup() +void +clearup(void) { /* * force `for' $* lists to go away diff --git a/usr/src/cmd/sh/blok.c b/usr/src/cmd/sh/blok.c index 4eccca8f85..7f9f5578d4 100644 --- a/usr/src/cmd/sh/blok.c +++ b/usr/src/cmd/sh/blok.c @@ -19,15 +19,15 @@ * * CDDL HEADER END */ + /* - * Copyright (c) 2001 by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2001 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ - #pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell @@ -51,6 +51,8 @@ struct blk *bloktop; /* top of arena (last blok) */ unsigned char *brkbegin; unsigned char *setbrk(); +void addblok(unsigned int); + #ifdef __STDC__ void * #else @@ -59,7 +61,7 @@ char * alloc(nbytes) size_t nbytes; { - register unsigned rbytes = round(nbytes+BYTESPERWORD, BYTESPERWORD); + unsigned rbytes = round(nbytes+BYTESPERWORD, BYTESPERWORD); if (stakbot == 0) { addblok((unsigned)0); @@ -68,8 +70,8 @@ alloc(nbytes) for (;;) { int c = 0; - register struct blk *p = blokp; - register struct blk *q; + struct blk *p = blokp; + struct blk *q; do { @@ -95,8 +97,8 @@ alloc(nbytes) } } -addblok(reqd) - unsigned reqd; +void +addblok(unsigned int reqd) { if (stakbot == 0) { @@ -106,8 +108,8 @@ addblok(reqd) if (stakbas != staktop) { - register unsigned char *rndstak; - register struct blk *blokstak; + unsigned char *rndstak; + struct blk *blokstak; if (staktop >= brkend) growstak(staktop); @@ -143,9 +145,9 @@ addblok(reqd) } bloktop->word = (struct blk *)(brkbegin + 1); { - register unsigned char *stakadr = (unsigned char *) + unsigned char *stakadr = (unsigned char *) (bloktop + 2); - register unsigned char *sp = stakadr; + unsigned char *sp = stakadr; if (reqd = (staktop-stakbot)) { if (stakadr + reqd >= brkend) @@ -165,7 +167,7 @@ void free(ap) void *ap; { - register struct blk *p; + struct blk *p; if ((p = (struct blk *)ap) && p < bloktop && p > (struct blk *)brkbegin) { @@ -186,8 +188,8 @@ chkbptr(ptr) struct blk *ptr; { int exf = 0; - register struct blk *p = (struct blk *)brkbegin; - register struct blk *q; + struct blk *p = (struct blk *)brkbegin; + struct blk *q; int us = 0, un = 0; for (;;) @@ -220,8 +222,8 @@ chkbptr(ptr) chkmem() { - register struct blk *p = (struct blk *)brkbegin; - register struct blk *q; + struct blk *p = (struct blk *)brkbegin; + struct blk *q; int us = 0, un = 0; for (;;) { @@ -260,8 +262,8 @@ size_t blklen(q) char *q; { - register struct blk *pp = (struct blk *)q; - register struct blk *p; + struct blk *pp = (struct blk *)q; + struct blk *p; --pp; p = (struct blk *)(Rcheat(pp->word) & ~BUSY); diff --git a/usr/src/cmd/sh/bltin.c b/usr/src/cmd/sh/bltin.c index ec84f7cf06..45496055b1 100644 --- a/usr/src/cmd/sh/bltin.c +++ b/usr/src/cmd/sh/bltin.c @@ -19,16 +19,16 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 1996 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.3.8.1 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * * UNIX shell @@ -43,10 +43,8 @@ #include <sys/types.h> #include <sys/times.h> -builtin(type, argc, argv, t) -int type, argc; -unsigned char **argv; -struct trenod *t; +void +builtin(int type, int argc, unsigned char **argv, struct trenod *t) { short index = initio(t->treio, (type != SYSEXEC)); unsigned char *a1 = argv[1]; @@ -77,7 +75,7 @@ struct trenod *t; case SYSDOT: if (a1) { - register int f; + int f; if ((f = pathopen(getpath(a1), a1)) < 0) failed(a1, notfound); @@ -453,7 +451,7 @@ struct trenod *t; itos(optind); assign(n, numbuf); n = lookup(varnam); - assign(n, nullstr); + assign(n, (unsigned char *)nullstr); exitval = 1; break; } @@ -465,7 +463,7 @@ struct trenod *t; n = lookup(varnam); assign(n, c); n = lookup("OPTARG"); - assign(n, optarg); + assign(n, (unsigned char *)optarg); } break; diff --git a/usr/src/cmd/sh/cmd.c b/usr/src/cmd/sh/cmd.c index 0e74a4d884..78de8359aa 100644 --- a/usr/src/cmd/sh/cmd.c +++ b/usr/src/cmd/sh/cmd.c @@ -19,16 +19,16 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 1997 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.12.1.4 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -37,16 +37,16 @@ #include "sym.h" static struct ionod * inout(); -static int chkword(); -static int chksym(); +static void chkword(void); +static void chksym(int); static struct trenod * term(); static struct trenod * makelist(); static struct trenod * list(); static struct regnod * syncase(); static struct trenod * item(); static int skipnl(); -static int prsym(); -static int synbad(); +static void prsym(int); +static void synbad(void); /* ======== storage allocation for functions ======== */ @@ -72,7 +72,7 @@ makefork(flgs, i) int flgs; struct trenod *i; { - register struct forknod *t; + struct forknod *t; t = (struct forknod *)getstor(sizeof(struct forknod)); t->forktyp = flgs|TFORK; @@ -86,7 +86,7 @@ makelist(type, i, r) int type; struct trenod *i, *r; { - register struct lstnod *t; + struct lstnod *t; if (i == 0 || r == 0) synbad(); @@ -109,10 +109,10 @@ makelist(type, i, r) */ struct trenod * cmd(sym, flg) - register int sym; + int sym; int flg; { - register struct trenod *i, *e; + struct trenod *i, *e; i = list(flg); if (wdval == NL) { @@ -160,8 +160,8 @@ cmd(sym, flg) static struct trenod * list(flg) { - register struct trenod *r; - register int b; + struct trenod *r; + int b; r = term(flg); while (r && ((b = (wdval == ANDFSYM)) || wdval == ORFSYM)) r = makelist((b ? TAND : TORF), r, term(NLFLG)); @@ -176,7 +176,7 @@ list(flg) static struct trenod * term(flg) { - register struct trenod *t; + struct trenod *t; reserv++; if (flg & NLFLG) @@ -199,15 +199,16 @@ term(flg) static struct regnod * syncase(esym) -register int esym; +int esym; { skipnl(); if (wdval == esym) return(0); else { - register struct regnod *r = (struct regnod *)getstor(sizeof(struct regnod)); - register struct argnod *argp; + struct regnod *r = + (struct regnod *)getstor(sizeof (struct regnod)); + struct argnod *argp; r->regptr = 0; for (;;) @@ -259,8 +260,8 @@ static struct trenod * item(flag) BOOL flag; { - register struct trenod *r; - register struct ionod *io; + struct trenod *r; + struct ionod *io; if (flag) io = inout((struct ionod *)0); @@ -270,7 +271,7 @@ item(flag) { case CASYM: { - register struct swnod *t; + struct swnod *t; t = (struct swnod *)getstor(sizeof(struct swnod)); r = (struct trenod *)t; @@ -289,8 +290,8 @@ item(flag) case IFSYM: { - register int w; - register struct ifnod *t; + int w; + struct ifnod *t; t = (struct ifnod *)getstor(sizeof(struct ifnod)); r = (struct trenod *)t; @@ -306,7 +307,7 @@ item(flag) case FORSYM: { - register struct fornod *t; + struct fornod *t; t = (struct fornod *)getstor(sizeof(struct fornod)); r = (struct trenod *)t; @@ -340,7 +341,7 @@ item(flag) case WHSYM: case UNSYM: { - register struct whnod *t; + struct whnod *t; t = (struct whnod *)getstor(sizeof(struct whnod)); r = (struct trenod *)t; @@ -357,7 +358,7 @@ item(flag) case '(': { - register struct parnod *p; + struct parnod *p; p = (struct parnod *)getstor(sizeof(struct parnod)); p->partre = cmd(')', NLFLG); @@ -372,10 +373,10 @@ item(flag) case 0: { - register struct comnod *t; - register struct argnod *argp; - register struct argnod **argtail; - register struct argnod **argset = 0; + struct comnod *t; + struct argnod *argp; + struct argnod **argtail; + struct argnod **argset = 0; int keywd = 1; unsigned char *com; @@ -501,9 +502,9 @@ static struct ionod * inout(lastio) struct ionod *lastio; { - register int iof; - register struct ionod *iop; - register unsigned int c; + int iof; + struct ionod *iop; + unsigned int c; iof = wdnum; switch (wdval) @@ -556,28 +557,28 @@ inout(lastio) return(iop); } -static int -chkword() +static void +chkword(void) { if (word()) synbad(); } -static int -chksym(sym) +static void +chksym(int sym) { - register int x = sym & wdval; + int x = sym & wdval; if (((x & SYMFLG) ? x : sym) != wdval) synbad(); } -static int -prsym(sym) +static void +prsym(int sym) { if (sym & SYMFLG) { - register const struct sysnod *sp = reserved; + const struct sysnod *sp = reserved; while (sp->sysval && sp->sysval != sym) sp++; @@ -596,8 +597,8 @@ prsym(sym) } } -static int -synbad() +static void +synbad(void) { prp(); prs(synmsg); diff --git a/usr/src/cmd/sh/defs.c b/usr/src/cmd/sh/defs.c index 4070f5125c..8a6b6afc63 100644 --- a/usr/src/cmd/sh/defs.c +++ b/usr/src/cmd/sh/defs.c @@ -20,10 +20,9 @@ * CDDL HEADER END */ /* - * Copyright (c) 2001 by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ - /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ @@ -70,8 +69,8 @@ unsigned char *pidadr; unsigned char *cmdadr; /* transput */ -unsigned char *tmpname; -int serial; +int tmpout_offset; +unsigned int serial; unsigned peekc; unsigned peekn; unsigned char *comdiv; diff --git a/usr/src/cmd/sh/defs.h b/usr/src/cmd/sh/defs.h index e02aba660e..b3d86bb631 100644 --- a/usr/src/cmd/sh/defs.h +++ b/usr/src/cmd/sh/defs.h @@ -19,15 +19,14 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright 2003 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ #ifndef _DEFS_H #define _DEFS_H @@ -142,7 +141,7 @@ extern "C" { #define ENDARGS 0 #include <unistd.h> -#include "mac.h" +#include "mac.h" #include "mode.h" #include "name.h" #include <signal.h> @@ -169,7 +168,8 @@ extern char *optarg; extern int handle(); extern void chktrap(); -extern void done(); +extern void done(int) + __NORETURN; extern void sh_free(); extern unsigned char *make(); extern unsigned char *movstr(); @@ -187,15 +187,25 @@ extern unsigned char *nextpath(); extern unsigned char **scan(); extern unsigned char *mactrim(); extern unsigned char *macro(); -extern int exname(); -extern int printnam(); -extern int printro(); -extern int printexp(); +extern void exname(struct namnod *); +extern void printnam(struct namnod *); +extern void printro(struct namnod *); +extern void printexp(struct namnod *); extern unsigned int readwc(); extern unsigned int nextwc(); extern unsigned char skipc(); extern unsigned char **local_setenv(); extern time_t time(); +extern void exitsh(int) + __NORETURN; +extern void failed(unsigned char *, const char *) __NORETURN; +extern void prf(); +extern void assign(struct namnod *, unsigned char *); +extern void setmode(int); +extern void trim(unsigned char *); +extern void preacct(unsigned char *); + + #define attrib(n, f) (n->namflg |= f) #define round(a, b) (((int)(((char *)(a)+b)-1))&~((b)-1)) @@ -299,10 +309,14 @@ extern const char mailpname[]; /* transput */ extern unsigned char tmpout[]; -extern unsigned char *tmpname; -extern int serial; +extern int tmpout_offset; +extern unsigned int serial; -#define TMPNAM 7 +/* + * allow plenty of room for size for temp file name: + * "/tmp/sh"(7) + <pid> (<=6) + <unsigned int #> (<=10) + \0 (1) + */ +#define TMPOUTSZ 32 extern struct fileblk *standin; diff --git a/usr/src/cmd/sh/echo.c b/usr/src/cmd/sh/echo.c index 84d1836a82..d9717c0006 100644 --- a/usr/src/cmd/sh/echo.c +++ b/usr/src/cmd/sh/echo.c @@ -19,13 +19,16 @@ * * CDDL HEADER END */ + +/* + * Copyright 1996 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ -/* Portions Copyright (c) 1988, Sun Microsystems, Inc. */ -/* All Rights Reserved. */ - #pragma ident "%Z%%M% %I% %E% SMI" /* @@ -37,11 +40,11 @@ extern int exitval; -echo(argc, argv) -unsigned char **argv; +int +echo(int argc, unsigned char **argv) { - register unsigned char *cp; - register int i, wd; + unsigned char *cp; + int i, wd; int nflg = 0; int j; int len; @@ -99,8 +102,7 @@ unsigned char **argv; } #endif /* _iBCS2 */ - for (i = 1; i <= argc; i++) - { + for (i = 1; i <= argc; i++) { sigchk(); for (cp = argv[i]; *cp; cp++) { if ((len = mbtowc(&wc, (char *)cp, diff --git a/usr/src/cmd/sh/error.c b/usr/src/cmd/sh/error.c index e47544b7ea..03a0791265 100644 --- a/usr/src/cmd/sh/error.c +++ b/usr/src/cmd/sh/error.c @@ -19,11 +19,17 @@ * * CDDL HEADER END */ + +/* + * Copyright 1990 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.9.5.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -33,30 +39,27 @@ /* ======== error handling ======== */ -extern void done(); - -failed(s1, s2) -unsigned char *s1, *s2; +void +failed(unsigned char *s1, const char *s2) { prp(); prs_cntl(s1); - if (s2) - { + if (s2) { prs(colon); - prs(s2); + prs((unsigned char *)s2); } newline(); exitsh(ERROR); } -error(s) -unsigned char *s; +void +error(unsigned char *s) { - failed(s, NIL); + failed(s, (const char *)NIL); } -exitsh(xno) -int xno; +void +exitsh(int xno) { /* * Arrive here from `FATAL' errors @@ -74,44 +77,42 @@ int xno; { clearup(); restore(0); - (void)setb(1); + (void) setb(1); execbrk = breakcnt = funcnt = 0; longjmp(errshell, 1); } } -rmtemp(base) -struct ionod *base; +void +rmtemp(struct ionod *base) { - while (iotemp > base) - { + while (iotemp > base) { unlink(iotemp->ioname); free(iotemp->iolink); iotemp = iotemp->iolst; } } -rmfunctmp() +void +rmfunctmp(void) { - while (fiotemp) - { + while (fiotemp) { unlink(fiotemp->ioname); fiotemp = fiotemp->iolst; } } -failure(s1, s2) -unsigned char *s1, *s2; +void +failure(unsigned char *s1, unsigned char *s2) { prp(); prs_cntl(s1); - if (s2) - { + if (s2) { prs(colon); prs(s2); } newline(); - + if (flags & errflg) exitsh(ERROR); diff --git a/usr/src/cmd/sh/expand.c b/usr/src/cmd/sh/expand.c index f5bfea5bd1..d976fb3b4a 100644 --- a/usr/src/cmd/sh/expand.c +++ b/usr/src/cmd/sh/expand.c @@ -49,17 +49,19 @@ * "[...a-z...]" in params matches a through z. * */ -static int addg(); +static void addg(unsigned char *, unsigned char *, unsigned char *, + unsigned char *); +void makearg(struct argnod *); -expand(as, rcnt) - unsigned char *as; +int +expand(unsigned char *as, int rcnt) { int count; DIR *dirf; BOOL dir = 0; unsigned char *rescan = 0; unsigned char *slashsav = 0; - register unsigned char *s, *cs; + unsigned char *s, *cs; unsigned char *s2 = 0; struct argnod *schain = gchain; BOOL slash; @@ -73,7 +75,7 @@ expand(as, rcnt) * check for meta chars */ { - register BOOL open; + BOOL open; slash = 0; open = 0; @@ -159,7 +161,7 @@ expand(as, rcnt) /* check for rescan */ if (dir) { - register unsigned char *rs; + unsigned char *rs; struct dirent *e; rs = cs; @@ -180,7 +182,8 @@ expand(as, rcnt) if (gmatch(e->d_name, cs)) { - addg(s, e->d_name, rescan, slashsav); + addg(s, (unsigned char *)e->d_name, rescan, + slashsav); count++; } } @@ -188,7 +191,7 @@ expand(as, rcnt) if (rescan) { - register struct argnod *rchain; + struct argnod *rchain; rchain = gchain; gchain = schain; @@ -211,12 +214,12 @@ expand(as, rcnt) return (count); } -static int -addg(as1, as2, as3, as4) -unsigned char *as1, *as2, *as3, *as4; +static void +addg(unsigned char *as1, unsigned char *as2, unsigned char *as3, + unsigned char *as4) { - register unsigned char *s1, *s2; - register int c; + unsigned char *s1, *s2; + int c; int len; wchar_t wc; @@ -281,11 +284,11 @@ unsigned char *as1, *as2, *as3, *as4; } while (*s2++ = *++s1); } - makearg(endstak(s2)); + makearg((struct argnod *)endstak(s2)); } -makearg(args) - register struct argnod *args; +void +makearg(struct argnod *args) { args->argnxt = gchain; gchain = args; diff --git a/usr/src/cmd/sh/fault.c b/usr/src/cmd/sh/fault.c index cb944d5318..b397dc97f1 100644 --- a/usr/src/cmd/sh/fault.c +++ b/usr/src/cmd/sh/fault.c @@ -19,16 +19,17 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 1997 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.13.17.1 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -129,8 +130,7 @@ sigval[MAXTRAP]))() = }; static int -ignoring(i) -register int i; +ignoring(int i) { struct sigaction act; if (trapflg[i] & SIGIGN) @@ -172,7 +172,7 @@ int i; void done(sig) { - register unsigned char *t; + unsigned char *t; int savxit; if (t = trapcom[0]) @@ -211,10 +211,9 @@ done(sig) } static void -fault(sig) -register int sig; +fault(int sig) { - register int flag; + int flag; switch (sig) { case SIGALRM: @@ -280,7 +279,7 @@ handle(sig, func) void stdsigs() { - register int i; + int i; stack_t ss; int err = 0; int rtmin = (int)SIGRTMIN; @@ -319,8 +318,8 @@ stdsigs() void oldsigs() { - register int i; - register unsigned char *t; + int i; + unsigned char *t; i = MAXTRAP; while (i--) @@ -340,8 +339,8 @@ oldsigs() void chktrap() { - register int i = MAXTRAP; - register unsigned char *t; + int i = MAXTRAP; + unsigned char *t; trapnote &= ~TRAPSET; while (--i) @@ -360,9 +359,8 @@ chktrap() } } -systrap(argc, argv) -int argc; -char **argv; +void +systrap(int argc, char **argv) { int sig; @@ -427,9 +425,8 @@ char **argv; } } -unsigned int -sleep(ticks) -unsigned int ticks; +void +sh_sleep(unsigned int ticks) { sigset_t set, oset; struct sigaction act, oact; diff --git a/usr/src/cmd/sh/func.c b/usr/src/cmd/sh/func.c index de7196380f..2d296f61bf 100644 --- a/usr/src/cmd/sh/func.c +++ b/usr/src/cmd/sh/func.c @@ -19,35 +19,41 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 1996 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.4.1.3 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ #include "defs.h" -freefunc(n) - struct namnod *n; +static void freetree(struct trenod *); +static void free_arg(struct argnod *); +static void freeio(struct ionod *); +static void freereg(struct regnod *); +static void prarg(struct argnod *argp); +static void prio(struct ionod *iop); + +void +freefunc(struct namnod *n) { freetree((struct trenod *)(n->namenv)); } - -freetree(t) - register struct trenod *t; +static void +freetree(struct trenod *t) { if (t) { - register int type; + int type; if (t->tretyp & CNTMSK) { @@ -124,10 +130,10 @@ freetree(t) } } -free_arg(argp) - register struct argnod *argp; +static void +free_arg(struct argnod *argp) { - register struct argnod *sav; + struct argnod *sav; while (argp) { @@ -137,11 +143,10 @@ free_arg(argp) } } - -freeio(iop) - register struct ionod *iop; +void +freeio(struct ionod *iop) { - register struct ionod *sav; + struct ionod *sav; while (iop) { @@ -176,11 +181,10 @@ freeio(iop) } } - -freereg(regp) - register struct regnod *regp; +static void +freereg(struct regnod *regp) { - register struct regnod *sav; + struct regnod *sav; while (regp) { @@ -193,9 +197,10 @@ freereg(regp) } -static nonl = 0; +static int nonl = 0; -prbgnlst() +void +prbgnlst(void) { if (nonl) prc_buff(SPACE); @@ -203,7 +208,8 @@ prbgnlst() prc_buff(NL); } -prendlst() +void +prendlst(void) { if (nonl) { prc_buff(';'); @@ -213,21 +219,22 @@ prendlst() prc_buff(NL); } -prcmd(t) +void +prcmd(struct trenod *t) { nonl++; prf(t); nonl = 0; } -prf(t) - register struct trenod *t; +void +prf(struct trenod *t) { sigchk(); if (t) { - register int type; + int type; type = t->tretyp & COMMSK; @@ -235,7 +242,7 @@ prf(t) { case TFND: { - register struct fndnod *f = (struct fndnod *)t; + struct fndnod *f = (struct fndnod *)t; prs_buff(f->fndnam); prs_buff("(){"); @@ -294,8 +301,8 @@ prf(t) case TFOR: { - register struct argnod *arg; - register struct fornod *f = (struct fornod *)t; + struct argnod *arg; + struct fornod *f = (struct fornod *)t; prs_buff("for "); prs_buff(f->fornam); @@ -363,7 +370,7 @@ prf(t) case TSW: { - register struct regnod *swl; + struct regnod *swl; prs_buff("case "); prs_buff(swptr(t)->swarg); @@ -399,8 +406,8 @@ prf(t) sigchk(); } -prarg(argp) - register struct argnod *argp; +static void +prarg(struct argnod *argp) { while (argp) { @@ -411,12 +418,11 @@ prarg(argp) } } - -prio(iop) - register struct ionod *iop; +static void +prio(struct ionod *iop) { - register int iof; - register unsigned char *ion; + int iof; + unsigned char *ion; while (iop) { diff --git a/usr/src/cmd/sh/hash.c b/usr/src/cmd/sh/hash.c index 206583a846..28456e2de6 100644 --- a/usr/src/cmd/sh/hash.c +++ b/usr/src/cmd/sh/hash.c @@ -19,11 +19,17 @@ * * CDDL HEADER END */ + +/* + * Copyright 1990 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.3.2.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" #include "hash.h" #include "defs.h" @@ -56,7 +62,8 @@ static unsigned int shift; static unsigned int crunch(); -hcreate() +void +hcreate(void) { unsigned char c = (unsigned char)~0; /* A byte full of 1's */ int j; diff --git a/usr/src/cmd/sh/hash.h b/usr/src/cmd/sh/hash.h index 2fb6d2e05f..dad7833a8d 100644 --- a/usr/src/cmd/sh/hash.h +++ b/usr/src/cmd/sh/hash.h @@ -19,14 +19,25 @@ * * CDDL HEADER END */ + +/* + * Copyright 1990 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ +#ifndef _HASH_H +#define _HASH_H -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.4.1.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ +#ifdef __cplusplus +extern "C" { +#endif #define HASHZAP 0x03FF #define CDMARK 0x8000 @@ -37,7 +48,7 @@ #define COMMAND 0x0400 #define REL_COMMAND 0x0800 #define PATH_COMMAND 0x1000 -#define DOT_COMMAND 0x8800 /* CDMARK | REL_COMMAND */ +#define DOT_COMMAND 0x8800 /* CDMARK | REL_COMMAND */ #define hashtype(x) (x & 0x1F00) #define hashdata(x) (x & 0x00FF) @@ -54,4 +65,10 @@ typedef struct entry extern ENTRY *hfind(); extern ENTRY *henter(); -extern int hcreate(); +extern void hcreate(void); + +#ifdef __cplusplus +} +#endif + +#endif /* !_HASH_H */ diff --git a/usr/src/cmd/sh/hashserv.c b/usr/src/cmd/sh/hashserv.c index da80d3a2a9..110f4cf8c7 100644 --- a/usr/src/cmd/sh/hashserv.c +++ b/usr/src/cmd/sh/hashserv.c @@ -19,14 +19,16 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ +/* + * Copyright 1990 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ -/* Portions Copyright(c) 1988, Sun Microsystems, Inc. */ -/* All Rights Reserved. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.10.5.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -45,15 +47,16 @@ static int multrel; static struct entry relcmd; static int argpath(); +static void pr_path(unsigned char *, int); short pathlook(com, flg, arg) unsigned char *com; int flg; - register struct argnod *arg; + struct argnod *arg; { - register unsigned char *name = com; - register ENTRY *h; + unsigned char *name = com; + ENTRY *h; ENTRY hentry; int count = 0; @@ -213,11 +216,11 @@ hashpr() hscan(hashout); } - -set_dotpath() +void +set_dotpath(void) { - register unsigned char *path; - register int cnt = 1; + unsigned char *path; + int cnt = 1; dotpath = 10000; path = getpath(""); @@ -243,9 +246,8 @@ set_dotpath() multrel = 0; } - -hash_func(name) - unsigned char *name; +void +hash_func(unsigned char *name) { ENTRY *h; ENTRY hentry; @@ -264,8 +266,8 @@ hash_func(name) } } -func_unhash(name) - unsigned char *name; +void +func_unhash(unsigned char *name) { ENTRY *h; int i; @@ -313,11 +315,11 @@ hash_cmd(name) /* * Return 0 if found, 1 if not. */ -what_is_path(name) - register unsigned char *name; +int +what_is_path(unsigned char *name) { - register ENTRY *h; - int cnt; + ENTRY *h; + int cnt; short hashval; h = hfind(name); @@ -390,13 +392,11 @@ what_is_path(name) } } - -findpath(name, oldpath) - register unsigned char *name; - int oldpath; +int +findpath(unsigned char *name, int oldpath) { - register unsigned char *path; - register int count = 1; + unsigned char *path; + int count = 1; unsigned char *p; int ok = 1; @@ -450,10 +450,8 @@ findpath(name, oldpath) * a non-regular file as executable. */ -chk_access(name, mode, regflag) -register unsigned char *name; -mode_t mode; -int regflag; +int +chk_access(unsigned char *name, mode_t mode, int regflag) { static int flag; static uid_t euid; @@ -485,12 +483,10 @@ int regflag; return(errno == EACCES ? 3 : 1); } - -pr_path(name, count) - register unsigned char *name; - int count; +static void +pr_path(unsigned char *name, int count) { - register unsigned char *path; + unsigned char *path; path = getpath(name); @@ -502,12 +498,11 @@ pr_path(name, count) } -static -argpath(arg) - register struct argnod *arg; +static int +argpath(struct argnod *arg) { - register unsigned char *s; - register unsigned char *start; + unsigned char *s; + unsigned char *start; while (arg) { diff --git a/usr/src/cmd/sh/io.c b/usr/src/cmd/sh/io.c index d6443f405b..52f613f74e 100644 --- a/usr/src/cmd/sh/io.c +++ b/usr/src/cmd/sh/io.c @@ -19,22 +19,23 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, 2001 by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.10.2.1 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ #include "defs.h" #include "dup.h" +#include <stdio.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> @@ -44,10 +45,10 @@ short topfd; /* ======== input output and file copying ======== */ -initf(fd) -int fd; +void +initf(int fd) { - register struct fileblk *f = standin; + struct fileblk *f = standin; f->fdes = fd; f->fsiz = ((flags & oneflg) == 0 ? BUFFERSIZE : 1); @@ -58,10 +59,10 @@ int fd; f->feof = FALSE; } -estabf(s) -register unsigned char *s; +int +estabf(unsigned char *s) { - register struct fileblk *f; + struct fileblk *f; (f = standin)->fdes = -1; f->fend = length(s) + (f->fnxt = s); @@ -71,10 +72,10 @@ register unsigned char *s; return (f->feof = (s == 0)); } -push(af) -struct fileblk *af; +void +push(struct fileblk *af) { - register struct fileblk *f; + struct fileblk *f; (f = af)->fstak = standin; f->feof = 0; @@ -82,9 +83,10 @@ struct fileblk *af; standin = f; } -pop() +int +pop(void) { - register struct fileblk *f; + struct fileblk *f; if ((f = standin)->fstak) { @@ -98,16 +100,16 @@ pop() struct tempblk *tmpfptr; -pushtemp(fd, tb) - int fd; - struct tempblk *tb; +void +pushtemp(int fd, struct tempblk *tb) { tb->fdes = fd; tb->fstak = tmpfptr; tmpfptr = tb; } -poptemp() +int +poptemp(void) { if (tmpfptr){ close(tmpfptr->fdes); @@ -117,18 +119,17 @@ poptemp() return (FALSE); } -chkpipe(pv) -int *pv; +void +chkpipe(int *pv) { if (pipe(pv) < 0 || pv[INPIPE] < 0 || pv[OTPIPE] < 0) error(piperr); } -chkopen(idf, mode) -unsigned char *idf; -int mode; +int +chkopen(unsigned char *idf, int mode) { - register int rc; + int rc; if ((rc = open((char *)idf, mode, 0666)) < 0) failed(idf, badopen); @@ -141,8 +142,8 @@ int mode; * then closed. If f2 is descriptor 0, modify the global ioset variable * accordingly. */ -renamef(f1, f2) -register int f1, f2; +void +renamef(int f1, int f2) { #ifdef RES if (f1 != f2) @@ -169,10 +170,10 @@ register int f1, f2; #endif } -create(s) -unsigned char *s; +int +create(unsigned char *s) { - register int rc; + int rc; if ((rc = creat((char *)s, 0666)) < 0) failed(s, badcreate); @@ -181,16 +182,29 @@ unsigned char *s; } -tmpfil(tb) - struct tempblk *tb; +int +tmpfil(struct tempblk *tb) { int fd; + int len; + size_t size_left = TMPOUTSZ - tmpout_offset; /* make sure tmp file does not already exist. */ do { - itos(serial++); - movstr(numbuf, tmpname); - fd = open((char *)tmpout, O_RDWR|O_CREAT|O_EXCL, 0666); + len = snprintf((char *)&tmpout[tmpout_offset], size_left, + "%u", serial); + fd = open((char *)tmpout, O_RDWR|O_CREAT|O_EXCL, 0600); + serial++; + if ((serial >= UINT_MAX) || (len >= size_left)) { + /* + * We've already cycled through all the possible + * numbers or the tmp file name is being + * truncated anyway (although TMPOUTSZ should be + * big enough), so start over. + */ + serial = 0; + break; + } } while ((fd == -1) && (errno == EEXIST)); if (fd != -1) { pushtemp(fd, tb); @@ -198,7 +212,6 @@ tmpfil(tb) } else failed(tmpout, badcreate); - } /* @@ -207,12 +220,12 @@ tmpfil(tb) extern BOOL nosubst; #define CPYSIZ 512 -copy(ioparg) -struct ionod *ioparg; +void +copy(struct ionod *ioparg) { - register unsigned char *cline; - register unsigned char *clinep; - register struct ionod *iop; + unsigned char *cline; + unsigned char *clinep; + struct ionod *iop; unsigned int c; unsigned char *ends; unsigned char *start; @@ -331,21 +344,31 @@ struct ionod *ioparg; } } - -link_iodocs(i) - struct ionod *i; +void +link_iodocs(struct ionod *i) { int r; + int len; + size_t size_left = TMPOUTSZ - tmpout_offset; - while (i) - { + while (i) { free(i->iolink); /* make sure tmp file does not already exist. */ do { - itos(serial++); - movstr(numbuf, tmpname); + len = snprintf((char *)&tmpout[tmpout_offset], + size_left, "%u", serial); + serial++; r = link(i->ioname, (char *)tmpout); + if ((serial >= UINT_MAX) || (len >= size_left)) { + /* + * We've already cycled through all the possible + * numbers or the tmp file name is being + * truncated anyway, so start over. + */ + serial = 0; + break; + } } while (r == -1 && errno == EEXIST); if (r != -1) { @@ -357,9 +380,8 @@ link_iodocs(i) } } - -swap_iodoc_nm(i) - struct ionod *i; +void +swap_iodoc_nm(struct ionod *i) { while (i) { @@ -371,22 +393,20 @@ swap_iodoc_nm(i) } } - -savefd(fd) - int fd; +int +savefd(int fd) { - register int f; + int f; f = fcntl(fd, F_DUPFD, 10); return (f); } - -restore(last) - register int last; +void +restore(int last) { - register int i; - register int dupfd; + int i; + int dupfd; for (i = topfd - 1; i >= last; i--) { diff --git a/usr/src/cmd/sh/jobs.c b/usr/src/cmd/sh/jobs.c index 0ed3f1a171..7049cf077e 100644 --- a/usr/src/cmd/sh/jobs.c +++ b/usr/src/cmd/sh/jobs.c @@ -19,14 +19,12 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2001 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ #pragma ident "%Z%%M% %I% %E% SMI" /* @@ -97,6 +95,8 @@ static struct job *jobcur, /* active jobs listed in currency order */ *thisjob, *joblst; /* active jobs listed in job ID order */ +static void printjob(struct job *, int); + pid_t tcgetpgrp(fd) { @@ -115,10 +115,9 @@ pid_t pgid; } static struct job * -pgid2job(pgid) -register pid_t pgid; +pgid2job(pid_t pgid) { - register struct job *jp; + struct job *jp; for (jp = joblst; jp != 0 && jp->j_pid != pgid; jp = jp->j_nxtp) continue; @@ -127,13 +126,10 @@ register pid_t pgid; } static struct job * -str2job(cmd, job, mustbejob) -register char *cmd; -register char *job; -int mustbejob; +str2job(char *cmd, char *job, int mustbejob) { - register struct job *jp, *njp; - register i; + struct job *jp, *njp; + int i; if (*job != '%') jp = pgid2job(stoi(job)); @@ -146,8 +142,8 @@ int mustbejob; for (jp = joblst; jp && jp->j_jid != i; jp = jp->j_nxtp) continue; } else if (*job == '?') { - register j; - register char *p; + int j; + char *p; i = strlen(++job); jp = 0; for (njp = jobcur; njp; njp = njp->j_curp) { @@ -156,7 +152,8 @@ int mustbejob; for (p = njp->j_cmd, j = strlen(p); j >= i; p++, j--) { if (strncmp(job, p, i) == 0) { if (jp != 0) - failed(cmd, ambiguous); + failed((unsigned char *)cmd, + ambiguous); jp = njp; break; } @@ -170,24 +167,23 @@ int mustbejob; continue; if (strncmp(job, njp->j_cmd, i) == 0) { if (jp != 0) - failed(cmd, ambiguous); + failed((unsigned char *)cmd, ambiguous); jp = njp; } } } if (mustbejob && (jp == 0 || jp->j_jid == 0)) - failed(cmd, nosuchjob); + failed((unsigned char *)cmd, nosuchjob); return (jp); } static void -freejob(jp) -register struct job *jp; +freejob(struct job *jp) { - register struct job **njp; - register struct job **cjp; + struct job **njp; + struct job **cjp; for (njp = &joblst; *njp != jp; njp = &(*njp)->j_nxtp) continue; @@ -208,10 +204,11 @@ register struct job *jp; * to exit, but needs to wait until the fg job * is done. */ -collect_fg_job() +void +collect_fg_job(void) { - register struct job *jp; - register pid_t pid; + struct job *jp; + pid_t pid; int stat; for (jp = joblst; jp; jp = jp->j_nxtp) @@ -240,11 +237,7 @@ collect_fg_job() */ static int -statjob(jp, stat, fg, rc) -register struct job *jp; -register stat; -int fg; -int rc; +statjob(struct job *jp, int stat, int fg, int rc) { pid_t tgid; int done = 0; @@ -332,7 +325,7 @@ static void collectjobs(wnohang) { pid_t pid; - register struct job *jp; + struct job *jp; int stat, n; int wflags; @@ -353,12 +346,12 @@ collectjobs(wnohang) void freejobs() { - register struct job *jp; + struct job *jp; collectjobs(WNOHANG); if (jobnote) { - register int savefd = setb(2); + int savefd = setb(2); for (jp = joblst; jp; jp = jp->j_nxtp) { if (jp->j_flag & J_NOTIFY) { if (jp->j_jid) @@ -381,8 +374,7 @@ freejobs() } static void -waitjob(jp) -register struct job *jp; +waitjob(struct job *jp) { int stat; int done; @@ -421,7 +413,7 @@ int settgid(new, expected) pid_t new, expected; { - register pid_t current = tcgetpgrp(0); + pid_t current = tcgetpgrp(0); if (current != expected) return (current); @@ -433,11 +425,10 @@ pid_t new, expected; } static void -restartjob(jp, fg) -register struct job *jp; +restartjob(struct job *jp, int fg) { if (jp != jobcur) { - register struct job *t; + struct job *t; for (t = jobcur; t->j_curp != jp; t = t->j_curp); t->j_curp = jp->j_curp; jp->j_curp = jobcur; @@ -468,9 +459,8 @@ register struct job *jp; } } -static -printjob(jp, propts) -register struct job *jp; +static void +printjob(struct job *jp, int propts) { int sp = 0; @@ -604,7 +594,7 @@ int check_if; return (1); if (check_if && jobcnt && eofflg++ == 0) { - register struct job *jp; + struct job *jp; if (check_if & JOB_STOPPED) { for (jp = joblst; jp; jp = jp->j_nxtp) { if (jp->j_jid && (jp->j_flag & J_STOPPED)) { @@ -645,13 +635,11 @@ deallocjob() jobcnt--; } -allocjob(cmd, cwd, monitor) -register char *cmd; -register unchar *cwd; -int monitor; +void +allocjob(char *cmd, unchar *cwd, int monitor) { - register struct job *jp, **jpp; - register int jid, cmdlen, cwdlen; + struct job *jp, **jpp; + int jid, cmdlen, cwdlen; cmdlen = strlen(cmd) + 1; if (cmd[cmdlen-2] == '&') { @@ -685,9 +673,10 @@ int monitor; thisjob = jp; } -clearjobs() +void +clearjobs(void) { - register struct job *jp, *sjp; + struct job *jp, *sjp; for (jp = joblst; jp; jp = sjp) { sjp = jp->j_nxtp; @@ -700,8 +689,8 @@ clearjobs() } -makejob(monitor, fg) -int monitor, fg; +void +makejob(int monitor, int fg) { if (monitor) { mypgid = mypid; @@ -733,7 +722,7 @@ pid_t pid; int fg; { - register propts; + int propts; thisjob->j_nxtp = *nextjob; *nextjob = thisjob; @@ -772,9 +761,9 @@ sysjobs(argc, argv) int argc; char *argv[]; { - register char *cmd = *argv; - register struct job *jp; - register propts, c; + char *cmd = *argv; + struct job *jp; + int propts, c; extern int opterr, i; int savoptind = optind; int loptind = -1; @@ -787,7 +776,7 @@ char *argv[]; propts = 0; if ((flags & jcflg) == 0) - failed(cmd, nojc); + failed((unsigned char *)cmd, nojc); while ((c = getopt(argc, argv, "lpx")) != -1) { if (propts) { @@ -820,8 +809,8 @@ err: return; if (propts == -1) { - register unsigned char *bp; - register char *cp; + unsigned char *bp; + char *cp; unsigned char *savebp; for (savebp = bp = locstak(); loptind < argc; loptind++) { cp = argv[loptind]; @@ -863,16 +852,14 @@ err: /* * the builtin "fg" and "bg" commands */ - -sysfgbg(argc, argv) -int argc; -char *argv[]; +void +sysfgbg(int argc, char *argv[]) { - register char *cmd = *argv; - register fg; + char *cmd = *argv; + int fg; if ((flags & jcflg) == 0) - failed(cmd, nojc); + failed((unsigned char *)cmd, nojc); fg = eq("fg", cmd); @@ -880,7 +867,7 @@ char *argv[]; struct job *jp; for (jp = jobcur; ; jp = jp->j_curp) { if (jp == 0) - failed(cmd, nocurjob); + failed((unsigned char *)cmd, nocurjob); if (jp->j_jid) break; } @@ -902,8 +889,8 @@ syswait(argc, argv) int argc; char *argv[]; { - register char *cmd = *argv; - register struct job *jp; + char *cmd = *argv; + struct job *jp; int stat; int wflags; @@ -925,18 +912,15 @@ char *argv[]; } } -static -sigv(cmd, sig, args) - char *cmd; - int sig; - char *args; +static void +sigv(char *cmd, int sig, char *args) { int pgrp = 0; int stopme = 0; pid_t id; if (*args == '%') { - register struct job *jp; + struct job *jp; jp = str2job(cmd, args, 1); id = jp->j_pgid; pgrp++; @@ -1003,20 +987,18 @@ sigv(cmd, sig, args) } -sysstop(argc, argv) -int argc; -char *argv[]; +void +sysstop(int argc, char *argv[]) { char *cmd = *argv; if (argc <= 1) - failed(usage, stopuse); + failed((unsigned char *)usage, stopuse); while (*++argv) sigv(cmd, SIGSTOP, *argv); } -syskill(argc, argv) -int argc; -char *argv[]; +void +syskill(int argc, char *argv[]) { char *cmd = *argv; int sig = SIGTERM; @@ -1030,9 +1012,9 @@ char *argv[]; if (argc == 2) { - register i; - register cnt = 0; - register char sep = 0; + int i; + int cnt = 0; + char sep = 0; char buf[12]; if (!eq(argv[1], "-l")) { @@ -1067,11 +1049,10 @@ char *argv[]; } -syssusp(argc, argv) -int argc; -char *argv[]; +void +syssusp(int argc, char *argv[]) { if (argc != 1) - failed(argv[0], badopt); + failed((unsigned char *)argv[0], badopt); sigv(argv[0], SIGSTOP, "0"); } diff --git a/usr/src/cmd/sh/macro.c b/usr/src/cmd/sh/macro.c index 4b495a108e..938b69125e 100644 --- a/usr/src/cmd/sh/macro.c +++ b/usr/src/cmd/sh/macro.c @@ -39,15 +39,16 @@ static unsigned char quote; /* used locally */ static unsigned char quoted; /* used locally */ static int getch(); +static void comsubst(int); +static void flush(int); static void -copyto(endch, trimflag) -int trimflag; /* flag to check if argument will be trimmed */ -register unsigned char endch; +copyto(unsigned char endch, int trimflag) +/* trimflag - flag to check if argument will be trimmed */ { - register unsigned int c; - register unsigned int d; - register unsigned char *pc; + unsigned int c; + unsigned int d; + unsigned char *pc; while ((c = getch(endch, trimflag)) != endch && c) if (quote) { @@ -133,14 +134,13 @@ register unsigned char endch; error(badsub); } -static -skipto(endch) -register unsigned char endch; +static void +skipto(unsigned char endch) { /* * skip chars up to } */ - register unsigned int c; + unsigned int c; while ((c = readwc()) && c != endch) { @@ -170,7 +170,7 @@ int trimflag; /* flag to check if an argument is going to be trimmed, here docum output is never trimmed */ { - register unsigned int d; + unsigned int d; int atflag; /* flag to check if $@ has already been seen within double quotes */ retry: @@ -188,7 +188,7 @@ retry: int dolg = 0; BOOL bra; BOOL nulflg; - register unsigned char *argp, *v; + unsigned char *argp, *v; unsigned char idb[2]; unsigned char *id = idb; @@ -296,7 +296,7 @@ retry: } else { while (c = *v) { wchar_t wc; - register int length; + int length; if ((length = mbtowc(&wc, (char *)v, MB_LEN_MAX)) <= 0) length = 1; @@ -336,7 +336,8 @@ retry: if (c == '?') { if(trimflag) trim(argp); - failed(id, *argp ? argp : (unsigned char *)badparam); + failed(id, *argp ? (const char *)argp : + badparam); } else if (c == '=') { @@ -352,7 +353,7 @@ retry: usestak(); while(c = *argp) { wchar_t wc; - register int len; + int len; if ((len = mbtowc(&wc, (char *)argp, MB_LEN_MAX)) <= 0) len = 1; @@ -416,8 +417,8 @@ unsigned char *as; * Strip "" and do $ substitution * Leaves result on top of stack */ - register BOOL savqu = quoted; - register unsigned char savq = quote; + BOOL savqu = quoted; + unsigned char savq = quote; struct filehdr fb; push(&fb); @@ -445,16 +446,17 @@ unsigned char *as; /* Save file descriptor for command substitution */ int savpipe = -1; -comsubst(trimflag) -int trimflag; /* used to determine if argument will later be trimmed */ +static void +comsubst(int trimflag) +/* trimflag - used to determine if argument will later be trimmed */ { /* * command substn */ struct fileblk cb; - register unsigned int d; + unsigned int d; int strlngth = staktop - stakbot; - register unsigned char *oldstaktop; + unsigned char *oldstaktop; unsigned char *savptr = fixstak(); unsigned char *pc; @@ -485,14 +487,14 @@ int trimflag; /* used to determine if argument will later be trimmed */ } } { - register unsigned char *argc; + unsigned char *argc; argc = fixstak(); push(&cb); estabf(argc); /* read from string */ } { - register struct trenod *t; + struct trenod *t; int pv[2]; /* @@ -512,7 +514,7 @@ int trimflag; /* used to determine if argument will later be trimmed */ oldstaktop = staktop = stakbot + strlngth; while (d = readwc()) { if(quote || (d == '\\' && trimflag)) { - register unsigned char *rest; + unsigned char *rest; /* quote output from command subst. if within double quotes or backslash part of output */ rest = readw(d); @@ -538,7 +540,7 @@ int trimflag; /* used to determine if argument will later be trimmed */ { extern pid_t parent; int stat; - register rc; + int rc; int ret = 0; while ((ret = waitpid(parent,&stat,0)) != parent) { @@ -570,12 +572,12 @@ int trimflag; /* used to determine if argument will later be trimmed */ #define CPYSIZ 512 -subst(in, ot) -int in, ot; +void +subst(int in, int ot) { - register unsigned int c; + unsigned int c; struct fileblk fb; - register int count = CPYSIZ; + int count = CPYSIZ; unsigned char *pc; push(&fb); @@ -618,7 +620,8 @@ int in, ot; pop(); } -flush(ot) +static void +flush(int ot) { write(ot, stakbot, staktop - stakbot); if (flags & execpr) diff --git a/usr/src/cmd/sh/main.c b/usr/src/cmd/sh/main.c index bf896289b3..751598d0c0 100644 --- a/usr/src/cmd/sh/main.c +++ b/usr/src/cmd/sh/main.c @@ -20,7 +20,7 @@ * CDDL HEADER END */ /* - * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -38,6 +38,7 @@ #include "defs.h" #include "sym.h" #include "timeout.h" +#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/wait.h> @@ -51,7 +52,7 @@ pid_t mypid, mypgid, mysid; static BOOL beenhere = FALSE; -unsigned char tmpout[20] = "/tmp/sh-"; +unsigned char tmpout[TMPOUTSZ]; struct fileblk stdfile; struct fileblk *standin = &stdfile; int mailchk = 0; @@ -69,18 +70,19 @@ char **execargs = (char **)(-2); #endif -static int exfile(); +static void exfile(); extern unsigned char *simple(); +static void Ldup(int, int); +void settmp(void); +void chkmail(void); +void setmail(unsigned char *); - -main(c, v, e) -int c; -char *v[]; -char *e[]; +int +main(int c, char *v[], char *e[]) { - register int rflag = ttyflg; + int rflag = ttyflg; int rsflag = 1; /* local restricted flag */ - register unsigned char *flagc = flagadr; + unsigned char *flagc = flagadr; struct namnod *n; mypid = getpid(); @@ -202,10 +204,10 @@ char *e[]; dolc--; if ((flags & privflg) == 0) { - register uid_t euid; - register gid_t egid; - register uid_t ruid; - register gid_t rgid; + uid_t euid; + gid_t egid; + uid_t ruid; + gid_t rgid; /* * Determine all of the user's id #'s for this process and @@ -258,7 +260,7 @@ char *e[]; * setup_env() may have set anything from parent shell to IFS. * Always set the default ifs to IFS. */ - assign(&ifsnod, sptbnl); + assign(&ifsnod, (unsigned char *)sptbnl); dfault(&mchknod, MAILCHECK); mailchk = stoi(mchknod.namval); @@ -266,7 +268,7 @@ char *e[]; /* initialize OPTIND for getopt */ n = lookup("OPTIND"); - assign(n, "1"); + assign(n, (unsigned char *)"1"); /* * make sure that option parsing starts * at first character @@ -360,9 +362,8 @@ char *e[]; done(0); } -static int -exfile(prof) -BOOL prof; +static void +exfile(int prof) { time_t mailtime = 0; /* Must not be a register variable */ time_t curtime = 0; @@ -444,7 +445,7 @@ BOOL prof; #endif { - register struct trenod *t; + struct trenod *t; t = cmd(NL, MTFLG); if (t == NULL && flags & ttyflg) freejobs(); @@ -457,22 +458,33 @@ BOOL prof; } } -chkpr() +void +chkpr(void) { if ((flags & prompt) && standin->fstak == 0) prs(ps2nod.namval); } -settmp() +void +settmp(void) { - int i; - i = ltos(mypid); + int len; serial = 0; - tmpname = movstr(numbuf + i, &tmpout[TMPNAM]); + if ((len = snprintf((char *)tmpout, TMPOUTSZ, "/tmp/sh%u", mypid)) >= + TMPOUTSZ) { + /* + * TMPOUTSZ should be big enough, but if it isn't, + * we'll at least try to create tmp files with + * a truncated tmpfile name at tmpout. + */ + tmpout_offset = TMPOUTSZ - 1; + } else { + tmpout_offset = len; + } } -Ldup(fa, fb) -register int fa, fb; +static void +Ldup(int fa, int fb) { #ifdef RES @@ -495,11 +507,11 @@ register int fa, fb; #endif } - -chkmail() +void +chkmail(void) { - register unsigned char *s = mailp; - register unsigned char *save; + unsigned char *s = mailp; + unsigned char *save; long *ptr = mod_time; unsigned char *start; @@ -550,12 +562,11 @@ chkmail() } } - -setmail(mailpath) - unsigned char *mailpath; +void +setmail(unsigned char *mailpath) { - register unsigned char *s = mailpath; - register int cnt = 1; + unsigned char *s = mailpath; + int cnt = 1; long *ptr; @@ -598,7 +609,8 @@ setwidth() } } -setmode(prof) +void +setmode(int prof) { /* * decide whether interactive diff --git a/usr/src/cmd/sh/name.c b/usr/src/cmd/sh/name.c index c76b80f48e..c5076955da 100644 --- a/usr/src/cmd/sh/name.c +++ b/usr/src/cmd/sh/name.c @@ -19,15 +19,15 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + #pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell @@ -39,11 +39,12 @@ extern BOOL chkid(); extern unsigned char *simple(); extern int mailchk; -static void namwalk(); +static void setname(unsigned char *, int); static void set_builtins_path(); static int patheq(); -static void dolocale(); +static void namwalk(struct namnod *); +static void dolocale(); struct namnod ps2nod = { @@ -111,15 +112,13 @@ struct namnod *namep = &mchknod; /* ======== variable and string handling ======== */ -syslook(w, syswds, n) - register unsigned char *w; - register struct sysnod syswds[]; - int n; +int +syslook(unsigned char *w, struct sysnod syswds[], int n) { int low; int high; int mid; - register int cond; + int cond; if (w == 0 || *w == 0) return(0); @@ -141,16 +140,15 @@ syslook(w, syswds, n) return(0); } -setlist(arg, xp) -register struct argnod *arg; -int xp; +void +setlist(struct argnod *arg, int xp) { if (flags & exportflg) xp |= N_EXPORT; while (arg) { - register unsigned char *s = mactrim(arg->argval); + unsigned char *s = mactrim(arg->argval); setname(s, xp); arg = arg->argnxt; if (flags & execpr) @@ -164,13 +162,11 @@ int xp; } } - -setname(argi, xp) /* does parameter assignments */ -unsigned char *argi; -int xp; +static void +setname(unsigned char *argi, int xp) /* does parameter assignments */ { - register unsigned char *argscan = argi; - register struct namnod *n; + unsigned char *argscan = argi; + struct namnod *n; if (letter(*argscan)) { @@ -199,25 +195,22 @@ int xp; } } -replace(a, v) -register unsigned char **a; -unsigned char *v; +void +replace(unsigned char **a, unsigned char *v) { free(*a); *a = make(v); } -dfault(n, v) -struct namnod *n; -unsigned char *v; +void +dfault(struct namnod *n, unsigned char *v) { if (n->namval == 0) assign(n, v); } -assign(n, v) -struct namnod *n; -unsigned char *v; +void +assign(struct namnod *n, unsigned char *v) { if (n->namflg & N_RDONLY) failed(n->namid, wtfailed); @@ -266,7 +259,7 @@ unsigned char *v; static void set_builtins_path() { - register unsigned char *path; + unsigned char *path; ucb_builtins = 0; path = getpath(""); @@ -288,35 +281,33 @@ set_builtins_path() } static int -patheq(component, dir) -register unsigned char *component; -register char *dir; +patheq(unsigned char *component, char *dir) { - register unsigned char c; + unsigned char c; for (;;) { c = *component++; if (c == COLON) c = '\0'; /* end of component of path */ - if (c != *dir++) - return(0); + if (c != *dir++) + return (0); if (c == '\0') return(1); } } -readvar(names) -unsigned char **names; +int +readvar(unsigned char **names) { struct fileblk fb; - register struct fileblk *f = &fb; + struct fileblk *f = &fb; unsigned char c[MULTI_BYTE_MAX+1]; - register int rc = 0; + int rc = 0; struct namnod *n = lookup(*names++); /* done now to avoid storage mess */ unsigned char *rel = (unsigned char *)relstak(); unsigned char *oldstak; - register unsigned char *pc, *rest; + unsigned char *pc, *rest; int d; push(f); @@ -424,7 +415,7 @@ unsigned char **names; } while (n) { - assign(n, nullstr); + assign(n, (unsigned char *)nullstr); if (*names) n = lookup(*names++); else @@ -449,9 +440,8 @@ unsigned char **names; return(rc); } -assnum(p, i) -unsigned char **p; -long i; +void +assnum(unsigned char **p, long i) { int j = ltos(i); replace(p, &numbuf[j]); @@ -461,7 +451,7 @@ unsigned char * make(v) unsigned char *v; { - register unsigned char *p; + unsigned char *p; if (v) { @@ -474,11 +464,10 @@ unsigned char *v; struct namnod * -lookup(nam) - register unsigned char *nam; +lookup(unsigned char *nam) { - register struct namnod *nscan = namep; - register struct namnod **prev; + struct namnod *nscan = namep; + struct namnod **prev; int LR; if (!chkid(nam)) @@ -512,7 +501,7 @@ BOOL chkid(nam) unsigned char *nam; { - register unsigned char *cp = nam; + unsigned char *cp = nam; if (!letter(*cp)) return(FALSE); @@ -527,17 +516,17 @@ unsigned char *nam; return(TRUE); } -static int (*namfn)(); -namscan(fn) - int (*fn)(); +static void (*namfn)(); + +void +namscan(void (*fn)()) { namfn = fn; namwalk(namep); } static void -namwalk(np) -register struct namnod *np; +namwalk(struct namnod *np) { if (np) { @@ -547,10 +536,10 @@ register struct namnod *np; } } -printnam(n) -struct namnod *n; +void +printnam(struct namnod *n) { - register unsigned char *s; + unsigned char *s; sigchk(); @@ -571,10 +560,9 @@ struct namnod *n; } static unsigned char * -staknam(n) -register struct namnod *n; +staknam(struct namnod *n) { - register unsigned char *p; + unsigned char *p; p = movstrstak(n->namid, staktop); p = movstrstak("=", p); @@ -584,10 +572,10 @@ register struct namnod *n; static int namec; -exname(n) - register struct namnod *n; +void +exname(struct namnod *n) { - register int flg = n->namflg; + int flg = n->namflg; if (flg & N_ENVCHG) { @@ -613,8 +601,8 @@ exname(n) } -printro(n) -register struct namnod *n; +void +printro(struct namnod *n) { if (n->namflg & N_RDONLY) { @@ -625,8 +613,8 @@ register struct namnod *n; } } -printexp(n) -register struct namnod *n; +void +printexp(struct namnod *n) { if (n->namflg & N_EXPORT) { @@ -637,9 +625,10 @@ register struct namnod *n; } } -setup_env() +void +setup_env(void) { - register unsigned char **e = environ; + unsigned char **e = environ; while (*e) setname(*e++, N_ENVNAM); @@ -648,21 +637,19 @@ setup_env() static unsigned char **argnam; -static -countnam(n) -struct namnod *n; +static void +countnam(struct namnod *n) { if (n->namval) namec++; } -static -pushnam(n) - register struct namnod *n; +static void +pushnam(struct namnod *n) { - register int flg = n->namflg; - register unsigned char *p; - register unsigned char *namval; + int flg = n->namflg; + unsigned char *p; + unsigned char *namval; if (((flg & N_ENVCHG) && (flg & N_EXPORT)) || (flg & N_FUNCTN)) namval = n->namval; @@ -692,7 +679,7 @@ pushnam(n) unsigned char ** local_setenv() { - register unsigned char **er; + unsigned char **er; namec = 0; namscan(countnam); @@ -711,9 +698,9 @@ setvars() struct namnod * findnam(nam) - register unsigned char *nam; + unsigned char *nam; { - register struct namnod *nscan = namep; + struct namnod *nscan = namep; int LR; if (!chkid(nam)) @@ -730,12 +717,11 @@ findnam(nam) return(0); } - -unset_name(name) - register unsigned char *name; +void +unset_name(unsigned char *name) { - register struct namnod *n; - register unsigned char call_dolocale = 0; + struct namnod *n; + unsigned char call_dolocale = 0; if (n = findnam(name)) { @@ -849,7 +835,7 @@ dolocale(nm) */ for (lv = 0, fe = 0; localevar[lv]; lv++) { if ((n = findnam(localevar[lv]))) { - register char *p, *q; + char *p, *q; if (!n->namval) continue; diff --git a/usr/src/cmd/sh/pwd.c b/usr/src/cmd/sh/pwd.c index 517f1341c8..bad1f9980b 100644 --- a/usr/src/cmd/sh/pwd.c +++ b/usr/src/cmd/sh/pwd.c @@ -19,11 +19,17 @@ * * CDDL HEADER END */ + +/* + * Copyright 1994 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.14.6.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -51,11 +57,11 @@ unsigned char cwdname[PATH_MAX+1]; static int didpwd = FALSE; -cwd(dir) - register unsigned char *dir; +void +cwd(unsigned char *dir) { - register unsigned char *pcwd; - register unsigned char *pdir; + unsigned char *pcwd; + unsigned char *pdir; /* First remove extra /'s */ @@ -242,9 +248,10 @@ cwdget() * Print the current working directory. */ -cwdprint() +void +cwdprint(void) { - register unsigned char *cp; + unsigned char *cp; cwd2(); if (didpwd == FALSE) { @@ -273,7 +280,7 @@ static void rmslash(string) unsigned char *string; { - register unsigned char *pstring; + unsigned char *pstring; pstring = string; while(*pstring) diff --git a/usr/src/cmd/sh/service.c b/usr/src/cmd/sh/service.c index a39967a882..4f704a6fbf 100644 --- a/usr/src/cmd/sh/service.c +++ b/usr/src/cmd/sh/service.c @@ -19,16 +19,16 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.22.5.1 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell @@ -42,22 +42,21 @@ #define ARGMK 01 static unsigned char *execs(); -static int gsort(); +static void gsort(); static int split(); +extern void makearg(struct argnod *); extern const char *sysmsg[]; extern short topfd; - /* * service routines for `execute' */ -initio(iop, save) - struct ionod *iop; - int save; +short +initio(struct ionod *iop, int save) { - register unsigned char *ion; - register int iof, fd; + unsigned char *ion; + int iof, fd; int ioufd; short lastfd; int newmode; @@ -139,8 +138,8 @@ unsigned char * getpath(s) unsigned char *s; { - register unsigned char *path, *newpath; - register int pathlen; + unsigned char *path, *newpath; + int pathlen; if (any('/', s)) { @@ -165,10 +164,10 @@ getpath(s) } } -pathopen(path, name) -register unsigned char *path, *name; +int +pathopen(unsigned char *path, unsigned char *name) { - register int f; + int f; do { @@ -178,15 +177,13 @@ register unsigned char *path, *name; } unsigned char * -catpath(path, name) -register unsigned char *path; -unsigned char *name; +catpath(unsigned char *path, unsigned char *name) { /* * leaves result on top of stack */ - register unsigned char *scanp = path; - register unsigned char *argp = locstak(); + unsigned char *scanp = path; + unsigned char *argp = locstak(); while (*scanp && *scanp != COLON) { @@ -214,10 +211,9 @@ unsigned char *name; } unsigned char * -nextpath(path) - register unsigned char *path; +nextpath(unsigned char *path) { - register unsigned char *scanp = path; + unsigned char *scanp = path; while (*scanp && *scanp != COLON) scanp++; @@ -228,21 +224,19 @@ nextpath(path) return (*scanp ? scanp : 0); } -static unsigned char *xecmsg; +static const char *xecmsg; static unsigned char **xecenv; -int -execa(at, pos) - unsigned char *at[]; - short pos; +void +execa(unsigned char *at[], short pos) { - register unsigned char *path; - register unsigned char **t = at; + unsigned char *path; + unsigned char **t = at; int cnt; if ((flags & noexec) == 0) { - xecmsg = (unsigned char *)notfound; + xecmsg = notfound; path = getpath(*t); xecenv = local_setenv(); @@ -264,13 +258,11 @@ execa(at, pos) } static unsigned char * -execs(ap, t) -unsigned char *ap; -register unsigned char *t[]; +execs(unsigned char *ap, unsigned char *t[]) { - register int pfstatus = NOATTRS; - register unsigned char *p, *prefix; - unsigned char *savptr; + int pfstatus = NOATTRS; + unsigned char *p, *prefix; + unsigned char *savptr; prefix = catpath(ap, t[0]); trim(p = curstak()); @@ -345,7 +337,7 @@ register unsigned char *t[]; failed(p, libmax); default: - xecmsg = (unsigned char *)badexec; + xecmsg = badexec; case ENOENT: return (prefix); } @@ -353,12 +345,12 @@ register unsigned char *t[]; BOOL nosubst; -trim(at) -unsigned char *at; +void +trim(unsigned char *at) { - register unsigned char *last; - register unsigned char *current; - register unsigned char c; + unsigned char *last; + unsigned char *current; + unsigned char c; int len; wchar_t wc; @@ -403,12 +395,13 @@ unsigned char *at; } /* Same as trim, but only removes backlashes before slashes */ +void trims(at) unsigned char *at; { - register unsigned char *last; - register unsigned char *current; - register unsigned char c; + unsigned char *last; + unsigned char *current; + unsigned char c; int len; wchar_t wc; @@ -460,7 +453,7 @@ unsigned char * mactrim(s) unsigned char *s; { - register unsigned char *t = macro(s); + unsigned char *t = macro(s); trim(t); return (t); @@ -470,9 +463,9 @@ unsigned char ** scan(argn) int argn; { - register struct argnod *argp = + struct argnod *argp = (struct argnod *)(Rcheat(gchain) & ~ARGMK); - register unsigned char **comargn, **comargm; + unsigned char **comargn, **comargm; comargn = (unsigned char **)getstak(BYTESPERWORD * argn + BYTESPERWORD); comargm = comargn += argn; @@ -494,12 +487,12 @@ int argn; return (comargn); } -static int +static void gsort(from, to) unsigned char *from[], *to[]; { int k, m, n; - register int i, j; + int i, j; if ((n = to - from) <= 1) return; @@ -512,7 +505,7 @@ unsigned char *from[], *to[]; { for (i = j; i >= 0; i -= m) { - register unsigned char **fromi; + unsigned char **fromi; fromi = &from[i]; if (cf(fromi[m], fromi[0]) > 0) @@ -535,12 +528,13 @@ unsigned char *from[], *to[]; /* * Argument list generation */ +int getarg(ac) struct comnod *ac; { - register struct argnod *argp; - register int count = 0; - register struct comnod *c; + struct argnod *argp; + int count = 0; + struct comnod *c; if (c = ac) { @@ -558,12 +552,12 @@ static int split(s) /* blank interpretation routine */ unsigned char *s; { - register unsigned char *argp; - register int c; + unsigned char *argp; + int c; int count = 0; for (;;) { - register int length; + int length; sigchk(); argp = locstak() + BYTESPERWORD; while (c = *s) { @@ -634,7 +628,7 @@ unsigned char *s; count += c; else { - makearg(argp); + makearg((struct argnod *)argp); count++; } gchain = (struct argnod *)((int)gchain | ARGMK); @@ -651,19 +645,20 @@ struct tms buffer; static clock_t before; static int shaccton; /* 0 implies do not write record on exit */ /* 1 implies write acct record on exit */ +static comp_t compress(clock_t); /* * suspend accounting until turned on by preacct() */ - -suspacct() +void +suspacct(void) { shaccton = 0; } -preacct(cmdadr) - unsigned char *cmdadr; +void +preacct(unsigned char *cmdadr) { unsigned char *simple(); @@ -678,8 +673,8 @@ preacct(cmdadr) } } - -doacct() +void +doacct(void) { int fd; clock_t after; @@ -703,11 +698,11 @@ doacct() * with 3 bits base-8 exponent, 13 bits fraction */ -compress(t) - register clock_t t; +static comp_t +compress(clock_t t) { - register exp = 0; - register rund = 0; + int exp = 0; + int rund = 0; while (t >= 8192) { diff --git a/usr/src/cmd/sh/stak.c b/usr/src/cmd/sh/stak.c index 6e1f90eb5f..5c6eac4674 100644 --- a/usr/src/cmd/sh/stak.c +++ b/usr/src/cmd/sh/stak.c @@ -41,8 +41,8 @@ unsigned char * getstak(asize) /* allocate requested stack */ int asize; { - register unsigned char *oldstak; - register int size; + unsigned char *oldstak; + int size; size = round(asize, BYTESPERWORD); oldstak = stakbot; @@ -73,7 +73,7 @@ void growstak(newtop) unsigned char *newtop; { - register unsigned incr; + unsigned incr; incr = (unsigned)round(newtop - brkend + 1, BYTESPERWORD); if (brkincr > incr) @@ -90,10 +90,9 @@ savstak() } unsigned char * -endstak(argp) /* tidy up after `locstak' */ -register unsigned char *argp; +endstak(unsigned char *argp) /* tidy up after `locstak' */ { - register unsigned char *oldstak; + unsigned char *oldstak; if (argp >= brkend) growstak(argp); @@ -105,8 +104,8 @@ register unsigned char *argp; return(oldstak); } -tdystak(x) /* try to bring stack back to x */ -register unsigned char *x; +void +tdystak(unsigned char *x) /* try to bring stack back to x */ { while ((unsigned char *)stakbsy > x) { @@ -117,7 +116,8 @@ register unsigned char *x; rmtemp(x); } -stakchk() +void +stakchk(void) { if ((brkend - stakbas) > BRKINCR + BRKINCR) setbrk(-BRKINCR); @@ -131,8 +131,7 @@ unsigned char *x; } unsigned char * -movstrstak(a, b) -register unsigned char *a, *b; +movstrstak(unsigned char *a, unsigned char *b) { do { @@ -148,11 +147,9 @@ register unsigned char *a, *b; * Return s1 */ unsigned char * -memcpystak(s1, s2, n) -register unsigned char *s1, *s2; -register int n; +memcpystak(unsigned char *s1, unsigned char *s2, int n) { - register unsigned char *os1 = s1; + unsigned char *os1 = s1; while (--n >= 0) { if (s1 >= brkend) diff --git a/usr/src/cmd/sh/string.c b/usr/src/cmd/sh/string.c index f046a3607f..b9191be47a 100644 --- a/usr/src/cmd/sh/string.c +++ b/usr/src/cmd/sh/string.c @@ -19,11 +19,17 @@ * * CDDL HEADER END */ + +/* + * Copyright 1995 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ -#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.8.2.1 */ +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -35,18 +41,16 @@ unsigned char * -movstr(a, b) -register unsigned char *a, *b; +movstr(unsigned char *a, unsigned char *b) { while (*b++ = *a++); return(--b); } -any(c, s) -wchar_t c; -unsigned char *s; +int +any(wchar_t c, unsigned char *s) { - register unsigned int d; + unsigned int d; while (d = *s++) { @@ -60,8 +64,8 @@ int anys(c, s) unsigned char *c, *s; { wchar_t f, e; - register wchar_t d; - register int n; + wchar_t d; + int n; if((n = mbtowc(&f, (char *)c, MULTI_BYTE_MAX)) <= 0) return(FALSE); d = f; @@ -74,8 +78,8 @@ unsigned char *c, *s; } } -int cf(s1, s2) -register unsigned char *s1, *s2; +int +cf(unsigned char *s1, unsigned char *s2) { while (*s1++ == *s2) if (*s2++ == 0) @@ -86,7 +90,7 @@ register unsigned char *s1, *s2; int length(as) unsigned char *as; { - register unsigned char *s; + unsigned char *s; if (s = as) while (*s++); @@ -94,9 +98,7 @@ unsigned char *as; } unsigned char * -movstrn(a, b, n) - register unsigned char *a, *b; - register int n; +movstrn(unsigned char *a, unsigned char *b, int n) { while ((n-- > 0) && *a) *b++ = *a++; diff --git a/usr/src/cmd/sh/test.c b/usr/src/cmd/sh/test.c index 513df5a3b5..c386e2b961 100644 --- a/usr/src/cmd/sh/test.c +++ b/usr/src/cmd/sh/test.c @@ -19,14 +19,14 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + #pragma ident "%Z%%M% %I% %E% SMI" /* @@ -39,12 +39,12 @@ #include <sys/stat.h> extern int lstat(); +void bfailed(unsigned char *, unsigned char *, unsigned char *) __NORETURN; int ap, ac; unsigned char **av; -test(argn, com) -unsigned char *com[]; -int argn; +int +test(int argn, unsigned char *com[]) { ac = argn; av = com; @@ -52,7 +52,7 @@ int argn; if (eq(com[0],"[")) { if (!eq(com[--ac], "]")) - failed("test", "] missing"); + failed((unsigned char *)"test", "] missing"); } com[ac] = 0; if (ac <= 1) @@ -70,12 +70,13 @@ nxtarg(mt) ap++; return(0); } - failed("test", "argument expected"); + failed((unsigned char *)"test", "argument expected"); } return(av[ap++]); } -exp() +int +exp(void) { int p1; unsigned char *p2; @@ -88,13 +89,14 @@ exp() return(p1 | exp()); /* if (!eq(p2, ")")) - failed("test", synmsg); */ + failed((unsigned char *)"test", synmsg); */ } ap--; return(p1); } -e1() +int +e1(void) { int p1; unsigned char *p2; @@ -108,7 +110,8 @@ e1() return(p1); } -e2() +int +e2(void) { if (eq(nxtarg(0), "!")) return(!e3()); @@ -116,10 +119,11 @@ e2() return(e3()); } -e3() +int +e3(void) { int p1; - register unsigned char *a; + unsigned char *a; unsigned char *p2; longlong_t ll_1, ll_2; @@ -128,7 +132,7 @@ e3() { p1 = exp(); if (!eq(nxtarg(0), ")")) - failed("test",") expected"); + failed((unsigned char *)"test", ") expected"); return(p1); } p2 = nxtarg(1); @@ -213,14 +217,12 @@ e3() if (eq(p2, "-le")) return (ll_1 <= ll_2); - bfailed(btest, badop, p2); + bfailed((unsigned char *)btest, (unsigned char *)badop, p2); /* NOTREACHED */ } - -ftype(f, field) -unsigned char *f; -int field; +int +ftype(unsigned char *f, int field) { struct stat statb; @@ -231,9 +233,8 @@ int field; return(0); } -filtyp(f,field) -unsigned char *f; -int field; +int +filtyp(unsigned char *f, int field) { struct stat statb; int (*statf)() = (field == S_IFLNK) ? lstat : stat; @@ -247,9 +248,8 @@ int field; } - -fsizep(f) -unsigned char *f; +int +fsizep(unsigned char *f) { struct stat statb; @@ -262,10 +262,8 @@ unsigned char *f; * fake diagnostics to continue to look like original * test(1) diagnostics */ -bfailed(s1, s2, s3) -unsigned char *s1; -unsigned char *s2; -unsigned char *s3; +void +bfailed(unsigned char *s1, unsigned char *s2, unsigned char *s3) { prp(); prs(s1); diff --git a/usr/src/cmd/sh/word.c b/usr/src/cmd/sh/word.c index f072f52b5a..6e4417a952 100644 --- a/usr/src/cmd/sh/word.c +++ b/usr/src/cmd/sh/word.c @@ -19,16 +19,16 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright (c) 1996, by Sun Microsystems, Inc. - * All rights reserved. + * Copyright 2000 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.11.2.2 */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + +#pragma ident "%Z%%M% %I% %E% SMI" /* * UNIX shell */ @@ -42,12 +42,12 @@ static int readb(struct fileblk *, int, int); /* ======== character handling for command lines ======== */ - -word() +int +word(void) { - register unsigned int c, d, cc; + unsigned int c, d, cc; struct argnod *arg = (struct argnod *)locstak(); - register unsigned char *argp = arg->argval; + unsigned char *argp = arg->argval; unsigned char *oldargp; int alpha = 1; unsigned char *pc; @@ -239,7 +239,7 @@ word() unsigned int skipwc() { - register unsigned int c; + unsigned int c; while (c = nextwc(), space(c)) ; @@ -248,7 +248,7 @@ unsigned int skipwc() unsigned int nextwc() { - register unsigned int c, d; + unsigned int c, d; retry: if ((d = readwc()) == ESCAPE) { diff --git a/usr/src/cmd/sh/xec.c b/usr/src/cmd/sh/xec.c index 3de1014bc6..97a5b0c9cd 100644 --- a/usr/src/cmd/sh/xec.c +++ b/usr/src/cmd/sh/xec.c @@ -19,15 +19,15 @@ * * CDDL HEADER END */ -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - /* - * Copyright 1996,2002-2003 Sun Microsystems, Inc. All rights reserved. + * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + #pragma ident "%Z%%M% %I% %E% SMI" /* * @@ -45,17 +45,21 @@ pid_t parent; -/* ======== command execution ======== */ +void execprint(unsigned char **); +/* ======== command execution ======== */ +/*VARARGS3*/ +int execute(argt, xflags, errorflg, pf1, pf2) -struct trenod *argt; -int *pf1, *pf2; +struct trenod *argt; +int xflags, errorflg; +int *pf1, *pf2; { /* * `stakbot' is preserved by this routine */ - register struct trenod *t; + struct trenod *t; unsigned char *sav = savstak(); sigchk(); @@ -63,8 +67,8 @@ int *pf1, *pf2; flags &= ~errflg; if ((t = argt) && execbrk == 0) { - register int treeflgs; - register unsigned char **com; + int treeflgs; + unsigned char **com; int type; short pos; @@ -258,7 +262,7 @@ int *pf1, *pf2; break; } sigchk(); - sleep(forkcnt); + sh_sleep(forkcnt); } if (parent) { @@ -363,7 +367,7 @@ int *pf1, *pf2; case TAND: case TORF: { - register xval; + int xval; xval = execute(lstptr(t)->lstlef, XEC_NOSTOP, 0); if ((xval == 0) == (type == TAND)) execute(lstptr(t)->lstrit, xflags|XEC_NOSTOP, errorflg); @@ -439,8 +443,8 @@ int *pf1, *pf2; case TSW: { - register unsigned char *r = mactrim(swptr(t)->swarg); - register struct regnod *regp; + unsigned char *r = mactrim(swptr(t)->swarg); + struct regnod *regp; regp = swptr(t)->swlst; while (regp) @@ -449,7 +453,7 @@ int *pf1, *pf2; while (rex) { - register unsigned char *s; + unsigned char *s; if (gmatch(r, s = macro(rex->argval)) || (trim(s), eq(r, s))) { @@ -474,9 +478,8 @@ int *pf1, *pf2; return(exitval); } -execexp(s, f) -unsigned char *s; -int f; +void +execexp(unsigned char *s, int f) { struct fileblk fb; @@ -492,10 +495,10 @@ int f; pop(); } -execprint(com) - unsigned char **com; +void +execprint(unsigned char **com) { - register int argn = 0; + int argn = 0; unsigned char *s; prs(execpmsg); |