@node statfs, file system @findex statfs @tindex statfs@r{ structure} @subheading Syntax @example #include int statfs(const char *filename, struct statfs *buf); @end example @subheading Description This function returns information about the given "filesystem". The drive letter of the given @var{filename}, or the default drive if none is given, is used to retrieve the following structure: @example struct statfs @{ long f_type; /* 0 */ long f_bsize; /* bytes per cluster */ long f_blocks; /* clusters on drive */ long f_bfree; /* available clusters */ long f_bavail; /* available clusters */ long f_files; /* clusters on drive */ long f_ffree; /* available clusters */ fsid_t f_fsid; /* array: [0]=drive_number, [1]=MOUNT_UFS */ long f_magic; /* FS_MAGIC */ @}; @end example Note that if INT 21h is hooked by a TSR, the total size is limited to approximately 2GB (@pxref{statvfs}). Note that there is a POSIX-compliant function @code{statvfs} (@pxref{statvfs}), which returns similar information. @subheading Return Value Zero on success, nonzero on failure. @subheading Portability @portability !ansi, !posix @subheading Example @example struct statfs fs; unsigned long long bfree, bsize; statfs("anything", &fs); bfree = fs.f_bfree; bsize = fs.f_bsize; printf("%llu bytes left\n", bfree * bsize); @end example