1 /* $Id: fdflag.h 10396 2020-11-12 20:19:41Z iulius $ 2 * 3 * Prototypes for setting or clearing file descriptor flags. 4 * 5 * The canonical version of this file is maintained in the rra-c-util package, 6 * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>. 7 * 8 * Written by Russ Allbery <eagle@eyrie.org> 9 * Copyright 2008, 2010-2011 10 * The Board of Trustees of the Leland Stanford Junior University 11 * Copyright 2004-2006 Internet Systems Consortium, Inc. ("ISC") 12 * Copyright 1991, 1994-2003 The Internet Software Consortium and Rich Salz 13 * 14 * This code is derived from software contributed to the Internet Software 15 * Consortium by Rich Salz. 16 * 17 * Permission to use, copy, modify, and distribute this software for any 18 * purpose with or without fee is hereby granted, provided that the above 19 * copyright notice and this permission notice appear in all copies. 20 * 21 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 22 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 23 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 24 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 25 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 26 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 27 * PERFORMANCE OF THIS SOFTWARE. 28 * 29 * SPDX-License-Identifier: ISC 30 */ 31 32 #ifndef INN_FDFLAG_H 33 #define INN_FDFLAG_H 1 34 35 #include <inn/defines.h> 36 #include "inn/portable-macros.h" 37 #include "inn/portable-socket.h" 38 #include "inn/portable-stdbool.h" 39 40 BEGIN_DECLS 41 42 /* 43 * Set a file descriptor close-on-exec or nonblocking. fdflag_close_exec is 44 * not supported on Windows and will always return false. fdflag_nonblocking 45 * is defined to take a socket_type so that it can be supported on Windows. 46 * On UNIX systems, you can safely pass in a non-socket file descriptor, but 47 * be aware that this will fail to compile on Windows. 48 */ 49 bool fdflag_close_exec(int fd, bool flag); 50 bool fdflag_nonblocking(socket_type fd, bool flag); 51 52 END_DECLS 53 54 #endif /* INN_FDFLAG_H */ 55