ash,hush: history builtin
function old new delta show_history - 39 +39 builtin_history - 16 +16 historycmd - 13 +13 bltins1 312 324 +12 builtintab 336 344 +8 popstring 134 140 +6 hush_main 1048 1046 -2 ash_main 1398 1396 -2 size_from_HISTFILESIZE 44 40 -4 ------------------------------------------------------------------------------ (add/remove: 3/0 grow/shrink: 3/3 up/down: 94/-8) Total: 86 bytes Signed-off-by: Flemming Madsen <busybox@themadsens.dk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
3beab83e4f
commit
d96ffda62e
@ -1436,7 +1436,7 @@ void read_key_ungets(char *buffer, const char *str, unsigned len) FAST_FUNC;
|
|||||||
/* It's NOT just ENABLEd or disabled. It's a number: */
|
/* It's NOT just ENABLEd or disabled. It's a number: */
|
||||||
# if defined CONFIG_FEATURE_EDITING_HISTORY && CONFIG_FEATURE_EDITING_HISTORY > 0
|
# if defined CONFIG_FEATURE_EDITING_HISTORY && CONFIG_FEATURE_EDITING_HISTORY > 0
|
||||||
# define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0)
|
# define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0)
|
||||||
unsigned size_from_HISTFILESIZE(const char *hp);
|
unsigned size_from_HISTFILESIZE(const char *hp) FAST_FUNC;
|
||||||
# else
|
# else
|
||||||
# define MAX_HISTORY 0
|
# define MAX_HISTORY 0
|
||||||
# endif
|
# endif
|
||||||
@ -1478,6 +1478,7 @@ line_input_t *new_line_input_t(int flags) FAST_FUNC;
|
|||||||
* >0 length of input string, including terminating '\n'
|
* >0 length of input string, including terminating '\n'
|
||||||
*/
|
*/
|
||||||
int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) FAST_FUNC;
|
int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) FAST_FUNC;
|
||||||
|
void show_history(const line_input_t *st) FAST_FUNC;
|
||||||
# if ENABLE_FEATURE_EDITING_SAVE_ON_EXIT
|
# if ENABLE_FEATURE_EDITING_SAVE_ON_EXIT
|
||||||
void save_history(line_input_t *st);
|
void save_history(line_input_t *st);
|
||||||
# endif
|
# endif
|
||||||
|
@ -1254,7 +1254,7 @@ line_input_t* FAST_FUNC new_line_input_t(int flags)
|
|||||||
|
|
||||||
#if MAX_HISTORY > 0
|
#if MAX_HISTORY > 0
|
||||||
|
|
||||||
unsigned size_from_HISTFILESIZE(const char *hp)
|
unsigned FAST_FUNC size_from_HISTFILESIZE(const char *hp)
|
||||||
{
|
{
|
||||||
int size = MAX_HISTORY;
|
int size = MAX_HISTORY;
|
||||||
if (hp) {
|
if (hp) {
|
||||||
@ -1309,6 +1309,17 @@ static int get_next_history(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Lists command history. Used by shell 'history' builtins */
|
||||||
|
void FAST_FUNC show_history(const line_input_t *st)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!st)
|
||||||
|
return;
|
||||||
|
for (i = 0; i < st->cnt_history; i++)
|
||||||
|
printf("%4d %s\n", i, st->history[i]);
|
||||||
|
}
|
||||||
|
|
||||||
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
# if ENABLE_FEATURE_EDITING_SAVEHISTORY
|
||||||
/* We try to ensure that concurrent additions to the history
|
/* We try to ensure that concurrent additions to the history
|
||||||
* do not overwrite each other.
|
* do not overwrite each other.
|
||||||
@ -2749,8 +2760,9 @@ int FAST_FUNC read_line_input(line_input_t *st, const char *prompt, char *comman
|
|||||||
free(command_ps);
|
free(command_ps);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (command_len > 0)
|
if (command_len > 0) {
|
||||||
remember_in_history(command);
|
remember_in_history(command);
|
||||||
|
}
|
||||||
|
|
||||||
if (break_out > 0) {
|
if (break_out > 0) {
|
||||||
command[command_len++] = '\n';
|
command[command_len++] = '\n';
|
||||||
|
15
shell/ash.c
15
shell/ash.c
@ -9033,6 +9033,9 @@ static int getoptscmd(int, char **) FAST_FUNC;
|
|||||||
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
||||||
static int helpcmd(int, char **) FAST_FUNC;
|
static int helpcmd(int, char **) FAST_FUNC;
|
||||||
#endif
|
#endif
|
||||||
|
#if MAX_HISTORY
|
||||||
|
static int historycmd(int, char **) FAST_FUNC;
|
||||||
|
#endif
|
||||||
#if ENABLE_SH_MATH_SUPPORT
|
#if ENABLE_SH_MATH_SUPPORT
|
||||||
static int letcmd(int, char **) FAST_FUNC;
|
static int letcmd(int, char **) FAST_FUNC;
|
||||||
#endif
|
#endif
|
||||||
@ -9106,6 +9109,9 @@ static const struct builtincmd builtintab[] = {
|
|||||||
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
||||||
{ BUILTIN_NOSPEC "help" , helpcmd },
|
{ BUILTIN_NOSPEC "help" , helpcmd },
|
||||||
#endif
|
#endif
|
||||||
|
#if MAX_HISTORY
|
||||||
|
{ BUILTIN_NOSPEC "history" , historycmd },
|
||||||
|
#endif
|
||||||
#if JOBS
|
#if JOBS
|
||||||
{ BUILTIN_REGULAR "jobs" , jobscmd },
|
{ BUILTIN_REGULAR "jobs" , jobscmd },
|
||||||
{ BUILTIN_REGULAR "kill" , killcmd },
|
{ BUILTIN_REGULAR "kill" , killcmd },
|
||||||
@ -12621,6 +12627,15 @@ helpcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
|||||||
}
|
}
|
||||||
#endif /* FEATURE_SH_EXTRA_QUIET */
|
#endif /* FEATURE_SH_EXTRA_QUIET */
|
||||||
|
|
||||||
|
#if MAX_HISTORY
|
||||||
|
static int FAST_FUNC
|
||||||
|
historycmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||||
|
{
|
||||||
|
show_history(line_input_state);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The export and readonly commands.
|
* The export and readonly commands.
|
||||||
*/
|
*/
|
||||||
|
14
shell/hush.c
14
shell/hush.c
@ -850,6 +850,9 @@ static int builtin_jobs(char **argv) FAST_FUNC;
|
|||||||
#if ENABLE_HUSH_HELP
|
#if ENABLE_HUSH_HELP
|
||||||
static int builtin_help(char **argv) FAST_FUNC;
|
static int builtin_help(char **argv) FAST_FUNC;
|
||||||
#endif
|
#endif
|
||||||
|
#if MAX_HISTORY
|
||||||
|
static int builtin_history(char **argv) FAST_FUNC;
|
||||||
|
#endif
|
||||||
#if ENABLE_HUSH_LOCAL
|
#if ENABLE_HUSH_LOCAL
|
||||||
static int builtin_local(char **argv) FAST_FUNC;
|
static int builtin_local(char **argv) FAST_FUNC;
|
||||||
#endif
|
#endif
|
||||||
@ -919,6 +922,9 @@ static const struct built_in_command bltins1[] = {
|
|||||||
#if ENABLE_HUSH_HELP
|
#if ENABLE_HUSH_HELP
|
||||||
BLTIN("help" , builtin_help , NULL),
|
BLTIN("help" , builtin_help , NULL),
|
||||||
#endif
|
#endif
|
||||||
|
#if MAX_HISTORY
|
||||||
|
BLTIN("history" , builtin_history , "Show command history"),
|
||||||
|
#endif
|
||||||
#if ENABLE_HUSH_JOB
|
#if ENABLE_HUSH_JOB
|
||||||
BLTIN("jobs" , builtin_jobs , "List jobs"),
|
BLTIN("jobs" , builtin_jobs , "List jobs"),
|
||||||
#endif
|
#endif
|
||||||
@ -8627,6 +8633,14 @@ static int FAST_FUNC builtin_help(char **argv UNUSED_PARAM)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if MAX_HISTORY
|
||||||
|
static int FAST_FUNC builtin_history(char **argv UNUSED_PARAM)
|
||||||
|
{
|
||||||
|
show_history(G.line_input_state);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLE_HUSH_JOB
|
#if ENABLE_HUSH_JOB
|
||||||
static int FAST_FUNC builtin_jobs(char **argv UNUSED_PARAM)
|
static int FAST_FUNC builtin_jobs(char **argv UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user