mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-04-22 20:48:01 +00:00
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
Module.stdinData = null;
|
|
Module.stdinDataPosition = 0;
|
|
Module.stdoutData = [];
|
|
Module.stderrData = [];
|
|
|
|
// Method to read all collected stdout data
|
|
Module.readFromStdout = function () {
|
|
if (!Module.stdoutData.length) return "";
|
|
const decoder = new TextDecoder("utf-8");
|
|
const data = decoder.decode(new Uint8Array(Module.stdoutData));
|
|
Module.stdoutData = [];
|
|
return data;
|
|
};
|
|
|
|
// Method to read all collected stderr data
|
|
Module.readFromStderr = function () {
|
|
if (!Module.stderrData.length) return "";
|
|
const decoder = new TextDecoder("utf-8");
|
|
const data = decoder.decode(new Uint8Array(Module.stderrData));
|
|
Module.stderrData = [];
|
|
return data;
|
|
};
|
|
|
|
// Method to write data to stdin
|
|
Module.writeToStdin = function (data) {
|
|
const encoder = new TextEncoder();
|
|
Module.stdinData = encoder.encode(data);
|
|
Module.stdinDataPosition = 0;
|
|
};
|
|
|
|
// Override the `preRun` method to customize file system initialization
|
|
Module.preRun = Module.preRun || [];
|
|
Module.preRun.push(function () {
|
|
// Custom stdin function
|
|
function customStdin() {
|
|
if (
|
|
!Module.stdinData ||
|
|
Module.stdinDataPosition >= Module.stdinData.length
|
|
) {
|
|
return null; // End of input (EOF)
|
|
}
|
|
return Module.stdinData[Module.stdinDataPosition++];
|
|
}
|
|
|
|
// Custom stdout function
|
|
function customStdout(char) {
|
|
Module.stdoutData.push(char);
|
|
}
|
|
|
|
// Custom stderr function
|
|
function customStderr(char) {
|
|
Module.stderrData.push(char);
|
|
}
|
|
|
|
// Initialize the FS (File System) with custom handlers
|
|
FS.init(customStdin, customStdout, customStderr);
|
|
});
|