null term chunk
This commit is contained in:
parent
194299d522
commit
589e1df825
|
@ -1,2 +1,4 @@
|
||||||
webpage
|
webpage
|
||||||
out
|
out
|
||||||
|
test.c
|
||||||
|
a.out
|
||||||
|
|
25
main.c
25
main.c
|
@ -1,9 +1,11 @@
|
||||||
|
#include <stddef.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#define DEFAULT_PAGE_LEN 4
|
#define DEFAULT_PAGE_LEN 16
|
||||||
|
|
||||||
int pageChunkLen = DEFAULT_PAGE_LEN;
|
int pageChunkLen = DEFAULT_PAGE_LEN;
|
||||||
char** pageChunk;
|
char** pageChunk;
|
||||||
|
@ -32,22 +34,25 @@ void getUserConfig(int argc, char* argv[]){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t save_chunk(char* buffer, size_t itemsize, size_t nitems, void* ingore){
|
size_t save_chunk(char* buffer, size_t itemsize, size_t nitems, void* ignore){
|
||||||
size_t bytes = itemsize * nitems;
|
size_t bytes = itemsize * nitems;
|
||||||
static int nbchuck = 0;
|
static int nbchuck = 0;
|
||||||
|
|
||||||
if (nbchuck >= pageChunkLen){
|
if (nbchuck >= pageChunkLen){
|
||||||
pageChunkLen = (nbchuck+1) * 1.5;
|
pageChunkLen *= 1.5;
|
||||||
pageChunk = realloc(pageChunk, sizeof(*pageChunk)*pageChunkLen);
|
pageChunk = realloc(pageChunk, sizeof(*pageChunk) * pageChunkLen);
|
||||||
|
|
||||||
|
printf("len = %d\n", pageChunkLen);
|
||||||
|
|
||||||
if (pageChunk == NULL){
|
if (pageChunk == NULL){
|
||||||
perror("ERROR: Buy more ram.\n");
|
perror("ERROR: Buy more ram.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pageChunk[nbchuck] = malloc(bytes);
|
|
||||||
|
|
||||||
strncpy(pageChunk[nbchuck], buffer, bytes);
|
pageChunk[nbchuck] = malloc(bytes);
|
||||||
pageChunk[nbchuck][bytes] = '\0';
|
pageChunk[nbchuck][bytes] = '\0';
|
||||||
|
strncpy(pageChunk[nbchuck], buffer, bytes);
|
||||||
nbchuck++;
|
nbchuck++;
|
||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
|
@ -65,18 +70,16 @@ void getPage(void){
|
||||||
|
|
||||||
CURLcode result = curl_easy_perform(curl);
|
CURLcode result = curl_easy_perform(curl);
|
||||||
if (result != CURLE_OK){
|
if (result != CURLE_OK){
|
||||||
fprintf(stderr, "ERROR: %s\n", curl_easy_strerror(result));
|
fprintf(stderr, "CURL ERROR: %s\n", curl_easy_strerror(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void printPage(void){
|
void printPage(void){
|
||||||
int i=0;
|
for (int i=0; i<pageChunkLen && pageChunk[i] != NULL; i++){
|
||||||
for (i=0; i<pageChunkLen && pageChunk[i] != NULL; i++){
|
|
||||||
printf("%s", pageChunk[i]);
|
printf("%s", pageChunk[i]);
|
||||||
}
|
}
|
||||||
printf("%d chunks\n", i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[]){
|
int main(int argc, char* argv[]){
|
||||||
|
@ -88,7 +91,5 @@ int main(int argc, char* argv[]){
|
||||||
|
|
||||||
printPage();
|
printPage();
|
||||||
|
|
||||||
printf("chunk len = %d\n", pageChunkLen);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue