EXEC_1_0_0 | Tue Feb 24 01:03:17 JST 2009 | 7c5d81 | 41 | private final Vector arguments = new Vector(); |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 66 | return parse(line, null); |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 79 | if (line == null) { |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 80 | throw new IllegalArgumentException("Command line can not be null"); |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 81 | } else if (line.trim().length() == 0) { |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 82 | throw new IllegalArgumentException("Command line can not be empty"); |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 84 | final String[] tmp = translateCommandline(line); |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 86 | final CommandLine cl = new CommandLine(tmp[0]); |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 87 | cl.setSubstitutionMap(substitutionMap); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 88 | for (int i = 1; i < tmp.length; i++) { |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 89 | cl.addArgument(tmp[i]); |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 92 | return cl; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 101 | public CommandLine(final String executable) { |
sandbox | Sat Apr 12 01:37:11 JST 2008 | 7aa110 | 102 | this.isFile=false; |
EXEC_1_0_0 | Tue Feb 24 01:03:17 JST 2009 | 7c5d81 | 103 | this.executable=getExecutable(executable); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 104 | } |
EXEC_1_0_0_RC1 | Sat Jul 19 05:40:44 JST 2008 | b95e06 | 148 | return StringUtils.fixFileSeparatorChar(expandArgument(executable)); |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 167 | return this.addArguments(addArguments, true); |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 178 | if (addArguments != null) { |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 179 | for (int i = 0; i < addArguments.length; i++) { |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 180 | addArgument(addArguments[i], handleQuoting); |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 184 | return this; |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 196 | return this.addArguments(addArguments, true); |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 209 | if (addArguments != null) { |
1.2-RC1 | Sun Dec 29 01:13:03 JST 2013 | 69c008 | 210 | final String[] argumentsArray = translateCommandline(addArguments); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 211 | addArguments(argumentsArray, handleQuoting); |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 214 | return this; |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 225 | return this.addArgument(argument, true); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 237 | if (argument == null) |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 239 | return this; |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 244 | if (handleQuoting) |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 246 | StringUtils.quoteArgument(argument); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 249 | arguments.add(new Argument(argument, handleQuoting)); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 250 | return this; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 262 | final String[] result = new String[arguments.size()]; |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 264 | for (int i=0; i |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 265 | currArgument = (Argument) arguments.get(i); |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 266 | expandedArgument = expandArgument(currArgument.getValue()); |
1.2-RC1 | Sat Dec 28 23:18:57 JST 2013 | 01bfe9 | 267 | result[i] = currArgument.isHandleQuoting() ? StringUtils.quoteArgument(expandedArgument) : expandedArgument; |
COMMONS_EXEC_1_1_RC1 | Wed Sep 22 04:11:01 JST 2010 | 351ae2 | 270 | return result; |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 277 | return substitutionMap; |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 287 | this.substitutionMap = substitutionMap; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 288 | } |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 296 | final String[] result = new String[arguments.size() + 1]; |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 297 | result[0] = this.getExecutable(); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 298 | System.arraycopy(getArguments(), 0, result, 1, result.length-1); |
EXEC_1_0_0_RC1 | Sat Jul 19 05:23:35 JST 2008 | 43d166 | 299 | return result; |
1.2-RC1 | Tue Oct 11 06:47:27 JST 2011 | 0cce52 | 310 | return "[" + StringUtils.toString(toStrings(), ", ") + "]"; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 322 | final StringBuffer stringBuffer = StringUtils.stringSubstitution(argument, this.getSubstitutionMap(), true); |
sandbox | Sat Dec 08 01:38:27 JST 2007 | 29abee | 323 | return stringBuffer.toString(); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 335 | if (toProcess == null || toProcess.length() == 0) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 342 | final int normal = 0; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 343 | final int inQuote = 1; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 344 | final int inDoubleQuote = 2; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 345 | int state = normal; |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 346 | final StringTokenizer tok = new StringTokenizer(toProcess, "\"\' ", true); |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 347 | final Vector v = new Vector(); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 348 | StringBuffer current = new StringBuffer(); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 349 | boolean lastTokenHasBeenQuoted = false; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 351 | while (tok.hasMoreTokens()) { |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 352 | final String nextTok = tok.nextToken(); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 353 | switch (state) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 355 | if ("\'".equals(nextTok)) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 356 | lastTokenHasBeenQuoted = true; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 357 | state = normal; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 359 | current.append(nextTok); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 361 | break; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 363 | if ("\"".equals(nextTok)) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 364 | lastTokenHasBeenQuoted = true; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 365 | state = normal; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 367 | current.append(nextTok); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 369 | break; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 371 | if ("\'".equals(nextTok)) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 372 | state = inQuote; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 373 | } else if ("\"".equals(nextTok)) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 374 | state = inDoubleQuote; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 375 | } else if (" ".equals(nextTok)) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 376 | if (lastTokenHasBeenQuoted || current.length() != 0) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 377 | v.addElement(current.toString()); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 378 | current = new StringBuffer(); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 381 | current.append(nextTok); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 383 | lastTokenHasBeenQuoted = false; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 386 | } |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 388 | if (lastTokenHasBeenQuoted || current.length() != 0) { |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 389 | v.addElement(current.toString()); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 392 | if (state == inQuote || state == inDoubleQuote) { |
sandbox | Sun Mar 12 21:07:59 JST 2006 | a3538e | 393 | throw new IllegalArgumentException("Unbalanced quotes in " |
1.2-RC1 | Sat Dec 28 23:20:34 JST 2013 | c1410e | 397 | final String[] args = new String[v.size()]; |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 398 | v.copyInto(args); |
sandbox | Sun Mar 12 04:18:50 JST 2006 | 18cb09 | 399 | return args; |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 410 | if (executable == null) { |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 411 | throw new IllegalArgumentException("Executable can not be null"); |
1.2-RC1 | Sat Dec 28 23:35:41 JST 2013 | 7fc828 | 412 | } else if (executable.trim().length() == 0) { |
sandbox | Wed Dec 05 07:15:42 JST 2007 | 0b6989 | 413 | throw new IllegalArgumentException("Executable can not be empty"); |
EXEC_1_0_0 | Tue Feb 24 01:03:17 JST 2009 | 7c5d81 | 415 | return StringUtils.fixFileSeparatorChar(executable); |