|
From: Bruno H. <br...@cl...> - 2005-05-31 19:16:36
|
Eric Blood wrote: > > It has been reported as a poll() problem... > > Thanks. That did the trick. Thanks for the confirmation. poll() on MacOS X 10.4 really seems broken, see http://lists.apple.com/archives/darwin-dev/2005/May/msg00220.html http://comments.gmane.org/gmane.os.apple.fink.gnome/1193 http://cvs.sourceforge.net/viewcvs.py/fink/dists/10.4-transitional/unstable/main/finkinfo/gnome/glib2.info?r1=1.3&r2=1.4 I could just disable clisp's use of poll() on Darwin altogether, but it's better to have an autoconf test. Can some kind soul please run the following test program on MacOS X 10.4.0: $ gcc polltest.c -o polltest $ ./polltest ============================= polltest.c ============================= #include <stdio.h> #include <errno.h> #include <fcntl.h> #include <poll.h> int main () { struct pollfd ufd; int result; { ufd.fd = 0; ufd.events = POLLIN; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } { ufd.fd = 1; ufd.events = POLLOUT; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } { ufd.fd = open("/dev/tty", O_RDONLY); ufd.events = POLLIN; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } { ufd.fd = open("/dev/tty", O_WRONLY); ufd.events = POLLOUT; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } { ufd.fd = open("/dev/null", O_RDONLY); ufd.events = POLLIN; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } { ufd.fd = open("/dev/null", O_WRONLY); ufd.events = POLLOUT; ufd.revents = 0; errno = 0; result = poll(&ufd,1,0); printf("fd = %d: %d/%d %d -> %d\n", ufd.fd, result, errno, ufd.events, ufd.revents); } return 0; } ==================================================================== Bruno |