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:...@@ -63,7 +63,7 @@ pub fn atomicSymLink(allocator: *Allocator, existing_path: []const u8, new_path:
6363
64 const dirname = path.dirname(new_path) orelse ".";64 const dirname = path.dirname(new_path) orelse ".";
6565
66 var rand_buf: [12]u8 = undefined;66 var rand_buf: [AtomicFile.RANDOM_BYTES]u8 = undefined;
67 const tmp_path = try allocator.alloc(u8, dirname.len + 1 + base64.Base64Encoder.calcSize(rand_buf.len));67 const tmp_path = try allocator.alloc(u8, dirname.len + 1 + base64.Base64Encoder.calcSize(rand_buf.len));
68 defer allocator.free(tmp_path);68 defer allocator.free(tmp_path);
69 mem.copy(u8, tmp_path[0..], dirname);69 mem.copy(u8, tmp_path[0..], dirname);
...@@ -128,13 +128,14 @@ pub const AtomicFile = struct {...@@ -128,13 +128,14 @@ pub const AtomicFile = struct {
128128
129 const InitError = File.OpenError;129 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
133 /// TODO rename this. Callers should go through Dir API134 /// TODO rename this. Callers should go through Dir API
134 pub fn init2(dest_path: []const u8, mode: File.Mode, dir: Dir, close_dir_on_deinit: bool) InitError!AtomicFile {135 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;
136 var tmp_path_buf: [TMP_PATH_LEN:0]u8 = undefined;137 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
139 while (true) {140 while (true) {
140 try crypto.randomBytes(rand_buf[0..]);141 try crypto.randomBytes(rand_buf[0..]);