diff options
author | Jan Huwald <jh@sotun.de> | 2013-04-22 13:42:11 (GMT) |
---|---|---|
committer | Jan Huwald <jh@sotun.de> | 2013-04-22 13:42:11 (GMT) |
commit | f788d4c48f2d94fcfd73a093ab33d734ab427cb8 (patch) | |
tree | be4c00d562ec75f746736b5e0788f2847f7b8baa /ExternalInterpreter.java |
Initial commit
Diffstat (limited to 'ExternalInterpreter.java')
-rw-r--r-- | ExternalInterpreter.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ExternalInterpreter.java b/ExternalInterpreter.java new file mode 100644 index 0000000..04776a8 --- /dev/null +++ b/ExternalInterpreter.java @@ -0,0 +1,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; +} |