summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJudd Vinet <judd@archlinux.org>2003-10-17 06:18:01 +0200
committerJudd Vinet <judd@archlinux.org>2003-10-17 06:18:01 +0200
commit5aa3a24b17c5b1d2b43274e530259dab7711b9b0 (patch)
tree0f2421a372da3fc535e2e9fd1f9a6e428226eb72 /src
parent24b934e8868e1162c44ee06b2cb2990b6a434a98 (diff)
downloadpacman-5aa3a24b17c5b1d2b43274e530259dab7711b9b0.tar.gz
pacman-5aa3a24b17c5b1d2b43274e530259dab7711b9b0.tar.xz
Imported from pacman-2.6.4.tar.gz
Diffstat (limited to 'src')
-rw-r--r--src/pacman.c26
-rw-r--r--src/pacman.h2
2 files changed, 15 insertions, 13 deletions
diff --git a/src/pacman.c b/src/pacman.c
index 8aa7037a..03051f92 100644
--- a/src/pacman.c
+++ b/src/pacman.c
@@ -1226,16 +1226,18 @@ int pacman_add(pacdb_t *db, PMList *targets)
/* we'll need the full record for backup checks later */
oldpkg = db_scan(db, info->name, INFRQ_ALL);
- list_add(tmp, strdup(info->name));
- vprint("removing old package first...\n");
- retcode = pacman_remove(db, tmp);
- list_free(tmp);
- if(retcode == 1) {
- fprintf(stderr, "\nupgrade aborted.\n");
- return(1);
+ if(oldpkg) {
+ list_add(tmp, strdup(info->name));
+ vprint("removing old package first...\n");
+ retcode = pacman_remove(db, tmp);
+ list_free(tmp);
+ if(retcode == 1) {
+ fprintf(stderr, "\nupgrade aborted.\n");
+ return(1);
+ }
+ /* reload package cache */
+ pm_packages = db_loadpkgs(db, pm_packages);
}
- /* reload package cache */
- pm_packages = db_loadpkgs(db, pm_packages);
} else {
/* no previous package version is installed, so this is actually just an
* install
@@ -1280,7 +1282,7 @@ int pacman_add(pacdb_t *db, PMList *targets)
if(is_in(pathname, pmo_noupgrade)) {
notouch = 1;
} else {
- if(!pmo_upgrade) {
+ if(!pmo_upgrade || oldpkg == NULL) {
nb = is_in(pathname, info->backup);
} else {
/* op == PM_UPGRADE */
@@ -1465,7 +1467,7 @@ int pacman_add(pacdb_t *db, PMList *targets)
}
vprint("done.\n");
if(pmo_usesyslog) {
- if(pmo_upgrade) {
+ if(pmo_upgrade && oldpkg) {
syslog(LOG_INFO, "upgraded %s (%s -> %s)\n", info->name,
oldpkg->version, info->version);
} else {
@@ -1509,7 +1511,7 @@ int pacman_add(pacdb_t *db, PMList *targets)
snprintf(pm_install, PATH_MAX, "%s/%s/%s-%s/install", pmo_dbpath, db->treename, info->name, info->version);
vprint("Executing post-install script...\n");
snprintf(cmdline, PATH_MAX, "chroot %s /bin/sh %s post_%s %s %s", pmo_root, pm_install,
- (pmo_upgrade ? "upgrade" : "install"), info->version, (pmo_upgrade ? oldpkg->version : ""));
+ (pmo_upgrade ? "upgrade" : "install"), info->version, ((pmo_upgrade && oldpkg) ? oldpkg->version : ""));
system(cmdline);
}
}
diff --git a/src/pacman.h b/src/pacman.h
index cd231dc1..f5d8ca3d 100644
--- a/src/pacman.h
+++ b/src/pacman.h
@@ -22,7 +22,7 @@
#define _PAC_PACMAN_H
#ifndef PACVER
-#define PACVER "2.6.3"
+#define PACVER "2.6.4"
#endif
#ifndef PKGDIR