projects
/
ncurses.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ncurses 6.2 - patch 20200906
[ncurses.git]
/
ncurses
/
base
/
lib_newterm.c
diff --git
a/ncurses/base/lib_newterm.c
b/ncurses/base/lib_newterm.c
index a235dbdbe9c01b029c6ca9c422aa37f22922be2c..bba97ba1fae85d301d95c2b1c899a1d00f6d2676 100644
(file)
--- a/
ncurses/base/lib_newterm.c
+++ b/
ncurses/base/lib_newterm.c
@@
-1,5
+1,6
@@
/****************************************************************************
/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright 2018,2020 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 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 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@
-48,7
+49,7
@@
#include <tic.h>
#include <tic.h>
-MODULE_ID("$Id: lib_newterm.c,v 1.
88 2012/01/21 19:21:29 KO.Myung-Hun
Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.
103 2020/09/05 21:34:04 tom
Exp $")
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
@@
-76,6
+77,7
@@
_nc_initscr(NCURSES_SP_DCL0)
/* for extended XPG4 conformance requires cbreak() at this point */
/* (SVr4 curses does this anyway) */
/* for extended XPG4 conformance requires cbreak() at this point */
/* (SVr4 curses does this anyway) */
+ T((T_CALLED("_nc_initscr(%p) ->term %p"), (void *) SP_PARM, (void *) term));
if (NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG) == OK) {
TTY buf;
if (NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG) == OK) {
TTY buf;
@@
-86,6
+88,12
@@
_nc_initscr(NCURSES_SP_DCL0)
buf.c_oflag &= (unsigned) ~(ONLCR);
#elif HAVE_SGTTY_H
buf.sg_flags &= ~(ECHO | CRMOD);
buf.c_oflag &= (unsigned) ~(ONLCR);
#elif HAVE_SGTTY_H
buf.sg_flags &= ~(ECHO | CRMOD);
+#elif defined(EXP_WIN32_DRIVER)
+ buf.dwFlagIn = CONMODE_IN_DEFAULT;
+ buf.dwFlagOut = CONMODE_OUT_DEFAULT | VT_FLAG_OUT;
+ if (WINCONSOLE.isTermInfoConsole) {
+ buf.dwFlagIn |= VT_FLAG_IN;
+ }
#else
memset(&buf, 0, sizeof(buf));
#endif
#else
memset(&buf, 0, sizeof(buf));
#endif
@@
-93,7
+101,7
@@
_nc_initscr(NCURSES_SP_DCL0)
if (result == OK)
term->Nttyb = buf;
}
if (result == OK)
term->Nttyb = buf;
}
- return
result
;
+ return
Code(result)
;
}
/*
}
/*
@@
-162,26
+170,22
@@
nofilter(void)
NCURSES_EXPORT(SCREEN *)
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
NCURSES_EXPORT(SCREEN *)
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
-
NCURSES_CONST
char *name,
+
const
char *name,
FILE *ofp,
FILE *ifp)
{
FILE *ofp,
FILE *ifp)
{
- int value;
int errret;
SCREEN *result = 0;
SCREEN *current;
TERMINAL *its_term;
FILE *_ofp = ofp ? ofp : stdout;
FILE *_ifp = ifp ? ifp : stdin;
int errret;
SCREEN *result = 0;
SCREEN *current;
TERMINAL *its_term;
FILE *_ofp = ofp ? ofp : stdout;
FILE *_ifp = ifp ? ifp : stdin;
- int cols;
- int slk_format;
- int filter_mode;
TERMINAL *new_term = 0;
START_TRACE();
T((T_CALLED("newterm(%p, \"%s\", %p,%p)"),
(void *) SP_PARM,
TERMINAL *new_term = 0;
START_TRACE();
T((T_CALLED("newterm(%p, \"%s\", %p,%p)"),
(void *) SP_PARM,
-
name
,
+
(name ? name : "")
,
(void *) ofp,
(void *) ifp));
(void *) ofp,
(void *) ifp));
@@
-197,14
+201,18
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
current = CURRENT_SCREEN;
its_term = (current ? current->_term : 0);
current = CURRENT_SCREEN;
its_term = (current ? current->_term : 0);
+#if defined(EXP_WIN32_DRIVER)
+ _setmode(fileno(_ifp), _O_BINARY);
+ _setmode(fileno(_ofp), _O_BINARY);
+#endif
+
INIT_TERM_DRIVER();
/* this loads the capability entry, then sets LINES and COLS */
if (
INIT_TERM_DRIVER();
/* this loads the capability entry, then sets LINES and COLS */
if (
-#if NCURSES_SP_FUNCS
- SP_PARM->_prescreen &&
-#endif
TINFO_SETUP_TERM(&new_term, name,
fileno(_ofp), &errret, FALSE) != ERR) {
TINFO_SETUP_TERM(&new_term, name,
fileno(_ofp), &errret, FALSE) != ERR) {
+ int slk_format;
+ int filter_mode;
_nc_set_screen(0);
#ifdef USE_TERM_DRIVER
_nc_set_screen(0);
#ifdef USE_TERM_DRIVER
@@
-235,6
+243,9
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
_nc_set_screen(current);
result = 0;
} else {
_nc_set_screen(current);
result = 0;
} else {
+ int value;
+ int cols;
+
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB;
#elif !NCURSES_SP_FUNCS
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB;
#elif !NCURSES_SP_FUNCS
@@
-268,7
+279,11
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
/* allow user to set maximum escape delay from the environment */
if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
/* allow user to set maximum escape delay from the environment */
if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
+#if NCURSES_EXT_FUNCS
NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_ARGx value);
NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_ARGx value);
+#else
+ ESCDELAY = value;
+#endif
}
/* if the terminal type has real soft labels, set those up */
}
/* if the terminal type has real soft labels, set those up */
@@
-284,7
+299,7
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#else
SP_PARM->_use_meta = FALSE;
#endif
#else
SP_PARM->_use_meta = FALSE;
#endif
- SP_PARM->_endwin =
FALSE
;
+ SP_PARM->_endwin =
ewInitial
;
#ifndef USE_TERM_DRIVER
/*
* Check whether we can optimize scrolling under dumb terminals in
#ifndef USE_TERM_DRIVER
/*
* Check whether we can optimize scrolling under dumb terminals in
@@
-306,8
+321,8
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
/* compute movement costs so we can do better move optimization */
#ifdef USE_TERM_DRIVER
/* compute movement costs so we can do better move optimization */
#ifdef USE_TERM_DRIVER
- TCBOf(SP_PARM)->drv->scinit(SP_PARM);
-#else
+ TCBOf(SP_PARM)->drv->
td_
scinit(SP_PARM);
+#else
/* ! USE_TERM_DRIVER */
/*
* Check for mismatched graphic-rendition capabilities. Most SVr4
* terminfo trees contain entries that have rmul or rmso equated to
/*
* Check for mismatched graphic-rendition capabilities. Most SVr4
* terminfo trees contain entries that have rmul or rmso equated to
@@
-320,13
+335,16
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
SP_PARM->_use_rmso = SGR0_TEST(exit_standout_mode);
SP_PARM->_use_rmul = SGR0_TEST(exit_underline_mode);
#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
SP_PARM->_use_rmso = SGR0_TEST(exit_standout_mode);
SP_PARM->_use_rmul = SGR0_TEST(exit_underline_mode);
+#if USE_ITALIC
+ SP_PARM->_use_ritm = SGR0_TEST(exit_italics_mode);
+#endif
/* compute movement costs so we can do better move optimization */
_nc_mvcur_init();
/* initialize terminal to a sane state */
_nc_screen_init();
/* compute movement costs so we can do better move optimization */
_nc_mvcur_init();
/* initialize terminal to a sane state */
_nc_screen_init();
-#endif
+#endif
/* USE_TERM_DRIVER */
/* Initialize the terminal line settings. */
_nc_initscr(NCURSES_SP_ARG);
/* Initialize the terminal line settings. */
_nc_initscr(NCURSES_SP_ARG);
@@
-341,8
+359,14
@@
NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(SCREEN *)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(SCREEN *)
-newterm(
NCURSES_CONST
char *name, FILE *ofp, FILE *ifp)
+newterm(
const
char *name, FILE *ofp, FILE *ifp)
{
{
- return NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp);
+ SCREEN *rc;
+ _nc_lock_global(prescreen);
+ START_TRACE();
+ rc = NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp);
+ _nc_forget_prescr();
+ _nc_unlock_global(prescreen);
+ return rc;
}
#endif
}
#endif