53 # include <sys/time.h> 110 if(newbuff == NULL) {
111 fprintf(stderr,
"callback buffer grow failed\n");
146 long curl_timeo = -1;
157 if(curl_timeo >= 0) {
158 timeout.
tv_sec = curl_timeo / 1000;
162 timeout.
tv_usec = (curl_timeo % 1000) * 1000;
169 fprintf(stderr,
"curl_multi_fdset() failed, code %d.\n", mc);
185 struct timeval wait = { 0, 100 * 1000 };
186 rc = select(0, NULL, NULL, NULL, &wait);
192 rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
377 size_t want = size - 1;
382 ptr = fgets(ptr, (
int)size, file->
handle.
file);
399 for(loop = 0; loop < want; loop++) {
400 if(file->
buffer[loop] ==
'\n') {
450 #define FGETSFILE "fgets.test" 451 #define FREADFILE "fread.test" 452 #define REWINDFILE "rewind.test" 457 int main(
int argc,
char *argv[])
467 url =
"http://192.168.7.3/testfile";
474 perror(
"couldn't open fgets output file\n");
480 printf(
"couldn't url_fopen() %s\n", url);
486 url_fgets(buffer,
sizeof(buffer), handle);
487 fwrite(buffer, 1, strlen(buffer), outf);
498 perror(
"couldn't open fread output file\n");
504 printf(
"couldn't url_fopen() testfile\n");
510 nread =
url_fread(buffer, 1,
sizeof(buffer), handle);
511 fwrite(buffer, 1, nread, outf);
522 perror(
"couldn't open fread output file\n");
528 printf(
"couldn't url_fopen() testfile\n");
533 nread =
url_fread(buffer, 1,
sizeof(buffer), handle);
534 fwrite(buffer, 1, nread, outf);
538 fwrite(buffer, 1, 1, outf);
540 nread =
url_fread(buffer, 1,
sizeof(buffer), handle);
541 fwrite(buffer, 1, nread, outf);
void url_rewind(URL_FILE *file)
CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)
int url_fclose(URL_FILE *file)
CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *curl_handle)
CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles)
CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle, long *milliseconds)
UNITTEST_START char * ptr
#define realloc(ptr, size)
size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
#define curl_easy_setopt(handle, option, value)
CURL_EXTERN CURLM * curl_multi_init(void)
memcpy(filename, filename1, strlen(filename1))
char * url_fgets(char *ptr, size_t size, URL_FILE *file)
static CURLM * multi_handle
union fcurl_data::@0 handle
CURL_EXTERN CURL * curl_easy_init(void)
CURL_EXTERN void curl_easy_cleanup(CURL *curl)
CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *curl_handle)
URL_FILE * url_fopen(const char *url, const char *operation)
int url_feof(URL_FILE *file)
static size_t write_callback(char *buffer, size_t size, size_t nitems, void *userp)
static int fill_buffer(URL_FILE *file, size_t want)
int main(int argc, char *argv[])
static int use_buffer(URL_FILE *file, size_t want)