From ca5f9341ef0a941ed478bc5c7e79397b68c2a616 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 24 Oct 2015 00:52:25 +0200 Subject: formadd: support >2GB files on windows Closes #425 --- tests/libtest/lib554.c | 54 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 15 deletions(-) (limited to 'tests/libtest/lib554.c') diff --git a/tests/libtest/lib554.c b/tests/libtest/lib554.c index 0596f3ef1..c54d99e86 100644 --- a/tests/libtest/lib554.c +++ b/tests/libtest/lib554.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -64,7 +64,7 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) #endif } -int test(char *URL) +static int once(char *URL, bool oldstyle) { CURL *curl; CURLcode res=CURLE_OK; @@ -75,22 +75,29 @@ int test(char *URL) struct WriteThis pooh; struct WriteThis pooh2; - if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { - fprintf(stderr, "curl_global_init() failed\n"); - return TEST_ERR_MAJOR_BAD; - } - pooh.readptr = data; pooh.sizeleft = strlen(data); /* Fill in the file upload field */ - formrc = curl_formadd(&formpost, - &lastptr, - CURLFORM_COPYNAME, "sendfile", - CURLFORM_STREAM, &pooh, - CURLFORM_CONTENTSLENGTH, (long)pooh.sizeleft, - CURLFORM_FILENAME, "postit2.c", - CURLFORM_END); + if(oldstyle) { + formrc = curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "sendfile", + CURLFORM_STREAM, &pooh, + CURLFORM_CONTENTSLENGTH, (long)pooh.sizeleft, + CURLFORM_FILENAME, "postit2.c", + CURLFORM_END); + } + else { + /* new style */ + formrc = curl_formadd(&formpost, + &lastptr, + CURLFORM_COPYNAME, "sendfile alternative", + CURLFORM_STREAM, &pooh, + CURLFORM_CONTENTLEN, (curl_off_t)pooh.sizeleft, + CURLFORM_FILENAME, "file name 2", + CURLFORM_END); + } if(formrc) printf("curl_formadd(1) = %d\n", (int)formrc); @@ -190,10 +197,27 @@ test_cleanup: /* always cleanup */ curl_easy_cleanup(curl); - curl_global_cleanup(); /* now cleanup the formpost chain */ curl_formfree(formpost); return res; } + +int test(char *URL) +{ + int res; + + if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) { + fprintf(stderr, "curl_global_init() failed\n"); + return TEST_ERR_MAJOR_BAD; + } + + res = once(URL, TRUE); /* old */ + if(!res) + res = once(URL, FALSE); /* new */ + + curl_global_cleanup(); + + return res; +} -- cgit v1.2.3