]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/base/lib_set_term.c
ncurses 5.7 - patch 20100424
[ncurses.git] / ncurses / base / lib_set_term.c
index 5128dc183052bfeffa06ae412dd9173967b54662..b2694978fb33b72d5de7a6150d1f9b9638dee37c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -47,7 +47,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_set_term.c,v 1.134 2009/11/07 16:27:25 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.136 2010/04/24 23:09:24 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define MaxColors      InfoOf(sp).maxcolors
@@ -272,44 +272,6 @@ extract_fgbg(char *src, int *result)
 }
 #endif
 
-#if NCURSES_SP_FUNCS
-/*
- * In case of handling multiple screens, we need to have a screen before
- * initialization in setupscreen takes place.  This is to extend the substitute
- * for some of the stuff in _nc_prescreen, especially for slk and ripoff
- * handling which should be done per screen.
- */
-NCURSES_EXPORT(SCREEN *)
-new_prescr(void)
-{
-    static SCREEN *sp;
-
-    START_TRACE();
-    T((T_CALLED("new_prescr()")));
-
-    if (sp == 0) {
-       sp = _nc_alloc_screen_sp();
-       if (sp != 0) {
-           sp->rsp = sp->rippedoff;
-           sp->_filtered = _nc_prescreen.filter_mode;
-           sp->_use_env = _nc_prescreen.use_env;
-#if NCURSES_NO_PADDING
-           sp->_no_padding = _nc_prescreen._no_padding;
-#endif
-           sp->slk_format = 0;
-           sp->_slk = 0;
-           sp->_prescreen = TRUE;
-           SP_PRE_INIT(sp);
-#if USE_REENTRANT
-           sp->_TABSIZE = _nc_prescreen._TABSIZE;
-           sp->_ESCDELAY = _nc_prescreen._ESCDELAY;
-#endif
-       }
-    }
-    returnSP(sp);
-}
-#endif
-
 #define ReturnScreenError() _nc_set_screen(0); \
                             returnCode(ERR)
 
@@ -418,9 +380,9 @@ NCURSES_SP_NAME(_nc_setupscreen) (
     setmode(output, O_BINARY);
 #endif
     NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_ARGx output, TRUE);
-    sp->_lines = slines;
-    sp->_lines_avail = slines;
-    sp->_columns = scolumns;
+    sp->_lines = (NCURSES_SIZE_T) slines;
+    sp->_lines_avail = (NCURSES_SIZE_T) slines;
+    sp->_columns = (NCURSES_SIZE_T) scolumns;
     sp->_ofp = output;
     SP_PRE_INIT(sp);
     SetNoPadding(sp);
@@ -701,11 +663,12 @@ NCURSES_SP_NAME(_nc_setupscreen) (
                } else {
                    ReturnScreenError();
                }
-               if (rop->line < 0)
+               if (rop->line < 0) {
                    bottom_stolen += count;
-               else
-                   sp->_topstolen += count;
-               sp->_lines_avail -= count;
+               } else {
+                   sp->_topstolen = (NCURSES_SIZE_T) (sp->_topstolen + count);
+               }
+               sp->_lines_avail = (NCURSES_SIZE_T) (sp->_lines_avail - count);
            }
        }
        /* reset the stack */