bodewig     2003/04/29 06:16:22

  Modified:    .        WHATSNEW
               src/main/org/apache/tools/ant/taskdefs/compilers
                        DefaultCompilerAdapter.java JavacExternal.java
  Log:
  From the JDK tool-docs for javac of JDK 1.4:
  
  > An argument file can include javac options and source filenames in
  > any combination. The arguments within a file can be space-separated
  > or newline-separated.
  
  that means, file names must be quoted if they contain spaces.  No idea
  whether this is true for JDK 1.2 or 1.3 as well (1.1 doesn't support
  @argfile).
  
  PR: 10499
  
  Revision  Changes    Path
  1.406     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.405
  retrieving revision 1.406
  diff -u -r1.405 -r1.406
  --- WHATSNEW  24 Apr 2003 13:02:53 -0000      1.405
  +++ WHATSNEW  29 Apr 2003 13:16:22 -0000      1.406
  @@ -109,6 +109,9 @@
   * <replaceregexp> didn't work for multi-byte encodings if byline was false.
     Bugzilla Report 19187.
   
  +* file names that include spaces need to be quoted inside the @argfile
  +  argument using forked <javac> and JDK 1.4.  Bugzilla Report 10499.
  +
   Other changes:
   --------------
   * Six new Clearcase tasks added.
  
  
  
  1.35      +24 -1     
ant/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
  
  Index: DefaultCompilerAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- DefaultCompilerAdapter.java       7 Mar 2003 11:23:04 -0000       1.34
  +++ DefaultCompilerAdapter.java       29 Apr 2003 13:16:22 -0000      1.35
  @@ -398,6 +398,25 @@
        * system.
        */
       protected int executeExternalCompile(String[] args, int firstFileName) {
  +        return executeExternalCompile(args, firstFileName, false);
  +    }
  +
  +    /**
  +     * Do the compile with the specified arguments.
  +     * @param args - arguments to pass to process on command line
  +     * @param firstFileName - index of the first source file in args,
  +     * if the index is negative, no temporary file will ever be
  +     * created, but this may hit the command line length limit on your
  +     * system.
  +     * @param quoteFilenames - if set to true, filenames containing
  +     * spaces will be quoted when they appear in the external file.
  +     * This is necessary when running JDK 1.4's javac and probably
  +     * others.
  +     *
  +     * @since Ant 1.6
  +     */
  +    protected int executeExternalCompile(String[] args, int firstFileName,
  +                                         boolean quoteFiles) {
           String[] commandArray = null;
           File tmpFile = null;
   
  @@ -418,7 +437,11 @@
                       tmpFile = fileUtils.createTempFile("files", "", userDir);
                       out = new PrintWriter(new FileWriter(tmpFile));
                       for (int i = firstFileName; i < args.length; i++) {
  -                        out.println(args[i]);
  +                        if (quoteFiles && args[i].indexOf(" ") > -1) {
  +                            out.println("\"" + args[i] + "\"");
  +                        } else {
  +                            out.println(args[i]);
  +                        }
                       }
                       out.flush();
                       commandArray = new String[firstFileName + 1];
  
  
  
  1.9       +5 -2      
ant/src/main/org/apache/tools/ant/taskdefs/compilers/JavacExternal.java
  
  Index: JavacExternal.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/compilers/JavacExternal.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JavacExternal.java        10 Feb 2003 14:13:42 -0000      1.8
  +++ JavacExternal.java        29 Apr 2003 13:16:22 -0000      1.9
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -79,7 +79,10 @@
           logAndAddFilesToCompile(cmd);
   
           return 
  -            executeExternalCompile(cmd.getCommandline(), firstFileName) == 0;
  +            executeExternalCompile(cmd.getCommandline(), firstFileName,
  +                                   !assumeJava11() && !assumeJava12() 
  +                                   && !assumeJava13()) 
  +            == 0;
       }
   
   }
  
  
  

Reply via email to