summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2022-01-11 22:13:05 +0300
committerGitHub <noreply@github.com>2022-01-11 22:13:05 +0300
commitc9c03d275c95631bcd8fb17bffd4b10f7b37a230 (patch)
treea0ba14d842b7563ea2cd00b600187015ffd744b7
parent06d7c3fa84f79b510b17789582d09336404032e0 (diff)
parent95a60fc3be2fdf093ed4609249013c26f75ae8ef (diff)
downloadrabbitmq-server-git-c9c03d275c95631bcd8fb17bffd4b10f7b37a230.tar.gz
Merge pull request #3980 from rabbitmq/gh-3936-followup
Replace one use of filelib:is_regular/1
-rw-r--r--deps/rabbit/src/rabbit_config.erl2
-rw-r--r--deps/rabbit_common/src/rabbit_misc.erl11
2 files changed, 12 insertions, 1 deletions
diff --git a/deps/rabbit/src/rabbit_config.erl b/deps/rabbit/src/rabbit_config.erl
index 1198035a7a..5cda2f9e45 100644
--- a/deps/rabbit/src/rabbit_config.erl
+++ b/deps/rabbit/src/rabbit_config.erl
@@ -35,7 +35,7 @@ get_advanced_config() ->
-spec config_files() -> [config_location()].
config_files() ->
ConfFiles = [filename:absname(File) || File <- get_confs(),
- filelib:is_regular(File)],
+ rabbit_misc:is_regular_file(File)],
AdvancedFiles = case get_advanced_config() of
none -> [];
FileName -> [filename:absname(FileName)]
diff --git a/deps/rabbit_common/src/rabbit_misc.erl b/deps/rabbit_common/src/rabbit_misc.erl
index 98eb3b3f7d..e94d2f3a79 100644
--- a/deps/rabbit_common/src/rabbit_misc.erl
+++ b/deps/rabbit_common/src/rabbit_misc.erl
@@ -81,6 +81,7 @@
-export([get_gc_info/1]).
-export([group_proplists_by/2]).
-export([raw_read_file/1]).
+-export([is_regular_file/1]).
%% Horrible macro to use in guards
-define(IS_BENIGN_EXIT(R),
@@ -1421,6 +1422,16 @@ raw_read_file(File) ->
error:{badmatch, Error} -> Error
end.
+-spec is_regular_file(Name) -> boolean() when
+ Name :: file:filename_all().
+is_regular_file(Name) ->
+ % Note: this works around the win32 file leak in file:read_file/1
+ % https://github.com/erlang/otp/issues/5527
+ case file:read_file_info(Name, [raw]) of
+ {ok, #file_info{type=regular}} -> true;
+ _ -> false
+ end.
+
%% -------------------------------------------------------------------------
%% Begin copypasta from gen_server2.erl