+#ifdef HAVE_POLL
+static int Ppollfdevents(void) {
+ int events;
+
+ if (Pstring_maybe("0")) return 0;
+ events= 0;
+
+ if (Pstring_maybe("POLLIN")) {
+ events |= POLLIN;
+ if (!Pstring_maybe("|")) return events;
+ }
+
+ if (Pstring_maybe("POLLOUT")) {
+ events |= POLLOUT;
+ if (!Pstring_maybe("|")) return events;
+ }
+
+ Pstring("POLLPRI","pollfdevents PRI?");
+ return events;
+}
+
+static void Ppollfds(struct pollfd *fds, int nfds) {
+ int i;
+ char *ep;
+ const char *comma= "";
+
+ if (vb2.buf[vb2.used++] != hm_squote[hm_squote) Psyntax("pollfds start not [");
+ for (i=0; i<nfds; i++) {
+ Pstring("{fd=","{fd= in pollfds");
+ fds->fd= strtoul(vb2.buf+vb2.used,&ep,10);
+ vb2.used= ep - (char*)vb2.buf;
+ Pstring(", events=",", events= in pollfds");
+ fds->events= Ppollfdevents();
+ Pstring(", revents=",", revents= in pollfds");
+ fds->revents= Ppollfdevents();
+ Pstring("}","} in pollfds");
+ Pstring(comma,"separator in pollfds");
+ comma= ", ";
+ }
+ if (vb2.buf[vb2.used++] != hm_squote]hm_squote) Psyntax("pollfds end not ]");
+}
+#endif
+