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
master
David Lawrence Ramsey 2004-11-07 18:09:41 +00:00
parent 7105cf4f8e
commit c15802f8c3
1 changed files with 37 additions and 36 deletions

View File

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