lineedit: histfile can get emptied when CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
When CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is set to y, the histfile will get cleared if the total amount of history lines is less than MAX_HISTORY. Only if the histfile is not empty _and_ the amount of lines currently in memory are equal to or greater than MAX_HISTORY, history saving will work as expected with this feature enabled. Output from defconfig + CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y: $ echo "foo" > ~/.ash_history $ ./busybox ash ~/busybox/a $ echo "bar" > /dev/null ~/busybox/a $ exit $ cat ~/.ash_history $ Output with the patch applied and same config as above: $ echo "foo" > ~/.ash_history $ ./busybox ash ~/busybox/b $ echo "bar" > /dev/null ~/busybox/b $ exit $ cat ~/.ash_history foo echo "bar" > /dev/null exit $ Signed-off-by: Dennis Groenen <tj.groenen at gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
9d75370238
commit
deee356a62
@ -1352,8 +1352,7 @@ static void load_history(line_input_t *st_parm)
|
|||||||
/* fill temp_h[], retaining only last MAX_HISTORY lines */
|
/* fill temp_h[], retaining only last MAX_HISTORY lines */
|
||||||
memset(temp_h, 0, sizeof(temp_h));
|
memset(temp_h, 0, sizeof(temp_h));
|
||||||
idx = 0;
|
idx = 0;
|
||||||
if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT)
|
st_parm->cnt_history_in_file = 0;
|
||||||
st_parm->cnt_history_in_file = 0;
|
|
||||||
while ((line = xmalloc_fgetline(fp)) != NULL) {
|
while ((line = xmalloc_fgetline(fp)) != NULL) {
|
||||||
if (line[0] == '\0') {
|
if (line[0] == '\0') {
|
||||||
free(line);
|
free(line);
|
||||||
@ -1361,8 +1360,7 @@ static void load_history(line_input_t *st_parm)
|
|||||||
}
|
}
|
||||||
free(temp_h[idx]);
|
free(temp_h[idx]);
|
||||||
temp_h[idx] = line;
|
temp_h[idx] = line;
|
||||||
if (!ENABLE_FEATURE_EDITING_SAVE_ON_EXIT)
|
st_parm->cnt_history_in_file++;
|
||||||
st_parm->cnt_history_in_file++;
|
|
||||||
idx++;
|
idx++;
|
||||||
if (idx == st_parm->max_history)
|
if (idx == st_parm->max_history)
|
||||||
idx = 0;
|
idx = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user