X-Git-Url: https://jasonwoof.com/gitweb/?p=dwm.git;a=blobdiff_plain;f=util.c;h=76ba5abb45eb5f502a4ed3f31672ff1402c369d2;hp=c0f248961241cb285381591b8e3f479e05d0dfc3;hb=b1669b5c48f71c9a7a919dbf09a1af527c62f69a;hpb=16c67f32d62849792c8e6d4fdec22a1896f9c279 diff --git a/util.c b/util.c index c0f2489..76ba5ab 100644 --- a/util.c +++ b/util.c @@ -13,8 +13,6 @@ #include "util.h" -static char *shell = NULL; - void error(char *errstr, ...) { va_list ap; @@ -84,21 +82,17 @@ swap(void **p1, void **p2) } void -spawn(Display *dpy, const char *cmd) +spawn(Display *dpy, char *argv[]) { - if(!shell && !(shell = getenv("SHELL"))) - shell = "/bin/sh"; - - if(!cmd) + if(!argv || !argv[0]) return; if(fork() == 0) { if(fork() == 0) { if(dpy) close(ConnectionNumber(dpy)); setsid(); - fprintf(stderr, "gridwm: execlp %s %s -c %s", shell, shell, cmd); - execlp(shell, shell, "-c", cmd, NULL); - fprintf(stderr, "gridwm: execlp %s", cmd); + execvp(argv[0], argv); + fprintf(stderr, "gridwm: execvp %s", argv[0]); perror(" failed"); } exit (0); @@ -107,15 +101,12 @@ spawn(Display *dpy, const char *cmd) } void -pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd) +pipe_spawn(char *buf, unsigned int len, Display *dpy, char *argv[]) { unsigned int l, n; int pfd[2]; - if(!shell && !(shell = getenv("SHELL"))) - shell = "/bin/sh"; - - if(!cmd) + if(!argv || !argv[0]) return; if(pipe(pfd) == -1) { @@ -130,8 +121,8 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd) dup2(pfd[1], STDOUT_FILENO); close(pfd[0]); close(pfd[1]); - execlp(shell, shell, "-c", cmd, NULL); - fprintf(stderr, "gridwm: execlp %s", cmd); + execvp(argv[0], argv); + fprintf(stderr, "gridwm: execvp %s", argv[0]); perror(" failed"); } else {