This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/SYS/STAT.H

262 lines
5.2 KiB
C++
Raw Normal View History

/* Copyright (C) 1986-1994 by Digital Mars. $Revision: 1.1.1.1 $ */
#if __SC__ || __RCC__
#pragma once
#endif
#ifndef __SYS_STAT_H
#define __SYS_STAT_H 1
#if __cplusplus
extern "C" {
#endif
/* Define _CRTAPI1 (for compatibility with the NT SDK) */
#ifndef _CRTAPI1
#define _CRTAPI1 __cdecl
#endif
/* Define _CRTAPI2 (for compatibility with the NT SDK) */
#ifndef _CRTAPI2
#define _CRTAPI2 __cdecl
#endif
/* Define CRTIMP */
#ifndef _CRTIMP
#if defined(_WIN32) && defined(_DLL)
#define _CRTIMP __declspec(dllimport)
#else
#define _CRTIMP
#endif
#endif
#ifndef __STDC__
#if !defined(_WCHAR_T_DEFINED)
typedef unsigned short wchar_t;
#define _WCHAR_T_DEFINED 1
#endif
#endif
#define _S_IFMT 0xF000
#define _S_IFDIR 0x4000
#define _S_IFCHR 0x2000
#define _S_IFIFO 0x1000
#define _S_IFREG 0x8000
#define _S_IREAD 0x0100
#define _S_IWRITE 0x0080
#define _S_IEXEC 0x0040
#ifndef __STDC__
#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
#define S_IFBLK 0x6000
#define S_IFNAM 0x5000
#endif
#define S_ISREG(m) (((m)&(S_IFMT))==S_IFREG)
#define S_ISBLK(m) (((m)&(S_IFMT))==S_IFBLK)
#define S_ISNAM(m) (((m)&(S_IFMT))==S_IFNAM)
#define S_ISDIR(m) (((m)&(S_IFMT))==S_IFDIR)
#define S_ISCHR(m) (((m)&(S_IFMT))==S_IFCHR)
#if M_UNIX || M_XENIX
#define S_IFIFO 0x1000
#define S_ISFIFO(m) (((m)&(S_IFMT))==S_IFIFO)
#define S_IXOTH 0x0001
#define S_IWOTH 0x0002
#define S_IROTH 0x0004
#define S_IRWXO 0x0007
#define S_INSEM 0x0001
#define S_INSHD 0x0002
#define S_ISUID 0x0800
#define S_ISGID 0x0400
#define S_ISVTX 0x0200
#define S_ENFMT 0x0400
#define S_IRWXU 0x01C0
#define S_IRUSR 0x0100
#define S_IWUSR 0x0080
#define S_IXUSR 0x0040
#define S_IRWXG 0x0038
#define S_IRGRP 0x0020
#define S_IWGRP 0x0010
#define S_IXGRP 0x0008
#if !defined(_POSIX_SOURCE)
#define S_IFLNK 0xA000
#define S_IFSOCK 0xC000
#endif
#include <sys/types.h>
#include <time.h>
#ifndef _STYPES
#if !defined(M_ELF)
#define _STYPES 1
#endif
#endif
#if !defined(_STYPES)
#define _ST_FSTYPSZ 16
/* SVR4 stat */
struct stat {
dev_t st_dev;
long st_pad1[3];
ino_t st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
long st_pad2[2];
off_t st_size;
long st_pad3;
union
{
time_t st__sec;
timestruc_t st__tim;
} st_atim,
st_mtim,
st_ctim;
long st_blksize;
long st_blocks;
char st_fstype[_ST_FSTYPSZ];
int st_aclcnt;
level_t st_level;
ulong_t st_flags;
lid_t st_cmwlevel;
long st_pad4[4];
};
#define st_atime st_atim.st__sec
#define st_mtime st_mtim.st__sec
#define st_ctime st_ctim.st__sec
#else /* !defined(_STYPES) */
/* SVID 2 stat */
struct stat {
o_dev_t st_dev;
o_ino_t st_ino;
o_mode_t st_mode;
o_nlink_t st_nlink;
o_uid_t st_uid;
o_gid_t st_gid;
o_dev_t st_rdev;
off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
};
int __cdecl stat(const char *,struct stat *);
int __cdecl fstat(int,struct stat *);
#if !defined(_POSIX_SOURCE)
int __cdecl lstat(const char *, struct stat *);
int __cdecl mknod(const char *, mode_t, dev_t);
#endif
#endif /* !defined(_STYPES) */
#if defined(M_ELF)
int __cdecl _fxstat(const int, int, struct stat *);
int __cdecl _xstat(const int, const char *, struct stat *);
#if !defined(_POSIX_SOURCE)
int __cdecl _lxstat(const int, const char *, struct stat *);
int __cdecl _xmknod(const int, const char *, mode_t, dev_t);
#endif
#if !defined(_STYPES)
#define _MKNOD_VER 2
#define _STAT_VER 2
/* Map to SVR4 functions */
#define fstat(fd,buf) _fxstat(_STAT_VER, fd, buf)
#if !defined(_POSIX_SOURCE)
#define lstat(path,buf) _lxstat(_STAT_VER, path, buf)
#define mknod(path, mode, dev) _xmknod(_MKNOD_VER, path, mode, dev)
#endif
static int __cdecl stat( const char *path, struct stat *buf)
{
return _xstat(_STAT_VER, path, buf);
}
#endif /* !defined(_STYPES) */
#endif /* M_ELF */
int __cdecl chmod(const char *, mode_t);
int __cdecl mkdir(const char *, mode_t);
int __cdecl mkfifo(const char *, mode_t);
/* mode_t __cdecl umask(mode_t); defined in io.h */
int __cdecl fchmod(int, mode_t);
#else /* M_UNIX || M_XENIX */
#pragma pack (2)
struct stat
{ short st_dev;
unsigned short st_ino;
unsigned short st_mode;
short st_nlink;
unsigned short st_uid;
unsigned short st_gid;
short st_rdev;
#if __INTSIZE == 4
short dummy; /* for alignment */
#endif
long st_size;
long st_atime;
long st_mtime;
long st_ctime;
};
#pragma pack ()
#define _stat stat
int __cdecl stat(const char *,struct stat *);
int __cdecl fstat(int,struct stat *);
#define _fstat fstat
int __cdecl _stat(const char *,struct stat *);
#endif /* M_UNIX || M_XENIX */
/* For MicroSoft and Borland compatibility */
#define _S_IFMT 0xF000
#define _S_IFREG 0x8000
#define _S_IFBLK 0x6000
#define _S_IFNAM 0x5000
#define _S_IFDIR 0x4000
#define _S_IFCHR 0x2000
#define _S_IREAD 0x0100
#define _S_IWRITE 0x0080
#define _S_IEXEC 0x0040
#ifdef __NT__
#ifndef __STDC__
int __cdecl _wstat(const wchar_t *, struct stat *);
#endif
#endif
#if __cplusplus
}
#endif
#endif