summaryrefslogtreecommitdiff
path: root/ExternalInterpreter.java
diff options
context:
space:
mode:
Diffstat (limited to 'ExternalInterpreter.java')
-rw-r--r--ExternalInterpreter.java33
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;
+}
contact: Jan Huwald // Impressum