<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
Hello,<br>
<br>
This was sent Tue, 18 Mar 2008 but rejected (probably sent from wrong
email).<br>
<br>
I had to modify libcurses.c from gpm-1.20.3pre3.&nbsp; We use alarm() to
update the screen every 10 seconds.&nbsp; This was causing select() to
return -1 (errno=EINTR).&nbsp; I had to move the test for (flag==-1) before
FD_ISSET().&nbsp; I couldn't combine the (!flag) and (flag==-1) tests
because I need the GPM_DRAWPOINTER() call.&nbsp; I believe this applies
anywhere select() is called ("sets and timeout become undefined" on
error).<br>
<br>
Also, I added tests for fd&lt;0 and gpm_fd&lt;0.&nbsp; One of these is &lt;
0 if the gpm daemon is restarted.&nbsp; Should gpm_hflag=1 before return?<br>
<br>
Thanks<br>
<br>
Stan Dickerson<br>
Energy Control Systems<br>
<br>
Here is the revised section of libcurses.c:<br>
<br>
<blockquote type="cite"><br>
/*...................................................................*/<br>
&nbsp; if (gpm_fd&gt;=0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* linux
*/<br>
&nbsp;&nbsp;&nbsp; while(1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gpm_visiblepointer) GPM_DRAWPOINTER(&amp;ev);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do<br>
&nbsp;&nbsp; &nbsp;{<br>
&nbsp;&nbsp; &nbsp;FD_ZERO(&amp;selSet);<br>
&nbsp;&nbsp;<b> &nbsp;if (fd &lt; 0) return -1;&nbsp;&nbsp; &nbsp;// added by ECS 2/28/08 for daemon
restart</b><br>
&nbsp;&nbsp; &nbsp;FD_SET(fd,&amp;selSet);<br>
&nbsp;<b>&nbsp; &nbsp;if (gpm_fd &lt; 0) return -1;&nbsp;&nbsp; &nbsp;// added by ECS 2/28/08 for
daemon restart</b><br>
&nbsp;&nbsp; &nbsp;FD_SET(gpm_fd,&amp;selSet);<br>
&nbsp;&nbsp; &nbsp;gpm_timeout.tv_sec=SELECT_TIME;<br>
&nbsp;&nbsp; &nbsp;flag=select(max+1,&amp;selSet,(fd_set *)NULL,(fd_set
*)NULL,&amp;gpm_timeout);<br>
&nbsp;&nbsp; &nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (!flag);<br>
  <br>
&nbsp;&nbsp;&nbsp;&nbsp;<b>&nbsp; if (flag==-1)&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;// moved before FD_ISSET() by ECS 2/28/08<br>
&nbsp;&nbsp; &nbsp;continue;</b><br>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (FD_ISSET(fd,&amp;selSet))<br>
&nbsp;&nbsp; &nbsp;return GET(win);<br>
</blockquote>
<br>
<pre class="moz-signature" cols="72">-- 
Stan Dickerson
Energy Control Systems, Inc.
2940 Cole Court
Norcross, GA 30071
1-800-648-0970
770-448-0651
770-446-1319 fax
</pre>
</body>
</html>