#include "page.h" PageHTML page = { .chunks = NULL, .cap = DEFAULT_PAGE_LEN, .len = 0, }; size_t save_chunk(char* buffer, size_t itemsize, size_t nitems, void* ignore){ size_t bytes = itemsize * nitems; if (page.len >= page.cap){ page.cap *= 1.5; page.chunks = realloc(page.chunks, sizeof(*page.chunks) * page.cap); if (page.chunks == NULL){ perror("ERROR: Buy more ram.\n"); exit(1); } } page.chunks[page.len] = malloc(bytes+1); page.chunks[page.len][bytes] = '\0'; strncpy(page.chunks[page.len], buffer, bytes); page.len++; return bytes; } void getPage(void){ page.chunks = malloc(sizeof(*page.chunks) * DEFAULT_PAGE_LEN); if (page.chunks == NULL){ perror("ERROR: Buy more ram.\n"); exit(1); } 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_PORT, config.port); 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