/***************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | * / __| | | | |_) | | * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * * * This is an example application source code using the multi interface. */ #include #include /* somewhat unix-specific */ #include #include /* curl stuff */ #include /* * Download a HTTP file and upload an FTP file simultaneously. */ #define HANDLECOUNT 2 /* Number of simultaneous transfers */ #define HTTP_HANDLE 0 /* Index for the HTTP transfer */ #define FTP_HANDLE 1 /* Index for the FTP transfer */ int main(int argc, char **argv) { CURL *handles[HANDLECOUNT]; CURLM *multi_handle; int still_running; /* keep number of running handles */ int i; CURLMsg *msg; /* for picking up messages with the transfer status */ int msgs_left; /* how many messages are left */ /* Allocate one CURL handle per transfer */ for (i=0; imsg == CURLMSG_DONE) { int idx, found = 0; /* Find out which handle this message is about */ for (idx=0; idxeasy_handle == handles[idx]); if(found) break; } switch (idx) { case HTTP_HANDLE: printf("HTTP transfer completed with status %d\n", msg->data.result); break; case FTP_HANDLE: printf("FTP transfer completed with status %d\n", msg->data.result); break; } } } curl_multi_cleanup(multi_handle); /* Free the CURL handles */ for (i=0; i