From c44bc4f840f85c677eb86f00dc42c1648aaec0a6 Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Tue, 1 Jan 2013 16:56:22 +0100 Subject: Make sure the Erlang shell prompt can handle Unicode --- lib/kernel/src/group.erl | 8 ++++---- lib/kernel/src/user.erl | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'lib/kernel') diff --git a/lib/kernel/src/group.erl b/lib/kernel/src/group.erl index f92c6f7208..4d2e31a429 100644 --- a/lib/kernel/src/group.erl +++ b/lib/kernel/src/group.erl @@ -424,7 +424,7 @@ get_password_chars(Drv,Buf) -> end. get_chars(Prompt, M, F, Xa, Drv, Buf, Encoding) -> - Pbs = prompt_bytes(Prompt), + Pbs = prompt_bytes(Prompt, Encoding), get_chars_loop(Pbs, M, F, Xa, Drv, Buf, start, Encoding). get_chars_loop(Pbs, M, F, Xa, Drv, Buf0, State, Encoding) -> @@ -688,9 +688,9 @@ edit_password([Char|Cs],Chars) -> edit_password(Cs,[Char|Chars]). %% prompt_bytes(Prompt) -%% Return a flat list of bytes for the Prompt. -prompt_bytes(Prompt) -> - lists:flatten(io_lib:format_prompt(Prompt)). +%% Return a flat list of characters for the Prompt. +prompt_bytes(Prompt, Encoding) -> + lists:flatten(io_lib:format_prompt(Prompt, Encoding)). cast(L, binary,latin1) when is_list(L) -> list_to_binary(L); diff --git a/lib/kernel/src/user.erl b/lib/kernel/src/user.erl index 629b7ae67f..d6449d9e5e 100644 --- a/lib/kernel/src/user.erl +++ b/lib/kernel/src/user.erl @@ -673,8 +673,9 @@ get_chars_more(State, M, F, Xa, Port, Q, Enc) -> prompt(_Port, '') -> ok; prompt(Port, Prompt) -> - put_port(wrap_characters_to_binary(io_lib:format_prompt(Prompt), - unicode, get(encoding)), + Encoding = get(encoding), + put_port(wrap_characters_to_binary(io_lib:format_prompt(Prompt, Encoding), + unicode, Encoding), Port). %% Convert error code to make it look as before -- cgit v1.2.3