From e5455251481d396f11dc87c734a91a319c44773c Mon Sep 17 00:00:00 2001
From: eplanet <emeric.planet@gmail.com>
Date: Wed, 7 Nov 2018 22:39:22 +0100
Subject: Read /proc/mounts if /etc/mtab can't be read

---
 src/print_disk_info.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/print_disk_info.c b/src/print_disk_info.c
index bc43da0..03c95e5 100644
--- a/src/print_disk_info.c
+++ b/src/print_disk_info.c
@@ -145,15 +145,22 @@ void print_disk_info(yajl_gen json_gen, char *buffer, const char *path, const ch
         if (strlen(sanitized) > 1 && sanitized[strlen(sanitized) - 1] == '/')
             sanitized[strlen(sanitized) - 1] = '\0';
         FILE *mntentfile = setmntent("/etc/mtab", "r");
-        struct mntent *m;
+        if (mntentfile == NULL) {
+            mntentfile = setmntent("/proc/mounts", "r");
+        }
+        if (mntentfile == NULL) {
+            fprintf(stderr, "i3status: files /etc/mtab and /proc/mounts aren't accessible\n");
+        } else {
+            struct mntent *m;
 
-        while ((m = getmntent(mntentfile)) != NULL) {
-            if (strcmp(m->mnt_dir, sanitized) == 0) {
-                mounted = true;
-                break;
+            while ((m = getmntent(mntentfile)) != NULL) {
+                if (strcmp(m->mnt_dir, sanitized) == 0) {
+                    mounted = true;
+                    break;
+                }
             }
+            endmntent(mntentfile);
         }
-        endmntent(mntentfile);
         free(sanitized);
     }
 #endif
-- 
cgit v1.2.3