summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/package.c6
-rw-r--r--lib/libalpm/sync.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 2686c00c..85d76151 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -459,6 +459,12 @@ int _alpm_pkg_splitname(char *target, char *name, char *version, int witharch)
if((p = _alpm_pkgname_has_arch(tmp))) {
*p = '\0';
}
+ if(witharch) {
+ /* trim architecture */
+ if((p = _alpm_pkgname_has_arch(tmp))) {
+ *p = 0;
+ }
+ }
p = tmp + strlen(tmp);
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index b7ebe6b4..52de2660 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -324,7 +324,7 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, pmlist_t *dbs_sync,
local = _alpm_db_get_pkgfromcache(db_local, spkg->name);
if(local) {
cmp = _alpm_versioncmp(local->version, spkg->version);
- if(cmp > 0) {
+ if(cmp > 0 && !spkg->force) {
/* local version is newer -- get confirmation before adding */
int resp = 0;
QUESTION(trans, PM_TRANS_CONV_LOCAL_NEWER, local, NULL, NULL, &resp);