summaryrefslogtreecommitdiff
path: root/src/builtins.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/builtins.zig')
-rw-r--r--src/builtins.zig17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/builtins.zig b/src/builtins.zig
index 011a923..18e1840 100644
--- a/src/builtins.zig
+++ b/src/builtins.zig
@@ -116,8 +116,21 @@ pub fn executeType(allocator: std.mem.Allocator, stdout: anytype, args: ?[]const
}
}
-pub fn executeHistory(stdout: anytype, history_list: []const []const u8) !void {
- for (history_list, 1..) |cmd, idx| {
+pub fn executeHistory(stdout: anytype, history_list: []const []const u8, args: ?[]const u8) !void {
+ var limit: usize = history_list.len;
+
+ if (args) |a| {
+ const trimmed = std.mem.trim(u8, a, " ");
+ if (trimmed.len > 0) {
+ limit = std.fmt.parseInt(usize, trimmed, 10) catch {
+ try stdout.print("history: invalid argument\n", .{});
+ return;
+ };
+ }
+ }
+
+ const start = if (limit < history_list.len) history_list.len - limit else 0;
+ for (history_list[start..], start + 1..) |cmd, idx| {
try stdout.print(" {d} {s}\n", .{ idx, cmd });
}
}