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, ×tamp, &newmtime, 0); + ret = _pacman_downloadfiles_forreal(db->m_handle, db->servers, path, files, ×tamp, &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
