opt: only use termios if HAVE_SYS_TERMIOS_H is defined
authorLuke Dashjr <luke-jr+git@utopios.org>
Wed, 5 Feb 2014 21:27:40 +0000 (21:27 +0000)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 6 Feb 2014 02:27:26 +0000 (12:57 +1030)
This fixes building for Windows and other platforms which lack <sys/termios.h>

Signed-off-by: Luke Dashjr <luke-jr+git@utopios.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ccan/opt/usage.c

index 1142fb85c9c91ca091172d8971fe58101d0beca6..ef33f9188dd304f41b12f19c6bbd29b3f8a69849 100644 (file)
@@ -1,7 +1,9 @@
 /* Licensed under GPLv3+ - see LICENSE file for details */
 #include <ccan/opt/opt.h>
+#ifdef HAVE_SYS_TERMIOS_H
 #include <sys/ioctl.h>
 #include <sys/termios.h> /* Required on Solaris for struct winsize */
+#endif
 #include <sys/unistd.h> /* Required on Solaris for ioctl */
 #include <string.h>
 #include <stdlib.h>
@@ -17,19 +19,23 @@ const char opt_hidden[1];
 
 static unsigned int get_columns(void)
 {
-       struct winsize w;
+       int ws_col = 0;
        const char *env = getenv("COLUMNS");
 
-       w.ws_col = 0;
        if (env)
-               w.ws_col = atoi(env);
-       if (!w.ws_col)
-               if (ioctl(0, TIOCGWINSZ, &w) == -1)
-                       w.ws_col = 0;
-       if (!w.ws_col)
-               w.ws_col = 80;
-
-       return w.ws_col;
+               ws_col = atoi(env);
+#ifdef HAVE_SYS_TERMIOS_H
+       if (!ws_col)
+       {
+               struct winsize w;
+               if (ioctl(0, TIOCGWINSZ, &w) != -1)
+                       ws_col = w.ws_col;
+       }
+#endif
+       if (!ws_col)
+               ws_col = 80;
+
+       return ws_col;
 }
 
 /* Return number of chars of words to put on this line.