blob: 04776a851d3e6ef85aee7220700a271a5f2069a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// because writing java violates human rights
import java.lang.Runtime;
class ExternalInterpreter extends AbstractInterpreter {
ExternalInterpreter(String cmdName) {
this.cmdName = cmdName;
}
public String eval(String code, String param) {
java.lang.StringBuilder res = new java.lang.StringBuilder();
try {
// exec program capturing its standart output
String[] cmd = {"timeout", "-s", "9", "1", cmdName, code, param};
Process p = java.lang.Runtime.getRuntime().exec(cmd);
java.io.InputStream s = p.getInputStream();
int c;
// read stdout
while (((c = s.read()) >= 0) && (res.length() < code.length())) {
switch (c) {
case '1': res.append("1"); break;
default: res.append("0");
}
}
// pad string
while (res.length() < code.length())
res.append("0");
} catch (java.io.IOException e) {}
return res.toString();
}
String cmdName;
}
|