aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src/fakemail.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src/fakemail.c')
-rw-r--r--lib-src/fakemail.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c
index 26375a6165..780a104b40 100644
--- a/lib-src/fakemail.c
+++ b/lib-src/fakemail.c
@@ -62,6 +62,8 @@ main ()
/* This is to declare cuserid. */
#include <unistd.h>
+
+#include <ignore-value.h>
/* Type definitions */
@@ -405,8 +407,8 @@ close_the_streams (void)
for (rem = the_streams;
rem != ((stream_list) NULL);
rem = rem->rest_streams)
- no_problems = (no_problems &&
- ((*rem->action) (rem->handle) == 0));
+ if (no_problems && (*rem->action) (rem->handle) != 0)
+ error ("output error", NULL);
the_streams = ((stream_list) NULL);
return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE);
}
@@ -427,6 +429,8 @@ my_fclose (FILE *the_file)
{
putc ('\n', the_file);
fflush (the_file);
+ if (ferror (the_file))
+ return EOF;
return fclose (the_file);
}
@@ -496,7 +500,7 @@ put_line (const char *string)
}
}
/* Output that much, then break the line. */
- fwrite (s, 1, breakpos - s, rem->handle);
+ ignore_value (fwrite (s, 1, breakpos - s, rem->handle));
column = 8;
/* Skip whitespace and prepare to print more addresses. */
@@ -729,6 +733,9 @@ main (int argc, char **argv)
put_string (buf);
}
+ if (no_problems && (ferror (stdin) || fclose (stdin) != 0))
+ error ("input error", NULL);
+
exit (close_the_streams ());
}