diff options
author | Siri Hansen <siri@erlang.org> | 2013-02-05 11:33:13 +0100 |
---|---|---|
committer | Siri Hansen <siri@erlang.org> | 2013-02-21 11:03:35 +0100 |
commit | a2d08a9ce78f18ce37086f3c65f743cfae4f7f1b (patch) | |
tree | 25bd115e31e0c512acd161f164595788d0902339 /lib/reltool/src | |
parent | dc6c6f1d556e4e51ce8d7d1f3f1b5062fdd6e144 (diff) | |
download | erlang-a2d08a9ce78f18ce37086f3c65f743cfae4f7f1b.tar.gz |
[reltool] Honour encoding in reltool_utils:prim_consult
This function is similar to file:consult, except it also operates on a
binary (e.g. read from an archive). The function now takes magic
encoding comment into account.
Diffstat (limited to 'lib/reltool/src')
-rw-r--r-- | lib/reltool/src/reltool_utils.erl | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/reltool/src/reltool_utils.erl b/lib/reltool/src/reltool_utils.erl index 6149d6ef06..90831ecac7 100644 --- a/lib/reltool/src/reltool_utils.erl +++ b/lib/reltool/src/reltool_utils.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2012. All Rights Reserved. +%% Copyright Ericsson AB 2009-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -106,7 +106,7 @@ normalize_dir([], Path) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% prim_consult(Bin) when is_binary(Bin) -> - case erl_scan:string(binary_to_list(Bin)) of + case erl_scan:string(unicode:characters_to_list(Bin,encoding(Bin))) of {ok, Tokens, _EndLine} -> prim_parse(Tokens, []); {error, {_ErrorLine, Module, Reason}, _EndLine} -> @@ -120,6 +120,14 @@ prim_consult(FullName) when is_list(FullName) -> {error, file:format_error(enoent)} end. +encoding(Bin) when is_binary(Bin) -> + case epp:read_encoding_from_binary(Bin) of + none -> + epp:default_encoding(); + E -> + E + end. + prim_parse(Tokens, Acc) -> case lists:splitwith(fun(T) -> element(1,T) =/= dot end, Tokens) of {[], []} -> |