diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-14 01:33:44 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-14 01:33:44 +0900 |
| commit | 790d77075e40ee3162d7925e983f01747b5c2c89 (patch) | |
| tree | 56a59641aa87a40c9b28600ff8bd5d5642d95f5e /system/dbus | |
| parent | e5ff40e7d32d28cace183cd2c80f40f142855ff5 (diff) | |
system/dbus: remove builder state leak
This enables external testing of system.I state.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'system/dbus')
| -rw-r--r-- | system/dbus/dbus.go | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/system/dbus/dbus.go b/system/dbus/dbus.go index 08db8f1b..9ea89f51 100644 --- a/system/dbus/dbus.go +++ b/system/dbus/dbus.go @@ -8,27 +8,31 @@ import ( ) const ( - /*SessionBusAddress is the name of the environment variable where the address of the login session message bus is given in. + /* + SessionBusAddress is the name of the environment variable where the address of the login session message bus is given in. - If that variable is not set, applications may also try to read the address from the X Window System root window property _DBUS_SESSION_BUS_ADDRESS. - The root window property must have type STRING. The environment variable should have precedence over the root window property. + If that variable is not set, applications may also try to read the address from the X Window System root window property _DBUS_SESSION_BUS_ADDRESS. + The root window property must have type STRING. The environment variable should have precedence over the root window property. - The address of the login session message bus is given in the DBUS_SESSION_BUS_ADDRESS environment variable. - If DBUS_SESSION_BUS_ADDRESS is not set, or if it's set to the string "autolaunch:", - the system should use platform-specific methods of locating a running D-Bus session server, - or starting one if a running instance cannot be found. - Note that this mechanism is not recommended for attempting to determine if a daemon is running. - It is inherently racy to attempt to make this determination, since the bus daemon may be started just before or just after the determination is made. - Therefore, it is recommended that applications do not try to make this determination for their functionality purposes, and instead they should attempt to start the server. + The address of the login session message bus is given in the DBUS_SESSION_BUS_ADDRESS environment variable. + If DBUS_SESSION_BUS_ADDRESS is not set, or if it's set to the string "autolaunch:", + the system should use platform-specific methods of locating a running D-Bus session server, + or starting one if a running instance cannot be found. + Note that this mechanism is not recommended for attempting to determine if a daemon is running. + It is inherently racy to attempt to make this determination, since the bus daemon may be started just before or just after the determination is made. + Therefore, it is recommended that applications do not try to make this determination for their functionality purposes, and instead they should attempt to start the server. - This package diverges from the specification, as the caller is unlikely to be an X client, or be in a position to autolaunch a dbus server. - So a fallback address with a socket located in the well-known default XDG_RUNTIME_DIR formatting is used.*/ + This package diverges from the specification, as the caller is unlikely to be an X client, or be in a position to autolaunch a dbus server. + So a fallback address with a socket located in the well-known default XDG_RUNTIME_DIR formatting is used. + */ SessionBusAddress = "DBUS_SESSION_BUS_ADDRESS" - /*SystemBusAddress is the name of the environment variable where the address of the system message bus is given in. + /* + SystemBusAddress is the name of the environment variable where the address of the system message bus is given in. - If that variable is not set, applications should try to connect to the well-known address unix:path=/var/run/dbus/system_bus_socket. - Implementations of the well-known system bus should listen on an address that will result in that connection being successful.*/ + If that variable is not set, applications should try to connect to the well-known address unix:path=/var/run/dbus/system_bus_socket. + Implementations of the well-known system bus should listen on an address that will result in that connection being successful. + */ SystemBusAddress = "DBUS_SYSTEM_BUS_ADDRESS" // FallbackSystemBusAddress is used when [SystemBusAddress] is not set. @@ -36,28 +40,30 @@ const ( ) var ( - addresses [2]string + address [2]string addressOnce sync.Once ) +// Address returns the session and system bus addresses copied from environment, +// or appropriate fallback values if they are not set. func Address() (session, system string) { addressOnce.Do(func() { // resolve upstream session bus address if addr, ok := os.LookupEnv(SessionBusAddress); !ok { // fall back to default format - addresses[0] = fmt.Sprintf("unix:path=/run/user/%d/bus", os.Getuid()) + address[0] = fmt.Sprintf("unix:path=/run/user/%d/bus", os.Getuid()) } else { - addresses[0] = addr + address[0] = addr } // resolve upstream system bus address if addr, ok := os.LookupEnv(SystemBusAddress); !ok { // fall back to default hardcoded value - addresses[1] = FallbackSystemBusAddress + address[1] = FallbackSystemBusAddress } else { - addresses[1] = addr + address[1] = addr } }) - return addresses[0], addresses[1] + return address[0], address[1] } |
