I'm trying to use libev in a MinGW project. Initially ev_async watchers didn't work; after some debugging I found out that the write() call in evpipe_write() always returns -1, indicating failure; apparently the MinGW libraries don't like me writing to a socket using write.
Now there is this 'nice' comment above the write call: /* win32 people keep sending patches that change this write() to send() */ /* and then run away. but send() is wrong, it wants a socket handle on win32 */ /* so when you think this write should be a send instead, please find out */ /* where your send() is from - it's definitely not the microsoft send, and */ /* tell me. thank you. */ And I am confident that there are good reasons for doing things as they were done. However swapping out the write call and replacing it with: send(EV_FD_TO_WIN32_HANDLE(evpipe [1]), &dummy, 1, 0); actually solves my problems; select() suddenly wakes up. Same story in pipecb(): recv(EV_FD_TO_WIN32_HANDLE(evpipe [0]), &dummy, 1, 0); works for me where read() fails. What are the odds that the read/write/send/recv calls can be wrapped in an #ifdef __MINGW32__ so an unpatched libev will just work on MingW? Thanks for your time. - Bert _______________________________________________ libev mailing list [email protected] http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev
