aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-05-07 17:57:49 -0400
committerChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-05-07 17:57:49 -0400
commit46fdc953c70c1dc0afb12b52d8c68a6a7a078887 (patch)
tree310a712cf1f6f7387d3d4e448aea1571ea95cf16 /src
parentgit: also ignore compile_flags.txt (diff)
native: polyfills for get/opt cbytes
Diffstat (limited to 'src')
-rw-r--r--src/jurl.h11
-rw-r--r--src/polyfill.c19
-rw-r--r--src/util.c8
3 files changed, 29 insertions, 9 deletions
diff --git a/src/jurl.h b/src/jurl.h
index 2f720c0..5a318f6 100644
--- a/src/jurl.h
+++ b/src/jurl.h
@@ -2,6 +2,16 @@
#include <curl/curl.h>
#include <janet.h>
+// = polyfills
+#if JANET_VERSION_MAJOR < 2 && JANET_VERSION_MINOR < 28
+#define POLYFILL_CBYTES
+#endif
+
+#ifdef POLYFILL_CBYTES
+const char *janet_getcbytes(const Janet *argv, int32_t n);
+const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt);
+#endif
+
// = structures
// cleanup.c
@@ -90,7 +100,6 @@ JANET_CFUN(jurl_setopt);
// util.c
int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n);
-const char *janet_getcbytes(const Janet *argv, int32_t n);
JANET_CFUN(jurl_escape);
JANET_CFUN(jurl_unescape);
JANET_CFUN(jurl_wrap_error);
diff --git a/src/polyfill.c b/src/polyfill.c
new file mode 100644
index 0000000..f7db312
--- /dev/null
+++ b/src/polyfill.c
@@ -0,0 +1,19 @@
+#include "jurl.h"
+
+#ifdef POLYFILL_CBYTES
+const char* janet_getcbytes(const Janet *argv, int32_t n) {
+ JanetByteView view = janet_getbytes(argv, n);
+ const char *cstr = (const char *)view.bytes;
+ if (strlen(cstr) != (size_t) view.len) {
+ janet_panic("bytes contain embedded 0s");
+ }
+ return cstr;
+}
+
+const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
+ if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
+ return dflt;
+ }
+ return janet_getcbytes(argv, n);
+}
+#endif
diff --git a/src/util.c b/src/util.c
index 0938ada..6d47298 100644
--- a/src/util.c
+++ b/src/util.c
@@ -14,14 +14,6 @@ int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n) {
return 1;
}
-const char *janet_getcbytes(const Janet *argv, int32_t n) {
- JanetByteView b = janet_getbytes(argv, n);
- if (strlen((const char*) b.bytes) != (size_t) b.len) {
- janet_panic("bytes contain embedded 0s");
- }
- return (const char*)b.bytes;
-}
-
JANET_CFUN(jurl_escape) {
janet_fixarity(argc, 1);
JanetByteView b = janet_getbytes(argv, 0);