aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/exec.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'worker/exec.mjs')
-rw-r--r--worker/exec.mjs15
1 files changed, 13 insertions, 2 deletions
diff --git a/worker/exec.mjs b/worker/exec.mjs
index 7d64cc3..fc0accd 100644
--- a/worker/exec.mjs
+++ b/worker/exec.mjs
@@ -1,12 +1,23 @@
import PHPWasm from "./php-wasm.js";
-process.once("message", async ({ code, input }) => {
+process.once("message", async ({ code: originalCode, input }) => {
const PRELUDE = `
define('STDIN', fopen('php://stdin', 'r'));
define('STDOUT', fopen('php://stdout', 'r'));
define('STDERR', fopen('php://stderr', 'r'));
`;
+
+ // remove php tag
+ let code;
+ if (originalCode.startsWith("<?php")) {
+ code = PRELUDE + originalCode.slice(5);
+ } else if (originalCode.startsWith("<?")) {
+ code = PRELUDE + originalCode.slice(2);
+ } else {
+ code = PRELUDE + originalCode;
+ }
+
const BUFFER_MAX = 1024;
let stdinPos = 0; // bytewise
@@ -52,7 +63,7 @@ process.once("message", async ({ code, input }) => {
let err;
let result;
try {
- result = ccall("php_wasm_run", "number", ["string"], [PRELUDE + code]);
+ result = ccall("php_wasm_run", "number", ["string"], [code]);
} catch (e) {
err = e;
}