diff --git a/rebar.config.script b/rebar.config.script index 905a0ebe..e3b9cda8 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -176,6 +176,7 @@ Funs = [{application, get_supervisor, 1}, {ets, whereis, 1}, {file, del_dir_r, 1}, {file, delete, 2}, + {file, read_file, 2}, {filelib, ensure_path, 1}, {filelib, find_file, 2}, {filelib, find_file, 3}, diff --git a/src/otpbp_file.erl b/src/otpbp_file.erl index 0fee176d..5165cedb 100644 --- a/src/otpbp_file.erl +++ b/src/otpbp_file.erl @@ -4,11 +4,14 @@ % OTP 23.0 -export([del_dir_r/1]). -endif. - -ifndef(HAVE_file__delete_2). % OTP 24.0 -export([delete/2]). -endif. +-ifndef(HAVE_file__read_file_2). +% OTP 27.0 +-export([read_file/2]). +-endif. -ifndef(HAVE_file__del_dir_r_1). -include_lib("kernel/include/file.hrl"). @@ -35,12 +38,38 @@ delete(Name, Opts) when is_list(Opts) -> Error -> Error end. +-ifndef(NEED_check_args_2). +-define(NEED_check_args_2, true). +-endif. +-ifndef(NEED_file_name_1). +-define(NEED_file_name_1, true). +-endif. +-endif. + +-ifndef(HAVE_file__read_file_2). +read_file(Name, Opts) when is_list(Opts) -> + case check_args(Opts, ok) of + ok -> file:read_file(Name); + raw -> prim_file:read_file(file_name(Name)); + Error -> Error + end. + +-ifndef(NEED_check_args_2). +-define(NEED_check_args_2, true). +-endif. +-ifndef(NEED_file_name_1). +-define(NEED_file_name_1, true). +-endif. +-endif. + +-ifdef(NEED_check_args_2). check_args([{error, _} = Error|_Rest], _) -> Error; check_args([raw|Rest], _) -> check_args(Rest, raw); check_args([_Name|Rest], R) -> check_args(Rest, R); check_args([], R) -> R. +-endif. --compile({inline, [file_name/1]}). +-ifdef(NEED_file_name_1). file_name(N) when is_binary(N) -> N; file_name(N) -> try diff --git a/src/otpbp_pt.erl b/src/otpbp_pt.erl index e3b7d409..144776b2 100644 --- a/src/otpbp_pt.erl +++ b/src/otpbp_pt.erl @@ -119,7 +119,7 @@ {{ets, lookup_element, 4}, otpbp_ets}, {{ets, whereis, 1}, otpbp_ets}, {{file, del_dir_r, 1}, otpbp_file}, - {{file, delete, 2}, otpbp_file}, + {{file, [delete, read_file], 2}, otpbp_file}, {{filelib, ensure_path, 1}, otpbp_filelib}, {{filelib, find_file, [2, 3]}, otpbp_filelib}, {{filelib, safe_relative_path, 2}, otpbp_filelib},