|
|
|
@ -369,9 +369,11 @@ read_history_range (const char *filename, int from, int to) |
|
|
|
} |
|
|
|
|
|
|
|
has_timestamps = HIST_TIMESTAMP_START (buffer); |
|
|
|
history_multiline_entries += has_timestamps && history_write_timestamps; |
|
|
|
history_multiline_entries += has_timestamps && history_write_timestamps; |
|
|
|
|
|
|
|
/* Skip lines until we are at FROM. */ |
|
|
|
if (has_timestamps) |
|
|
|
last_ts = buffer; |
|
|
|
for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) |
|
|
|
if (*line_end == '\n') |
|
|
|
{ |
|
|
|
@ -380,7 +382,18 @@ read_history_range (const char *filename, int from, int to) |
|
|
|
line. We should check more extensively here... */ |
|
|
|
if (HIST_TIMESTAMP_START(p) == 0) |
|
|
|
current_line++; |
|
|
|
else |
|
|
|
last_ts = p; |
|
|
|
line_start = p; |
|
|
|
/* If we are at the last line (current_line == from) but we have
|
|
|
|
timestamps (has_timestamps), then line_start points to the |
|
|
|
text of the last command, and we need to skip to its end. */ |
|
|
|
if (current_line >= from && has_timestamps) |
|
|
|
{ |
|
|
|
for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++) |
|
|
|
; |
|
|
|
line_start = (*line_end == '\n') ? line_end + 1 : line_end; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/* If there are lines left to gobble, then gobble them now. */ |
|
|
|
|