Coverage Report - com.sun.tools.javafx.main.CommandLine
 
Classes in this File Line Coverage Branch Coverage Complexity
CommandLine
26%
6/23
40%
4/10
0
 
 1  
 /*
 2  
  * Copyright 1999-2007 Sun Microsystems, Inc.  All Rights Reserved.
 3  
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 4  
  *
 5  
  * This code is free software; you can redistribute it and/or modify it
 6  
  * under the terms of the GNU General Public License version 2 only, as
 7  
  * published by the Free Software Foundation.  Sun designates this
 8  
  * particular file as subject to the "Classpath" exception as provided
 9  
  * by Sun in the LICENSE file that accompanied this code.
 10  
  *
 11  
  * This code is distributed in the hope that it will be useful, but WITHOUT
 12  
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 13  
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 14  
  * version 2 for more details (a copy is included in the LICENSE file that
 15  
  * accompanied this code).
 16  
  *
 17  
  * You should have received a copy of the GNU General Public License version
 18  
  * 2 along with this work; if not, write to the Free Software Foundation,
 19  
  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 20  
  *
 21  
  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
 22  
  * CA 95054 USA or visit www.sun.com if you need additional information or
 23  
  * have any questions.
 24  
  */
 25  
 
 26  
 package com.sun.tools.javafx.main;
 27  
 
 28  
 import java.io.IOException;
 29  
 import java.io.Reader;
 30  
 import java.io.FileReader;
 31  
 import java.io.BufferedReader;
 32  
 import java.io.StreamTokenizer;
 33  
 import com.sun.tools.javac.util.ListBuffer;
 34  
 
 35  
 /**
 36  
  * Various utility methods for processing Java tool command line arguments.
 37  
  *
 38  
  *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
 39  
  *  you write code that depends on this, you do so at your own risk.
 40  
  *  This code and its internal interfaces are subject to change or
 41  
  *  deletion without notice.</b>
 42  
  */
 43  0
 public class CommandLine {
 44  
     /**
 45  
      * Process Win32-style command files for the specified command line
 46  
      * arguments and return the resulting arguments. A command file argument
 47  
      * is of the form '@file' where 'file' is the name of the file whose
 48  
      * contents are to be parsed for additional arguments. The contents of
 49  
      * the command file are parsed using StreamTokenizer and the original
 50  
      * '@file' argument replaced with the resulting tokens. Recursive command
 51  
      * files are not supported. The '@' character itself can be quoted with
 52  
      * the sequence '@@'.
 53  
      */
 54  
     public static String[] parse(String[] args)
 55  
         throws IOException
 56  
     {
 57  798
         ListBuffer<String> newArgs = new ListBuffer<String>();
 58  6196
         for (int i = 0; i < args.length; i++) {
 59  5398
             String arg = args[i];
 60  5398
             if (arg.length() > 1 && arg.charAt(0) == '@') {
 61  0
                 arg = arg.substring(1);
 62  0
                 if (arg.charAt(0) == '@') {
 63  0
                     newArgs.append(arg);
 64  
                 } else {
 65  0
                     loadCmdFile(arg, newArgs);
 66  
                 }
 67  
             } else {
 68  5398
                 newArgs.append(arg);
 69  
             }
 70  
         }
 71  798
         return newArgs.toList().toArray(new String[newArgs.length()]);
 72  
     }
 73  
 
 74  
     private static void loadCmdFile(String name, ListBuffer<String> args)
 75  
         throws IOException
 76  
     {
 77  0
         Reader r = new BufferedReader(new FileReader(name));
 78  0
         StreamTokenizer st = new StreamTokenizer(r);
 79  0
         st.resetSyntax();
 80  0
         st.wordChars(' ', 255);
 81  0
         st.whitespaceChars(0, ' ');
 82  0
         st.commentChar('#');
 83  0
         st.quoteChar('"');
 84  0
         st.quoteChar('\'');
 85  0
         while (st.nextToken() != st.TT_EOF) {
 86  0
             args.append(st.sval);
 87  
         }
 88  0
         r.close();
 89  0
     }
 90  
 }