*
* This example requires libcurl 7.9.7 or later.
*/
+/* <DESC>
+ * implements an fopen() abstraction allowing reading from URLs
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
size=rembuff;
}
else {
- /* realloc suceeded increase buffer size*/
+ /* realloc succeeded increase buffer size*/
url->buffer_len+=size - rembuff;
url->buffer=newbuff;
}
CURLMcode mc; /* curl_multi_fdset() return code */
/* only attempt to fill buffer if transactions still running and buffer
- * doesnt exceed required size already
+ * doesn't exceed required size already
*/
if((!file->still_running) || (file->buffer_pos > want))
return 0;
}
/* use to remove want bytes from the front of a files buffer */
-static int use_buffer(URL_FILE *file,int want)
+static int use_buffer(URL_FILE *file, size_t want)
{
/* sort out buffer */
if((file->buffer_pos - want) <=0) {
/* ditch buffer - write will recreate */
- if(file->buffer)
- free(file->buffer);
-
+ free(file->buffer);
file->buffer=NULL;
file->buffer_pos=0;
file->buffer_len=0;
URL_FILE *url_fopen(const char *url,const char *operation)
{
/* this code could check for URLs or types in the 'url' and
- basicly use the real fopen() for standard files */
+ basically use the real fopen() for standard files */
URL_FILE *file;
(void)operation;
break;
}
- if(file->buffer)
- free(file->buffer);/* free any allocated buffer space */
-
+ free(file->buffer);/* free any allocated buffer space */
free(file);
return ret;
switch(file->type) {
case CFTYPE_FILE:
- ptr = fgets(ptr,size,file->handle.file);
+ ptr = fgets(ptr, (int)size, file->handle.file);
break;
case CFTYPE_CURL:
curl_multi_add_handle(multi_handle, file->handle.curl);
/* ditch buffer - write will recreate - resets stream pos*/
- if(file->buffer)
- free(file->buffer);
-
+ free(file->buffer);
file->buffer=NULL;
file->buffer_pos=0;
file->buffer_len=0;
URL_FILE *handle;
FILE *outf;
- int nread;
+ size_t nread;
char buffer[256];
const char *url;
}
do {
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
fwrite(buffer,1,nread,outf);
} while(nread);