authorgravatar for gereeter+code@gmail.comJonathan S <gereeter+code@gmail.com> 2020-03-26 15:07:40-05:00
committergravatar for gereeter+code@gmail.comJonathan S <gereeter+code@gmail.com> 2020-03-26 15:07:40-05:00
logcf4cbea88e2a2e56f71d721e9c686ab68dd19658
tree4ba0eb3c9657866449b35449d17fea7bc690c0e7
parenta779a96d38883c8d642fc9164c3a60165078c2d2

Factor out arbitrary constant 12 to AtomicFile.RANDOM_BYTES


1 files changed, 5 insertions(+), 4 deletions(-)

lib/std/fs.zig+5-4
......@@ -63,7 +63,7 @@ pub fn atomicSymLink(allocator: *Allocator, existing_path: []const u8, new_path:
6363
6464 const dirname = path.dirname(new_path) orelse ".";
6565
66 var rand_buf: [12]u8 = undefined;
66 var rand_buf: [AtomicFile.RANDOM_BYTES]u8 = undefined;
6767 const tmp_path = try allocator.alloc(u8, dirname.len + 1 + base64.Base64Encoder.calcSize(rand_buf.len));
6868 defer allocator.free(tmp_path);
6969 mem.copy(u8, tmp_path[0..], dirname);
......@@ -128,13 +128,14 @@ pub const AtomicFile = struct {
128128
129129 const InitError = File.OpenError;
130130
131 const TMP_PATH_LEN = base64.Base64Encoder.calcSize(12);
131 const RANDOM_BYTES = 12;
132 const TMP_PATH_LEN = base64.Base64Encoder.calcSize(RANDOM_BYTES);
132133
133134 /// TODO rename this. Callers should go through Dir API
134135 pub fn init2(dest_path: []const u8, mode: File.Mode, dir: Dir, close_dir_on_deinit: bool) InitError!AtomicFile {
135 var rand_buf: [12]u8 = undefined;
136 var rand_buf: [RANDOM_BYTES]u8 = undefined;
136137 var tmp_path_buf: [TMP_PATH_LEN:0]u8 = undefined;
137 tmp_path_buf[base64.Base64Encoder.calcSize(12)] = 0;
138 tmp_path_buf[base64.Base64Encoder.calcSize(RANDOM_BYTES)] = 0;
138139
139140 while (true) {
140141 try crypto.randomBytes(rand_buf[0..]);