- if ((cur_term = termp) != 0) {
- ospeed = _nc_ospeed(cur_term->_baudrate);
- PC = (pad_char != NULL) ? pad_char[0] : 0;
+#else
+NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
+#endif
+
+NCURSES_EXPORT(TERMINAL *)
+NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL *termp)
+{
+ TERMINAL *oldterm;
+
+ T((T_CALLED("set_curterm(%p)"), (void *) termp));
+
+ _nc_lock_global(curses);
+ oldterm = cur_term;
+ if (SP_PARM)
+ SP_PARM->_term = termp;
+#if USE_REENTRANT
+ CurTerm = termp;
+#else
+ cur_term = termp;
+#endif
+ if (termp != 0) {
+#ifdef USE_TERM_DRIVER
+ TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
+ ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate);
+ if (TCB->drv &&
+ TCB->drv->isTerminfo &&
+ TerminalType(termp).Strings) {
+ PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
+ }
+ TCB->csp = SP_PARM;
+#else
+ ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate);
+ if (TerminalType(termp).Strings) {
+ PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);