lib507.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "test.h"
  2. int test(char *URL)
  3. {
  4. CURL* curls;
  5. CURLM* multi;
  6. int still_running;
  7. int i;
  8. CURLMsg *msg;
  9. multi = curl_multi_init();
  10. curls=curl_easy_init();
  11. curl_easy_setopt(curls, CURLOPT_URL, URL);
  12. curl_multi_add_handle(multi, curls);
  13. while ( CURLM_CALL_MULTI_PERFORM == curl_multi_perform(multi, &still_running) );
  14. while(still_running) {
  15. struct timeval timeout;
  16. int rc;
  17. fd_set fdread;
  18. fd_set fdwrite;
  19. fd_set fdexcep;
  20. int maxfd;
  21. FD_ZERO(&fdread);
  22. FD_ZERO(&fdwrite);
  23. FD_ZERO(&fdexcep);
  24. timeout.tv_sec = 1;
  25. timeout.tv_usec = 0;
  26. curl_multi_fdset(multi, &fdread, &fdwrite, &fdexcep, &maxfd);
  27. rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
  28. switch(rc) {
  29. case -1:
  30. break;
  31. case 0:
  32. default:
  33. while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(multi, &still_running));
  34. break;
  35. }
  36. }
  37. msg = curl_multi_info_read(multi, &still_running);
  38. /* this should now contain a result code from the easy handle,
  39. get it */
  40. i = msg->data.result;
  41. curl_multi_cleanup(multi);
  42. curl_easy_cleanup(curls);
  43. return i; /* return the final return code */
  44. }