#include #include #include #include #include #include #define DEFAULT_PAGE_LEN 16 int pageChunkLen = DEFAULT_PAGE_LEN; int nbchunck = 0; char** pageChunk; typedef struct UserConfig { int port; char* addr; } UserConfig; UserConfig config = { .port = 443, .addr = "https://github.com/CaptainBoulbi/webpage", }; void getUserConfig(int argc, char* argv[]){ for (int i=1; i= pageChunkLen){ pageChunkLen *= 1.5; pageChunk = realloc(pageChunk, sizeof(*pageChunk) * pageChunkLen); if (pageChunk == NULL){ perror("ERROR: Buy more ram.\n"); exit(1); } memset(&pageChunk[nbchunck], 0, pageChunkLen - nbchunck); } pageChunk[nbchunck] = malloc(bytes); pageChunk[nbchunck][bytes] = '\0'; strncpy(pageChunk[nbchunck], buffer, bytes); nbchunck++; return bytes; } void getPage(void){ CURL* curl = curl_easy_init(); if (curl == NULL){ perror("ERROR: curl init failed.\n"); exit(1); } curl_easy_setopt(curl, CURLOPT_URL, config.addr); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, save_chunk); CURLcode result = curl_easy_perform(curl); if (result != CURLE_OK){ fprintf(stderr, "CURL ERROR: %s\n", curl_easy_strerror(result)); } curl_easy_cleanup(curl); } void printPage(void){ for (int i=0; i