1 /* 2 ** Copyright (C) 2002-2017 Erik de Castro Lopo <erikd@mega-nerd.com> 3 ** 4 ** This program is free software; you can redistribute it and/or modify 5 ** it under the terms of the GNU Lesser General Public License as published by 6 ** the Free Software Foundation; either version 2.1 of the License, or 7 ** (at your option) any later version. 8 ** 9 ** This program is distributed in the hope that it will be useful, 10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 ** GNU Lesser General Public License for more details. 13 ** 14 ** You should have received a copy of the GNU Lesser General Public License 15 ** along with this program; if not, write to the Free Software 16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 */ 18 19 /* Microsoft declares some 'unistd.h' functions in 'io.h'. */ 20 21 #include <sys/stat.h> 22 #ifdef HAVE_IO_H 23 #include <io.h> 24 #endif 25 26 /* Some defines that microsoft 'forgot' to implement. */ 27 28 #ifndef R_OK 29 #define R_OK 4 /* Test for read permission. */ 30 #endif 31 32 #ifndef W_OK 33 #define W_OK 2 /* Test for write permission. */ 34 #endif 35 36 #ifndef X_OK 37 #ifdef _WIN32 38 #define X_OK 0 39 #else 40 #define X_OK 1 /* execute permission - unsupported in windows*/ 41 #endif 42 #endif 43 44 #ifndef F_OK 45 #define F_OK 0 /* Test for existence. */ 46 #endif 47 48 #ifndef S_IRWXU 49 #define S_IRWXU 0000700 /* rwx, owner */ 50 #endif 51 52 #ifndef S_IRUSR 53 #define S_IRUSR 0000400 /* read permission, owner */ 54 #endif 55 56 #ifndef S_IWUSR 57 #define S_IWUSR 0000200 /* write permission, owner */ 58 #endif 59 60 #ifndef S_IXUSR 61 #define S_IXUSR 0000100 /* execute/search permission, owner */ 62 #endif 63 64 /* Windows (except MinGW) doesn't have group permissions so set all these to zero. */ 65 #ifndef S_IRWXG 66 #define S_IRWXG 0 /* rwx, group */ 67 #endif 68 69 #ifndef S_IRGRP 70 #define S_IRGRP 0 /* read permission, group */ 71 #endif 72 73 #ifndef S_IWGRP 74 #define S_IWGRP 0 /* write permission, grougroup */ 75 #endif 76 77 #ifndef S_IXGRP 78 #define S_IXGRP 0 /* execute/search permission, group */ 79 #endif 80 81 /* Windows (except MinGW) doesn't have others permissions so set all these to zero. */ 82 #ifndef S_IRWXO 83 #define S_IRWXO 0 /* rwx, other */ 84 #endif 85 86 #ifndef S_IROTH 87 #define S_IROTH 0 /* read permission, other */ 88 #endif 89 90 #ifndef S_IWOTH 91 #define S_IWOTH 0 /* write permission, other */ 92 #endif 93 94 #ifndef S_IXOTH 95 #define S_IXOTH 0 /* execute/search permission, other */ 96 #endif 97 98 #ifndef S_ISFIFO 99 #define S_ISFIFO(mode) (((mode) & _S_IFMT) == _S_IFIFO) 100 #endif 101 102 #ifndef S_ISREG 103 #define S_ISREG(mode) (((mode) & _S_IFREG) == _S_IFREG) 104 #endif 105 106 /* 107 ** Don't know if these are still needed. 108 ** 109 ** #define _IFMT _S_IFMT 110 ** #define _IFREG _S_IFREG 111 */ 112 113