Quizzer
view release on metacpan or search on metacpan
exercises/compile-tcsh/tcsh-6.10.00/ed.screen.c view on Meta::CPAN
for (t = tstr; t->name != NULL; t++)
TCalloc(t, NULL);
}
else {
/* Can we tab */
Val(T_pt) = tgetflag("pt") && !tgetflag("xt");
/* do we have a meta? */
Val(T_km) = (tgetflag("km") || tgetflag("MT"));
Val(T_am) = tgetflag("am");
Val(T_xn) = tgetflag("xn");
Val(T_co) = tgetnum("co");
Val(T_li) = tgetnum("li");
for (t = tstr; t->name != NULL; t++)
TCalloc(t, tgetstr(t->name, &area));
}
if (Val(T_co) < 2)
Val(T_co) = 80; /* just in case */
if (Val(T_li) < 1)
Val(T_li) = 24;
T_Cols = (Char) Val(T_co);
T_Lines = (Char) Val(T_li);
if (T_Tabs)
T_Tabs = (Char) Val(T_pt);
T_HasMeta = (Char) Val(T_km);
T_Margin = (Char) Val(T_am) ? MARGIN_AUTO : 0;
T_Margin |= (Char) Val(T_xn) ? MARGIN_MAGIC : 0;
T_CanCEOL = GoodStr(T_ce);
T_CanDel = GoodStr(T_dc) || GoodStr(T_DC);
T_CanIns = GoodStr(T_im) || GoodStr(T_ic) || GoodStr(T_IC);
T_CanUP = GoodStr(T_up) || GoodStr(T_UP);
if (GoodStr(T_me) && GoodStr(T_ue))
me_all = (strcmp(Str(T_me), Str(T_ue)) == 0);
else
me_all = 0;
if (GoodStr(T_me) && GoodStr(T_se))
me_all |= (strcmp(Str(T_me), Str(T_se)) == 0);
#ifdef DEBUG_SCREEN
if (!T_CanUP) {
xprintf(CGETS(7, 23, "%s: WARNING: Your terminal cannot move up.\n",
progname));
xprintf(CGETS(7, 24, "Editing may be odd for long lines.\n"));
}
if (!T_CanCEOL)
xprintf(CGETS(7, 25, "no clear EOL capability.\n"));
if (!T_CanDel)
xprintf(CGETS(7, 26, "no delete char capability.\n"));
if (!T_CanIns)
xprintf(CGETS(7, 27, "no insert char capability.\n"));
#endif /* DEBUG_SCREEN */
#ifdef SIG_WINDOW
(void) GetSize(&lins, &cols); /* get the correct window size */
ChangeSize(lins, cols);
# ifdef BSDSIGS
(void) sigsetmask(omask); /* can change it again */
# else /* BSDSIGS */
(void) sigrelse(SIG_WINDOW);
# endif /* BSDSIGS */
#else /* SIG_WINDOW */
ChangeSize(Val(T_li), Val(T_co));
#endif /* SIG_WINDOW */
BindArrowKeys();
}
#ifdef SIG_WINDOW
/* GetSize():
* Return the new window size in lines and cols, and
* true if the size was changed. This can fail if SHIN
* is not a tty, but it will work in most cases.
*/
int
GetSize(lins, cols)
int *lins, *cols;
{
*cols = Val(T_co);
*lins = Val(T_li);
#ifdef TIOCGWINSZ
# define KNOWsize
# ifndef lint
{
struct winsize ws; /* from 4.3 */
if (ioctl(SHIN, TIOCGWINSZ, (ioctl_t) &ws) != -1) {
if (ws.ws_col)
*cols = ws.ws_col;
if (ws.ws_row)
*lins = ws.ws_row;
}
}
# endif /* !lint */
#else /* TIOCGWINSZ */
# ifdef TIOCGSIZE
# define KNOWsize
{
struct ttysize ts; /* from Sun */
if (ioctl(SHIN, TIOCGSIZE, (ioctl_t) &ts) != -1) {
if (ts.ts_cols)
*cols = ts.ts_cols;
if (ts.ts_lines)
*lins = ts.ts_lines;
}
}
# endif /* TIOCGSIZE */
#endif /* TIOCGWINSZ */
return (Val(T_co) != *cols || Val(T_li) != *lins);
}
#endif /* SIGWINDOW */
void
ChangeSize(lins, cols)
( run in 1.178 second using v1.01-cache-2.11-cpan-302cb4679cc )