From: Dan McGee <[email protected]>

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 <[email protected]>
---
 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 68b0693..77a5ee7 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);
 }
-- 
1.7.3.5


Reply via email to