diff options
author | Anselm R. Garbe <garbeam@gmail.com> | 2007-09-15 22:25:27 +0200 |
---|---|---|
committer | Anselm R. Garbe <garbeam@gmail.com> | 2007-09-15 22:25:27 +0200 |
commit | 0235a84ef286db5c97239615ae525ce973641941 (patch) | |
tree | eed9e2c2b39249ada5353a841f8717894bf236b0 /util.c | |
parent | 2091200c957783deed032380d56c4199a23c6b81 (diff) | |
download | dwm-0235a84ef286db5c97239615ae525ce973641941.tar.gz dwm-0235a84ef286db5c97239615ae525ce973641941.tar.bz2 dwm-0235a84ef286db5c97239615ae525ce973641941.zip |
micromizing dwm step 1
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); -} |