diff options
author | arg@10ksloc.org <unknown> | 2006-08-04 12:00:55 +0200 |
---|---|---|
committer | arg@10ksloc.org <unknown> | 2006-08-04 12:00:55 +0200 |
commit | 9955ddc978c2e6acfe246f29f1d317b55d860757 (patch) | |
tree | d7f5d5ef9f4aa6cea8e724f2f6f0938c7033f2bb /util.c | |
parent | 0dfe729f90069de070495c82ddc72cc476a4f3ab (diff) |
using execl now, argv changed, using cmd and const char defs directly in the KEYS struct
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -43,17 +43,20 @@ eprint(const char *errstr, ...) void spawn(Arg *arg) { - char **argv = (char **)arg->argv; + static char *shell = NULL; - if(!argv || !argv[0]) + if(!shell && !(shell = getenv("SHELL"))) + shell = "/bin/sh"; + + if(!arg->cmd) return; if(fork() == 0) { if(fork() == 0) { if(dpy) close(ConnectionNumber(dpy)); setsid(); - execvp(argv[0], argv); - fprintf(stderr, "dwm: execvp %s", argv[0]); + execl(shell, shell, "-c", arg->cmd, NULL); + fprintf(stderr, "dwm: execl '%s'", arg->cmd); perror(" failed"); } exit(0); |