blob: 046c3a14c3d9a000901fd4d864ea9943bb0dd861 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as li_internal from 'li_internal';
(function (global) {
var readBuffer;
var repl;
var stdinFd;
function InitRepl() {
repl = li_internal.createRepl();
stdinFd = std.in.fileno();
global['repl_init'] = {
repl,
};
// a handler on std.in
readBuffer = new Uint8Array(64);
os.setReadHandler(stdinFd, readHandler);
}
function readHandler() {
var l = os.read(stdinFd, readBuffer.buffer, 0, readBuffer.length);
var exitShell = li_internal.onInput(repl, readBuffer.buffer, l);
if (exitShell) {
std.out.flush();
os.setReadHandler(stdinFd, null); //remove read handler
li_internal.closeRepl(repl);
}
std.gc();//running it every now and then
}
InitRepl();
})(globalThis);