From c6af3bc07411ae6cbfb8d386d6a58eb107b6c140 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 6 Nov 2022 00:26:13 +0100 Subject: [PATCH] Add sh(1) history builtin. --- sh/sh.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sh/sh.c b/sh/sh.c index 278333ce..09a397b6 100644 --- a/sh/sh.c +++ b/sh/sh.c @@ -58,6 +58,7 @@ static const char* builtin_commands[] = "exit", "unset", "clearenv", + "history", (const char*) NULL, }; @@ -1341,6 +1342,19 @@ struct execute_result execute(char** tokens, } } + if ( strcmp(argv[0], "history") == 0 ) + { + for ( size_t i = 0; i < edit_state.history_used; i++ ) + { + const char* line = edit_state.history[i]; + if ( fprintf(stdout, "%5zu %s\n", i + 1, line) < 0 ) + err(1, "stdout"); + } + if ( fflush(stdout) == EOF ) + err(1, "stdout"); + exit(0); + } + execvp(argv[0], argv); if ( interactive && errno == ENOENT )