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:
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) {