summaryrefslogtreecommitdiffstats
path: root/otherlibs/unix/select.c
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-08-08 13:37:34 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-08-08 13:37:34 +0000
commit414572e80b2a90bfa3294a04a84706800e8d087a (patch)
tree075cf12077ce090d90af984646eb432a19d3df66 /otherlibs/unix/select.c
parente2b3ef318dcfd5be17b1304d93533ebd4cde3359 (diff)
MAJ par-rapport a Caml Light 0.7
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@182 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/unix/select.c')
-rw-r--r--otherlibs/unix/select.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/otherlibs/unix/select.c b/otherlibs/unix/select.c
index 14d063706..a9499f2cd 100644
--- a/otherlibs/unix/select.c
+++ b/otherlibs/unix/select.c
@@ -58,8 +58,11 @@ value unix_select(readfds, writefds, exceptfds, timeout) /* ML */
struct timeval tv;
struct timeval * tvp;
int retcode;
- Push_roots(roots, 1)
-#define res roots[0]
+ value res;
+ Push_roots(roots, 3)
+#define read_list roots[0]
+#define write_list roots[1]
+#define except_list roots[2]
fdlist_to_fdset(readfds, &read);
fdlist_to_fdset(writefds, &write);
@@ -74,13 +77,18 @@ value unix_select(readfds, writefds, exceptfds, timeout) /* ML */
}
retcode = select(FD_SETSIZE, &read, &write, &except, tvp);
if (retcode == -1) uerror("select", Nothing);
+ read_list = fdset_to_fdlist(&read);
+ write_list = fdset_to_fdlist(&write);
+ except_list = fdset_to_fdlist(&except);
res = alloc_tuple(3);
- Field(res, 0) = fdset_to_fdlist(&read);
- Field(res, 1) = fdset_to_fdlist(&write);
- Field(res, 2) = fdset_to_fdlist(&except);
+ Field(res, 0) = read_list;
+ Field(res, 1) = write_list;
+ Field(res, 2) = except_list;
Pop_roots();
return res;
-#undef res
+#undef read_list
+#undef write_list
+#undef except_list
}
#else