Package: lcdproc
Version: 0.5.2
Severity: normal
Tags: patch
The lcdproc curses driver contains a hard coded keyboard check for
control-L to force a screen refresh. The driver attempts to unget the
character if it wasn't a ^L, but the logic is buggy and discards any
character read *except* for control-L. The attached patch corrects this.
Also needs applying to 0.5.3.
-- System Information:
Debian Release: 5.0.4
APT prefers stable
APT policy: (800, 'stable'), (150, 'testing'), (3, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.26-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages lcdproc depends on:
ii libc6 2.7-18lenny2 GNU C Library: Shared libraries
ii libncurses5 5.7+20081213-1 shared libraries for terminal hand
ii lsb-base 3.2-20 Linux Standard Base 3.2 init scrip
Versions of packages lcdproc recommends:
pn lcdproc-extra-drivers <none> (no description available)
lcdproc suggests no packages.
--- lcdproc-0.5.3/server/drivers/curses_drv.c.orig 2009-06-07 15:23:56.000000000 +0100
+++ lcdproc-0.5.3/server/drivers/curses_drv.c 2010-05-04 17:41:36.000000000 +0100
@@ -610,11 +610,12 @@
PrivateData *p = drvthis->private_data;
int c;
- if ((c = getch()) != ERR)
+ if ((c = getch()) != ERR) {
if (c == 0x0C) { /* ^L restores screen */
curses_restore_screen(drvthis);
- ungetch(c);
}
+ ungetch(c);
+ }
if (p->drawBorder)
curses_wborder(drvthis);