forked from Spencer/math_shell
Add basic ~ support
This commit is contained in:
@@ -163,6 +163,7 @@ fn cdFn(shell_state: *ShellState, command: [][]const u8, allocator: Allocator) !
|
||||
const old_pwd = env_map.get("OLDPWD");
|
||||
const home = env_map.get("HOME");
|
||||
defer allocator.free(pwd);
|
||||
var buf: [fs.max_path_bytes]u8 = undefined;
|
||||
var err: ?anyerror = null;
|
||||
|
||||
var target: ?[]const u8 = null;
|
||||
@@ -170,6 +171,12 @@ fn cdFn(shell_state: *ShellState, command: [][]const u8, allocator: Allocator) !
|
||||
if (home) |h| {
|
||||
target = h;
|
||||
}
|
||||
} else if (command[1][0] == '~') {
|
||||
if (home) |h| {
|
||||
const numReplacements = mem.replace(u8, command[1], "~", h, &buf);
|
||||
const len = command[1].len - numReplacements + (numReplacements * h.len);
|
||||
target = buf[0..len];
|
||||
}
|
||||
} else if (eql(u8, command[1], "-")) {
|
||||
if (old_pwd) |old| {
|
||||
target = old;
|
||||
@@ -178,7 +185,6 @@ fn cdFn(shell_state: *ShellState, command: [][]const u8, allocator: Allocator) !
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
var buf: [fs.max_path_bytes]u8 = undefined;
|
||||
target = cwd.realpath(command[1], &buf) catch |e| blk: {
|
||||
err = e;
|
||||
break :blk null;
|
||||
|
||||
Reference in New Issue
Block a user