Annotation of embedaddon/curl/tests/libtest/lib661.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
! 9: *
! 10: * This software is licensed as described in the file COPYING, which
! 11: * you should have received as part of this distribution. The terms
! 12: * are also available at https://curl.haxx.se/docs/copyright.html.
! 13: *
! 14: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 15: * copies of the Software, and permit persons to whom the Software is
! 16: * furnished to do so, under the terms of the COPYING file.
! 17: *
! 18: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 19: * KIND, either express or implied.
! 20: *
! 21: ***************************************************************************/
! 22: #include "test.h"
! 23: #include "memdebug.h"
! 24:
! 25: int test(char *URL)
! 26: {
! 27: CURLcode res;
! 28: CURL *curl = NULL;
! 29: char *newURL = NULL;
! 30: struct curl_slist *slist = NULL;
! 31:
! 32: if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
! 33: fprintf(stderr, "curl_global_init() failed\n");
! 34: return TEST_ERR_MAJOR_BAD;
! 35: }
! 36:
! 37: curl = curl_easy_init();
! 38: if(!curl) {
! 39: fprintf(stderr, "curl_easy_init() failed\n");
! 40: res = TEST_ERR_MAJOR_BAD;
! 41: goto test_cleanup;
! 42: }
! 43:
! 44: /* test: CURLFTPMETHOD_SINGLECWD with absolute path should
! 45: skip CWD to entry path */
! 46: newURL = aprintf("%s/folderA/661", URL);
! 47: test_setopt(curl, CURLOPT_URL, newURL);
! 48: test_setopt(curl, CURLOPT_VERBOSE, 1L);
! 49: test_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
! 50: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
! 51: res = curl_easy_perform(curl);
! 52:
! 53: free(newURL);
! 54: newURL = aprintf("%s/folderB/661", URL);
! 55: test_setopt(curl, CURLOPT_URL, newURL);
! 56: res = curl_easy_perform(curl);
! 57:
! 58: /* test: CURLFTPMETHOD_NOCWD with absolute path should
! 59: never emit CWD (for both new and reused easy handle) */
! 60: curl_easy_cleanup(curl);
! 61: curl = curl_easy_init();
! 62: if(!curl) {
! 63: fprintf(stderr, "curl_easy_init() failed\n");
! 64: res = TEST_ERR_MAJOR_BAD;
! 65: goto test_cleanup;
! 66: }
! 67:
! 68: free(newURL);
! 69: newURL = aprintf("%s/folderA/661", URL);
! 70: test_setopt(curl, CURLOPT_URL, newURL);
! 71: test_setopt(curl, CURLOPT_VERBOSE, 1L);
! 72: test_setopt(curl, CURLOPT_IGNORE_CONTENT_LENGTH, 1L);
! 73: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
! 74: res = curl_easy_perform(curl);
! 75:
! 76: /* curve ball: CWD /folderB before reusing connection with _NOCWD */
! 77: free(newURL);
! 78: newURL = aprintf("%s/folderB/661", URL);
! 79: test_setopt(curl, CURLOPT_URL, newURL);
! 80: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
! 81: res = curl_easy_perform(curl);
! 82:
! 83: free(newURL);
! 84: newURL = aprintf("%s/folderA/661", URL);
! 85: test_setopt(curl, CURLOPT_URL, newURL);
! 86: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
! 87: res = curl_easy_perform(curl);
! 88:
! 89: /* test: CURLFTPMETHOD_NOCWD with home-relative path should
! 90: not emit CWD for first FTP access after login */
! 91: curl_easy_cleanup(curl);
! 92: curl = curl_easy_init();
! 93: if(!curl) {
! 94: fprintf(stderr, "curl_easy_init() failed\n");
! 95: res = TEST_ERR_MAJOR_BAD;
! 96: goto test_cleanup;
! 97: }
! 98:
! 99: slist = curl_slist_append(NULL, "SYST");
! 100: if(slist == NULL) {
! 101: fprintf(stderr, "curl_slist_append() failed\n");
! 102: res = TEST_ERR_MAJOR_BAD;
! 103: goto test_cleanup;
! 104: }
! 105:
! 106: test_setopt(curl, CURLOPT_URL, URL);
! 107: test_setopt(curl, CURLOPT_VERBOSE, 1L);
! 108: test_setopt(curl, CURLOPT_NOBODY, 1L);
! 109: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
! 110: test_setopt(curl, CURLOPT_QUOTE, slist);
! 111: res = curl_easy_perform(curl);
! 112:
! 113: /* test: CURLFTPMETHOD_SINGLECWD with home-relative path should
! 114: not emit CWD for first FTP access after login */
! 115: curl_easy_cleanup(curl);
! 116: curl = curl_easy_init();
! 117: if(!curl) {
! 118: fprintf(stderr, "curl_easy_init() failed\n");
! 119: res = TEST_ERR_MAJOR_BAD;
! 120: goto test_cleanup;
! 121: }
! 122:
! 123: test_setopt(curl, CURLOPT_URL, URL);
! 124: test_setopt(curl, CURLOPT_VERBOSE, 1L);
! 125: test_setopt(curl, CURLOPT_NOBODY, 1L);
! 126: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
! 127: test_setopt(curl, CURLOPT_QUOTE, slist);
! 128: res = curl_easy_perform(curl);
! 129:
! 130: /* test: CURLFTPMETHOD_NOCWD with home-relative path should
! 131: not emit CWD for second FTP access when not needed +
! 132: bonus: see if path buffering survives curl_easy_reset() */
! 133: curl_easy_reset(curl);
! 134: test_setopt(curl, CURLOPT_URL, URL);
! 135: test_setopt(curl, CURLOPT_VERBOSE, 1L);
! 136: test_setopt(curl, CURLOPT_NOBODY, 1L);
! 137: test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
! 138: test_setopt(curl, CURLOPT_QUOTE, slist);
! 139: res = curl_easy_perform(curl);
! 140:
! 141:
! 142: test_cleanup:
! 143:
! 144: curl_slist_free_all(slist);
! 145: free(newURL);
! 146: curl_easy_cleanup(curl);
! 147: curl_global_cleanup();
! 148:
! 149: return (int)res;
! 150: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>