/****************************************************************************
- * Copyright (c) 2008-2013,2014 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2014,2015 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 *
# endif
#endif
-MODULE_ID("$Id: tinfo_driver.c,v 1.33 2014/03/08 20:33:38 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.40 2015/06/27 01:20:41 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
return TINFO_DOUPDATE(TCB->csp);
}
+static const char *
+drv_Name(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ (void) TCB;
+ return "tinfo";
+}
+
+#undef SETUP_FAIL
+#define SETUP_FAIL FALSE
+
static bool
drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
{
TERMINAL *termp;
SCREEN *sp;
+ START_TRACE();
+ T((T_CALLED("tinfo::drv_CanHandle(%p)"), TCB));
+
assert(TCB != 0 && tname != 0);
termp = (TERMINAL *) TCB;
sp = TCB->csp;
ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
}
- return result;
+ returnBool(result);
}
static int
/* try asking the OS */
{
TERMINAL *termp = (TERMINAL *) TCB;
- if (isatty(termp->Filedes)) {
+ if (NC_ISATTY(termp->Filedes)) {
STRUCT_WINSIZE size;
errno = 0;
* _nc_setupscreen(). Do it now anyway, so we can initialize the
* baudrate.
*/
- if (isatty(trm->Filedes)) {
+ if (NC_ISATTY(trm->Filedes)) {
TCB->drv->td_mode(TCB, TRUE, TRUE);
}
}
size_t i;
for (i = 1; i < ACS_LEN; ++i) {
if (real_map[i] == 0) {
- real_map[i] = i;
+ real_map[i] = (chtype) i;
if (real_map != fake_map) {
if (sp != 0)
sp->_screen_acs_map[i] = TRUE;
if ((pthread_self) && (pthread_kill) && (pthread_equal))
_nc_globals.read_thread = pthread_self();
# endif
- n = read(sp->_ifd, &c2, (size_t) 1);
+ n = (int) read(sp->_ifd, &c2, (size_t) 1);
#if USE_PTHREADS_EINTR
_nc_globals.read_thread = 0;
#endif
return (code);
}
+static int
+drv_cursorSet(TERMINAL_CONTROL_BLOCK * TCB, int vis)
+{
+ SCREEN *sp;
+ int code = ERR;
+
+ AssertTCB();
+ SetSP();
+
+ T((T_CALLED("tinfo:drv_cursorSet(%p,%d)"), (void *) SP_PARM, vis));
+
+ if (SP_PARM != 0 && IsTermInfo(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;
+ }
+ } else {
+ code = ERR;
+ }
+ returnCode(code);
+}
+
static bool
drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int key)
{
NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_TINFO_DRIVER = {
TRUE,
+ drv_Name, /* Name */
drv_CanHandle, /* CanHandle */
drv_init, /* init */
drv_release, /* release */
drv_nap, /* nap */
drv_kpad, /* kpad */
drv_keyok, /* kyOk */
- drv_kyExist /* kyExist */
+ drv_kyExist, /* kyExist */
+ drv_cursorSet /* cursorSet */
};