From f654a3dea432f7c58d8b2d2fae9497edfcf563ae Mon Sep 17 00:00:00 2001
From: tg <tg@mirbsd.org>
Date: Wed, 5 Dec 2012 19:38:25 +0000
Subject: [PATCH] fix libFirm/cparser -Wsign-compare

---
 check.t |  6 +++---
 lex.c   |  6 +++---
 main.c  |  6 +++---
 misc.c  | 36 +++++++++++++++++++-----------------
 sh.h    |  6 +++---
 shf.c   |  6 +++---
 syn.c   |  4 ++--
 7 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/check.t b/check.t
index b1ce99c..6c101aa 100644
--- a/check.t
+++ b/check.t
@@ -1,4 +1,4 @@
-# $MirOS: src/bin/mksh/check.t,v 1.570 2012/12/04 01:18:24 tg Exp $
+# $MirOS: src/bin/mksh/check.t,v 1.571 2012/12/05 19:38:18 tg Exp $
 # $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
 # $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
 # $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
@@ -29,7 +29,7 @@
 # http://www.freebsd.org/cgi/cvsweb.cgi/src/tools/regression/bin/test/regress.sh?rev=HEAD
 
 expected-stdout:
-	@(#)MIRBSD KSH R41 2012/12/03
+	@(#)MIRBSD KSH R41 2012/12/05
 description:
 	Check version of shell.
 stdin:
@@ -38,7 +38,7 @@ name: KSH_VERSION
 category: shell:legacy-no
 ---
 expected-stdout:
-	@(#)LEGACY KSH R41 2012/12/03
+	@(#)LEGACY KSH R41 2012/12/05
 description:
 	Check version of legacy shell.
 stdin:
diff --git a/lex.c b/lex.c
index 4f44c7b..3aad519 100644
--- a/lex.c
+++ b/lex.c
@@ -23,7 +23,7 @@
 
 #include "sh.h"
 
-__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.173 2012/12/05 18:54:08 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/lex.c,v 1.174 2012/12/05 19:38:20 tg Exp $");
 
 /*
  * states while lexing word
@@ -272,8 +272,8 @@ yylex(int cf)
 				statep->nparen++;
 			else if (c == ')')
 				statep->nparen--;
-			else if (statep->nparen == 0 &&
-			    (c == /*{*/ '}' || c == statep->ls_adelim.delimiter)) {
+			else if (statep->nparen == 0 && (c == /*{*/ '}' ||
+			    c == (int)statep->ls_adelim.delimiter)) {
 				*wp++ = ADELIM;
 				*wp++ = c;
 				if (c == /*{*/ '}' || --statep->ls_adelim.num == 0)
diff --git a/main.c b/main.c
index 463d7b9..cee112f 100644
--- a/main.c
+++ b/main.c
@@ -34,7 +34,7 @@
 #include <locale.h>
 #endif
 
-__RCSID("$MirOS: src/bin/mksh/main.c,v 1.246 2012/11/30 20:19:13 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/main.c,v 1.247 2012/12/05 19:38:21 tg Exp $");
 
 extern char **environ;
 
@@ -254,7 +254,7 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
 #ifdef MKSH_BINSHREDUCED
 		/* set FSH if we're called as -sh or /bin/sh or so */
 		if (!strcmp(ccp, "sh"))
-			change_flag(FSH, OF_FIRSTTIME, 1);
+			change_flag(FSH, OF_FIRSTTIME, true);
 #endif
 	}
 
@@ -329,7 +329,7 @@ main_init(int argc, const char *argv[], Source **sp, struct block **lp)
 	 * by the environment or the user. Also, we want tab completion
 	 * on in vi by default.
 	 */
-	change_flag(FEMACS, OF_SPECIAL, 1);
+	change_flag(FEMACS, OF_SPECIAL, true);
 #if !MKSH_S_NOVI
 	Flag(FVITABCOMPLETE) = 1;
 #endif
diff --git a/misc.c b/misc.c
index fe8b395..cdbcff4 100644
--- a/misc.c
+++ b/misc.c
@@ -30,7 +30,7 @@
 #include <grp.h>
 #endif
 
-__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.203 2012/12/04 01:18:31 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.204 2012/12/05 19:38:22 tg Exp $");
 
 #define KSH_CHVT_FLAG
 #ifdef MKSH_SMALL
@@ -52,7 +52,7 @@ static const unsigned char *pat_scan(const unsigned char *,
     const unsigned char *, bool);
 static int do_gmatch(const unsigned char *, const unsigned char *,
     const unsigned char *, const unsigned char *);
-static const unsigned char *cclass(const unsigned char *, int);
+static const unsigned char *cclass(const unsigned char *, unsigned char);
 #ifdef KSH_CHVT_CODE
 static void chvt(const char *);
 #endif
@@ -226,13 +226,13 @@ getoptions(void)
 
 /* change a Flag(*) value; takes care of special actions */
 void
-change_flag(enum sh_flag f, int what, unsigned int newval)
+change_flag(enum sh_flag f, int what, bool newset)
 {
 	unsigned char oldval;
+	unsigned char newval;
 
 	oldval = Flag(f);
-	/* needed for tristates */
-	Flag(f) = newval ? 1 : 0;
+	Flag(f) = newval = (newset ? 1 : 0);
 #ifndef MKSH_UNEMPLOYED
 	if (f == FMONITOR) {
 		if (what != OF_CMDLINE && newval != oldval)
@@ -249,7 +249,7 @@ change_flag(enum sh_flag f, int what, unsigned int newval)
 		Flag(FVI) =
 #endif
 		    Flag(FEMACS) = Flag(FGMACS) = 0;
-		Flag(f) = (unsigned char)newval;
+		Flag(f) = newval;
 	} else
 #endif
 	  if (f == FPRIVILEGED && oldval && !newval) {
@@ -278,12 +278,12 @@ change_flag(enum sh_flag f, int what, unsigned int newval)
 #endif
 	} else if ((f == FPOSIX || f == FSH) && newval) {
 		Flag(FPOSIX) = Flag(FSH) = Flag(FBRACEEXPAND) = 0;
-		Flag(f) = (unsigned char)newval;
+		Flag(f) = newval;
 	}
 	/* Changing interactive flag? */
 	if (f == FTALKING) {
 		if ((what == OF_CMDLINE || what == OF_SET) && procpid == kshpid)
-			Flag(FTALKING_I) = (unsigned char)newval;
+			Flag(FTALKING_I) = newval;
 	}
 }
 
@@ -299,7 +299,8 @@ parse_args(const char **argv,
 {
 	static char cmd_opts[NELEM(options) + 5]; /* o:T:\0 */
 	static char set_opts[NELEM(options) + 6]; /* A:o;s\0 */
-	char set, *opts;
+	bool set;
+	char *opts;
 	const char *array = NULL;
 	Getopt go;
 	size_t i;
@@ -354,7 +355,7 @@ parse_args(const char **argv,
 		opts = set_opts;
 	ksh_getopt_reset(&go, GF_ERROR|GF_PLUSOPT);
 	while ((optc = ksh_getopt(argv, &go, opts)) != -1) {
-		set = (go.info & GI_PLUS) ? 0 : 1;
+		set = tobool(!(go.info & GI_PLUS));
 		switch (optc) {
 		case 'A':
 			if (what == OF_FIRSTTIME)
@@ -378,7 +379,7 @@ parse_args(const char **argv,
 				break;
 			}
 			i = option(go.optarg);
-			if ((i != (size_t)-1) && set == Flag(i))
+			if ((i != (size_t)-1) && (set ? 1U : 0U) == Flag(i))
 				/*
 				 * Don't check the context if the flag
 				 * isn't changing - makes "set -o interactive"
@@ -401,7 +402,7 @@ parse_args(const char **argv,
 #ifndef KSH_CHVT_CODE
 			errorf("no TIOCSCTTY ioctl");
 #else
-			change_flag(FTALKING, OF_CMDLINE, 1);
+			change_flag(FTALKING, OF_CMDLINE, true);
 			chvt(go.optarg);
 			break;
 #endif
@@ -706,7 +707,7 @@ static int
 do_gmatch(const unsigned char *s, const unsigned char *se,
     const unsigned char *p, const unsigned char *pe)
 {
-	int sc, pc;
+	unsigned char sc, pc;
 	const unsigned char *prest, *psub, *pnext;
 	const unsigned char *srest;
 
@@ -836,12 +837,13 @@ do_gmatch(const unsigned char *s, const unsigned char *se,
 }
 
 static const unsigned char *
-cclass(const unsigned char *p, int sub)
+cclass(const unsigned char *p, unsigned char sub)
 {
-	int c, d, notp, found = 0;
+	unsigned char c, d;
+	bool notp, found = false;
 	const unsigned char *orig_p = p;
 
-	if ((notp = (ISMAGIC(*p) && *++p == '!')))
+	if ((notp = tobool(ISMAGIC(*p) && *++p == '!')))
 		p++;
 	do {
 		c = *p++;
@@ -875,7 +877,7 @@ cclass(const unsigned char *p, int sub)
 		} else
 			d = c;
 		if (c == sub || (c <= sub && sub <= d))
-			found = 1;
+			found = true;
 	} while (!(ISMAGIC(p[0]) && p[1] == ']'));
 
 	return ((found != notp) ? p+2 : NULL);
diff --git a/sh.h b/sh.h
index 2a51471..726ba37 100644
--- a/sh.h
+++ b/sh.h
@@ -152,9 +152,9 @@
 #endif
 
 #ifdef EXTERN
-__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.613 2012/12/05 18:54:09 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.614 2012/12/05 19:38:23 tg Exp $");
 #endif
-#define MKSH_VERSION "R41 2012/12/03"
+#define MKSH_VERSION "R41 2012/12/05"
 
 /* arithmetic types: C implementation */
 #if !HAVE_CAN_INTTYPES
@@ -1872,7 +1872,7 @@ void setctypes(const char *, int);
 void initctypes(void);
 size_t option(const char *);
 char *getoptions(void);
-void change_flag(enum sh_flag, int, unsigned int);
+void change_flag(enum sh_flag, int, bool);
 int parse_args(const char **, int, bool *);
 int getn(const char *, int *);
 int gmatchx(const char *, const char *, bool);
diff --git a/shf.c b/shf.c
index aaa8fd2..b96d36e 100644
--- a/shf.c
+++ b/shf.c
@@ -1,7 +1,7 @@
 /*	$OpenBSD: shf.c,v 1.15 2006/04/02 00:48:33 deraadt Exp $	*/
 
 /*-
- * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
+ * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012
  *	Thorsten Glaser <tg@mirbsd.org>
  *
  * Provided that these terms and disclaimer and all copyright notices
@@ -24,7 +24,7 @@
 
 #include "sh.h"
 
-__RCSID("$MirOS: src/bin/mksh/shf.c,v 1.48 2012/12/04 01:11:16 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/shf.c,v 1.49 2012/12/05 19:38:24 tg Exp $");
 
 /* flags to shf_emptybuf() */
 #define EB_READSW	0x01	/* about to switch to reading */
@@ -552,7 +552,7 @@ shf_ungetc(int c, struct shf *shf)
 		 * Can unget what was read, but not something different;
 		 * we don't want to modify a string.
 		 */
-		if (shf->rp[-1] != c)
+		if ((int)(shf->rp[-1]) != c)
 			return (EOF);
 		shf->flags &= ~SHF_EOF;
 		shf->rp--;
diff --git a/syn.c b/syn.c
index 4101fde..2186e36 100644
--- a/syn.c
+++ b/syn.c
@@ -23,7 +23,7 @@
 
 #include "sh.h"
 
-__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.86 2012/12/05 18:54:10 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.87 2012/12/05 19:38:25 tg Exp $");
 
 struct nesting_state {
 	int start_token;	/* token than began nesting (eg, FOR) */
@@ -1015,7 +1015,7 @@ dbtestp_isa(Test_env *te, Test_meta meta)
 		    db_close)) ? TO_NONNULL : TO_NONOP;
 	if (ret != TO_NONOP) {
 		ACCEPT;
-		if (meta < NELEM(dbtest_tokens))
+		if ((unsigned int)meta < NELEM(dbtest_tokens))
 			save = wdcopy(dbtest_tokens[(int)meta], ATEMP);
 		if (save)
 			XPput(*te->pos.av, save);