Process proc = null;
int bufRead = -1;
- //create query arguments
- StringBuilder cmdAndArgs = new StringBuilder();
- if (command.indexOf(" ") < 0) {
- cmdAndArgs.append(command);
- } else {
- // Spaces used as delimiter, so need to use quotes
- cmdAndArgs.append("\"");
- cmdAndArgs.append(command);
- cmdAndArgs.append("\"");
- }
+ String[] cmdAndArgs = new String[params.size() + 2];
+
+ cmdAndArgs[0] = cgiExecutable;
+
+ cmdAndArgs[1] = command;
+ //create query arguments
for (int i=0; i < params.size(); i++) {
- cmdAndArgs.append(" ");
- String param = params.get(i);
- if (param.indexOf(" ") < 0) {
- cmdAndArgs.append(param);
- } else {
- // Spaces used as delimiter, so need to use quotes
- cmdAndArgs.append("\"");
- cmdAndArgs.append(param);
- cmdAndArgs.append("\"");
- }
+ cmdAndArgs[i + 2] = params.get(i);
}
- StringBuilder command = new StringBuilder(cgiExecutable);
- command.append(" ");
- command.append(cmdAndArgs.toString());
- cmdAndArgs = command;
-
try {
rt = Runtime.getRuntime();
- proc = rt.exec(cmdAndArgs.toString(), hashToStringArray(env), wd);
+ proc = rt.exec(cmdAndArgs, hashToStringArray(env), wd);
String sContentLength = env.get("CONTENT_LENGTH");