Return to ftpgetresp.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / docs / examples |
1.1 ! misho 1: /*************************************************************************** ! 2: * _ _ ____ _ ! 3: * Project ___| | | | _ \| | ! 4: * / __| | | | |_) | | ! 5: * | (__| |_| | _ <| |___ ! 6: * \___|\___/|_| \_\_____| ! 7: * ! 8: * Copyright (C) 1998 - 2016, 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 <stdio.h> ! 23: ! 24: #include <curl/curl.h> ! 25: ! 26: /* <DESC> ! 27: * Similar to ftpget.c but also stores the received response-lines ! 28: * in a separate file using our own callback! ! 29: * </DESC> ! 30: */ ! 31: static size_t ! 32: write_response(void *ptr, size_t size, size_t nmemb, void *data) ! 33: { ! 34: FILE *writehere = (FILE *)data; ! 35: return fwrite(ptr, size, nmemb, writehere); ! 36: } ! 37: ! 38: #define FTPBODY "ftp-list" ! 39: #define FTPHEADERS "ftp-responses" ! 40: ! 41: int main(void) ! 42: { ! 43: CURL *curl; ! 44: CURLcode res; ! 45: FILE *ftpfile; ! 46: FILE *respfile; ! 47: ! 48: /* local file name to store the file as */ ! 49: ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */ ! 50: ! 51: /* local file name to store the FTP server's response lines in */ ! 52: respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */ ! 53: ! 54: curl = curl_easy_init(); ! 55: if(curl) { ! 56: /* Get a file listing from sunet */ ! 57: curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/"); ! 58: curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile); ! 59: /* If you intend to use this on windows with a libcurl DLL, you must use ! 60: CURLOPT_WRITEFUNCTION as well */ ! 61: curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response); ! 62: curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile); ! 63: res = curl_easy_perform(curl); ! 64: /* Check for errors */ ! 65: if(res != CURLE_OK) ! 66: fprintf(stderr, "curl_easy_perform() failed: %s\n", ! 67: curl_easy_strerror(res)); ! 68: ! 69: /* always cleanup */ ! 70: curl_easy_cleanup(curl); ! 71: } ! 72: ! 73: fclose(ftpfile); /* close the local file */ ! 74: fclose(respfile); /* close the response file */ ! 75: ! 76: return 0; ! 77: }