diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1995-08-08 13:37:34 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1995-08-08 13:37:34 +0000 |
commit | 414572e80b2a90bfa3294a04a84706800e8d087a (patch) | |
tree | 075cf12077ce090d90af984646eb432a19d3df66 /otherlibs/unix/select.c | |
parent | e2b3ef318dcfd5be17b1304d93533ebd4cde3359 (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.c | 20 |
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 |