diff options
author | John Högberg <[email protected]> | 2017-10-11 07:40:42 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2017-11-30 15:44:36 +0100 |
commit | 122d54acae3bac94c223b7d809cb78a08c934116 (patch) | |
tree | ae79c23d9095cab6f6d38ae88470b6d355f86dae /lib/kernel | |
parent | 1edafdf65feaab9a098e5888b95c059d28ec1a6e (diff) | |
download | otp-122d54acae3bac94c223b7d809cb78a08c934116.tar.gz otp-122d54acae3bac94c223b7d809cb78a08c934116.tar.bz2 otp-122d54acae3bac94c223b7d809cb78a08c934116.zip |
Operations on closed raw files should return EINVAL
Diffstat (limited to 'lib/kernel')
-rw-r--r-- | lib/kernel/test/file_SUITE.erl | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl index 2813028972..5e5e7cf6b2 100644 --- a/lib/kernel/test/file_SUITE.erl +++ b/lib/kernel/test/file_SUITE.erl @@ -1039,6 +1039,23 @@ close(Config) when is_list(Config) -> Val = ?FILE_MODULE:close(Fd1), io:format("Second close gave: ~p",[Val]), + %% All operations on a closed raw file should EINVAL, even if they're not + %% supported on the current platform. + {ok,Fd2} = ?FILE_MODULE:open(Name, [read, write, raw]), + ok = ?FILE_MODULE:close(Fd2), + + {error, einval} = ?FILE_MODULE:advise(Fd2, 5, 5, normal), + {error, einval} = ?FILE_MODULE:allocate(Fd2, 5, 5), + {error, einval} = ?FILE_MODULE:close(Fd2), + {error, einval} = ?FILE_MODULE:datasync(Fd2), + {error, einval} = ?FILE_MODULE:position(Fd2, 5), + {error, einval} = ?FILE_MODULE:pread(Fd2, 5, 1), + {error, einval} = ?FILE_MODULE:pwrite(Fd2, 5, "einval please"), + {error, einval} = ?FILE_MODULE:read(Fd2, 1), + {error, einval} = ?FILE_MODULE:sync(Fd2), + {error, einval} = ?FILE_MODULE:truncate(Fd2), + {error, einval} = ?FILE_MODULE:write(Fd2, "einval please"), + [] = flush(), ok. |