386BSD 0.1 development
[unix-history] / usr / src / lib / libcurses / initscr.c
index 1852971..5dd97e8 100644 (file)
@@ -1,22 +1,61 @@
+/*
+ * Copyright (c) 1981 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)initscr.c  5.6 (Berkeley) 3/3/91";
+#endif /* not lint */
+
 # include      "curses.ext"
 # include      "curses.ext"
+# include      <signal.h>
 
 extern char    *getenv();
 
 /*
  *     This routine initializes the current and standard screen.
  *
 
 extern char    *getenv();
 
 /*
  *     This routine initializes the current and standard screen.
  *
- * %G% (Berkeley) @(#)initscr.c        1.1
  */
 WINDOW *
 initscr() {
 
        reg char        *sp;
  */
 WINDOW *
 initscr() {
 
        reg char        *sp;
+       void            tstp();
 
 # ifdef DEBUG
        fprintf(outf, "INITSCR()\n");
 # endif
 
 # ifdef DEBUG
        fprintf(outf, "INITSCR()\n");
 # endif
-       if (!My_term && isatty(2)) {
-               _tty_ch = 2;
+       if (My_term)
+               setterm(Def_term);
+       else {
                gettmode();
                if ((sp = getenv("TERM")) == NULL)
                        sp = Def_term;
                gettmode();
                if ((sp = getenv("TERM")) == NULL)
                        sp = Def_term;
@@ -25,10 +64,11 @@ initscr() {
                fprintf(outf, "INITSCR: term = %s\n", sp);
 # endif
        }
                fprintf(outf, "INITSCR: term = %s\n", sp);
 # endif
        }
-       else
-               setterm(Def_term);
        _puts(TI);
        _puts(VS);
        _puts(TI);
        _puts(VS);
+# ifdef SIGTSTP
+       signal(SIGTSTP, tstp);
+# endif
        if (curscr != NULL) {
 # ifdef DEBUG
                fprintf(outf, "INITSCR: curscr = 0%o\n", curscr);
        if (curscr != NULL) {
 # ifdef DEBUG
                fprintf(outf, "INITSCR: curscr = 0%o\n", curscr);
@@ -38,9 +78,10 @@ initscr() {
 # ifdef DEBUG
        fprintf(outf, "LINES = %d, COLS = %d\n", LINES, COLS);
 # endif
 # ifdef DEBUG
        fprintf(outf, "LINES = %d, COLS = %d\n", LINES, COLS);
 # endif
-       if ((curscr=newwin(LINES, COLS, 0, 0)) == ERR)
+       if ((curscr = newwin(LINES, COLS, 0, 0)) == ERR)
                return ERR;
                return ERR;
-       curscr->_clear = TRUE;
+       clearok(curscr, TRUE);
+       curscr->_flags &= ~_FULLLINE;
        if (stdscr != NULL) {
 # ifdef DEBUG
                fprintf(outf, "INITSCR: stdscr = 0%o\n", stdscr);
        if (stdscr != NULL) {
 # ifdef DEBUG
                fprintf(outf, "INITSCR: stdscr = 0%o\n", stdscr);