Add local asprintf in case not available on target system - sacc - sacc(omys), … | |
git clone git://bitreich.org/sacc/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
LICENSE | |
--- | |
commit 7147f4745a6d08c9986e26df265d59db174663f8 | |
parent 551de298348c406d14ab8f2787cfeabbeb89bd6e | |
Author: Quentin Rameau <[email protected]> | |
Date: Sat, 24 Feb 2018 13:24:26 +0100 | |
Add local asprintf in case not available on target system | |
Diffstat: | |
M common.h | 3 +++ | |
M sacc.c | 29 ++++++++++++++++++++++++++--- | |
2 files changed, 29 insertions(+), 3 deletions(-) | |
--- | |
diff --git a/common.h b/common.h | |
@@ -22,6 +22,9 @@ struct dir { | |
size_t curline; | |
}; | |
+#ifndef asprintf | |
+int asprintf(char **s, const char *fmt, ...); | |
+#endif /* asprintf */ | |
void die(const char *fmt, ...); | |
size_t mbsprint(const char *s, size_t len); | |
const char *typedisplay(char t); | |
diff --git a/sacc.c b/sacc.c | |
@@ -1,6 +1,7 @@ | |
/* See LICENSE file for copyright and license details. */ | |
#include <errno.h> | |
#include <fcntl.h> | |
+#include <limits.h> | |
#include <locale.h> | |
#include <netdb.h> | |
#include <netinet/in.h> | |
@@ -39,6 +40,28 @@ die(const char *fmt, ...) | |
exit(1); | |
} | |
+#ifndef asprintf | |
+int | |
+asprintf(char **s, const char *fmt, ...) | |
+{ | |
+ va_list ap; | |
+ int n; | |
+ | |
+ va_start(ap, fmt); | |
+ n = vsnprintf(NULL, 0, fmt, ap); | |
+ va_end(ap); | |
+ | |
+ if (n == INT_MAX || !(*s = malloc(++n))) | |
+ return -1; | |
+ | |
+ va_start(ap, fmt); | |
+ vsnprintf(*s, n, fmt, ap); | |
+ va_end(ap); | |
+ | |
+ return n; | |
+} | |
+#endif /* asprintf */ | |
+ | |
/* print `len' columns of characters. */ | |
size_t | |
mbsprint(const char *s, size_t len) | |
@@ -558,9 +581,9 @@ plumbitem(Item *item) | |
if (!path[0]) { | |
clear(&path); | |
if (!tag) { | |
- n = snprintf(NULL, 0, "%s/%s", tmpdir, file); | |
- path = xmalloc(++n); | |
- snprintf(path, n, "%s/%s", tmpdir, file); | |
+ if (asprintf(&path, "%s/%s", tmpdir, file) < 0) | |
+ die("Can't generate tmpdir path: ", | |
+ strerror(errno)); | |
} | |
} | |