X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8c74a125c85da08e34dceedb271b71b5f09ce690..a859d1cc237eca05a8db2ccde69db9da1dc9e39c:/src/sysselect.h diff --git a/src/sysselect.h b/src/sysselect.h index 24bdf469ce..db6438ed1f 100644 --- a/src/sysselect.h +++ b/src/sysselect.h @@ -1,5 +1,5 @@ /* sysselect.h - System-dependent definitions for the select function. - Copyright (C) 1995, 2001-2012 Free Software Foundation, Inc. + Copyright (C) 1995, 2001-2014 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -16,6 +16,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . */ +#ifndef SYSSELECT_H +#define SYSSELECT_H 1 + #ifndef DOS_NT #include #endif @@ -25,15 +28,12 @@ along with GNU Emacs. If not, see . */ definitions in w32.h are incompatible with the below. */ #ifndef WINDOWSNT #ifdef FD_SET -#ifdef FD_SETSIZE -#define MAXDESC FD_SETSIZE -#else -#define MAXDESC 64 +#ifndef FD_SETSIZE +#define FD_SETSIZE 64 #endif -#define SELECT_TYPE fd_set #else /* no FD_SET */ -#define MAXDESC 32 -#define SELECT_TYPE int +#define FD_SETSIZE 32 +typedef int fd_set; /* Define the macros to access a single-int bitmap of descriptors. */ #define FD_SET(n, p) (*(p) |= (1 << (n))) @@ -50,3 +50,42 @@ along with GNU Emacs. If not, see . */ #ifdef MSDOS #define pselect sys_select #endif + +#ifndef WINDOWSNT +INLINE_HEADER_BEGIN + +/* Check for out-of-range errors if ENABLE_CHECKING is defined. */ + +INLINE void +fd_CLR (int fd, fd_set *set) +{ + eassume (0 <= fd && fd < FD_SETSIZE); + FD_CLR (fd, set); +} + +INLINE bool +fd_ISSET (int fd, fd_set *set) +{ + eassume (0 <= fd && fd < FD_SETSIZE); + return FD_ISSET (fd, set) != 0; +} + +INLINE void +fd_SET (int fd, fd_set *set) +{ + eassume (0 <= fd && fd < FD_SETSIZE); + FD_SET (fd, set); +} + +#undef FD_CLR +#undef FD_ISSET +#undef FD_SET +#define FD_CLR(fd, set) fd_CLR (fd, set) +#define FD_ISSET(fd, set) fd_ISSET (fd, set) +#define FD_SET(fd, set) fd_SET (fd, set) + +INLINE_HEADER_END + +#endif /* !WINDOWSNT */ + +#endif