summaryrefslogtreecommitdiff
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
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>
-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);
}