summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-02-20 06:24:26 +0100
committerDan McGee <dan@archlinux.org>2012-02-20 06:24:26 +0100
commitfe659153d5971e41b7483bb40c31cd40f58f9d9c (patch)
treeac5adaff9ed0542e28acab67f9c95da9984dd889 /src
parent4899b5bd864919830fe4ce5786d37a00ab5a0da3 (diff)
downloadpacman-fe659153d5971e41b7483bb40c31cd40f58f9d9c.tar.gz
pacman-fe659153d5971e41b7483bb40c31cd40f58f9d9c.tar.xz
Give better error messages on database locking failures
This was noted when trying to perform an operation on a pacman database on a read-only file system. Print the actual underlying errno string, and only show the "you can remove" message if the lock file actually exists. Before: $ pacman -Su error: failed to init transaction (unable to lock database) if you're sure a package manager is not already running, you can remove /e/db.lck After: $ pacman -Su error: failed to init transaction (unable to lock database) error: could not lock database: Read-only file system Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/util.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 0b076d97..f7f8ecf5 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -69,9 +69,13 @@ void trans_init_error(void)
pm_printf(ALPM_LOG_ERROR, _("failed to init transaction (%s)\n"),
alpm_strerror(err));
if(err == ALPM_ERR_HANDLE_LOCK) {
- fprintf(stderr, _(" if you're sure a package manager is not already\n"
- " running, you can remove %s\n"),
- alpm_option_get_lockfile(config->handle));
+ const char *lockfile = alpm_option_get_lockfile(config->handle);
+ pm_printf(ALPM_LOG_ERROR, _("could not lock database: %s\n"),
+ strerror(errno));
+ if(access(lockfile, F_OK) == 0) {
+ fprintf(stderr, _(" if you're sure a package manager is not already\n"
+ " running, you can remove %s\n"), lockfile);
+ }
}
}