diff options
author | Hans Bolinder <[email protected]> | 2013-01-25 13:04:01 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2013-01-25 13:04:10 +0100 |
commit | 4adc1523254d5e326e2d5cf942b5eeee84fdb8ea (patch) | |
tree | 527d936f6295f3d8f86ceecf44ff2310ab5508b2 /lib/kernel/src/inet_config.erl | |
parent | 9afbb879f0397a650a7c403911a8cc30daa6dbbe (diff) | |
parent | 5b68f914f08479759d36557282aee29f44683d97 (diff) | |
download | otp-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.erl | 35 |
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. + |