From 1f974094743a374bc886ea46fc376db81b6829d9 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Wed, 28 Aug 2024 06:49:43 +0100 Subject: [PATCH] add popen2 to anoia.fs --- pkgs/anoia/fs.fnl | 24 ++++++++++++++++++++++++ pkgs/tangc/tangc.fnl | 25 ++----------------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/pkgs/anoia/fs.fnl b/pkgs/anoia/fs.fnl index 536a02b..bfb120a 100644 --- a/pkgs/anoia/fs.fnl +++ b/pkgs/anoia/fs.fnl @@ -65,6 +65,29 @@ unknown (error (.. "can't remove " pathname " of mode \"" unknown "\"")))) +(fn popen2 [pname argv envp] + (case (ll.pipe2) + (cin-s cin-d) + (match (ll.pipe2) + (cout-s cout-d) + (let [(pid err) (ll.fork)] + (if (not pid) (error (.. "error: " err)) + (= pid 0) + (do + (ll.close cin-d) + (ll.close cout-s) + (ll.dup2 cin-s 0) + (ll.dup2 cout-d 1) + (ll.dup2 cout-d 2) + (ll.execve pname argv envp) + (error "execve failed")) + (> pid 0) + (do + (ll.close cin-s) + (ll.close cout-d))) + (values pid cin-d cout-s)) + (nil err) (error (.. "popen pipe out: " err))) + (nil err) (error (.. "popen pipe in: " err)))) { : mktree @@ -72,5 +95,6 @@ : directory? : dir : file-type + : popen2 :symlink (fn [from to] (ll.symlink from to)) } diff --git a/pkgs/tangc/tangc.fnl b/pkgs/tangc/tangc.fnl index 4d26917..ce23c73 100644 --- a/pkgs/tangc/tangc.fnl +++ b/pkgs/tangc/tangc.fnl @@ -2,31 +2,10 @@ (local http (require :fetch)) (local { : view : join } (require :fennel)) (local { : split : base64 : %%} (require :anoia)) +(local { : popen2 } (require :anoia.fs)) (local ll (require :lualinux)) -(fn popen2 [pname argv envp] - (case (ll.pipe2) - (cin-s cin-d) - (match (ll.pipe2) - (cout-s cout-d) - (let [(pid err) (ll.fork)] - (if (not pid) (error (.. "error: " err)) - (= pid 0) - (do - (ll.close cin-d) - (ll.close cout-s) - (ll.dup2 cin-s 0) - (ll.dup2 cout-d 1) - (ll.dup2 cout-d 2) - (ll.execve pname argv envp) - (error "execve failed")) - (> pid 0) - (do - (ll.close cin-s) - (ll.close cout-d))) - (values pid cin-d cout-s)) - (nil err) (error (.. "popen pipe out: " err))) - (nil err) (error (.. "popen pipe in: " err)))) + (local CLEVIS_DEFAULT_THP_LEN 43) ; Length of SHA-256 thumbprint. (local thumbprint-algs ["S256" "S1"])