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 deed47fa5f4c77e6e6a7ab55d27a4427469fc2e6..bba97ba1fae85d301d95c2b1c899a1d00f6d2676 100644
(file)
--- a/
ncurses/base/lib_newterm.c
+++ b/
ncurses/base/lib_newterm.c
@@
-1,5
+1,6
@@
/****************************************************************************
/****************************************************************************
- * Copyright (c) 1998-2016,2017 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.
95 2017/04/01 12:53:35
tom 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,7
+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, term));
+ 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;
@@
-87,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
@@
-163,7
+170,7
@@
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)
{
@@
-194,6
+201,11
@@
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 (
@@
-287,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
@@
-347,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