diff options
author | Andre Nathan <[email protected]> | 2019-04-29 09:29:59 -0300 |
---|---|---|
committer | John Högberg <[email protected]> | 2019-07-12 09:06:45 +0200 |
commit | 924cd70f8b7cf1fa2256055af39723b24fd6238e (patch) | |
tree | dc50661270400d205fa83c3552cb94a8c6ee989f /lib/kernel/src/file.erl | |
parent | b286b7f1de4aed13ba71b817321673eb67df941e (diff) | |
download | otp-924cd70f8b7cf1fa2256055af39723b24fd6238e.tar.gz otp-924cd70f8b7cf1fa2256055af39723b24fd6238e.tar.bz2 otp-924cd70f8b7cf1fa2256055af39723b24fd6238e.zip |
file: allow read_file_info on file descriptors
Diffstat (limited to 'lib/kernel/src/file.erl')
-rw-r--r-- | lib/kernel/src/file.erl | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl index a0616da670..2ad2df97a8 100644 --- a/lib/kernel/src/file.erl +++ b/lib/kernel/src/file.erl @@ -239,20 +239,30 @@ make_dir(Name) -> del_dir(Name) -> check_and_call(del_dir, [file_name(Name)]). --spec read_file_info(Filename) -> {ok, FileInfo} | {error, Reason} when - Filename :: name_all(), +-spec read_file_info(File) -> {ok, FileInfo} | {error, Reason} when + File :: name_all() | io_device(), FileInfo :: file_info(), Reason :: posix() | badarg. +read_file_info(IoDevice) + when is_pid(IoDevice); is_record(IoDevice, file_descriptor) -> + read_file_info(IoDevice, []); + read_file_info(Name) -> check_and_call(read_file_info, [file_name(Name)]). --spec read_file_info(Filename, Opts) -> {ok, FileInfo} | {error, Reason} when - Filename :: name_all(), +-spec read_file_info(File, Opts) -> {ok, FileInfo} | {error, Reason} when + File :: name_all() | io_device(), Opts :: [file_info_option()], FileInfo :: file_info(), Reason :: posix() | badarg. +read_file_info(IoDevice, Opts) when is_pid(IoDevice), is_list(Opts) -> + file_request(IoDevice, {read_handle_info, Opts}); + +read_file_info(#file_descriptor{module = Module} = Handle, Opts) when is_list(Opts) -> + Module:read_handle_info(Handle, Opts); + read_file_info(Name, Opts) when is_list(Opts) -> Args = [file_name(Name), Opts], case check_args(Args) of |