diff options
Diffstat (limited to 'wm/uwm/patches/patch-ab')
-rw-r--r-- | wm/uwm/patches/patch-ab | 137 |
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); |