summaryrefslogtreecommitdiff
path: root/js/os.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-08-22 13:19:32 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-08-22 18:39:07 -0400
commit7d7263c48f4280f8da5496273e85fb1a8fb79547 (patch)
tree709df115d6d2daf5a753a31a69bac637d65a33a7 /js/os.ts
parente7cab715749e4c5000c24ffeade1ef915d15a68d (diff)
Implement writeFileSync
In collaboration with Tommy Savaria <tommy.savaria@protonmail.ch>
Diffstat (limited to 'js/os.ts')
-rw-r--r--js/os.ts25
1 files changed, 21 insertions, 4 deletions
diff --git a/js/os.ts b/js/os.ts
index 22ef6ef4f..22bbd7748 100644
--- a/js/os.ts
+++ b/js/os.ts
@@ -121,15 +121,32 @@ export function readFileSync(filename: string): Uint8Array {
export function writeFileSync(
filename: string,
data: Uint8Array,
- perm: number
+ perm = 0o666
): void {
- util.notImplemented();
- /*
- pubInternal("os", {
+ /* Ideally we could write:
+ const res = send({
command: fbs.Command.WRITE_FILE_SYNC,
writeFileSyncFilename: filename,
writeFileSyncData: data,
writeFileSyncPerm: perm
});
*/
+ const builder = new flatbuffers.Builder();
+ const filename_ = builder.createString(filename);
+ const dataOffset = fbs.WriteFileSync.createDataVector(builder, data);
+ fbs.WriteFileSync.startWriteFileSync(builder);
+ fbs.WriteFileSync.addFilename(builder, filename_);
+ fbs.WriteFileSync.addData(builder, dataOffset);
+ fbs.WriteFileSync.addPerm(builder, perm);
+ const msg = fbs.WriteFileSync.endWriteFileSync(builder);
+ fbs.Base.startBase(builder);
+ fbs.Base.addMsg(builder, msg);
+ fbs.Base.addMsgType(builder, fbs.Any.WriteFileSync);
+ builder.finish(fbs.Base.endBase(builder));
+ const resBuf = libdeno.send(builder.asUint8Array());
+ if (resBuf != null) {
+ const bb = new flatbuffers.ByteBuffer(new Uint8Array(resBuf!));
+ const baseRes = fbs.Base.getRootAsBase(bb);
+ maybeThrowError(baseRes);
+ }
}