diff options
Diffstat (limited to 'src/tool_main.c')
-rw-r--r-- | src/tool_main.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/tool_main.c b/src/tool_main.c index bceb65c7b..06c28395f 100644 --- a/src/tool_main.c +++ b/src/tool_main.c @@ -130,8 +130,11 @@ static CURLcode main_init(struct GlobalConfig *config) _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE; #endif + /* Initialise the global config */ + config->showerror = -1; /* Will show errors */ + /* Allocate the initial operate config */ - config->first = malloc(sizeof(struct OperationConfig)); + config->first = config->last = malloc(sizeof(struct OperationConfig)); if(config->first) { /* Perform the libcurl initialization */ result = curl_global_init(CURL_GLOBAL_DEFAULT); @@ -140,8 +143,17 @@ static CURLcode main_init(struct GlobalConfig *config) result = get_libcurl_info(); if(!result) { - /* Initialise the config */ - config_init(config->first); + /* Get a curl handle to use for all forthcoming curl transfers */ + config->easy = curl_easy_init(); + if(config->easy) { + /* Initialise the config */ + config_init(config->first); + config->first->easy = config->easy; + } + else { + helpf(stderr, "error initializing curl easy handle\n"); + result = CURLE_FAILED_INIT; + } } else helpf(stderr, "error retrieving curl library information\n"); @@ -163,13 +175,17 @@ static CURLcode main_init(struct GlobalConfig *config) */ static void main_free(struct GlobalConfig *config) { + /* Cleanup the easy handle */ + curl_easy_cleanup(config->easy); + config->easy = NULL; + /* Main cleanup */ curl_global_cleanup(); convert_cleanup(); metalink_cleanup(); /* Free the config structures */ - config_free(config->first); + config_free(config->last); config->first = NULL; config->last = NULL; } @@ -197,10 +213,10 @@ int main(int argc, char *argv[]) result = main_init(&global); if(!result) { /* Start our curl operation */ - result = operate(global.first, argc, argv); + result = operate(&global, argc, argv); #ifdef __SYMBIAN32__ - if(global.first->showerror) + if(global.showerror) tool_pressanykey(); #endif |