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