From eaead79fdd0df14db64cc0bbc6c345291b2bf958 Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Mon, 21 Mar 2011 18:40:24 +0200 Subject: Add small/file_open_encoding --- .../small_SUITE_data/src/file_open_encoding.erl | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl (limited to 'lib/dialyzer') diff --git a/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl b/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl new file mode 100644 index 0000000000..4f1268eba8 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/file_open_encoding.erl @@ -0,0 +1,26 @@ +%%----------------------------------------------------------------------- +%% Program that gave erroneous warnings due to missing information about +%% the {encoding, latin1 | unicode | utf8 | ...} option of file:open/3. +%%----------------------------------------------------------------------- +-module(file_open_encoding). + +-export([parse/1]). + +-type proplist() :: [{atom(), any()}]. + +-spec parse(string()) -> proplist(). +parse(FileName) -> + {ok, IoDevice} = file:open(FileName, [read, binary, {encoding, utf8}]), + do_parse(IoDevice, []). + +do_parse(IoDevice, ResultSoFar) -> + case io:get_line(IoDevice, "") of + eof -> + file:close(IoDevice), + ResultSoFar; + <<"--"/utf8, _Comment/binary>> -> + do_parse(IoDevice, ResultSoFar); + Line -> + [Key, Value] = binary:split(Line, [<<": ">>, <<"\n">>], [global, trim]), + do_parse(IoDevice, [{binary_to_atom(Key, utf8), Value} | ResultSoFar]) + end. -- cgit v1.2.3