diff options
author | Dan McGee <dan@archlinux.org> | 2011-01-22 18:38:34 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-01-22 18:38:34 +0100 |
commit | cda7d7847f3434959ef077ec6eb78ea4b2078a5a (patch) | |
tree | 5fc4424639cbfbac2531e726b628c0912a0ba397 | |
parent | c91bd3dda9540bb80f9e73fed87eee69b4675977 (diff) | |
download | pacman-cda7d7847f3434959ef077ec6eb78ea4b2078a5a.tar.gz pacman-cda7d7847f3434959ef077ec6eb78ea4b2078a5a.tar.xz |
Be smarter about failure to read backup file contents
Instead of always printing MISSING, we can switch on the errno value set by
access() and print a more useful string. In this case, handle files we can't
read by printing UNREADABLE, print MISSING on ENOENT, and print UNKNOWN for
anything else. Fixes FS#22546.
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | src/pacman/package.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/pacman/package.c b/src/pacman/package.c index 68b0693a..77a5ee72 100644 --- a/src/pacman/package.c +++ b/src/pacman/package.c @@ -25,6 +25,7 @@ #include <string.h> #include <unistd.h> #include <limits.h> +#include <errno.h> #include <wchar.h> #include <alpm.h> @@ -183,7 +184,16 @@ static const char *get_backup_file_status(const char *root, } free(md5sum); } else { - ret = "MISSING"; + switch(errno) { + case EACCES: + ret = "UNREADABLE"; + break; + case ENOENT: + ret = "MISSING"; + break; + default: + ret = "UNKNOWN"; + } } return(ret); } |