Browse Source

opt: only use termios if HAVE_SYS_TERMIOS_H is defined

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>
Luke Dashjr 12 years ago
parent
commit
d218dcd458
1 changed files with 16 additions and 10 deletions
  1. 16 10
      ccan/opt/usage.c

+ 16 - 10
ccan/opt/usage.c

@@ -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.