]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
term-utils: verify writing to streams was successful
authorSami Kerola <kerolasa@iki.fi>
Wed, 4 Apr 2012 17:44:04 +0000 (19:44 +0200)
committerSami Kerola <kerolasa@iki.fi>
Wed, 4 Apr 2012 17:46:25 +0000 (19:46 +0200)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
term-utils/mesg.c
term-utils/script.c
term-utils/scriptreplay.c
term-utils/setterm.c
term-utils/ttymsg.c
term-utils/wall.c
term-utils/write.c

index 4fad6f57a1d571a049555c5838a31e98c36d70f3..366c679acd684acfab28afcf207bfb18b544d53e 100644 (file)
@@ -54,6 +54,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <getopt.h>
+
+#include "closestream.h"
 #include "nls.h"
 #include "c.h"
 
@@ -88,6 +90,7 @@ int main(int argc, char *argv[])
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        static const struct option longopts[] = {
                { "verbose",    no_argument,       0, 'v' },
index effedac4f59a9a76ca9491f5946adc8dbe820008..07be7e98709207fdff429717744da832ceb528d1 100644 (file)
@@ -59,6 +59,7 @@
 #include <locale.h>
 #include <stddef.h>
 
+#include "closestream.h"
 #include "nls.h"
 #include "c.h"
 
@@ -180,6 +181,7 @@ main(int argc, char **argv) {
        setlocale(LC_NUMERIC, "C");     /* see comment above */
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        while ((ch = getopt_long(argc, argv, "ac:efqt::Vh", longopts, NULL)) != -1)
                switch(ch) {
@@ -283,7 +285,8 @@ main(int argc, char **argv) {
        }
        doinput();
 
-       fclose(timingfd);
+       if (close_stream(timingfd) != 0)
+               errx(EXIT_FAILURE, _("write error"));
        return EXIT_SUCCESS;
 }
 
@@ -292,7 +295,8 @@ doinput(void) {
        ssize_t cc;
        char ibuf[BUFSIZ];
 
-       fclose(fscript);
+       if (close_stream(fscript) != 0)
+               errx(EXIT_FAILURE, _("write error"));
 
        while (die == 0) {
                if ((cc = read(STDIN_FILENO, ibuf, BUFSIZ)) > 0) {
@@ -404,6 +408,8 @@ dooutput(FILE *timingfd) {
 
        if (flgs)
                fcntl(master, F_SETFL, flgs);
+       if (close_stream(timingfd) != 0)
+               errx(EXIT_FAILURE, _("write error"));
        done();
 }
 
@@ -423,7 +429,8 @@ doshell(void) {
 
        getslave();
        close(master);
-       fclose(fscript);
+       if (close_stream(fscript) != 0)
+               errx(EXIT_FAILURE, _("write error"));
        dup2(slave, STDIN_FILENO);
        dup2(slave, STDOUT_FILENO);
        dup2(slave, STDERR_FILENO);
@@ -484,7 +491,8 @@ done(void) {
                        my_strftime(buf, sizeof buf, "%c\n", localtime(&tvec));
                        fprintf(fscript, _("\nScript done on %s"), buf);
                }
-               fclose(fscript);
+               if (close_stream(fscript) != 0)
+                       errx(EXIT_FAILURE, _("write error"));
                close(master);
 
                master = -1;
index 5aa8d42af5ca37edeb275107fbd4e3104a7c5554..63dc6fce18435f23ae57cbc1b7321e992da2d5a9 100644 (file)
@@ -28,6 +28,7 @@
 #include <unistd.h>
 #include <getopt.h>
 
+#include "closestream.h"
 #include "nls.h"
 #include "c.h"
 
@@ -153,6 +154,7 @@ main(int argc, char *argv[])
 
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        while ((ch = getopt_long(argc, argv, "t:s:d:Vh", longopts, NULL)) != -1)
                switch(ch) {
index 64fe0eb6ad5553fb188e09fee89e7615a5165545..5a652931b0813f6dab463bb40c1ef150826731ee 100644 (file)
 #include "c.h"
 #include "xalloc.h"
 #include "nls.h"
+#include "closestream.h"
 
 #if __GNU_LIBRARY__ < 5
 #ifndef __alpha__
@@ -1113,7 +1114,8 @@ perform_sequence(int vcterm) {
                        err(EXIT_DUMPFILE, _("can not open dump file %s for output"),
                                opt_sn_name); 
                screendump(opt_sn_num, F);
-               fclose(F);
+               if (close_stream(F) != 0)
+                       errx(EXIT_FAILURE, _("write error"));
        }
 
        /* -msg [on|off]. */
@@ -1225,6 +1227,7 @@ main(int argc, char **argv) {
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        if (argc < 2)
                bad_arg = TRUE;
index 5253f7a5cadc6f802580cd53c92d23799a1c60ab..aea6c2656040a3c5556f3f88f8eaa50157e2ed2d 100644 (file)
@@ -51,8 +51,9 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include "nls.h"
 
+#include "nls.h"
+#include "closestream.h"
 #include "pathnames.h"
 #include "ttymsg.h"
 
index fb3db21197b0b8eccb0b15a8c05d9a0c54e8aa90..f302d454f0004e8726e0236623681d1514055f96 100644 (file)
@@ -67,6 +67,7 @@
 #include "carefulputc.h"
 #include "c.h"
 #include "fileutils.h"
+#include "closestream.h"
 
 #define        IGNOREUSER      "sleeper"
 #define WRITE_TIME_OUT 300             /* in seconds */
@@ -114,6 +115,7 @@ main(int argc, char **argv) {
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        static const struct option longopts[] = {
                { "nobanner",   no_argument,            0, 'n' },
@@ -281,6 +283,7 @@ makemsg(char *fname, size_t *mbufsize, int print_banner)
        if (fread(mbuf, 1, *mbufsize, fp) != *mbufsize)
                err(EXIT_FAILURE, _("fread failed"));
 
-       fclose(fp);
+       if (close_stream(fp) != 0)
+               errx(EXIT_FAILURE, _("write error"));
        return mbuf;
 }
index a70eb7bd1d362c5e785f1e6383c2c92bcb812812..2a94792e004d67457b23517ef2bf753990d6e40b 100644 (file)
 #include <paths.h>
 #include <asm/param.h>
 #include <getopt.h>
+
 #include "c.h"
 #include "carefulputc.h"
+#include "closestream.h"
 #include "nls.h"
 
 static void __attribute__ ((__noreturn__)) usage(FILE * out);
@@ -103,6 +105,7 @@ int main(int argc, char **argv)
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
+       atexit(close_stdout);
 
        while ((c = getopt_long(argc, argv, "Vh", longopts, NULL)) != -1)
                switch (c) {