]> git.wh0rd.org Git - nano.git/commitdiff
in do_insertfile(), properly handle files that contain nulls
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 27 Nov 2006 04:57:22 +0000 (04:57 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Mon, 27 Nov 2006 04:57:22 +0000 (04:57 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3974 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/files.c

index 6b9e4056fc72a0d9a7027125a7800fd4d23e5424..564d0ecbde53b07b1ae93444be6fc1f8cd3f2142 100644 (file)
--- 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)
index 793c9b28f9b92263762d9e16d19ae5a24f75501f..c22b5d33057c694dd2c5731eaf3340257c9c4713 100644 (file)
@@ -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