summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/files.zig18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/files.zig b/src/files.zig
index ed9e628..b857ba5 100644
--- a/src/files.zig
+++ b/src/files.zig
@@ -9,8 +9,24 @@ pub fn resolvePath(allocator: Allocator, name: []const u8) ![]u8 {
9 } else if (name[0] == std.fs.path.sep) { 9 } else if (name[0] == std.fs.path.sep) {
10 // Already is an absolute path 10 // Already is an absolute path
11 return allocator.dupe(u8, name); 11 return allocator.dupe(u8, name);
12 } else if (name[0] == '~') {
13 if (name.len == 1) {
14 return error.FileNotFound;
15 } else if (name[1] == std.fs.path.sep) {
16 var env_map = try std.process.getEnvMap(allocator);
17 defer env_map.deinit();
18
19 if (env_map.get("HOME")) |home| {
20 return try std.fs.path.join(allocator, &.{ home, name[2..] });
21 } else {
22 std.log.err("No $HOME environment variable available!", .{});
23 return error.FileNotFound;
24 }
25 } else {
26 // TODO: Currently only doing ~/paths no ~user/paths
27 return error.FileNotFound;
28 }
12 } else { 29 } else {
13 // TODO: if (name[0] == '~')
14 const cwd = try std.process.getCwdAlloc(allocator); 30 const cwd = try std.process.getCwdAlloc(allocator);
15 defer allocator.free(cwd); 31 defer allocator.free(cwd);
16 32