diff options
author | Dan McGee <dan@archlinux.org> | 2008-03-23 14:08:31 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-03-23 14:08:31 -0500 |
commit | f7f43dbb48add85c3c3e42696c4d3bae4591a7d6 (patch) | |
tree | 9c91fd93925ff927ed414954e5b6b5026ba59cd3 | |
parent | 3d10d460dff4c1321b40fa509c4ff9be93db0ca3 (diff) |
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 <dan@archlinux.org>
-rw-r--r-- | lib/libalpm/db.c | 20 |
1 files changed, 12 insertions, 8 deletions
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); |