Introduction
Introduction Statistics Contact Development Disclaimer Help
tre-applied Neale's spawn patch, credited Neale in LICENSE - dwm - [fork] custo…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 62a491e36d493bf4585b348a4c28c5ed9bd3ea4e
parent 0b5dcf229f64a23438e6ef5929d78b7f9bd48355
Author: a@null <unknown>
Date: Fri, 12 Dec 2008 19:55:03 +0000
re-applied Neale's spawn patch, credited Neale in LICENSE
Diffstat:
M LICENSE | 1 +
M README | 3 ++-
M config.mk | 2 +-
M dwm.c | 25 ++++++++++++++-----------
4 files changed, 18 insertions(+), 13 deletions(-)
---
diff --git a/LICENSE b/LICENSE
t@@ -9,6 +9,7 @@ MIT/X Consortium License
© 2007-2008 Enno Gottox Boland <gottox at s01 dot de>
© 2007-2008 Peter Hartlich <sgkkr at hartlich dot com>
© 2008 Martin Hurton <martin dot hurton at gmail dot com>
+© 2008 Neale Pickett <neale dot woozle dot org>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
diff --git a/README b/README
t@@ -38,11 +38,12 @@ the DISPLAY environment variable is set correctly, e.g.:
In order to display status info in the bar, you can do something
like this in your .xinitrc:
+ dwm &
while true
do
xsetroot -name "`date` `uptime | sed 's/.*,//'`"
sleep 1
- done | dwm
+ done
Configuration
diff --git a/config.mk b/config.mk
t@@ -1,5 +1,5 @@
# dwm version
-VERSION = 5.3.1
+VERSION = 5.4
# Customize below to fit your system
diff --git a/dwm.c b/dwm.c
t@@ -178,6 +178,7 @@ static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg);
static void setup(void);
static void showhide(Client *c);
+static void sigchld(int signal);
static void spawn(const Arg *arg);
static void tag(const Arg *arg);
static int textnw(const char *text, unsigned int len);
t@@ -1340,22 +1341,24 @@ showhide(Client *c) {
}
}
+
+void
+sigchld(int signal) {
+ while(0 < waitpid(-1, NULL, WNOHANG));
+}
+
void
spawn(const Arg *arg) {
- /* The double-fork construct avoids zombie processes and keeps the code
- * clean from stupid signal handlers. */
+ signal(SIGCHLD, sigchld);
if(fork() == 0) {
- if(fork() == 0) {
- if(dpy)
- close(ConnectionNumber(dpy));
- setsid();
- execvp(((char **)arg->v)[0], (char **)arg->v);
- fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]…
- perror(" failed");
- }
+ if(dpy)
+ close(ConnectionNumber(dpy));
+ setsid();
+ execvp(((char **)arg->v)[0], (char **)arg->v);
+ fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
+ perror(" failed");
exit(0);
}
- wait(0);
}
void
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.