Handle missing parm_*.

This commit is contained in:
Nicholas Marriott 2007-12-03 10:47:27 +00:00
parent b10bd51d20
commit 5f6a9e7e5b
2 changed files with 33 additions and 5 deletions

3
TODO
View File

@ -61,6 +61,8 @@
- chmod +x socket when any client is attached - chmod +x socket when any client is attached
- split clients into three RB trees by fd: attached/unattached/dead? - split clients into three RB trees by fd: attached/unattached/dead?
or tailqs? what would be fastest per-char? or tailqs? what would be fastest per-char?
- everything should write via a screen and modes should be done by switching
screen out
-- For 0.2 -------------------------------------------------------------------- -- For 0.2 --------------------------------------------------------------------
- window splitting? - window splitting?
@ -69,6 +71,7 @@
split. string length should be part of the command size split. string length should be part of the command size
- echo \\033[35\;46m\\033[2J last line quirk (with C-b r) - echo \\033[35\;46m\\033[2J last line quirk (with C-b r)
- quick intro section (tmux new/attach/detach) etc - quick intro section (tmux new/attach/detach) etc
- is ACS the right way round??
-------- --------
kmous -- \E[M kmous -- \E[M

35
tty.c
View File

@ -1,4 +1,4 @@
/* $Id: tty.c,v 1.7 2007-11-27 23:28:51 nicm Exp $ */ /* $Id: tty.c,v 1.8 2007-12-03 10:47:27 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -268,19 +268,44 @@ tty_vwrite(struct tty *tty, int cmd, va_list ap)
break; break;
case TTY_INSERTLINE: case TTY_INSERTLINE:
ua = va_arg(ap, u_int); ua = va_arg(ap, u_int);
tty_puts(tty, tparm(parm_insert_line, ua)); if (parm_insert_line != NULL)
tty_puts(tty, tparm(parm_insert_line, ua));
else {
while (ua-- > 0)
tty_puts(tty, insert_line);
}
break; break;
case TTY_DELETELINE: case TTY_DELETELINE:
ua = va_arg(ap, u_int); ua = va_arg(ap, u_int);
tty_puts(tty, tparm(parm_delete_line, ua)); if (parm_delete_line != NULL)
tty_puts(tty, tparm(parm_delete_line, ua));
else {
while (ua-- > 0)
tty_puts(tty, delete_line);
}
break; break;
case TTY_INSERTCHARACTER: case TTY_INSERTCHARACTER:
ua = va_arg(ap, u_int); ua = va_arg(ap, u_int);
tty_puts(tty, tparm(parm_ich, ua)); if (parm_ich != NULL)
tty_puts(tty, tparm(parm_ich, ua));
else if (insert_character != NULL) {
while (ua-- > 0)
tty_puts(tty, insert_character);
} else if (enter_insert_mode != NULL) {
tty_puts(tty, enter_insert_mode);
while (ua-- > 0)
tty_putc(tty, ' ');
tty_puts(tty, exit_insert_mode);
}
break; break;
case TTY_DELETECHARACTER: case TTY_DELETECHARACTER:
ua = va_arg(ap, u_int); ua = va_arg(ap, u_int);
tty_puts(tty, tparm(parm_dch, ua)); if (parm_dch != NULL)
tty_puts(tty, tparm(parm_dch, ua));
else {
while (ua-- > 0)
tty_puts(tty, delete_character);
}
break; break;
case TTY_CURSORON: case TTY_CURSORON:
if (cursor_normal != NULL) if (cursor_normal != NULL)