]> granicus.if.org Git - sysstat/commitdiff
Fix #253: Make sure setbuf() is the first operation on stream
authorSebastien GODARD <sysstat@users.noreply.github.com>
Sat, 31 Oct 2020 13:58:51 +0000 (14:58 +0100)
committerSebastien GODARD <sysstat@users.noreply.github.com>
Sat, 31 Oct 2020 13:58:51 +0000 (14:58 +0100)
Required by musl-c.

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
cifsiostat.c
iostat.c
mpstat.c
pidstat.c
tapestat.c

index 62488d120ea839578c00b266368f1045d7592425..52e9cabd8516944b3eb3c837f18379935ad56289 100644 (file)
@@ -449,9 +449,6 @@ void rw_io_stat_loop(long int count, struct tm *rectime)
        sigaction(SIGALRM, &alrm_act, NULL);
        alarm(interval);
 
-       /* Don't buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
        do {
                /* Every device is potentially nonexistent */
                set_cifs_nonexistent(cifs_list);
@@ -605,6 +602,13 @@ int main(int argc, char **argv)
 
        get_localtime(&rectime, 0);
 
+       /*
+        * Don't buffer data if redirected to a pipe.
+        * Note: With musl-c, the behavior of this function is undefined except
+        * when it is the first operation on the stream.
+        */
+       setbuf(stdout, NULL);
+
        /* Get system name, release number and hostname */
        __uname(&header);
        if (print_gal_header(&rectime, header.sysname, header.release,
index f90a387b514854ec0203daa301744ef35a2ffbf0..6eb5ce5fb4ca239e40cf346afcb827f9d59eac42 100644 (file)
--- a/iostat.c
+++ b/iostat.c
@@ -1938,9 +1938,6 @@ void rw_io_stat_loop(long int count, struct tm *rectime)
        int_act.sa_handler = int_handler;
        sigaction(SIGINT, &int_act, NULL);
 
-       /* Don't buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
        do {
                /* Every device is potentially nonexistent */
                set_devices_nonexistent(dev_list);
@@ -2332,6 +2329,13 @@ int main(int argc, char **argv)
 
        get_localtime(&rectime, 0);
 
+       /*
+        * Don't buffer data if redirected to a pipe.
+        * Note: With musl-c, the behavior of this function is undefined except
+        * when it is the first operation on the stream.
+        */
+       setbuf(stdout, NULL);
+
        /* Get system name, release number and hostname */
        __uname(&header);
        if (print_gal_header(&rectime, header.sysname, header.release,
index 9071d518b05b55104e7f02348853aa4faa3fed14..bcef52cfd1646e5aef01e65d9485cf78c7c0a91f 100644 (file)
--- a/mpstat.c
+++ b/mpstat.c
@@ -1889,9 +1889,6 @@ void rw_mpstat_loop(int dis_hdr, int rows)
        int curr = 1, dis = 1;
        unsigned long lines = rows;
 
-       /* Dont buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
        /* Read system uptime and CPU stats */
        read_uptime(&(uptime_cs[0]));
        read_stat_cpu(st_cpu[0], cpu_nr + 1);
@@ -2313,6 +2310,13 @@ int main(int argc, char **argv)
        /* Get time */
        get_localtime(&(mp_tstamp[0]), 0);
 
+       /*
+        * Don't buffer data if redirected to a pipe.
+        * Note: With musl-c, the behavior of this function is undefined except
+        * when it is the first operation on the stream.
+        */
+       setbuf(stdout, NULL);
+
        /* Get system name, release number and hostname */
        __uname(&header);
        print_gal_header(&(mp_tstamp[0]), header.sysname, header.release,
index 3e326f41fb2e4a25765b9020db5691e1a004b167..799a1fca5324d3e054bf45b9b4e810f95c089e79 100644 (file)
--- a/pidstat.c
+++ b/pidstat.c
@@ -2354,9 +2354,6 @@ void rw_pidstat_loop(int dis_hdr, int rows)
        unsigned long lines = rows;
        struct st_pid *plist;
 
-       /* Don't buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
        /* Read system uptime */
        read_uptime(&uptime_cs[0]);
        read_stats(0);
@@ -2801,6 +2798,13 @@ int main(int argc, char **argv)
        /* Get time */
        get_localtime(&(ps_tstamp[0]), 0);
 
+       /*
+        * Don't buffer data if redirected to a pipe.
+        * Note: With musl-c, the behavior of this function is undefined except
+        * when it is the first operation on the stream.
+        */
+       setbuf(stdout, NULL);
+
        /* Get system name, release number and hostname */
        __uname(&header);
        print_gal_header(&(ps_tstamp[0]), header.sysname, header.release,
index f3e7c17ac4168f6cc8a10976d89c72e623004884..3d5795e8e58aced7f5f37b55d9f2fa1952e59ca9 100644 (file)
@@ -559,9 +559,6 @@ void rw_tape_stat_loop(long int count, struct tm *rectime)
                skip = 1;
        }
 
-       /* Don't buffer data if redirected to a pipe */
-       setbuf(stdout, NULL);
-
        do {
 
                if (tape_new_stats == NULL) {
@@ -703,6 +700,13 @@ int main(int argc, char **argv)
 
        get_localtime(&rectime, 0);
 
+       /*
+        * Don't buffer data if redirected to a pipe.
+        * Note: With musl-c, the behavior of this function is undefined except
+        * when it is the first operation on the stream.
+        */
+       setbuf(stdout, NULL);
+
        /* Get system name, release number and hostname */
        __uname(&header);
        if (print_gal_header(&rectime, header.sysname, header.release,