* cygwin.din (fstatvfs): Export.
(statvfs): Export. * syscalls.cc: Include sys/statvfs.h. (statvfs): New function. Move statfs functionality here. (fstatvfs): New function. (statfs): Just call statvfs and copy structure. Check validity of incoming struct statfs pointer. * include/cygwin/types.h (fsblkcnt_t): Define. (fsfilcnt_t): Define. * include/cygwin/version.h: Bump API minor version. * include/sys/statvfs.h: New file.
This commit is contained in:
parent
e5ef74dfb2
commit
a652e6d52a
|
@ -1,3 +1,17 @@
|
||||||
|
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* cygwin.din (fstatvfs): Export.
|
||||||
|
(statvfs): Export.
|
||||||
|
* syscalls.cc: Include sys/statvfs.h.
|
||||||
|
(statvfs): New function. Move statfs functionality here.
|
||||||
|
(fstatvfs): New function.
|
||||||
|
(statfs): Just call statvfs and copy structure. Check validity of
|
||||||
|
incoming struct statfs pointer.
|
||||||
|
* include/cygwin/types.h (fsblkcnt_t): Define.
|
||||||
|
(fsfilcnt_t): Define.
|
||||||
|
* include/cygwin/version.h: Bump API minor version.
|
||||||
|
* include/sys/statvfs.h: New file.
|
||||||
|
|
||||||
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
|
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* devices.h: Switch FH_ZERO and FH_PORT as on Linux. Add FH_FULL.
|
* devices.h: Switch FH_ZERO and FH_PORT as on Linux. Add FH_FULL.
|
||||||
|
|
|
@ -564,6 +564,7 @@ _fsetpos64 = fsetpos64 SIGFE
|
||||||
_fstat64 = fstat64 SIGFE
|
_fstat64 = fstat64 SIGFE
|
||||||
fstatfs SIGFE
|
fstatfs SIGFE
|
||||||
_fstatfs = fstatfs SIGFE
|
_fstatfs = fstatfs SIGFE
|
||||||
|
fstatvfs SIGFE
|
||||||
fdatasync SIGFE
|
fdatasync SIGFE
|
||||||
fsync SIGFE
|
fsync SIGFE
|
||||||
_fsync = fsync SIGFE
|
_fsync = fsync SIGFE
|
||||||
|
@ -1307,6 +1308,7 @@ _sscanf = sscanf SIGFE
|
||||||
_stat64 = stat64 SIGFE
|
_stat64 = stat64 SIGFE
|
||||||
statfs SIGFE
|
statfs SIGFE
|
||||||
_statfs = statfs SIGFE
|
_statfs = statfs SIGFE
|
||||||
|
statvfs SIGFE
|
||||||
strcasecmp NOSIGFE
|
strcasecmp NOSIGFE
|
||||||
_strcasecmp = strcasecmp NOSIGFE
|
_strcasecmp = strcasecmp NOSIGFE
|
||||||
strcat NOSIGFE
|
strcat NOSIGFE
|
||||||
|
|
|
@ -66,6 +66,16 @@ typedef __blkcnt32_t blkcnt_t;
|
||||||
#endif
|
#endif
|
||||||
#endif /*__blkcnt_t_defined*/
|
#endif /*__blkcnt_t_defined*/
|
||||||
|
|
||||||
|
#ifndef __fsblkcnt_t_defined
|
||||||
|
#define __fsblkcnt_t_defined
|
||||||
|
typedef unsigned long fsblkcnt_t;
|
||||||
|
#endif /* __fsblkcnt_t_defined */
|
||||||
|
|
||||||
|
#ifndef __fsfilcnt_t_defined
|
||||||
|
#define __fsfilcnt_t_defined
|
||||||
|
typedef unsigned long fsfilcnt_t;
|
||||||
|
#endif /* __fsfilcnt_t_defined */
|
||||||
|
|
||||||
#ifndef __uid_t_defined
|
#ifndef __uid_t_defined
|
||||||
#define __uid_t_defined
|
#define __uid_t_defined
|
||||||
typedef unsigned short __uid16_t;
|
typedef unsigned short __uid16_t;
|
||||||
|
|
|
@ -248,12 +248,13 @@ details. */
|
||||||
118: Export getpriority, setpriority.
|
118: Export getpriority, setpriority.
|
||||||
119: Export fdatasync.
|
119: Export fdatasync.
|
||||||
120: Export basename, dirname.
|
120: Export basename, dirname.
|
||||||
|
121: Export statvfs, fstatvfs.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
||||||
|
|
||||||
#define CYGWIN_VERSION_API_MAJOR 0
|
#define CYGWIN_VERSION_API_MAJOR 0
|
||||||
#define CYGWIN_VERSION_API_MINOR 120
|
#define CYGWIN_VERSION_API_MINOR 121
|
||||||
|
|
||||||
/* There is also a compatibity version number associated with the
|
/* There is also a compatibity version number associated with the
|
||||||
shared memory regions. It is incremented when incompatible
|
shared memory regions. It is incremented when incompatible
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
/* sys/statvfs.h
|
||||||
|
|
||||||
|
Copyright 2005 Red Hat, Inc.
|
||||||
|
|
||||||
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
This software is a copyrighted work licensed under the terms of the
|
||||||
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||||
|
details. */
|
||||||
|
|
||||||
|
#ifndef _SYS_STATVFS_H_
|
||||||
|
#define _SYS_STATVFS_H_
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
struct statvfs {
|
||||||
|
unsigned long f_bsize; /* file system block size */
|
||||||
|
unsigned long f_frsize; /* fragment size */
|
||||||
|
fsblkcnt_t f_blocks; /* size of fs in f_frsize units */
|
||||||
|
fsblkcnt_t f_bfree; /* free blocks in fs */
|
||||||
|
fsblkcnt_t f_bavail; /* free blocks avail to non-superuser */
|
||||||
|
fsfilcnt_t f_files; /* total file nodes in file system */
|
||||||
|
fsfilcnt_t f_ffree; /* free file nodes in fs */
|
||||||
|
fsfilcnt_t f_favail; /* avail file nodes in fs */
|
||||||
|
unsigned long f_fsid; /* file system id */
|
||||||
|
unsigned long f_flag; /* mount flags */
|
||||||
|
unsigned long f_namemax; /* maximum length of filenames */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
int statvfs (const char *__path, struct statvfs *__buf);
|
||||||
|
int fstatvfs (int __fd, struct statvfs *__buf);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
};
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /*_SYS_STATVFS_H_*/
|
|
@ -24,6 +24,7 @@ details. */
|
||||||
#include "winsup.h"
|
#include "winsup.h"
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/vfs.h> /* needed for statfs */
|
#include <sys/vfs.h> /* needed for statfs */
|
||||||
|
#include <sys/statvfs.h> /* needed for statvfs */
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -1684,10 +1685,14 @@ get_osfhandle (int fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
statfs (const char *fname, struct statfs *sfs)
|
statvfs (const char *fname, struct statvfs *sfs)
|
||||||
{
|
{
|
||||||
char root[CYG_MAX_PATH];
|
char root[CYG_MAX_PATH];
|
||||||
|
|
||||||
|
if (check_null_empty_str_errno (fname)
|
||||||
|
|| check_null_invalid_struct_errno (sfs))
|
||||||
|
return -1;
|
||||||
|
|
||||||
syscall_printf ("statfs %s", fname);
|
syscall_printf ("statfs %s", fname);
|
||||||
|
|
||||||
if (!sfs)
|
if (!sfs)
|
||||||
|
@ -1729,18 +1734,51 @@ statfs (const char *fname, struct statfs *sfs)
|
||||||
__seterrno ();
|
__seterrno ();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sfs->f_type = flags;
|
|
||||||
sfs->f_bsize = spc*bps;
|
sfs->f_bsize = spc*bps;
|
||||||
|
sfs->f_frsize = spc*bps;
|
||||||
sfs->f_blocks = totalc;
|
sfs->f_blocks = totalc;
|
||||||
sfs->f_bavail = availc;
|
|
||||||
sfs->f_bfree = freec;
|
sfs->f_bfree = freec;
|
||||||
sfs->f_files = -1;
|
sfs->f_bavail = availc;
|
||||||
sfs->f_ffree = -1;
|
sfs->f_files = ULONG_MAX;
|
||||||
|
sfs->f_ffree = ULONG_MAX;
|
||||||
|
sfs->f_favail = ULONG_MAX;
|
||||||
sfs->f_fsid = vsn;
|
sfs->f_fsid = vsn;
|
||||||
sfs->f_namelen = maxlen;
|
sfs->f_flag = flags;
|
||||||
|
sfs->f_namemax = maxlen;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" int
|
||||||
|
fstatvfs (int fd, struct statvfs *sfs)
|
||||||
|
{
|
||||||
|
cygheap_fdget cfd (fd);
|
||||||
|
if (cfd < 0)
|
||||||
|
return -1;
|
||||||
|
return statvfs (cfd->get_name (), sfs);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int
|
||||||
|
statfs (const char *fname, struct statfs *sfs)
|
||||||
|
{
|
||||||
|
if (check_null_invalid_struct_errno (sfs))
|
||||||
|
return -1;
|
||||||
|
struct statvfs vfs;
|
||||||
|
int ret = statvfs (fname, &vfs);
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
sfs->f_type = vfs.f_flag;
|
||||||
|
sfs->f_bsize = vfs.f_bsize;
|
||||||
|
sfs->f_blocks = vfs.f_blocks;
|
||||||
|
sfs->f_bavail = vfs.f_bavail;
|
||||||
|
sfs->f_bfree = vfs.f_bfree;
|
||||||
|
sfs->f_files = -1;
|
||||||
|
sfs->f_ffree = -1;
|
||||||
|
sfs->f_fsid = vfs.f_fsid;
|
||||||
|
sfs->f_namelen = vfs.f_namemax;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
fstatfs (int fd, struct statfs *sfs)
|
fstatfs (int fd, struct statfs *sfs)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue