df2c154abf
Obtained from: NetBSD pkgsrc/x11/uwm
138 lines
3.1 KiB
Plaintext
138 lines
3.1 KiB
Plaintext
$NetBSD: patch-ab,v 1.2 2000/01/19 07:24:07 itohy Exp $
|
|
|
|
--- uwm.c.orig Sun Oct 23 13:21:55 1988
|
|
+++ uwm.c Mon Oct 16 08:58:41 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);
|