From 61c353dcfdafb87107cc5472709d229c26a8cb6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 20 Nov 2012 10:26:31 +0100 Subject: [PATCH] Support environment vars with unicode characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The results returned by os:getenv() may contain unicode characters. That said, we need to explicitly allow unicode when splitting the environment information, otherwise badarg will be raised causing all rebar commands to fail until the environment variable is removed. --- src/rebar_port_compiler.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl index 70ee308..06a79bc 100644 --- a/src/rebar_port_compiler.erl +++ b/src/rebar_port_compiler.erl @@ -399,7 +399,7 @@ expand_vars_loop([], Recurse, Vars, Count) -> expand_vars_loop(Recurse, [], Vars, Count-1); expand_vars_loop([{K, V} | Rest], Recurse, Vars, Count) -> %% Identify the variables that need expansion in this value - ReOpts = [global, {capture, all_but_first, list}], + ReOpts = [global, {capture, all_but_first, list}, unicode], case re:run(V, "\\\${?(\\w+)}?", ReOpts) of {match, Matches} -> %% Identify the unique variables that need to be expanded @@ -472,8 +472,8 @@ erts_dir() -> lists:concat([code:root_dir(), "/erts-", erlang:system_info(version)]). os_env() -> - Os = [list_to_tuple(re:split(S, "=", [{return, list}, {parts, 2}])) || - S <- os:getenv()], + ReOpts = [{return, list}, {parts, 2}, unicode], + Os = [list_to_tuple(re:split(S, "=", ReOpts)) || S <- os:getenv()], %% Drop variables without a name (win32) [T1 || {K, _V} = T1 <- Os, K =/= []].