diff --git a/nfs.zig b/nfs.zig index fc2980959a1b4c6f86eced111f77a9c322cc924c..e82ce2ab61f0b68afe38e3e3f7b23dc50d76a315 100644 --- a/nfs.zig +++ b/nfs.zig @@ -55,3 +55,14 @@ pub fn mkdtemp() !Dir { const path = template[0 .. template.len - 1 :0]; return cwd().makeOpenPath(path, .{}); } + +pub fn mktemp(flags: Dir.CreateFlags) !File { + var template = "/tmp/tmp.XXXXXXXXXX\x00".*; + const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + var buf: [10]u8 = @splat(0); + const rand = try sys.getrandom(&buf, 0); + if (rand.len != 10) return error.EAGAIN; + for (template[9..][0..10], rand) |*a, b| a.* = letters[b % 62]; + const path = template[0 .. template.len - 1 :0]; + return cwd().createFile(path, flags); +}