I will be using libcurl from a second place, so move the global curl
initialization into a function that resides in libmcommon instead of
a part of the run_uri related code in libmsysconfig.
Signed-off-by: Russell Bryant <rbryant(a)redhat.com>
---
src/lib/sysconfig_linux.c | 16 +++++-----------
src/lib/utilities_linux.c | 22 ++++++++++++++++++++++
src/lib/utilities_private.h | 8 ++++++++
3 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/src/lib/sysconfig_linux.c b/src/lib/sysconfig_linux.c
index 1474962..a06dfdc 100644
--- a/src/lib/sysconfig_linux.c
+++ b/src/lib/sysconfig_linux.c
@@ -31,6 +31,8 @@
#include "matahari/utilities.h"
#include "matahari/services.h"
#include "matahari/sysconfig.h"
+
+#include "utilities_private.h"
#include "sysconfig_private.h"
MH_TRACE_INIT_DATA(mh_sysconfig);
@@ -60,18 +62,10 @@ sysconfig_os_download(const char *uri, FILE *fp)
CURL *curl;
CURLcode curl_res;
long response = 0;
- enum mh_result res = MH_RES_SUCCESS;
- static int curl_init = 0;
-
- if (!curl_init) {
- curl_res = curl_global_init(CURL_GLOBAL_DEFAULT);
-
- if (curl_res != CURLE_OK) {
- mh_err("curl_global_init failed: %d", curl_res);
- return MH_RES_OTHER_ERROR;
- }
+ enum mh_result res;
- curl_init = 1;
+ if ((res = mh_curl_init()) != MH_RES_SUCCESS) {
+ return res;
}
if (!(curl = curl_easy_init())) {
diff --git a/src/lib/utilities_linux.c b/src/lib/utilities_linux.c
index f0aae14..10f42f3 100644
--- a/src/lib/utilities_linux.c
+++ b/src/lib/utilities_linux.c
@@ -23,6 +23,7 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
+#include <curl/curl.h>
#include "matahari/logging.h"
#include "utilities_private.h"
@@ -82,3 +83,24 @@ mh_os_uuid(void)
}
return uuid;
}
+
+enum mh_result
+mh_curl_init(void)
+{
+ static int curl_init = 0;
+
+ if (!curl_init) {
+ CURLcode curl_res;
+
+ curl_res = curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ if (curl_res != CURLE_OK) {
+ mh_err("curl_global_init failed: %d", curl_res);
+ return MH_RES_OTHER_ERROR;
+ }
+
+ curl_init = 1;
+ }
+
+ return MH_RES_SUCCESS;
+}
diff --git a/src/lib/utilities_private.h b/src/lib/utilities_private.h
index 5219198..81994ac 100644
--- a/src/lib/utilities_private.h
+++ b/src/lib/utilities_private.h
@@ -30,6 +30,8 @@
#ifndef __MH_UTILITIES_PRIVATE_H__
#define __MH_UTILITIES_PRIVATE_H__
+#include "matahari/errors.h"
+
/**
* Get the local dnsdomainname.
*/
@@ -42,4 +44,10 @@ mh_os_dnsdomainname(void);
const char *
mh_os_uuid(void);
+/**
+ * \note Linux only.
+ */
+enum mh_result
+mh_curl_init(void);
+
#endif /* __MH_UTILITIES_PRIVATE_H__ */
--
1.7.6.2