1 /*****************************************************************************
3 * Project ___| | | | _ \| |
5 * | (__| |_| | _ <| |___
6 * \___|\___/|_| \_\_____|
13 #include <sys/types.h>
21 CURL *curl[NUM_HANDLES];
27 /* In windows, this will init the winsock stuff */
28 curl_global_init(CURL_GLOBAL_ALL);
30 m = curl_multi_init();
32 /* get NUM_HANDLES easy handles */
33 for(i=0; i < NUM_HANDLES; i++) {
34 curl[i] = curl_easy_init();
36 curl_global_cleanup();
37 return 100 + i; /* major bad */
39 curl_easy_setopt(curl[i], CURLOPT_URL, URL);
42 curl_easy_setopt(curl[i], CURLOPT_VERBOSE, 1);
45 curl_easy_setopt(curl[i], CURLOPT_HEADER, 1);
47 res = (int)curl_multi_add_handle(m, curl[i]);
50 curl_multi_setopt(m, CURLMOPT_PIPELINING, 1);
52 fprintf(stderr, "Start at URL 0\n");
57 struct timeval interval;
62 while (res == CURLM_CALL_MULTI_PERFORM) {
63 res = (int)curl_multi_perform(m, &running);
65 done = TRUE; /* bail out */
72 if (res != CURLM_OK) {
73 fprintf(stderr, "not okay???\n");
82 if (curl_multi_fdset(m, &rd, &wr, &exc, &max_fd) != CURLM_OK) {
83 fprintf(stderr, "unexpected failured of fdset.\n");
88 if (select_test(max_fd+1, &rd, &wr, &exc, &interval) == -1) {
89 fprintf(stderr, "bad select??\n");
94 res = CURLM_CALL_MULTI_PERFORM;
97 /* get NUM_HANDLES easy handles */
98 for(i=0; i < NUM_HANDLES; i++) {
99 curl_multi_remove_handle(m, curl[i]);
100 curl_easy_cleanup(curl[i]);
103 curl_multi_cleanup(m);
105 curl_global_cleanup();