diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 52 |
1 files changed, 0 insertions, 52 deletions
@@ -1,52 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "dwm.h" -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/wait.h> -#include <unistd.h> - -/* extern */ - -void * -emallocz(unsigned int size) { - void *res = calloc(1, size); - - if(!res) - eprint("fatal: could not malloc() %u bytes\n", size); - return res; -} - -void -eprint(const char *errstr, ...) { - va_list ap; - - va_start(ap, errstr); - vfprintf(stderr, errstr, ap); - va_end(ap); - exit(EXIT_FAILURE); -} - -void -spawn(const char *arg) { - static char *shell = NULL; - - if(!shell && !(shell = getenv("SHELL"))) - shell = "/bin/sh"; - if(!arg) - return; - /* The double-fork construct avoids zombie processes and keeps the code - * clean from stupid signal handlers. */ - if(fork() == 0) { - if(fork() == 0) { - if(dpy) - close(ConnectionNumber(dpy)); - setsid(); - execl(shell, shell, "-c", arg, (char *)NULL); - fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg); - perror(" failed"); - } - exit(0); - } - wait(0); -} |