From afcc6a6436d2ceec9ce04df9f3a2a9ed3e67d837 Mon Sep 17 00:00:00 2001
From: Daniel Barlow <dan@telent.net>
Date: Mon, 8 Jul 2024 20:50:00 +0100
Subject: [PATCH] s6-rc-up-tree pass -b to s6-rc command

---
 pkgs/s6-rc-up-tree/s6-rc-up-tree.fnl | 7 +++----
 pkgs/s6-rc-up-tree/scripts/s6-rc     | 2 ++
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/pkgs/s6-rc-up-tree/s6-rc-up-tree.fnl b/pkgs/s6-rc-up-tree/s6-rc-up-tree.fnl
index 0e0f81fd..0b23e604 100644
--- a/pkgs/s6-rc-up-tree/s6-rc-up-tree.fnl
+++ b/pkgs/s6-rc-up-tree/s6-rc-up-tree.fnl
@@ -28,7 +28,7 @@
 
 (fn stopped-controlled-services [dir]
   (let [controlled (controlled-services dir)]
-    (with-popen [h (.. "s6-rc -da list")]
+    (with-popen [h (.. "s6-rc -b -da list")]
       (collect [s (h:lines)]
         (if (. controlled s) (values s s))))))
 
@@ -39,9 +39,8 @@
   (popen (.. "s6-rc-db -d all-dependencies " service)))
 
 (fn start-service [name]
-  (case (os.execute (.. "s6-rc -u change " name))
-    (ok) nil
-    (nil err) (fail err)))
+  (with-popen [h (.. "s6-rc -b -u change " name)]
+    (print (h:read "*a"))))
 
 (fn run [dir]
   (let [service (. arg 1)
diff --git a/pkgs/s6-rc-up-tree/scripts/s6-rc b/pkgs/s6-rc-up-tree/scripts/s6-rc
index 32145b8d..43f56ce3 100755
--- a/pkgs/s6-rc-up-tree/scripts/s6-rc
+++ b/pkgs/s6-rc-up-tree/scripts/s6-rc
@@ -1,6 +1,8 @@
 #!/usr/bin/env sh
 
 echo s6-rc $@
+[ "$1" = "-b" ] && shift
+
 if [ "$1" = "-da" ]; then
     if [ "$2" = "list" ]; then
 	echo wattle # controlled