From a73430cb79f7446bf6fa0d330c7558c705b9c22d Mon Sep 17 00:00:00 2001 From: rms Date: Mon, 1 Nov 1993 07:07:46 +0000 Subject: [PATCH] (safe_write): New function. (write_output): Use safe_write. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5960 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cccp.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/gcc/cccp.c b/gcc/cccp.c index 5bf8704..671d7de 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; } } -- 2.7.4