diff options
| author | 2023-03-25 21:26:23 -0400 | |
|---|---|---|
| committer | 2023-03-25 21:26:23 -0400 | |
| commit | 890548308a637fac12194a8aae2ee08f4626b22d (patch) | |
| tree | 7f7d399742171455c8f224634699475b3a71b882 /src | |
| parent | native: use a macro for size of jurl_opts (diff) | |
native: allow write callback to handle <size bytes
Diffstat (limited to 'src')
| -rw-r--r-- | src/callbacks.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/callbacks.c b/src/callbacks.c index 9968c5a..7e92ba5 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -9,7 +9,10 @@ static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdat janet_buffer_push_bytes(buf, (const uint8_t*)ptr, realsize); Janet argv[1] = { janet_wrap_buffer(buf), }; - janet_call(fun, 1, argv); + Janet out = janet_call(fun, 1, argv); + if (janet_checktype(out, JANET_NUMBER)) { + return janet_unwrap_integer(out); // TODO: maybe try 64bit? + } return realsize; } @@ -142,7 +145,7 @@ static int prereq_callback(void *clientp, CURLcode jurl_setcallback(jurl_handle *jurl, CURLoption opt, JanetFunction *fun) { CURLcode res = 0; // we |= it so just check for != CURLE_OK switch (opt) { - case CURLOPT_WRITEFUNCTION: // buffer -> void + case CURLOPT_WRITEFUNCTION: // buffer -> number | any res |= curl_easy_setopt(jurl->handle, CURLOPT_WRITEDATA, fun); res |= curl_easy_setopt(jurl->handle, CURLOPT_WRITEFUNCTION, write_callback); break; |
