pkgsrc/x11/hanterm/patches/patch-ae

232 lines
5.4 KiB
Text

$NetBSD: patch-ae,v 1.5 2014/09/22 11:56:39 joerg Exp $
- avoid union wait
- force termios on all modern systems
- declare void functions void
- avoid implicit int
- don't declare own errno
- fix os conditionals (apparently with respect to VMS)
- call execl() and execlp() correctly
- don't synthesize vsprintf with fake arguments
- use ctype.h functions correctly
--- main.c.orig 2002-01-09 00:41:11.000000000 +0000
+++ main.c
@@ -63,15 +63,7 @@ SOFTWARE.
#include <X11/Xaw/SimpleMenu.h>
#include <pwd.h>
#include <ctype.h>
-#ifdef linux
-#ifdef __GLIBC__
-#if __GLIBC_MINOR__<1
-#include <termbits.h>
-#else
#include <termios.h>
-#endif /* __GLIBC_MINOR__ */
-#endif /* __GLIBC__ */
-#endif
#ifdef DGUX /* dkim@surecom.com */
/* DGUX is SVR4 but its SYSV side of TTY has bugs in it */
@@ -239,8 +231,18 @@ static Bool IsPts = False;
#ifdef SVR4
#define USE_POSIX_WAIT
#endif
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
+ defined(__DragonFly__) || defined(__linux__)
+#ifndef USE_POSIX_WAIT
+#define USE_POSIX_WAIT
+#endif
+#ifndef USE_TERMIOS
+#define USE_TERMIOS
+#endif
+#endif
#include <stdio.h>
+#include <stdarg.h>
#include <errno.h>
#include <setjmp.h>
@@ -391,6 +393,9 @@ extern char *ptsname();
extern char *strindex ();
extern void HandlePopupMenu();
+static void get_terminal (void);
+static void resize(TScreen *screen, char *TermName, char *oldtc, char *newtc);
+
int switchfb[] = {0, 2, 1, 3};
static SIGNAL_T reapchild ();
@@ -583,6 +588,8 @@ static int tslot;
#endif /* USE_SYSV_UTMP */
static jmp_buf env;
+static void spawn (void);
+
char *ProgramName;
Boolean sunFunctionKeys;
@@ -805,9 +812,9 @@ static char *message[] = {
"will be started. Options that start with a plus sign (+) restore the default.",
NULL};
-#ifndef USE_TERMIOS
-static remove_termcap_entry ();
-#endif
+/*#ifndef USE_TERMIOS*/
+static void remove_termcap_entry (char *, const char *);
+/*#endif*/
static int abbrev (tst, cmp)
char *tst, *cmp;
@@ -816,7 +823,7 @@ static int abbrev (tst, cmp)
return ((len >= 2) && (!strncmp(tst, cmp, len)));
}
-static Syntax (badOption)
+static void Syntax (badOption)
char *badOption;
{
struct _options *opt;
@@ -842,13 +849,13 @@ static Syntax (badOption)
exit (1);
}
-static Version ()
+static void Version ()
{
printf("%s %s %s %s\n", HANTERM_PRODUCT, HANTERM_VERSION,
HANTERM_RELEASE, HANTERM_RELEASEDATE);
exit (0);
}
-static Help ()
+static void Help ()
{
struct _options *opt;
char **cpp;
@@ -960,6 +967,7 @@ XtActionsRec actionProcs[] = {
Atom wm_delete_window;
+int
main (argc, argv)
int argc;
char **argv;
@@ -1527,7 +1535,8 @@ char **argv;
if (ioctl (pty, FIONBIO, (char *)&mode) == -1) SysError (ERROR_FIONBIO);
#endif /* USE_SYSV_TERMIO */
-#if defined(linux)||defined(SVR4)||(defined(hpux)&&OSMAJORVERSION>=10)
+
+#ifndef VMS
pty_mask = pty;
X_mask = Xsocket;
FD_ZERO(&Select_mask);
@@ -1566,6 +1575,7 @@ char *name;
* has problems, we can re-enter this function and get another one.
*/
+int
get_pty (pty)
int *pty;
{
@@ -1730,6 +1740,7 @@ int pty_search(pty)
return 1;
}
+static void
get_terminal ()
/*
* sets up X and initializes the terminal structure except for term.buf.fildes.
@@ -1854,7 +1865,7 @@ void first_map_occurred ()
#endif /* USE_HANDSHAKE else !USE_HANDSHAKE */
-spawn ()
+static void spawn (void)
/*
* Inits pty and tty and forks a login process.
* Does not close fd Xsocket.
@@ -2983,10 +2994,10 @@ spawn ()
#ifdef USE_LOGIN_DASH_P
if (term->misc.login_shell && pw && added_utmp_entry)
- execl (bin_login, "login", "-p", "-f", pw->pw_name, 0);
+ execl (bin_login, "login", "-p", "-f", pw->pw_name, (void *)NULL);
#endif
execlp (ptr, (term->misc.login_shell ? shname_minus : shname),
- 0);
+ (void *)NULL);
/* Exec failed. */
fprintf (stderr, "%s: Could not exec %s!\n", xterm_name, ptr);
@@ -3235,10 +3246,8 @@ Exit(n)
}
/* ARGSUSED */
-resize(screen, TermName, oldtc, newtc)
-TScreen *screen;
-char *TermName;
-register char *oldtc, *newtc;
+static void
+resize(TScreen *screen, char *TermName, char *oldtc, char *newtc)
{
#ifndef USE_SYSV_ENVVARS
register char *ptr1, *ptr2;
@@ -3329,18 +3338,20 @@ static SIGNAL_T reapchild (n)
}
/* VARARGS1 */
-consolepr(fmt,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)
-char *fmt;
+void
+consolepr(const char *fmt, ...)
{
- extern int errno;
extern char *SysErrorMsg();
int oerrno;
int f;
char buf[ BUFSIZ ];
+ va_list ap;
oerrno = errno;
strcpy(buf, "hanterm: ");
- sprintf(buf+strlen(buf), fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);
+ va_start(ap, fmt);
+ vsnprintf(buf+strlen(buf), sizeof(buf)-strlen(buf), fmt, ap);
+ va_end(ap);
strcat(buf, ": ");
strcat(buf, SysErrorMsg (oerrno));
strcat(buf, "\n");
@@ -3356,10 +3367,8 @@ char *fmt;
}
-#ifndef USE_TERMIOS
-static remove_termcap_entry (buf, str)
- char *buf;
- char *str;
+/*#ifndef USE_TERMIOS*/
+static void remove_termcap_entry (char *buf, const char *str)
{
register char *strinbuf;
@@ -3377,7 +3386,7 @@ static remove_termcap_entry (buf, str)
}
return;
}
-#endif
+/*#endif*/
/*
* parse_tty_modes accepts lines of the following form:
@@ -3396,7 +3405,8 @@ static int parse_tty_modes (s, modelist)
int count = 0;
while (1) {
- while (*s && isascii(*s) && isspace(*s)) s++;
+ while (*s && isascii((unsigned char)*s) && isspace((unsigned char)*s))
+ s++;
if (!*s) return count;
for (mp = modelist; mp->name; mp++) {