From f03a4b178eacd13226eaaba5f8d10892ccf78711 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sat, 1 Jan 2022 23:57:41 +0200 Subject: changes --- src/files.zig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/files.zig (limited to 'src/files.zig') diff --git a/src/files.zig b/src/files.zig new file mode 100644 index 0000000..ed9e628 --- /dev/null +++ b/src/files.zig @@ -0,0 +1,21 @@ +const std = @import("std"); + +const Allocator = std.mem.Allocator; + +pub fn resolvePath(allocator: Allocator, name: []const u8) ![]u8 { + return std.fs.cwd().realpathAlloc(allocator, name) catch |err| switch (err) { + error.FileNotFound => if (name.len == 0) { + return error.FileNotFound; + } else if (name[0] == std.fs.path.sep) { + // Already is an absolute path + return allocator.dupe(u8, name); + } else { + // TODO: if (name[0] == '~') + const cwd = try std.process.getCwdAlloc(allocator); + defer allocator.free(cwd); + + return std.fmt.allocPrint(allocator, "{s}{s}{s}", .{cwd, std.fs.path.sep_str, name}); + }, + else => return err, + }; +} -- cgit v1.2.3