nano

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

commit d97649859dc9058443bcb77f3abdf94877240b01
parent 81371020bb5f2e66a9bcdf3a25abe33c92a9f10d
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date:   Mon, 27 Nov 2006 04:57:22 +0000

in do_insertfile(), properly handle files that contain nulls


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3974 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
MChangeLog | 3++-
Msrc/files.c | 22+++++++++++-----------
2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -3,7 +3,8 @@ CVS code - - Miscellaneous comment fixes. (DLR) - files.c: do_insertfile() - - Properly handle executable commands that contain nulls. (DLR) + - Properly handle files and executable commands that contain + nulls. (DLR) - nano.h: - Rename NANO_ALT_REPLACE_KEY to NANO_REPLACE_ALTKEY, for consistency. (DLR) diff --git a/src/files.c b/src/files.c @@ -683,7 +683,7 @@ void do_insertfile( char *ans = mallocstrcpy(NULL, ""); /* The last answer the user typed on the statusbar. */ filestruct *edittop_save = openfile->edittop; - size_t current_x_save = openfile->current_x; + size_t current_x_save = openfile->current_x, answer_len; ssize_t current_y_save = openfile->current_y; bool at_edittop = FALSE; /* Whether we're at the top of the edit window. */ @@ -800,27 +800,23 @@ void do_insertfile( } #endif + answer_len = strlen(answer); + + /* Convert newlines to nulls, just before we execute a + * command. */ + sunder(answer); + #ifndef NANO_TINY if (execute) { - size_t answer_len = strlen(answer); - #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) /* Open a blank buffer. */ open_buffer(""); #endif - /* Convert newlines to nulls, just before we execute a - * command. */ - sunder(answer); - /* Save the command's output in the current buffer. */ execute_command(answer); - /* Convert nulls to newlines. answer_len is answer's - * real length. */ - unsunder(answer, answer_len); - #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) { /* Move back to the beginning of the first line of @@ -844,6 +840,10 @@ void do_insertfile( } #endif + /* Convert nulls to newlines. answer_len is answer's real + * length. */ + unsunder(answer, answer_len); + #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) /* Update the screen to account for the current