curses: fix garbling when chtype != long
authorDevin J. Pohly <djpohly+launchpad@gmail.com>
Wed, 7 Sep 2011 19:44:36 +0000 (15:44 -0400)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 9 Sep 2011 17:58:16 +0000 (12:58 -0500)
Qemu currently assumes that chtype is typedef'd to unsigned long, but
this is not necessarily the case (ncurses, for instance, can configure
this at build-time).  This patch uses the predefined chtype if qemu is
configured for curses support and falls back to unsigned long otherwise.

Fixes bug 568614.

Signed-off-by: Devin J. Pohly <djpohly+launchpad@gmail.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
console.c
console.h

index 500b3fbc777a76812ca4142e2c2aff28f25396fe..5c7a93b655efa8f57ec7d4059667a47325509602 100644 (file)
--- a/console.c
+++ b/console.c
@@ -343,6 +343,7 @@ static const uint32_t dmask4[4] = {
 
 static uint32_t color_table[2][8];
 
+#ifndef CONFIG_CURSES
 enum color_names {
     COLOR_BLACK   = 0,
     COLOR_RED     = 1,
@@ -353,6 +354,7 @@ enum color_names {
     COLOR_CYAN    = 6,
     COLOR_WHITE   = 7
 };
+#endif
 
 static const uint32_t color_table_rgb[2][8] = {
     {   /* dark */
index 67d137384e152c77f019c7fb141fce2f4646a989..9c1487e0416605148d7028a0d82b7a3f6f923d5f 100644 (file)
--- a/console.h
+++ b/console.h
@@ -328,7 +328,12 @@ static inline int ds_get_bytes_per_pixel(DisplayState *ds)
     return ds->surface->pf.bytes_per_pixel;
 }
 
+#ifdef CONFIG_CURSES
+#include <curses.h>
+typedef chtype console_ch_t;
+#else
 typedef unsigned long console_ch_t;
+#endif
 static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
 {
     if (!(ch & 0xff))