From c9a8a295f8a7bfc5ee71ea636ab9f6d8a7c362c3 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 5 Nov 1993 21:43:08 +0000 Subject: [PATCH] (safe_read, safe_write): Handle EINTR. From-SVN: r6015 --- gcc/cccp.c | 16 ++++++++++++++-- gcc/protoize.c | 18 +++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/gcc/cccp.c b/gcc/cccp.c index 3581dc015e0..434e053e2d1 100644 --- a/gcc/cccp.c +++ b/gcc/cccp.c @@ -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; } diff --git a/gcc/protoize.c b/gcc/protoize.c index fee6a15fe01..ef793d3c5aa 100644 --- a/gcc/protoize.c +++ b/gcc/protoize.c @@ -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; } -- 2.30.2