Cygwin: pty: Change the timing of set_locale() call again.
- After commit 095972ce5b
, charset
conversion in mintty is broken if charset is set to other than
UTF-8. This seems to be caused because mintty does not set locale
yet at fork() call. This patch changes the timing of set_locale()
call again to avoid this issue.
This commit is contained in:
parent
095972ce5b
commit
70d02aaca6
@ -2852,6 +2852,9 @@ get_langinfo (char *locale_out, char *charset_out)
|
|||||||
void
|
void
|
||||||
fhandler_pty_slave::setup_locale (void)
|
fhandler_pty_slave::setup_locale (void)
|
||||||
{
|
{
|
||||||
|
if (get_ttyp ()->term_code_page != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
char locale[ENCODING_LEN + 1] = "C";
|
char locale[ENCODING_LEN + 1] = "C";
|
||||||
char charset[ENCODING_LEN + 1] = "ASCII";
|
char charset[ENCODING_LEN + 1] = "ASCII";
|
||||||
LCID lcid = get_langinfo (locale, charset);
|
LCID lcid = get_langinfo (locale, charset);
|
||||||
@ -2983,10 +2986,6 @@ fhandler_pty_slave::fixup_after_fork (HANDLE parent)
|
|||||||
// fork_fixup (parent, inuse, "inuse");
|
// fork_fixup (parent, inuse, "inuse");
|
||||||
// fhandler_pty_common::fixup_after_fork (parent);
|
// fhandler_pty_common::fixup_after_fork (parent);
|
||||||
report_tty_counts (this, "inherited", "");
|
report_tty_counts (this, "inherited", "");
|
||||||
|
|
||||||
/* Set locale */
|
|
||||||
if (get_ttyp ()->term_code_page == 0)
|
|
||||||
setup_locale ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -3024,6 +3023,9 @@ fhandler_pty_slave::fixup_after_exec ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set locale */
|
||||||
|
setup_locale ();
|
||||||
|
|
||||||
/* Hook Console API */
|
/* Hook Console API */
|
||||||
if (get_pseudo_console ())
|
if (get_pseudo_console ())
|
||||||
{
|
{
|
||||||
|
@ -628,6 +628,18 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!iscygwin ())
|
||||||
|
{
|
||||||
|
cfd.rewind ();
|
||||||
|
while (cfd.next () >= 0)
|
||||||
|
if (cfd->get_major () == DEV_PTYS_MAJOR)
|
||||||
|
{
|
||||||
|
fhandler_pty_slave *ptys =
|
||||||
|
(fhandler_pty_slave *)(fhandler_base *) cfd;
|
||||||
|
ptys->setup_locale ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Set up needed handles for stdio */
|
/* Set up needed handles for stdio */
|
||||||
si.dwFlags = STARTF_USESTDHANDLES;
|
si.dwFlags = STARTF_USESTDHANDLES;
|
||||||
si.hStdInput = handle ((in__stdin < 0 ? 0 : in__stdin), false,
|
si.hStdInput = handle ((in__stdin < 0 ? 0 : in__stdin), false,
|
||||||
|
Loading…
Reference in New Issue
Block a user