edit: Limit maximum number of history entries to 100
This commit is contained in:
parent
70de7d56fe
commit
566aef60ab
1 changed files with 11 additions and 2 deletions
|
@ -25,6 +25,8 @@ static char cmdbuf[CMD_BUF_LEN];
|
||||||
static int cmdbuf_pos = 0;
|
static int cmdbuf_pos = 0;
|
||||||
static int cmdbuf_len = 0;
|
static int cmdbuf_len = 0;
|
||||||
|
|
||||||
|
#define HISTORY_MAX 100
|
||||||
|
|
||||||
struct edit_history {
|
struct edit_history {
|
||||||
struct dl_list list;
|
struct dl_list list;
|
||||||
char str[1];
|
char str[1];
|
||||||
|
@ -176,8 +178,8 @@ static void clear_right(void)
|
||||||
|
|
||||||
static void history_add(const char *str)
|
static void history_add(const char *str)
|
||||||
{
|
{
|
||||||
struct edit_history *h, *match = NULL;
|
struct edit_history *h, *match = NULL, *last = NULL;
|
||||||
size_t len;
|
size_t len, count = 0;
|
||||||
|
|
||||||
if (str[0] == '\0')
|
if (str[0] == '\0')
|
||||||
return;
|
return;
|
||||||
|
@ -187,6 +189,8 @@ static void history_add(const char *str)
|
||||||
match = h;
|
match = h;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
last = h;
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match) {
|
if (match) {
|
||||||
|
@ -196,6 +200,11 @@ static void history_add(const char *str)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (count >= HISTORY_MAX && last) {
|
||||||
|
dl_list_del(&last->list);
|
||||||
|
os_free(last);
|
||||||
|
}
|
||||||
|
|
||||||
len = os_strlen(str);
|
len = os_strlen(str);
|
||||||
h = os_zalloc(sizeof(*h) + len);
|
h = os_zalloc(sizeof(*h) + len);
|
||||||
if (h == NULL)
|
if (h == NULL)
|
||||||
|
|
Loading…
Reference in a new issue