summaryrefslogtreecommitdiff
path: root/wm/uwm/patches/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'wm/uwm/patches/patch-ab')
-rw-r--r--wm/uwm/patches/patch-ab137
1 files changed, 137 insertions, 0 deletions
diff --git a/wm/uwm/patches/patch-ab b/wm/uwm/patches/patch-ab
new file mode 100644
index 00000000000..95e62e83135
--- /dev/null
+++ b/wm/uwm/patches/patch-ab
@@ -0,0 +1,137 @@
+$NetBSD: patch-ab,v 1.1.1.1 2000/12/12 02:03:49 wiz Exp $
+
+--- uwm.c.orig Sun Oct 23 22:21:55 1988
++++ uwm.c Wed Jan 19 08:20:54 2000
+@@ -41,9 +41,18 @@
+
+ #include "uwm.h"
+ #include <ctype.h>
++#include <signal.h>
++
++#ifdef CSRG_BASED
++#undef MIN
++#undef MAX
++#include <sys/param.h>
++#if defined(BSD) && BSD >= 199306
++#define HAVE_MKSTEMP
++#endif
++#endif
+
+ #ifdef PROFIL
+-#include <signal.h>
+ /*
+ * Dummy handler for profiling.
+ */
+@@ -53,6 +62,27 @@
+ }
+ #endif
+
++#ifdef SIGCHLD
++#include <sys/wait.h>
++/*
++ * clear (probably inherited) children which are dead or will die.
++ */
++clear_children()
++{
++ int status, pid;
++
++ do {
++#ifdef CSRG_BASED
++ pid = wait3(&status, WNOHANG, (struct rusage *) 0);
++#else /* SVR4 */
++ pid = waitpid(-1, &status, WNOHANG);
++#endif
++ } while (pid != 0 && pid != -1);
++
++ signal(SIGCHLD, clear_children);
++}
++#endif
++
+ #define gray_width 16
+ #define gray_height 16
+ static char gray_bits[] = {
+@@ -115,6 +145,10 @@
+ #ifdef PROFIL
+ signal(SIGTERM, ptrap);
+ #endif
++#ifdef SIGCHLD
++ /* no zombies */
++ clear_children();
++#endif
+
+ /*
+ * Set up internal defaults.
+@@ -369,7 +403,7 @@
+ if (IFontInfo == NULL) {
+ fprintf(stderr, "uwm: Unable to open icon font '%s', using server default.\n",
+ IFontName);
+- IFontInfo = XQueryFont(dpy, DefaultGC(dpy, scr)->gid);
++ IFontInfo = XQueryFont(dpy, XGContextFromGC(DefaultGC(dpy, scr)));
+ fallbackIFont = True;
+ }
+ PFontInfo = XLoadQueryFont(dpy, PFontName);
+@@ -379,7 +413,7 @@
+ if (fallbackIFont)
+ PFontInfo = IFontInfo;
+ else
+- PFontInfo = XQueryFont(dpy, DefaultGC(dpy, scr)->gid);
++ PFontInfo = XQueryFont(dpy, XGContextFromGC(DefaultGC(dpy, scr)));
+ fallbackPFont = True;
+ }
+ MFontInfo = XLoadQueryFont(dpy, MFontName);
+@@ -389,7 +423,7 @@
+ if (fallbackIFont || fallbackPFont)
+ MFontInfo = fallbackPFont ? PFontInfo : IFontInfo;
+ else
+- MFontInfo = XQueryFont(dpy, DefaultGC(dpy, scr)->gid);
++ MFontInfo = XQueryFont(dpy, XGContextFromGC(DefaultGC(dpy, scr)));
+ fallbackMFont = True;
+ }
+
+@@ -685,7 +719,11 @@
+ */
+ InitBindings()
+ {
++#ifdef HAVE_MKSTEMP
++ int fd;
++#else
+ char *mktemp();
++#endif
+ char *tempfile; /* Temporary filename. */
+ register FILE *fp; /* Temporary file pointer. */
+ register char **ptr; /* Default bindings string array pointer. */
+@@ -699,15 +737,26 @@
+ exit (1);
+ }
+ strcpy (tempfile, TEMPFILE);
++#ifdef HAVE_MKSTEMP
++ if ((fd = mkstemp(tempfile)) < 0 || (fp = fdopen(fd, "r+")) == NULL) {
++ perror("uwm: cannot create temp file");
++ exit(1);
++ }
++#else
+ sfilename = mktemp(tempfile);
+ if ((fp = fopen(tempfile, "w")) == NULL) {
+ perror("uwm: cannot create temp file");
+ exit(1);
+ }
++#endif
+ for (ptr = DefaultBindings; *ptr; ptr++) {
+ fputs(*ptr, fp);
+ fputc('\n', fp);
+ }
++#ifdef HAVE_MKSTEMP
++ rewind(fp);
++ yyin = fp;
++#else
+ fclose(fp);
+
+ /*
+@@ -717,6 +766,7 @@
+ perror("uwm: cannot open temp file");
+ exit(1);
+ }
++#endif
+ Lineno = 1;
+ yyparse();
+ fclose(yyin);