2011-02-26 Paul Eggert <eggert@cs.ucla.edu>
+ * fakemail.c: Include <ignore-value.h>.
+ (put_line): Explicitly ignore fwrite return value, for benefit of
+ recent glibc + gcc.
+ (close_the_streams): Diagnose output errors instead of merely
+ exiting with nonzero status.
+ (my_fclose, main): Diagnose input errors, and exit with nonzero status.
+ Formerly, input errors were silently ignored.
+
* ebrowse.c (putstr): Rename from PUTSTR and turn into a function.
All callers changed. This is cleaner, and avoids GCC warnings about
passing NULL to fputs.
/* This is to declare cuserid. */
#include <unistd.h>
+
+#include <ignore-value.h>
\f
/* Type definitions */
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);
}
{
putc ('\n', the_file);
fflush (the_file);
+ if (ferror (the_file))
+ return EOF;
return fclose (the_file);
}
}
}
/* 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. */
put_string (buf);
}
+ if (no_problems && (ferror (stdin) || fclose (stdin) != 0))
+ error ("input error", NULL);
+
exit (close_the_streams ());
}