bodewig 2003/07/25 02:44:52 Modified: src/main/org/apache/tools/ant/taskdefs/optional/javacc JJTree.java Log: backwards compatibility fix submitted by Jene Jasper Revision Changes Path 1.23 +19 -10 ant/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java Index: JJTree.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- JJTree.java 23 Jul 2003 14:12:12 -0000 1.22 +++ JJTree.java 25 Jul 2003 09:44:49 -0000 1.23 @@ -72,7 +72,7 @@ * Runs the JJTree compiler compiler. * * @author [EMAIL PROTECTED] - * @author Michael Saunders + * @author Michael Saunders * <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> */ public class JJTree extends Task { @@ -232,9 +232,9 @@ if (target == null || !target.isFile()) { throw new BuildException("Invalid target: " + target); } - + if (outputFile != null) { - cmdl.createArgument().setValue("-" + OUTPUT_FILE + ":" + cmdl.createArgument().setValue("-" + OUTPUT_FILE + ":" + outputFile.replace('\\', '/')); } @@ -242,21 +242,21 @@ // use the directory containing the target as the output directory if (outputDirectory == null) { - javaFile = new File(createOutputFileName(target, outputFile, + javaFile = new File(createOutputFileName(target, outputFile, null)); } else { if (!outputDirectory.isDirectory()) { throw new BuildException("'outputdirectory' " + outputDirectory + " is not a directory."); } - + // convert backslashes to slashes, otherwise jjtree will // put this as comments and this seems to confuse javacc cmdl.createArgument().setValue("-OUTPUT_DIRECTORY:" + outputDirectory.getAbsolutePath() .replace('\\', '/')); - - javaFile = new File(createOutputFileName(target, outputFile, + + javaFile = new File(createOutputFileName(target, outputFile, outputDirectory .getPath())); } @@ -269,7 +269,7 @@ } cmdl.createArgument().setValue(target.getAbsolutePath()); - cmdl.setClassname(JavaCC.getMainClass(javaccHome, + cmdl.setClassname(JavaCC.getMainClass(javaccHome, JavaCC.TASKDEF_TYPE_JJTREE)); final Path classpath = cmdl.createClasspath(getProject()); @@ -319,15 +319,24 @@ if (currentSuffix.equals(DEFAULT_SUFFIX)) { optionalOutputFile = jjtreeFile + DEFAULT_SUFFIX; } else { - optionalOutputFile = jjtreeFile.substring(0, suffixPos) + optionalOutputFile = jjtreeFile.substring(0, suffixPos) + DEFAULT_SUFFIX; } } } if ((outputDirectory == null) || outputDirectory.equals("")) { - outputDirectory = getProject().getBaseDir().getAbsolutePath(); + if (isAbsolute(optionalOutputFile)) { + return optionalOutputFile.replace('\\','/'); + } else { + outputDirectory = getProject().getBaseDir().getAbsolutePath(); + } } + return (outputDirectory + "/" + optionalOutputFile).replace('\\', '/'); + } + + private boolean isAbsolute(String fileName) { + return (fileName.startsWith("/") || (new File(fileName).isAbsolute())); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]