about summary refs log tree commit diff
path: root/src/fs.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2025-09-10 13:38:16 +0200
committerRobert Günzler <r@gnzler.io>2025-09-29 17:06:10 +0200
commit109b73a3936c90aa89cd12c60aacf51439d31370 (patch)
tree77ec030f1676a9f8212b6f5eba2a70e74c99184c /src/fs.zig
parent34f08e9b1036171bbcd217929c7df2c7f16b627e (diff)
downloadsite-109b73a3936c90aa89cd12c60aacf51439d31370.tar.gz
use rbl for running pandoc
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
-rw-r--r--src/fs.zig9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/fs.zig b/src/fs.zig
index c009afd..8ae9d8e 100644
--- a/src/fs.zig
+++ b/src/fs.zig
@@ -47,6 +47,13 @@ pub const FileSwapper = struct {
         self.tmp.sync() catch
             @panic("sync tmp file");
 
+        // check if target path exists
+        var found = true;
+        std.fs.cwd().access(self.target_path, .{}) catch |e| switch (e) {
+            error.FileNotFound => found = false,
+            else => @panic("unable to stat target path"),
+        };
+
         // swap file into final location
         std.fs.rename(
             std.fs.cwd(),
@@ -60,7 +67,7 @@ pub const FileSwapper = struct {
 
 pub fn replace_extension(alloc: std.mem.Allocator, p: []const u8, new: []const u8) ![]const u8 {
     const dirname = std.fs.path.dirname(p) orelse ".";
-    const basename = try strip_extension(p);
+    const basename = try strip_extension(std.fs.path.basename(p));
     return try join_path_and_filename(
         alloc,
         &.{dirname},