aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/final
diff options
context:
space:
mode:
authorOphestra Umiker <cat@ophivana.moe>2024-09-17 13:48:42 +0900
committerOphestra Umiker <cat@ophivana.moe>2024-09-17 13:48:42 +0900
commit4b7d616862dc7d8c73561b85deb0ca1fabf30781 (patch)
treed069af086d1fcfeca2f9a629e0f3eb3e2f19500f /internal/final
parent6a6f62efa672bdb439c2f9056055193a53c1df01 (diff)
exit: move final and early code to internal package
Exit cleanup state information is now stored in a dedicated struct and built up using methods of that struct. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
Diffstat (limited to 'internal/final')
-rw-r--r--internal/final/exit.go74
-rw-r--r--internal/final/prepare.go20
-rw-r--r--internal/final/register.go48
3 files changed, 0 insertions, 142 deletions
diff --git a/internal/final/exit.go b/internal/final/exit.go
deleted file mode 100644
index 063d8d04..00000000
--- a/internal/final/exit.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package final
-
-import (
- "errors"
- "fmt"
- "io/fs"
- "os"
-
- "git.ophivana.moe/cat/fortify/acl"
- "git.ophivana.moe/cat/fortify/internal/state"
- "git.ophivana.moe/cat/fortify/internal/verbose"
- "git.ophivana.moe/cat/fortify/xcb"
-)
-
-func Fatal(msg ...any) {
- fmt.Println(msg...)
- BeforeExit()
- os.Exit(1)
-}
-
-func BeforeExit() {
- if u == nil {
- fmt.Println("warn: beforeExit called before app init")
- return
- }
-
- if statePath == "" {
- verbose.Println("State path is unset")
- } else {
- if err := os.Remove(statePath); err != nil && !errors.Is(err, fs.ErrNotExist) {
- fmt.Println("Error removing state file:", err)
- }
- }
-
- if d, err := state.ReadLaunchers(runDirPath, u.Uid); err != nil {
- fmt.Println("Error reading active launchers:", err)
- os.Exit(1)
- } else if len(d) > 0 {
- // other launchers are still active
- verbose.Printf("Found %d active launchers, exiting without cleaning up\n", len(d))
- return
- }
-
- verbose.Println("No other launchers active, will clean up")
-
- if xcbActionComplete {
- verbose.Printf("X11: Removing XHost entry SI:localuser:%s\n", u.Username)
- if err := xcb.ChangeHosts(xcb.HostModeDelete, xcb.FamilyServerInterpreted, "localuser\x00"+u.Username); err != nil {
- fmt.Println("Error removing XHost entry:", err)
- }
- }
-
- for _, candidate := range cleanupCandidate {
- if err := acl.UpdatePerm(candidate, uid); err != nil {
- fmt.Printf("Error stripping ACL entry from '%s': %s\n", candidate, err)
- }
- verbose.Printf("Stripped ACL entry for user '%s' from '%s'\n", u.Username, candidate)
- }
-
- if dbusProxy != nil {
- verbose.Println("D-Bus proxy registered, cleaning up")
-
- if err := dbusProxy.Close(); err != nil {
- if errors.Is(err, os.ErrClosed) {
- verbose.Println("D-Bus proxy already closed")
- } else {
- fmt.Println("Error closing D-Bus proxy:", err)
- }
- }
-
- // wait for Proxy.Wait to return
- <-*dbusDone
- }
-}
diff --git a/internal/final/prepare.go b/internal/final/prepare.go
deleted file mode 100644
index 859013cf..00000000
--- a/internal/final/prepare.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package final
-
-import "os/user"
-
-var (
- u *user.User
- uid int
-
- runDirPath string
-)
-
-func Prepare(val user.User, d int, s string) {
- if u != nil {
- panic("final prepared twice")
- }
-
- u = &val
- uid = d
- runDirPath = s
-}
diff --git a/internal/final/register.go b/internal/final/register.go
deleted file mode 100644
index 16e8d868..00000000
--- a/internal/final/register.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package final
-
-import (
- "git.ophivana.moe/cat/fortify/dbus"
- "git.ophivana.moe/cat/fortify/internal/state"
-)
-
-var (
- cleanupCandidate []string
- enablements *state.Enablements
- xcbActionComplete bool
-
- dbusProxy *dbus.Proxy
- dbusDone *chan struct{}
-
- statePath string
-)
-
-func RegisterRevertPath(p string) {
- cleanupCandidate = append(cleanupCandidate, p)
-}
-
-func RegisterEnablement(e state.Enablements) {
- if enablements != nil {
- panic("enablement state set twice")
- }
- enablements = &e
-}
-
-func XcbActionComplete() {
- if xcbActionComplete {
- Fatal("xcb inserted twice")
- }
- xcbActionComplete = true
-}
-
-func RegisterDBus(p *dbus.Proxy, done *chan struct{}) {
- dbusProxy = p
- dbusDone = done
-}
-
-func RegisterStatePath(v string) {
- if statePath != "" {
- panic("statePath set twice")
- }
-
- statePath = v
-}