1 /* filecntl.h - Definitions to set file descriptors to close-on-exec. */ 2 3 /* Copyright (C) 1993 Free Software Foundation, Inc. 4 5 This file is part of GNU Bash, the Bourne Again SHell. 6 7 Bash is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 Bash is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Bash. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #if !defined (_FILECNTL_H_) 22 #define _FILECNTL_H_ 23 24 #include <fcntl.h> 25 26 /* Definitions to set file descriptors to close-on-exec, the Posix way. */ 27 #if !defined (FD_CLOEXEC) 28 #define FD_CLOEXEC 1 29 #endif 30 31 #define FD_NCLOEXEC 0 32 33 #define SET_CLOSE_ON_EXEC(fd) (fcntl ((fd), F_SETFD, FD_CLOEXEC)) 34 #define SET_OPEN_ON_EXEC(fd) (fcntl ((fd), F_SETFD, FD_NCLOEXEC)) 35 36 /* How to open a file in non-blocking mode, the Posix.1 way. */ 37 #if !defined (O_NONBLOCK) 38 # if defined (O_NDELAY) 39 # define O_NONBLOCK O_NDELAY 40 # else 41 # define O_NONBLOCK 0 42 # endif 43 #endif 44 45 /* Make sure O_BINARY and O_TEXT are defined to avoid Windows-specific code. */ 46 #if !defined (O_BINARY) 47 # define O_BINARY 0 48 #endif 49 #if !defined (O_TEXT) 50 # define O_TEXT 0 51 #endif 52 53 #endif /* ! _FILECNTL_H_ */ 54