src/share/classes/com/sun/tools/javah/JavahTask.java

changeset 728
895bea45a3e8
parent 712
a1d31ab7b525
child 1054
111bbf1ad913
     1.1 --- a/src/share/classes/com/sun/tools/javah/JavahTask.java	Fri Oct 29 12:47:49 2010 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javah/JavahTask.java	Fri Oct 29 13:12:38 2010 -0700
     1.3 @@ -26,6 +26,7 @@
     1.4  package com.sun.tools.javah;
     1.5  
     1.6  import java.io.File;
     1.7 +import java.io.FileNotFoundException;
     1.8  import java.io.IOException;
     1.9  import java.io.OutputStream;
    1.10  import java.io.PrintWriter;
    1.11 @@ -74,6 +75,7 @@
    1.12  import static javax.tools.Diagnostic.Kind.*;
    1.13  
    1.14  import com.sun.tools.javac.code.Symbol.CompletionFailure;
    1.15 +import com.sun.tools.javac.main.CommandLine;
    1.16  
    1.17  /**
    1.18   * Javah generates support files for native methods.
    1.19 @@ -362,7 +364,7 @@
    1.20          if (fileManager == null)
    1.21              fileManager = getDefaultFileManager(diagnosticListener, log);
    1.22  
    1.23 -        Iterator<String> iter = args.iterator();
    1.24 +        Iterator<String> iter = expandAtArgs(args).iterator();
    1.25          noArgs = !iter.hasNext();
    1.26  
    1.27          while (iter.hasNext()) {
    1.28 @@ -416,6 +418,18 @@
    1.29          throw new BadArgs("err.unknown.option", name).showUsage(true);
    1.30      }
    1.31  
    1.32 +    private Iterable<String> expandAtArgs(Iterable<String> args) throws BadArgs {
    1.33 +        try {
    1.34 +            List<String> l = new ArrayList<String>();
    1.35 +            for (String arg: args) l.add(arg);
    1.36 +            return Arrays.asList(CommandLine.parse(l.toArray(new String[l.size()])));
    1.37 +        } catch (FileNotFoundException e) {
    1.38 +            throw new BadArgs("at.args.file.not.found", e.getLocalizedMessage());
    1.39 +        } catch (IOException e) {
    1.40 +            throw new BadArgs("at.args.io.exception", e.getLocalizedMessage());
    1.41 +        }
    1.42 +    }
    1.43 +
    1.44      public Boolean call() {
    1.45          return run();
    1.46      }
    1.47 @@ -607,8 +621,8 @@
    1.48              }
    1.49  
    1.50          };
    1.51 +    }
    1.52  
    1.53 -    }
    1.54      private String getMessage(String key, Object... args) {
    1.55          return getMessage(task_locale, key, args);
    1.56      }

mercurial