atexit() isn't really appropriate for a library.
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 16 Nov 2009 00:32:24 +0000 (00:32 +0000)
committergraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 16 Nov 2009 00:32:24 +0000 (00:32 +0000)
git-svn-id: http://opkg.googlecode.com/svn/trunk@313 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

libopkg/libopkg.c
libopkg/opkg.c
libopkg/opkg_download.c
libopkg/opkg_download.h

index c73c4a3358ed902b1a25279f13a41356442cf8bb..37770eb880f3b11757d1dd67ac31174b2f0c2992 100644 (file)
@@ -96,6 +96,9 @@ opkg_op (int argc, char *argv[])
 
        err = opkg_cmd_exec (cmd, &opkg_conf, argc - optind, (const char **) (argv + optind), NULL);
 
+#ifdef HAVE_CURL
+       opkg_curl_cleanup();
+#endif
        opkg_conf_deinit (&opkg_conf);
 
        return err;
index 785d58866076f5dbff64c67019ee67aa0a38744a..aea87fc4f5488768deab8a811c28ce59a6743cd6 100644 (file)
@@ -211,6 +211,9 @@ opkg_free (opkg_t *opkg)
 {
   opkg_assert (opkg != NULL);
 
+#ifdef HAVE_CURL
+  opkg_curl_cleanup();
+#endif
   opkg_conf_deinit (opkg->conf);
   args_deinit (opkg->args);
   free (opkg->options);
index ab21ae9e182cce47a0205ab1f83fb4a6145aaac1..be3ae2a76b61218ff714816e25df75c59f334a4e 100644 (file)
@@ -68,7 +68,6 @@ static X509_STORE *setup_verify(opkg_conf_t *conf, char *CAfile, char *CApath);
  * each time
  */
 static CURL *curl = NULL;
-static void opkg_curl_cleanup(void);
 static CURL *opkg_curl_init(opkg_conf_t *conf, curl_progress_func cb, void *data);
 #endif
 
@@ -530,7 +529,7 @@ end:
 #endif
 
 #ifdef HAVE_CURL
-static void opkg_curl_cleanup(void){
+void opkg_curl_cleanup(void){
     if(curl != NULL){
        curl_easy_cleanup (curl);
        curl = NULL;
@@ -635,12 +634,6 @@ static CURL *opkg_curl_init(opkg_conf_t *conf, curl_progress_func cb, void *data
            curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, userpwd);
            free (userpwd);
        }
-
-       /* add curl cleanup callback */
-       if(!atexit(opkg_curl_cleanup)){
-           opkg_message(conf,OPKG_DEBUG, "Failed to register atexit curl cleanup function\n");
-       }
-
     }
 
     curl_easy_setopt (curl, CURLOPT_NOPROGRESS, (cb == NULL));
index 39cd9a687321c6464975524c5a2b8a6831603e59..10347ca3836297f9ec9e14426f362481b5c85cac 100644 (file)
@@ -32,4 +32,7 @@ int opkg_download_pkg(opkg_conf_t *conf, pkg_t *pkg, const char *dir);
 int opkg_prepare_url_for_install(opkg_conf_t *conf, const char *url, char **namep);
 
 int opkg_verify_file (opkg_conf_t *conf, char *text_file, char *sig_file);
+#ifdef HAVE_CURL
+void opkg_curl_cleanup(void);
+#endif
 #endif