Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix df hanging when statvfs() fails. - ubase - suckless linux base utils
git clone git://git.suckless.org/ubase
Log
Files
Refs
README
LICENSE
---
commit ab4f93cf47f423da2399cbe35cbc6c109e5e1825
parent f701698297ec1d1230caaa9403362c3a2b95f5ed
Author: Risto Salminen <[email protected]>
Date: Mon, 26 Jan 2015 20:53:14 +0200
Fix df hanging when statvfs() fails.
Now df prints out an appropriate error message when statvfs() fails
instead of just hanging. Also make df return 1 when statvfs() fails.
Diffstat:
M df.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/df.c b/df.c
@@ -13,7 +13,7 @@ static int aflag = 0;
static int hflag = 0;
static int kflag = 0;
-static void mnt_show(const char *fsname, const char *dir);
+static int mnt_show(const char *fsname, const char *dir);
static void
usage(void)
@@ -26,6 +26,7 @@ main(int argc, char *argv[])
{
struct mntent *me = NULL;
FILE *fp;
+ int ret = 0;
ARGBEGIN {
case 'a':
@@ -61,11 +62,12 @@ main(int argc, char *argv[])
if (aflag == 0)
if (strcmp(me->mnt_type, "rootfs") == 0)
continue;
- mnt_show(me->mnt_fsname, me->mnt_dir);
+ if (mnt_show(me->mnt_fsname, me->mnt_dir) < 0)
+ ret = 1;
}
endmntent(fp);
- return 0;
+ return ret;
}
#define CALC_POWER(n, power, base, i) do { \
@@ -107,7 +109,7 @@ print_human(
avail, postfixes[k], capacity, dir);
}
-static void
+static int
mnt_show(const char *fsname, const char *dir)
{
struct statvfs s;
@@ -115,7 +117,10 @@ mnt_show(const char *fsname, const char *dir)
int capacity = 0;
int bs;
- statvfs(dir, &s);
+ if (statvfs(dir, &s) < 0) {
+ weprintf("statvfs %s:", dir);
+ return -1;
+ }
bs = s.f_frsize / blksize;
total = s.f_blocks * bs;
@@ -133,4 +138,6 @@ mnt_show(const char *fsname, const char *dir)
else
printf("%-12s %9llu %9llu %9llu %7d%% %s\n",
fsname, total, used, avail, capacity, dir);
+
+ return 0;
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.