diff options
Diffstat (limited to 'test/mkfifo.ts')
-rw-r--r-- | test/mkfifo.ts | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/mkfifo.ts b/test/mkfifo.ts new file mode 100644 index 000000000..48471cbf5 --- /dev/null +++ b/test/mkfifo.ts @@ -0,0 +1,22 @@ +import { dlopen, ptr } from "bun:ffi"; + +var lazyMkfifo; +export function mkfifo(path: string, permissions: number = 0o666): void { + if (!lazyMkfifo) { + const suffix = process.platform === "darwin" ? "dylib" : "so.6"; + lazyMkfifo = dlopen(`libc.${suffix}`, { + mkfifo: { + args: ["ptr", "i32"], + returns: "i32", + }, + }).symbols.mkfifo; + } + + const buf = new Uint8Array(Buffer.byteLength(path) + 1); + new TextEncoder().encodeInto(path, buf); + const rc = lazyMkfifo(ptr(buf), permissions); + + if (rc < 0) { + throw new Error(`mkfifo failed`); + } +} |