| ... | ... | @@ -21,8 +21,14 @@ pub fn close(self: Dir) void { |
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | pub fn openFile(self: Dir, sub_path: [:0]const u8, flags: OpenFileFlags) !File { |
| 24 | | _ = flags; |
| 25 | | return .{ .fd = @enumFromInt(try sys.openat(@intFromEnum(self.fd), sub_path.ptr, sys.O.RDONLY)) }; |
| 24 | var oflag: c_int = 0; |
| 25 | oflag |= switch (flags.mode) { |
| 26 | .read_only => sys.O.RDONLY, |
| 27 | .write_only => sys.O.WRONLY, |
| 28 | .read_write => sys.O.RDWR, |
| 29 | }; |
| 30 | oflag |= sys.O.CLOEXEC; |
| 31 | return .{ .fd = @enumFromInt(try sys.openat(@intFromEnum(self.fd), sub_path.ptr, oflag)) }; |
| 26 | 32 | } |
| 27 | 33 | pub fn openFileC(self: Dir, sub_path: []const u8, flags: OpenFileFlags) !File { |
| 28 | 34 | std.debug.assert(sub_path.len <= sys.PATH_MAX); |
| ... | ... | @@ -33,7 +39,7 @@ pub fn openFileC(self: Dir, sub_path: []const u8, flags: OpenFileFlags) !File { |
| 33 | 39 | } |
| 34 | 40 | |
| 35 | 41 | pub const OpenFileFlags = packed struct { |
| 36 | | // |
| 42 | mode: enum(u8) { read_only, write_only, read_write } = .read_only, |
| 37 | 43 | }; |
| 38 | 44 | |
| 39 | 45 | pub fn openDir(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir { |