Update to ncurses-6.0

Change-Id: I98ab2ea8a5e13cca9f8b7cf6277b9b14a4da4299
diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
index a984e85..4f7f19d 100755
--- a/ncurses/base/MKlib_gen.sh
+++ b/ncurses/base/MKlib_gen.sh
@@ -2,10 +2,10 @@
 #
 # MKlib_gen.sh -- generate sources from curses.h macro definitions
 #
-# ($Id: MKlib_gen.sh,v 1.34 2008/08/30 19:20:50 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.50 2015/08/07 00:48:24 tom Exp $)
 #
 ##############################################################################
-# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.                #
+# Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.                #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -51,7 +51,7 @@
 #         them.
 # 5. cpp: macro-expand the file so the macro calls turn into C calls
 # 6. awk: strip the expansion junk off the front and add the new header
-# 7. sed: squeeze spaces, strip off gen_ prefix, create needed #undef
+# 7. sed: squeeze spaces, strip off gen_ prefix.
 #
 
 # keep the editing independent of locale:
@@ -66,6 +66,23 @@
 AWK="$2"
 USE="$3"
 
+# A patch discussed here:
+#	https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+# introduces spurious #line markers into the preprocessor output.  The result
+# appears in gcc 5.0 and (with modification) in 5.1, making it necessary to
+# determine if we are using gcc, and if so, what version because the proposed
+# solution uses a nonstandard option.
+PRG=`echo "$1" | $AWK '{ sub(/^[[:space:]]*/,""); sub(/[[:space:]].*$/, ""); print; }' || exit 0`
+FSF=`"$PRG" --version 2>/dev/null || exit 0 | fgrep "Free Software Foundation" | head -n 1`
+ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
+ONE=`echo "$ALL" | sed -e 's/\..*$//'`
+if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
+	if test $ONE -ge 5 ; then
+		echo ".. adding -P option to work around $PRG $ALL" >&2
+		preprocessor="$preprocessor -P"
+	fi
+fi
+
 PID=$$
 ED1=sed1_${PID}.sed
 ED2=sed2_${PID}.sed
@@ -82,6 +99,8 @@
 	cat >$ED1 <<EOF1
 /^extern.*implemented/{
 	h
+	s/NCURSES_SP_NAME(\([^)]*\))/NCURSES_SP_NAME___\1/
+	h
 	s/^.*implemented:\([^ 	*]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
 	g
 	s/^extern \([^;]*\);.*/\1/p
@@ -151,14 +170,13 @@
 	s/( /(/g
 	s/ )/)/g
 	s/ gen_/ /
-	s/^M_/#undef /
 	s/^[ 	]*@[ 	]*@[ 	]*/	/
 :done
 EOF3
 
 if test "$USE" = generated ; then
 cat >$ED4 <<EOF
-	s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) \2 (\3)/
+	s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) (\2) (\3)/
 EOF
 else
 cat >$ED4 <<EOF
@@ -169,6 +187,7 @@
 	g
 	s/^\(.*\) \(.*\) (\(.*\))\$/\1 call_\2 (\3)/
 	}
+s/\([^_]\)NCURSES_SP_NAME___\([a-zA-Z][a-zA-Z_]*\)/\1NCURSES_SP_NAME(\2)/g
 EOF
 fi
 
@@ -198,14 +217,16 @@
 		}
 	}
 	second = first + 1;
+	returnCast = "";
 	if ( $first == "chtype" ) {
-		returnType = "Char";
+		returnType = "Chtype";
 	} else if ( $first == "SCREEN" ) {
 		returnType = "SP";
 	} else if ( $first == "WINDOW" ) {
 		returnType = "Win";
 	} else if ( $first == "attr_t" || $second == "attrset" || $second == "standout" || $second == "standend" || $second == "wattrset" || $second == "wstandout" || $second == "wstandend" ) {
-		returnType = "Attr";
+		returnType = "IntAttr";
+		returnCast = "(attr_t)";
 	} else if ( $first == "bool" || $first == "NCURSES_BOOL" ) {
 		returnType = "Bool";
 	} else if ( $second == "*" ) {
@@ -220,9 +241,6 @@
 			break;
 		}
 	}
-	if (using == "generated") {
-		print "M_" $myfunc
-	}
 	print $0;
 	print "{";
 	argcount = 1;
