dbus-launch: Replace slashes in DISPLAY if present

dbus-daemon fails to autolaunch with X11 on macOS 10.8+ because XQuartz
(the X11 package for macOS) provides a value for `$DISPLAY` that is
not expected by dbus, in that it contains `/` characters. This is
addressed by replacing the invalid path character `/` with `_`.

Resolves: #8
Resolves: #311
(cherry picked from commit 3545d0f4de)
This commit is contained in:
William Earley 2020-09-27 12:39:04 +01:00 committed by Simon McVittie
parent 7dc84fd22b
commit 73aa7f9739

View file

@ -142,10 +142,15 @@ get_session_file (void)
/* replace the : in the display with _ if the : is still there.
* use _ instead of - since it can't be in hostnames.
*
* similarly, on recent versions of macOS, X11 is provided by the XQuartz
* package which uses a path for the hostname, such as
* /private/tmp/com.apple.launchd.mBSMLJ3yQU/org.macosforge.xquartz
* we therefore also replace any / with _
*/
for (p = display; *p; ++p)
{
if (*p == ':')
if (*p == ':' || *p == '/')
*p = '_';
}