From c15802f8c35f77a413693448eb337f7c8486974d Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Sun, 7 Nov 2004 18:09:41 +0000
Subject: [PATCH] partition the filestruct properly when executing a command

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2082 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 src/files.c | 61 +++++++++++++++++++++++++++--------------------------
 1 file changed, 31 insertions(+), 30 deletions(-)

diff --git a/src/files.c b/src/files.c
index e244252d..1d0b11e8 100644
--- a/src/files.c
+++ b/src/files.c
@@ -577,52 +577,53 @@ void do_insertfile(
 		execute = !execute;
 		continue;
 	    }
-
-	    if (execute)
-		execute_command(answer);
-	    else {
 #endif
-		answer = mallocstrassn(answer, real_dir_from_tilde(answer));
 
 #ifdef ENABLE_MULTIBUFFER
-		if (!ISSET(MULTIBUFFER)) {
+	    if (!ISSET(MULTIBUFFER)) {
 #endif
-		    /* If we're not inserting into a new buffer,
-		     * partition the filestruct so that it contains no
-		     * text and hence looks like a new buffer, and set
-		     * edittop to the top of the partition. */
-		    filepart = partition_filestruct(current, current_x,
+		/* If we're not inserting into a new buffer, partition
+		 * the filestruct so that it contains no text and hence
+		 * looks like a new buffer, and set edittop to the top
+		 * of the partition. */
+		filepart = partition_filestruct(current, current_x,
 			current, current_x);
-		    edittop = fileage;
+		edittop = fileage;
 #ifdef ENABLE_MULTIBUFFER
-		}
+	    }
 #endif
 
+#ifndef NANO_SMALL
+	    if (execute)
+		execute_command(answer);
+	    else {
+#endif
+		answer = mallocstrassn(answer, real_dir_from_tilde(answer));
 		load_buffer(answer);
+#ifndef NANO_SMALL
+	    }
+#endif
 
 #ifdef ENABLE_MULTIBUFFER
-		if (!ISSET(MULTIBUFFER))
+	    if (!ISSET(MULTIBUFFER))
 #endif
-		{
-		    filestruct *top_save = fileage;
+	    {
+		filestruct *top_save = fileage;
 
-		    /* If we're not inserting into a new buffer,
-		     * unpartition the filestruct so that it contains
-		     * all the text again.  Note that we've replaced the
-		     * non-text originally in the partition with the
-		     * text in the inserted file. */
-		    unpartition_filestruct(filepart);
+		/* If we're not inserting into a new buffer, unpartition
+		 * the filestruct so that it contains all the text
+		 * again.  Note that we've replaced the non-text
+		 * originally in the partition with the text in the
+		 * inserted file/executed command output. */
+		unpartition_filestruct(filepart);
 
-		    /* Renumber starting with the beginning line of the
-		     * old partition. */
-		    renumber(top_save);
+		/* Renumber starting with the beginning line of the old
+		 * partition. */
+		renumber(top_save);
 
-		    /* Set edittop back to what it was before. */
-		    edittop = edittop_save;
-		}
-#ifndef NANO_SMALL
+		/* Set edittop back to what it was before. */
+		edittop = edittop_save;
 	    }
-#endif
 
 #ifdef ENABLE_MULTIBUFFER
 	    if (ISSET(MULTIBUFFER)) {
-- 
GitLab