@@ -247,6 +265,9 @@
 	if ($myfunc ~ /ripoffline/) {
 		dotrace = 0;
 		argcount = 2;
+		if ($myfunc ~ /NCURSES_SP_NAME/) {
+			argcount = 3;
+		}
 	}
 	if ($myfunc ~ /wunctrl/) {
 		dotrace = 0;
@@ -262,24 +283,26 @@
 	argtype = ""
 	for (i = myfunc; i <= NF; i++) {
 		ch = $i;
-		if ( ch == "*" )
+		if ( ch == "*" ) {
 			pointer = 1;
-		else if ( ch == "va_list" )
+		} else if ( ch == "va_list" ) {
 			va_list = 1;
-		else if ( ch == "..." )
+		} else if ( ch == "..." ) {
 			varargs = 1;
-		else if ( ch == "char" )
+		} else if ( ch == "char" ) {
 			argtype = "char";
-		else if ( ch == "int" )
+		} else if ( ch == "int" ) {
 			argtype = "int";
-		else if ( ch == "short" )
+		} else if ( ch == "short" ) {
 			argtype = "short";
-		else if ( ch == "chtype" )
+		} else if ( ch == "chtype" ) {
 			argtype = "chtype";
-		else if ( ch == "attr_t" || ch == "NCURSES_ATTR_T" )
+		} else if ( ch == "attr_t" || ch == "NCURSES_ATTR_T" ) {
 			argtype = "attr";
+		}
 
 		if ( ch == "," || ch == ")" ) {
+			argcast = "";
 			if (va_list) {
 				call = call "%s"
 			} else if (varargs) {
@@ -289,8 +312,10 @@
 					call = call "%s"
 					comma = comma "_nc_visbuf2(" num ","
 					pointer = 0;
-				} else
+				} else {
 					call = call "%p"
+					comma = comma "(const void *)"
+				}
 			} else if (argcount != 0) {
 				if ( argtype == "int" || argtype == "short" ) {
 					call = call "%d"
@@ -298,6 +323,9 @@
 				} else if ( argtype != "" ) {
 					call = call "%s"
 					comma = comma "_trace" argtype "2(" num ","
+					if (argtype == "attr") {
+						argcast = "(chtype)";
+					}
 				} else {
 					call = call "%#lx"
 					comma = comma "(long)"
@@ -311,7 +339,7 @@
 				} else if ( varargs ) {
 					args = args comma "\"...\""
 				} else {
-					args = args comma "z"
+					args = args comma argcast "z"
 				}
 			}
 			call = call ch
@@ -322,7 +350,7 @@
 			pointer = 0;
 			argtype = ""
 		}
-		if ( i == 2 || ch == "(" )
+		if ( i == myfunc || ch == "(" )
 			call = call ch
 	}
 	call = call "\")"
@@ -333,12 +361,16 @@
 	if (dotrace)
 		printf "%s", call
 
-	if (match($0, "^void"))
+	if (match($0, "^void")) {
 		call = ""
-	else if (dotrace)
+	} else if (dotrace) {
 		call = sprintf("return%s( ", returnType);
-	else
+		if (returnCast != "") {
+			call = call returnCast;
+		}
+	} else {
 		call = "@@return ";
+	}
 
 	call = call $myfunc "(";
 	for (i = 1; i < argcount; i++) {
@@ -353,8 +385,9 @@
 	}
 	if (!match($0, "^void"))
 		call = call ") ";
-	if (dotrace)
+	if (dotrace) {
 		call = call ")";
+	}
 	print call ";"
 
 	if (match($0, "^void"))
@@ -381,14 +414,58 @@
 		}
 		print " */"
 		print "#define NCURSES_ATTR_T int"
+		print "#include <ncurses_cfg.h>"
+		print ""
+		print "#undef NCURSES_NOMACROS	/* _this_ file uses macros */"
+		print ""
 		print "#include <curses.priv.h>"
 		print ""
+		print "#undef vw_scanw"
+		print "#undef vwscanw"
+		print ""
+		print "#undef vw_printw"
+		print "#undef vwprintw"
 		}
 /^DECLARATIONS/	{start = 1; next;}
-		{if (start) print \$0;}
+		{
+		if (start) {
+			if ( "$USE" == "generated" ) {
+				print \$0;
+			} else if ( \$0 ~ /^[{}]?\$/ ) {
+				print \$0;
+			} else if ( \$0 ~ /;/ ) {
+				print \$0;
+			} else {
+				calls[start] = \$0;
+				print \$0;
+				start++;
+			}
+		}
+		}
 END		{
 		if ( "$USE" != "generated" ) {
-			print "int main(void) { return 0; }"
+			print "int main(void)"
+			print "{"
+			for (n = 1; n < start; ++n) {
+				value = calls[n];
+				if ( value !~ /P_POUNDC/ ) {
+					gsub(/[[:blank:]]+/," ",value);
+					sub(/^[[:alnum:]_]+ /,"",value);
+					sub(/^\* /,"",value);
+					gsub(/[[:alnum:]_]+ \* /,"",value);
+					gsub(/ (const) /," ",value);
+					gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value);
+					gsub(/ void /,"",value);
+					sub(/^/,"call_",value);
+					gsub(/ (a[[:digit:]]|z) /, " 0 ", value);
+					gsub(/ int[[:blank:]]*[(][^)]+[)][(][^)]+[)]/, "0", value);
+					printf "\t%s;\n", value;
+				} else {
+					print value;
+				}
+			}
+			print "	return 0;"
+			print "}"
 		}
 		}
 EOF1
@@ -397,6 +474,8 @@
 #include <ncurses_cfg.h>
 #undef NCURSES_NOMACROS
 #include <curses.h>
+#include <term.h>
+#include <unctrl.h>
 
 DECLARATIONS