aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/tool_main.c41
-rw-r--r--src/tool_operate.c13
-rw-r--r--src/tool_operhlp.c26
-rw-r--r--src/tool_operhlp.h4
4 files changed, 39 insertions, 45 deletions
diff --git a/src/tool_main.c b/src/tool_main.c
index 5682bd78e..ba9b518e1 100644
--- a/src/tool_main.c
+++ b/src/tool_main.c
@@ -116,6 +116,32 @@ static void memory_tracking_init(void)
#endif
/*
+ * This is the main global constructor for the app. Call this before
+ * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
+ * used, or havoc may be the result.
+ */
+static CURLcode main_init(void)
+{
+#if defined(__DJGPP__) || defined(__GO32__)
+ /* stop stat() wasting time */
+ _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
+#endif
+
+ return curl_global_init(CURL_GLOBAL_DEFAULT);
+}
+
+/*
+ * This is the main global destructor for the app. Call this after
+ * _all_ libcurl usage is done.
+ */
+static void main_free(void)
+{
+ curl_global_cleanup();
+ convert_cleanup();
+ metalink_cleanup();
+}
+
+/*
** curl tool main function.
*/
int main(int argc, char *argv[])
@@ -139,8 +165,19 @@ int main(int argc, char *argv[])
/* Initialise the config */
init_config(config);
- /* Start our curl operation */
- res = operate(config, argc, argv);
+ /* Initialize the curl library - do not call any libcurl functions before
+ this point */
+ if(!main_init()) {
+ /* Start our curl operation */
+ res = operate(config, argc, argv);
+
+ /* Perform the main cleanup */
+ main_free();
+ }
+ else {
+ helpf(config->errors, "error initializing curl library\n");
+ res = CURLE_FAILED_INIT;
+ }
#ifdef __SYMBIAN32__
if(config->showerror)
diff --git a/src/tool_operate.c b/src/tool_operate.c
index c3ccfe7f1..ce7bceea6 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -214,19 +214,9 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
heads.stream = stdout;
heads.config = config;
- /*
- ** Initialize curl library - do not call any libcurl functions before
- ** this point.
- */
- if(main_init() != CURLE_OK) {
- helpf(config->errors, "error initializing curl library\n");
- return CURLE_FAILED_INIT;
- }
-
/* Get libcurl info right away */
if(get_libcurl_info() != CURLE_OK) {
helpf(config->errors, "error retrieving curl library information\n");
- main_free();
return CURLE_FAILED_INIT;
}
@@ -234,7 +224,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
curl = curl_easy_init();
if(!curl) {
helpf(config->errors, "error initializing curl easy handle\n");
- main_free();
return CURLE_FAILED_INIT;
}
config->easy = curl;
@@ -1892,7 +1881,5 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
/* Release metalink related resources here */
clean_metalink(config);
- main_free(); /* cleanup */
-
return res;
}
diff --git a/src/tool_operhlp.c b/src/tool_operhlp.c
index b8c0a2971..a9dab9b80 100644
--- a/src/tool_operhlp.c
+++ b/src/tool_operhlp.c
@@ -193,29 +193,3 @@ CURLcode get_url_file_name(char **filename, const char *url)
return CURLE_OK;
}
-/*
- * This is the main global constructor for the app. Call this before
- * _any_ libcurl usage. If this fails, *NO* libcurl functions may be
- * used, or havoc may be the result.
- */
-CURLcode main_init(void)
-{
-#if defined(__DJGPP__) || defined(__GO32__)
- /* stop stat() wasting time */
- _djstat_flags |= _STAT_INODE | _STAT_EXEC_MAGIC | _STAT_DIRSIZE;
-#endif
-
- return curl_global_init(CURL_GLOBAL_DEFAULT);
-}
-
-/*
- * This is the main global destructor for the app. Call this after
- * _all_ libcurl usage is done.
- */
-void main_free(void)
-{
- curl_global_cleanup();
- convert_cleanup();
- metalink_cleanup();
-}
-
diff --git a/src/tool_operhlp.h b/src/tool_operhlp.h
index c2365c88f..7ca12362b 100644
--- a/src/tool_operhlp.h
+++ b/src/tool_operhlp.h
@@ -37,9 +37,5 @@ char *add_file_name_to_url(CURL *curl, char *url, const char *filename);
CURLcode get_url_file_name(char **filename, const char *url);
-CURLcode main_init(void);
-
-void main_free(void);
-
#endif /* HEADER_CURL_TOOL_OPERHLP_H */