From d9f05779bc6ce119773635d3e75a0d997487d0cc Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sun, 31 Dec 2017 23:00:30 +0000 Subject: [PATCH] df; use mntent --- Applications/util/df.c | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/Applications/util/df.c b/Applications/util/df.c index d81bfa41..7a097848 100644 --- a/Applications/util/df.c +++ b/Applications/util/df.c @@ -5,9 +5,7 @@ #include #include #include - -/* Assumed length of a line in /etc/mtab */ -#define MTAB_LINE 160 +#include const char *devname(dev_t); const char *mntpoint(const char *); @@ -119,19 +117,13 @@ void df_dev(dev_t dev) void df_all(void) { FILE *f; - char tmp[MTAB_LINE]; - char* dev; - char* mntpt; + struct mntent *mnt; - f = fopen("/etc/mtab", "r"); + f = setmntent("/etc/mtab", "r"); if (f) { - while (fgets(tmp, MTAB_LINE, f)) { - dev = strtok(tmp, " "); - mntpt = strtok(NULL, " "); - if (mntpt) - df_path(mntpt); - } - fclose(f); + while (mnt = getmntent(f)) + df_path(mnt->mnt_dir); + endmntent(f); } else { fprintf(stderr, "df: cannot open /etc/mtab: %s\n", strerror(errno)); } @@ -173,21 +165,17 @@ const char *devname(dev_t devno) const char *mntpoint(const char *devname) { FILE *f; - char tmp[MTAB_LINE]; - char* dev; - char* mntpt; + struct mntent *mnt; - f = fopen("/etc/mtab", "r"); + f = setmntent("/etc/mtab", "r"); if (f) { - while (fgets(tmp, sizeof(tmp), f)) { - dev = strtok(tmp, " "); - mntpt = strtok(NULL, " "); - if (strcmp(dev, devname) == 0) { - fclose(f); - return strdup(mntpt); + while (mnt = getmntent(f)) { + if (strcmp(mnt->mnt_fsname, devname) == 0) { + endmntent(f); + return strdup(mnt->mnt_dir); } } - fclose(f); + endmntent(f); } return "???"; -- 2.34.1