D-Bus 1.14.10
|
Miscellaneous API that doesn't cleanly fit anywhere else. More...
Functions | |
char * | dbus_try_get_local_machine_id (DBusError *error) |
Obtains the machine UUID of the machine this process is running on. More... | |
char * | dbus_get_local_machine_id (void) |
Obtains the machine UUID of the machine this process is running on. More... | |
void | dbus_get_version (int *major_version_p, int *minor_version_p, int *micro_version_p) |
Gets the DYNAMICALLY LINKED version of libdbus. More... | |
DBUS_EXPORT dbus_bool_t | dbus_setenv (const char *variable, const char *value) |
Wrapper for setenv(). More... | |
Miscellaneous API that doesn't cleanly fit anywhere else.
DBUS_EXPORT char * dbus_get_local_machine_id | ( | void | ) |
Obtains the machine UUID of the machine this process is running on.
The returned string must be freed with dbus_free().
This function returns NULL if there was not enough memory to read the UUID, or if the UUID could not be read because the D-Bus library was installed incorrectly. In the latter case, a warning is logged.
Other than its deficient error reporting, this function is the same as dbus_try_get_local_machine_id().
Definition at line 123 of file dbus-misc.c.
References _dbus_warn_check_failed(), dbus_error_free(), dbus_error_has_name(), DBUS_ERROR_INIT, DBUS_ERROR_NO_MEMORY, dbus_try_get_local_machine_id(), DBusError::message, and NULL.
DBUS_EXPORT void dbus_get_version | ( | int * | major_version_p, |
int * | minor_version_p, | ||
int * | micro_version_p | ||
) |
Gets the DYNAMICALLY LINKED version of libdbus.
Alternatively, there are macros #DBUS_MAJOR_VERSION, #DBUS_MINOR_VERSION, #DBUS_MICRO_VERSION, and #DBUS_VERSION which allow you to test the VERSION YOU ARE COMPILED AGAINST. In other words, you can get either the runtime or the compile-time version. Think carefully about which of these you want in a given case.
The libdbus full version number is "MAJOR.MINOR.MICRO" where the MINOR changes if API is added, and the MICRO changes with each release of a MAJOR.MINOR series. The MINOR is an odd number for development releases and an even number for stable releases.
major_version_p | pointer to return the major version, or NULL |
minor_version_p | pointer to return the minor version, or NULL |
micro_version_p | pointer to return the micro version, or NULL |
Definition at line 211 of file dbus-misc.c.
DBUS_EXPORT dbus_bool_t dbus_setenv | ( | const char * | varname, |
const char * | value | ||
) |
Wrapper for setenv().
If the value is NULL, unsets the environment variable.
There is an unfixable memleak in that it is unsafe to free memory malloced for use with setenv. This is because we can not rely on internal implementation details of the underlying libc library.
This function is not thread-safe, because altering the environment in Unix is not thread-safe in general.
varname | name of environment variable |
value | value of environment variable, or NULL to unset |
Definition at line 124 of file dbus-sysdeps.c.
References _dbus_assert, FALSE, NULL, and TRUE.
Referenced by _dbus_server_new_for_launchd().
DBUS_EXPORT char * dbus_try_get_local_machine_id | ( | DBusError * | error | ) |
Obtains the machine UUID of the machine this process is running on.
The returned string must be freed with dbus_free().
This UUID is guaranteed to remain the same until the next reboot (unless the sysadmin foolishly changes it and screws themselves). It will usually remain the same across reboots also, but hardware configuration changes or rebuilding the machine could break that.
The idea is that two processes with the same machine ID should be able to use shared memory, UNIX domain sockets, process IDs, and other features of the OS that require both processes to be running on the same OS kernel instance.
The machine ID can also be used to create unique per-machine instances. For example, you could use it in bus names or X selection names.
The machine ID is preferred over the machine hostname, because the hostname is frequently set to "localhost.localdomain" and may also change at runtime.
You can get the machine ID of a remote application by invoking the method GetMachineId from interface org.freedesktop.DBus.Peer.
If the remote application has the same machine ID as the one returned by this function, then the remote application is on the same machine as your application.
The UUID is not a UUID in the sense of RFC4122; the details are explained in the D-Bus specification.
Definition at line 74 of file dbus-misc.c.
References _dbus_get_local_machine_uuid_encoded(), _dbus_string_free(), _dbus_string_init(), _dbus_string_steal_data(), DBUS_ERROR_NO_MEMORY, dbus_set_error(), and NULL.
Referenced by dbus_get_local_machine_id().