diff options
author | Anselm R Garbe <garbeam@gmail.com> | 2008-06-11 09:34:00 +0100 |
---|---|---|
committer | Anselm R Garbe <garbeam@gmail.com> | 2008-06-11 09:34:00 +0100 |
commit | c56533615f84df801f10dedc4d6ff267e0e8df0a (patch) | |
tree | 968a54a5ab4bc769fea427dc2036f3f22be38211 /dwm.c | |
parent | a8e0772c4d977fafb35c5ab9e29e322a9505b71a (diff) | |
download | dwm-c56533615f84df801f10dedc4d6ff267e0e8df0a.tar.gz |
integrated Peter Hartlich's patch, removed const char *c from union, simplified togglelayout
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/dwm.c b/dwm.c index 5b8747c..1c52d80 100644 --- a/dwm.c +++ b/dwm.c @@ -93,11 +93,10 @@ typedef struct { } DC; /* draw context */ typedef union { - const char *c; int i; uint ui; float f; - void *aux; + void *v; } Arg; typedef struct { @@ -1388,10 +1387,6 @@ setup(void) { void spawn(const Arg *arg) { - static char *shell = NULL; - - if(!shell && !(shell = getenv("SHELL"))) - shell = "/bin/sh"; /* The double-fork construct avoids zombie processes and keeps the code * clean from stupid signal handlers. */ if(fork() == 0) { @@ -1399,8 +1394,8 @@ spawn(const Arg *arg) { if(dpy) close(ConnectionNumber(dpy)); setsid(); - execl(shell, shell, "-c", arg->c, (char *)NULL); - fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg->c); + execvp(((char **)arg->v)[0], (char **)arg->v); + fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); perror(" failed"); } exit(0); @@ -1481,20 +1476,8 @@ togglefloating(const Arg *arg) { void togglelayout(const Arg *arg) { - uint i; - - if(!arg->c) { - if(++lt == &layouts[LENGTH(layouts)]) - lt = &layouts[0]; - } - else { - for(i = 0; i < LENGTH(layouts); i++) - if(!strcmp(arg->c, layouts[i].symbol)) - break; - if(i == LENGTH(layouts)) - return; - lt = &layouts[i]; - } + if(++lt == &layouts[LENGTH(layouts)]) + lt = &layouts[0]; if(sel) arrange(); else |