diff options
Diffstat (limited to 'Include/myselect.h')
-rw-r--r-- | Include/myselect.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/Include/myselect.h b/Include/myselect.h new file mode 100644 index 0000000..fa8ade9 --- /dev/null +++ b/Include/myselect.h @@ -0,0 +1,80 @@ +/*********************************************************** +Copyright 1991, 1992 by Stichting Mathematisch Centrum, Amsterdam, The +Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* Common definitions for files that use the BSD select system call. + This is so complicated because every UNIX variant requires that + you include a different set of headers. Customizing this one file + should be easier than patching each of the files using select()... */ + + +/* XXX You may have to include some of these only if not already included */ +#include <sys/types.h> +#include <sys/time.h> /* Implies <time.h> everywhere, as far as I know */ +#include <sys/param.h> + + +/* Hacks for various systems that need hand-holding... */ + +#ifdef _SEQUENT_ +#include <sys/select.h> +/* Sequent doesn't seem to define struct timezone anywhere?!?! */ +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; +#endif + +#ifdef _AIX /* I *think* this works */ +/* AIX defines fd_set in a separate file. Sigh... */ +#include <sys/select.h> +#endif + + + +/* (Very) old versions of BSD don't define the FD_* set of macros. + The following will usually do... */ + +#ifndef FD_SETSIZE +#define FD_SETSIZE 256 +#endif + +#ifndef FD_SET + +typedef long fd_mask; + +#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ +#ifndef howmany +#define howmany(x, y) (((x)+((y)-1))/(y)) +#endif + +typedef struct fd_set { + fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; +} fd_set; + +#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) +#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) +#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) +#define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) + +#endif /* FD_SET */ |