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;
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;
}
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;
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;
}