[libc-commits] [libc] [libc] Add 'x' and 'e' mode support to fopen() (PR #224207)
Michael Jones via libc-commits
libc-commits at lists.llvm.org
Thu Sep 17 09:53:30 PDT 2026
================
@@ -181,6 +189,45 @@ TEST(LlvmLibcFileModeTest, AllPossibleValidCombinations) {
EXPECT_TRUE(append_update_binary.is_binary_format());
EXPECT_TRUE(append_update_binary.write_allowed());
EXPECT_TRUE(append_update_binary.read_allowed());
+
+ // 4. Close-on-exec: possible valid close-on-exec combinations
+
+ // a. Read Close-on-exec
+ constexpr FileMode read_close_on_exec("re");
+ EXPECT_TRUE(read_close_on_exec.is_valid());
+ EXPECT_TRUE(read_close_on_exec.is_read());
+ EXPECT_TRUE(read_close_on_exec.is_close_on_exec());
+ EXPECT_TRUE(read_close_on_exec.read_allowed());
+ EXPECT_FALSE(read_close_on_exec.write_allowed());
+ EXPECT_FALSE(read_close_on_exec.is_binary_format());
+ EXPECT_FALSE(read_close_on_exec.is_exclusive_create());
+
+ // b. Write Close-on-exec
+ constexpr FileMode write_close_on_exec("we");
+ EXPECT_TRUE(write_close_on_exec.is_valid());
+ EXPECT_TRUE(write_close_on_exec.is_write());
+ EXPECT_TRUE(write_close_on_exec.is_close_on_exec());
+ EXPECT_TRUE(write_close_on_exec.write_allowed());
+ EXPECT_FALSE(write_close_on_exec.read_allowed());
+
+ // c. Append Close-on-exec
+ constexpr FileMode append_close_on_exec("ae");
+ EXPECT_TRUE(append_close_on_exec.is_valid());
+ EXPECT_TRUE(append_close_on_exec.is_append());
+ EXPECT_TRUE(append_close_on_exec.is_close_on_exec());
+ EXPECT_TRUE(append_close_on_exec.write_allowed());
+ EXPECT_FALSE(append_close_on_exec.read_allowed());
+
+ // d. Write Close-on-exec Exclusive Update Binary
+ constexpr FileMode write_all_modifiers("wex+b");
+ EXPECT_TRUE(write_all_modifiers.is_valid());
+ EXPECT_TRUE(write_all_modifiers.is_write());
+ EXPECT_TRUE(write_all_modifiers.is_close_on_exec());
+ EXPECT_TRUE(write_all_modifiers.is_exclusive_create());
+ EXPECT_TRUE(write_all_modifiers.is_update());
+ EXPECT_TRUE(write_all_modifiers.is_binary_format());
+ EXPECT_TRUE(write_all_modifiers.read_allowed());
+ EXPECT_TRUE(write_all_modifiers.write_allowed());
----------------
michaelrj-google wrote:
this should probably go in its own `TEST()` for readability.
https://github.com/llvm/llvm-project/pull/224207
More information about the libc-commits
mailing list