JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
added logo+description
[dwm.git] / util.c
diff --git a/util.c b/util.c
index de4df98..0a5bd96 100644 (file)
--- a/util.c
+++ b/util.c
 #include <sys/wait.h>
 #include <unistd.h>
 
-#include "util.h"
-
-static char *shell = NULL;
+#include "wm.h"
 
 void
-error(char *errstr, ...) {
+error(const char *errstr, ...) {
        va_list ap;
        va_start(ap, errstr);
        vfprintf(stderr, errstr, ap);
@@ -62,20 +60,13 @@ erealloc(void *ptr, unsigned int size)
 char *
 estrdup(const char *str)
 {
-       void *res = strdup(str);
+       char *res = strdup(str);
        if(!res)
                bad_malloc(strlen(str));
        return res;
 }
 
 void
-failed_assert(char *a, char *file, int line)
-{
-       fprintf(stderr, "Assertion \"%s\" failed at %s:%d\n", a, file, line);
-       abort();
-}
-
-void
 swap(void **p1, void **p2)
 {
        void *tmp = *p1;
@@ -84,65 +75,20 @@ swap(void **p1, void **p2)
 }
 
 void
-spawn(Display *dpy, const char *cmd)
+spawn(char *argv[])
 {
-       if(!shell && !(shell = getenv("SHELL")))
-               shell = "/bin/sh";
-
-       if(!cmd)
+       if(!argv || !argv[0])
                return;
        if(fork() == 0) {
                if(fork() == 0) {
-                       setsid();
                        if(dpy)
                                close(ConnectionNumber(dpy));
-                       execlp(shell, "shell", "-c", cmd, NULL);
-                       fprintf(stderr, "gridwm: execvp %s", cmd);
+                       setsid();
+                       execvp(argv[0], argv);
+                       fprintf(stderr, "dwm: execvp %s", argv[0]);
                        perror(" failed");
                }
                exit (0);
        }
        wait(0);
 }
-
-void
-pipe_spawn(char *buf, unsigned int len, Display *dpy, const char *cmd)
-{
-       unsigned int l, n;
-       int pfd[2];
-
-       if(!shell && !(shell = getenv("SHELL")))
-               shell = "/bin/sh";
-
-       if(!cmd)
-               return;
-
-       if(pipe(pfd) == -1) {
-               perror("pipe");
-               exit(1);
-       }
-
-       if(fork() == 0) {
-               setsid();
-               if(dpy)
-                       close(ConnectionNumber(dpy));
-               dup2(pfd[1], STDOUT_FILENO);
-               close(pfd[0]);
-               close(pfd[1]);
-               execlp(shell, "shell", "-c", cmd, NULL);
-               fprintf(stderr, "gridwm: execvp %s", cmd);
-               perror(" failed");
-       }
-       else {
-               n = 0;
-               close(pfd[1]);
-               while(l > n) {
-                       if((l = read(pfd[0], buf + n, len - n)) < 1)
-                               break;
-                       n += l;
-               }
-               close(pfd[0]);
-               buf[n - 1] = 0;
-       }
-       wait(0);
-}