settings: Make viewwidth, viewlength "int"s instead of pointers.
[pspp] / src / ui / terminal / terminal.c
index 9f371821f95436b1c24a9c13b286ca6c627d8aa6..f387c5112a86efc9b950c2e73aaf6d35431afb23 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2007, 2010 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
 #include <config.h>
 
-#include <ui/terminal/terminal.h>
+#include "ui/terminal/terminal.h"
 
 #include <stdbool.h>
 #include <stdlib.h>
 
-#include <libpspp/compiler.h>
+#include "data/settings.h"
+#include "libpspp/compiler.h"
 
-#include "error.h"
+#include "gl/error.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
-static int view_width = -1;
-static int view_length = -1;
-
-/* Initializes the terminal interface by determining the size of
-   the user's terminal.  Stores a pointer to the size variables
-   in *VIEW_WIDTH_P and *VIEW_LENGTH_P. */
-void
-terminal_init (int **view_width_p, int **view_length_p)
-{
-  *view_width_p = &view_width;
-  *view_length_p = &view_length;
-  terminal_check_size ();
-}
-
 /* Code that interfaces to ncurses.  This must be at the very end
    of this file because curses.h redefines "bool" on some systems
    (e.g. OpenBSD), causing declaration mismatches with functions
    that have parameters or return values of type "bool". */
-#if HAVE_LIBNCURSES
+#if LIBNCURSES_USABLE
 #include <curses.h>
 #include <term.h>
 #endif
@@ -56,7 +43,10 @@ terminal_init (int **view_width_p, int **view_length_p)
 void
 terminal_check_size (void)
 {
-#if HAVE_LIBNCURSES
+  int view_width = 0;
+  int view_length = 0;
+
+#if LIBNCURSES_USABLE
   if (getenv ("TERM") != NULL)
     {
       char term_buffer [16384];
@@ -74,19 +64,13 @@ terminal_check_size (void)
     }
 #endif
 
-  if (view_width <= 0)
-    {
-      if (getenv ("COLUMNS") != NULL)
-        view_width = atoi (getenv ("COLUMNS"));
-      if (view_width <= 0)
-        view_width = 79;
-    }
+  if (view_width <= 0 && getenv ("COLUMNS") != NULL)
+    view_width = atoi (getenv ("COLUMNS"));
+  if (view_width > 0)
+    settings_set_viewwidth (view_width);
 
-  if (view_length <= 0)
-    {
-      if (getenv ("LINES") != NULL)
-        view_length = atoi (getenv ("LINES"));
-      if (view_length <= 0)
-        view_length = 24;
-    }
+  if (view_length <= 0 && getenv ("LINES") != NULL)
+    view_length = atoi (getenv ("LINES"));
+  if (view_length > 0)
+    settings_set_viewlength (view_length);
 }