repl: fix history truncation of long lines#15258
Open
amaanq wants to merge 1 commit intoNixOS:masterfrom
Open
Conversation
938adb3 to
0d5de78
Compare
Editline's `read_history` uses `fgets(buf, 256, fp)` internally, splitting any line longer than 255 characters into multiple history entries. This commit bypasses it with `std::getline` and `add_history` calls, which handle arbitrary lengths. GNU readline's `read_history` has no such limit and is left as-is, and `write_history` already writes full lines via `fprintf` so it needs no change either.
0d5de78 to
1c092de
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Editline's
read_historyusesfgets(buf, 256, fp)internally, splittingany line longer than 255 characters into multiple history entries. This
commit bypasses it with
std::getlineandadd_historycalls, whichhandle arbitrary lengths. GNU readline's
read_historyhas no such limitand is left as-is, and
write_historyalready writes full lines viafprintfso it needs no change either.Context
nix replsplits long lines inrepl-history#15162Add 👍 to pull requests you find important.
The Nix maintainer team uses a GitHub project board to schedule and track reviews.