summaryrefslogtreecommitdiff
path: root/src/pacman/sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pacman/sync.c')
-rw-r--r--src/pacman/sync.c34
1 files changed, 11 insertions, 23 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index a13b6c7f..e22f94f7 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -1,7 +1,7 @@
/*
* sync.c
*
- * Copyright (c) 2006-2011 Pacman Development Team <pacman-dev@archlinux.org>
+ * Copyright (c) 2006-2012 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
*
* This program is free software; you can redistribute it and/or modify
@@ -196,7 +196,6 @@ static int sync_cleancache(int level)
/* step through the directory one file at a time */
while((ent = readdir(dir)) != NULL) {
char path[PATH_MAX];
- size_t pathlen;
int delete = 1;
alpm_pkg_t *localpkg = NULL, *pkg = NULL;
const char *local_name, *local_version;
@@ -207,30 +206,18 @@ static int sync_cleancache(int level)
/* build the full filepath */
snprintf(path, PATH_MAX, "%s%s", cachedir, ent->d_name);
- /* short circuit for removing all packages from cache */
+ /* short circuit for removing all files from cache */
if(level > 1) {
unlink(path);
continue;
}
- /* we handle .sig files with packages, not separately */
- pathlen = strlen(path);
- if(strcmp(path + pathlen - 4, ".sig") == 0) {
- continue;
- }
-
- /* attempt to load the package, prompt removal on failures as we may have
- * files here that aren't valid packages. we also don't need a full
- * load of the package, just the metadata. */
- if(alpm_pkg_load(config->handle, path, 0, 0, &localpkg) != 0
- || localpkg == NULL) {
- if(yesno(_("File %s does not seem to be a valid package, remove it?"),
- path)) {
- if(localpkg) {
- alpm_pkg_free(localpkg);
- }
- unlink(path);
- }
+ /* attempt to load the file as a package. if we cannot load the file,
+ * simply skip it and move on. we don't need a full load of the package,
+ * just the metadata. */
+ if(alpm_pkg_load(config->handle, path, 0, 0, &localpkg) != 0) {
+ pm_printf(ALPM_LOG_DEBUG, "skipping %s, could not load as package\n",
+ path);
continue;
}
local_name = alpm_pkg_get_name(localpkg);
@@ -242,7 +229,7 @@ static int sync_cleancache(int level)
if(pkg != NULL && alpm_pkg_vercmp(local_version,
alpm_pkg_get_version(pkg)) == 0) {
/* package was found in local DB and version matches, keep it */
- pm_printf(ALPM_LOG_DEBUG, "pkg %s-%s found in local db\n",
+ pm_printf(ALPM_LOG_DEBUG, "package %s-%s found in local db\n",
local_name, local_version);
delete = 0;
}
@@ -256,7 +243,7 @@ static int sync_cleancache(int level)
if(pkg != NULL && alpm_pkg_vercmp(local_version,
alpm_pkg_get_version(pkg)) == 0) {
/* package was found in a sync DB and version matches, keep it */
- pm_printf(ALPM_LOG_DEBUG, "pkg %s-%s found in sync db\n",
+ pm_printf(ALPM_LOG_DEBUG, "package %s-%s found in sync db\n",
local_name, local_version);
delete = 0;
}
@@ -266,6 +253,7 @@ static int sync_cleancache(int level)
alpm_pkg_free(localpkg);
if(delete) {
+ size_t pathlen = strlen(path);
unlink(path);
/* unlink a signature file if present too */
if(PATH_MAX - 5 >= pathlen) {