File indexing completed on 2024-04-28 16:22:08
0001 #ifndef QUIRK_UNISTD_H 0002 #define QUIRK_UNISTD_H 0003 #pragma message("winquirk: no unistd.h!") 0004 0005 #include <winsock2.h> 0006 #include <ws2tcpip.h> 0007 #include <windows.h> 0008 #include <direct.h> 0009 #include <errno.h> 0010 #include <fcntl.h> 0011 #include <io.h> 0012 #include <stdio.h> 0013 #include <stdlib.h> 0014 #include <string.h> 0015 #include <process.h> 0016 0017 #include <windef.h> 0018 #include <winbase.h> 0019 #include <sys/types.h> 0020 #include <sys/stat.h> 0021 0022 #define getpid _getpid 0023 #define popen _popen 0024 #define pclose _pclose 0025 #define ssize_t SSIZE_T 0026 0027 #if 0 0028 static int gethostname(char *__name, size_t __len) { 0029 DWORD len = __len; 0030 if (0==GetComputerNameA(__name, &len)) 0031 return -1; 0032 return 0; 0033 } 0034 #endif 0035 0036 0037 #define environ _environ 0038 0039 /* 0040 #define _IFMT 0170000 // type of file 0041 #define _IFDIR 0040000 // directory 0042 #define S_ISDIR(m) (((m)&_IFMT) == _IFDIR) 0043 */ 0044 0045 #define S_ISUID 0004000 0046 #define S_IRWXU 0000700 0047 #define S_IRWXG 0000070 0048 #define S_IRWXO 0000007 0049 #define S_ISGID 0002000 0050 #define S_ISVTX 0001000 0051 0052 #define S_IRUSR 0000400 0053 #define S_IWUSR 0000200 0054 0055 #define S_IRGRP 0000040 0056 #define S_IWGRP 0000020 0057 0058 #define S_IROTH 0000004 0059 #define S_IWOTH 0000002 0060 0061 #define PATH_SEPARATOR '\\' 0062 0063 #if defined(_MSC_VER) && !defined(S_IREAD) 0064 # define S_IFMT _S_IFMT /* File type mask */ 0065 # define S_IFDIR _S_IFDIR /* Directory */ 0066 # define S_IFCHR _S_IFCHR /* Character device */ 0067 # define S_IFFIFO _S_IFFIFO /* Pipe */ 0068 # define S_IFREG _S_IFREG /* Regular file */ 0069 # define S_IREAD _S_IREAD /* Read permission */ 0070 # define S_IWRITE _S_IWRITE /* Write permission */ 0071 # define S_IEXEC _S_IEXEC /* Execute permission */ 0072 #endif 0073 0074 #define S_IFFIFO 0 0075 #define S_IFLNK 0 0076 #define S_IFBLK 0 0077 #define S_IFSOCK 0 0078 #define S_IXUSR 0 0079 #define S_IXGRP 0 0080 #define S_IXOTH 0 0081 0082 #if 0 0083 #define S_ISLNK(x) 0 0084 #define S_ISBLK(x) 0 0085 #define S_ISCHR(x) 0 0086 #define S_ISFIFO(x) 0 0087 #define S_ISSOCK(x) 0 0088 #else 0089 #define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFFIFO) 0090 #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) 0091 #define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) 0092 #define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) 0093 #define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) 0094 #define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) 0095 #define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) 0096 #endif 0097 0098 0099 #define F_OK 0 0100 #define R_OK 4 0101 #define W_OK 2 0102 #define X_OK 1 0103 0104 #ifndef STDIN_FILENO 0105 #define STDIN_FILENO 0 0106 #endif 0107 0108 #ifndef STDOUT_FILENO 0109 #define STDOUT_FILENO 1 0110 #endif 0111 0112 #ifndef STDERR_FILENO 0113 #define STDERR_FILENO 2 0114 #endif 0115 0116 #if _MSC_VER < 1600 0117 #define ENOTSUP ENOSYS 0118 #endif 0119 typedef unsigned int gid_t; 0120 typedef unsigned int uid_t; 0121 0122 #if defined(__MINGW64__) && defined(_WIN64) 0123 /* MINGW_EXTENSION */ 0124 typedef long long int pid_t; 0125 /* "long long int" is an alternative to __int64 */ 0126 #else 0127 typedef int mode_t; 0128 typedef int pid_t; 0129 #endif 0130 0131 0132 #define getgroups(x,y) 0 0133 0134 static uid_t geteuid() { 0135 return -2; 0136 } 0137 0138 static uid_t getuid() { 0139 return -2; 0140 } 0141 0142 static int readlink(const char *__path, char *__buf, int __buflen) 0143 { 0144 if (!__path) { 0145 errno = EINVAL; 0146 return -1; 0147 } 0148 if ( (__buflen < 0) || ((int)strlen(__path)>(__buflen-1)) ) 0149 { 0150 errno = ENAMETOOLONG; 0151 return -1; 0152 } 0153 if (access(__path, R_OK) == 0) { 0154 /* ok, copy to buf */ 0155 strncpy(__buf,__path,__buflen); 0156 errno = 0; 0157 return 0; 0158 } 0159 errno = ENOENT; 0160 return -1; 0161 } 0162 0163 0164 #ifdef __cplusplus 0165 extern "C" { 0166 0167 #if 0 0168 int setenv(const char *name, const char *value, int overwrite); 0169 int unsetenv (const char *name); 0170 #endif 0171 0172 } 0173 #endif /* __cplusplus */ 0174 0175 0176 static int sleep(unsigned int sec) { 0177 Sleep(sec*1000); 0178 return 0; 0179 } 0180 0181 #endif