* 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.
This commit is contained in:
parent
b4d51d01c8
commit
abfc9c412c
@ -1,3 +1,17 @@
|
|||||||
|
2003-10-14 Micha Nelissen <M.Nelissen@student.tue.nl>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2003-10-13 Micha Nelissen <M.Nelissen@student.tue.nl>
|
2003-10-13 Micha Nelissen <M.Nelissen@student.tue.nl>
|
||||||
|
|
||||||
* fhandler_console.cc (char_command): Add escape sequence for codepage
|
* fhandler_console.cc (char_command): Add escape sequence for codepage
|
||||||
|
@ -57,7 +57,6 @@ bool display_title;
|
|||||||
bool strip_title_path;
|
bool strip_title_path;
|
||||||
bool allow_glob = TRUE;
|
bool allow_glob = TRUE;
|
||||||
codepage_type current_codepage = ansi_cp;
|
codepage_type current_codepage = ansi_cp;
|
||||||
bool alternate_charset_active;
|
|
||||||
|
|
||||||
int cygwin_finished_initializing;
|
int cygwin_finished_initializing;
|
||||||
|
|
||||||
|
@ -752,6 +752,7 @@ class dev_console
|
|||||||
int nargs_;
|
int nargs_;
|
||||||
unsigned rarg;
|
unsigned rarg;
|
||||||
bool saw_question_mark;
|
bool saw_question_mark;
|
||||||
|
bool alternate_charset_active;
|
||||||
|
|
||||||
char my_title_buf [TITLESIZE + 1];
|
char my_title_buf [TITLESIZE + 1];
|
||||||
|
|
||||||
@ -788,6 +789,10 @@ class dev_console
|
|||||||
bool insert_mode;
|
bool insert_mode;
|
||||||
bool use_mouse;
|
bool use_mouse;
|
||||||
bool raw_win32_keyboard_mode;
|
bool raw_win32_keyboard_mode;
|
||||||
|
|
||||||
|
BOOL con_to_str (char *d, const char *s, DWORD sz);
|
||||||
|
BOOL str_to_con (char *d, const char *s, DWORD sz);
|
||||||
|
|
||||||
friend class fhandler_console;
|
friend class fhandler_console;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,27 +54,6 @@ cp_convert (UINT destcp, char *dest, UINT srccp, const char *src, DWORD size)
|
|||||||
return TRUE;
|
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.
|
* Scroll the screen context.
|
||||||
* x1, y1 - ul corner
|
* x1, y1 - ul corner
|
||||||
@ -187,6 +166,27 @@ set_console_state_for_spawn ()
|
|||||||
return 1;
|
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
|
BOOL
|
||||||
fhandler_console::set_raw_win32_keyboard_mode (BOOL new_mode)
|
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
|
/* Need this check since US code page seems to have a bug when
|
||||||
converting a CTRL-U. */
|
converting a CTRL-U. */
|
||||||
if ((unsigned char) ich > 0x7f)
|
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
|
/* Determine if the keystroke is modified by META. The tricky
|
||||||
part is to distinguish whether the right Alt key should be
|
part is to distinguish whether the right Alt key should be
|
||||||
recognized as Alt, or as AltGr. */
|
recognized as Alt, or as AltGr. */
|
||||||
@ -1118,10 +1118,10 @@ fhandler_console::char_command (char c)
|
|||||||
dev_state->intensity = INTENSITY_DIM;
|
dev_state->intensity = INTENSITY_DIM;
|
||||||
break;
|
break;
|
||||||
case 10: /* end alternate charset */
|
case 10: /* end alternate charset */
|
||||||
alternate_charset_active = FALSE;
|
dev_state->alternate_charset_active = FALSE;
|
||||||
break;
|
break;
|
||||||
case 11: /* start alternate charset */
|
case 11: /* start alternate charset */
|
||||||
alternate_charset_active = TRUE;
|
dev_state->alternate_charset_active = TRUE;
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
dev_state->underline = FALSE;
|
dev_state->underline = FALSE;
|
||||||
@ -1434,7 +1434,7 @@ fhandler_console::write_normal (const unsigned char *src,
|
|||||||
DWORD buf_len;
|
DWORD buf_len;
|
||||||
char buf[CONVERT_LIMIT];
|
char buf[CONVERT_LIMIT];
|
||||||
done = buf_len = min (sizeof (buf), len);
|
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",
|
debug_printf ("conversion error, handle %p",
|
||||||
get_output_handle ());
|
get_output_handle ());
|
||||||
|
@ -90,7 +90,6 @@ extern "C" DWORD WINAPI GetLastError (void);
|
|||||||
|
|
||||||
enum codepage_type {ansi_cp, oem_cp};
|
enum codepage_type {ansi_cp, oem_cp};
|
||||||
extern codepage_type current_codepage;
|
extern codepage_type current_codepage;
|
||||||
extern bool alternate_charset_active;
|
|
||||||
|
|
||||||
UINT get_cp ();
|
UINT get_cp ();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user