Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Apr 2013 17:18:23 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r248980 - head/bin/sh
Message-ID:  <201304011718.r31HINZ9044401@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Mon Apr  1 17:18:22 2013
New Revision: 248980
URL: http://svnweb.freebsd.org/changeset/base/248980

Log:
  sh: Fix various compiler warnings.
  
  It now passes WARNS=7 with clang on i386.
  
  GCC 4.2.1 does not understand setjmp() properly so will always trigger
  -Wuninitialized. I will not add the volatile keywords to suppress this.

Modified:
  head/bin/sh/exec.c
  head/bin/sh/expand.c
  head/bin/sh/input.c
  head/bin/sh/input.h
  head/bin/sh/jobs.c
  head/bin/sh/main.c
  head/bin/sh/memalloc.c
  head/bin/sh/memalloc.h
  head/bin/sh/parser.c
  head/bin/sh/parser.h
  head/bin/sh/trap.c

Modified: head/bin/sh/exec.c
==============================================================================
--- head/bin/sh/exec.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/exec.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -165,7 +165,7 @@ tryexec(char *cmd, char **argv, char **e
 			}
 		}
 		*argv = cmd;
-		*--argv = _PATH_BSHELL;
+		*--argv = __DECONST(char *, _PATH_BSHELL);
 		execve(_PATH_BSHELL, argv, envp);
 	}
 	errno = e;
