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