public:
virtual Attribute *normal(void) const { return new AnsiAttribute("0m"); }
virtual Attribute *bold(void) const { return new AnsiAttribute("1m"); }
+ /* Italic is not widely supported, or worse, implemented with a reverse */
+#if 0
virtual Attribute *italic(void) const { return new AnsiAttribute("3m"); }
+#endif
virtual Attribute *strike(void) const { return new AnsiAttribute("9m"); }
virtual Attribute *color(Color c) const {
static const char *color_escapes[] = {
#ifndef COMMON_LVB_LEADING_BYTE
-##define COMMON_LVB_LEADING_BYTE 0x0100
+#define COMMON_LVB_LEADING_BYTE 0x0100
#endif
#ifndef COMMON_LVB_TRAILING_BYTE
-##define COMMON_LVB_TRAILING_BYTE 0x0200
+#define COMMON_LVB_TRAILING_BYTE 0x0200
#endif
#ifndef COMMON_LVB_GRID_HORIZONTAL
-##define COMMON_LVB_GRID_HORIZONTAL 0x0400
+#define COMMON_LVB_GRID_HORIZONTAL 0x0400
#endif
#ifndef COMMON_LVB_GRID_LVERTICAL
-##define COMMON_LVB_GRID_LVERTICAL 0x0800
+#define COMMON_LVB_GRID_LVERTICAL 0x0800
#endif
#ifndef COMMON_LVB_GRID_RVERTICAL
-##define COMMON_LVB_GRID_RVERTICAL 0x1000
+#define COMMON_LVB_GRID_RVERTICAL 0x1000
#endif
#ifndef COMMON_LVB_REVERSE_VIDEO
-##define COMMON_LVB_REVERSE_VIDEO 0x4000
+#define COMMON_LVB_REVERSE_VIDEO 0x4000
#endif
#ifndef COMMON_LVB_UNDERSCORE
-##define COMMON_LVB_UNDERSCORE 0x8000
+#define COMMON_LVB_UNDERSCORE 0x8000
#endif
inline Formatter *defaultFormatter(bool color = true) {
if (color) {
#ifdef _WIN32
+ // http://wiki.winehq.org/DeveloperFaq#detect-wine
+ static HMODULE hNtDll = NULL;
+ static bool bWine = false;
+ if (!hNtDll) {
+ hNtDll = LoadLibraryA("ntdll");
+ if (hNtDll) {
+ bWine = GetProcAddress(hNtDll, "wine_get_version") != NULL;
+ }
+ }
+ if (bWine) {
+ return new AnsiFormatter;
+ }
return new WindowsFormatter;
#else
return new AnsiFormatter;