From: Richard Stallman Date: Mon, 1 Nov 1993 07:07:46 +0000 (+0000) Subject: (safe_write): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9022605c7e857267d092cfc3fc552fd1b08d94fb;p=gcc.git (safe_write): New function. (write_output): Use safe_write. From-SVN: r5960 --- diff --git a/gcc/cccp.c b/gcc/cccp.c index 5bf87046a93..671d7deb5e7 100644 --- a/gcc/cccp.c +++ b/gcc/cccp.c @@ -4746,6 +4746,24 @@ pcstring_used (hp) delete_macro (hp); } +/* Write LEN bytes at PTR to descriptor DESC, + retrying if necessary, and treating any real error as fatal. */ + +static void +safe_write (desc, ptr, len) + int desc; + char *ptr; + int len; +{ + while (len > 0) { + int written = write (fileno (stdout), ptr, len); + if (written < 0) + pfatal_with_name (out_fname); + ptr += written; + len -= written; + } +} + /* Write the output, interspersing precompiled strings in their */ /* appropriate places. */ static void @@ -4756,6 +4774,7 @@ write_output () int line_command_len = 80; char *line_command = xmalloc (line_command_len); int len; + int written; /* In each run through the loop, either cur_buf_loc == */ /* next_string_loc, in which case we print a series of strings, or */ @@ -4776,10 +4795,8 @@ write_output () strcpy (quote_string (line_command + strlen (line_command), next_string->filename), "\n"); - if (write (fileno (stdout), line_command, strlen (line_command)) < 0) - pfatal_with_name (out_fname); - if (write (fileno (stdout), next_string->contents, next_string->len) < 0) - pfatal_with_name (out_fname); + safe_write (fileno (stdout), line_command, strlen (line_command)); + safe_write (fileno (stdout), next_string->contents, next_string->len); } next_string = next_string->chain; } @@ -4789,8 +4806,7 @@ write_output () - (cur_buf_loc - outbuf.buf)) : outbuf.bufp - cur_buf_loc); - if (write (fileno (stdout), cur_buf_loc, len) < len) - pfatal_with_name (out_fname); + safe_write (fileno (stdout), cur_buf_loc, len); cur_buf_loc += len; } }