diff options
| author | 2023-04-03 10:40:17 -0400 | |
|---|---|---|
| committer | 2023-04-03 10:40:17 -0400 | |
| commit | 4c5cf9aa40c116938af1039facffe52a6091d744 (patch) | |
| tree | 78423169732dc051608a26e8f4a07036cb2d7de3 | |
| parent | meta: update to 1.1.2 (diff) | |
native: make strings more permissive
* adds a getcbytes that accepts any JanetBytes
* use it across the board, except where we can inform curl of the length
| -rw-r--r-- | src/jurl.h | 1 | ||||
| -rw-r--r-- | src/mime.c | 8 | ||||
| -rw-r--r-- | src/setopt.c | 2 | ||||
| -rw-r--r-- | src/util.c | 10 |
4 files changed, 15 insertions, 6 deletions
@@ -90,6 +90,7 @@ 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); @@ -106,7 +106,7 @@ JANET_CFUN(jurl_mime_name) { if (janet_checktype(argv[1], JANET_NIL)) { ret = curl_mime_name(part->mimepart, NULL); } else { - const char *s = (const char*)janet_getcstring(argv, 1); + const char *s = (const char*)janet_getcbytes(argv, 1); ret = curl_mime_name(part->mimepart, s); } return jurl_geterror(ret); @@ -198,7 +198,7 @@ JANET_CFUN(jurl_mime_filedata) { if (janet_checktype(argv[1], JANET_NIL)) { ret = curl_mime_filedata(part->mimepart, NULL); } else { - const char *s = (const char*)janet_getcstring(argv, 1); + const char *s = (const char*)janet_getcbytes(argv, 1); ret = curl_mime_filedata(part->mimepart, s); } return jurl_geterror(ret); @@ -211,7 +211,7 @@ JANET_CFUN(jurl_mime_filename) { if (janet_checktype(argv[1], JANET_NIL)) { ret = curl_mime_filename(part->mimepart, NULL); } else { - const char *s = (const char*)janet_getcstring(argv, 1); + const char *s = (const char*)janet_getcbytes(argv, 1); ret = curl_mime_filename(part->mimepart, s); } return jurl_geterror(ret); @@ -224,7 +224,7 @@ JANET_CFUN(jurl_mime_type) { if (janet_checktype(argv[1], JANET_NIL)) { ret = curl_mime_type(part->mimepart, NULL); } else { - const char *s = (const char*)janet_getcstring(argv, 1); + const char *s = (const char*)janet_getcbytes(argv, 1); ret = curl_mime_type(part->mimepart, s); } return jurl_geterror(ret); diff --git a/src/setopt.c b/src/setopt.c index 1d70587..a82f34d 100644 --- a/src/setopt.c +++ b/src/setopt.c @@ -413,7 +413,7 @@ JANET_CFUN(jurl_setopt) { )); } else { return jurl_geterror( - curl_easy_setopt(jurl->handle, opt->opt, janet_getcstring(argv, 2) + curl_easy_setopt(jurl->handle, opt->opt, janet_getcbytes(argv, 2) )); } break; @@ -4,7 +4,7 @@ int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n) { JanetView args = janet_getindexed(argv, n); for (int32_t i = 0; i< args.len; i++) { - const char *s = janet_getcstring(args.items, i); + const char *s = janet_getcbytes(args.items, i); struct curl_slist *newlist = curl_slist_append(*slist, s); if (!newlist) { return 0; @@ -14,6 +14,14 @@ 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); |
