From 4ee2e5c268b44ad68c49168457f64b76e4d64a32 Mon Sep 17 00:00:00 2001 From: Nico Seessle Date: Sat, 14 Apr 2001 07:25:14 +0000 Subject: [PATCH] The completion of the fix for Bug #975: include proper handling of parsing chunks of data returned by the external environment listing program (whose command is returned by getProcEnvCommand()). UNIX environment variables can contain text with embedded newlines. Submitted by; Daniel Rall git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268942 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/taskdefs/Execute.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index e26de50bb..1ddb51957 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -163,10 +163,29 @@ public class Execute { BufferedReader in = new BufferedReader(new StringReader(out.toString())); - String line; + String var = null; + String line, lineSep = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { - procEnvironment.addElement(line); + if (line.indexOf('=') == -1) { + // Chunk part of previous env var (UNIX env vars can + // contain embedded new lines). + if (var == null) { + var = lineSep + line; + } + else { + var += lineSep + line; + } + } + else { + // New env var...append the previous one if we have it. + if (var != null) { + procEnvironment.addElement(var); + } + var = line; + } } + // Since we "look ahead" before adding, there's one last env var. + procEnvironment.addElement(var); } catch (java.io.IOException exc) { exc.printStackTrace();