nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit c2f2c659d9f9ccfe9c3f0605f2b5ef53b499f162
parent 9364bd6c8146499eff05451dda995b1b83c35a96
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Wed,  8 Jan 2020 10:49:19 +0100

tweaks: rename a parameter and invert its logic, and correct a comment

This changes the main injection routine in the same way that the prompt
injection routine was changed four years ago in commit e540053e.

Diffstat:
Msrc/nano.c | 11+++++------
Msrc/text.c | 13++++++-------
2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/src/nano.c b/src/nano.c @@ -1688,9 +1688,9 @@ void do_input(void) if (shortcut || get_key_buffer_len() == 0) { if (puddle != NULL) { /* Insert all bytes in the input buffer into the edit buffer - * at once, filtering out any low control codes. */ + * at once, filtering out any ASCII control codes. */ puddle[depth] = '\0'; - do_output(puddle, depth, FALSE); + do_output(puddle, depth, TRUE); /* Empty the input buffer. */ free(puddle); @@ -1775,9 +1775,8 @@ void do_input(void) } /* The user typed output_len multibyte characters. Add them to the edit - * buffer, filtering out all ASCII control characters if allow_cntrls is - * TRUE. */ -void do_output(char *output, size_t output_len, bool allow_cntrls) + * buffer, filtering out ASCII control characters when filtering is TRUE. */ +void do_output(char *output, size_t output_len, bool filtering) { char onechar[MAXCHARLEN]; int charlen; @@ -1804,7 +1803,7 @@ void do_output(char *output, size_t output_len, bool allow_cntrls) i += charlen; /* If controls are not allowed, ignore an ASCII control character. */ - if (!allow_cntrls && is_ascii_cntrl_char(*(output + i - charlen))) + if (filtering && is_ascii_cntrl_char(*(output + i - charlen))) continue; /* Make room for the new character and copy it into the line. */ diff --git a/src/text.c b/src/text.c @@ -69,7 +69,7 @@ void do_tab(void) { #ifdef ENABLE_COLOR if (openfile->syntax && openfile->syntax->tab) - do_output(openfile->syntax->tab, strlen(openfile->syntax->tab), TRUE); + do_output(openfile->syntax->tab, strlen(openfile->syntax->tab), FALSE); else #endif #ifndef NANO_TINY @@ -80,12 +80,12 @@ void do_tab(void) memset(spaces, ' ', length); spaces[length] = '\0'; - do_output(spaces, length, TRUE); + do_output(spaces, length, FALSE); free(spaces); } else #endif - do_output((char *)"\t", 1, TRUE); + do_output((char *)"\t", 1, FALSE); } #ifndef NANO_TINY @@ -3144,8 +3144,6 @@ void do_verbatim_input(void) else wipe_statusbar(); - /* Display all the verbatim characters at once, not filtering out - * control characters. */ output = charalloc(kbinput_len + 1); for (i = 0; i < kbinput_len; i++) @@ -3154,7 +3152,8 @@ void do_verbatim_input(void) free(kbinput); - do_output(output, kbinput_len, TRUE); + /* Insert the keystroke verbatim, without filtering control characters. */ + do_output(output, kbinput_len, FALSE); free(output); } @@ -3301,7 +3300,7 @@ void complete_a_word(void) #endif /* Inject the completion into the buffer. */ do_output(&completion[shard_length], - strlen(completion) - shard_length, FALSE); + strlen(completion) - shard_length, TRUE); #ifdef ENABLE_WRAPPING /* If needed, reenable wrapping and wrap the current line. */ if (was_set_wrapping) {