D-Bus  1.12.20
dbus-sysdeps-unix.h
1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-sysdeps-unix.h UNIX-specific wrappers around system/libc features (internal to D-Bus implementation)
3  *
4  * Copyright (C) 2002, 2003, 2006 Red Hat, Inc.
5  * Copyright (C) 2003 CodeFactory AB
6  *
7  * Licensed under the Academic Free License version 2.1
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  *
23  */
24 
25 #ifndef DBUS_SYSDEPS_UNIX_H
26 #define DBUS_SYSDEPS_UNIX_H
27 
28 #include <dbus/dbus-sysdeps.h>
29 
30 #ifdef DBUS_WIN
31 #error "Don't include this on Windows"
32 #endif
33 
35 
43 DBUS_PRIVATE_EXPORT
45 _dbus_close (int fd,
46  DBusError *error);
47 DBUS_PRIVATE_EXPORT
48 int _dbus_dup (int fd,
49  DBusError *error);
50 DBUS_PRIVATE_EXPORT
51 int
52 _dbus_read (int fd,
53  DBusString *buffer,
54  int count);
55 int
56 _dbus_write (int fd,
57  const DBusString *buffer,
58  int start,
59  int len);
60 int
61 _dbus_write_two (int fd,
62  const DBusString *buffer1,
63  int start1,
64  int len1,
65  const DBusString *buffer2,
66  int start2,
67  int len2);
68 
69 int _dbus_connect_unix_socket (const char *path,
70  dbus_bool_t abstract,
71  DBusError *error);
72 int _dbus_listen_unix_socket (const char *path,
73  dbus_bool_t abstract,
74  DBusError *error);
75 
76 int _dbus_connect_exec (const char *path,
77  char *const argv[],
78  DBusError *error);
79 
81  DBusError *error);
82 
83 dbus_bool_t _dbus_read_credentials (int client_fd,
84  DBusCredentials *credentials,
85  DBusError *error);
86 dbus_bool_t _dbus_send_credentials (int server_fd,
87  DBusError *error);
88 
90  const char *launchd_env_var,
91  DBusError *error);
92 
93 DBUS_PRIVATE_EXPORT
94 dbus_bool_t _dbus_lookup_user_bus (dbus_bool_t *supported,
95  DBusString *address,
96  DBusError *error);
97 
99 typedef struct DBusUserInfo DBusUserInfo;
101 typedef struct DBusGroupInfo DBusGroupInfo;
102 
107 {
108  size_t refcount;
113  char *username;
114  char *homedir;
115 };
116 
121 {
122  size_t refcount;
124  char *groupname;
125 };
126 
128  const DBusString *username,
129  DBusError *error);
131  dbus_uid_t uid,
132  DBusError *error);
134 
136  const DBusString *groupname,
137  DBusError *error);
139  dbus_gid_t gid,
140  DBusError *error);
142 
143 DBUS_PRIVATE_EXPORT
145 
146 dbus_bool_t _dbus_parse_uid (const DBusString *uid_str,
147  dbus_uid_t *uid);
148 
149 DBUS_PRIVATE_EXPORT
150 void _dbus_close_all (void);
151 
153  DBusString *address,
154  DBusError *error);
155 
156 DBUS_PRIVATE_EXPORT
157 void _dbus_fd_set_close_on_exec (int fd);
158 
159 typedef enum
160 {
161  DBUS_FORCE_STDIN_NULL = (1 << 0),
162  DBUS_FORCE_STDOUT_NULL = (1 << 1),
163  DBUS_FORCE_STDERR_NULL = (1 << 2)
164 } DBusEnsureStandardFdsFlags;
165 
166 DBUS_PRIVATE_EXPORT
167 dbus_bool_t _dbus_ensure_standard_fds (DBusEnsureStandardFdsFlags flags,
168  const char **error_str_p);
169 
171 typedef void (* DBusSignalHandler) (int sig);
172 
173 void _dbus_set_signal_handler (int sig,
174  DBusSignalHandler handler);
175 
179 
180 #endif /* DBUS_SYSDEPS_UNIX_H */
_dbus_user_info_fill
dbus_bool_t _dbus_user_info_fill(DBusUserInfo *info, const DBusString *username, DBusError *error)
Gets user info for the given username.
Definition: dbus-sysdeps-unix.c:2786
DBusUserInfo::group_ids
dbus_gid_t * group_ids
Groups IDs, including above primary group.
Definition: dbus-sysdeps-unix.h:111
_dbus_user_info_fill_uid
dbus_bool_t _dbus_user_info_fill_uid(DBusUserInfo *info, dbus_uid_t uid, DBusError *error)
Gets user info for the given user ID.
Definition: dbus-sysdeps-unix.c:2803
DBusUserInfo::n_group_ids
int n_group_ids
Size of group IDs array.
Definition: dbus-sysdeps-unix.h:112
_dbus_ensure_standard_fds
DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_ensure_standard_fds(DBusEnsureStandardFdsFlags flags, const char **error_str_p)
Ensure that the standard file descriptors stdin, stdout and stderr are open, by opening /dev/null if ...
Definition: dbus-sysdeps-unix.c:159
_dbus_append_address_from_socket
dbus_bool_t _dbus_append_address_from_socket(DBusSocket fd, DBusString *address, DBusError *error)
Read the address from the socket and append it to the string.
Definition: dbus-sysdeps-unix.c:4771
_dbus_lookup_launchd_socket
dbus_bool_t _dbus_lookup_launchd_socket(DBusString *socket_path, const char *launchd_env_var, DBusError *error)
quries launchd for a specific env var which holds the socket path.
Definition: dbus-sysdeps-unix.c:4235
_dbus_listen_systemd_sockets
int _dbus_listen_systemd_sockets(DBusSocket **fd, DBusError *error)
Acquires one or more sockets passed in from systemd.
Definition: dbus-sysdeps-unix.c:1270
_dbus_write
int _dbus_write(int fd, const DBusString *buffer, int start, int len)
Thin wrapper around the write() system call that writes a part of a DBusString and handles EINTR for ...
Definition: dbus-sysdeps-unix.c:795
_dbus_group_info_free
void _dbus_group_info_free(DBusGroupInfo *info)
Frees the members of info (but not info itself).
Definition: dbus-userdb.c:112
DBusGroupInfo::gid
dbus_gid_t gid
GID.
Definition: dbus-sysdeps-unix.h:123
_dbus_connect_unix_socket
int _dbus_connect_unix_socket(const char *path, dbus_bool_t abstract, DBusError *error)
Creates a socket and connects it to the UNIX domain socket at the given path.
Definition: dbus-sysdeps-unix.c:940
_dbus_user_info_free
void _dbus_user_info_free(DBusUserInfo *info)
Frees the members of info (but not info itself)
Definition: dbus-userdb.c:99
DBUS_END_DECLS
#define DBUS_END_DECLS
Macro used after declaring functions in the D-Bus header files.
DBusGroupInfo
Information about a UNIX group.
Definition: dbus-sysdeps-unix.h:121
DBusUserInfo::uid
dbus_uid_t uid
UID.
Definition: dbus-sysdeps-unix.h:109
_dbus_listen_unix_socket
int _dbus_listen_unix_socket(const char *path, dbus_bool_t abstract, DBusError *error)
Creates a socket and binds it to the given path, then listens on the socket.
Definition: dbus-sysdeps-unix.c:1143
dbus_gid_t
unsigned long dbus_gid_t
A group ID.
Definition: dbus-sysdeps.h:136
DBusUserInfo::refcount
size_t refcount
Reference count.
Definition: dbus-sysdeps-unix.h:108
_dbus_connect_exec
int _dbus_connect_exec(const char *path, char *const argv[], DBusError *error)
Creates a UNIX domain socket and connects it to the specified process to execute.
Definition: dbus-sysdeps-unix.c:1037
_dbus_dup
DBUS_PRIVATE_EXPORT int _dbus_dup(int fd, DBusError *error)
Duplicates a file descriptor.
Definition: dbus-sysdeps-unix.c:3509
DBusGroupInfo::refcount
size_t refcount
Reference count.
Definition: dbus-sysdeps-unix.h:122
DBusUserInfo::username
char * username
Username.
Definition: dbus-sysdeps-unix.h:113
_dbus_read
DBUS_PRIVATE_EXPORT int _dbus_read(int fd, DBusString *buffer, int count)
Thin wrapper around the read() system call that appends the data it reads to the DBusString buffer.
Definition: dbus-sysdeps-unix.c:735
DBUS_BEGIN_DECLS
#define DBUS_BEGIN_DECLS
Macro used prior to declaring functions in the D-Bus header files.
_dbus_parse_uid
dbus_bool_t _dbus_parse_uid(const DBusString *uid_str, dbus_uid_t *uid)
Gets a UID from a UID string.
Definition: dbus-sysdeps-unix.c:2973
_dbus_set_signal_handler
void _dbus_set_signal_handler(int sig, DBusSignalHandler handler)
Installs a UNIX signal handler.
Definition: dbus-sysdeps-util-unix.c:564
DBusString
Definition: dbus-string.h:43
DBusUserInfo::homedir
char * homedir
Home directory.
Definition: dbus-sysdeps-unix.h:114
DBusSocket
Socket interface.
Definition: dbus-sysdeps.h:181
DBusCredentials
Definition: dbus-credentials.c:48
dbus_uid_t
unsigned long dbus_uid_t
A user ID.
Definition: dbus-sysdeps.h:134
_dbus_write_two
int _dbus_write_two(int fd, const DBusString *buffer1, int start1, int len1, const DBusString *buffer2, int start2, int len2)
Like _dbus_write() but will use writev() if possible to write both buffers in sequence.
Definition: dbus-sysdeps-unix.c:841
_dbus_group_info_fill_gid
dbus_bool_t _dbus_group_info_fill_gid(DBusGroupInfo *info, dbus_gid_t gid, DBusError *error)
Initializes the given DBusGroupInfo struct with information about the given group ID.
Definition: dbus-sysdeps-util-unix.c:972
_dbus_fd_set_close_on_exec
DBUS_PRIVATE_EXPORT void _dbus_fd_set_close_on_exec(int fd)
Sets the file descriptor to be close on exec.
Definition: dbus-sysdeps-unix.c:3459
DBusUserInfo
Information about a UNIX user.
Definition: dbus-sysdeps-unix.h:107
_dbus_close
DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_close(int fd, DBusError *error)
Closes a file descriptor.
Definition: dbus-sysdeps-unix.c:3481
_dbus_geteuid
DBUS_PRIVATE_EXPORT dbus_uid_t _dbus_geteuid(void)
Gets our effective UID.
Definition: dbus-sysdeps-unix.c:2948
DBusSignalHandler
void(* DBusSignalHandler)(int sig)
A UNIX signal handler.
Definition: dbus-sysdeps-unix.h:171
DBusError
Object representing an exception.
Definition: dbus-errors.h:49
DBusUserInfo::primary_gid
dbus_gid_t primary_gid
GID.
Definition: dbus-sysdeps-unix.h:110
_dbus_group_info_fill
dbus_bool_t _dbus_group_info_fill(DBusGroupInfo *info, const DBusString *groupname, DBusError *error)
Initializes the given DBusGroupInfo struct with information about the given group name.
Definition: dbus-sysdeps-util-unix.c:953
_dbus_close_all
DBUS_PRIVATE_EXPORT void _dbus_close_all(void)
Closes all file descriptors except the first three (i.e.
Definition: dbus-sysdeps-unix.c:4648
DBusGroupInfo::groupname
char * groupname
Group name.
Definition: dbus-sysdeps-unix.h:124
dbus_bool_t
dbus_uint32_t dbus_bool_t
A boolean, valid values are TRUE and FALSE.
Definition: dbus-types.h:35