diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-02-10 10:10:36 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-02-10 10:10:38 +0000 |
commit | 21c8094040bba43b5cc5aae016b57eb3b0cac450 (patch) | |
tree | d5ba49e1002743306f392b1f1794e9470f0bca00 | |
parent | 349260f245d95a6c8bcc0f000be1f3232c616052 (diff) | |
parent | fccb5a0fe11a2293ba5bfc09e0f3fe296d724eb2 (diff) |
Merge branch 'system-search-paths-21620'
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=21620
Reviewed-by: Lennart Poettering <lennart@poettering.net>
-rw-r--r-- | bus/config-parser.c | 4 | ||||
-rw-r--r-- | dbus/dbus-sysdeps-unix.c | 51 | ||||
-rw-r--r-- | doc/dbus-specification.xml | 27 |
3 files changed, 40 insertions, 42 deletions
diff --git a/bus/config-parser.c b/bus/config-parser.c index c636707f..a8953627 100644 --- a/bus/config-parser.c +++ b/bus/config-parser.c @@ -3393,8 +3393,8 @@ test_default_session_servicedirs (void) static const char *test_system_service_dir_matches[] = { #ifdef DBUS_UNIX - "/testusr/testlocal/testshare/dbus-1/system-services", - "/testusr/testshare/dbus-1/system-services", + "/usr/local/share/dbus-1/system-services", + "/usr/share/dbus-1/system-services", #endif DBUS_DATADIR"/dbus-1/system-services", #ifdef DBUS_UNIX diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 22868e2e..67034a03 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -3691,54 +3691,27 @@ _dbus_get_standard_session_servicedirs (DBusList **dirs) dbus_bool_t _dbus_get_standard_system_servicedirs (DBusList **dirs) { - const char *xdg_data_dirs; - DBusString servicedir_path; - - if (!_dbus_string_init (&servicedir_path)) - return FALSE; - - xdg_data_dirs = _dbus_getenv ("XDG_DATA_DIRS"); - - if (xdg_data_dirs != NULL) - { - if (!_dbus_string_append (&servicedir_path, xdg_data_dirs)) - goto oom; - - if (!_dbus_string_append (&servicedir_path, ":")) - goto oom; - } - else - { - if (!_dbus_string_append (&servicedir_path, "/usr/local/share:/usr/share:")) - goto oom; - } - /* - * Add configured datadir to defaults. This may be the same as one - * of the XDG directories. However, the config parser should take - * care of the duplicates. + * DBUS_DATADIR may be the same as one of the standard directories. However, + * the config parser should take care of the duplicates. * * Also, append /lib as counterpart of /usr/share on the root * directory (the root directory does not know /share), in order to * facilitate early boot system bus activation where /usr might not * be available. */ - if (!_dbus_string_append (&servicedir_path, - DBUS_DATADIR":" - "/lib:")) - goto oom; - - if (!_dbus_split_paths_and_append (&servicedir_path, - DBUS_UNIX_STANDARD_SYSTEM_SERVICEDIR, - dirs)) - goto oom; + static const char standard_search_path[] = + "/usr/local/share:" + "/usr/share:" + DBUS_DATADIR ":" + "/lib"; + DBusString servicedir_path; - _dbus_string_free (&servicedir_path); - return TRUE; + _dbus_string_init_const (&servicedir_path, standard_search_path); - oom: - _dbus_string_free (&servicedir_path); - return FALSE; + return _dbus_split_paths_and_append (&servicedir_path, + DBUS_UNIX_STANDARD_SYSTEM_SERVICEDIR, + dirs); } /** diff --git a/doc/dbus-specification.xml b/doc/dbus-specification.xml index 959c4e7f..0717f7f2 100644 --- a/doc/dbus-specification.xml +++ b/doc/dbus-specification.xml @@ -4636,7 +4636,32 @@ </footnote> </para> <para> - [FIXME specify location of system bus .service files] + On Unix systems, the system bus should default to searching + for .service files in + <literal>/usr/local/share/dbus-1/system-services</literal>, + <literal>/usr/share/dbus-1/system-services</literal> and + <literal>/lib/dbus-1/system-services</literal>, with that order + of precedence. It may also search other implementation-specific + locations, but should not vary these locations based on environment + variables. + <footnote> + <para> + The system bus is security-sensitive and is typically executed + by an init system with a clean environment. Its launch helper + process is particularly security-sensitive, and specifically + clears its own environment. + </para> + </footnote> + </para> + <para> + Software packages should install their system .service + files to their configured + <literal>${datadir}/dbus-1/system-services</literal>, + where <literal>${datadir}</literal> is as defined by the GNU + coding standards. System administrators can arrange + for these service files to be read by editing the system bus' + configuration file or by symlinking them into the default + locations. </para> </sect3> </sect2> |