You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2008/04/11 18:37:17 UTC
svn commit: r647217 - in
/commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec:
CommandLine.java launcher/VmsCommandLauncher.java
Author: sebb
Date: Fri Apr 11 09:37:11 2008
New Revision: 647217
URL: http://svn.apache.org/viewvc?rev=647217&view=rev
Log:
Fix nested VMS script handling (hopefully)
Modified:
commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/CommandLine.java
commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/launcher/VmsCommandLauncher.java
Modified: commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/CommandLine.java
URL: http://svn.apache.org/viewvc/commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/CommandLine.java?rev=647217&r1=647216&r2=647217&view=diff
==============================================================================
--- commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/CommandLine.java (original)
+++ commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/CommandLine.java Fri Apr 11 09:37:11 2008
@@ -51,6 +51,8 @@
*/
private Map substitutionMap;
+ private final boolean isFile;
+
/**
* Create a command line from a string.
*
@@ -99,6 +101,7 @@
* @param executable the executable
*/
public CommandLine(String executable) {
+ this.isFile=false;
setExecutable(executable);
}
@@ -108,6 +111,7 @@
* @param executable the executable
*/
public CommandLine(File executable) {
+ this.isFile=true;
setExecutable(executable.getAbsolutePath());
}
@@ -118,6 +122,10 @@
*/
public String getExecutable() {
return this.expandArgument(executable);
+ }
+
+ public boolean isFile(){
+ return isFile;
}
/**
Modified: commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/launcher/VmsCommandLauncher.java
URL: http://svn.apache.org/viewvc/commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/launcher/VmsCommandLauncher.java?rev=647217&r1=647216&r2=647217&view=diff
==============================================================================
--- commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/launcher/VmsCommandLauncher.java (original)
+++ commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/launcher/VmsCommandLauncher.java Fri Apr 11 09:37:11 2008
@@ -28,6 +28,7 @@
import java.util.Set;
import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.util.StringUtils;
/**
* A command launcher for VMS that writes the command to a temporary DCL script
@@ -89,7 +90,25 @@
}
}
- out.print("$ " + cmd.getExecutable());
+ final String command = cmd.getExecutable();
+ if (cmd.isFile()){// We assume it is it a script file
+ out.print("$ @");
+ // This is a bit crude, but seems to work
+ String parts[] = StringUtils.split(command,"/");
+ out.print(parts[0]); // device
+ out.print(":[");
+ out.print(parts[1]); // top level directory
+ final int lastPart = parts.length-1;
+ for(int i=2; i< lastPart; i++){
+ out.print(".");
+ out.print(parts[i]);
+ }
+ out.print("]");
+ out.print(parts[lastPart]);
+ } else {
+ out.print("$ ");
+ out.print(command);
+ }
String[] args = cmd.getArguments();
for (int i = 0; i < args.length; i++) {
out.println(" -");