diff options
author | bacalhau <bacalhau@based.pt> | 2025-06-08 15:55:29 +0100 |
---|---|---|
committer | bacalhau <bacalhau@based.pt> | 2025-06-08 15:55:29 +0100 |
commit | a3f76f49addeecb6138ee2ae1d089c60d2df04a7 (patch) | |
tree | 9b5ea1d3ef854d19f8239967c21d728edb27a397 /dwm/util.c.orig | |
parent | 3ab7348ee95f2918cb9ae299290a812252663923 (diff) |
Diffstat (limited to 'dwm/util.c.orig')
-rwxr-xr-x | dwm/util.c.orig | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/dwm/util.c.orig b/dwm/util.c.orig new file mode 100755 index 0000000..0eff265 --- /dev/null +++ b/dwm/util.c.orig @@ -0,0 +1,66 @@ +/* See LICENSE file for copyright and license details. */ +#include <errno.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#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); +} +/* + * Splits a string into segments according to a separator. A '\0' is written to + * the end of every segment. The beginning of every segment is written to + * 'pbegin'. Only the first 'maxcount' segments will be written if + * maxcount > 0. Inspired by python's split. + * + * Used exclusively by fakesignal() to split arguments. + */ +size_t +split(char *s, const char* sep, char **pbegin, size_t maxcount) { + + char *p, *q; + const size_t seplen = strlen(sep); + size_t count = 0; + + maxcount = maxcount == 0 ? (size_t)-1 : maxcount; + p = s; + while ((q = strstr(p, sep)) != NULL && count < maxcount) { + pbegin[count] = p; + *q = '\0'; + p = q + seplen; + count++; + } + if (count < maxcount) { + pbegin[count] = p; + count++; + } + return count; +} + +void * +ecalloc(size_t nmemb, size_t size) +{ + void *p; + + if (!(p = calloc(nmemb, size))) + die("calloc:"); + return p; +} |