diff options
author | Dan McGee <dan@archlinux.org> | 2012-02-20 06:24:26 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-02-20 06:24:26 +0100 |
commit | fe659153d5971e41b7483bb40c31cd40f58f9d9c (patch) | |
tree | ac5adaff9ed0542e28acab67f9c95da9984dd889 | |
parent | 4899b5bd864919830fe4ce5786d37a00ab5a0da3 (diff) | |
download | pacman-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>
-rw-r--r-- | src/pacman/util.c | 10 |
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); + } } } |