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-d3aeb78583b8master
parent
81371020bb
commit
d97649859d
|
@ -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)
|
||||
|
|
22
src/files.c
22
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
|
||||
|
|
Loading…
Reference in New Issue