rendered paste body#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "curl/curl.h"
#include "curl/types.h"
#include "curl/easy.h"
CURL *curl_handle;
char *buffer;
struct MemoryStruct {
char *memory;
size_t size;
};
void *myrealloc(void *ptr, size_t size)
{
if (ptr) return realloc(ptr, size);
else return malloc(size);
}
size_t
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)myrealloc(mem->memory, mem->size + realsize + 1);
if (mem->memory) {
memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
}
return realsize;
}
struct MemoryStruct HTML;
int cPROCESS(char *option, char *URL, char *REFERER, char *POSTDATA)
{
char res;
if (option == "GET")
{
curl_easy_setopt(curl_handle, CURLOPT_URL, URL);
curl_easy_setopt(curl_handle, CURLOPT_REFERER, REFERER);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, &HTML);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Opera/9.00 (X11; Linux i686; U; en)");
res = curl_easy_perform(curl_handle);
if (!res) return 1;
memcpy(buffer, HTML.memory, sizeof(HTML.memory));
return 0;
}
else if (option == "POST")
{
curl_easy_setopt(curl_handle, CURLOPT_URL, URL);
curl_easy_setopt(curl_handle, CURLOPT_REFERER, REFERER);
curl_easy_setopt(curl_handle, CURLOPT_POST, 1);
curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, POSTDATA);
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&HTML);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Opera/9.00 (X11; Linux i686; U; en)");
res = curl_easy_perform(curl_handle);
if (!res) return 1;
memcpy(buffer, HTML.memory, sizeof(HTML.memory));
return 0;
}
else return 1;
}
void cCLEANUP(void)
{
curl_easy_cleanup(curl_handle);
free(HTML.memory);
HTML.size = 0;
return;
}
void cINIT(void)
{
HTML.memory = 0;
HTML.size = 0;
curl_global_init(CURL_GLOBAL_ALL);
curl_handle = curl_easy_init();
return;
}
char* cPASSDATA(void)
{
return buffer;
}