aboutsummaryrefslogtreecommitdiff
path: root/test/mkfifo.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/mkfifo.ts')
-rw-r--r--test/mkfifo.ts22
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`);
+ }
+}