From e8a2c2545608c556cb65d96e7015a1d09d8b3890 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 12 Jan 2012 17:29:14 -0600 Subject: doc/vercmp: add note about pkgrel handling This comes from the Doxygen function documentation. Also, fix two rather silly misspellings. Signed-off-by: Dan McGee --- doc/vercmp.8.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'doc') diff --git a/doc/vercmp.8.txt b/doc/vercmp.8.txt index 4b0490fa..6b94f3e4 100644 --- a/doc/vercmp.8.txt +++ b/doc/vercmp.8.txt @@ -6,7 +6,7 @@ vercmp(8) Name ---- -vercmp - version comparsion utility +vercmp - version comparison utility Synopsis @@ -23,7 +23,7 @@ numbers. It outputs values as follows: * = 0 : if ver1 == ver2 * > 0 : if ver1 > ver2 -Version comparsion operates as follows: +Version comparison operates as follows: Alphanumeric: 1.0a < 1.0b < 1.0beta < 1.0p < 1.0pre < 1.0rc < 1.0 < 1.0.a < 1.0.1 @@ -35,6 +35,11 @@ overrule any version comparison (unless the epoch values are equal). This is specified in an `epoch:version-rel` format. For example, `2:1.0-1` is always greater than `1:3.6-1`. +Keep in mind that the 'pkgrel' is only compared if it is available on both +versions given to this tool. For example, comparing `1.5-1` and `1.5` will +yield 0; comparing `1.5-1` and `1.5-2` will yield < 0 as expected. This is +mainly for supporting versioned dependencies that do not include the 'pkgrel'. + Options ------- -- cgit v1.2.3-70-g09d2 From be229d129eeb43e774217921e1c7e1bb802775fe Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 18 Jan 2012 12:12:39 -0600 Subject: Don't remove unknown files in cache cleaning code This removes the hack I added to skip '*.sig' files earlier since there are other files that also fall into the same bucket- source packages from `makepkg --source`, delta files, etc. Rather than prompting for each and every one, simply skip them. Doing '-Scc' rather than '-Sc' will delete these files if that is really what you want to do. Signed-off-by: Dan McGee --- doc/pacman.8.txt | 2 +- src/pacman/sync.c | 32 ++++++++++---------------------- 2 files changed, 11 insertions(+), 23 deletions(-) (limited to 'doc') diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index 59853812..275f8ac0 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -349,7 +349,7 @@ Sync Options[[SO]] databases are saved for every sync DB you download from, and are not deleted even if they are removed from the configuration file linkman:pacman.conf[5]. Use one '\--clean' switch to only remove - packages that are no longer installed; use two to remove all packages + packages that are no longer installed; use two to remove all files from the cache. In both cases, you will have a yes or no option to remove packages and/or unused downloaded databases. + diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 2773708c..2c64f090 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -198,7 +198,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; @@ -209,30 +208,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); @@ -244,7 +231,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; } @@ -258,7 +245,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; } @@ -268,6 +255,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) { -- cgit v1.2.3-70-g09d2