|
@@ -91,7 +91,7 @@
|
|
|
return new String(sys_string());
|
|
|
}
|
|
|
|
|
|
- static function escapeArgument( arg : String ) : String {
|
|
|
+ static function escapeArgument( arg : String, windows : Bool ) : String {
|
|
|
var ok = true;
|
|
|
for( i in 0...arg.length )
|
|
|
switch( arg.charCodeAt(i) ) {
|
|
@@ -99,19 +99,20 @@
|
|
|
ok = false;
|
|
|
case 0, 13, 10: // [eof] [cr] [lf]
|
|
|
arg = arg.substr(0,i);
|
|
|
+ break;
|
|
|
}
|
|
|
if( ok )
|
|
|
return arg;
|
|
|
- return '"'+arg.split('\\').join("\\\\").split('"').join('\\"')+'"';
|
|
|
+ return windows ? '"'+arg.split('"').join('"""').split("%").join('"%"')+'"' : "'"+arg.split("'").join("'\\''")+"'";
|
|
|
}
|
|
|
|
|
|
public static function command( cmd : String, ?args : Array<String> ) : Int {
|
|
|
+ var win = systemName() == "Windows";
|
|
|
+ cmd = escapeArgument(cmd, win);
|
|
|
if( args != null ) {
|
|
|
- cmd = escapeArgument(cmd);
|
|
|
for( a in args )
|
|
|
- cmd += " "+escapeArgument(a);
|
|
|
+ cmd += " "+escapeArgument(a, win);
|
|
|
}
|
|
|
- if (systemName() == "Windows") cmd = '"$cmd"';
|
|
|
return sys_command(untyped cmd.__s);
|
|
|
}
|
|
|
|