D-Bus
1.4.10
|
Internal system-dependent API available on UNIX and Windows. More...
Data Structures | |
struct | DBusAtomic |
An atomic integer safe to increment or decrement from multiple threads. More... | |
struct | DBusPollFD |
A portable struct pollfd wrapper. More... | |
struct | DBusStat |
Portable struct with stat() results. More... | |
Defines | |
#define | DBUS_PID_UNSET ((dbus_pid_t) -1) |
an invalid PID used to represent an uninitialized dbus_pid_t field | |
#define | DBUS_UID_UNSET ((dbus_uid_t) -1) |
an invalid UID used to represent an uninitialized dbus_uid_t field | |
#define | DBUS_GID_UNSET ((dbus_gid_t) -1) |
an invalid GID used to represent an uninitialized dbus_gid_t field | |
#define | DBUS_PID_FORMAT "%lu" |
an appropriate printf format for dbus_pid_t | |
#define | DBUS_UID_FORMAT "%lu" |
an appropriate printf format for dbus_uid_t | |
#define | DBUS_GID_FORMAT "%lu" |
an appropriate printf format for dbus_gid_t | |
#define | _DBUS_POLLIN 0x0001 |
There is data to read. | |
#define | _DBUS_POLLPRI 0x0002 |
There is urgent data to read. | |
#define | _DBUS_POLLOUT 0x0004 |
Writing now will not block. | |
#define | _DBUS_POLLERR 0x0008 |
Error condition. | |
#define | _DBUS_POLLHUP 0x0010 |
Hung up. | |
#define | _DBUS_POLLNVAL 0x0020 |
Invalid request: fd not open. | |
#define | DBUS_VA_COPY(ap1, ap2) ((ap1) = (ap2)) |
#define | _DBUS_BYTE_OF_PRIMITIVE(p, i) (((const char*)&(p))[(i)]) |
Casts a primitive C type to a byte array and then indexes a particular byte of the array. | |
#define | _DBUS_DOUBLES_BITWISE_EQUAL(a, b) |
On x86 there is an 80-bit FPU, and if you do "a == b" it may have a or b in an 80-bit register, thus failing to compare the two 64-bit doubles for bitwise equality. | |
Typedefs | |
typedef unsigned long | dbus_pid_t |
A process ID. | |
typedef unsigned long | dbus_uid_t |
A user ID. | |
typedef unsigned long | dbus_gid_t |
A group ID. | |
typedef struct DBusAtomic | DBusAtomic |
Opaque type representing an atomically-modifiable integer that can be used from multiple threads. | |
typedef struct DBusDirIter | DBusDirIter |
Opaque type for reading a directory listing. | |
typedef void(* | DBusSignalHandler )(int sig) |
A UNIX signal handler. | |
typedef union DBusGUID | DBusGUID |
Type representing a universally unique ID. | |
Enumerations | |
enum | DBusSystemLogSeverity { DBUS_SYSTEM_LOG_INFO, DBUS_SYSTEM_LOG_SECURITY, DBUS_SYSTEM_LOG_FATAL } |
Functions | |
void | _dbus_abort (void) |
Aborts the program with SIGABRT (dumping core). | |
dbus_bool_t | _dbus_setenv (const char *varname, const char *value) |
Wrapper for setenv(). | |
const char * | _dbus_getenv (const char *varname) |
Wrapper for getenv(). | |
dbus_bool_t | _dbus_clearenv (void) |
Wrapper for clearenv(). | |
char ** | _dbus_get_environment (void) |
Gets a NULL-terminated list of key=value pairs from the environment. | |
dbus_bool_t | _dbus_split_paths_and_append (DBusString *dirs, const char *suffix, DBusList **dir_list) |
Split paths into a list of char strings. | |
dbus_bool_t | _dbus_check_setuid (void) |
**NOTE**: If you modify this function, please also consider making the corresponding change in GLib. | |
dbus_bool_t | _dbus_open_tcp_socket (int *fd, DBusError *error) |
Socket interface. | |
dbus_bool_t | _dbus_close_socket (int fd, DBusError *error) |
Closes a socket. | |
int | _dbus_read_socket (int fd, DBusString *buffer, int count) |
Like _dbus_read(), but only works on sockets so is available on Windows. | |
int | _dbus_write_socket (int fd, const DBusString *buffer, int start, int len) |
Like _dbus_write(), but only supports sockets and is thus available on Windows. | |
int | _dbus_write_socket_two (int fd, const DBusString *buffer1, int start1, int len1, const DBusString *buffer2, int start2, int len2) |
Like _dbus_write_two() but only works on sockets and is thus available on Windows. | |
int | _dbus_read_socket_with_unix_fds (int fd, DBusString *buffer, int count, int *fds, int *n_fds) |
Like _dbus_read_socket() but also tries to read unix fds from the socket. | |
int | _dbus_write_socket_with_unix_fds (int fd, const DBusString *buffer, int start, int len, const int *fds, int n_fds) |
int | _dbus_write_socket_with_unix_fds_two (int fd, const DBusString *buffer1, int start1, int len1, const DBusString *buffer2, int start2, int len2, const int *fds, int n_fds) |
dbus_bool_t | _dbus_socket_is_invalid (int fd) |
int | _dbus_connect_tcp_socket (const char *host, const char *port, const char *family, DBusError *error) |
Creates a socket and connects to a socket at the given host and port. | |
int | _dbus_connect_tcp_socket_with_nonce (const char *host, const char *port, const char *family, const char *noncefile, DBusError *error) |
int | _dbus_listen_tcp_socket (const char *host, const char *port, const char *family, DBusString *retport, int **fds_p, DBusError *error) |
Creates a socket and binds it to the given path, then listens on the socket. | |
int | _dbus_accept (int listen_fd) |
Accepts a connection on a listening socket. | |
dbus_bool_t | _dbus_read_credentials_socket (int client_fd, DBusCredentials *credentials, DBusError *error) |
Reads a single byte which must be nul (an error occurs otherwise), and reads unix credentials if available. | |
dbus_bool_t | _dbus_send_credentials_socket (int server_fd, DBusError *error) |
Sends a single nul byte with our UNIX credentials as ancillary data. | |
dbus_bool_t | _dbus_credentials_add_from_user (DBusCredentials *credentials, const DBusString *username) |
Adds the credentials corresponding to the given username. | |
dbus_bool_t | _dbus_credentials_add_from_current_process (DBusCredentials *credentials) |
Adds the credentials of the current process to the passed-in credentials object. | |
dbus_bool_t | _dbus_append_user_from_current_process (DBusString *str) |
Append to the string the identity we would like to have when we authenticate, on UNIX this is the current process UID and on Windows something else, probably a Windows SID string. | |
dbus_bool_t | _dbus_parse_unix_user_from_config (const DBusString *username, dbus_uid_t *uid_p) |
Parse a UNIX user from the bus config file. | |
dbus_bool_t | _dbus_parse_unix_group_from_config (const DBusString *groupname, dbus_gid_t *gid_p) |
Parse a UNIX group from the bus config file. | |
dbus_bool_t | _dbus_unix_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, int *n_group_ids) |
Gets all groups corresponding to the given UNIX user ID. | |
dbus_bool_t | _dbus_unix_user_is_at_console (dbus_uid_t uid, DBusError *error) |
Checks to see if the UNIX user ID is at the console. | |
dbus_bool_t | _dbus_unix_user_is_process_owner (dbus_uid_t uid) |
Checks to see if the UNIX user ID matches the UID of the process. | |
dbus_bool_t | _dbus_windows_user_is_process_owner (const char *windows_sid) |
Checks to see if the Windows user SID matches the owner of the process. | |
dbus_bool_t | _dbus_append_keyring_directory_for_credentials (DBusString *directory, DBusCredentials *credentials) |
Appends the directory in which a keyring for the given credentials should be stored. | |
dbus_bool_t | _dbus_daemon_is_session_bus_address_published (const char *scope) |
dbus_bool_t | _dbus_daemon_publish_session_bus_address (const char *address, const char *shm_name) |
void | _dbus_daemon_unpublish_session_bus_address (void) |
dbus_bool_t | _dbus_socket_can_pass_unix_fd (int fd) |
Checks whether file descriptors may be passed via the socket. | |
dbus_int32_t | _dbus_atomic_inc (DBusAtomic *atomic) |
Atomically increments an integer. | |
dbus_int32_t | _dbus_atomic_dec (DBusAtomic *atomic) |
Atomically decrement an integer. | |
int | _dbus_poll (DBusPollFD *fds, int n_fds, int timeout_milliseconds) |
Wrapper for poll(). | |
void | _dbus_sleep_milliseconds (int milliseconds) |
Sleeps the given number of milliseconds. | |
void | _dbus_get_current_time (long *tv_sec, long *tv_usec) |
Get current time, as in gettimeofday(). | |
dbus_bool_t | _dbus_create_directory (const DBusString *filename, DBusError *error) |
directory interface | |
dbus_bool_t | _dbus_delete_directory (const DBusString *filename, DBusError *error) |
Removes a directory; Directory must be empty. | |
dbus_bool_t | _dbus_concat_dir_and_file (DBusString *dir, const DBusString *next_component) |
Appends the given filename to the given directory. | |
dbus_bool_t | _dbus_string_get_dirname (const DBusString *filename, DBusString *dirname) |
Get the directory name from a complete filename. | |
dbus_bool_t | _dbus_path_is_absolute (const DBusString *filename) |
Checks whether the filename is an absolute path. | |
dbus_bool_t | _dbus_get_standard_session_servicedirs (DBusList **dirs) |
Returns the standard directories for a session bus to look for service activation files. | |
dbus_bool_t | _dbus_get_standard_system_servicedirs (DBusList **dirs) |
Returns the standard directories for a system bus to look for service activation files. | |
dbus_bool_t | _dbus_append_system_config_file (DBusString *str) |
Append the absolute path of the system.conf file (there is no system bus on Windows so this can just return FALSE and print a warning or something) | |
dbus_bool_t | _dbus_append_session_config_file (DBusString *str) |
Append the absolute path of the session.conf file. | |
DBusDirIter * | _dbus_directory_open (const DBusString *filename, DBusError *error) |
Open a directory to iterate over. | |
dbus_bool_t | _dbus_directory_get_next_file (DBusDirIter *iter, DBusString *filename, DBusError *error) |
Get next file in the directory. | |
void | _dbus_directory_close (DBusDirIter *iter) |
Closes a directory iteration. | |
dbus_bool_t | _dbus_check_dir_is_private_to_user (DBusString *dir, DBusError *error) |
Checks to make sure the given directory is private to the user. | |
void | _dbus_fd_set_close_on_exec (intptr_t fd) |
Sets the file descriptor to be close on exec. | |
const char * | _dbus_get_tmpdir (void) |
Gets the temporary files directory by inspecting the environment variables TMPDIR, TMP, and TEMP in that order. | |
void | _dbus_generate_pseudorandom_bytes_buffer (char *buffer, int n_bytes) |
Random numbers. | |
void | _dbus_generate_random_bytes_buffer (char *buffer, int n_bytes) |
Fills n_bytes of the given buffer with random bytes. | |
dbus_bool_t | _dbus_generate_random_bytes (DBusString *str, int n_bytes) |
Generates the given number of random bytes, using the best mechanism we can come up with. | |
dbus_bool_t | _dbus_generate_random_ascii (DBusString *str, int n_bytes) |
Generates the given number of random bytes, where the bytes are chosen from the alphanumeric ASCII subset. | |
const char * | _dbus_error_from_errno (int error_number) |
Converts a UNIX errno, or Windows errno or WinSock error value into a DBusError name. | |
const char * | _dbus_error_from_system_errno (void) |
Converts the current system errno value into a DBusError name. | |
void | _dbus_set_errno_to_zero (void) |
Assign 0 to the global errno variable. | |
dbus_bool_t | _dbus_get_is_errno_nonzero (void) |
See if errno is set. | |
dbus_bool_t | _dbus_get_is_errno_eagain_or_ewouldblock (void) |
See if errno is EAGAIN or EWOULDBLOCK (this has to be done differently for Winsock so is abstracted) | |
dbus_bool_t | _dbus_get_is_errno_enomem (void) |
See if errno is ENOMEM. | |
dbus_bool_t | _dbus_get_is_errno_eintr (void) |
See if errno is EINTR. | |
dbus_bool_t | _dbus_get_is_errno_epipe (void) |
See if errno is EPIPE. | |
const char * | _dbus_strerror_from_errno (void) |
Get error message from errno. | |
void | _dbus_disable_sigpipe (void) |
signal (SIGPIPE, SIG_IGN); | |
void | _dbus_exit (int code) _DBUS_GNUC_NORETURN |
Exit the process, returning the given value. | |
int | _dbus_printf_string_upper_bound (const char *format, va_list args) |
Measure the length of the given format string and arguments, not including the terminating nul. | |
dbus_bool_t | _dbus_stat (const DBusString *filename, DBusStat *statbuf, DBusError *error) |
stat() wrapper. | |
dbus_bool_t | _dbus_full_duplex_pipe (int *fd1, int *fd2, dbus_bool_t blocking, DBusError *error) |
Creates a full-duplex pipe (as in socketpair()). | |
void | _dbus_print_backtrace (void) |
On GNU libc systems, print a crude backtrace to stderr. | |
dbus_bool_t | _dbus_become_daemon (const DBusString *pidfile, DBusPipe *print_pid_pipe, DBusError *error, dbus_bool_t keep_umask) |
Does the chdir, fork, setsid, etc. | |
dbus_bool_t | _dbus_verify_daemon_user (const char *user) |
Verify that after the fork we can successfully change to this user. | |
dbus_bool_t | _dbus_change_to_daemon_user (const char *user, DBusError *error) |
Changes the user and group the bus is running as. | |
dbus_bool_t | _dbus_write_pid_to_file_and_pipe (const DBusString *pidfile, DBusPipe *print_pid_pipe, dbus_pid_t pid_to_write, DBusError *error) |
Writes the given pid_to_write to a pidfile (if non-NULL) and/or to a pipe (if non-NULL). | |
dbus_bool_t | _dbus_command_for_pid (unsigned long pid, DBusString *str, int max_len, DBusError *error) |
Get a printable string describing the command used to execute the process with pid. | |
void | _dbus_set_signal_handler (int sig, DBusSignalHandler handler) |
Installs a UNIX signal handler. | |
dbus_bool_t | _dbus_user_at_console (const char *username, DBusError *error) |
Checks if user is at the console. | |
void | _dbus_init_system_log (void) |
void | _dbus_system_log (DBusSystemLogSeverity severity, const char *msg,...) |
Log a message to the system log file (e.g. | |
void | _dbus_system_logv (DBusSystemLogSeverity severity, const char *msg, va_list args) |
Log a message to the system log file (e.g. | |
dbus_bool_t | _dbus_get_autolaunch_address (const char *scope, DBusString *address, DBusError *error) |
Returns the address of a new session bus. | |
dbus_bool_t | _dbus_lookup_session_address (dbus_bool_t *supported, DBusString *address, DBusError *error) |
Determines the address of the session bus by querying a platform-specific method. | |
dbus_bool_t | _dbus_read_local_machine_uuid (DBusGUID *machine_id, dbus_bool_t create_if_not_found, DBusError *error) |
Reads the uuid of the machine we're running on from the dbus configuration. | |
dbus_bool_t | _dbus_threads_init_platform_specific (void) |
Initialize threads as in dbus_threads_init_default(), appropriately for the platform. | |
unsigned long | _dbus_pid_for_log (void) |
The only reason this is separate from _dbus_getpid() is to allow it on Windows for logging but not for other purposes. | |
dbus_pid_t | _dbus_getpid (void) |
Gets our process ID. | |
void | _dbus_flush_caches (void) |
Called when the bus daemon is signaled to reload its configuration; any caches should be nuked. | |
void | _dbus_request_file_descriptor_limit (unsigned int limit) |
Attempt to ensure that the current process can open at least file descriptors. | |
const char * | _dbus_replace_install_prefix (const char *configure_time_path) |
Internal system-dependent API available on UNIX and Windows.
The system-dependent API has a dual purpose. First, it encapsulates all usage of operating system APIs for ease of auditing and to avoid cluttering the rest of the code with bizarre OS quirks and headers. Second, it abstracts different operating system APIs for portability.
#define _DBUS_DOUBLES_BITWISE_EQUAL | ( | a, | |
b | |||
) |
(_DBUS_BYTE_OF_PRIMITIVE (a, 0) == _DBUS_BYTE_OF_PRIMITIVE (b, 0) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 1) == _DBUS_BYTE_OF_PRIMITIVE (b, 1) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 2) == _DBUS_BYTE_OF_PRIMITIVE (b, 2) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 3) == _DBUS_BYTE_OF_PRIMITIVE (b, 3) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 4) == _DBUS_BYTE_OF_PRIMITIVE (b, 4) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 5) == _DBUS_BYTE_OF_PRIMITIVE (b, 5) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 6) == _DBUS_BYTE_OF_PRIMITIVE (b, 6) && \ _DBUS_BYTE_OF_PRIMITIVE (a, 7) == _DBUS_BYTE_OF_PRIMITIVE (b, 7))
On x86 there is an 80-bit FPU, and if you do "a == b" it may have a or b in an 80-bit register, thus failing to compare the two 64-bit doubles for bitwise equality.
So this macro compares the two doubles bitwise.
Definition at line 470 of file dbus-sysdeps.h.
Type representing a universally unique ID.
Definition at line 491 of file dbus-sysdeps.h.
int _dbus_accept | ( | int | listen_fd | ) |
Accepts a connection on a listening socket.
Handles EINTR for you.
This will enable FD_CLOEXEC for the returned socket.
listen_fd | the listen file descriptor |
Handles EINTR for you.
listen_fd | the listen file descriptor |
Definition at line 1820 of file dbus-sysdeps-unix.c.
References _dbus_fd_set_close_on_exec(), and NULL.
dbus_bool_t _dbus_append_keyring_directory_for_credentials | ( | DBusString * | directory, |
DBusCredentials * | credentials | ||
) |
Appends the directory in which a keyring for the given credentials should be stored.
The credentials should have either a Windows or UNIX user in them. The directory should be an absolute path.
On UNIX the directory is ~/.dbus-keyrings while on Windows it should probably be something else, since the dotfile convention is not normal on Windows.
directory | string to append directory to |
credentials | credentials the directory should be for |
Definition at line 3739 of file dbus-sysdeps-unix.c.
References _dbus_assert, NULL, _dbus_credentials_are_anonymous(), _dbus_string_init(), FALSE, _dbus_credentials_get_unix_uid(), DBUS_UID_UNSET, _dbus_homedir_from_uid(), _dbus_getenv(), _dbus_string_set_length(), _dbus_string_append(), _dbus_string_get_const_data(), _dbus_warn(), TRUE, _dbus_string_init_const(), _dbus_concat_dir_and_file(), _dbus_string_copy(), _dbus_string_get_length(), and _dbus_string_free().
Referenced by _dbus_keyring_new_for_credentials().
dbus_bool_t _dbus_append_session_config_file | ( | DBusString * | str | ) |
Append the absolute path of the session.conf file.
str | the string to append to |
Definition at line 3707 of file dbus-sysdeps-unix.c.
References _dbus_string_append().
dbus_bool_t _dbus_append_system_config_file | ( | DBusString * | str | ) |
Append the absolute path of the system.conf file (there is no system bus on Windows so this can just return FALSE and print a warning or something)
str | the string to append to |
Definition at line 3695 of file dbus-sysdeps-unix.c.
References _dbus_string_append().
dbus_bool_t _dbus_append_user_from_current_process | ( | DBusString * | str | ) |
Append to the string the identity we would like to have when we authenticate, on UNIX this is the current process UID and on Windows something else, probably a Windows SID string.
No escaping is required, that is done in dbus-auth.c. The username here need not be anything human-readable, it can be the machine-readable form i.e. a user id.
str | the string to append to |
No escaping is required, that is done in dbus-auth.c. The username here need not be anything human-readable, it can be the machine-readable form i.e. a user id.
str | the string to append to |
Definition at line 2237 of file dbus-sysdeps-unix.c.
References _dbus_string_append_uint(), _dbus_geteuid(), FALSE, NULL, and _dbus_string_append().
dbus_int32_t _dbus_atomic_dec | ( | DBusAtomic * | atomic | ) |
Atomically decrement an integer.
atomic | pointer to the integer to decrement |
Definition at line 2355 of file dbus-sysdeps-unix.c.
References DBusAtomic::value, _DBUS_LOCK, and _DBUS_UNLOCK.
Referenced by _dbus_connection_unref_unlocked(), dbus_connection_unref(), dbus_free(), dbus_message_unref(), dbus_pending_call_unref(), _dbus_server_unref_unlocked(), and dbus_server_unref().
dbus_int32_t _dbus_atomic_inc | ( | DBusAtomic * | atomic | ) |
Atomically increments an integer.
atomic | pointer to the integer to increment |
Definition at line 2334 of file dbus-sysdeps-unix.c.
References DBusAtomic::value, _DBUS_LOCK, and _DBUS_UNLOCK.
Referenced by _dbus_connection_ref_unlocked(), dbus_connection_ref(), dbus_malloc(), dbus_malloc0(), dbus_realloc(), dbus_message_ref(), dbus_pending_call_ref(), _dbus_server_ref_unlocked(), and dbus_server_ref().
dbus_bool_t _dbus_become_daemon | ( | const DBusString * | pidfile, |
DBusPipe * | print_pid_pipe, | ||
DBusError * | error, | ||
dbus_bool_t | keep_umask | ||
) |
Does the chdir, fork, setsid, etc.
to become a daemon process.
pidfile | NULL, or pidfile to create |
print_pid_pipe | pipe to print daemon's pid to, or -1 for none |
error | return location for errors |
keep_umask | TRUE to keep the original umask |
to become a daemon process.
pidfile | NULL, or pidfile to create |
print_pid_fd | file descriptor to print daemon's pid to, or -1 for none |
error | return location for errors |
keep_umask | TRUE to keep the original umask |
Definition at line 78 of file dbus-sysdeps-util-unix.c.
References dbus_set_error(), DBUS_ERROR_FAILED, FALSE, _dbus_error_from_errno(), _dbus_getenv(), NULL, _dbus_assert_not_reached, _dbus_write_pid_to_file_and_pipe(), DBusError::message, and TRUE.
dbus_bool_t _dbus_change_to_daemon_user | ( | const char * | user, |
DBusError * | error | ||
) |
Changes the user and group the bus is running as.
user | the user to become |
error | return location for errors |
Definition at line 324 of file dbus-sysdeps-util-unix.c.
References _dbus_string_init_const(), _dbus_get_user_id_and_primary_group(), dbus_set_error(), DBUS_ERROR_FAILED, FALSE, NULL, _dbus_warn(), _dbus_error_from_errno(), and TRUE.
dbus_bool_t _dbus_check_dir_is_private_to_user | ( | DBusString * | dir, |
DBusError * | error | ||
) |
Checks to make sure the given directory is private to the user.
dir | the name of the directory |
error | error return |
Definition at line 1871 of file dbus-sysdeps-unix.c.
References _dbus_string_get_const_data(), dbus_set_error(), _dbus_error_from_errno(), FALSE, DBUS_ERROR_FAILED, and TRUE.
dbus_bool_t _dbus_check_setuid | ( | void | ) |
**NOTE**: If you modify this function, please also consider making the corresponding change in GLib.
See glib/gutils.c:g_check_setuid().
Returns TRUE if the current process was executed as setuid (or an equivalent __libc_enable_secure is available). See: http://osdir.com/ml/linux.lfs.hardened/2007-04/msg00032.html
Definition at line 3913 of file dbus-sysdeps-unix.c.
Referenced by _dbus_keyring_new_for_credentials(), _dbus_get_autolaunch_address(), _dbus_lookup_launchd_socket(), and _dbus_getenv().
dbus_bool_t _dbus_clearenv | ( | void | ) |
dbus_bool_t _dbus_close_socket | ( | int | fd, |
DBusError * | error | ||
) |
Closes a socket.
Should not be used on non-socket file descriptors or handles.
fd | the socket |
error | return location for an error |
Closes a socket.
fd | the file descriptor |
error | error object |
Definition at line 168 of file dbus-sysdeps-unix.c.
References _dbus_close(), dbus_set_error(), _dbus_error_from_errno(), _dbus_strerror_from_errno(), FALSE, and TRUE.
Referenced by _dbus_server_new_for_tcp_socket(), _dbus_server_listen_platform_specific(), _dbus_server_new_for_domain_socket(), _dbus_babysitter_unref(), _dbus_transport_new_for_tcp_socket(), and _dbus_transport_new_for_domain_socket().
dbus_bool_t _dbus_command_for_pid | ( | unsigned long | pid, |
DBusString * | str, | ||
int | max_len, | ||
DBusError * | error | ||
) |
Get a printable string describing the command used to execute the process with pid.
This string should only be used for informative purposes such as logging; it may not be trusted.
The command is guaranteed to be printable ASCII and no longer than max_len.
pid | Process id |
str | Append command to this string |
max_len | Maximum length of returned command |
error | return location for errors |
Definition at line 1084 of file dbus-sysdeps-util-unix.c.
References _dbus_string_init(), FALSE, _dbus_string_free(), _dbus_string_append_printf(), _dbus_string_get_const_data(), dbus_set_error(), _dbus_error_from_errno(), _dbus_read(), _dbus_close(), _dbus_string_copy(), _dbus_string_get_length(), and TRUE.
dbus_bool_t _dbus_concat_dir_and_file | ( | DBusString * | dir, |
const DBusString * | next_component | ||
) |
Appends the given filename to the given directory.
dir | the directory name |
next_component | the filename |
dir | the directory name |
next_component | the filename |
Definition at line 2555 of file dbus-sysdeps-unix.c.
References _dbus_string_get_length(), TRUE, _dbus_string_get_byte(), _dbus_string_shorten(), _dbus_string_append_byte(), FALSE, and _dbus_string_copy().
Referenced by _dbus_keyring_new_for_credentials(), _dbus_server_listen_platform_specific(), _dbus_get_standard_session_servicedirs(), _dbus_append_keyring_directory_for_credentials(), and _dbus_split_paths_and_append().
int _dbus_connect_tcp_socket | ( | const char * | host, |
const char * | port, | ||
const char * | family, | ||
DBusError * | error | ||
) |
Creates a socket and connects to a socket at the given host and port.
The connection fd is returned, and is set up as nonblocking.
This will set FD_CLOEXEC for the socket returned
host | the host name to connect to |
port | the port to connect to |
family | the address family to listen on, NULL for all |
error | return location for error code |
The connection fd is returned, and is set up as nonblocking.
host | the host name to connect to |
port | the port to connect to |
family | the address family to listen on, NULL for all |
error | return location for error code |
Definition at line 1144 of file dbus-sysdeps-unix.c.
References NULL.
dbus_bool_t _dbus_create_directory | ( | const DBusString * | filename, |
DBusError * | error | ||
) |
directory interface
directory interface
filename | directory filename |
error | initialized error object |
Definition at line 2521 of file dbus-sysdeps-unix.c.
References _dbus_string_get_const_data(), TRUE, dbus_set_error(), DBUS_ERROR_FAILED, FALSE, NULL, and _dbus_strerror_from_errno().
Referenced by _dbus_keyring_new_for_credentials().
dbus_bool_t _dbus_credentials_add_from_current_process | ( | DBusCredentials * | credentials | ) |
Adds the credentials of the current process to the passed-in credentials object.
credentials | credentials to add to |
Definition at line 2207 of file dbus-sysdeps-unix.c.
References _dbus_assert, _dbus_credentials_add_unix_pid(), _dbus_getpid(), FALSE, _dbus_credentials_add_unix_uid(), _dbus_geteuid(), TRUE, NULL, and _dbus_credentials_add_windows_sid().
Referenced by _dbus_credentials_new_from_current_process(), _dbus_keyring_new_for_credentials(), and _dbus_read_credentials_socket().
dbus_bool_t _dbus_credentials_add_from_user | ( | DBusCredentials * | credentials, |
const DBusString * | username | ||
) |
Adds the credentials corresponding to the given username.
credentials | credentials to fill in |
username | the username |
Used among other purposes to parses a desired identity provided from a client in the auth protocol. On UNIX this means parsing a UID, on Windows probably parsing an SID string.
credentials | credentials to fill in |
username | the username |
Definition at line 1780 of file dbus-sysdeps-win.c.
References _dbus_credentials_add_windows_sid(), _dbus_string_get_const_data(), _dbus_user_database_lock_system(), _dbus_user_database_get_system(), NULL, _dbus_user_database_unlock_system(), FALSE, _dbus_user_database_get_username(), _dbus_credentials_add_unix_uid(), DBusUserInfo::uid, and TRUE.
dbus_bool_t _dbus_delete_directory | ( | const DBusString * | filename, |
DBusError * | error | ||
) |
Removes a directory; Directory must be empty.
filename | directory filename |
error | initialized error object |
Definition at line 3837 of file dbus-sysdeps-unix.c.
References _dbus_string_get_const_data(), dbus_set_error(), DBUS_ERROR_FAILED, FALSE, and TRUE.
dbus_bool_t _dbus_directory_get_next_file | ( | DBusDirIter * | iter, |
DBusString * | filename, | ||
DBusError * | error | ||
) |
Get next file in the directory.
Will not return "." or ".." on UNIX. If an error occurs, the contents of "filename" are undefined. The error is never set if the function succeeds.
This function is not re-entrant, and not necessarily thread-safe. Only use it for test code or single-threaded utilities.
iter | the iterator |
filename | string to be set to the next file in the dir |
error | return location for error |
Will not return "." or ".." on UNIX. If an error occurs, the contents of "filename" are undefined. The error is never set if the function succeeds.
iter | the iterator |
filename | string to be set to the next file in the dir |
error | return location for error |
Definition at line 678 of file dbus-sysdeps-util-unix.c.
References DBusDirIter::d, dbus_set_error(), _dbus_error_from_errno(), FALSE, _dbus_string_set_length(), _dbus_string_append(), DBUS_ERROR_NO_MEMORY, TRUE, and NULL.
DBusDirIter* _dbus_directory_open | ( | const DBusString * | filename, |
DBusError * | error | ||
) |
Open a directory to iterate over.
filename | the directory name |
error | exception return object or NULL |
Definition at line 630 of file dbus-sysdeps-util-unix.c.
References _dbus_string_get_const_data(), NULL, dbus_set_error(), _dbus_error_from_errno(), dbus_new0, DBUS_ERROR_NO_MEMORY, and DBusDirIter::d.
const char* _dbus_error_from_errno | ( | int | error_number | ) |
Converts a UNIX errno, or Windows errno or WinSock error value into a DBusError name.
error_number | the errno. |
Definition at line 909 of file dbus-sysdeps.c.
References DBUS_ERROR_FAILED, DBUS_ERROR_NOT_SUPPORTED, DBUS_ERROR_LIMITS_EXCEEDED, DBUS_ERROR_ACCESS_DENIED, DBUS_ERROR_NO_MEMORY, DBUS_ERROR_NO_SERVER, DBUS_ERROR_TIMEOUT, DBUS_ERROR_NO_NETWORK, DBUS_ERROR_ADDRESS_IN_USE, DBUS_ERROR_FILE_EXISTS, and DBUS_ERROR_FILE_NOT_FOUND.
Referenced by _dbus_file_get_contents(), _dbus_string_save_to_file(), _dbus_connect_unix_socket(), _dbus_listen_unix_socket(), _dbus_listen_systemd_sockets(), _dbus_listen_tcp_socket(), _dbus_read_credentials_socket(), _dbus_check_dir_is_private_to_user(), _dbus_close(), _dbus_dup(), _dbus_full_duplex_pipe(), _dbus_become_daemon(), _dbus_change_to_daemon_user(), _dbus_stat(), _dbus_directory_open(), _dbus_directory_get_next_file(), _dbus_command_for_pid(), _dbus_close_socket(), _dbus_send_credentials_socket(), and _dbus_error_from_system_errno().
const char* _dbus_error_from_system_errno | ( | void | ) |
Converts the current system errno value into a DBusError name.
Definition at line 1007 of file dbus-sysdeps.c.
References _dbus_error_from_errno().
void _dbus_exit | ( | int | code | ) |
Exit the process, returning the given value.
code | the exit code |
Definition at line 2691 of file dbus-sysdeps-unix.c.
Referenced by _dbus_abort().
void _dbus_fd_set_close_on_exec | ( | intptr_t | handle | ) |
Sets the file descriptor to be close on exec.
Should be called for all file descriptors in D-Bus code.
fd | the file descriptor |
Definition at line 2733 of file dbus-sysdeps-unix.c.
Referenced by _dbus_server_new_for_launchd(), _dbus_read_socket_with_unix_fds(), _dbus_accept(), _dbus_dup(), _dbus_full_duplex_pipe(), and _dbus_listen_tcp_socket().
void _dbus_flush_caches | ( | void | ) |
Called when the bus daemon is signaled to reload its configuration; any caches should be nuked.
Of course any caches that need explicit reload are probably broken, but c'est la vie.
Definition at line 3720 of file dbus-sysdeps-unix.c.
References _dbus_user_database_flush_system().
dbus_bool_t _dbus_full_duplex_pipe | ( | int * | fd1, |
int * | fd2, | ||
dbus_bool_t | blocking, | ||
DBusError * | error | ||
) |
Creates a full-duplex pipe (as in socketpair()).
Sets both ends of the pipe nonblocking.
Marks both file descriptors as close-on-exec
fd1 | return location for one end |
fd2 | return location for the other end |
blocking | TRUE if pipe should be blocking |
error | error return |
Sets both ends of the pipe nonblocking.
fd1 | return location for one end |
fd2 | return location for the other end |
blocking | TRUE if pipe should be blocking |
error | error return |
Definition at line 2909 of file dbus-sysdeps-unix.c.
References dbus_set_error(), _dbus_error_from_errno(), FALSE, _dbus_fd_set_close_on_exec(), NULL, _dbus_close(), TRUE, _dbus_warn(), DBUS_ERROR_FAILED, _DBUS_ZERO, and _dbus_strerror_from_errno().
Referenced by _dbus_spawn_async_with_babysitter().
dbus_bool_t _dbus_generate_random_ascii | ( | DBusString * | str, |
int | n_bytes | ||
) |
Generates the given number of random bytes, where the bytes are chosen from the alphanumeric ASCII subset.
str | the string |
n_bytes | the number of random ASCII bytes to append to string |
Definition at line 870 of file dbus-sysdeps.c.
References _dbus_generate_random_bytes(), FALSE, _dbus_string_get_length(), _dbus_string_set_byte(), _dbus_string_get_byte(), _dbus_assert, _dbus_string_validate_ascii(), and TRUE.
Referenced by _dbus_string_save_to_file(), and _dbus_server_listen_platform_specific().
dbus_bool_t _dbus_generate_random_bytes | ( | DBusString * | str, |
int | n_bytes | ||
) |
Generates the given number of random bytes, using the best mechanism we can come up with.
str | the string |
n_bytes | the number of random bytes to append to string |
Definition at line 2648 of file dbus-sysdeps-unix.c.
References _dbus_string_get_length(), _dbus_read(), _dbus_close(), NULL, _dbus_string_set_length(), TRUE, _dbus_string_lengthen(), FALSE, and _dbus_string_get_data_len().
Referenced by _dbus_generate_random_bytes_buffer(), and _dbus_generate_random_ascii().
void _dbus_generate_random_bytes_buffer | ( | char * | buffer, |
int | n_bytes | ||
) |
Fills n_bytes of the given buffer with random bytes.
buffer | an allocated buffer |
n_bytes | the number of bytes in buffer to write to |
Definition at line 838 of file dbus-sysdeps.c.
References _dbus_string_init(), _dbus_generate_pseudorandom_bytes_buffer(), _dbus_generate_random_bytes(), _dbus_string_free(), and _dbus_string_copy_to_buffer().
Referenced by _dbus_generate_uuid().
dbus_bool_t _dbus_get_autolaunch_address | ( | const char * | scope, |
DBusString * | address, | ||
DBusError * | error | ||
) |
Returns the address of a new session bus.
If successful, returns TRUE and appends the address to address
. If a failure happens, returns FALSE and sets an error in error
.
address | a DBusString where the address can be stored |
error | a DBusError to store the error in case of failure |
Definition at line 3256 of file dbus-sysdeps-unix.c.
References _dbus_check_setuid(), dbus_set_error_const(), DBUS_ERROR_NOT_SUPPORTED, FALSE, _dbus_getenv(), NULL, _dbus_string_init(), _dbus_get_local_machine_uuid_encoded(), _dbus_string_get_data(), _dbus_assert, _DBUS_N_ELEMENTS, TRUE, _dbus_string_free(), DBUS_ERROR_FAILED, and _dbus_string_get_const_data().
void _dbus_get_current_time | ( | long * | tv_sec, |
long * | tv_usec | ||
) |
Get current time, as in gettimeofday().
Use the monotonic clock if available, to avoid problems when the system time changes.
tv_sec | return location for number of seconds |
tv_usec | return location for number of microseconds (thousandths) |
tv_sec | return location for number of seconds |
tv_usec | return location for number of microseconds |
Definition at line 2489 of file dbus-sysdeps-unix.c.
References NULL, dbus_uint64_t, and DBUS_INT64_CONSTANT.
Referenced by _dbus_connection_block_pending_call(), _dbus_generate_uuid(), and _dbus_generate_pseudorandom_bytes_buffer().
char ** _dbus_get_environment | ( | void | ) |
Gets a NULL-terminated list of key=value pairs from the environment.
Use dbus_free_string_array to free it.
Definition at line 222 of file dbus-sysdeps.c.
References _dbus_assert, NULL, dbus_new0, _dbus_strdup(), and dbus_free_string_array().
dbus_bool_t _dbus_get_is_errno_eagain_or_ewouldblock | ( | void | ) |
See if errno is EAGAIN or EWOULDBLOCK (this has to be done differently for Winsock so is abstracted)
Definition at line 3824 of file dbus-sysdeps-unix.c.
dbus_bool_t _dbus_get_is_errno_eintr | ( | void | ) |
See if errno is EINTR.
Definition at line 1050 of file dbus-sysdeps.c.
dbus_bool_t _dbus_get_is_errno_enomem | ( | void | ) |
See if errno is ENOMEM.
Definition at line 1040 of file dbus-sysdeps.c.
dbus_bool_t _dbus_get_is_errno_epipe | ( | void | ) |
See if errno is EPIPE.
Definition at line 1060 of file dbus-sysdeps.c.
dbus_bool_t _dbus_get_is_errno_nonzero | ( | void | ) |
dbus_bool_t _dbus_get_standard_session_servicedirs | ( | DBusList ** | dirs | ) |
Returns the standard directories for a session bus to look for service activation files.
On UNIX this should be the standard xdg freedesktop.org data directories:
XDG_DATA_HOME=${XDG_DATA_HOME-$HOME/.local/share} XDG_DATA_DIRS=${XDG_DATA_DIRS-/usr/local/share:/usr/share}
and
DBUS_DATADIR
dirs | the directory list we are returning |
On Windows this should be data directories:
CommonProgramFiles%/dbus
and
relocated DBUS_DATADIR
dirs | the directory list we are returning |
Definition at line 3548 of file dbus-sysdeps-unix.c.
References _dbus_string_init(), FALSE, _dbus_getenv(), NULL, _dbus_string_append(), _dbus_homedir_from_current_process(), _dbus_string_get_const_data(), _dbus_string_init_const(), _dbus_concat_dir_and_file(), _dbus_split_paths_and_append(), _dbus_string_free(), TRUE, and _dbus_path_is_absolute().
dbus_bool_t _dbus_get_standard_system_servicedirs | ( | DBusList ** | dirs | ) |
Returns the standard directories for a system bus to look for service activation files.
On UNIX this should be the standard xdg freedesktop.org data directories:
XDG_DATA_DIRS=${XDG_DATA_DIRS-/usr/local/share:/usr/share}
and
DBUS_DATADIR
On Windows there is no system bus and this function can return nothing.
dirs | the directory list we are returning |
Definition at line 3640 of file dbus-sysdeps-unix.c.
References _dbus_string_init(), FALSE, _dbus_getenv(), NULL, _dbus_string_append(), _dbus_split_paths_and_append(), _dbus_string_free(), and TRUE.
const char* _dbus_get_tmpdir | ( | void | ) |
Gets the temporary files directory by inspecting the environment variables TMPDIR, TMP, and TEMP in that order.
If none of those are set "/tmp" is returned
Definition at line 2998 of file dbus-sysdeps-unix.c.
References NULL, _dbus_assert, _dbus_warn(), and _dbus_abort().
const char * _dbus_getenv | ( | const char * | varname | ) |
Wrapper for getenv().
varname | name of environment variable |
Definition at line 183 of file dbus-sysdeps.c.
References _dbus_check_setuid(), and NULL.
Referenced by _dbus_server_new_for_launchd(), _dbus_get_autolaunch_address(), _dbus_get_standard_session_servicedirs(), _dbus_get_standard_system_servicedirs(), _dbus_append_keyring_directory_for_credentials(), _dbus_become_daemon(), and _dbus_abort().
dbus_pid_t _dbus_getpid | ( | void | ) |
Gets our process ID.
Definition at line 2248 of file dbus-sysdeps-unix.c.
Referenced by _dbus_credentials_add_from_current_process(), and _dbus_pid_for_log().
int _dbus_listen_tcp_socket | ( | const char * | host, |
const char * | port, | ||
const char * | family, | ||
DBusString * | retport, | ||
int ** | fds_p, | ||
DBusError * | error | ||
) |
Creates a socket and binds it to the given path, then listens on the socket.
The socket is set to be nonblocking. In case of port=0 a random free port is used and returned in the port parameter. If inaddr_any is specified, the hostname is ignored.
This will set FD_CLOEXEC for the socket returned
host | the host name to listen on |
port | the port to listen on, if zero a free port will be used |
family | the address family to listen on, NULL for all |
retport | string to return the actual port listened on |
fds_p | location to store returned file descriptors |
error | return location for errors |
The socket is set to be nonblocking. In case of port=0 a random free port is used and returned in the port parameter. If inaddr_any is specified, the hostname is ignored.
host | the host name to listen on |
port | the port to listen on, if zero a free port will be used |
family | the address family to listen on, NULL for all |
retport | string to return the actual port listened on |
fds_p | location to store returned file descriptors |
error | return location for errors |
Definition at line 1277 of file dbus-sysdeps-unix.c.
References NULL, _DBUS_ZERO, dbus_set_error(), DBUS_ERROR_BAD_ADDRESS, _dbus_error_from_errno(), _dbus_warn(), _dbus_close(), dbus_realloc(), _dbus_string_get_length(), _dbus_string_append(), DBUS_ERROR_NO_MEMORY, _dbus_string_get_const_data(), dbus_free(), DBUS_ERROR_INVALID_ARGS, _dbus_strerror_from_errno(), and _dbus_fd_set_close_on_exec().
Referenced by _dbus_server_new_for_tcp_socket().
dbus_bool_t _dbus_lookup_session_address | ( | dbus_bool_t * | supported, |
DBusString * | address, | ||
DBusError * | error | ||
) |
Determines the address of the session bus by querying a platform-specific method.
The first parameter will be a boolean specifying whether or not a dynamic session lookup is supported on this platform.
If supported is TRUE and the return value is TRUE, the address will be appended to address
. If a failure happens, returns FALSE and sets an error in error
.
If supported is FALSE, ignore the return value.
supported | returns whether this method is supported |
address | a DBusString where the address can be stored |
error | a DBusError to store the error in case of failure |
Definition at line 3513 of file dbus-sysdeps-unix.c.
dbus_bool_t _dbus_open_tcp_socket | ( | int * | fd, |
DBusError * | error | ||
) |
Socket interface.
Definition at line 136 of file dbus-sysdeps-unix.c.
dbus_bool_t _dbus_parse_unix_group_from_config | ( | const DBusString * | groupname, |
dbus_gid_t * | gid_p | ||
) |
Parse a UNIX group from the bus config file.
On Windows, this should simply always fail (just return FALSE).
groupname | the groupname text |
gid_p | place to return the gid |
Definition at line 927 of file dbus-sysdeps-util-unix.c.
References _dbus_get_group_id(), and FALSE.
dbus_bool_t _dbus_parse_unix_user_from_config | ( | const DBusString * | username, |
dbus_uid_t * | uid_p | ||
) |
Parse a UNIX user from the bus config file.
On Windows, this should simply always fail (just return FALSE).
username | the username text |
uid_p | place to return the uid |
Definition at line 911 of file dbus-sysdeps-util-unix.c.
References _dbus_get_user_id(), and FALSE.
dbus_bool_t _dbus_path_is_absolute | ( | const DBusString * | filename | ) |
Checks whether the filename is an absolute path.
filename | the filename |
Definition at line 565 of file dbus-sysdeps-util-unix.c.
References _dbus_string_get_length(), _dbus_string_get_byte(), and FALSE.
Referenced by _dbus_get_standard_session_servicedirs().
unsigned long _dbus_pid_for_log | ( | void | ) |
The only reason this is separate from _dbus_getpid() is to allow it on Windows for logging but not for other purposes.
Definition at line 2278 of file dbus-sysdeps-unix.c.
References _dbus_getpid().
Referenced by _dbus_warn_check_failed(), _dbus_real_assert(), _dbus_real_assert_not_reached(), and _dbus_abort().
int _dbus_poll | ( | DBusPollFD * | fds, |
int | n_fds, | ||
int | timeout_milliseconds | ||
) |
Wrapper for poll().
fds | the file descriptors to poll |
n_fds | number of descriptors in the array |
timeout_milliseconds | timeout or -1 for infinite |
Definition at line 2390 of file dbus-sysdeps-unix.c.
References _DBUS_POLLIN, _DBUS_POLLPRI, _DBUS_POLLOUT, _DBUS_POLLERR, _DBUS_POLLHUP, _DBUS_POLLNVAL, _dbus_warn(), DBusPollFD::events, DBusPollFD::fd, NULL, DBusPollFD::revents, FALSE, _dbus_assert_not_reached, and _dbus_strerror_from_errno().
void _dbus_print_backtrace | ( | void | ) |
On GNU libc systems, print a crude backtrace to stderr.
On other systems, print "no backtrace support" and block for possible gdb attachment if an appropriate environment variable is set.
Definition at line 2862 of file dbus-sysdeps-unix.c.
Referenced by _dbus_abort().
int _dbus_printf_string_upper_bound | ( | const char * | format, |
va_list | args | ||
) |
Measure the length of the given format string and arguments, not including the terminating nul.
format | a printf-style format string |
args | arguments for the format string |
Definition at line 2984 of file dbus-sysdeps-unix.c.
Referenced by _dbus_string_append_printf_valist().
dbus_bool_t _dbus_read_credentials_socket | ( | int | handle, |
DBusCredentials * | credentials, | ||
DBusError * | error | ||
) |
Reads a single byte which must be nul (an error occurs otherwise), and reads unix credentials if available.
Clears the credentials object, then adds pid/uid if available, so any previous credentials stored in the object are lost.
Return value indicates whether a byte was read, not whether we got valid credentials. On some systems, such as Linux, reading/writing the byte isn't actually required, but we do it anyway just to avoid multiple codepaths.
Fails if no byte is available, so you must select() first.
The point of the byte is that on some systems we have to use sendmsg()/recvmsg() to transmit credentials.
client_fd | the client file descriptor |
credentials | object to add client credentials to |
error | location to store error code |
Fills in pid/uid/gid with -1 if no credentials are available. Return value indicates whether a byte was read, not whether we got valid credentials. On some systems, such as Linux, reading/writing the byte isn't actually required, but we do it anyway just to avoid multiple codepaths.
Fails if no byte is available, so you must select() first.
The point of the byte is that on some systems we have to use sendmsg()/recvmsg() to transmit credentials.
client_fd | the client file descriptor |
credentials | struct to fill with credentials of client |
error | location to store error code |
Definition at line 1557 of file dbus-sysdeps-unix.c.
References DBUS_UID_UNSET, DBUS_PID_UNSET, _dbus_assert, _dbus_credentials_clear(), _DBUS_ZERO, dbus_set_error(), _dbus_error_from_errno(), FALSE, DBUS_ERROR_FAILED, NULL, _dbus_credentials_add_adt_audit_data(), DBUS_PID_FORMAT, DBUS_UID_FORMAT, _dbus_credentials_add_unix_pid(), _dbus_credentials_add_unix_uid(), TRUE, _dbus_string_init(), _dbus_read_socket(), _dbus_string_free(), and _dbus_credentials_add_from_current_process().
dbus_bool_t _dbus_read_local_machine_uuid | ( | DBusGUID * | machine_id, |
dbus_bool_t | create_if_not_found, | ||
DBusError * | error | ||
) |
Reads the uuid of the machine we're running on from the dbus configuration.
Optionally try to create it (only root can do this usually).
On UNIX, reads a file that gets created by dbus-uuidgen in a post-install script. On Windows, if there's a standard machine uuid we could just use that, but I can't find one with the right properties (the hardware profile guid can change without rebooting I believe). If there's no standard one we might want to use the registry instead of a file for this, and I'm not sure how we'd ensure the uuid gets created.
machine_id | guid to init with the machine's uuid |
create_if_not_found | try to create the uuid if it doesn't exist |
error | the error return |
Definition at line 3354 of file dbus-sysdeps-unix.c.
References _dbus_string_init_const(), _dbus_read_uuid_file(), TRUE, dbus_error_free(), FALSE, dbus_set_error(), DBUS_ERROR_NO_MEMORY, NULL, and DBusGUID::as_uint32s.
Referenced by _dbus_get_local_machine_uuid_encoded(), and dbus_internal_do_not_use_get_uuid().
int _dbus_read_socket | ( | int | fd, |
DBusString * | buffer, | ||
int | count | ||
) |
Like _dbus_read(), but only works on sockets so is available on Windows.
fd | the socket |
buffer | string to append data to |
count | max amount of data to read |
Like _dbus_read(), but only works on sockets so is available on Windows.
Thin wrapper around the read() system call that appends the data it reads to the DBusString buffer. It appends up to the given count, and returns the same value and same errno as read(). The only exception is that _dbus_read_socket() handles EINTR for you. _dbus_read_socket() can return ENOMEM, even though regular UNIX read doesn't.
fd | the file descriptor to read from |
buffer | the buffer to append data to |
count | the amount of data to read |
Definition at line 184 of file dbus-sysdeps-unix.c.
References _dbus_read(), _dbus_assert, _dbus_string_get_length(), _dbus_string_lengthen(), _dbus_string_get_data_len(), _dbus_string_set_length(), and _dbus_verbose_bytes_of_string().
Referenced by _dbus_read_socket_with_unix_fds(), and _dbus_read_credentials_socket().
int _dbus_read_socket_with_unix_fds | ( | int | fd, |
DBusString * | buffer, | ||
int | count, | ||
int * | fds, | ||
int * | n_fds | ||
) |
Like _dbus_read_socket() but also tries to read unix fds from the socket.
When there are more fds to read than space in the array passed this function will fail with ENOSPC.
fd | the socket |
buffer | string to append data to |
count | max amount of data to read |
fds | array to place read file descriptors in |
n_fds | on input space in fds array, on output how many fds actually got read |
Definition at line 240 of file dbus-sysdeps-unix.c.
References _dbus_read_socket(), _dbus_assert, _dbus_string_get_length(), _dbus_string_lengthen(), _DBUS_ZERO, _dbus_string_get_data_len(), _dbus_string_set_length(), FALSE, TRUE, _dbus_fd_set_close_on_exec(), and _dbus_verbose_bytes_of_string().
void _dbus_request_file_descriptor_limit | ( | unsigned int | limit | ) |
Attempt to ensure that the current process can open at least file descriptors.
If is lower than the current, it will not be lowered. No error is returned if the request can not be satisfied.
Number of file descriptors
Definition at line 387 of file dbus-sysdeps-util-unix.c.
dbus_bool_t _dbus_send_credentials_socket | ( | int | server_fd, |
DBusError * | error | ||
) |
Sends a single nul byte with our UNIX credentials as ancillary data.
Returns TRUE if the data was successfully written. On systems that don't support sending credentials, just writes a byte, doesn't send any credentials. On some systems, such as Linux, reading/writing the byte isn't actually required, but we do it anyway just to avoid multiple codepaths.
Fails if no byte can be written, so you must select() first.
The point of the byte is that on some systems we have to use sendmsg()/recvmsg() to transmit credentials.
server_fd | file descriptor for connection to server |
error | return location for error code |
Definition at line 1799 of file dbus-sysdeps-unix.c.
References TRUE, FALSE, _dbus_string_init_const_len(), _dbus_write_socket(), dbus_set_error(), _dbus_error_from_errno(), _dbus_strerror_from_errno(), DBUS_ERROR_IO_ERROR, and _dbus_assert.
void _dbus_set_signal_handler | ( | int | sig, |
DBusSignalHandler | handler | ||
) |
Installs a UNIX signal handler.
sig | the signal to handle |
handler | the handler |
Installs a UNIX signal handler.
sig | the signal to handle |
handler | the handler |
Definition at line 491 of file dbus-sysdeps-util-unix.c.
References NULL.
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.
varname | name of environment variable |
value | value of environment variable |
Definition at line 112 of file dbus-sysdeps.c.
References _dbus_assert, NULL, TRUE, and FALSE.
Referenced by _dbus_server_new_for_launchd().
void _dbus_sleep_milliseconds | ( | int | milliseconds | ) |
Sleeps the given number of milliseconds.
milliseconds | number of milliseconds |
Definition at line 2600 of file dbus-sysdeps-unix.c.
Referenced by _dbus_abort().
dbus_bool_t _dbus_socket_can_pass_unix_fd | ( | int | fd | ) |
Checks whether file descriptors may be passed via the socket.
fd | the socket |
Definition at line 3865 of file dbus-sysdeps-unix.c.
References _DBUS_ZERO, and FALSE.
Referenced by _dbus_transport_new_for_socket().
dbus_bool_t _dbus_split_paths_and_append | ( | DBusString * | dirs, |
const char * | suffix, | ||
DBusList ** | dir_list | ||
) |
Split paths into a list of char strings.
dirs | string with pathes |
suffix | string concated to each path in dirs |
dir_list | contains a list of splitted pathes return TRUE is pathes could be splittes,FALSE in oom case |
Definition at line 265 of file dbus-sysdeps.c.
References _dbus_string_init_const(), _dbus_string_get_length(), _dbus_string_find(), _dbus_string_init(), _dbus_string_copy_len(), _dbus_string_free(), _dbus_string_chop_white(), _dbus_concat_dir_and_file(), _dbus_string_copy_data(), _dbus_list_append(), dbus_free(), TRUE, _dbus_list_foreach(), NULL, _dbus_list_clear(), and FALSE.
Referenced by _dbus_get_standard_session_servicedirs(), and _dbus_get_standard_system_servicedirs().
dbus_bool_t _dbus_stat | ( | const DBusString * | filename, |
DBusStat * | statbuf, | ||
DBusError * | error | ||
) |
stat() wrapper.
filename | the filename to stat |
statbuf | the stat info to fill in |
error | return location for error |
Definition at line 582 of file dbus-sysdeps-util-unix.c.
References _dbus_string_get_const_data(), dbus_set_error(), _dbus_error_from_errno(), FALSE, DBusStat::mode, DBusStat::nlink, DBusStat::uid, DBusStat::gid, DBusStat::size, DBusStat::atime, DBusStat::mtime, DBusStat::ctime, TRUE, NULL, DBUS_UID_UNSET, DBUS_GID_UNSET, dbus_int64_t, and DBUS_INT64_CONSTANT.
Referenced by _dbus_is_console_user().
const char* _dbus_strerror_from_errno | ( | void | ) |
Get error message from errno.
Definition at line 1070 of file dbus-sysdeps.c.
Referenced by _dbus_write_socket(), _dbus_close_socket(), _dbus_write_socket_two(), _dbus_full_duplex_pipe(), _dbus_poll(), _dbus_listen_tcp_socket(), _dbus_send_credentials_socket(), _dbus_create_directory(), and _dbus_delete_file().
dbus_bool_t _dbus_string_get_dirname | ( | const DBusString * | filename, |
DBusString * | dirname | ||
) |
Get the directory name from a complete filename.
filename | the filename |
dirname | string to append directory name to |
Definition at line 1008 of file dbus-sysdeps-util-unix.c.
References _dbus_assert, NULL, _dbus_string_get_length(), _dbus_string_append(), _dbus_string_get_byte(), _dbus_string_find_byte_backward(), and _dbus_string_copy_len().
void _dbus_system_log | ( | DBusSystemLogSeverity | severity, |
const char * | msg, | ||
... | |||
) |
Log a message to the system log file (e.g.
syslog on Unix).
severity | a severity value |
msg | a printf-style format string |
args | arguments for the format string |
Definition at line 439 of file dbus-sysdeps-util-unix.c.
References _dbus_system_logv().
void _dbus_system_logv | ( | DBusSystemLogSeverity | severity, |
const char * | msg, | ||
va_list | args | ||
) |
Log a message to the system log file (e.g.
syslog on Unix).
severity | a severity value |
msg | a printf-style format string |
args | arguments for the format string |
If the FATAL severity is given, this function will terminate the program with an error code.
Definition at line 461 of file dbus-sysdeps-util-unix.c.
Referenced by _dbus_system_log().
dbus_bool_t _dbus_threads_init_platform_specific | ( | void | ) |
Initialize threads as in dbus_threads_init_default(), appropriately for the platform.
Definition at line 360 of file dbus-sysdeps-pthread.c.
References dbus_threads_init(), and FALSE.
Referenced by dbus_threads_init_default().
dbus_bool_t _dbus_unix_groups_from_uid | ( | dbus_uid_t | uid, |
dbus_gid_t ** | group_ids, | ||
int * | n_group_ids | ||
) |
Gets all groups corresponding to the given UNIX user ID.
On UNIX, just calls _dbus_groups_from_uid(). On Windows, should always fail since we don't know any UNIX groups.
uid | the UID |
group_ids | return location for array of group IDs |
n_group_ids | return location for length of returned array |
Definition at line 944 of file dbus-sysdeps-util-unix.c.
References _dbus_groups_from_uid(), and FALSE.
dbus_bool_t _dbus_unix_user_is_at_console | ( | dbus_uid_t | uid, |
DBusError * | error | ||
) |
Checks to see if the UNIX user ID is at the console.
Should always fail on Windows (set the error to DBUS_ERROR_NOT_SUPPORTED).
uid | UID of person to check |
error | return location for errors |
Definition at line 961 of file dbus-sysdeps-util-unix.c.
References _dbus_is_console_user(), dbus_set_error(), DBUS_ERROR_NOT_SUPPORTED, and FALSE.
dbus_bool_t _dbus_unix_user_is_process_owner | ( | dbus_uid_t | uid | ) |
Checks to see if the UNIX user ID matches the UID of the process.
Should always return FALSE on Windows.
uid | the UNIX user ID |
Definition at line 976 of file dbus-sysdeps-util-unix.c.
References _dbus_geteuid(), and FALSE.
dbus_bool_t _dbus_user_at_console | ( | const char * | username, |
DBusError * | error | ||
) |
Checks if user is at the console.
username | user to check |
error | return location for errors |
Definition at line 522 of file dbus-sysdeps-util-unix.c.
References FALSE, _dbus_string_init(), _dbus_string_append(), _dbus_file_exists(), _dbus_string_get_const_data(), and _dbus_string_free().
Referenced by _dbus_is_console_user().
dbus_bool_t _dbus_verify_daemon_user | ( | const char * | user | ) |
Verify that after the fork we can successfully change to this user.
user | the username given in the daemon configuration |
Definition at line 304 of file dbus-sysdeps-util-unix.c.
References _dbus_string_init_const(), _dbus_get_user_id_and_primary_group(), NULL, and TRUE.
dbus_bool_t _dbus_windows_user_is_process_owner | ( | const char * | windows_sid | ) |
dbus_bool_t _dbus_write_pid_to_file_and_pipe | ( | const DBusString * | pidfile, |
DBusPipe * | print_pid_pipe, | ||
dbus_pid_t | pid_to_write, | ||
DBusError * | error | ||
) |
Writes the given pid_to_write to a pidfile (if non-NULL) and/or to a pipe (if non-NULL).
Does nothing if pidfile and print_pid_pipe are both NULL.
pidfile | the file to write to or NULL |
print_pid_pipe | the pipe to write to or NULL |
pid_to_write | the pid to write out |
error | error on failure |
Definition at line 230 of file dbus-sysdeps-util-unix.c.
References _dbus_string_get_const_data(), FALSE, NULL, _dbus_string_init(), _dbus_string_append_int(), _dbus_string_append(), _dbus_string_free(), _dbus_string_get_length(), dbus_error_is_set(), dbus_set_error(), DBUS_ERROR_FAILED, and TRUE.
Referenced by _dbus_become_daemon().
int _dbus_write_socket | ( | int | fd, |
const DBusString * | buffer, | ||
int | start, | ||
int | len | ||
) |
Like _dbus_write(), but only supports sockets and is thus available on Windows.
fd | the file descriptor to write |
buffer | the buffer to write data from |
start | the first byte in the buffer to write |
len | the number of bytes to try to write |
Like _dbus_write(), but only supports sockets and is thus available on Windows.
fd | the file descriptor to write |
buffer | the buffer to write data from |
start | the first byte in the buffer to write |
len | the number of bytes to try to write |
Definition at line 202 of file dbus-sysdeps-unix.c.
References _dbus_string_get_const_data_len(), _dbus_write(), _dbus_strerror_from_errno(), and _dbus_verbose_bytes_of_string().
Referenced by _dbus_send_credentials_socket().
int _dbus_write_socket_two | ( | int | fd, |
const DBusString * | buffer1, | ||
int | start1, | ||
int | len1, | ||
const DBusString * | buffer2, | ||
int | start2, | ||
int | len2 | ||
) |
Like _dbus_write_two() but only works on sockets and is thus available on Windows.
fd | the file descriptor |
buffer1 | first buffer |
start1 | first byte to write in first buffer |
len1 | number of bytes to write from first buffer |
buffer2 | second buffer, or NULL |
start2 | first byte to write in second buffer |
len2 | number of bytes to write in second buffer |
Like _dbus_write_two() but only works on sockets and is thus available on Windows.
The return value is the number of bytes written in the first buffer, plus the number written in the second. If the first buffer is written successfully and an error occurs writing the second, the number of bytes in the first is returned (i.e. the error is ignored), on systems that don't have writev. Handles EINTR for you. The second buffer may be NULL.
fd | the file descriptor |
buffer1 | first buffer |
start1 | first byte to write in first buffer |
len1 | number of bytes to write from first buffer |
buffer2 | second buffer, or NULL |
start2 | first byte to write in second buffer |
len2 | number of bytes to write in second buffer |
Definition at line 476 of file dbus-sysdeps-unix.c.
References _dbus_assert, NULL, _dbus_string_get_const_data_len(), _DBUS_ZERO, _dbus_write_two(), and _dbus_strerror_from_errno().