File Index Symbol Index

//
// sys/stat.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// The _stat() and _fstat() families of functions.
//
#pragma once
#include <corecrt.h> #include <sys/types.h>
#pragma warning(push)
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Types
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
struct
_stat32
{
_dev_t
st_dev
;
_ino_t
st_ino
;
unsigned
short
st_mode
;
short
;
short
st_uid
;
short
st_gid
;
_dev_t
st_rdev
;
_off_t
st_size
;
__time32_t
st_atime
;
__time32_t
st_mtime
;
__time32_t
st_ctime
; };
struct
_stat32i64
{
_dev_t
st_dev
;
_ino_t
st_ino
;
unsigned
short
st_mode
;
short
;
short
st_uid
;
short
st_gid
;
_dev_t
st_rdev
;
__int64
st_size
;
__time32_t
st_atime
;
__time32_t
st_mtime
;
__time32_t
st_ctime
; };
struct
_stat64i32
{
_dev_t
st_dev
;
_ino_t
st_ino
;
unsigned
short
st_mode
;
short
;
short
st_uid
;
short
st_gid
;
_dev_t
st_rdev
;
_off_t
st_size
;
__time64_t
st_atime
;
__time64_t
st_mtime
;
__time64_t
st_ctime
; };
struct
_stat64
{
_dev_t
st_dev
;
_ino_t
st_ino
;
unsigned
short
st_mode
;
short
;
short
st_uid
;
short
st_gid
;
_dev_t
st_rdev
;
__int64
st_size
;
__time64_t
st_atime
;
__time64_t
st_mtime
;
__time64_t
st_ctime
; };
#define __stat64 _stat64 // For legacy compatibility
#if _CRT_INTERNAL_NONSTDC_NAMES && !defined _CRT_NO_TIME_T
struct
stat
{
_dev_t
st_dev
;
_ino_t
st_ino
;
unsigned
short
st_mode
;
short
;
short
st_uid
;
short
st_gid
;
_dev_t
st_rdev
;
_off_t
st_size
;
time_t
st_atime
;
time_t
st_mtime
;
time_t
st_ctime
; };
#endif
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Flags
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#define _S_IFMT 0xF000 // File type mask
#define _S_IFDIR 0x4000 // Directory
#define _S_IFCHR 0x2000 // Character special
#define _S_IFIFO 0x1000 // Pipe
#define _S_IFREG 0x8000 // Regular
#define _S_IREAD 0x0100 // Read permission, owner
#define _S_IWRITE 0x0080 // Write permission, owner
#define _S_IEXEC 0x0040 // Execute/search permission, owner
#if _CRT_INTERNAL_NONSTDC_NAMES
#define S_IFMT _S_IFMT
#define S_IFDIR _S_IFDIR
#define S_IFCHR _S_IFCHR
#define S_IFREG _S_IFREG
#define S_IREAD _S_IREAD
#define S_IWRITE _S_IWRITE
#define S_IEXEC _S_IEXEC #endif
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Functions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#ifdef _USE_32BIT_TIME_T
#define _fstat _fstat32
#define _fstati64 _fstat32i64
#define _stat _stat32
#define _stati64 _stat32i64
#define _wstat _wstat32
#define _wstati64 _wstat32i64
#else
#define _fstat _fstat64i32
#define _fstati64 _fstat64
#define _stat _stat64i32
#define _stati64 _stat64
#define _wstat _wstat64i32
#define _wstati64 _wstat64 #endif
); ); ); ); ); ); ); ); ); ); ); );
#if !defined RC_INVOKED && !defined __midl && _CRT_INTERNAL_NONSTDC_NAMES && !defined _CRT_NO_TIME_T
#ifdef _USE_32BIT_TIME_T
static __inline int __CRTDECL fstat(int const _FileHandle, struct stat* const _Stat)
{
_STATIC_ASSERT(sizeof(struct stat) == sizeof(struct _stat32));
return _fstat32(_FileHandle, (struct _stat32*)_Stat);
}
static __inline int __CRTDECL stat(char const* const _FileName, struct stat* const _Stat)
{
_STATIC_ASSERT(sizeof(struct stat) == sizeof(struct _stat32));
return _stat32(_FileName, (struct _stat32*)_Stat);
}
#else
{
return
_fstat64i32
(
_FileHandle
, (
struct
_stat64i32
*)
_Stat
); } {
return
_stat64i32
(
_FileName
, (
struct
_stat64i32
*)
_Stat
); }
#endif #endif
#pragma warning(pop)