File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / tests / libtest / lib541.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:16 2020 UTC (5 years, 6 months ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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: 
   24: #ifdef HAVE_FCNTL_H
   25: #include <fcntl.h>
   26: #endif
   27: 
   28: #include "memdebug.h"
   29: 
   30: /*
   31:  * Two FTP uploads, the second with no content sent.
   32:  */
   33: 
   34: int test(char *URL)
   35: {
   36:   CURL *curl;
   37:   CURLcode res = CURLE_OK;
   38:   FILE *hd_src;
   39:   int hd;
   40:   struct_stat file_info;
   41: 
   42:   if(!libtest_arg2) {
   43:     fprintf(stderr, "Usage: <url> <file-to-upload>\n");
   44:     return TEST_ERR_USAGE;
   45:   }
   46: 
   47:   hd_src = fopen(libtest_arg2, "rb");
   48:   if(NULL == hd_src) {
   49:     fprintf(stderr, "fopen failed with error: %d %s\n",
   50:             errno, strerror(errno));
   51:     fprintf(stderr, "Error opening file: %s\n", libtest_arg2);
   52:     return -2; /* if this happens things are major weird */
   53:   }
   54: 
   55:   /* get the file size of the local file */
   56:   hd = fstat(fileno(hd_src), &file_info);
   57:   if(hd == -1) {
   58:     /* can't open file, bail out */
   59:     fprintf(stderr, "fstat() failed with error: %d %s\n",
   60:             errno, strerror(errno));
   61:     fprintf(stderr, "ERROR: cannot open file %s\n", libtest_arg2);
   62:     fclose(hd_src);
   63:     return TEST_ERR_MAJOR_BAD;
   64:   }
   65: 
   66:   if(! file_info.st_size) {
   67:     fprintf(stderr, "ERROR: file %s has zero size!\n", libtest_arg2);
   68:     fclose(hd_src);
   69:     return TEST_ERR_MAJOR_BAD;
   70:   }
   71: 
   72:   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
   73:     fprintf(stderr, "curl_global_init() failed\n");
   74:     fclose(hd_src);
   75:     return TEST_ERR_MAJOR_BAD;
   76:   }
   77: 
   78:   /* get a curl handle */
   79:   curl = curl_easy_init();
   80:   if(!curl) {
   81:     fprintf(stderr, "curl_easy_init() failed\n");
   82:     curl_global_cleanup();
   83:     fclose(hd_src);
   84:     return TEST_ERR_MAJOR_BAD;
   85:   }
   86: 
   87:   /* enable uploading */
   88:   test_setopt(curl, CURLOPT_UPLOAD, 1L);
   89: 
   90:   /* enable verbose */
   91:   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   92: 
   93:   /* specify target */
   94:   test_setopt(curl, CURLOPT_URL, URL);
   95: 
   96:   /* now specify which file to upload */
   97:   test_setopt(curl, CURLOPT_READDATA, hd_src);
   98: 
   99:   /* Now run off and do what you've been told! */
  100:   curl_easy_perform(curl);
  101: 
  102:   /* and now upload the exact same again, but without rewinding so it already
  103:      is at end of file */
  104:   res = curl_easy_perform(curl);
  105: 
  106: test_cleanup:
  107: 
  108:   /* close the local file */
  109:   fclose(hd_src);
  110: 
  111:   curl_easy_cleanup(curl);
  112:   curl_global_cleanup();
  113: 
  114:   return res;
  115: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>