From f00db85c98b8d9a4a18af53aa339e056d92edf7f Mon Sep 17 00:00:00 2001
From: tg <tg@mirbsd.org>
Date: Wed, 23 Sep 2009 18:22:38 +0000
Subject: [PATCH] SUNWcc related fixes for normal and MKSH_SMALL

---
 Build.sh | 22 +++++++++++++++++-----
 var.c    |  4 ++--
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/Build.sh b/Build.sh
index 79000e5..0cb5bf0 100644
--- a/Build.sh
+++ b/Build.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.423 2009/08/30 13:22:37 tg Exp $'
+srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.424 2009/09/23 18:22:37 tg Exp $'
 #-
 # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009
 #	Thorsten Glaser <tg@mirbsd.org>
@@ -912,11 +912,23 @@ NOWARN=$save_NOWARN
 #
 if ac_ifcpp 'ifdef MKSH_SMALL' isset_MKSH_SMALL '' \
     "if a reduced-feature mksh is requested"; then
-	if test $ct = xlc; then
-		ac_flags 1 fnoinline -qnoinline
-	else
+	#XXX this sucks; fix it for *all* compilers
+	case $ct in
+	clang|icc|nwcc)
 		ac_flags 1 fnoinline -fno-inline
-	fi
+		;;
+	gcc)
+		NOWARN=$DOWARN; phase=u
+		ac_flags 1 fnoinline -fno-inline
+		NOWARN=$save_NOWARN; phase=x
+		;;
+	sunpro)
+		ac_flags 1 fnoinline -xinline=
+		;;
+	xlc)
+		ac_flags 1 fnoinline -qnoinline
+		;;
+	esac
 
 	: ${HAVE_MKNOD=0}
 	: ${HAVE_REVOKE=0}
diff --git a/var.c b/var.c
index 5c112a7..7bb09fd 100644
--- a/var.c
+++ b/var.c
@@ -22,7 +22,7 @@
 
 #include "sh.h"
 
-__RCSID("$MirOS: src/bin/mksh/var.c,v 1.90 2009/09/23 18:04:58 tg Exp $");
+__RCSID("$MirOS: src/bin/mksh/var.c,v 1.91 2009/09/23 18:22:38 tg Exp $");
 
 /*
  * Variables
@@ -1450,7 +1450,7 @@ set_array(const char *var, bool reset, const char **vals)
 			if (*ccp == ']' && level == 0 && ccp[1] == '=') {
 				strndupx(cp, vals[i] + 1, ccp - (vals[i] + 1),
 				    ATEMP);
-				evaluate(substitute(cp, 0), &n,
+				evaluate(substitute(cp, 0), (mksh_ari_t *)&n,
 				    KSH_UNWIND_ERROR, true);
 				ccp += 2;
 			} else