diff options
Diffstat (limited to 'dmenu/util.c')
| -rw-r--r-- | dmenu/util.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/dmenu/util.c b/dmenu/util.c index fe044fc..975735b 100644 --- a/dmenu/util.c +++ b/dmenu/util.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include <errno.h> #include <stdarg.h> #include <stdio.h> #include <stdlib.h> @@ -6,6 +7,25 @@ #include "util.h" +void +die(const char *fmt, ...) +{ + va_list ap; + int saved_errno; + + saved_errno = errno; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + if (fmt[0] && fmt[strlen(fmt)-1] == ':') + fprintf(stderr, " %s", strerror(saved_errno)); + fputc('\n', stderr); + + exit(1); +} + void * ecalloc(size_t nmemb, size_t size) { @@ -16,20 +36,8 @@ ecalloc(size_t nmemb, size_t size) return p; } -void -die(const char *fmt, ...) { - va_list ap; - - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - - if (fmt[0] && fmt[strlen(fmt)-1] == ':') { - fputc(' ', stderr); - perror(NULL); - } else { - fputc('\n', stderr); - } - - exit(1); +int +startswith(const char* prefix, const char* str) +{ + return strncmp(prefix, str, strlen(prefix)) == 0; } |
