null term chunk

This commit is contained in:
_N3m0 2023-12-30 20:33:23 +01:00
parent 194299d522
commit 589e1df825
2 changed files with 15 additions and 12 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
webpage webpage
out out
test.c
a.out

25
main.c
View File

@ -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;
} }