diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2003-10-16 14:08:28 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2003-10-16 14:08:28 +0000 |
commit | abfc9c412cdb2c7d0d046c727730f44b1b8fc6ec (patch) | |
tree | b0b52ca753f4e5e943402a2e907be8947fa0a585 /winsup/cygwin/fhandler_console.cc | |
parent | b4d51d01c80d7392c73fcc93f5c5146e51ad7685 (diff) | |
download | cygnal-abfc9c412cdb2c7d0d046c727730f44b1b8fc6ec.tar.gz cygnal-abfc9c412cdb2c7d0d046c727730f44b1b8fc6ec.tar.bz2 cygnal-abfc9c412cdb2c7d0d046c727730f44b1b8fc6ec.zip |
* dcrt0.cc: Remove local variable alternate_charset_active.
* fhandler.h: Add variable alternate_charset_active, functions
str_to_con, con_to_str to dev_console structure.
* fhandler_console.cc (con_to_str): Move function into dev_console
class.
(str_to_con): Ditto.
(fhandler_console::read): Call con_to_str on dev_state.
(fhandler_console::write_normal): Call str_to_con on dev_state.
(fhandler_console::char_command): Change active_charset_active
assignment to be on dev_state.
* winsup.h: Remove global external variable alternate_charset_active.
Diffstat (limited to 'winsup/cygwin/fhandler_console.cc')
-rw-r--r-- | winsup/cygwin/fhandler_console.cc | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 24c59c7d6..7386d9c1b 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -54,27 +54,6 @@ cp_convert (UINT destcp, char *dest, UINT srccp, const char *src, DWORD size) return TRUE; } -/* The results of GetConsoleCP() and GetConsoleOutputCP() cannot be - cached, because a program or the user can change these values at - any time. */ -inline BOOL -con_to_str (char *d, const char *s, DWORD sz) -{ - return cp_convert (get_cp (), d, GetConsoleCP (), s, sz); -} - -inline BOOL -str_to_con (char *d, const char *s, DWORD sz) -{ - if (alternate_charset_active) - { - /* no translation when alternate charset is active */ - memcpy(d, s, sz); - return TRUE; - } - return cp_convert (GetConsoleOutputCP (), d, get_cp (), s, sz); -} - /* * Scroll the screen context. * x1, y1 - ul corner @@ -187,6 +166,27 @@ set_console_state_for_spawn () return 1; } +/* The results of GetConsoleCP() and GetConsoleOutputCP() cannot be + cached, because a program or the user can change these values at + any time. */ +inline BOOL +dev_console::con_to_str (char *d, const char *s, DWORD sz) +{ + return cp_convert (get_cp (), d, GetConsoleCP (), s, sz); +} + +inline BOOL +dev_console::str_to_con (char *d, const char *s, DWORD sz) +{ + if (alternate_charset_active) + { + /* no translation when alternate charset is active */ + memcpy(d, s, sz); + return TRUE; + } + return cp_convert (GetConsoleOutputCP (), d, get_cp (), s, sz); +} + BOOL fhandler_console::set_raw_win32_keyboard_mode (BOOL new_mode) { @@ -375,7 +375,7 @@ fhandler_console::read (void *pv, size_t& buflen) /* Need this check since US code page seems to have a bug when converting a CTRL-U. */ if ((unsigned char) ich > 0x7f) - con_to_str (tmp + 1, tmp + 1, 1); + dev_state->con_to_str (tmp + 1, tmp + 1, 1); /* Determine if the keystroke is modified by META. The tricky part is to distinguish whether the right Alt key should be recognized as Alt, or as AltGr. */ @@ -1118,10 +1118,10 @@ fhandler_console::char_command (char c) dev_state->intensity = INTENSITY_DIM; break; case 10: /* end alternate charset */ - alternate_charset_active = FALSE; + dev_state->alternate_charset_active = FALSE; break; case 11: /* start alternate charset */ - alternate_charset_active = TRUE; + dev_state->alternate_charset_active = TRUE; break; case 24: dev_state->underline = FALSE; @@ -1434,7 +1434,7 @@ fhandler_console::write_normal (const unsigned char *src, DWORD buf_len; char buf[CONVERT_LIMIT]; done = buf_len = min (sizeof (buf), len); - if (!str_to_con (buf, (const char *) src, buf_len)) + if (!dev_state->str_to_con (buf, (const char *) src, buf_len)) { debug_printf ("conversion error, handle %p", get_output_handle ()); |