about summary refs log tree commit diff
path: root/src/main.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-09-23 13:21:05 +0200
committerRobert Günzler <r@gnzler.io>2026-09-23 13:21:05 +0200
commit5c6edba5fe0a3b45516e44b6e87001749613cbf3 (patch)
treef77b9d788aa27f209dc353bd56b7bb6ad1302c04 /src/main.zig
parent8e68d18cf296ec8122b57b555004acbbefb44815 (diff)
downloadsite-5c6edba5fe0a3b45516e44b6e87001749613cbf3.tar.gz
dont truncate existing target files
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/main.zig b/src/main.zig
index dce7aef..febd896 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -198,6 +198,8 @@ const Builder = struct {
         // atomic?
         const target_fd = try self.target_dir.createFile(io, target_path, .{
             .lock = .exclusive,
+            .read = true,
+            .truncate = false,
         });
         defer target_fd.close(io);
 
@@ -377,7 +379,11 @@ const Builder = struct {
         defer gpa.free(target_name);
 
         // TODO: allow customizing tilde dir
-        const target_fd = try self.target_dir.createFile(io, target_name, .{ .lock = .exclusive });
+        const target_fd = try self.target_dir.createFile(io, target_name, .{
+            .lock = .exclusive,
+            .read = true,
+            .truncate = false,
+        });
         defer target_fd.close(io);
         if (try targetExists(io, gpa, target_fd, self.root_dir)) return;
 
@@ -420,7 +426,11 @@ const Builder = struct {
         const source_stem = std.fs.path.basename(self.source.path)[5..]; // trim "meta."
         log.debug("meta.feed : {s}", .{source_stem});
 
-        const target_fd = try self.target_dir.createFile(io, source_stem, .{ .lock = .exclusive });
+        const target_fd = try self.target_dir.createFile(io, source_stem, .{
+            .lock = .exclusive,
+            .read = true,
+            .truncate = false,
+        });
         defer target_fd.close(io);
         if (try targetExists(io, gpa, target_fd, self.root_dir)) return;