- if ((cur_term = termp) != 0) {
- ospeed = _nc_ospeed(cur_term->_baudrate);
- PC = (pad_char != NULL) ? pad_char[0] : 0;
+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 BROKEN_LINKER && !USE_REENTRANT
+ cur_term = termp;
+#else
+ CurTerm = termp;
+#endif
+ if (termp != 0) {
+#ifdef USE_TERM_DRIVER
+ TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
+ ospeed = _nc_ospeed(termp->_baudrate);
+ if (TCB->drv->isTerminfo && termp->type.Strings) {
+ PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
+ }
+ TCB->csp = SP_PARM;
+#else
+ ospeed = _nc_ospeed(termp->_baudrate);
+ if (termp->type.Strings) {
+ PC = (char) ((pad_char != NULL) ? pad_char[0] : 0);
+ }
+#endif