summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-01-22 11:38:34 -0600
committerDan McGee <dan@archlinux.org>2011-01-22 11:38:34 -0600
commitcda7d7847f3434959ef077ec6eb78ea4b2078a5a (patch)
tree5fc4424639cbfbac2531e726b628c0912a0ba397 /src
parentc91bd3dda9540bb80f9e73fed87eee69b4675977 (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/package.c12
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);
}