[pacman-dev] [PATCH 3/9] alpm_db_update(): refactor out sync dir create/check

Dan McGee dan at archlinux.org
Wed Jun 8 03:51:46 EDT 2011


This was a lot of stuff that can stand by itself for the most part.

Signed-off-by: Dan McGee <dan at archlinux.org>
---
 lib/libalpm/be_sync.c |   53 ++++++++++++++++++++++++++++--------------------
 1 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index 18e8ded..ccc8fdb 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -37,6 +37,34 @@
 #include "deps.h"
 #include "dload.h"
 
+static char *get_sync_dir(pmhandle_t *handle)
+{
+	const char *dbpath = alpm_option_get_dbpath(handle);
+	size_t len = strlen(dbpath) + 6;
+	char *syncpath;
+	struct stat buf;
+
+	MALLOC(syncpath, len, RET_ERR(handle, PM_ERR_MEMORY, NULL));
+	sprintf(syncpath, "%s%s", dbpath, "sync/");
+
+	if(stat(syncpath, &buf) != 0) {
+		_alpm_log(handle, PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
+				syncpath);
+		if(_alpm_makepath(syncpath) != 0) {
+			free(syncpath);
+			RET_ERR(handle, PM_ERR_SYSTEM, NULL);
+		}
+	} else if(!S_ISDIR(buf.st_mode)) {
+		_alpm_log(handle, PM_LOG_WARNING, _("removing invalid file: %s\n"), syncpath);
+		if(unlink(syncpath) != 0 || _alpm_makepath(syncpath) != 0) {
+			free(syncpath);
+			RET_ERR(handle, PM_ERR_SYSTEM, NULL);
+		}
+	}
+
+	return syncpath;
+}
+
 /** Update a package database
  *
  * An update of the package database \a db will be attempted. Unless
@@ -79,10 +107,7 @@
 int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
 {
 	char *syncpath;
-	const char *dbpath;
 	alpm_list_t *i;
-	struct stat buf;
-	size_t len;
 	int ret = -1;
 	mode_t oldmask;
 	pmhandle_t *handle;
@@ -94,29 +119,13 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
 	ASSERT(db != handle->db_local, RET_ERR(handle, PM_ERR_WRONG_ARGS, -1));
 	ASSERT(db->servers != NULL, RET_ERR(handle, PM_ERR_SERVER_NONE, -1));
 
-	dbpath = alpm_option_get_dbpath(handle);
-	len = strlen(dbpath) + 6;
-	MALLOC(syncpath, len, RET_ERR(handle, PM_ERR_MEMORY, -1));
-	sprintf(syncpath, "%s%s", dbpath, "sync/");
-
 	/* make sure we have a sane umask */
 	oldmask = umask(0022);
 
-	if(stat(syncpath, &buf) != 0) {
-		_alpm_log(handle, PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
-				syncpath);
-		if(_alpm_makepath(syncpath) != 0) {
-			free(syncpath);
-			RET_ERR(handle, PM_ERR_SYSTEM, -1);
-		}
-	} else if(!S_ISDIR(buf.st_mode)) {
-		_alpm_log(handle, PM_LOG_WARNING, _("removing invalid file: %s\n"), syncpath);
-		if(unlink(syncpath) != 0 || _alpm_makepath(syncpath) != 0) {
-			free(syncpath);
-			RET_ERR(handle, PM_ERR_SYSTEM, -1);
-		}
+	syncpath = get_sync_dir(handle);
+	if(!syncpath) {
+		return -1;
 	}
-
 	check_sig = _alpm_db_get_sigverify_level(db);
 
 	for(i = db->servers; i; i = i->next) {
-- 
1.7.5.2



More information about the pacman-dev mailing list