Hi!
While building OpenJDK b16 I noticed that jar does not support @
arguments. OpenJDK e.g. uses it to import the binary plug files.
This patch adds support for @filelist, where the file filelist may only
contain files and not options, as the spec says.
Should I commit that (incomplete) patch?
- twisti
---
Index: tools/gnu/classpath/tools/jar/Main.java
===================================================================
RCS file: /cvsroot/classpath/classpath/tools/gnu/classpath/tools/jar/Main.java,v
retrieving revision 1.9
diff -u -3 -p -r1.9 Main.java
--- tools/gnu/classpath/tools/jar/Main.java 31 Jan 2007 17:05:34 -0000
1.9
+++ tools/gnu/classpath/tools/jar/Main.java 23 Jul 2007 18:31:19 -0000
@@ -47,6 +47,8 @@ import gnu.classpath.tools.getopt.Parser
import java.io.BufferedReader;
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.text.MessageFormat;
@@ -102,14 +104,51 @@ public class Main
public void notifyFile(String fileArgument)
{
Entry entry;
+
+ if (fileArgument.charAt(0) == '@')
+ {
+ BufferedReader br = null;
+ String filename;
+
+ try
+ {
+ br =
+ new BufferedReader(new FileReader(fileArgument.substring(1)));
+ }
+ catch (FileNotFoundException fnfe)
+ {
+ System.err.println(fnfe);
+ System.exit(1);
+ }
+
+ try
+ {
+ while ((filename = br.readLine()) != null)
+ addEntry(filename);
+ }
+ catch (IOException ioe)
+ {
+ ioe.printStackTrace();
+ }
+ }
+ else
+ {
+ addEntry(fileArgument);
+ }
+ }
+
+ private final void addEntry(String filename)
+ {
+ Entry entry;
+
if (changedDirectory != null)
{
- entry = new Entry(new File(changedDirectory, fileArgument),
- fileArgument);
+ entry = new Entry(new File(changedDirectory, filename),
+ filename);
changedDirectory = null;
}
else
- entry = new Entry(new File(fileArgument));
+ entry = new Entry(new File(filename));
entries.add(entry);
}
}