@@ -188,7 +188,7 @@ padvance(const char **path, const char *
 {
 	const char *p, *start;
 	char *q;
-	int len;
+	size_t len;
 
 	if (*path == NULL)
 		return NULL;

Modified: head/bin/sh/expand.c
==============================================================================
--- head/bin/sh/expand.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/expand.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -460,7 +460,7 @@ expbackq(union node *cmd, int quoted, in
 	int startloc = dest - stackblock();
 	char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
 	int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
-	int nnl;
+	size_t nnl;
 
 	INTOFF;
 	saveifs = ifsfirst;
@@ -1163,9 +1163,9 @@ nometa:
 static void
 expmeta(char *enddir, char *name)
 {
-	char *p;
-	char *q;
-	char *start;
+	const char *p;
+	const char *q;
+	const char *start;
 	char *endname;
 	int metaflag;
 	struct stat statb;
@@ -1229,7 +1229,7 @@ expmeta(char *enddir, char *name)
 			addfname(expdir);
 		return;
 	}
-	endname = p;
+	endname = name + (p - name);
 	if (start != name) {
 		p = name;
 		while (p < start) {
@@ -1412,7 +1412,8 @@ match_charclass(const char *p, wchar_t c
 	*end = NULL;
 	p++;
 	nameend = strstr(p, ":]");
-	if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p)
+	if (nameend == NULL || (size_t)(nameend - p) >= sizeof(name) ||
+	    nameend == p)
 		return 0;
 	memcpy(name, p, nameend - p);
 	name[nameend - p] = '\0';

Modified: head/bin/sh/input.c
==============================================================================
--- head/bin/sh/input.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/input.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$");
 
 struct strpush {
 	struct strpush *prev;	/* preceding string on stack */
-	char *prevstring;
+	const char *prevstring;
 	int prevnleft;
 	int prevlleft;
 	struct alias *ap;	/* if push was associated with an alias */
@@ -83,7 +83,7 @@ struct parsefile {
 	int fd;			/* file descriptor (or -1 if string) */
 	int nleft;		/* number of chars left in this line */
 	int lleft;		/* number of lines left in this buffer */
-	char *nextc;		/* next char in buffer */
+	const char *nextc;	/* next char in buffer */
 	char *buf;		/* input buffer */
 	struct strpush *strpush; /* for pushing strings at this level */
 	struct strpush basestrpush; /* so pushing one is fast */
@@ -93,7 +93,7 @@ struct parsefile {
 int plinno = 1;			/* input line number */
 int parsenleft;			/* copy of parsefile->nleft */
 MKINIT int parselleft;		/* copy of parsefile->lleft */
-char *parsenextc;		/* copy of parsefile->nextc */
+const char *parsenextc;		/* copy of parsefile->nextc */
 static char basebuf[BUFSIZ + 1];/* buffer for top level input file */
 static struct parsefile basepf = {	/* top level input file */
 	.nextc = basebuf,
@@ -185,7 +185,7 @@ retry:
 			nr = el_len;
 			if (nr > BUFSIZ)
 				nr = BUFSIZ;
-			memcpy(parsenextc, rl_cp, nr);
+			memcpy(parsefile->buf, rl_cp, nr);
 			if (nr != el_len) {
 				el_len -= nr;
 				rl_cp += nr;
@@ -194,7 +194,7 @@ retry:
 		}
 	} else
 #endif
-		nr = read(parsefile->fd, parsenextc, BUFSIZ);
+		nr = read(parsefile->fd, parsefile->buf, BUFSIZ);
 
 	if (nr <= 0) {
                 if (nr < 0) {
@@ -252,7 +252,7 @@ again:
 		}
 	}
 
-	q = p = parsenextc;
+	q = p = parsefile->buf + (parsenextc - parsefile->buf);
 
 	/* delete nul characters */
 	something = 0;
@@ -439,7 +439,7 @@ setinputfd(int fd, int push)
  */
 
 void
-setinputstring(char *string, int push)
+setinputstring(const char *string, int push)
 {
 	INTOFF;
 	if (push)

Modified: head/bin/sh/input.h
==============================================================================
--- head/bin/sh/input.h	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/input.h	Mon Apr  1 17:18:22 2013	(r248980)
@@ -42,7 +42,7 @@
  */
 extern int plinno;
 extern int parsenleft;		/* number of characters left in input buffer */
-extern char *parsenextc;	/* next character in input buffer */
+extern const char *parsenextc;	/* next character in input buffer */
 
 struct alias;
 struct parsefile;
@@ -55,7 +55,7 @@ void pungetc(void);
 void pushstring(char *, int, struct alias *);
 void setinputfile(const char *, int);
 void setinputfd(int, int);
-void setinputstring(char *, int);
+void setinputstring(const char *, int);
 void popfile(void);
 struct parsefile *getcurrentfile(void);
 void popfilesupto(struct parsefile *);

Modified: head/bin/sh/jobs.c
==============================================================================
--- head/bin/sh/jobs.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/jobs.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -668,7 +668,8 @@ makejob(union node *node __unused, int n
 				jobtab = jp;
 			}
 			jp = jobtab + njobs;
-			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0);
+			for (i = 4 ; --i >= 0 ; jobtab[njobs++].used = 0)
+				;
 			INTON;
 			break;
 		}
@@ -1005,7 +1006,7 @@ waitforjob(struct job *jp, int *origstat
 
 
 static void
-dummy_handler(int sig)
+dummy_handler(int sig __unused)
 {
 }
 

Modified: head/bin/sh/main.c
==============================================================================
--- head/bin/sh/main.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/main.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -80,7 +80,7 @@ struct jmploc main_handler;
 int localeisutf8, initial_localeisutf8;
 
 static void cmdloop(int);
-static void read_profile(char *);
+static void read_profile(const char *);
 static char *find_dot_file(char *);
 
 /*
@@ -239,7 +239,7 @@ cmdloop(int top)
  */
 
 static void
-read_profile(char *name)
+read_profile(const char *name)
 {
 	int fd;
 	const char *expandedname;

Modified: head/bin/sh/memalloc.c
==============================================================================
--- head/bin/sh/memalloc.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/memalloc.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -233,7 +233,8 @@ growstackblock(int min)
 
 	if (min < stacknleft)
 		min = stacknleft;
-	if (min >= INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
+	if ((unsigned int)min >=
+	    INT_MAX / 2 - ALIGN(sizeof(struct stack_block)))
 		error("Out of space");
 	min += stacknleft;
 	min += ALIGN(sizeof(struct stack_block));
@@ -327,7 +328,7 @@ makestrspace(int min, char *p)
 
 
 char *
-stputbin(const char *data, int len, char *p)
+stputbin(const char *data, size_t len, char *p)
 {
 	CHECKSTRSPACE(len, p);
 	memcpy(p, data, len);

Modified: head/bin/sh/memalloc.h
==============================================================================
--- head/bin/sh/memalloc.h	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/memalloc.h	Mon Apr  1 17:18:22 2013	(r248980)
@@ -57,7 +57,7 @@ void setstackmark(struct stackmark *);
 void popstackmark(struct stackmark *);
 char *growstackstr(void);
 char *makestrspace(int, char *);
-char *stputbin(const char *data, int len, char *p);
+char *stputbin(const char *data, size_t len, char *p);
 char *stputs(const char *data, char *p);
 
 
@@ -67,7 +67,7 @@ char *stputs(const char *data, char *p);
 #define grabstackblock(n) stalloc(n)
 #define STARTSTACKSTR(p)	p = stackblock()
 #define STPUTC(c, p)	do { if (p == sstrend) p = growstackstr(); *p++ = (c); } while(0)
-#define CHECKSTRSPACE(n, p)	{ if (sstrend - p < n) p = makestrspace(n, p); }
+#define CHECKSTRSPACE(n, p)	{ if ((size_t)(sstrend - p) < n) p = makestrspace(n, p); }
 #define USTPUTC(c, p)	(*p++ = (c))
 /*
  * STACKSTRNUL's use is where we want to be able to turn a stack

Modified: head/bin/sh/parser.c
==============================================================================
--- head/bin/sh/parser.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/parser.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -119,7 +119,7 @@ static void parseheredoc(void);
 static int peektoken(void);
 static int readtoken(void);
 static int xxreadtoken(void);
-static int readtoken1(int, char const *, char *, int);
+static int readtoken1(int, const char *, const char *, int);
 static int noexpand(char *);
 static void synexpect(int) __dead2;
 static void synerror(const char *) __dead2;
@@ -983,7 +983,7 @@ parsebackq(char *out, struct nodelist **
 	char *volatile str;
 	struct jmploc jmploc;
 	struct jmploc *const savehandler = handler;
-	int savelen;
+	size_t savelen;
 	int saveprompt;
 	const int bq_startlinno = plinno;
 	char *volatile ostr = NULL;
@@ -1300,7 +1300,8 @@ readcstyleesc(char *out)
 #define	PARSEARITH()	{goto parsearith; parsearith_return:;}
 
 static int
-readtoken1(int firstc, char const *initialsyntax, char *eofmark, int striptabs)
+readtoken1(int firstc, char const *initialsyntax, const char *eofmark,
+    int striptabs)
 {
 	int c = firstc;
 	char *out;
@@ -1521,7 +1522,7 @@ checkend: {
 		}
 		if (c == *eofmark) {
 			if (pfgets(line, sizeof line) != NULL) {
-				char *p, *q;
+				const char *p, *q;
 
 				p = line;
 				for (q = eofmark + 1 ; *q && *p == *q ; p++, q++);
@@ -2038,7 +2039,7 @@ getprompt(void *unused __unused)
 
 
 const char *
-expandstr(char *ps)
+expandstr(const char *ps)
 {
 	union node n;
 	struct jmploc jmploc;

Modified: head/bin/sh/parser.h
==============================================================================
--- head/bin/sh/parser.h	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/parser.h	Mon Apr  1 17:18:22 2013	(r248980)
@@ -82,4 +82,4 @@ void fixredir(union node *, const char *
 int goodname(const char *);
 int isassignment(const char *);
 char *getprompt(void *);
-const char *expandstr(char *);
+const char *expandstr(const char *);

Modified: head/bin/sh/trap.c
==============================================================================
--- head/bin/sh/trap.c	Mon Apr  1 17:15:04 2013	(r248979)
+++ head/bin/sh/trap.c	Mon Apr  1 17:18:22 2013	(r248980)
@@ -150,7 +150,7 @@ printsignals(void)
  * The trap builtin.
  */
 int
-trapcmd(int argc, char **argv)
+trapcmd(int argc __unused, char **argv)
 {
 	char *action;
 	int signo;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304011718.r31HINZ9044401>