Here's an even simpler, more direct, patch:

   Index: LineInput.cc
   ===================================================================
   --- LineInput.cc        (revision 1054)
   +++ LineInput.cc        (working copy)
   @@ -966,6 +966,11 @@
     const int b0 = fgetc(stdin);
        if (b0 == EOF)
           {
   +       if (errno == EINTR) {
   +         clearerr (stdin);
   +         CIN.unsetf( std::ios_base::unitbuf );
   +         goto again;
   +       }
            if (got_WINCH)
               {
                 got_WINCH = false;


On 29/07/18 22:00, Chris Moller wrote:

Ultimately, that's exactly what happens, but "goto again;" didn't work

Though I just thought of something I'll try in the morning...


On 29/07/18 21:19, Xiao-Yong Jin wrote:
EINTR could happen in many situations.
The usual resolution for EINTR is to retry whatever system call that failed 
because of EINTR.
Here, we should call fgetc again.

Best,
Xiao-Yong


On Jul 29, 2018, at 4:10 PM, Chris Moller<mol...@mollerware.com>  wrote:

Hi, Jürgen,

So far as I  can tell, after all the testing I can throw at it, my editor 
interface function is ready for the world.  Unfortunately, it needs a small 
patch to APL itself:


Reply via email to