]> Zhao Yanbai Git Server - minix.git/commitdiff
Retry read after EINTR.
authorPhilip Homburg <philip@cs.vu.nl>
Wed, 14 Jun 2006 13:18:53 +0000 (13:18 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Wed, 14 Jun 2006 13:18:53 +0000 (13:18 +0000)
lib/editline/editline.c

index 50a776718a54ed87f4fcbfb1649410c5cbb02cad..b17be01d1bbd61418fbb6871dbdcab286782fee6 100755 (executable)
@@ -4,6 +4,7 @@
 */
 #include "editline.h"
 #include <signal.h>
+#include <errno.h>
 #include <ctype.h>
 
 /*
@@ -168,6 +169,7 @@ STATIC unsigned int
 TTYget()
 {
     CHAR       c;
+    int r;
 
     TTYflush();
     if (Pushed) {
@@ -176,7 +178,11 @@ TTYget()
     }
     if (*Input)
        return *Input++;
-    return read(0, &c, (SIZE_T)1) == 1 ? c : EOF;
+    do
+    {
+       r= read(0, &c, (SIZE_T)1);
+    } while (r == -1 && errno == EINTR);
+    return r  == 1 ? c : EOF;
 }
 
 #define TTYback()      (backspace ? TTYputs((CHAR *)backspace) : TTYput('\b'))