summaryrefslogtreecommitdiff
path: root/src/print_disk_info.c
diff options
context:
space:
mode:
authoreplanet <emeric.planet@gmail.com>2018-11-07 22:39:22 +0100
committereplanet <emeric.planet@gmail.com>2018-11-08 07:59:15 +0100
commite5455251481d396f11dc87c734a91a319c44773c (patch)
treeac5864ce9aa6a9b0af9fc680f4a0c6ad450010db /src/print_disk_info.c
parent1492868b80eb1092b9ccb974fa6792e10dbc7361 (diff)
Read /proc/mounts if /etc/mtab can't be read
Diffstat (limited to 'src/print_disk_info.c')
-rw-r--r--src/print_disk_info.c19
1 files 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