| Current File : //usr/share/doc/dbus/api/group__DBusSysdepsUnix.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>D-Bus: UNIX-specific internal API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">D-Bus
 <span id="projectnumber">1.8.20</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">UNIX-specific internal API</div> </div>
<div class="ingroups"><a class="el" href="group__DBusInternals.html">D-Bus secret internal implementation details</a></div></div><!--header-->
<div class="contents">
<p>Internal system-dependent API available on UNIX only.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Information about a UNIX user. <a href="structDBusUserInfo.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Information about a UNIX group. <a href="structDBusGroupInfo.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad5b51b2ac2fa9bd8b35442cc242c6605"></a><!-- doxytag: member="DBusSysdepsUnix::DBusUserInfo" ref="gad5b51b2ac2fa9bd8b35442cc242c6605" args="" -->
typedef struct <a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gad5b51b2ac2fa9bd8b35442cc242c6605">DBusUserInfo</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Information about a UNIX user. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4530e3a5663c77a98ccc208a1fe0ad14"></a><!-- doxytag: member="DBusSysdepsUnix::DBusGroupInfo" ref="ga4530e3a5663c77a98ccc208a1fe0ad14" args="" -->
typedef struct <a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga4530e3a5663c77a98ccc208a1fe0ad14">DBusGroupInfo</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Information about a UNIX group. <br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gac448479a1674e3b86cee9a4bdc7eba03">_dbus_close</a> (int fd, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Closes a file descriptor. <a href="#gac448479a1674e3b86cee9a4bdc7eba03"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gad79d20e59fb519233004208988851cf1">_dbus_dup</a> (int fd, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicates a file descriptor. <a href="#gad79d20e59fb519233004208988851cf1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gaf52cb1d5b9fc5611808ce32eff898c28">_dbus_read</a> (int fd, <a class="el" href="structDBusString.html">DBusString</a> *buffer, int count)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Thin wrapper around the read() system call that appends the data it reads to the <a class="el" href="structDBusString.html">DBusString</a> buffer. <a href="#gaf52cb1d5b9fc5611808ce32eff898c28"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga3a789bcdfd3d468c2bf917fa5081b27f">_dbus_write</a> (int fd, const <a class="el" href="structDBusString.html">DBusString</a> *buffer, int start, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Thin wrapper around the write() system call that writes a part of a <a class="el" href="structDBusString.html">DBusString</a> and handles EINTR for you. <a href="#ga3a789bcdfd3d468c2bf917fa5081b27f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga506a183b1f6970d1bfca165ab3de4736">_dbus_write_two</a> (int fd, const <a class="el" href="structDBusString.html">DBusString</a> *buffer1, int start1, int len1, const <a class="el" href="structDBusString.html">DBusString</a> *buffer2, int start2, int len2)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Like <a class="el" href="group__DBusSysdepsUnix.html#ga3a789bcdfd3d468c2bf917fa5081b27f" title="Thin wrapper around the write() system call that writes a part of a DBusString and handles EINTR for ...">_dbus_write()</a> but will use writev() if possible to write both buffers in sequence. <a href="#ga506a183b1f6970d1bfca165ab3de4736"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga0228009923a105d50a0849b24acbc31e">_dbus_connect_unix_socket</a> (const char *path, <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> abstract, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a socket and connects it to the UNIX domain socket at the given path. <a href="#ga0228009923a105d50a0849b24acbc31e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga2cd48fe3d7aa14d0d3c7813cdddb3f74">_dbus_listen_unix_socket</a> (const char *path, <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> abstract, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a socket and binds it to the given path, then listens on the socket. <a href="#ga2cd48fe3d7aa14d0d3c7813cdddb3f74"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gab9a5fd9662ae1ee18598d1736def70ea">_dbus_connect_exec</a> (const char *path, char *const argv[], <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a UNIX domain socket and connects it to the specified process to execute. <a href="#gab9a5fd9662ae1ee18598d1736def70ea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga71aa508a7790c6d1c9c0159defcdd4a6">_dbus_listen_systemd_sockets</a> (int **fd, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Acquires one or more sockets passed in from systemd. <a href="#ga71aa508a7790c6d1c9c0159defcdd4a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8ce0c309cd13c15fe215b7b72cbc3f48"></a><!-- doxytag: member="DBusSysdepsUnix::_dbus_read_credentials" ref="ga8ce0c309cd13c15fe215b7b72cbc3f48" args="(int client_fd, DBusCredentials *credentials, DBusError *error)" -->
<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><b>_dbus_read_credentials</b> (int client_fd, <a class="el" href="structDBusCredentials.html">DBusCredentials</a> *credentials, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaed5d695b1c0b1f265ef3448c7de1b33a"></a><!-- doxytag: member="DBusSysdepsUnix::_dbus_send_credentials" ref="gaed5d695b1c0b1f265ef3448c7de1b33a" args="(int server_fd, DBusError *error)" -->
<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><b>_dbus_send_credentials</b> (int server_fd, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga6425e8cf4a38c71a48309b436322d4db">_dbus_lookup_launchd_socket</a> (<a class="el" href="structDBusString.html">DBusString</a> *socket_path, const char *launchd_env_var, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">quries launchd for a specific env var which holds the socket path. <a href="#ga6425e8cf4a38c71a48309b436322d4db"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga95e9deb9dd2d76aa3a64fdac555d956d">_dbus_user_info_fill</a> (<a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> *info, const <a class="el" href="structDBusString.html">DBusString</a> *username, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets user info for the given username. <a href="#ga95e9deb9dd2d76aa3a64fdac555d956d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gafcc2fbcde2c72f499f04fa43d97dfcec">_dbus_user_info_fill_uid</a> (<a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> *info, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets user info for the given user ID. <a href="#gafcc2fbcde2c72f499f04fa43d97dfcec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gaa40334f7b4f185a437a8bc6d6e0994a1">_dbus_user_info_free</a> (<a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> *info)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the members of info (but not info itself) <a href="#gaa40334f7b4f185a437a8bc6d6e0994a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga23814bdf1859c6aa52da1feab8f1aed4">_dbus_group_info_fill</a> (<a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> *info, const <a class="el" href="structDBusString.html">DBusString</a> *groupname, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a> struct with information about the given group name. <a href="#ga23814bdf1859c6aa52da1feab8f1aed4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gad235e373b223982b7d3aba8a2b602b58">_dbus_group_info_fill_gid</a> (<a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> *info, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> gid, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a> struct with information about the given group ID. <a href="#gad235e373b223982b7d3aba8a2b602b58"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gac2d226476e6fff50bdfaace18b897fe9">_dbus_group_info_free</a> (<a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> *info)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the members of info (but not info itself). <a href="#gac2d226476e6fff50bdfaace18b897fe9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gae7701063932951bdd8a7df0dcacb3bab">_dbus_getuid</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets our UID. <a href="#gae7701063932951bdd8a7df0dcacb3bab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga50438942c6e9f4027ea555a09d758ca3">_dbus_geteuid</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets our effective UID. <a href="#ga50438942c6e9f4027ea555a09d758ca3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga5a1854d99394d4593522ff5f2ca380d9">_dbus_parse_uid</a> (const <a class="el" href="structDBusString.html">DBusString</a> *uid_str, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> *uid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets a UID from a UID string. <a href="#ga5a1854d99394d4593522ff5f2ca380d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#gae63f6bdc70a1dd5c9ba0a6a1be57e320">_dbus_close_all</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Closes all file descriptors except the first three (i.e. <a href="#gae63f6bdc70a1dd5c9ba0a6a1be57e320"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusSysdepsUnix.html#ga974b137fa165ce2e0ace041b20883fe6">_dbus_append_address_from_socket</a> (int fd, <a class="el" href="structDBusString.html">DBusString</a> *address, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read the address from the socket and append it to the string. <a href="#ga974b137fa165ce2e0ace041b20883fe6"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>Internal system-dependent API available on UNIX only. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga974b137fa165ce2e0ace041b20883fe6"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_append_address_from_socket" ref="ga974b137fa165ce2e0ace041b20883fe6" args="(int fd, DBusString *address, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#ga974b137fa165ce2e0ace041b20883fe6">_dbus_append_address_from_socket</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Read the address from the socket and append it to the string. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the socket </td></tr>
<tr><td class="paramname">address</td><td></td></tr>
<tr><td class="paramname">error</td><td>return location for error code </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l04035">4035</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-address_8c_source.html#l00104">_dbus_address_append_escaped()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-string_8c_source.html#l01096">_dbus_string_append_printf()</a>, <a class="el" href="dbus-string_8c_source.html#l00190">_dbus_string_init_const()</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-server-unix_8c_source.html#l00054">_dbus_server_listen_platform_specific()</a>.</p>
</div>
</div>
<a class="anchor" id="gac448479a1674e3b86cee9a4bdc7eba03"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_close" ref="gac448479a1674e3b86cee9a4bdc7eba03" args="(int fd, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#gac448479a1674e3b86cee9a4bdc7eba03">_dbus_close</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Closes a file descriptor. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the file descriptor </td></tr>
<tr><td class="paramname">error</td><td>error object </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if error set </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">2959</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00202">_dbus_close_socket()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01231">_dbus_command_for_pid()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00831">_dbus_connect_unix_socket()</a>, <a class="el" href="dbus-file-unix_8c_source.html#l00353">_dbus_create_file_exclusively()</a>, <a class="el" href="dbus-file-unix_8c_source.html#l00055">_dbus_file_get_contents()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03109">_dbus_full_duplex_pipe()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02852">_dbus_generate_random_bytes()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l01160">_dbus_listen_systemd_sockets()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l01378">_dbus_listen_tcp_socket()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l01033">_dbus_listen_unix_socket()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-file-unix_8c_source.html#l00164">_dbus_string_save_to_file()</a>, and <a class="el" href="dbus-message_8c_source.html#l02656">dbus_message_iter_append_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="gae63f6bdc70a1dd5c9ba0a6a1be57e320"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_close_all" ref="gae63f6bdc70a1dd5c9ba0a6a1be57e320" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusSysdepsUnix.html#gae63f6bdc70a1dd5c9ba0a6a1be57e320">_dbus_close_all</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Closes all file descriptors except the first three (i.e. </p>
<p>stdin, stdout, stderr). </p>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03963">3963</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00927">_dbus_connect_exec()</a>.</p>
</div>
</div>
<a class="anchor" id="gab9a5fd9662ae1ee18598d1736def70ea"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_connect_exec" ref="gab9a5fd9662ae1ee18598d1736def70ea" args="(const char *path, char *const argv[], DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#gab9a5fd9662ae1ee18598d1736def70ea">_dbus_connect_exec</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *const </td>
<td class="paramname"><em>argv</em>[], </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a UNIX domain socket and connects it to the specified process to execute. </p>
<p>This will set FD_CLOEXEC for the socket returned.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>the path to the executable </td></tr>
<tr><td class="paramname">argv</td><td>the argument list for the process to execute. argv[0] typically is identical to the path of the executable </td></tr>
<tr><td class="paramname">error</td><td>return location for error code </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>connection file descriptor or -1 on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00927">927</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03963">_dbus_close_all()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02937">_dbus_fd_set_close_on_exec()</a>, and <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>.</p>
</div>
</div>
<a class="anchor" id="ga0228009923a105d50a0849b24acbc31e"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_connect_unix_socket" ref="ga0228009923a105d50a0849b24acbc31e" args="(const char *path, dbus_bool_t abstract, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#ga0228009923a105d50a0849b24acbc31e">_dbus_connect_unix_socket</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td>
<td class="paramname"><em>abstract</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a socket and connects it to the UNIX domain socket at the given path. </p>
<p>The connection fd is returned, and is set up as nonblocking.</p>
<p>Uses abstract sockets instead of filesystem-linked sockets if requested (it's possible only on Linux; see "man 7 unix" on Linux). On non-Linux abstract socket usage always fails.</p>
<p>This will set FD_CLOEXEC for the socket returned.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>the path to UNIX domain socket </td></tr>
<tr><td class="paramname">abstract</td><td><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> to use abstract namespace </td></tr>
<tr><td class="paramname">error</td><td>return location for error code </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>connection file descriptor or -1 on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00831">831</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">_dbus_close()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00362">DBUS_ERROR_BAD_ADDRESS</a>, <a class="el" href="dbus-protocol_8h_source.html#l00364">DBUS_ERROR_NOT_SUPPORTED</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport-unix_8c_source.html#l00058">_dbus_transport_new_for_domain_socket()</a>.</p>
</div>
</div>
<a class="anchor" id="gad79d20e59fb519233004208988851cf1"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_dup" ref="gad79d20e59fb519233004208988851cf1" args="(int fd, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#gad79d20e59fb519233004208988851cf1">_dbus_dup</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Duplicates a file descriptor. </p>
<p>Makes sure the fd returned is >= 3 (i.e. avoids stdin/stdout/stderr). Sets O_CLOEXEC.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the file descriptor to duplicate </td></tr>
<tr><td class="paramname">error</td><td>address of error location. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>duplicated file descriptor </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02987">2987</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02937">_dbus_fd_set_close_on_exec()</a>, and <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-message_8c_source.html#l01587">dbus_message_copy()</a>, <a class="el" href="dbus-message_8c_source.html#l02656">dbus_message_iter_append_basic()</a>, and <a class="el" href="dbus-message_8c_source.html#l02293">dbus_message_iter_get_basic()</a>.</p>
</div>
</div>
<a class="anchor" id="ga50438942c6e9f4027ea555a09d758ca3"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_geteuid" ref="ga50438942c6e9f4027ea555a09d758ca3" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> <a class="el" href="group__DBusSysdepsUnix.html#ga50438942c6e9f4027ea555a09d758ca3">_dbus_geteuid</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets our effective UID. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>process effective UID </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02428">2428</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02399">_dbus_append_user_from_current_process()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02369">_dbus_credentials_add_from_current_process()</a>, and <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01123">_dbus_unix_user_is_process_owner()</a>.</p>
</div>
</div>
<a class="anchor" id="gae7701063932951bdd8a7df0dcacb3bab"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_getuid" ref="gae7701063932951bdd8a7df0dcacb3bab" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> <a class="el" href="group__DBusSysdepsUnix.html#gae7701063932951bdd8a7df0dcacb3bab">_dbus_getuid</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets our UID. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>process UID </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02419">2419</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga23814bdf1859c6aa52da1feab8f1aed4"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_group_info_fill" ref="ga23814bdf1859c6aa52da1feab8f1aed4" args="(DBusGroupInfo *info, const DBusString *groupname, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusInternalsUtils.html#ga23814bdf1859c6aa52da1feab8f1aed4">_dbus_group_info_fill</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> * </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>groupname</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes the given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a> struct with information about the given group name. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the group info struct </td></tr>
<tr><td class="paramname">groupname</td><td>name of group </td></tr>
<tr><td class="paramname">error</td><td>the error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if error is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01023">1023</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8h_source.html#l00106">DBUS_GID_UNSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00246">_dbus_user_database_lookup_group()</a>.</p>
</div>
</div>
<a class="anchor" id="gad235e373b223982b7d3aba8a2b602b58"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_group_info_fill_gid" ref="gad235e373b223982b7d3aba8a2b602b58" args="(DBusGroupInfo *info, dbus_gid_t gid, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusInternalsUtils.html#gad235e373b223982b7d3aba8a2b602b58">_dbus_group_info_fill_gid</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> * </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> </td>
<td class="paramname"><em>gid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Initializes the given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a> struct with information about the given group ID. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the group info struct </td></tr>
<tr><td class="paramname">gid</td><td>group ID </td></tr>
<tr><td class="paramname">error</td><td>the error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if error is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01042">1042</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00246">_dbus_user_database_lookup_group()</a>.</p>
</div>
</div>
<a class="anchor" id="gac2d226476e6fff50bdfaace18b897fe9"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_group_info_free" ref="gac2d226476e6fff50bdfaace18b897fe9" args="(DBusGroupInfo *info)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gac2d226476e6fff50bdfaace18b897fe9">_dbus_group_info_free</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> * </td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frees the members of info (but not info itself). </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the group info </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00089">89</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, and <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00114">DBusGroupInfo::groupname</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00061">_dbus_group_info_free_allocated()</a>.</p>
</div>
</div>
<a class="anchor" id="ga71aa508a7790c6d1c9c0159defcdd4a6"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_listen_systemd_sockets" ref="ga71aa508a7790c6d1c9c0159defcdd4a6" args="(int **fd, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#ga71aa508a7790c6d1c9c0159defcdd4a6">_dbus_listen_systemd_sockets</a> </td>
<td>(</td>
<td class="paramtype">int ** </td>
<td class="paramname"><em>fds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Acquires one or more sockets passed in from systemd. </p>
<p>The sockets are set to be nonblocking.</p>
<p>This will set FD_CLOEXEC for the sockets returned.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fds</td><td>the file descriptors </td></tr>
<tr><td class="paramname">error</td><td>return location for errors </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of file descriptors </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l01160">1160</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">_dbus_close()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00362">DBUS_ERROR_BAD_ADDRESS</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-memory_8h_source.html#l00058">dbus_new</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-server-unix_8c_source.html#l00054">_dbus_server_listen_platform_specific()</a>.</p>
</div>
</div>
<a class="anchor" id="ga2cd48fe3d7aa14d0d3c7813cdddb3f74"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_listen_unix_socket" ref="ga2cd48fe3d7aa14d0d3c7813cdddb3f74" args="(const char *path, dbus_bool_t abstract, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#ga2cd48fe3d7aa14d0d3c7813cdddb3f74">_dbus_listen_unix_socket</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td>
<td class="paramname"><em>abstract</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a socket and binds it to the given path, then listens on the socket. </p>
<p>The socket is set to be nonblocking.</p>
<p>Uses abstract sockets instead of filesystem-linked sockets if requested (it's possible only on Linux; see "man 7 unix" on Linux). On non-Linux abstract socket usage always fails.</p>
<p>This will set FD_CLOEXEC for the socket returned</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">path</td><td>the socket name </td></tr>
<tr><td class="paramname">abstract</td><td><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> to use abstract namespace </td></tr>
<tr><td class="paramname">error</td><td>return location for errors </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the listening file descriptor or -1 on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l01033">1033</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">_dbus_close()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>, <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00362">DBUS_ERROR_BAD_ADDRESS</a>, <a class="el" href="dbus-protocol_8h_source.html#l00364">DBUS_ERROR_NOT_SUPPORTED</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-server-unix_8c_source.html#l00237">_dbus_server_new_for_domain_socket()</a>.</p>
</div>
</div>
<a class="anchor" id="ga6425e8cf4a38c71a48309b436322d4db"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_lookup_launchd_socket" ref="ga6425e8cf4a38c71a48309b436322d4db" args="(DBusString *socket_path, const char *launchd_env_var, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#ga6425e8cf4a38c71a48309b436322d4db">_dbus_lookup_launchd_socket</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>socket_path</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>launchd_env_var</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>quries launchd for a specific env var which holds the socket path. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">socket_path</td><td>append the socket path to this <a class="el" href="structDBusString.html">DBusString</a> </td></tr>
<tr><td class="paramname">launchd_env_var</td><td>the env var to look up </td></tr>
<tr><td class="paramname">error</td><td>a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> to store the error in case of failure </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the value of the env var </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03651">3651</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00763">_dbus_string_shorten()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00364">DBUS_ERROR_NOT_SUPPORTED</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport-unix_8c_source.html#l00225">_dbus_transport_open_platform_specific()</a>.</p>
</div>
</div>
<a class="anchor" id="ga5a1854d99394d4593522ff5f2ca380d9"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_parse_uid" ref="ga5a1854d99394d4593522ff5f2ca380d9" args="(const DBusString *uid_str, dbus_uid_t *uid)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#ga5a1854d99394d4593522ff5f2ca380d9">_dbus_parse_uid</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>uid_str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> * </td>
<td class="paramname"><em>uid</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets a UID from a UID string. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid_str</td><td>the UID in string form </td></tr>
<tr><td class="paramname">uid</td><td>UID to fill in </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if successfully filled in UID </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02453">2453</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00430">_dbus_string_parse_int()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="gaf52cb1d5b9fc5611808ce32eff898c28"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_read" ref="gaf52cb1d5b9fc5611808ce32eff898c28" args="(int fd, DBusString *buffer, int count)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#gaf52cb1d5b9fc5611808ce32eff898c28">_dbus_read</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>count</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Thin wrapper around the read() system call that appends the data it reads to the <a class="el" href="structDBusString.html">DBusString</a> buffer. </p>
<p>It appends up to the given count, and returns the same value and same errno as read(). The only exception is that <a class="el" href="group__DBusSysdepsUnix.html#gaf52cb1d5b9fc5611808ce32eff898c28" title="Thin wrapper around the read() system call that appends the data it reads to the DBusString buffer...">_dbus_read()</a> handles EINTR for you. Also, <a class="el" href="group__DBusSysdepsUnix.html#gaf52cb1d5b9fc5611808ce32eff898c28" title="Thin wrapper around the read() system call that appends the data it reads to the DBusString buffer...">_dbus_read()</a> can return ENOMEM, even though regular UNIX read doesn't.</p>
<p>Unlike <a class="el" href="group__DBusSysdeps.html#ga6fe72fa1c0484ac5594b08145ea19530" title="Like _dbus_read(), but only works on sockets so is available on Windows.">_dbus_read_socket()</a>, <a class="el" href="group__DBusSysdepsUnix.html#gaf52cb1d5b9fc5611808ce32eff898c28" title="Thin wrapper around the read() system call that appends the data it reads to the DBusString buffer...">_dbus_read()</a> is not available on Windows.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the file descriptor to read from </td></tr>
<tr><td class="paramname">buffer</td><td>the buffer to append data to </td></tr>
<tr><td class="paramname">count</td><td>the amount of data to read </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes read or -1 </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00626">626</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00473">_dbus_string_get_data_len()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00743">_dbus_string_lengthen()</a>, <a class="el" href="dbus-string_8c_source.html#l00785">_dbus_string_set_length()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01360">_dbus_verbose_bytes_of_string()</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01231">_dbus_command_for_pid()</a>, <a class="el" href="dbus-file-unix_8c_source.html#l00055">_dbus_file_get_contents()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02852">_dbus_generate_random_bytes()</a>, and <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00218">_dbus_read_socket()</a>.</p>
</div>
</div>
<a class="anchor" id="ga95e9deb9dd2d76aa3a64fdac555d956d"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_user_info_fill" ref="ga95e9deb9dd2d76aa3a64fdac555d956d" args="(DBusUserInfo *info, const DBusString *username, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#ga95e9deb9dd2d76aa3a64fdac555d956d">_dbus_user_info_fill</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> * </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>username</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets user info for the given username. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>user info object to initialize </td></tr>
<tr><td class="paramname">username</td><td>the username </td></tr>
<tr><td class="paramname">error</td><td>error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> on success </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02336">2336</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8h_source.html#l00104">DBUS_UID_UNSET</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>.</p>
</div>
</div>
<a class="anchor" id="gafcc2fbcde2c72f499f04fa43d97dfcec"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_user_info_fill_uid" ref="gafcc2fbcde2c72f499f04fa43d97dfcec" args="(DBusUserInfo *info, dbus_uid_t uid, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusSysdepsUnix.html#gafcc2fbcde2c72f499f04fa43d97dfcec">_dbus_user_info_fill_uid</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> * </td>
<td class="paramname"><em>info</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> </td>
<td class="paramname"><em>uid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets user info for the given user ID. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>user info object to initialize </td></tr>
<tr><td class="paramname">uid</td><td>the user ID </td></tr>
<tr><td class="paramname">error</td><td>error return </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> on success </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02353">2353</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa40334f7b4f185a437a8bc6d6e0994a1"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_user_info_free" ref="gaa40334f7b4f185a437a8bc6d6e0994a1" args="(DBusUserInfo *info)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gaa40334f7b4f185a437a8bc6d6e0994a1">_dbus_user_info_free</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> * </td>
<td class="paramname"><em>info</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Frees the members of info (but not info itself) </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the user info struct </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00076">76</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00102">DBusUserInfo::group_ids</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00105">DBusUserInfo::homedir</a>, and <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00104">DBusUserInfo::username</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00045">_dbus_user_info_free_allocated()</a>.</p>
</div>
</div>
<a class="anchor" id="ga3a789bcdfd3d468c2bf917fa5081b27f"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_write" ref="ga3a789bcdfd3d468c2bf917fa5081b27f" args="(int fd, const DBusString *buffer, int start, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#ga3a789bcdfd3d468c2bf917fa5081b27f">_dbus_write</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Thin wrapper around the write() system call that writes a part of a <a class="el" href="structDBusString.html">DBusString</a> and handles EINTR for you. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the file descriptor to write </td></tr>
<tr><td class="paramname">buffer</td><td>the buffer to write data from </td></tr>
<tr><td class="paramname">start</td><td>the first byte in the buffer to write </td></tr>
<tr><td class="paramname">len</td><td>the number of bytes to try to write </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of bytes written or -1 on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00686">686</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, and <a class="el" href="dbus-marshal-basic_8c_source.html#l01360">_dbus_verbose_bytes_of_string()</a>.</p>
<p>Referenced by <a class="el" href="dbus-file-unix_8c_source.html#l00164">_dbus_string_save_to_file()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00236">_dbus_write_socket()</a>, and <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00732">_dbus_write_two()</a>.</p>
</div>
</div>
<a class="anchor" id="ga506a183b1f6970d1bfca165ab3de4736"></a><!-- doxytag: member="dbus-sysdeps-unix.h::_dbus_write_two" ref="ga506a183b1f6970d1bfca165ab3de4736" args="(int fd, const DBusString *buffer1, int start1, int len1, const DBusString *buffer2, int start2, int len2)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusSysdepsUnix.html#ga506a183b1f6970d1bfca165ab3de4736">_dbus_write_two</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>fd</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>buffer1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>buffer2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>start2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len2</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Like <a class="el" href="group__DBusSysdepsUnix.html#ga3a789bcdfd3d468c2bf917fa5081b27f" title="Thin wrapper around the write() system call that writes a part of a DBusString and handles EINTR for ...">_dbus_write()</a> but will use writev() if possible to write both buffers in sequence. </p>
<p>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 <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">fd</td><td>the file descriptor </td></tr>
<tr><td class="paramname">buffer1</td><td>first buffer </td></tr>
<tr><td class="paramname">start1</td><td>first byte to write in first buffer </td></tr>
<tr><td class="paramname">len1</td><td>number of bytes to write from first buffer </td></tr>
<tr><td class="paramname">buffer2</td><td>second buffer, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">start2</td><td>first byte to write in second buffer </td></tr>
<tr><td class="paramname">len2</td><td>number of bytes to write in second buffer </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>total bytes written from both buffers, or -1 on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00732">732</a> of file <a class="el" href="dbus-sysdeps-unix_8c_source.html">dbus-sysdeps-unix.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00497">_dbus_string_get_const_data_len()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00686">_dbus_write()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00547">_dbus_write_socket_two()</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:33 for D-Bus by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>