-int cursor = SP->_cursor;
-
- T((T_CALLED("curs_set(%d)"), vis));
-
- if (vis < 0 || vis > 2)
- returnCode(ERR);
-
- if (vis == cursor)
- returnCode(cursor);
-
- switch(vis) {
- case 2:
- if (cursor_visible)
- {
- TPUTS_TRACE("cursor_visible");
- putp(cursor_visible);
- }
- else
- returnCode(ERR);
- break;
- case 1:
- if (cursor_normal)
- {
- TPUTS_TRACE("cursor_normal");
- putp(cursor_normal);
+ int code = ERR;
+ T((T_CALLED("curs_set(%p,%d)"), (void *) SP_PARM, vis));
+
+ if (SP_PARM != 0 && vis >= 0 && vis <= 2) {
+ int cursor = SP_PARM->_cursor;
+ if (vis == cursor) {
+ code = cursor;
+ } else {
+#ifdef USE_TERM_DRIVER
+ code = CallDriver_1(SP_PARM, td_cursorSet, vis);
+#else
+ if (IsValidTIScreen(SP_PARM)) {
+ switch (vis) {
+ case 2:
+ code = NCURSES_PUTP2_FLUSH("cursor_visible",
+ cursor_visible);
+ break;
+ case 1:
+ code = NCURSES_PUTP2_FLUSH("cursor_normal",
+ cursor_normal);
+ break;
+ case 0:
+ code = NCURSES_PUTP2_FLUSH("cursor_invisible",
+ cursor_invisible);
+ break;