$NetBSD: patch-ae,v 1.8 2016/05/01 19:56:40 dholland Exp $

- Use pseudo-terminal multiplexor on NetBSD.
- Correctly set the terminal size on FreeBSD and NetBSD.
(these parts apparently from upstream)

- Use ctype.h functions correctly.

--- src/command.c.orig	2005-06-21 20:08:16.000000000 +0000
+++ src/command.c
@@ -542,7 +542,7 @@ get_pty(void)
     ptydev = ttydev = _getpty(&fd, O_RDWR | O_NDELAY, 0622, 0);
     if (ptydev == NULL)
 	goto Failed;
-#elif defined (__svr4__) || defined(__CYGWIN32__) || defined(__lnx21__)
+#elif defined (__svr4__) || defined(__CYGWIN32__) || defined(__lnx21__) || defined(__NetBSD__)
     {
 	extern char    *ptsname();
 
@@ -1085,6 +1085,8 @@ run_command(char *argv[])
 #endif				/* SRIOCSREDIR */
 	}
 
+	tt_winsize(0);		/* set window size */
+
     /* reset signals and spin off the command interpreter */
 	signal(SIGINT, SIG_DFL);
 	signal(SIGQUIT, SIG_DFL);
@@ -1225,9 +1227,9 @@ init_command(char *argv[])
     meta_char = (Options & Opt_meta8 ? 0x80 : 033);
     if (rs_modifier
 	&& strlen(rs_modifier) == 4
-	&& toupper(*rs_modifier) == 'M'
-	&& toupper(rs_modifier[1]) == 'O'
-	&& toupper(rs_modifier[2]) == 'D')
+	&& toupper((unsigned char)*rs_modifier) == 'M'
+	&& toupper((unsigned char)rs_modifier[1]) == 'O'
+	&& toupper((unsigned char)rs_modifier[2]) == 'D')
 	switch (rs_modifier[3]) {
 	case '2':
 	    ModXMask = Mod2Mask;
@@ -1302,13 +1304,13 @@ init_xlocale(void)
 	for (s = tmp; *s; s++) {
 	    char           *end, *next_s;
 
-	    for (; *s && isspace(*s); s++)
+	    for (; *s && isspace((unsigned char)*s); s++)
 		/* */ ;
 	    if (!*s)
 		break;
 	    for (end = s; (*end && (*end != ',')); end++)
 		/* */ ;
-	    for (next_s = end--; ((end >= s) && isspace(*end)); end--)
+	    for (next_s = end--; ((end >= s) && isspace((unsigned char)*end)); end--)
 		/* */ ;
 	    *++end = '\0';
 	    if (*s) {
@@ -1340,13 +1342,13 @@ init_xlocale(void)
 	unsigned short  i;
 	char           *end, *next_s;
 
-	for (; *s && isspace(*s); s++)
+	for (; *s && isspace((unsigned char)*s); s++)
 	    /* */ ;
 	if (!*s)
 	    break;
 	for (end = s; (*end && (*end != ',')); end++)
 	    /* */ ;
-	for (next_s = end--; ((end >= s) && isspace(*end));)
+	for (next_s = end--; ((end >= s) && isspace((unsigned char)*end));)
 	    *end-- = 0;
 
 	if (!strcmp(s, "OverTheSpot"))
