aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/inet_config.erl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2013-01-25 13:04:01 +0100
committerHans Bolinder <[email protected]>2013-01-25 13:04:10 +0100
commit4adc1523254d5e326e2d5cf942b5eeee84fdb8ea (patch)
tree527d936f6295f3d8f86ceecf44ff2310ab5508b2 /lib/kernel/src/inet_config.erl
parent9afbb879f0397a650a7c403911a8cc30daa6dbbe (diff)
parent5b68f914f08479759d36557282aee29f44683d97 (diff)
downloadotp-4adc1523254d5e326e2d5cf942b5eeee84fdb8ea.tar.gz
otp-4adc1523254d5e326e2d5cf942b5eeee84fdb8ea.tar.bz2
otp-4adc1523254d5e326e2d5cf942b5eeee84fdb8ea.zip
Merge branch 'hb/unicode/OTP-10302'
OTP-10742 OTP-10745 OTP-10749 * hb/unicode/OTP-10302: [stdlib] Remove documentation of ~tp Remove one use of iolist_size/1 in io_lib_pretty.erl Add a new function proc_lib:format/2 which takes encoding Export the type erl_scan:token() Make adjustments for Unicode [stdlib] Change default of erl_scan's unicode option Update preloaded Correct recently introduced Unicode related type errors [stdlib] Introduce new functions epp:read_encoding_from_binary/1,2 Extend char() to Unicode characters [kernel] Correct bugs in the old shell (user.erl) [parsetools] Change the encoding of test suites to UTF-8 [stdlib] Fix a contract bug [stdlib] Update the Unicode examples in STDLIB User's Guide [stdlib] Remove documentation of Unicode functions in io_lib
Diffstat (limited to 'lib/kernel/src/inet_config.erl')
-rw-r--r--lib/kernel/src/inet_config.erl35
1 files changed, 26 insertions, 9 deletions
diff --git a/lib/kernel/src/inet_config.erl b/lib/kernel/src/inet_config.erl
index 526baca335..aa19bd4779 100644
--- a/lib/kernel/src/inet_config.erl
+++ b/lib/kernel/src/inet_config.erl
@@ -104,7 +104,7 @@ init() ->
%% Add inetrc config entries
case inet_db:add_rc_list(CfgList) of
ok -> ok;
- _ -> error("syntax error in ~s~n", [RcFile])
+ _ -> error("syntax error in ~ts~n", [RcFile])
end,
%% Set up a resolver configuration file for inet_res,
@@ -266,10 +266,10 @@ load_resolv(File, Func) ->
{ok, Ls} ->
inet_db:add_rc_list(Ls);
{error, Reason} ->
- error("parse error in file ~s: ~p", [File, Reason])
+ error("parse error in file ~ts: ~p", [File, Reason])
end;
Error ->
- warning("file not found ~s: ~p~n", [File, Error])
+ warning("file not found ~ts: ~p~n", [File, Error])
end.
%%
@@ -285,12 +285,12 @@ load_hosts(File,Os) ->
inet_db:add_host(IP, [Name|Aliases]) end,
Ls);
{error, Reason} ->
- error("parse error in file ~s: ~p", [File, Reason])
+ error("parse error in file ~ts: ~p", [File, Reason])
end;
Error ->
case Os of
unix ->
- error("file not found ~s: ~p~n", [File, Error]);
+ error("file not found ~ts: ~p~n", [File, Error]);
_ ->
%% for windows or nt the hosts file is not always there
%% and we don't require it
@@ -462,11 +462,11 @@ get_rc(File) ->
{ok,Ls} ->
Ls;
_Error ->
- error("parse error in ~s~n", [File]),
+ error("parse error in ~ts~n", [File]),
error
end;
_Error ->
- error("file ~s not found~n", [File]),
+ error("file ~ts not found~n", [File]),
error
end.
@@ -495,8 +495,12 @@ warning(Fmt, Args) ->
%% Ignore leading whitespace before a token (due to bug in erl_scan) !
%%
parse_inetrc(Bin) ->
- Str = binary_to_list(Bin) ++ "\n",
- parse_inetrc(Str, 1, []).
+ case file_binary_to_list(Bin) of
+ {ok, String} ->
+ parse_inetrc(String ++ "\n", 1, []);
+ error ->
+ {error, 'bad_encoding'}
+ end.
parse_inetrc_skip_line([], _Line, Ack) ->
{ok, reverse(Ack)};
@@ -535,3 +539,16 @@ parse_inetrc(Str, Line, Ack) ->
{more, _} -> %% Bug in erl_scan !!
{error, {'scan_inetrc', {eof, Line}}}
end.
+
+file_binary_to_list(Bin) ->
+ Enc = case epp:read_encoding_from_binary(Bin) of
+ none -> epp:default_encoding();
+ Encoding -> Encoding
+ end,
+ case catch unicode:characters_to_list(Bin, Enc) of
+ String when is_list(String) ->
+ {ok, String};
+ _ ->
+ error
+ end.
+