X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_raw.c;h=1e47f3b6fbfbabd066180539ed97a8d0814d0552;hb=c2650100f80134924eda8f22cd7cc1d1d919ee3d;hp=a207fe0d920c5ee1e9dc17045e4c476f177c736e;hpb=76a479337308b4b5e749fa8c38b7b7f482998c5b;p=ncurses.git diff --git a/ncurses/tinfo/lib_raw.c b/ncurses/tinfo/lib_raw.c index a207fe0d..1e47f3b6 100644 --- a/ncurses/tinfo/lib_raw.c +++ b/ncurses/tinfo/lib_raw.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2012,2016 Free Software Foundation, Inc. * + * Copyright 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 * @@ -49,7 +50,7 @@ #include -MODULE_ID("$Id: lib_raw.c,v 1.22 2016/05/28 23:22:52 tom Exp $") +MODULE_ID("$Id: lib_raw.c,v 1.26 2020/11/21 22:07:48 tom Exp $") #if HAVE_SYS_TERMIO_H #include /* needed for ISC */ @@ -96,6 +97,8 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) buf.c_iflag &= (unsigned) ~(COOKED_INPUT); buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn &= (unsigned long) ~CONMODE_NORAW; #else buf.sg_flags |= RAW; #endif @@ -112,8 +115,10 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) kbdinfo.fsMask |= KEYBOARD_BINARY_MODE; KbdSetStatus(&kbdinfo, 0); #endif - SP_PARM->_raw = TRUE; - SP_PARM->_cbreak = 1; + if (SP_PARM) { + SP_PARM->_raw = TRUE; + SP_PARM->_cbreak = 1; + } termp->Nttyb = buf; } AFTER("raw"); @@ -149,12 +154,17 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0) buf.c_lflag |= ISIG; buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= CONMODE_NORAW; + buf.dwFlagIn &= (unsigned long) ~CONMODE_NOCBREAK; #else buf.sg_flags |= CBREAK; #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_cbreak = 1; + if (SP_PARM) { + SP_PARM->_cbreak = 1; + } termp->Nttyb = buf; } AFTER("cbreak"); @@ -226,6 +236,8 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0) buf.c_lflag |= ISIG | ICANON | (termp->Ottyb.c_lflag & IEXTEN); buf.c_iflag |= COOKED_INPUT; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= CONMODE_NORAW; #else buf.sg_flags &= ~(RAW | CBREAK); #endif @@ -242,8 +254,10 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0) kbdinfo.fsMask |= KEYBOARD_ASCII_MODE; KbdSetStatus(&kbdinfo, 0); #endif - SP_PARM->_raw = FALSE; - SP_PARM->_cbreak = 0; + if (SP_PARM) { + SP_PARM->_raw = FALSE; + SP_PARM->_cbreak = 0; + } termp->Nttyb = buf; } AFTER("noraw"); @@ -276,12 +290,16 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0) #ifdef TERMIOS buf.c_lflag |= ICANON; buf.c_iflag |= ICRNL; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= (CONMODE_NOCBREAK | CONMODE_NORAW); #else buf.sg_flags &= ~CBREAK; #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_cbreak = 0; + if (SP_PARM) { + SP_PARM->_cbreak = 0; + } termp->Nttyb = buf; } AFTER("nocbreak");