diff options
Diffstat (limited to 'libdiskfs/file-statfs.c')
-rw-r--r-- | libdiskfs/file-statfs.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/libdiskfs/file-statfs.c b/libdiskfs/file-statfs.c index f90b74ef..817b0115 100644 --- a/libdiskfs/file-statfs.c +++ b/libdiskfs/file-statfs.c @@ -1,5 +1,5 @@ /* libdiskfs implementation of fs.defs: file_statfs - Copyright (C) 1992, 1993, 1994 Free Software Foundation + Copyright (C) 1992,93,94,98,2000 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -15,6 +15,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <string.h> +#include <sys/statvfs.h> + #include "priv.h" #include "fs_S.h" @@ -25,8 +28,23 @@ diskfs_S_file_statfs (struct protid *file, { if (!file) return EOPNOTSUPP; - + + /* Start will all zeros, so the fs can skip fields for which + it has no information to contribute. */ + bzero (statbuf, sizeof *statbuf); + + if (diskfs_readonly) + statbuf->f_flag |= ST_RDONLY; + if (_diskfs_nosuid) + statbuf->f_flag |= ST_NOSUID; + if (_diskfs_noexec) + statbuf->f_flag |= ST_NOEXEC; + if (diskfs_synchronous) + statbuf->f_flag |= ST_SYNCHRONOUS; + diskfs_set_statfs (statbuf); + statbuf->f_namelen = diskfs_name_max; + return 0; } |