1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

made it work

made it cause less compiler warnings
made it require 7.9.7 to build
This commit is contained in:
Daniel Stenberg 2003-01-27 10:25:20 +00:00
parent 2b054e5309
commit 173b35eaf8

View File

@ -22,10 +22,13 @@
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#if (LIBCURL_VERSION_NUM < 0x070907)
#error "too old libcurl version, get the latest!"
#endif
struct data {
int type;
@ -34,8 +37,8 @@ struct data {
FILE *file;
} handle;
/* TODO: We should perhaps document the biggest possible buffer chunk we can
get from libcurl in one single callback... */
/* This is the documented biggest possible buffer chunk we can get from
libcurl in one single callback! */
char buffer[CURL_MAX_WRITE_SIZE];
char *readptr; /* read from here */
@ -62,6 +65,8 @@ size_t write_callback(char *buffer,
url->readptr += size;
url->bytes += size;
fprintf(stderr, "callback %d size bytes\n", size);
return size;
}
@ -72,6 +77,7 @@ URL_FILE *url_fopen(char *url, char *operation)
URL_FILE *file;
int still_running;
(void)operation;
file = (URL_FILE *)malloc(sizeof(URL_FILE));
if(!file)
@ -134,47 +140,51 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
}
}
if(!still_running) {
printf("NO MORE RUNNING AROUND!\n");
printf("DONE RUNNING AROUND!\n");
return 0;
}
}
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
do {
/* set a suitable timeout to fail on */
timeout.tv_sec = 500; /* 5 minutes */
timeout.tv_usec = 0;
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep);
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
/* set a suitable timeout to fail on */
timeout.tv_sec = 500; /* 5 minutes */
timeout.tv_usec = 0;
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
/* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
switch(rc) {
case -1:
/* select error */
break;
case 0:
break;
default:
/* timeout or readable/writable sockets */
do {
file->m = curl_multi_perform(multi_handle, &still_running);
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
if(file->bytes)
/* we have received data, return that now */
break;
switch(rc) {
case -1:
/* select error */
break;
case 0:
break;
default:
/* timeout or readable/writable sockets */
printf("select() returned %d!\n", rc);
do {
file->m = curl_multi_perform(multi_handle, &still_running);
} while(CURLM_CALL_MULTI_PERFORM == file->m);
if(file->bytes)
/* we have received data, return that now */
break;
} while(CURLM_CALL_MULTI_PERFORM == file->m);
if(!still_running)
printf("NO MORE RUNNING AROUND!\n");
if(!still_running)
printf("DONE RUNNING AROUND!\n");
break;
}
break;
}
} while(still_running && (file->bytes <= 0));
}
else
printf("(fread) Skip network read\n");
@ -204,7 +214,10 @@ int main(int argc, char *argv[])
int nread;
char buffer[256];
handle = url_fopen("http://www.haxx.se", "r");
(void)argc;
(void)argv;
handle = url_fopen("http://curl.haxx.se/", "r");
if(!handle) {
printf("couldn't url_fopen()\n");