quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

lib539.c (2739B)


      1 /***************************************************************************
      2  *                                  _   _ ____  _
      3  *  Project                     ___| | | |  _ \| |
      4  *                             / __| | | | |_) | |
      5  *                            | (__| |_| |  _ <| |___
      6  *                             \___|\___/|_| \_\_____|
      7  *
      8  * Copyright (C) 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.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  * SPDX-License-Identifier: curl
     22  *
     23  ***************************************************************************/
     24 #include "first.h"
     25 
     26 #include "memdebug.h"
     27 
     28 static CURLcode test_lib539(char *URL)
     29 {
     30   CURLcode res;
     31   CURL *curl;
     32   char *newURL = NULL;
     33   struct curl_slist *slist = NULL;
     34 
     35   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     36     curl_mfprintf(stderr, "curl_global_init() failed\n");
     37     return TEST_ERR_MAJOR_BAD;
     38   }
     39 
     40   curl = curl_easy_init();
     41   if(!curl) {
     42     curl_mfprintf(stderr, "curl_easy_init() failed\n");
     43     curl_global_cleanup();
     44     return TEST_ERR_MAJOR_BAD;
     45   }
     46 
     47   /*
     48    * Begin with curl set to use a single CWD to the URL's directory.
     49    */
     50   test_setopt(curl, CURLOPT_URL, URL);
     51   test_setopt(curl, CURLOPT_VERBOSE, 1L);
     52   test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_SINGLECWD);
     53 
     54   res = curl_easy_perform(curl);
     55   if(res == CURLE_OK) {
     56     /*
     57      * Change the FTP_FILEMETHOD option to use full paths rather than a CWD
     58      * command. Use an innocuous QUOTE command, after which curl will CWD to
     59      * ftp_conn->entrypath and then (on the next call to ftp_statemach_act)
     60      * find a non-zero ftpconn->dirdepth even though no directories are stored
     61      * in the ftpconn->dirs array (after a call to freedirs).
     62      */
     63 
     64     slist = curl_slist_append(NULL, "SYST");
     65     if(!slist) {
     66       curl_free(newURL);
     67       curl_easy_cleanup(curl);
     68       curl_global_cleanup();
     69       return TEST_ERR_MAJOR_BAD;
     70     }
     71 
     72     test_setopt(curl, CURLOPT_URL, libtest_arg2);
     73     test_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long) CURLFTPMETHOD_NOCWD);
     74     test_setopt(curl, CURLOPT_QUOTE, slist);
     75 
     76     res = curl_easy_perform(curl);
     77   }
     78 test_cleanup:
     79 
     80   curl_slist_free_all(slist);
     81   curl_free(newURL);
     82   curl_easy_cleanup(curl);
     83   curl_global_cleanup();
     84 
     85   return res;
     86 }