aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-07-11 01:13:41 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-07-11 01:13:41 +0900
commit65c02b540d616b3752a2eb5da110541f728d6cbe (patch)
treee46943695b8712d7f31282fbcbe409be55ee8d34
parent94c69806ef496ac7e00fdc8e80f547606b883158 (diff)
util: port sd_booted function
Manpage provided by systemd states that the sd_booted function internally "checks whether the directory /run/systemd/system/ exists", as well as that "a simple check like this can also be implemented trivially in shell or any other language". This implies the behaviour of this function can be expected to be stable. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
-rw-r--r--util.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/util.go b/util.go
new file mode 100644
index 00000000..4c8484b7
--- /dev/null
+++ b/util.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+ "io/fs"
+ "os"
+)
+
+const (
+ systemdCheckPath = "/run/systemd/system"
+)
+
+// https://www.freedesktop.org/software/systemd/man/sd_booted.html
+func sdBooted() bool {
+ _, err := os.Stat(systemdCheckPath)
+ if err != nil {
+ if verbose {
+ if errors.Is(err, fs.ErrNotExist) {
+ fmt.Println("System not booted through systemd")
+ } else {
+ fmt.Println("Error accessing", systemdCheckPath+":", err.Error())
+ }
+ }
+ return false
+ }
+ return true
+}