On Thu, 2003-10-23 at 19:20, Michael Hipp wrote:
> Anyone know a simple call from c that will give the free space available 
> on a volume (e.g. /dev/hda1)?

I use the following in a program. It wants to know about free space on
the disk where a data file is, as that is what we are interested in. It
should be enough to get you started. It works on SVR4/5 and Linux. The
comments are just what was there.

int DiskFreeSpace()
{
     struct statvfs fsbuf;

     // We use the name of the .set file, which always exists, and is
     // always on the same file system as all the other files created.
     // As the set file is not open, we use statvfs() to find out about
     // the file system on which the set file is being written.

     if (statvfs(set_name, &fsbuf) == ISERROR) return(0);

     // We use f_bavail to determine how many blocks are available.
     // f_bavail tells the # of free blocks available to non-superusers.
     //
     // As we want to return kilobytes free, f_bavail is divided by
     // f_frsize, which is the fndamental block size. This may be more
     // or less than 1024. As we want to stick with integer math, we do
     // a test for this so we can perform proper math.

     if (fsbuf.f_frsize < 1024) {

        return(fsbuf.f_bavail / (1024 / fsbuf.f_frsize));

     } else {

        return(fsbuf.f_bavail * (fsbuf.f_frsize / 1024));
     }
}


> 
> Thanks,
> Michael
> 
> _______________________________________________
> Linux-users mailing list
> [EMAIL PROTECTED]
> Unsubscribe/Suspend/Etc -> http://smtp.linux-sxs.org/mailman/listinfo/linux-users

_______________________________________________
Linux-users mailing list
[EMAIL PROTECTED]
Unsubscribe/Suspend/Etc -> http://smtp.linux-sxs.org/mailman/listinfo/linux-users

Reply via email to