From 5195be912eb257c05a0c97e561e72f01af2583ff Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 1 Sep 1996 10:22:36 +0000 Subject: Merge of 4.4-Lite2 sh source, plus some gcc -Wall cleaning. This is a merge of parallel duplicate work by Steve Price and myself. :-] There are some changes to the build that are my fault... mkinit.c was trying (poorly) to duplicate some of the work that make(1) is designed to do. The Makefile hackery is my fault too, the depend list was incomplete because of some explicit OBJS+= entries, so mkdep wasn't picking up their source file #includes. This closes a pile of /bin/sh PR's, but not all of them.. Submitted by: Steve Price , peter --- bin/sh/show.c | 127 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 95 insertions(+), 32 deletions(-) (limited to 'bin/sh/show.c') diff --git a/bin/sh/show.c b/bin/sh/show.c index 43fb34c..ac1992a 100644 --- a/bin/sh/show.c +++ b/bin/sh/show.c @@ -33,41 +33,57 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id$ + * $Id: show.c,v 1.2 1994/09/24 02:58:16 davidg Exp $ */ #ifndef lint -static char sccsid[] = "@(#)show.c 8.1 (Berkeley) 5/31/93"; +static char sccsid[] = "@(#)show.c 8.3 (Berkeley) 5/4/95"; #endif /* not lint */ #include +#if __STDC__ +#include +#else +#include +#endif + #include "shell.h" #include "parser.h" #include "nodes.h" #include "mystring.h" +#include "show.h" #ifdef DEBUG -static shtree(), shcmd(), sharg(), indent(); +static void shtree __P((union node *, int, char *, FILE*)); +static void shcmd __P((union node *, FILE *)); +static void sharg __P((union node *, FILE *)); +static void indent __P((int, char *, FILE *)); +static void trstring __P((char *)); +void showtree(n) union node *n; - { +{ trputs("showtree called\n"); shtree(n, 1, NULL, stdout); } -static +static void shtree(n, ind, pfx, fp) union node *n; + int ind; char *pfx; FILE *fp; - { +{ struct nodelist *lp; char *s; + if (n == NULL) + return; + indent(ind, pfx, fp); switch(n->type) { case NSEMI: @@ -110,11 +126,11 @@ binop: -static +static void shcmd(cmd, fp) union node *cmd; FILE *fp; - { +{ union node *np; int first; char *s; @@ -136,6 +152,7 @@ shcmd(cmd, fp) case NTOFD: s = ">&"; dftfd = 1; break; case NFROM: s = "<"; dftfd = 0; break; case NFROMFD: s = "<&"; dftfd = 0; break; + default: s = "*error*"; dftfd = 0; break; } if (np->nfile.fd != dftfd) fprintf(fp, "%d", np->nfile.fd); @@ -151,7 +168,7 @@ shcmd(cmd, fp) -static +static void sharg(arg, fp) union node *arg; FILE *fp; @@ -175,10 +192,15 @@ sharg(arg, fp) putc('$', fp); putc('{', fp); subtype = *++p; + if (subtype == VSLENGTH) + putc('#', fp); + while (*p != '=') putc(*p++, fp); + if (subtype & VSNUL) putc(':', fp); + switch (subtype & VSTYPE) { case VSNORMAL: putc('}', fp); @@ -195,6 +217,22 @@ sharg(arg, fp) case VSASSIGN: putc('=', fp); break; + case VSTRIMLEFT: + putc('#', fp); + break; + case VSTRIMLEFTMAX: + putc('#', fp); + putc('#', fp); + break; + case VSTRIMRIGHT: + putc('%', fp); + break; + case VSTRIMRIGHTMAX: + putc('%', fp); + putc('%', fp); + break; + case VSLENGTH: + break; default: printf("", subtype); } @@ -217,11 +255,12 @@ sharg(arg, fp) } -static +static void indent(amount, pfx, fp) + int amount; char *pfx; FILE *fp; - { +{ int i; for (i = 0 ; i < amount ; i++) { @@ -248,7 +287,10 @@ int debug = 0; #endif -trputc(c) { +void +trputc(c) + int c; +{ #ifdef DEBUG if (tracefile == NULL) return; @@ -258,23 +300,37 @@ trputc(c) { #endif } - -trace(fmt, a1, a2, a3, a4, a5, a6, a7, a8) - char *fmt; - { +void +#if __STDC__ +shtrace(const char *fmt, ...) +#else +shtrace(va_alist) + va_dcl +#endif +{ #ifdef DEBUG - if (tracefile == NULL) - return; - fprintf(tracefile, fmt, a1, a2, a3, a4, a5, a6, a7, a8); - if (strchr(fmt, '\n')) - fflush(tracefile); + va_list va; +#if __STDC__ + va_start(va, fmt); +#else + char *fmt; + va_start(va); + fmt = va_arg(va, char *); +#endif + if (tracefile != NULL) { + (void) vfprintf(tracefile, fmt, va); + if (strchr(fmt, '\n')) + (void) fflush(tracefile); + } + va_end(va); #endif } +void trputs(s) char *s; - { +{ #ifdef DEBUG if (tracefile == NULL) return; @@ -285,9 +341,10 @@ trputs(s) } +static void trstring(s) char *s; - { +{ register char *p; char c; @@ -327,9 +384,10 @@ backslash: putc('\\', tracefile); } +void trargs(ap) char **ap; - { +{ #ifdef DEBUG if (tracefile == NULL) return; @@ -345,24 +403,29 @@ trargs(ap) } +void opentrace() { char s[100]; - char *p; char *getenv(); +#ifdef O_APPEND int flags; +#endif #ifdef DEBUG if (!debug) return; #ifdef not_this_way - if ((p = getenv("HOME")) == NULL) { - if (geteuid() == 0) - p = "/"; - else - p = "/tmp"; + { + char *p; + if ((p = getenv("HOME")) == NULL) { + if (geteuid() == 0) + p = "/"; + else + p = "/tmp"; + } + scopy(p, s); + strcat(s, "/trace"); } - scopy(p, s); - strcat(s, "/trace"); #else scopy("./trace", s); #endif /* not_this_way */ -- cgit v1.1