OSDN Git Service

(safe_read, safe_write): Handle EINTR.
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Nov 1993 21:43:08 +0000 (21:43 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Nov 1993 21:43:08 +0000 (21:43 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@6015 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cccp.c
gcc/protoize.c

index 3581dc0..434e053 100644 (file)
@@ -993,7 +993,13 @@ safe_read (desc, ptr, len)
   while (left > 0) {
     int nchars = read (desc, ptr, left);
     if (nchars < 0)
-      return nchars;
+      {
+#ifdef EINTR
+       if (errno == EINTR)
+         continue;
+#endif
+       return nchars;
+      }
     if (nchars == 0)
       break;
     ptr += nchars;
@@ -1014,7 +1020,13 @@ safe_write (desc, ptr, len)
   while (len > 0) {
     int written = write (desc, ptr, len);
     if (written < 0)
-      pfatal_with_name (out_fname);
+      {
+#ifdef EINTR
+       if (errno == EINTR)
+         continue;
+#endif
+       pfatal_with_name (out_fname);
+      }
     ptr += written;
     len -= written;
   }
index fee6a15..ef793d3 100644 (file)
@@ -745,7 +745,13 @@ safe_read (desc, ptr, len)
   while (left > 0) {
     int nchars = read (desc, ptr, left);
     if (nchars < 0)
-      return nchars;
+      {
+#ifdef EINTR
+       if (errno == EINTR)
+         continue;
+#endif
+       return nchars;
+      }
     if (nchars == 0)
       break;
     ptr += nchars;
@@ -767,8 +773,14 @@ safe_write (desc, ptr, len, out_fname)
   while (len > 0) {
     int written = write (desc, ptr, len);
     if (written < 0)
-      fprintf (stderr, "%s: error writing file `%s': %s\n",
-              pname, shortpath (NULL, out_fname), sys_errlist[errno]);
+      {
+#ifdef EINTR
+       if (errno == EINTR)
+         continue;
+#endif
+       fprintf (stderr, "%s: error writing file `%s': %s\n",
+                pname, shortpath (NULL, out_fname), sys_errlist[errno]);
+      }
     ptr += written;
     len -= written;
   }