fputs uncommented, checks added
authorAlexey Chernobaev <achernobaev@dev.rtsoft.ru>
Wed, 29 Aug 2018 17:30:38 +0000 (20:30 +0300)
committerAleksei Vereshchagin <avereschagin@dev.rtsoft.ru>
Mon, 3 Sep 2018 15:21:42 +0000 (18:21 +0300)
profctl.c

index 7241ac468f76d83852df67e17def46ff1d2b2460..cd483753e8c228d864bef7086b59ed0314008029 100644 (file)
--- a/profctl.c
+++ b/profctl.c
@@ -131,20 +131,25 @@ static FILE *pipef;
 
 static void *output_thread(void *arg)
 {
-       size_t lsize = 0;
-       char *buffer = NULL;
-
        openFileProcess();
 
        int linesRead = 0;
+       char *buffer = NULL;
+       size_t lsize = 0;
+
        while (getline(&buffer, &lsize, pipef) != -1) {
-               fputs(buffer, data_file_out);
                ++linesRead;
+               if (fputs(buffer, data_file_out) < 0) {
+                       log_error("fputs failed - exiting");
+                       break;
+               }
        }
+
        free(buffer);
        if (verbose) {
                log_error("output thread exits (%d lines read)", linesRead);
        }
+
        exit(0);
 }
 
@@ -173,7 +178,9 @@ static void finish()
                        unlink(pname);
                }
        }
-       fflush(data_file_out);
+       if (data_file_out != NULL) {
+               fflush(data_file_out);
+       }
        log_error("=== finished ===");
        kill(getpid(), SIGKILL);
 }