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

commit 763343fc2ac792d9c26e3c3eaff968aae428f8eb
Author: Michel Hermier <herm...@frugalware.org>
Date:   Wed Nov 13 18:00:45 2013 +0100

libpacman: Move syncdb update code from pacman.c to syncdb.c.

diff --git a/lib/libpacman/db/syncdb.c b/lib/libpacman/db/syncdb.c
index ebbcd44..75567c4 100644
--- a/lib/libpacman/db/syncdb.c
+++ b/lib/libpacman/db/syncdb.c
@@ -42,15 +42,18 @@
#include "db/syncdb.h"

#include "db/localdb_files.h"
+#include "db/syncdb.h"
#include "io/archive.h"
#include "util/log.h"
#include "util/stringlist.h"
#include "util.h"
+#include "cache.h"
#include "db.h"
#include "package.h"
#include "pacman.h"
#include "error.h"
#include "handle.h"
+#include "server.h"

static
int suffixcmp(const char *str, const char *suffix)
@@ -87,6 +90,57 @@ pmlist_t *_pacman_syncdb_test(pmdb_t *db)
return _pacman_list_new();
}

+int _pacman_syncdb_update(pmdb_t *db, int force)
+{
+       char path[PATH_MAX], dirpath[PATH_MAX];
+       pmlist_t *files = NULL;
+       char newmtime[16] = "";
+       char lastupdate[16] = "";
+       int ret, updated=0;
+
+       if(!force) {
+               /* get the lastupdate time */
+               _pacman_db_getlastupdate(db, lastupdate);
+               if(_pacman_strempty(lastupdate)) {
+                       _pacman_log(PM_LOG_DEBUG, _("failed to get lastupdate 
time for %s (no big deal)\n"), db->treename);
+               }
+       }
+
+       /* build a one-element list */
+       snprintf(path, PATH_MAX, "%s" PM_EXT_DB, db->treename);
+       files = _pacman_stringlist_append(files, path);
+
+       snprintf(path, PATH_MAX, "%s%s", handle->root, handle->dbpath);
+
+       ret = _pacman_downloadfiles_forreal(db->servers, path, files, 
lastupdate, newmtime, 0);
+       FREELIST(files);
+       if(ret != 0) {
+               if(ret == -1) {
+                       _pacman_log(PM_LOG_DEBUG, _("failed to sync db: %s 
[%d]\n"),  pacman_strerror(ret), ret);
+                       pm_errno = PM_ERR_DB_SYNC;
+               }
+               return 1; /* Means up2date */
+       } else {
+               if(!_pacman_strempty(newmtime)) {
+                       _pacman_log(PM_LOG_DEBUG, _("sync: new mtime for %s: 
%s\n"), db->treename, newmtime);
+                       updated = 1;
+               }
+               snprintf(dirpath, PATH_MAX, "%s%s/%s", handle->root, 
handle->dbpath, db->treename);
+               snprintf(path, PATH_MAX, "%s%s/%s" PM_EXT_DB, handle->root, 
handle->dbpath, db->treename);
+
+               /* remove the old dir */
+               _pacman_rmrf(dirpath);
+
+               /* Cache needs to be rebuild */
+               _pacman_db_free_pkgcache(db);
+
+               if(updated) {
+                       _pacman_db_setlastupdate(db, newmtime);
+               }
+       }
+       return 0;
+}
+
static
int _pacman_syncdb_open(pmdb_t *db, int flags, struct tm *timestamp)
{
diff --git a/lib/libpacman/db/syncdb.h b/lib/libpacman/db/syncdb.h
index 47f3c30..3456d76 100644
--- a/lib/libpacman/db/syncdb.h
+++ b/lib/libpacman/db/syncdb.h
@@ -25,6 +25,8 @@

const pmdb_ops_t _pacman_syncdb_ops;

+int _pacman_syncdb_update(pmdb_t *db, int force);
+
#endif /* _PACMAN_SYNCDB_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 2db2f78..bb122fa 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -315,11 +315,7 @@ int pacman_db_setserver(pmdb_t *db, char *url)
*/
int pacman_db_update(int force, pmdb_t *db)
{
-       char path[PATH_MAX], dirpath[PATH_MAX];
-       pmlist_t *files = NULL;
-       char newmtime[16] = "";
-       char lastupdate[16] = "";
-       int ret, updated=0, status=0;
+       int status=0;

/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
@@ -335,48 +331,7 @@ int pacman_db_update(int force, pmdb_t *db)
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}

-       if(!force) {
-               /* get the lastupdate time */
-               _pacman_db_getlastupdate(db, lastupdate);
-               if(_pacman_strempty(lastupdate)) {
-                       _pacman_log(PM_LOG_DEBUG, _("failed to get lastupdate 
time for %s (no big deal)\n"), db->treename);
-               }
-       }
-
-       /* build a one-element list */
-       snprintf(path, PATH_MAX, "%s" PM_EXT_DB, db->treename);
-       files = _pacman_stringlist_append(files, path);
-
-       snprintf(path, PATH_MAX, "%s%s", handle->root, handle->dbpath);
-
-       ret = _pacman_downloadfiles_forreal(db->servers, path, files, 
lastupdate, newmtime, 0);
-       FREELIST(files);
-       if(ret != 0) {
-               if(ret == -1) {
-                       _pacman_log(PM_LOG_DEBUG, _("failed to sync db: %s 
[%d]\n"),  pacman_strerror(ret), ret);
-                       pm_errno = PM_ERR_DB_SYNC;
-               }
-               status = 1;
-               goto rmlck;
-       } else {
-               if(!_pacman_strempty(newmtime)) {
-                       _pacman_log(PM_LOG_DEBUG, _("sync: new mtime for %s: 
%s\n"), db->treename, newmtime);
-                       updated = 1;
-               }
-               snprintf(dirpath, PATH_MAX, "%s%s/%s", handle->root, 
handle->dbpath, db->treename);
-               snprintf(path, PATH_MAX, "%s%s/%s" PM_EXT_DB, handle->root, 
handle->dbpath, db->treename);
-
-               /* remove the old dir */
-               _pacman_rmrf(dirpath);
-
-               /* Cache needs to be rebuild */
-               _pacman_db_free_pkgcache(db);
-
-               if(updated) {
-                       _pacman_db_setlastupdate(db, newmtime);
-               }
-       }
-
+       status = _pacman_syncdb_update(db, force);
rmlck:
if(_pacman_handle_unlock(handle) != 0) {
return -1;
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to