All the output assumes the terminal width is 80 cols min, check the terminal
size in order to detect a smaller terminal and prevent to have a nested
output.

Signed-off-by: Daniel Lezcano <daniel.lezc...@linaro.org>
---
 idlestat.c |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/idlestat.c b/idlestat.c
index a0ef2dd..245be9e 100644
--- a/idlestat.c
+++ b/idlestat.c
@@ -34,6 +34,7 @@
 #include <sched.h>
 #include <string.h>
 #include <float.h>
+#include <sys/ioctl.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/resource.h>
@@ -1380,6 +1381,23 @@ static int execute(int argc, char *argv[], char *const 
envp[],
        return -1;
 }
 
+static int check_window_size(void)
+{
+       struct winsize winsize;
+       
+       /* Output is redirected */
+       if (!isatty(STDOUT_FILENO))
+               return 0;
+
+       /* Get terminal window size */
+       ioctl(STDOUT_FILENO, TIOCGWINSZ, &winsize);
+
+       if (winsize.ws_col >= 80)
+               return 0;
+
+       return -1;
+}
+
 int main(int argc, char *argv[], char *const envp[])
 {
        struct cpuidle_datas *datas;
@@ -1397,6 +1415,12 @@ int main(int argc, char *argv[], char *const envp[])
                return -1;
        }
 
+       if (check_window_size()) {
+               fprintf(stderr, "The terminal must be at least "
+                       "80 columns wide\n");
+               return -1;
+       }
+
        /* init cpu topoinfo */
        init_cpu_topo_info();
 
-- 
1.7.9.5


_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to