]> granicus.if.org Git - jq/commitdiff
Better handling of stdout errors
authorNicolas Williams <nico@cryptonector.com>
Fri, 29 May 2015 16:50:08 +0000 (11:50 -0500)
committerNicolas Williams <nico@cryptonector.com>
Fri, 29 May 2015 16:50:08 +0000 (11:50 -0500)
main.c

diff --git a/main.c b/main.c
index 8f0718e99e5811303010f263ee8d5f3f922a1ce9..6b4d5b9200080712697864884d0c340aa296862f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -161,6 +161,7 @@ int main(int argc, char* argv[]) {
   int compiled = 0;
   int parser_flags = 0;
   int nfiles = 0;
+  int badwrite;
   jv program_arguments = jv_array();
 
   if (argc) progname = argv[0];
@@ -487,8 +488,8 @@ int main(int argc, char* argv[]) {
     ret = 2;
 
 out:
-  /* XXX We really should catch ENOSPC and such errors in jv_dumpf()! */
-  if (fclose(stdout)!=0) {
+  badwrite = ferror(stdout);
+  if (fclose(stdout)!=0 || badwrite) {
     fprintf(stderr,"Error: writing output failed: %s\n", strerror(errno));
     ret = 2;
   }