summaryrefslogtreecommitdiffstats
path: root/Include/myselect.h
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1992-06-23 09:07:03 (GMT)
committerGuido van Rossum <guido@python.org>1992-06-23 09:07:03 (GMT)
commited233a56963233bbd646fdac01e55c9fdec50a30 (patch)
tree590cee6874280421f9288568015bf9b30326b8ed /Include/myselect.h
parent5dc8eb0914a6fcea604a6626af9e63120e84b527 (diff)
downloadcpython-ed233a56963233bbd646fdac01e55c9fdec50a30.zip
cpython-ed233a56963233bbd646fdac01e55c9fdec50a30.tar.gz
cpython-ed233a56963233bbd646fdac01e55c9fdec50a30.tar.bz2
Changes for new UNIX-specific built-in module 'select' and new header for
interfaces to variants of select() system call, "myselect.h". This includes adding fileno() methods to files, sockets and stdwin.
Diffstat (limited to 'Include/myselect.h')
-rw-r--r--Include/myselect.h80
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 */