fix mounted fs used/free/reserved display to work again...

This commit is contained in:
Carsten Haitzler 2013-07-14 18:04:27 +09:00
parent 39ea5b4e3d
commit ba7bc6dba2
1 changed files with 28 additions and 10 deletions

View File

@ -527,32 +527,50 @@ _e_wid_fprev_preview_file(E_Widget_Data *wd)
unsigned long long blknum, blkused, blkres;
double mbsize, mbused, mbres;
Eina_Bool rdonly = EINA_FALSE;
char buf[PATH_MAX], mpoint[4096], fstype[4096];
Eina_Bool f_is_dir = EINA_FALSE;
Eina_Bool f_is_dev = EINA_FALSE;
char buf[PATH_MAX], mdev[4096], mpoint[4096], fstype[4096];
FILE *f;
fstype[0] = 0;
mpoint[0] = 0;
mdev[0] = 0;
f = fopen("/etc/mtab", "r");
if (f)
{
while (fgets(buf, sizeof(buf), f))
{
if (sscanf(buf, "%4000s %4000s %4000s %*s",
mdev, mpoint, fstype) == 3)
{
if (!strcmp(mdev, file))
{
f_is_dev = EINA_TRUE;
break;
}
if (!strcmp(mpoint, file))
{
f_is_dir = EINA_TRUE;
break;
}
}
fstype[0] = 0;
mpoint[0] = 0;
mdev[0] = 0;
}
fclose(f);
}
if ((f_is_dev) && (!f_is_dir))
{
if (statvfs(mpoint, &stfs) != 0) ok = EINA_FALSE;
}
fragsz = stfs.f_frsize;
blknum = stfs.f_blocks;
blkused = stfs.f_blocks - stfs.f_bfree;
blkres = stfs.f_bfree - stfs.f_bavail;
fstype[0] = 0;
mpoint[0] = 0;
f = fopen("/etc/mtab", "r");
if (f)
{
while (fgets(buf, sizeof(buf), f))
{
if (sscanf(buf, "%*s %4000s %4000s %*s",
mpoint, fstype) == 2)
{
if (!strcmp(mpoint, file)) break;
}
fstype[0] = 0;
mpoint[0] = 0;
}
fclose(f);
}
if (blknum > blkres)
if ((ok) && (mpoint[0]) && (blknum > blkres))
{
is_fs = EINA_TRUE;