bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] printing multiple heredocs in list


From: Grisha Levit
Subject: [PATCH] printing multiple heredocs in list
Date: Thu, 29 Jun 2023 04:01:18 -0400

If there are multiple commands in a row that each require printing the
connector prior to the heredoc body, the connector ends up in the wrong
place for commands after the first:

fun() {
cat <<EOF &&
EOF
cat <<EOF &&
EOF
cat <<EOF
EOF
}
declare -f fun

fun ()
{
    cat <<EOF &&
EOF
 cat <<EOF
EOF
 && cat <<EOF
EOF

}

This fix worked for every test case I could think of but I can't say
I'm groking all the printing logic yet.
---
 print_cmd.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/print_cmd.c b/print_cmd.c
index d7c5bbf9..a38c1b3a 100644
--- a/print_cmd.c
+++ b/print_cmd.c
@@ -154,6 +154,7 @@ make_command_string (COMMAND *command)
   command_string_index = was_heredoc = 0;
   deferred_heredocs = 0;
   make_command_string_internal (command);
+  PRINT_DEFERRED_HEREDOCS ("");
   return (the_printed_command);
 }

@@ -327,7 +328,8 @@ make_command_string_internal (COMMAND *command)
      }

    make_command_string_internal (command->value.Connection->second);
-   PRINT_DEFERRED_HEREDOCS ("");
+   if (was_heredoc)
+     PRINT_DEFERRED_HEREDOCS ("");
    printing_connection--;
    break;

-- 
2.41.0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]