nico        01/04/14 00:25:16

  Modified:    src/main/org/apache/tools/ant/taskdefs Execute.java
  Log:
  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 <[email protected]>
  
  Revision  Changes    Path
  1.16      +21 -2     
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Execute.java
  
  Index: Execute.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Execute.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Execute.java      2001/04/11 22:44:19     1.15
  +++ Execute.java      2001/04/14 07:25:14     1.16
  @@ -163,10 +163,29 @@
   
               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();
  
  
  

Reply via email to