From f7f43dbb48add85c3c3e42696c4d3bae4591a7d6 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 23 Mar 2008 14:08:31 -0500 Subject: Update database mtime after it has been extracted This will reduce the need for running an -Syy if the DB was only half-extracted, as the mtime won't get updated until the new database is completely in place. Signed-off-by: Dan McGee --- lib/libalpm/db.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'lib/libalpm/db.c') diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index e82592a7..3b932c96 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -247,24 +247,22 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db) snprintf(path, PATH_MAX, "%s" DBEXT, db->treename); dbpath = alpm_option_get_dbpath(); - ret = _alpm_download_single_file(path, db->servers, dbpath, lastupdate, &newmtime); + ret = _alpm_download_single_file(path, db->servers, dbpath, + lastupdate, &newmtime); if(ret == 1) { /* mtimes match, do nothing */ pm_errno = 0; return(1); } else if(ret == -1) { - /* we use downloadLastErrString and downloadLastErrCode here, error returns from - * libdownload */ + /* we use downloadLastErrString and downloadLastErrCode here, + * error returns from libdownload */ + /* TODO we may not have used libdownload, this should change */ _alpm_log(PM_LOG_DEBUG, "failed to sync db: %s [%d]\n", downloadLastErrString, downloadLastErrCode); RET_ERR(PM_ERR_DB_SYNC, -1); } else { - if(newmtime != 0) { - _alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n", - db->treename, (uintmax_t)newmtime); - _alpm_db_setlastupdate(db, newmtime); - } + /* form the path to the db location */ snprintf(path, PATH_MAX, "%s%s" DBEXT, dbpath, db->treename); /* remove the old dir */ @@ -285,6 +283,12 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db) if(_alpm_db_install(db, path) == -1) { return -1; } + /* if we have a new mtime, set the DB last update value */ + if(newmtime) { + _alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n", + db->treename, (uintmax_t)newmtime); + _alpm_db_setlastupdate(db, newmtime); + } } return(0); -- cgit v1.2.3-54-g00ecf