Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c5edb1c33c2fe01836919981e31ab06716ddba37

commit c5edb1c33c2fe01836919981e31ab06716ddba37
Author: Michel Hermier <[email protected]>
Date:   Sun Jun 8 11:50:44 2014 +0200

libpacman: Remove one global handle usage in server.cpp.

diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index 3a4401e..5f10b97 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -171,7 +171,7 @@ int _pacman_syncdb_update(Database *db, int force)

snprintf(path, PATH_MAX, "%s%s", handle->root, handle->dbpath);

-       ret = _pacman_downloadfiles_forreal(db->servers, path, files, 
&timestamp, &newmtime, 0);
+       ret = _pacman_downloadfiles_forreal(db->m_handle, db->servers, path, 
files, &timestamp, &newmtime, 0);
FREELIST(files);
if(ret != 0) {
if(ret == -1) {
diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp
index 4bc39ef..1e2d534 100644
--- a/lib/libpacman/pacman.cpp
+++ b/lib/libpacman/pacman.cpp
@@ -1381,7 +1381,7 @@ char *pacman_fetch_pkgurl(char *url)
{
ASSERT(strstr(url, "://"), return(NULL));

-       return(_pacman_fetch_pkgurl(url));
+       return(_pacman_fetch_pkgurl(handle, url));
}

/** Match a string against a regular expression.
diff --git a/lib/libpacman/server.cpp b/lib/libpacman/server.cpp
index fbe1b6f..f8e4259 100644
--- a/lib/libpacman/server.cpp
+++ b/lib/libpacman/server.cpp
@@ -47,6 +47,8 @@
#include <unistd.h>
#include <time.h>

+using namespace ::libpacman;
+
pacman_trans_cb_download pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
@@ -125,6 +127,7 @@ void _pacman_server_free(void *data)
}

struct __pmcurldownloader_t {
+       Handle *m_handle;
CURL *curl;
struct timeval previous_update;
size_t previous_update_dlnow;
@@ -175,12 +178,14 @@ int _pacman_curl_progresscb(void *clientp, curl_off_t 
dltotal, curl_off_t dlnow,
}

static
-int _pacman_curl_init(pmcurldownloader_t *curldownloader)
+int _pacman_curl_init(pmcurldownloader_t *curldownloader, Handle *handle)
{
CURL *curlHandle = NULL;

ASSERT(curldownloader, RET_ERR(PM_ERR_WRONG_ARGS, -1));

+       curldownloader->m_handle = handle;
+
if (curl_global_init(CURL_GLOBAL_DEFAULT) != CURLE_OK) {
_pacman_log(PM_LOG_WARNING, _("fatal error initializing libcurl\n"));
goto error;
@@ -249,7 +254,7 @@ pmdownloadsuccess_t 
_pacman_curl_download(pmcurldownloader_t *curldownloader, co
gettimeofday(&curldownloader->download.dst_begin, NULL);
curldownloader->previous_update = curldownloader->download.dst_begin;

-       if(mtime1 && mtime2 && !handle->proxyhost) {
+       if(mtime1 && mtime2 && !curldownloader->m_handle->proxyhost) {
curl_easy_setopt(curlHandle, CURLOPT_FILETIME, 1);
curl_easy_setopt(curlHandle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
curl_easy_setopt(curlHandle, CURLOPT_TIMEVALUE , (long)mtime1);
@@ -334,9 +339,9 @@ error:
*
* RETURN:  0 for successful download, -1 on error
*/
-int _pacman_downloadfiles(pmlist_t *servers, const char *localpath, pmlist_t 
*files, int skip)
+int _pacman_downloadfiles(Handle *handle, pmlist_t *servers, const char 
*localpath, pmlist_t *files, int skip)
{
-       if(_pacman_downloadfiles_forreal(servers, localpath, files, NULL, NULL, 
skip) != 0) {
+       if(_pacman_downloadfiles_forreal(handle, servers, localpath, files, 
NULL, NULL, skip) != 0) {
return(-1);
} else {
return(0);
@@ -356,7 +361,7 @@ int _pacman_downloadfiles(pmlist_t *servers, const char 
*localpath, pmlist_t *fi
*          1 if the mtimes are identical
*         -1 on error
*/
-int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
+int _pacman_downloadfiles_forreal(Handle *handle, pmlist_t *servers, const 
char *localpath,
pmlist_t *files, const time_t *mtime1, time_t *mtime2, int skip)
{
pmlist_t *lp;
@@ -530,7 +535,7 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
snprintf(url, PATH_MAX, "%s://%s%s%s", server->protocol, server->server,
server->path, fn);
if(!curldownloader.curl) {
-                                                       
if(_pacman_curl_init(&curldownloader)) {
+                                                       
if(_pacman_curl_init(&curldownloader, handle)) {
goto error;
}
}
@@ -579,7 +584,7 @@ error:
return(pm_errno == 0 ? !done : -1);
}

-char *_pacman_fetch_pkgurl(char *target)
+char *_pacman_fetch_pkgurl(Handle *handle, char *target)
{
char spath[PATH_MAX], lpath[PATH_MAX], lcache[PATH_MAX];
char url[PATH_MAX];
@@ -627,7 +632,7 @@ char *_pacman_fetch_pkgurl(char *target)
servers = _pacman_list_add(servers, server);

files = _pacman_list_add(NULL, fn);
-               if(_pacman_downloadfiles(servers, lcache, files, 0)) {
+               if(_pacman_downloadfiles(handle, servers, lcache, files, 0)) {
_pacman_log(PM_LOG_WARNING, _("failed to download %s\n"), target);
return(NULL);
}
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index 7f9c9fb..6aa1091 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -25,6 +25,8 @@

#include "pacman.h"

+#include "handle.h"
+
#define FREELISTSERVERS(p) _FREELIST(p, _pacman_server_free)

/* Servers */
@@ -48,11 +50,11 @@ struct __pmdownload_t {

pmserver_t *_pacman_server_new(char *url);
void _pacman_server_free(void *data);
-int _pacman_downloadfiles(pmlist_t *servers, const char *localpath, pmlist_t 
*files, int skip);
-int _pacman_downloadfiles_forreal(pmlist_t *servers, const char *localpath,
+int _pacman_downloadfiles(::libpacman::Handle *handle, pmlist_t *servers, 
const char *localpath, pmlist_t *files, int skip);
+int _pacman_downloadfiles_forreal(::libpacman::Handle *handle, pmlist_t 
*servers, const char *localpath,
pmlist_t *files, const time_t *mtime1, time_t *mtime2, int skip);

-char *_pacman_fetch_pkgurl(char *target);
+char *_pacman_fetch_pkgurl(::libpacman::Handle *handle, char *target);

extern pacman_trans_cb_download pm_dlcb;

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index f8e3e30..700a75a 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -1586,7 +1586,7 @@ int __pmtrans_t::commit(pmlist_t **data)
varcache = 0;
}
}
-                               if(_pacman_downloadfiles(current->servers, 
ldir, files, tries) == -1) {
+                               if(_pacman_downloadfiles(m_handle, 
current->servers, ldir, files, tries) == -1) {
_pacman_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"), 
current->treename);
retval=1;
done = 0;
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to