summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2008-03-23 14:08:31 -0500
committerDan McGee <dan@archlinux.org>2008-03-23 14:08:31 -0500
commitf7f43dbb48add85c3c3e42696c4d3bae4591a7d6 (patch)
tree9c91fd93925ff927ed414954e5b6b5026ba59cd3
parent3d10d460dff4c1321b40fa509c4ff9be93db0ca3 (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.c20
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);