summaryrefslogtreecommitdiff
path: root/dmenu/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'dmenu/util.c')
-rw-r--r--dmenu/util.c40
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;
}