aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/fhs
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-10-07 21:29:16 +0900
committerOphestra <cat@gensokyo.uk>2025-10-07 21:29:16 +0900
commit5d18af00077ae6ba8ef686d1fd93d888f69681b2 (patch)
treeeff32422fe3ef095c6a915ccb41c2a10a06990f7 /container/fhs
parent0e6c1a50260de141c50bb50fd3f2b2bcf9a3fe64 (diff)
container/fhs: move pathname constants
This allows referencing FHS pathnames without importing container. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/fhs')
-rw-r--r--container/fhs/abs.go41
-rw-r--r--container/fhs/fhs.go38
2 files changed, 79 insertions, 0 deletions
diff --git a/container/fhs/abs.go b/container/fhs/abs.go
new file mode 100644
index 00000000..af3588ba
--- /dev/null
+++ b/container/fhs/abs.go
@@ -0,0 +1,41 @@
+package fhs
+
+import (
+ _ "unsafe"
+
+ "hakurei.app/container/check"
+)
+
+/* constants in this file bypass abs check, be extremely careful when changing them! */
+
+//go:linkname unsafeAbs hakurei.app/container/check.unsafeAbs
+func unsafeAbs(_ string) *check.Absolute
+
+var (
+ // AbsRoot is [Root] as [check.Absolute].
+ AbsRoot = unsafeAbs(Root)
+ // AbsEtc is [Etc] as [check.Absolute].
+ AbsEtc = unsafeAbs(Etc)
+ // AbsTmp is [Tmp] as [check.Absolute].
+ AbsTmp = unsafeAbs(Tmp)
+
+ // AbsRun is [Run] as [check.Absolute].
+ AbsRun = unsafeAbs(Run)
+ // AbsRunUser is [RunUser] as [check.Absolute].
+ AbsRunUser = unsafeAbs(RunUser)
+
+ // AbsUsrBin is [UsrBin] as [check.Absolute].
+ AbsUsrBin = unsafeAbs(UsrBin)
+
+ // AbsVar is [Var] as [check.Absolute].
+ AbsVar = unsafeAbs(Var)
+ // AbsVarLib is [VarLib] as [check.Absolute].
+ AbsVarLib = unsafeAbs(VarLib)
+
+ // AbsDev is [Dev] as [check.Absolute].
+ AbsDev = unsafeAbs(Dev)
+ // AbsProc is [Proc] as [check.Absolute].
+ AbsProc = unsafeAbs(Proc)
+ // AbsSys is [Sys] as [check.Absolute].
+ AbsSys = unsafeAbs(Sys)
+)
diff --git a/container/fhs/fhs.go b/container/fhs/fhs.go
new file mode 100644
index 00000000..6a3a3041
--- /dev/null
+++ b/container/fhs/fhs.go
@@ -0,0 +1,38 @@
+// Package fhs provides constant and checked pathname values for common FHS paths.
+package fhs
+
+const (
+ // Root points to the file system root.
+ Root = "/"
+ // Etc points to the directory for system-specific configuration.
+ Etc = "/etc/"
+ // Tmp points to the place for small temporary files.
+ Tmp = "/tmp/"
+
+ // Run points to a "tmpfs" file system for system packages to place runtime data, socket files, and similar.
+ Run = "/run/"
+ // RunUser points to a directory containing per-user runtime directories,
+ // each usually individually mounted "tmpfs" instances.
+ RunUser = Run + "user/"
+
+ // Usr points to vendor-supplied operating system resources.
+ Usr = "/usr/"
+ // UsrBin points to binaries and executables for user commands that shall appear in the $PATH search path.
+ UsrBin = Usr + "bin/"
+
+ // Var points to persistent, variable system data. Writable during normal system operation.
+ Var = "/var/"
+ // VarLib points to persistent system data.
+ VarLib = Var + "lib/"
+ // VarEmpty points to a nonstandard directory that is usually empty.
+ VarEmpty = Var + "empty/"
+
+ // Dev points to the root directory for device nodes.
+ Dev = "/dev/"
+ // Proc points to a virtual kernel file system exposing the process list and other functionality.
+ Proc = "/proc/"
+ // ProcSys points to a hierarchy below /proc/ that exposes a number of kernel tunables.
+ ProcSys = Proc + "sys/"
+ // Sys points to a virtual kernel file system exposing discovered devices and other functionality.
+ Sys = "/sys/"
+)