Annotation of embedaddon/curl/docs/examples/url2file.c, revision 1.1.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: /* <DESC>
23: * Download a given URL into a local file named page.out.
24: * </DESC>
25: */
26: #include <stdio.h>
27: #include <stdlib.h>
28: #include <unistd.h>
29:
30: #include <curl/curl.h>
31:
32: static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
33: {
34: size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
35: return written;
36: }
37:
38: int main(int argc, char *argv[])
39: {
40: CURL *curl_handle;
41: static const char *pagefilename = "page.out";
42: FILE *pagefile;
43:
44: if(argc < 2) {
45: printf("Usage: %s <URL>\n", argv[0]);
46: return 1;
47: }
48:
49: curl_global_init(CURL_GLOBAL_ALL);
50:
51: /* init the curl session */
52: curl_handle = curl_easy_init();
53:
54: /* set URL to get here */
55: curl_easy_setopt(curl_handle, CURLOPT_URL, argv[1]);
56:
57: /* Switch on full protocol/debug output while testing */
58: curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1L);
59:
60: /* disable progress meter, set to 0L to enable it */
61: curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L);
62:
63: /* send all data to this function */
64: curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
65:
66: /* open the file */
67: pagefile = fopen(pagefilename, "wb");
68: if(pagefile) {
69:
70: /* write the page body to this file handle */
71: curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
72:
73: /* get it! */
74: curl_easy_perform(curl_handle);
75:
76: /* close the header file */
77: fclose(pagefile);
78: }
79:
80: /* cleanup curl stuff */
81: curl_easy_cleanup(curl_handle);
82:
83: curl_global_cleanup();
84:
85: return 0;
86: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>