FD_ZERO(&readfds);
FD_SET(PtyRDFD,&readfds);
+ FD_SET(device_portfd,&readfds);
timeout.tv_sec=2;
timeout.tv_usec=0;/*500*1000;*/
- res = select(PtyRDFD+1,&readfds,NULL/*writefds*/,NULL/*exceptfds*/,&timeout);
+ res = select((device_portfd > PtyRDFD ? device_portfd : PtyRDFD)+1,
+ &readfds,NULL/*writefds*/,NULL/*exceptfds*/,&timeout);
switch (res) {
case 0: /* Timeout */
return (false);
default:
- if (FD_ISSET(PtyRDFD,&readfds)) {
+ if (FD_ISSET(PtyRDFD,&readfds))
VM_CharHandler();
- } else usleep(500); /* Probably the file has been closed */
+ if (FD_ISSET(device_portfd,&readfds))
+ SigHandler(0);
+ if (!FD_ISSET(PtyRDFD,&readfds) && !FD_ISSET(device_portfd,&readfds))
+ usleep(500); /* Probably the file has been closed */
break;
}
}
/* search for an unused pty */
for (i=0; i<16 && master <= 0; i++) {
for (j=0; j<16 && master <= 0; j++) {
- (*name)[8] = "pqrstuvwxyzPQRST"[i];
- (*name)[9] = "0123456789abcdef"[j];
+static const char *ptyp8="pqrstuvwxyzPQRST";
+static const char *ptyp9="0123456789abcdef";
+
+ (*name)[8] = ptyp8[i];
+ (*name)[9] = ptyp9[j];
/* open the master pty */
if ((master = open(*name, O_RDWR | O_NOCTTY | O_NONBLOCK )) < 0) {
if (errno == ENOENT) {