default features: make musl usable without feature test macros
[musl] / include / sys / statvfs.h
index 6479be6..e0839ec 100644 (file)
@@ -1,20 +1,38 @@
 #ifndef        _SYS_STATVFS_H
 #define        _SYS_STATVFS_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
 
 #define __NEED_fsblkcnt_t
 #define __NEED_fsfilcnt_t
 #include <bits/alltypes.h>
 
-#include <bits/statfs.h>
+#include <endian.h>
+
+struct statvfs {
+       unsigned long f_bsize, f_frsize;
+       fsblkcnt_t f_blocks, f_bfree, f_bavail;
+       fsfilcnt_t f_files, f_ffree, f_favail;
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+       unsigned long f_fsid;
+       unsigned :8*(2*sizeof(int)-sizeof(long));
+#else
+       unsigned :8*(2*sizeof(int)-sizeof(long));
+       unsigned long f_fsid;
+#endif
+       unsigned long f_flag, f_namemax;
+       int __reserved[6];
+};
 
-int statvfs (const char *, struct statvfs *);
+int statvfs (const char *__restrict, struct statvfs *__restrict);
 int fstatvfs (int, struct statvfs *);
 
 #define ST_RDONLY 1
 #define ST_NOSUID 2
-
-#if 0
 #define ST_NODEV  4
 #define ST_NOEXEC 8
 #define ST_SYNCHRONOUS 16
@@ -24,7 +42,16 @@ int fstatvfs (int, struct statvfs *);
 #define ST_IMMUTABLE   512
 #define ST_NOATIME     1024
 #define ST_NODIRATIME  2048
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define statvfs64 statvfs
+#define fstatvfs64 fstatvfs
+#define fsblkcnt64_t fsblkcnt_t
+#define fsfilcnt64_t fsfilcnt_t
 #endif
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif