static size_t write_mem_cb(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; struct memdesc *mem = (struct memdesc *)userp; mem->memory = e_realloc(mem->memory, mem->size + realsize + 1); memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; return (realsize); }
static void add_to_buf( request *reqP, char* str, size_t len ) { char** bufP = &(reqP->buf); size_t* bufsizeP = &(reqP->buf_size); size_t* buflenP = &(reqP->buf_len); if ( *bufsizeP == 0 ) { *bufsizeP = len + 100; *buflenP = 0; *bufP = (char*) e_malloc( *bufsizeP ); } else if ( *buflenP + len >= *bufsizeP ) { *bufsizeP = *buflenP + len + 100; *bufP = (char*) e_realloc( (void*) *bufP, *bufsizeP ); } (void) memmove( &((*bufP)[*buflenP]), str, len ); *buflenP += len; (*bufP)[*buflenP] = '\0'; }