commit e5fc661626336e227e0cedde8abb154549370b6b
Author: finwo <finwo@pm.me>
Date: Tue, 24 Oct 2023 00:32:09 +0200
Project init
Diffstat:
4 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/config.mk b/config.mk
@@ -0,0 +1 @@
+SRC+=__DIRNAME/src/asprintf.c
diff --git a/package.ini b/package.ini
@@ -0,0 +1,6 @@
+[export]
+config.mk=config.mk
+include/finwo/asprintf.h=src/asprintf.h
+
+[package]
+name=finwo/asprintf.h
diff --git a/src/asprintf.c b/src/asprintf.c
@@ -0,0 +1,16 @@
+#ifndef _GNU_SOURCE
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+// Polyfill asprintf, comes from stdio when _GNU_SOURCE is defined
+char * asprintf(char **restrict strp, const char *restrict fmt, ...) {
+ va_list argptr;
+ va_start(argptr, fmt);
+ int size = vsnprintf(NULL, 0, fmt, argptr);
+ char *output = calloc(1, size + 1);
+ vsnprintf(output, size + 1, fmt, argptr);
+ va_end(argptr);
+ return output;
+}
+#endif
diff --git a/src/asprintf.h b/src/asprintf.h
@@ -0,0 +1,5 @@
+#ifdef _GNU_SOURCE
+#include <stdio.h>
+#else
+char * asprintf(char **restrict strp, const char *restrict fmt, ...);
+#endif