| Current File : //usr/share/doc/dbus/api/group__DBusInternalsUtils.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: Utilities and portability</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="#define-members">Defines</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Utilities and portability</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>Utility functions (_dbus_assert(), <a class="el" href="group__DBusInternalsUtils.html#gabea2c16d6d3fe7c4eb5b9496fc877f84" title="Prints a warning message to stderr.">_dbus_warn()</a>, etc.)
<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="structDBusBabysitter.html">DBusBabysitter</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Babysitter implementation details. <a href="structDBusBabysitter.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="structDBusDirIter.html">DBusDirIter</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Internals of directory iterator. <a href="structDBusDirIter.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf3ce8172242a1766bdd5cfe4b0a05d1f"></a><!-- doxytag: member="DBusInternalsUtils::LIVE_CHILDREN" ref="gaf3ce8172242a1766bdd5cfe4b0a05d1f" args="(sitter)" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaf3ce8172242a1766bdd5cfe4b0a05d1f">LIVE_CHILDREN</a>(sitter)   ((sitter)->socket_to_babysitter >= 0 || (sitter)->error_pipe_from_child >= 0)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Macro returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the babysitter still has live sockets open to the babysitter child or the grandchild. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2469c53816dc077f9deefb187ffcabf3"></a><!-- doxytag: member="DBusInternalsUtils::READ_END" ref="ga2469c53816dc077f9deefb187ffcabf3" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga2469c53816dc077f9deefb187ffcabf3">READ_END</a>   0</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Helps remember which end of the pipe is which. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2efd706d915e621e5e18b3f0803c4ed2"></a><!-- doxytag: member="DBusInternalsUtils::WRITE_END" ref="ga2efd706d915e621e5e18b3f0803c4ed2" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga2efd706d915e621e5e18b3f0803c4ed2">WRITE_END</a>   1</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Helps remember which end of the pipe is which. <br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaa1d634db87605c2a83f2750ce6052653">ReadStatus</a> { <a class="el" href="group__DBusInternalsUtils.html#ggaa1d634db87605c2a83f2750ce6052653a105d3aa9ec19f4c060b39c7fafba39ff">READ_STATUS_OK</a>,
<a class="el" href="group__DBusInternalsUtils.html#ggaa1d634db87605c2a83f2750ce6052653ad13164fb31fb0b5bc1ec802d09d10411">READ_STATUS_ERROR</a>,
<a class="el" href="group__DBusInternalsUtils.html#ggaa1d634db87605c2a83f2750ce6052653a7d65492f3f0d09176ac4504987457d23">READ_STATUS_EOF</a>
}</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Enumeration for status of a read() <a href="group__DBusInternalsUtils.html#gaa1d634db87605c2a83f2750ce6052653">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>CHILD_EXITED</b>,
<b>CHILD_FORK_FAILED</b>,
<b>CHILD_EXEC_FAILED</b>,
<b>CHILD_PID</b>
}</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gabea2c16d6d3fe7c4eb5b9496fc877f84">_dbus_warn</a> (const char *format,...)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints a warning message to stderr. <a href="#gabea2c16d6d3fe7c4eb5b9496fc877f84"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga63f2f8a068454b781f214ba596e313b4">_dbus_warn_check_failed</a> (const char *format,...)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints a "critical" warning to stderr when an assertion fails; differs from _dbus_warn primarily in that it prefixes the pid and defaults to fatal. <a href="#ga63f2f8a068454b781f214ba596e313b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga9d00d77f6595b9d7ac1baf59d44bf58c">_dbus_strdup</a> (const char *str)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicates a string. <a href="#ga9d00d77f6595b9d7ac1baf59d44bf58c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaad95864dca5140b730bc143cb2d1b024">_dbus_memdup</a> (const void *mem, size_t n_bytes)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicates a block of memory. <a href="#gaad95864dca5140b730bc143cb2d1b024"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char ** </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga53bbcbbd0b564c14c599813dde535443">_dbus_dup_string_array</a> (const char **array)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicates a string array. <a href="#ga53bbcbbd0b564c14c599813dde535443"></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__DBusInternalsUtils.html#ga751119e7273225a7e59787445b71fcd6">_dbus_string_array_contains</a> (const char **array, const char *str)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether a string array contains the given string. <a href="#ga751119e7273225a7e59787445b71fcd6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga08c2922335845e5c857e88399436b9ba">_dbus_generate_uuid</a> (<a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> *uuid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates a new UUID. <a href="#ga08c2922335845e5c857e88399436b9ba"></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__DBusInternalsUtils.html#gaf08364813376bd2d8f455d435d85323e">_dbus_uuid_encode</a> (const <a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> *uuid, <a class="el" href="structDBusString.html">DBusString</a> *encoded)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Hex-encode a UUID. <a href="#gaf08364813376bd2d8f455d435d85323e"></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__DBusInternalsUtils.html#gaa16de06b33c56323fa33dd96eaab3829">_dbus_write_uuid_file</a> (const <a class="el" href="structDBusString.html">DBusString</a> *filename, const <a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> *uuid, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write the give UUID to a file. <a href="#gaa16de06b33c56323fa33dd96eaab3829"></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__DBusInternalsUtils.html#ga709fd30e6b940a5952af38efaf24ad51">_dbus_read_uuid_file</a> (const <a class="el" href="structDBusString.html">DBusString</a> *filename, <a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> *uuid, <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> create_if_not_found, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads (and optionally writes) a uuid to a file. <a href="#ga709fd30e6b940a5952af38efaf24ad51"></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__DBusInternalsUtils.html#ga49ba67405d677af6cde9329ed87ea91f">_dbus_get_local_machine_uuid_encoded</a> (<a class="el" href="structDBusString.html">DBusString</a> *uuid_str)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the hex-encoded UUID of the machine this function is executed on. <a href="#ga49ba67405d677af6cde9329ed87ea91f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga9912f2c86e49357eb9729729dd46f50d">_dbus_real_assert</a> (<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> condition, const char *condition_text, const char *file, int line, const char *func)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Internals of _dbus_assert(); it's a function rather than a macro with the inline code so that the assertion failure blocks don't show up in test suite coverage, and to shrink code size. <a href="#ga9912f2c86e49357eb9729729dd46f50d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga3de125028afc39ab16e6585add8ad181">_dbus_real_assert_not_reached</a> (const char *explanation, const char *file, int line)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Internals of _dbus_assert_not_reached(); it's a function rather than a macro with the inline code so that the assertion failure blocks don't show up in test suite coverage, and to shrink code size. <a href="#ga3de125028afc39ab16e6585add8ad181"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga525b5fdb780ddf6891918466965e6eb6">_dbus_babysitter_ref</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Increment the reference count on the babysitter object. <a href="#ga525b5fdb780ddf6891918466965e6eb6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga3205e9f8672271794aeb9d451e2fcc4a">_dbus_babysitter_unref</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Decrement the reference count on the babysitter object. <a href="#ga3205e9f8672271794aeb9d451e2fcc4a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gacdc9c49735d6ce8364647c1961aa8d2b">_dbus_babysitter_kill_child</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Blocks until the babysitter process gives us the PID of the spawned grandchild, then kills the spawned grandchild. <a href="#gacdc9c49735d6ce8364647c1961aa8d2b"></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__DBusInternalsUtils.html#ga5c463ea356ea62055a35211e8d81f8b9">_dbus_babysitter_get_child_exited</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether the child has exited, without blocking. <a href="#ga5c463ea356ea62055a35211e8d81f8b9"></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__DBusInternalsUtils.html#ga1b17eec3f7915c21251685e16123f299">_dbus_babysitter_get_child_exit_status</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter, int *status)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the exit status of the child. <a href="#ga1b17eec3f7915c21251685e16123f299"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga9c6f92a67e41f08d8eb254e294fd0378">_dbus_babysitter_set_child_exit_error</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> with an explanation of why the spawned child process exited (on a signal, or whatever). <a href="#ga9c6f92a67e41f08d8eb254e294fd0378"></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__DBusInternalsUtils.html#ga5f467b14f0c2f667e46c4ba786808e5b">_dbus_babysitter_set_watch_functions</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter, <a class="el" href="group__DBusConnection.html#ga9188ca3fd89c957dc269dbe8601b270e">DBusAddWatchFunction</a> add_function, <a class="el" href="group__DBusConnection.html#gaaab846a872d938b27503129551ea0c62">DBusRemoveWatchFunction</a> remove_function, <a class="el" href="group__DBusConnection.html#gace13544ff3075b5fccbce896682ec6ff">DBusWatchToggledFunction</a> toggled_function, void *data, <a class="el" href="group__DBusMemory.html#ga061bcded226d76c7d7de35beaa165cb5">DBusFreeFunction</a> free_data_function)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets watch functions to notify us when the babysitter object needs to read/write file descriptors. <a href="#ga5f467b14f0c2f667e46c4ba786808e5b"></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__DBusInternalsUtils.html#gaed0b5af565252185dedf99df5da8efc5">_dbus_spawn_async_with_babysitter</a> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> **sitter_p, const char *log_name, char **argv, char **env, DBusSpawnChildSetupFunc child_setup, void *user_data, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Spawns a new process. <a href="#gaed0b5af565252185dedf99df5da8efc5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga98cc9642d4e5246804c8611022a68c0e"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_babysitter_set_result_function" ref="ga98cc9642d4e5246804c8611022a68c0e" args="(DBusBabysitter *sitter, DBusBabysitterFinishedFunc finished, void *user_data)" -->
void </td><td class="memItemRight" valign="bottom"><b>_dbus_babysitter_set_result_function</b> (<a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> *sitter, DBusBabysitterFinishedFunc finished, void *user_data)</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__DBusInternalsUtils.html#gaca61af8681a48862835ea8cfd263f5ab">_dbus_become_daemon</a> (const <a class="el" href="structDBusString.html">DBusString</a> *pidfile, <a class="el" href="structDBusPipe.html">DBusPipe</a> *print_pid_pipe, <a class="el" href="structDBusError.html">DBusError</a> *error, <a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> keep_umask)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Does the chdir, fork, setsid, etc. <a href="#gaca61af8681a48862835ea8cfd263f5ab"></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__DBusInternalsUtils.html#ga123620ec5ce2b881786588121d6a03fd">_dbus_write_pid_to_file_and_pipe</a> (const <a class="el" href="structDBusString.html">DBusString</a> *pidfile, <a class="el" href="structDBusPipe.html">DBusPipe</a> *print_pid_pipe, <a class="el" href="group__DBusSysdeps.html#ga1eff6303266888ec466cddba6c03aa40">dbus_pid_t</a> pid_to_write, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes the given pid_to_write to a pidfile (if non-NULL) and/or to a pipe (if non-NULL). <a href="#ga123620ec5ce2b881786588121d6a03fd"></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__DBusInternalsUtils.html#ga45f661c5a089ed45233a1acabaf31964">_dbus_verify_daemon_user</a> (const char *user)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Verify that after the fork we can successfully change to this user. <a href="#ga45f661c5a089ed45233a1acabaf31964"></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__DBusInternalsUtils.html#ga82c920a8c3b5958ba1ecf8e5f5d6373b">_dbus_change_to_daemon_user</a> (const char *user, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the user and group the bus is running as. <a href="#ga82c920a8c3b5958ba1ecf8e5f5d6373b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7c32ae74e6ebbb28ab28853237be034e"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_rlimit_save_fd_limit" ref="ga7c32ae74e6ebbb28ab28853237be034e" args="(DBusError *error)" -->
DBusRLimit * </td><td class="memItemRight" valign="bottom"><b>_dbus_rlimit_save_fd_limit</b> (<a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga72b9aeaedfccd2143bdd889b6e98d0cb"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_rlimit_raise_fd_limit_if_privileged" ref="ga72b9aeaedfccd2143bdd889b6e98d0cb" args="(unsigned int desired, DBusError *error)" -->
<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><b>_dbus_rlimit_raise_fd_limit_if_privileged</b> (unsigned int desired, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab87dbd966b0051b7ff916e06e43fcf2e"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_rlimit_restore_fd_limit" ref="gab87dbd966b0051b7ff916e06e43fcf2e" args="(DBusRLimit *saved, DBusError *error)" -->
<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><b>_dbus_rlimit_restore_fd_limit</b> (DBusRLimit *saved, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga53db90ef9ed40073f1b0821d1589a024"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_rlimit_free" ref="ga53db90ef9ed40073f1b0821d1589a024" args="(DBusRLimit *lim)" -->
void </td><td class="memItemRight" valign="bottom"><b>_dbus_rlimit_free</b> (DBusRLimit *lim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2459d60bd0dac4119a118191b091b967"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_init_system_log" ref="ga2459d60bd0dac4119a118191b091b967" args="(dbus_bool_t is_daemon)" -->
void </td><td class="memItemRight" valign="bottom"><b>_dbus_init_system_log</b> (<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> is_daemon)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga73a19aaac889c47ba5f6caa5107a47a5">_dbus_system_log</a> (DBusSystemLogSeverity severity, const char *msg,...)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Log a message to the system log file (e.g. <a href="#ga73a19aaac889c47ba5f6caa5107a47a5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga82cb5dfe162480ad15faddcf74ea0617">_dbus_system_logv</a> (DBusSystemLogSeverity severity, const char *msg, va_list args)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Log a message to the system log file (e.g. <a href="#ga82cb5dfe162480ad15faddcf74ea0617"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga4aa7500366dad2dd6d3fa97b3aa7165b">_dbus_set_signal_handler</a> (int sig, <a class="el" href="group__DBusSysdeps.html#ga5c69cb20ec385aa86a213c898149f8ea">DBusSignalHandler</a> handler)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Installs a UNIX signal handler. <a href="#ga4aa7500366dad2dd6d3fa97b3aa7165b"></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__DBusInternalsUtils.html#ga13a527e32c05b63e8b32a63d728e20e8">_dbus_file_exists</a> (const char *file)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if a file exists. <a href="#ga13a527e32c05b63e8b32a63d728e20e8"></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__DBusInternalsUtils.html#ga31ec42cef2d15ca358e737bb5f19c5cf">_dbus_user_at_console</a> (const char *username, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if user is at the console. <a href="#ga31ec42cef2d15ca358e737bb5f19c5cf"></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__DBusInternalsUtils.html#ga6d80876bcae54f47cde79d0bce20321d">_dbus_path_is_absolute</a> (const <a class="el" href="structDBusString.html">DBusString</a> *filename)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether the filename is an absolute path. <a href="#ga6d80876bcae54f47cde79d0bce20321d"></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__DBusInternalsUtils.html#ga04e98ad0e3a181f0a5921a4cbc49cf08">_dbus_stat</a> (const <a class="el" href="structDBusString.html">DBusString</a> *filename, <a class="el" href="structDBusStat.html">DBusStat</a> *statbuf, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">stat() wrapper. <a href="#ga04e98ad0e3a181f0a5921a4cbc49cf08"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusDirIter.html">DBusDirIter</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaaf6eb8179fb6ea2175ed9742a0c8be68">_dbus_directory_open</a> (const <a class="el" href="structDBusString.html">DBusString</a> *filename, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Open a directory to iterate over. <a href="#gaaf6eb8179fb6ea2175ed9742a0c8be68"></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__DBusInternalsUtils.html#gab9a2ddb130da035d6186f2d96bf37cb4">_dbus_directory_get_next_file</a> (<a class="el" href="structDBusDirIter.html">DBusDirIter</a> *iter, <a class="el" href="structDBusString.html">DBusString</a> *filename, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get next file in the directory. <a href="#gab9a2ddb130da035d6186f2d96bf37cb4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1821b64302fe8e12278fa227eb11d393"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_directory_close" ref="ga1821b64302fe8e12278fa227eb11d393" args="(DBusDirIter *iter)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga1821b64302fe8e12278fa227eb11d393">_dbus_directory_close</a> (<a class="el" href="structDBusDirIter.html">DBusDirIter</a> *iter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Closes a directory iteration. <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__DBusInternalsUtils.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__DBusInternalsUtils.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"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga437470fc327b0169fc14a0b66a6e5278">_dbus_parse_unix_user_from_config</a> (const <a class="el" href="structDBusString.html">DBusString</a> *username, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> *uid_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Parse a UNIX user from the bus config file. <a href="#ga437470fc327b0169fc14a0b66a6e5278"></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__DBusInternalsUtils.html#ga96da816095ec7fec07136a6019745bcb">_dbus_parse_unix_group_from_config</a> (const <a class="el" href="structDBusString.html">DBusString</a> *groupname, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> *gid_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Parse a UNIX group from the bus config file. <a href="#ga96da816095ec7fec07136a6019745bcb"></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__DBusInternalsUtils.html#ga79647ec21c7edccd1510808ea0ca3779">_dbus_unix_groups_from_uid</a> (<a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> **group_ids, int *n_group_ids)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets all groups corresponding to the given UNIX user ID. <a href="#ga79647ec21c7edccd1510808ea0ca3779"></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__DBusInternalsUtils.html#gaed2e025454364fbe31cd9b6538c9a936">_dbus_unix_user_is_at_console</a> (<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">Checks to see if the UNIX user ID is at the console. <a href="#gaed2e025454364fbe31cd9b6538c9a936"></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__DBusInternalsUtils.html#ga849177164bc5e73435104f57c631ed7e">_dbus_unix_user_is_process_owner</a> (<a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks to see if the UNIX user ID matches the UID of the process. <a href="#ga849177164bc5e73435104f57c631ed7e"></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__DBusInternalsUtils.html#ga912d34a7e40b3a57864972e6d6ab65ba">_dbus_windows_user_is_process_owner</a> (const char *windows_sid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks to see if the Windows user SID matches the owner of the process. <a href="#ga912d34a7e40b3a57864972e6d6ab65ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafb4454c18ee8e5bcc20dbccd93e1d9ba"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_generate_pseudorandom_bytes_buffer" ref="gafb4454c18ee8e5bcc20dbccd93e1d9ba" args="(char *buffer, int n_bytes)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gafb4454c18ee8e5bcc20dbccd93e1d9ba">_dbus_generate_pseudorandom_bytes_buffer</a> (char *buffer, int n_bytes)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Random numbers. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaa32f87746e9264b2425736043d02fad4">_dbus_generate_random_bytes_buffer</a> (char *buffer, int n_bytes)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Fills n_bytes of the given buffer with random bytes. <a href="#gaa32f87746e9264b2425736043d02fad4"></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__DBusInternalsUtils.html#ga709ce349c6ee05263850444fb4e0177d">_dbus_generate_random_ascii</a> (<a class="el" href="structDBusString.html">DBusString</a> *str, int n_bytes)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Generates the given number of random bytes, where the bytes are chosen from the alphanumeric ASCII subset. <a href="#ga709ce349c6ee05263850444fb4e0177d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga2212aa0e5732257598a6597748c658e4">_dbus_error_from_errno</a> (int error_number)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts a UNIX errno, or Windows errno or WinSock error value into a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> name. <a href="#ga2212aa0e5732257598a6597748c658e4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaf4f1db48d66dcb310b9771beb955578e">_dbus_error_from_system_errno</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts the current system errno value into a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> name. <a href="#gaf4f1db48d66dcb310b9771beb955578e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf0f4cb7f145fe1f48f5302277560407a"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_set_errno_to_zero" ref="gaf0f4cb7f145fe1f48f5302277560407a" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaf0f4cb7f145fe1f48f5302277560407a">_dbus_set_errno_to_zero</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Assign 0 to the global errno variable. <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__DBusInternalsUtils.html#gab9ccdfee5c7986ff236a6cde66a9af2f">_dbus_get_is_errno_nonzero</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See if errno is set. <a href="#gab9ccdfee5c7986ff236a6cde66a9af2f"></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__DBusInternalsUtils.html#gaec2ce24907adaedd1bf88bb28d82c96d">_dbus_get_is_errno_enomem</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See if errno is ENOMEM. <a href="#gaec2ce24907adaedd1bf88bb28d82c96d"></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__DBusInternalsUtils.html#ga08e67a10b197995c101c89f248c24105">_dbus_get_is_errno_eintr</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See if errno is EINTR. <a href="#ga08e67a10b197995c101c89f248c24105"></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__DBusInternalsUtils.html#ga1001bb8d98eaee545a4e9b3994d13440">_dbus_get_is_errno_epipe</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See if errno is EPIPE. <a href="#ga1001bb8d98eaee545a4e9b3994d13440"></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__DBusInternalsUtils.html#ga69062313641c53627f5afb7be96e4ea4">_dbus_get_is_errno_etoomanyrefs</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">See if errno is ETOOMANYREFS. <a href="#ga69062313641c53627f5afb7be96e4ea4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga56de84795d6df4162ad79b3be7af7588">_dbus_strerror_from_errno</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get error message from errno. <a href="#ga56de84795d6df4162ad79b3be7af7588"></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__DBusInternalsUtils.html#gaa504db352a939909051a494d06c5b607">_dbus_is_console_user</a> (<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">Checks to see if the UID sent in is the console user. <a href="#gaa504db352a939909051a494d06c5b607"></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__DBusInternalsUtils.html#gaf07ee24eddcb3b0f85fa54196bc44fe1">_dbus_get_user_id</a> (const <a class="el" href="structDBusString.html">DBusString</a> *username, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> *uid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets user ID given username. <a href="#gaf07ee24eddcb3b0f85fa54196bc44fe1"></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__DBusInternalsUtils.html#ga90657adefa9bbac9b35eee63dd46a854">_dbus_get_group_id</a> (const <a class="el" href="structDBusString.html">DBusString</a> *groupname, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> *gid)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets group ID given groupname. <a href="#ga90657adefa9bbac9b35eee63dd46a854"></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__DBusInternalsUtils.html#gac82f42ff83fabbde717cc08569265e6e">_dbus_get_user_id_and_primary_group</a> (const <a class="el" href="structDBusString.html">DBusString</a> *username, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> *uid_p, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> *gid_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets user ID and primary group given username. <a href="#gac82f42ff83fabbde717cc08569265e6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaf6b7452691c0c7d11fec4b9214137052">_dbus_user_database_lookup_group</a> (DBusUserDatabase *db, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> gid, 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">Looks up a gid or group name in the user database. <a href="#gaf6b7452691c0c7d11fec4b9214137052"></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__DBusInternalsUtils.html#gad370299b907799440331c47e8d2357e0">_dbus_user_database_get_groupname</a> (DBusUserDatabase *db, const <a class="el" href="structDBusString.html">DBusString</a> *groupname, const <a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> **info, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the user information for the given group name, returned group info should not be freed. <a href="#gad370299b907799440331c47e8d2357e0"></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__DBusInternalsUtils.html#ga70d3fd2edd61c69edc6f7fe1d5cfa6ea">_dbus_user_database_get_gid</a> (DBusUserDatabase *db, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> gid, const <a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> **info, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the user information for the given GID, returned group info should not be freed. <a href="#ga70d3fd2edd61c69edc6f7fe1d5cfa6ea"></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__DBusInternalsUtils.html#gae9408936869314101f8ea13dfa5ba968">_dbus_groups_from_uid</a> (<a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, <a class="el" href="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> **group_ids, int *n_group_ids)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets all groups corresponding to the given UID. <a href="#gae9408936869314101f8ea13dfa5ba968"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gaf725ba6f380a3b926650626eef714b67">_dbus_user_info_free_allocated</a> (<a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> *info)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the given <a class="el" href="structDBusUserInfo.html" title="Information about a UNIX user.">DBusUserInfo</a>'s members with <a class="el" href="group__DBusSysdepsUnix.html#gaa40334f7b4f185a437a8bc6d6e0994a1" title="Frees the members of info (but not info itself)">_dbus_user_info_free()</a> and also calls <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a> on the block itself. <a href="#gaf725ba6f380a3b926650626eef714b67"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gab9420d7a4a31329a00fd5709f8cf08ba">_dbus_group_info_free_allocated</a> (<a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a> *info)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a>'s members with <a class="el" href="group__DBusSysdepsUnix.html#gac2d226476e6fff50bdfaace18b897fe9" title="Frees the members of info (but not info itself).">_dbus_group_info_free()</a> and also calls <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a> on the block itself. <a href="#gab9420d7a4a31329a00fd5709f8cf08ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.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">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.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__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gad1c3538c544df91f438a13c9fb4d3a1b">_dbus_is_a_number</a> (const <a class="el" href="structDBusString.html">DBusString</a> *str, unsigned long *num)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if a given string is actually a number and converts it if it is. <a href="#gad1c3538c544df91f438a13c9fb4d3a1b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga959372f7d7cdea35ffbac3b78e29a1b0">_dbus_user_database_lookup</a> (DBusUserDatabase *db, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, 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">Looks up a uid or username in the user database. <a href="#ga959372f7d7cdea35ffbac3b78e29a1b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga15df3b3fdaa4946f69ff87f3a9a03fe7"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_user_database_lock_system" ref="ga15df3b3fdaa4946f69ff87f3a9a03fe7" args="(void)" -->
<a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga15df3b3fdaa4946f69ff87f3a9a03fe7">_dbus_user_database_lock_system</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Locks global system user database. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga468e1d62e1df24bb699c4a37fdfa274c"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_user_database_unlock_system" ref="ga468e1d62e1df24bb699c4a37fdfa274c" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga468e1d62e1df24bb699c4a37fdfa274c">_dbus_user_database_unlock_system</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unlocks global system user database. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBusUserDatabase * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga79b6c3cf0d735622b6af2795840f9d21">_dbus_user_database_get_system</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the system global user database; must be called with lock held (<a class="el" href="group__DBusInternalsUtils.html#ga15df3b3fdaa4946f69ff87f3a9a03fe7" title="Locks global system user database.">_dbus_user_database_lock_system()</a>). <a href="#ga79b6c3cf0d735622b6af2795840f9d21"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga788ce7775d7f812d28d931e8b87ddfde"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_user_database_flush_system" ref="ga788ce7775d7f812d28d931e8b87ddfde" args="(void)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga788ce7775d7f812d28d931e8b87ddfde">_dbus_user_database_flush_system</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Flushes the system global user database;. <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__DBusInternalsUtils.html#ga9c4c1850787bfd457107b95fa1878869">_dbus_username_from_current_process</a> (const <a class="el" href="structDBusString.html">DBusString</a> **username)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets username of user owning current process. <a href="#ga9c4c1850787bfd457107b95fa1878869"></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__DBusInternalsUtils.html#ga17ce3ab061a3ae2441cd33ece34f5e7a">_dbus_homedir_from_current_process</a> (const <a class="el" href="structDBusString.html">DBusString</a> **homedir)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets homedir of user owning current process. <a href="#ga17ce3ab061a3ae2441cd33ece34f5e7a"></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__DBusInternalsUtils.html#ga91c63dcb68d38347578edf39eda1712a">_dbus_homedir_from_username</a> (const <a class="el" href="structDBusString.html">DBusString</a> *username, <a class="el" href="structDBusString.html">DBusString</a> *homedir)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the home directory for the given user. <a href="#ga91c63dcb68d38347578edf39eda1712a"></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__DBusInternalsUtils.html#gabdd1dc47f44e3d6702c86c68da9a0173">_dbus_homedir_from_uid</a> (<a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, <a class="el" href="structDBusString.html">DBusString</a> *homedir)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the home directory for the given user. <a href="#gabdd1dc47f44e3d6702c86c68da9a0173"></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__DBusInternalsUtils.html#gacecdbb00a3c8b63e821edae537ae3c7b">_dbus_credentials_add_from_user</a> (<a class="el" href="structDBusCredentials.html">DBusCredentials</a> *credentials, const <a class="el" href="structDBusString.html">DBusString</a> *username)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds the credentials corresponding to the given username. <a href="#gacecdbb00a3c8b63e821edae537ae3c7b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBusUserDatabase * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga1dbf2c80952d17707c544f5d86dd8545">_dbus_user_database_new</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new user database object used to look up and cache user information. <a href="#ga1dbf2c80952d17707c544f5d86dd8545"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab553751e96f8506d10349fb5fb1eaa82"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_user_database_flush" ref="gab553751e96f8506d10349fb5fb1eaa82" args="(DBusUserDatabase *db)" -->
void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gab553751e96f8506d10349fb5fb1eaa82">_dbus_user_database_flush</a> (DBusUserDatabase *db)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Flush all information out of the user database. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga55dbb78c415da040037442eca4c4e80e">_dbus_user_database_unref</a> (DBusUserDatabase *db)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Decrements refcount of user database. <a href="#ga55dbb78c415da040037442eca4c4e80e"></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__DBusInternalsUtils.html#ga6a7e8b8cf3a6968972e9a49726022638">_dbus_user_database_get_uid</a> (DBusUserDatabase *db, <a class="el" href="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> uid, const <a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> **info, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the user information for the given UID, returned user info should not be freed. <a href="#ga6a7e8b8cf3a6968972e9a49726022638"></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__DBusInternalsUtils.html#gaccf1d5b330707a1835dcf4ce49a29c8c">_dbus_user_database_get_username</a> (DBusUserDatabase *db, const <a class="el" href="structDBusString.html">DBusString</a> *username, const <a class="el" href="structDBusUserInfo.html">DBusUserInfo</a> **info, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the user information for the given username. <a href="#gaccf1d5b330707a1835dcf4ce49a29c8c"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadb458811a027c9bbae57216a4c33a5f7"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_no_memory_message" ref="gadb458811a027c9bbae57216a4c33a5f7" args="" -->
const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#gadb458811a027c9bbae57216a4c33a5f7">_dbus_no_memory_message</a> = "Not enough memory"</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Fixed "out of memory" error message, just to avoid making up a different string every time and wasting space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga748d6ccfb8090bf9f0bf338946c8f5e2"></a><!-- doxytag: member="DBusInternalsUtils::_dbus_return_if_fail_warning_format" ref="ga748d6ccfb8090bf9f0bf338946c8f5e2" args="" -->
const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusInternalsUtils.html#ga748d6ccfb8090bf9f0bf338946c8f5e2">_dbus_return_if_fail_warning_format</a> = "This is normally a bug in some application using the D-Bus library.\n"</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">String used in _dbus_return_if_fail macro. <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>Utility functions (_dbus_assert(), <a class="el" href="group__DBusInternalsUtils.html#gabea2c16d6d3fe7c4eb5b9496fc877f84" title="Prints a warning message to stderr.">_dbus_warn()</a>, etc.) </p>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="gaa1d634db87605c2a83f2750ce6052653"></a><!-- doxytag: member="dbus-spawn.c::ReadStatus" ref="gaa1d634db87605c2a83f2750ce6052653" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__DBusInternalsUtils.html#gaa1d634db87605c2a83f2750ce6052653">ReadStatus</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Enumeration for status of a read() </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggaa1d634db87605c2a83f2750ce6052653a105d3aa9ec19f4c060b39c7fafba39ff"></a><!-- doxytag: member="READ_STATUS_OK" ref="ggaa1d634db87605c2a83f2750ce6052653a105d3aa9ec19f4c060b39c7fafba39ff" args="" -->READ_STATUS_OK</em> </td><td>
<p>Read succeeded. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa1d634db87605c2a83f2750ce6052653ad13164fb31fb0b5bc1ec802d09d10411"></a><!-- doxytag: member="READ_STATUS_ERROR" ref="ggaa1d634db87605c2a83f2750ce6052653ad13164fb31fb0b5bc1ec802d09d10411" args="" -->READ_STATUS_ERROR</em> </td><td>
<p>Some kind of error. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa1d634db87605c2a83f2750ce6052653a7d65492f3f0d09176ac4504987457d23"></a><!-- doxytag: member="READ_STATUS_EOF" ref="ggaa1d634db87605c2a83f2750ce6052653a7d65492f3f0d09176ac4504987457d23" args="" -->READ_STATUS_EOF</em> </td><td>
<p>EOF returned. </p>
</td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00063">63</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga1b17eec3f7915c21251685e16123f299"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_get_child_exit_status" ref="ga1b17eec3f7915c21251685e16123f299" args="(DBusBabysitter *sitter, int *status)" -->
<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#ga1b17eec3f7915c21251685e16123f299">_dbus_babysitter_get_child_exit_status</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>status</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the exit status of the child. </p>
<p>We do this so implementation specific detail is not cluttering up dbus, for example the system launcher code. This can only be called if the child has exited, i.e. call <a class="el" href="group__DBusInternalsUtils.html#ga5c463ea356ea62055a35211e8d81f8b9" title="Checks whether the child has exited, without blocking.">_dbus_babysitter_get_child_exited()</a>. It returns FALSE if the child did not return a status code, e.g. because the child was signaled or we failed to ever launch the child in the first place.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
<tr><td class="paramname">status</td><td>the returned status code </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> on failure </dd></dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00715">715</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-spawn_8c_source.html#l00690">_dbus_babysitter_get_child_exited()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-spawn_8c_source.html#l00261">DBusBabysitter::status</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga5c463ea356ea62055a35211e8d81f8b9"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_get_child_exited" ref="ga5c463ea356ea62055a35211e8d81f8b9" args="(DBusBabysitter *sitter)" -->
<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#ga5c463ea356ea62055a35211e8d81f8b9">_dbus_babysitter_get_child_exited</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the child has exited, without blocking. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00690">690</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-spawn_8c_source.html#l00659">LIVE_CHILDREN</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-spawn-win_8c_source.html#l00080">DBusBabysitter::socket_to_babysitter</a>.</p>
<p>Referenced by <a class="el" href="dbus-spawn-win_8c_source.html#l00303">_dbus_babysitter_get_child_exit_status()</a>, and <a class="el" href="dbus-spawn-win_8c_source.html#l00327">_dbus_babysitter_set_child_exit_error()</a>.</p>
</div>
</div>
<a class="anchor" id="gacdc9c49735d6ce8364647c1961aa8d2b"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_kill_child" ref="gacdc9c49735d6ce8364647c1961aa8d2b" args="(DBusBabysitter *sitter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gacdc9c49735d6ce8364647c1961aa8d2b">_dbus_babysitter_kill_child</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Blocks until the babysitter process gives us the PID of the spawned grandchild, then kills the spawned grandchild. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter object </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00668">668</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-spawn_8c_source.html#l00250">DBusBabysitter::grandchild_pid</a>, <a class="el" href="dbus-spawn_8c_source.html#l00659">LIVE_CHILDREN</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga525b5fdb780ddf6891918466965e6eb6"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_ref" ref="ga525b5fdb780ddf6891918466965e6eb6" args="(DBusBabysitter *sitter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a>* <a class="el" href="group__DBusInternalsUtils.html#ga525b5fdb780ddf6891918466965e6eb6">_dbus_babysitter_ref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Increment the reference count on the babysitter object. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the babysitter </dd></dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00302">302</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-spawn-win_8c_source.html#l00063">DBusBabysitter::refcount</a>.</p>
</div>
</div>
<a class="anchor" id="ga9c6f92a67e41f08d8eb254e294fd0378"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_set_child_exit_error" ref="ga9c6f92a67e41f08d8eb254e294fd0378" args="(DBusBabysitter *sitter, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga9c6f92a67e41f08d8eb254e294fd0378">_dbus_babysitter_set_child_exit_error</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</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>Sets the <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> with an explanation of why the spawned child process exited (on a signal, or whatever). </p>
<p>If the child process has not exited, does nothing (error will remain unset).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
<tr><td class="paramname">error</td><td>an error to fill in </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00739">739</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-spawn_8c_source.html#l00690">_dbus_babysitter_get_child_exited()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00350">DBUS_ERROR_FAILED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00415">DBUS_ERROR_SPAWN_CHILD_EXITED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00417">DBUS_ERROR_SPAWN_CHILD_SIGNALED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00411">DBUS_ERROR_SPAWN_EXEC_FAILED</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-spawn_8c_source.html#l00260">DBusBabysitter::errnum</a>, <a class="el" href="dbus-spawn_8c_source.html#l00264">DBusBabysitter::have_exec_errnum</a>, <a class="el" href="dbus-spawn_8c_source.html#l00263">DBusBabysitter::have_fork_errnum</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00071">DBusBabysitter::log_name</a>, and <a class="el" href="dbus-spawn_8c_source.html#l00261">DBusBabysitter::status</a>.</p>
</div>
</div>
<a class="anchor" id="ga5f467b14f0c2f667e46c4ba786808e5b"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_set_watch_functions" ref="ga5f467b14f0c2f667e46c4ba786808e5b" args="(DBusBabysitter *sitter, DBusAddWatchFunction add_function, DBusRemoveWatchFunction remove_function, DBusWatchToggledFunction toggled_function, void *data, DBusFreeFunction free_data_function)" -->
<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#ga5f467b14f0c2f667e46c4ba786808e5b">_dbus_babysitter_set_watch_functions</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusConnection.html#ga9188ca3fd89c957dc269dbe8601b270e">DBusAddWatchFunction</a> </td>
<td class="paramname"><em>add_function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusConnection.html#gaaab846a872d938b27503129551ea0c62">DBusRemoveWatchFunction</a> </td>
<td class="paramname"><em>remove_function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusConnection.html#gace13544ff3075b5fccbce896682ec6ff">DBusWatchToggledFunction</a> </td>
<td class="paramname"><em>toggled_function</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusMemory.html#ga061bcded226d76c7d7de35beaa165cb5">DBusFreeFunction</a> </td>
<td class="paramname"><em>free_data_function</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets watch functions to notify us when the babysitter object needs to read/write file descriptors. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
<tr><td class="paramname">add_function</td><td>function to begin monitoring a new descriptor. </td></tr>
<tr><td class="paramname">remove_function</td><td>function to stop monitoring a descriptor. </td></tr>
<tr><td class="paramname">toggled_function</td><td>function to notify when the watch is enabled/disabled </td></tr>
<tr><td class="paramname">data</td><td>data to pass to add_function and remove_function. </td></tr>
<tr><td class="paramname">free_data_function</td><td>function to be called to free the data. </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> on failure (no memory) </dd></dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00797">797</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-watch_8c_source.html#l00296">_dbus_watch_list_set_functions()</a>, and <a class="el" href="dbus-spawn-win_8c_source.html#l00083">DBusBabysitter::watches</a>.</p>
</div>
</div>
<a class="anchor" id="ga3205e9f8672271794aeb9d451e2fcc4a"></a><!-- doxytag: member="dbus-spawn.c::_dbus_babysitter_unref" ref="ga3205e9f8672271794aeb9d451e2fcc4a" args="(DBusBabysitter *sitter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga3205e9f8672271794aeb9d451e2fcc4a">_dbus_babysitter_unref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> * </td>
<td class="paramname"><em>sitter</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Decrement the reference count on the babysitter object. </p>
<p>When the reference count of the babysitter object reaches zero, the babysitter is killed and the child that was being babysat gets emancipated.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter</td><td>the babysitter </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l00324">324</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00202">_dbus_close_socket()</a>, <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>, <a class="el" href="dbus-watch_8c_source.html#l00169">_dbus_watch_invalidate()</a>, <a class="el" href="dbus-watch_8c_source.html#l00249">_dbus_watch_list_free()</a>, <a class="el" href="dbus-watch_8c_source.html#l00138">_dbus_watch_unref()</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00071">DBusBabysitter::log_name</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00063">DBusBabysitter::refcount</a>, <a class="el" href="dbus-spawn_8c_source.html#l00249">DBusBabysitter::sitter_pid</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00084">DBusBabysitter::sitter_watch</a>, <a class="el" href="dbus-spawn_8c_source.html#l00261">DBusBabysitter::status</a>, and <a class="el" href="dbus-spawn-win_8c_source.html#l00083">DBusBabysitter::watches</a>.</p>
<p>Referenced by <a class="el" href="dbus-spawn-win_8c_source.html#l00644">_dbus_spawn_async_with_babysitter()</a>.</p>
</div>
</div>
<a class="anchor" id="gaca61af8681a48862835ea8cfd263f5ab"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_become_daemon" ref="gaca61af8681a48862835ea8cfd263f5ab" args="(const DBusString *pidfile, DBusPipe *print_pid_pipe, DBusError *error, dbus_bool_t keep_umask)" -->
<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__DBusSysdeps.html#gaca61af8681a48862835ea8cfd263f5ab">_dbus_become_daemon</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>pidfile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusPipe.html">DBusPipe</a> * </td>
<td class="paramname"><em>print_pid_pipe</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 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>keep_umask</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Does the chdir, fork, setsid, etc. </p>
<p>to become a daemon process.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">pidfile</td><td><a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, or pidfile to create </td></tr>
<tr><td class="paramname">print_pid_pipe</td><td>pipe to print daemon's pid to, or -1 for none </td></tr>
<tr><td class="paramname">error</td><td>return location for errors </td></tr>
<tr><td class="paramname">keep_umask</td><td><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> to keep the original umask </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> on failure </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00087">87</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga82c920a8c3b5958ba1ecf8e5f5d6373b"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_change_to_daemon_user" ref="ga82c920a8c3b5958ba1ecf8e5f5d6373b" args="(const char *user, 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__DBusSysdeps.html#ga82c920a8c3b5958ba1ecf8e5f5d6373b">_dbus_change_to_daemon_user</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>user</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>Changes the user and group the bus is running as. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">user</td><td>the user to become </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><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> on failure </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00334">334</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="gacecdbb00a3c8b63e821edae537ae3c7b"></a><!-- doxytag: member="dbus-userdb.c::_dbus_credentials_add_from_user" ref="gacecdbb00a3c8b63e821edae537ae3c7b" args="(DBusCredentials *credentials, const DBusString *username)" -->
<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#gacecdbb00a3c8b63e821edae537ae3c7b">_dbus_credentials_add_from_user</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusCredentials.html">DBusCredentials</a> * </td>
<td class="paramname"><em>credentials</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></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Adds the credentials corresponding to the given username. </p>
<p>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.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000068">Todo:</a></b></dt><dd>this is broken because it treats OOM and parse error the same way. Needs a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a>.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">credentials</td><td>credentials to fill in </td></tr>
<tr><td class="paramname">username</td><td>the username </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 the username existed and we got some credentials </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00510">510</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-credentials_8c_source.html#l00164">_dbus_credentials_add_unix_uid()</a>, <a class="el" href="dbus-credentials_8c_source.html#l00180">_dbus_credentials_add_windows_sid()</a>, <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00676">_dbus_user_database_get_username()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00100">DBusUserInfo::uid</a>.</p>
</div>
</div>
<a class="anchor" id="gab9a2ddb130da035d6186f2d96bf37cb4"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_directory_get_next_file" ref="gab9a2ddb130da035d6186f2d96bf37cb4" args="(DBusDirIter *iter, DBusString *filename, 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__DBusSysdeps.html#gab9a2ddb130da035d6186f2d96bf37cb4">_dbus_directory_get_next_file</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusDirIter.html">DBusDirIter</a> * </td>
<td class="paramname"><em>iter</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>filename</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>Get next file in the directory. </p>
<p>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.</p>
<p>This function is not re-entrant, and not necessarily thread-safe. Only use it for test code or single-threaded utilities.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>the iterator </td></tr>
<tr><td class="paramname">filename</td><td>string to be set to the next file in the dir </td></tr>
<tr><td class="paramname">error</td><td>return location for error </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 filename was filled in with a new filename </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00825">825</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaaf6eb8179fb6ea2175ed9742a0c8be68"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_directory_open" ref="gaaf6eb8179fb6ea2175ed9742a0c8be68" args="(const DBusString *filename, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusDirIter.html">DBusDirIter</a>* <a class="el" href="group__DBusSysdeps.html#gaaf6eb8179fb6ea2175ed9742a0c8be68">_dbus_directory_open</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>filename</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>Open a directory to iterate over. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>the directory name </td></tr>
<tr><td class="paramname">error</td><td>exception return object or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>new iterator, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00777">777</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga53bbcbbd0b564c14c599813dde535443"></a><!-- doxytag: member="dbus-internals.c::_dbus_dup_string_array" ref="ga53bbcbbd0b564c14c599813dde535443" args="(const char **array)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char** <a class="el" href="group__DBusInternalsUtils.html#ga53bbcbbd0b564c14c599813dde535443">_dbus_dup_string_array</a> </td>
<td>(</td>
<td class="paramtype">const char ** </td>
<td class="paramname"><em>array</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Duplicates a string array. </p>
<p>Result may be freed with <a class="el" href="group__DBusMemory.html#gac200b2dbc8b3f6ecac4d42426fb97b40" title="Frees a NULL-terminated array of strings.">dbus_free_string_array()</a>. Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if memory allocation fails. If the array to be duplicated is <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, returns <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">array</td><td>array to duplicate. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>newly-allocated copy. </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00578">578</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-internals_8c_source.html#l00527">_dbus_strdup()</a>, <a class="el" href="dbus-memory_8c_source.html#l00749">dbus_free_string_array()</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-auth_8c_source.html#l02396">_dbus_auth_set_mechanisms()</a>, and <a class="el" href="dbus-server_8c_source.html#l01033">dbus_server_set_auth_mechanisms()</a>.</p>
</div>
</div>
<a class="anchor" id="ga2212aa0e5732257598a6597748c658e4"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_error_from_errno" ref="ga2212aa0e5732257598a6597748c658e4" args="(int error_number)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="group__DBusSysdeps.html#ga2212aa0e5732257598a6597748c658e4">_dbus_error_from_errno</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>error_number</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Converts a UNIX errno, or Windows errno or WinSock error value into a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> name. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000062">Todo:</a></b></dt><dd>should cover more errnos, specifically those from open().</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">error_number</td><td>the errno. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>an error name </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00609">609</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00368">DBUS_ERROR_ACCESS_DENIED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00382">DBUS_ERROR_ADDRESS_IN_USE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00350">DBUS_ERROR_FAILED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00390">DBUS_ERROR_FILE_EXISTS</a>, <a class="el" href="dbus-protocol_8h_source.html#l00388">DBUS_ERROR_FILE_NOT_FOUND</a>, <a class="el" href="dbus-protocol_8h_source.html#l00366">DBUS_ERROR_LIMITS_EXCEEDED</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00380">DBUS_ERROR_NO_NETWORK</a>, <a class="el" href="dbus-protocol_8h_source.html#l00372">DBUS_ERROR_NO_SERVER</a>, <a class="el" href="dbus-protocol_8h_source.html#l00364">DBUS_ERROR_NOT_SUPPORTED</a>, and <a class="el" href="dbus-protocol_8h_source.html#l00378">DBUS_ERROR_TIMEOUT</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l04035">_dbus_append_address_from_socket()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00087">_dbus_become_daemon()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00334">_dbus_change_to_daemon_user()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02023">_dbus_check_dir_is_private_to_user()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">_dbus_close()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l00493">_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#l00927">_dbus_connect_exec()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l00831">_dbus_connect_unix_socket()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00825">_dbus_directory_get_next_file()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00777">_dbus_directory_open()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02987">_dbus_dup()</a>, <a class="el" href="dbus-sysdeps_8c_source.html#l00701">_dbus_error_from_system_errno()</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-userdb-util_8c_source.html#l00049">_dbus_is_console_user()</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-sysdeps-unix_8c_source.html#l01665">_dbus_read_credentials_socket()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l01870">_dbus_send_credentials_socket()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00729">_dbus_stat()</a>, and <a class="el" href="dbus-file-unix_8c_source.html#l00164">_dbus_string_save_to_file()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf4f1db48d66dcb310b9771beb955578e"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_error_from_system_errno" ref="gaf4f1db48d66dcb310b9771beb955578e" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="group__DBusSysdeps.html#gaf4f1db48d66dcb310b9771beb955578e">_dbus_error_from_system_errno</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Converts the current system errno value into a <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a> name. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>an error name </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00701">701</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00609">_dbus_error_from_errno()</a>.</p>
</div>
</div>
<a class="anchor" id="ga13a527e32c05b63e8b32a63d728e20e8"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_file_exists" ref="ga13a527e32c05b63e8b32a63d728e20e8" args="(const char *file)" -->
<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#ga13a527e32c05b63e8b32a63d728e20e8">_dbus_file_exists</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>file</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks if a file exists. </p>
<p>File interface.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">file</td><td>full path to the file </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 file exists </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00632">632</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga709ce349c6ee05263850444fb4e0177d"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_generate_random_ascii" ref="ga709ce349c6ee05263850444fb4e0177d" args="(DBusString *str, int n_bytes)" -->
<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__DBusSysdeps.html#ga709ce349c6ee05263850444fb4e0177d">_dbus_generate_random_ascii</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>n_bytes</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Generates the given number of random bytes, where the bytes are chosen from the alphanumeric ASCII subset. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string </td></tr>
<tr><td class="paramname">n_bytes</td><td>the number of random ASCII bytes to append to string </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, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if no memory or other failure </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00570">570</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02852">_dbus_generate_random_bytes()</a>, <a class="el" href="dbus-string_8c_source.html#l00545">_dbus_string_get_byte()</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#l00521">_dbus_string_set_byte()</a>, <a class="el" href="dbus-string_8c_source.html#l02432">_dbus_string_validate_ascii()</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>, and <a class="el" href="dbus-file-unix_8c_source.html#l00164">_dbus_string_save_to_file()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa32f87746e9264b2425736043d02fad4"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_generate_random_bytes_buffer" ref="gaa32f87746e9264b2425736043d02fad4" args="(char *buffer, int n_bytes)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusSysdeps.html#gaa32f87746e9264b2425736043d02fad4">_dbus_generate_random_bytes_buffer</a> </td>
<td>(</td>
<td class="paramtype">char * </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>n_bytes</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Fills n_bytes of the given buffer with random bytes. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">buffer</td><td>an allocated buffer </td></tr>
<tr><td class="paramname">n_bytes</td><td>the number of bytes in buffer to write to </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00538">538</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00503">_dbus_generate_pseudorandom_bytes_buffer()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02852">_dbus_generate_random_bytes()</a>, <a class="el" href="dbus-string_8c_source.html#l00680">_dbus_string_copy_to_buffer()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, and <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>.</p>
<p>Referenced by <a class="el" href="dbus-internals_8c_source.html#l00641">_dbus_generate_uuid()</a>.</p>
</div>
</div>
<a class="anchor" id="ga08c2922335845e5c857e88399436b9ba"></a><!-- doxytag: member="dbus-internals.c::_dbus_generate_uuid" ref="ga08c2922335845e5c857e88399436b9ba" args="(DBusGUID *uuid)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga08c2922335845e5c857e88399436b9ba">_dbus_generate_uuid</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> * </td>
<td class="paramname"><em>uuid</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Generates a new UUID. </p>
<p>If you change how this is done, there's some text about it in the spec that should also change.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uuid</td><td>the uuid to initialize </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00641">641</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00538">_dbus_generate_random_bytes_buffer()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02703">_dbus_get_real_time()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-internals_8c_source.html#l00854">_dbus_get_local_machine_uuid_encoded()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03604">_dbus_read_local_machine_uuid()</a>, <a class="el" href="dbus-internals_8c_source.html#l00806">_dbus_read_uuid_file()</a>, <a class="el" href="dbus-server_8c_source.html#l00111">_dbus_server_init_base()</a>, and <a class="el" href="dbus-uuidgen_8c_source.html#l00122">dbus_internal_do_not_use_create_uuid()</a>.</p>
</div>
</div>
<a class="anchor" id="ga90657adefa9bbac9b35eee63dd46a854"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_get_group_id" ref="ga90657adefa9bbac9b35eee63dd46a854" args="(const DBusString *groupname, dbus_gid_t *gid)" -->
<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#ga90657adefa9bbac9b35eee63dd46a854">_dbus_get_group_id</a> </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="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> * </td>
<td class="paramname"><em>gid</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets group ID given groupname. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">groupname</td><td>the groupname </td></tr>
<tr><td class="paramname">gid</td><td>return location for GID </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 group name existed and we got the GID </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00160">160</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb-util_8c_source.html#l00347">_dbus_user_database_get_groupname()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00113">DBusGroupInfo::gid</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-sysdeps-util-unix_8c_source.html#l01074">_dbus_parse_unix_group_from_config()</a>.</p>
</div>
</div>
<a class="anchor" id="ga08e67a10b197995c101c89f248c24105"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_get_is_errno_eintr" ref="ga08e67a10b197995c101c89f248c24105" args="(void)" -->
<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__DBusSysdeps.html#ga08e67a10b197995c101c89f248c24105">_dbus_get_is_errno_eintr</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See if errno is EINTR. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if errno == EINTR </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00744">744</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaec2ce24907adaedd1bf88bb28d82c96d"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_get_is_errno_enomem" ref="gaec2ce24907adaedd1bf88bb28d82c96d" args="(void)" -->
<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__DBusSysdeps.html#gaec2ce24907adaedd1bf88bb28d82c96d">_dbus_get_is_errno_enomem</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See if errno is ENOMEM. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if errno == ENOMEM </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00734">734</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga1001bb8d98eaee545a4e9b3994d13440"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_get_is_errno_epipe" ref="ga1001bb8d98eaee545a4e9b3994d13440" args="(void)" -->
<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__DBusSysdeps.html#ga1001bb8d98eaee545a4e9b3994d13440">_dbus_get_is_errno_epipe</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See if errno is EPIPE. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if errno == EPIPE </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00754">754</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga69062313641c53627f5afb7be96e4ea4"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_get_is_errno_etoomanyrefs" ref="ga69062313641c53627f5afb7be96e4ea4" args="(void)" -->
<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__DBusSysdeps.html#ga69062313641c53627f5afb7be96e4ea4">_dbus_get_is_errno_etoomanyrefs</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See if errno is ETOOMANYREFS. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if errno == ETOOMANYREFS </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00764">764</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
</div>
</div>
<a class="anchor" id="gab9ccdfee5c7986ff236a6cde66a9af2f"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_get_is_errno_nonzero" ref="gab9ccdfee5c7986ff236a6cde66a9af2f" args="(void)" -->
<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__DBusSysdeps.html#gab9ccdfee5c7986ff236a6cde66a9af2f">_dbus_get_is_errno_nonzero</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>See if errno is set. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if errno is not 0 </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00724">724</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga49ba67405d677af6cde9329ed87ea91f"></a><!-- doxytag: member="dbus-internals.c::_dbus_get_local_machine_uuid_encoded" ref="ga49ba67405d677af6cde9329ed87ea91f" args="(DBusString *uuid_str)" -->
<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#ga49ba67405d677af6cde9329ed87ea91f">_dbus_get_local_machine_uuid_encoded</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>uuid_str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the hex-encoded UUID of the machine this function is executed on. </p>
<p>This UUID is guaranteed to be the same for a given machine at least until it next reboots, though it also makes some effort to be the same forever, it may change if the machine is reconfigured or its hardware is modified.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uuid_str</td><td>string to append hex-encoded machine uuid to </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00854">854</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00781">_dbus_current_generation</a>, <a class="el" href="dbus-internals_8c_source.html#l00641">_dbus_generate_uuid()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03604">_dbus_read_local_machine_uuid()</a>, <a class="el" href="dbus-internals_8c_source.html#l00663">_dbus_uuid_encode()</a>, <a class="el" href="dbus-internals_8c_source.html#l00258">_dbus_warn_check_failed()</a>, <a class="el" href="dbus-errors_8c_source.html#l00211">dbus_error_free()</a>, <a class="el" href="dbus-errors_8h_source.html#l00062">DBUS_ERROR_INIT</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, and <a class="el" href="dbus-errors_8h_source.html#l00051">DBusError::message</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03508">_dbus_get_autolaunch_address()</a>, and <a class="el" href="dbus-misc_8c_source.html#l00073">dbus_get_local_machine_id()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf07ee24eddcb3b0f85fa54196bc44fe1"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_get_user_id" ref="gaf07ee24eddcb3b0f85fa54196bc44fe1" args="(const DBusString *username, 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__DBusInternalsUtils.html#gaf07ee24eddcb3b0f85fa54196bc44fe1">_dbus_get_user_id</a> </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="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 user ID given username. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>the username </td></tr>
<tr><td class="paramname">uid</td><td>return location for UID </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 username existed and we got the UID </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00146">146</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb-util_8c_source.html#l00199">_dbus_get_user_id_and_primary_group()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01058">_dbus_parse_unix_user_from_config()</a>.</p>
</div>
</div>
<a class="anchor" id="gac82f42ff83fabbde717cc08569265e6e"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_get_user_id_and_primary_group" ref="gac82f42ff83fabbde717cc08569265e6e" args="(const DBusString *username, dbus_uid_t *uid_p, dbus_gid_t *gid_p)" -->
<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#gac82f42ff83fabbde717cc08569265e6e">_dbus_get_user_id_and_primary_group</a> </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="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> * </td>
<td class="paramname"><em>uid_p</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_p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets user ID and primary group given username. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>the username </td></tr>
<tr><td class="paramname">uid_p</td><td>return location for UID </td></tr>
<tr><td class="paramname">gid_p</td><td>return location for GID </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 username existed and we got the UID and GID </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00199">199</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00676">_dbus_user_database_get_username()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00101">DBusUserInfo::primary_gid</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00100">DBusUserInfo::uid</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00334">_dbus_change_to_daemon_user()</a>, <a class="el" href="dbus-userdb-util_8c_source.html#l00146">_dbus_get_user_id()</a>, and <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00314">_dbus_verify_daemon_user()</a>.</p>
</div>
</div>
<a class="anchor" id="ga23814bdf1859c6aa52da1feab8f1aed4"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_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-util-unix.c::_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-userdb.c::_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="gab9420d7a4a31329a00fd5709f8cf08ba"></a><!-- doxytag: member="dbus-userdb.c::_dbus_group_info_free_allocated" ref="gab9420d7a4a31329a00fd5709f8cf08ba" args="(DBusGroupInfo *info)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gab9420d7a4a31329a00fd5709f8cf08ba">_dbus_group_info_free_allocated</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 given <a class="el" href="structDBusGroupInfo.html" title="Information about a UNIX group.">DBusGroupInfo</a>'s members with <a class="el" href="group__DBusSysdepsUnix.html#gac2d226476e6fff50bdfaace18b897fe9" title="Frees the members of info (but not info itself).">_dbus_group_info_free()</a> and also calls <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a> on the block itself. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the info </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00061">61</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00089">_dbus_group_info_free()</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, and <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>, and <a class="el" href="dbus-userdb_8c_source.html#l00550">_dbus_user_database_new()</a>.</p>
</div>
</div>
<a class="anchor" id="gae9408936869314101f8ea13dfa5ba968"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_groups_from_uid" ref="gae9408936869314101f8ea13dfa5ba968" args="(dbus_uid_t uid, dbus_gid_t **group_ids, int *n_group_ids)" -->
<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#gae9408936869314101f8ea13dfa5ba968">_dbus_groups_from_uid</a> </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="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> ** </td>
<td class="paramname"><em>group_ids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>n_group_ids</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets all groups corresponding to the given UID. </p>
<p>Returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if no memory, or user isn't known, but always initializes group_ids to a NULL array.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>the UID </td></tr>
<tr><td class="paramname">group_ids</td><td>return location for array of group IDs </td></tr>
<tr><td class="paramname">n_group_ids</td><td>return location for length of returned array </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 the UID existed and we got some credentials </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00388">388</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00657">_dbus_user_database_get_uid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="dbus-memory_8h_source.html#l00058">dbus_new</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</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#l00103">DBusUserInfo::n_group_ids</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, and <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00100">DBusUserInfo::uid</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01091">_dbus_unix_groups_from_uid()</a>.</p>
</div>
</div>
<a class="anchor" id="ga17ce3ab061a3ae2441cd33ece34f5e7a"></a><!-- doxytag: member="dbus-userdb.c::_dbus_homedir_from_current_process" ref="ga17ce3ab061a3ae2441cd33ece34f5e7a" args="(const DBusString **homedir)" -->
<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#ga17ce3ab061a3ae2441cd33ece34f5e7a">_dbus_homedir_from_current_process</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>homedir</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets homedir of user owning current process. </p>
<p>The returned string is valid until <a class="el" href="group__DBusMemory.html#ga01912903e39428872920d861ef565bac" title="Frees all memory allocated internally by libdbus and reverses the effects of dbus_threads_init().">dbus_shutdown()</a> is called.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">homedir</td><td>place to store pointer to homedir </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00395">395</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</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-util-unix_8c_source.html#l01332">_dbus_get_standard_session_servicedirs()</a>.</p>
</div>
</div>
<a class="anchor" id="gabdd1dc47f44e3d6702c86c68da9a0173"></a><!-- doxytag: member="dbus-userdb.c::_dbus_homedir_from_uid" ref="gabdd1dc47f44e3d6702c86c68da9a0173" args="(dbus_uid_t uid, DBusString *homedir)" -->
<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#gabdd1dc47f44e3d6702c86c68da9a0173">_dbus_homedir_from_uid</a> </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="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>homedir</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the home directory for the given user. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>the uid </td></tr>
<tr><td class="paramname">homedir</td><td>string to append home directory to </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 user existed and we appended their homedir </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00461">461</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00657">_dbus_user_database_get_uid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00105">DBusUserInfo::homedir</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-sysdeps-unix_8c_source.html#l03806">_dbus_append_keyring_directory_for_credentials()</a>.</p>
</div>
</div>
<a class="anchor" id="ga91c63dcb68d38347578edf39eda1712a"></a><!-- doxytag: member="dbus-userdb.c::_dbus_homedir_from_username" ref="ga91c63dcb68d38347578edf39eda1712a" args="(const DBusString *username, DBusString *homedir)" -->
<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#ga91c63dcb68d38347578edf39eda1712a">_dbus_homedir_from_username</a> </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="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>homedir</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the home directory for the given user. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>the username </td></tr>
<tr><td class="paramname">homedir</td><td>string to append home directory to </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 user existed and we appended their homedir </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00419">419</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00676">_dbus_user_database_get_username()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00105">DBusUserInfo::homedir</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="gad1c3538c544df91f438a13c9fb4d3a1b"></a><!-- doxytag: member="dbus-userdb.c::_dbus_is_a_number" ref="gad1c3538c544df91f438a13c9fb4d3a1b" args="(const DBusString *str, unsigned long *num)" -->
<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#gad1c3538c544df91f438a13c9fb4d3a1b">_dbus_is_a_number</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned long * </td>
<td class="paramname"><em>num</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks if a given string is actually a number and converts it if it is. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the string to check </td></tr>
<tr><td class="paramname">num</td><td>the memory location of the unsigned long to fill in </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if str is a number and num is filled in </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00103">103</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.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#l00469">_dbus_string_parse_uint()</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-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>, and <a class="el" href="dbus-userdb-util_8c_source.html#l00246">_dbus_user_database_lookup_group()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa504db352a939909051a494d06c5b607"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_is_console_user" ref="gaa504db352a939909051a494d06c5b607" args="(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__DBusInternalsUtils.html#gaa504db352a939909051a494d06c5b607">_dbus_is_console_user</a> </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>Checks to see if the UID sent in is the console user. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>UID of person to check </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><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the UID is the same as the console user and there are no errors </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00049">49</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.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-util-unix_8c_source.html#l00729">_dbus_stat()</a>, <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00644">_dbus_user_at_console()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00336">_dbus_user_database_get_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00350">DBUS_ERROR_FAILED</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00111">DBUS_UID_FORMAT</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00405">DBusStat::uid</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-sysdeps-util-unix_8c_source.html#l01108">_dbus_unix_user_is_at_console()</a>.</p>
</div>
</div>
<a class="anchor" id="gaad95864dca5140b730bc143cb2d1b024"></a><!-- doxytag: member="dbus-internals.c::_dbus_memdup" ref="gaad95864dca5140b730bc143cb2d1b024" args="(const void *mem, size_t n_bytes)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* <a class="el" href="group__DBusInternalsUtils.html#gaad95864dca5140b730bc143cb2d1b024">_dbus_memdup</a> </td>
<td>(</td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>mem</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>n_bytes</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Duplicates a block of memory. </p>
<p>Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> on failure.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">mem</td><td>memory to copy </td></tr>
<tr><td class="paramname">n_bytes</td><td>number of bytes to copy </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the copy </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00555">555</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00461">dbus_malloc()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-credentials_8c_source.html#l00204">_dbus_credentials_add_adt_audit_data()</a>, and <a class="el" href="dbus-object-tree_8c_source.html#l01242">_dbus_decompose_path()</a>.</p>
</div>
</div>
<a class="anchor" id="ga96da816095ec7fec07136a6019745bcb"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_parse_unix_group_from_config" ref="ga96da816095ec7fec07136a6019745bcb" args="(const DBusString *groupname, dbus_gid_t *gid_p)" -->
<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__DBusSysdeps.html#ga96da816095ec7fec07136a6019745bcb">_dbus_parse_unix_group_from_config</a> </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="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> * </td>
<td class="paramname"><em>gid_p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Parse a UNIX group from the bus config file. </p>
<p>On Windows, this should simply always fail (just return <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">groupname</td><td>the groupname text </td></tr>
<tr><td class="paramname">gid_p</td><td>place to return the gid </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-util-unix_8c_source.html#l01074">1074</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga437470fc327b0169fc14a0b66a6e5278"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_parse_unix_user_from_config" ref="ga437470fc327b0169fc14a0b66a6e5278" args="(const DBusString *username, dbus_uid_t *uid_p)" -->
<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__DBusSysdeps.html#ga437470fc327b0169fc14a0b66a6e5278">_dbus_parse_unix_user_from_config</a> </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="group__DBusSysdeps.html#ga186e987b700f9ddc6cea8aa0db82b151">dbus_uid_t</a> * </td>
<td class="paramname"><em>uid_p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Parse a UNIX user from the bus config file. </p>
<p>On Windows, this should simply always fail (just return <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>the username text </td></tr>
<tr><td class="paramname">uid_p</td><td>place to return the uid </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-util-unix_8c_source.html#l01058">1058</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga6d80876bcae54f47cde79d0bce20321d"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_path_is_absolute" ref="ga6d80876bcae54f47cde79d0bce20321d" args="(const DBusString *filename)" -->
<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__DBusSysdeps.html#ga6d80876bcae54f47cde79d0bce20321d">_dbus_path_is_absolute</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>filename</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the filename is an absolute path. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>the filename </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 an absolute path </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00712">712</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-win_8c_source.html#l01647">_dbus_get_standard_session_servicedirs()</a>.</p>
</div>
</div>
<a class="anchor" id="ga709fd30e6b940a5952af38efaf24ad51"></a><!-- doxytag: member="dbus-internals.c::_dbus_read_uuid_file" ref="ga709fd30e6b940a5952af38efaf24ad51" args="(const DBusString *filename, DBusGUID *uuid, dbus_bool_t create_if_not_found, 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#ga709fd30e6b940a5952af38efaf24ad51">_dbus_read_uuid_file</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>filename</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> * </td>
<td class="paramname"><em>uuid</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>create_if_not_found</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>Reads (and optionally writes) a uuid to a file. </p>
<p>Initializes the uuid unless an error is returned.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>the name of the file </td></tr>
<tr><td class="paramname">uuid</td><td>uuid to be initialized with the loaded uuid </td></tr>
<tr><td class="paramname">create_if_not_found</td><td><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> to create a new uuid and save it if the file doesn't exist </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 the error is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00806">806</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-internals_8c_source.html#l00641">_dbus_generate_uuid()</a>, <a class="el" href="dbus-internals_8c_source.html#l00757">_dbus_write_uuid_file()</a>, <a class="el" href="dbus-errors_8c_source.html#l00211">dbus_error_free()</a>, <a class="el" href="dbus-errors_8c_source.html#l00302">dbus_error_has_name()</a>, <a class="el" href="dbus-errors_8h_source.html#l00062">DBUS_ERROR_INIT</a>, <a class="el" href="dbus-protocol_8h_source.html#l00439">DBUS_ERROR_INVALID_FILE_CONTENT</a>, <a class="el" href="dbus-errors_8c_source.html#l00279">dbus_move_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#l03604">_dbus_read_local_machine_uuid()</a>, and <a class="el" href="dbus-uuidgen_8c_source.html#l00083">dbus_internal_do_not_use_get_uuid()</a>.</p>
</div>
</div>
<a class="anchor" id="ga9912f2c86e49357eb9729729dd46f50d"></a><!-- doxytag: member="dbus-internals.c::_dbus_real_assert" ref="ga9912f2c86e49357eb9729729dd46f50d" args="(dbus_bool_t condition, const char *condition_text, const char *file, int line, const char *func)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga9912f2c86e49357eb9729729dd46f50d">_dbus_real_assert</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td>
<td class="paramname"><em>condition</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>condition_text</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>func</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Internals of _dbus_assert(); it's a function rather than a macro with the inline code so that the assertion failure blocks don't show up in test suite coverage, and to shrink code size. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">condition</td><td>TRUE if assertion succeeded </td></tr>
<tr><td class="paramname">condition_text</td><td>condition as a string </td></tr>
<tr><td class="paramname">file</td><td>file the assertion is in </td></tr>
<tr><td class="paramname">line</td><td>line the assertion is in </td></tr>
<tr><td class="paramname">func</td><td>function the assertion is in </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00912">912</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00077">_dbus_abort()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02440">_dbus_pid_for_log()</a>, and <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>.</p>
</div>
</div>
<a class="anchor" id="ga3de125028afc39ab16e6585add8ad181"></a><!-- doxytag: member="dbus-internals.c::_dbus_real_assert_not_reached" ref="ga3de125028afc39ab16e6585add8ad181" args="(const char *explanation, const char *file, int line)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga3de125028afc39ab16e6585add8ad181">_dbus_real_assert_not_reached</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>explanation</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>file</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>line</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Internals of _dbus_assert_not_reached(); it's a function rather than a macro with the inline code so that the assertion failure blocks don't show up in test suite coverage, and to shrink code size. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">explanation</td><td>what was reached that shouldn't have been </td></tr>
<tr><td class="paramname">file</td><td>file the assertion is in </td></tr>
<tr><td class="paramname">line</td><td>line the assertion is in </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00937">937</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00077">_dbus_abort()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02440">_dbus_pid_for_log()</a>, and <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4aa7500366dad2dd6d3fa97b3aa7165b"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_set_signal_handler" ref="ga4aa7500366dad2dd6d3fa97b3aa7165b" args="(int sig, DBusSignalHandler handler)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusSysdeps.html#ga4aa7500366dad2dd6d3fa97b3aa7165b">_dbus_set_signal_handler</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>sig</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga5c69cb20ec385aa86a213c898149f8ea">DBusSignalHandler</a> </td>
<td class="paramname"><em>handler</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Installs a UNIX signal handler. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sig</td><td>the signal to handle </td></tr>
<tr><td class="paramname">handler</td><td>the handler </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00613">613</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaed0b5af565252185dedf99df5da8efc5"></a><!-- doxytag: member="dbus-spawn.c::_dbus_spawn_async_with_babysitter" ref="gaed0b5af565252185dedf99df5da8efc5" args="(DBusBabysitter **sitter_p, const char *log_name, char **argv, char **env, DBusSpawnChildSetupFunc child_setup, void *user_data, 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#gaed0b5af565252185dedf99df5da8efc5">_dbus_spawn_async_with_babysitter</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusBabysitter.html">DBusBabysitter</a> ** </td>
<td class="paramname"><em>sitter_p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>log_name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>argv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>env</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">DBusSpawnChildSetupFunc </td>
<td class="paramname"><em>child_setup</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>user_data</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>Spawns a new process. </p>
<p>The child_setup function is passed the given user_data and is run in the child just before calling exec().</p>
<p>Also creates a "babysitter" which tracks the status of the child process, advising the parent if the child exits. If the spawn fails, no babysitter is created. If sitter_p is <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, no babysitter is kept.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">sitter_p</td><td>return location for babysitter 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">log_name</td><td>the name under which to log messages about this process being spawned </td></tr>
<tr><td class="paramname">argv</td><td>the executable and arguments </td></tr>
<tr><td class="paramname">env</td><td>the environment, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> to copy the parent's </td></tr>
<tr><td class="paramname">child_setup</td><td>function to call in child pre-exec() </td></tr>
<tr><td class="paramname">user_data</td><td>user data for setup function </td></tr>
<tr><td class="paramname">error</td><td>error object to be filled in if function fails </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, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if error is filled in </dd></dl>
<p>Definition at line <a class="el" href="dbus-spawn_8c_source.html#l01194">1194</a> of file <a class="el" href="dbus-spawn_8c_source.html">dbus-spawn.c</a>.</p>
<p>References <a class="el" href="dbus-spawn_8c_source.html#l00324">_dbus_babysitter_unref()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03109">_dbus_full_duplex_pipe()</a>, <a class="el" href="dbus-internals_8c_source.html#l00527">_dbus_strdup()</a>, <a class="el" href="dbus-watch_8c_source.html#l00169">_dbus_watch_invalidate()</a>, <a class="el" href="dbus-watch_8c_source.html#l00376">_dbus_watch_list_add_watch()</a>, <a class="el" href="dbus-watch_8c_source.html#l00088">_dbus_watch_new()</a>, <a class="el" href="dbus-watch_8c_source.html#l00138">_dbus_watch_unref()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00413">DBUS_ERROR_SPAWN_FORK_FAILED</a>, <a class="el" href="dbus-memory_8c_source.html#l00749">dbus_free_string_array()</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-errors_8c_source.html#l00243">dbus_set_error_const()</a>, <a class="el" href="dbus-connection_8h_source.html#l00060">DBUS_WATCH_READABLE</a>, <a class="el" href="dbus-spawn_8c_source.html#l00247">DBusBabysitter::error_pipe_from_child</a>, <a class="el" href="dbus-spawn_8c_source.html#l00254">DBusBabysitter::error_watch</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00071">DBusBabysitter::log_name</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-spawn_8c_source.html#l00857">READ_END</a>, <a class="el" href="dbus-spawn_8c_source.html#l00249">DBusBabysitter::sitter_pid</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00084">DBusBabysitter::sitter_watch</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00080">DBusBabysitter::socket_to_babysitter</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00083">DBusBabysitter::watches</a>, and <a class="el" href="dbus-spawn_8c_source.html#l00859">WRITE_END</a>.</p>
</div>
</div>
<a class="anchor" id="ga04e98ad0e3a181f0a5921a4cbc49cf08"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_stat" ref="ga04e98ad0e3a181f0a5921a4cbc49cf08" args="(const DBusString *filename, DBusStat *statbuf, 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__DBusSysdeps.html#ga04e98ad0e3a181f0a5921a4cbc49cf08">_dbus_stat</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>filename</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusStat.html">DBusStat</a> * </td>
<td class="paramname"><em>statbuf</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>stat() wrapper. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>the filename to stat </td></tr>
<tr><td class="paramname">statbuf</td><td>the stat info to fill in </td></tr>
<tr><td class="paramname">error</td><td>return location for error </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 was set </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00729">729</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00049">_dbus_is_console_user()</a>.</p>
</div>
</div>
<a class="anchor" id="ga9d00d77f6595b9d7ac1baf59d44bf58c"></a><!-- doxytag: member="dbus-internals.c::_dbus_strdup" ref="ga9d00d77f6595b9d7ac1baf59d44bf58c" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">char* <a class="el" href="group__DBusInternalsUtils.html#ga9d00d77f6595b9d7ac1baf59d44bf58c">_dbus_strdup</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Duplicates a string. </p>
<p>Result must be freed with <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a>. Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if memory allocation fails. If the string to be duplicated is <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>, returns <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">str</td><td>string to duplicate. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>newly-allocated copy. </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00527">527</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00461">dbus_malloc()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-credentials_8c_source.html#l00180">_dbus_credentials_add_windows_sid()</a>, <a class="el" href="dbus-internals_8c_source.html#l00578">_dbus_dup_string_array()</a>, <a class="el" href="dbus-sysdeps-util_8c_source.html#l00049">_dbus_get_environment()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-server-unix_8c_source.html#l00237">_dbus_server_new_for_domain_socket()</a>, <a class="el" href="dbus-spawn-win_8c_source.html#l00644">_dbus_spawn_async_with_babysitter()</a>, <a class="el" href="dbus-transport_8c_source.html#l01436">_dbus_transport_get_windows_user()</a>, <a class="el" href="dbus-transport_8c_source.html#l00367">_dbus_transport_open()</a>, <a class="el" href="dbus-transport-unix_8c_source.html#l00225">_dbus_transport_open_platform_specific()</a>, <a class="el" href="dbus-bus_8c_source.html#l00948">dbus_bus_get_id()</a>, <a class="el" href="dbus-bus_8c_source.html#l00646">dbus_bus_register()</a>, <a class="el" href="dbus-bus_8c_source.html#l00766">dbus_bus_set_unique_name()</a>, <a class="el" href="dbus-connection_8c_source.html#l03074">dbus_connection_get_server_id()</a>, <a class="el" href="dbus-server_8c_source.html#l00818">dbus_server_get_address()</a>, and <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>.</p>
</div>
</div>
<a class="anchor" id="ga56de84795d6df4162ad79b3be7af7588"></a><!-- doxytag: member="dbus-sysdeps.c::_dbus_strerror_from_errno" ref="ga56de84795d6df4162ad79b3be7af7588" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="group__DBusSysdeps.html#ga56de84795d6df4162ad79b3be7af7588">_dbus_strerror_from_errno</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Get error message from errno. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>_dbus_strerror(errno) </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps_8c_source.html#l00778">778</a> of file <a class="el" href="dbus-sysdeps_8c_source.html">dbus-sysdeps.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-win_8c_source.html#l00493">_dbus_close_socket()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l02223">_dbus_create_directory()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l02338">_dbus_delete_file()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l01052">_dbus_full_duplex_pipe()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l01635">_dbus_listen_tcp_socket()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l01169">_dbus_poll()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l01870">_dbus_send_credentials_socket()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l00449">_dbus_write_socket()</a>, and <a class="el" href="dbus-sysdeps-win_8c_source.html#l00583">_dbus_write_socket_two()</a>.</p>
</div>
</div>
<a class="anchor" id="ga751119e7273225a7e59787445b71fcd6"></a><!-- doxytag: member="dbus-internals.c::_dbus_string_array_contains" ref="ga751119e7273225a7e59787445b71fcd6" args="(const char **array, const char *str)" -->
<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#ga751119e7273225a7e59787445b71fcd6">_dbus_string_array_contains</a> </td>
<td>(</td>
<td class="paramtype">const char ** </td>
<td class="paramname"><em>array</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>str</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether a string array contains the given string. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">array</td><td>array to search. </td></tr>
<tr><td class="paramname">str</td><td>string to look for </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 array contains string </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00618">618</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <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>
</div>
</div>
<a class="anchor" id="ga73a19aaac889c47ba5f6caa5107a47a5"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_system_log" ref="ga73a19aaac889c47ba5f6caa5107a47a5" args="(DBusSystemLogSeverity severity, const char *msg,...)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusSysdeps.html#ga73a19aaac889c47ba5f6caa5107a47a5">_dbus_system_log</a> </td>
<td>(</td>
<td class="paramtype">DBusSystemLogSeverity </td>
<td class="paramname"><em>severity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>...</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Log a message to the system log file (e.g. </p>
<p>syslog on Unix).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">severity</td><td>a severity value </td></tr>
<tr><td class="paramname">msg</td><td>a printf-style format string </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00545">545</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga82cb5dfe162480ad15faddcf74ea0617"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_system_logv" ref="ga82cb5dfe162480ad15faddcf74ea0617" args="(DBusSystemLogSeverity severity, const char *msg, va_list args)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusSysdeps.html#ga82cb5dfe162480ad15faddcf74ea0617">_dbus_system_logv</a> </td>
<td>(</td>
<td class="paramtype">DBusSystemLogSeverity </td>
<td class="paramname"><em>severity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">va_list </td>
<td class="paramname"><em>args</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Log a message to the system log file (e.g. </p>
<p>syslog on Unix).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">severity</td><td>a severity value </td></tr>
<tr><td class="paramname">msg</td><td>a printf-style format string </td></tr>
<tr><td class="paramname">args</td><td>arguments for the format string</td></tr>
</table>
</dd>
</dl>
<p>If the FATAL severity is given, this function will terminate the program with an error code. </p>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00567">567</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00545">_dbus_system_log()</a>.</p>
</div>
</div>
<a class="anchor" id="ga79647ec21c7edccd1510808ea0ca3779"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_unix_groups_from_uid" ref="ga79647ec21c7edccd1510808ea0ca3779" args="(dbus_uid_t uid, dbus_gid_t **group_ids, int *n_group_ids)" -->
<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__DBusSysdeps.html#ga79647ec21c7edccd1510808ea0ca3779">_dbus_unix_groups_from_uid</a> </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="group__DBusSysdeps.html#ga2f5c2e418b81ec2a86594f56ec6d7627">dbus_gid_t</a> ** </td>
<td class="paramname"><em>group_ids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>n_group_ids</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets all groups corresponding to the given UNIX user ID. </p>
<p>On UNIX, just calls <a class="el" href="group__DBusInternalsUtils.html#gae9408936869314101f8ea13dfa5ba968" title="Gets all groups corresponding to the given UID.">_dbus_groups_from_uid()</a>. On Windows, should always fail since we don't know any UNIX groups.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>the UID </td></tr>
<tr><td class="paramname">group_ids</td><td>return location for array of group IDs </td></tr>
<tr><td class="paramname">n_group_ids</td><td>return location for length of returned array </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 the UID existed and we got some credentials </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01091">1091</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="gaed2e025454364fbe31cd9b6538c9a936"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_unix_user_is_at_console" ref="gaed2e025454364fbe31cd9b6538c9a936" args="(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__DBusSysdeps.html#gaed2e025454364fbe31cd9b6538c9a936">_dbus_unix_user_is_at_console</a> </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>Checks to see if the UNIX user ID is at the console. </p>
<p>Should always fail on Windows (set the error to <a class="el" href="group__DBusProtocol.html#ga33122bcaf8f5896ec222c755b6effb40" title="Requested operation isn't supported (like ENOSYS on UNIX).">DBUS_ERROR_NOT_SUPPORTED</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>UID of person to check </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><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the UID is the same as the console user and there are no errors </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01108">1108</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga849177164bc5e73435104f57c631ed7e"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_unix_user_is_process_owner" ref="ga849177164bc5e73435104f57c631ed7e" args="(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__DBusSysdeps.html#ga849177164bc5e73435104f57c631ed7e">_dbus_unix_user_is_process_owner</a> </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><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks to see if the UNIX user ID matches the UID of the process. </p>
<p>Should always return <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> on Windows.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uid</td><td>the UNIX user ID </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 this uid owns the process. </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01123">1123</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga31ec42cef2d15ca358e737bb5f19c5cf"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_user_at_console" ref="ga31ec42cef2d15ca358e737bb5f19c5cf" args="(const char *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__DBusSysdeps.html#ga31ec42cef2d15ca358e737bb5f19c5cf">_dbus_user_at_console</a> </td>
<td>(</td>
<td class="paramtype">const char * </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>Checks if user is at the console. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>user to check </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><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> is the user is at the consolei and there are no errors </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00644">644</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-unix_8c_source.html#l02759">_dbus_concat_dir_and_file()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00632">_dbus_file_exists()</a>, <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-string_8c_source.html#l00190">_dbus_string_init_const()</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-userdb-util_8c_source.html#l00049">_dbus_is_console_user()</a>.</p>
</div>
</div>
<a class="anchor" id="ga70d3fd2edd61c69edc6f7fe1d5cfa6ea"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_user_database_get_gid" ref="ga70d3fd2edd61c69edc6f7fe1d5cfa6ea" args="(DBusUserDatabase *db, dbus_gid_t gid, const DBusGroupInfo **info, 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#ga70d3fd2edd61c69edc6f7fe1d5cfa6ea">_dbus_user_database_get_gid</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">const <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="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 the user information for the given GID, returned group info should not be freed. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>user database </td></tr>
<tr><td class="paramname">gid</td><td>the group ID </td></tr>
<tr><td class="paramname">info</td><td>return location for const ref to group info </td></tr>
<tr><td class="paramname">error</td><td>error location </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-userdb-util_8c_source.html#l00367">367</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb-util_8c_source.html#l00246">_dbus_user_database_lookup_group()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
</div>
</div>
<a class="anchor" id="gad370299b907799440331c47e8d2357e0"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_user_database_get_groupname" ref="gad370299b907799440331c47e8d2357e0" args="(DBusUserDatabase *db, const DBusString *groupname, const DBusGroupInfo **info, 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#gad370299b907799440331c47e8d2357e0">_dbus_user_database_get_groupname</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">const <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="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 the user information for the given group name, returned group info should not be freed. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>user database </td></tr>
<tr><td class="paramname">groupname</td><td>the group name </td></tr>
<tr><td class="paramname">info</td><td>return location for const ref to group info </td></tr>
<tr><td class="paramname">error</td><td>error location </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-userdb-util_8c_source.html#l00347">347</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-userdb-util_8c_source.html#l00246">_dbus_user_database_lookup_group()</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00106">DBUS_GID_UNSET</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00160">_dbus_get_group_id()</a>.</p>
</div>
</div>
<a class="anchor" id="ga79b6c3cf0d735622b6af2795840f9d21"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_get_system" ref="ga79b6c3cf0d735622b6af2795840f9d21" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBusUserDatabase* <a class="el" href="group__DBusInternalsUtils.html#ga79b6c3cf0d735622b6af2795840f9d21">_dbus_user_database_get_system</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 the system global user database; must be called with lock held (<a class="el" href="group__DBusInternalsUtils.html#ga15df3b3fdaa4946f69ff87f3a9a03fe7" title="Locks global system user database.">_dbus_user_database_lock_system()</a>). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the database or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00336">336</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00510">_dbus_credentials_add_from_user()</a>, <a class="el" href="dbus-userdb-util_8c_source.html#l00160">_dbus_get_group_id()</a>, <a class="el" href="dbus-userdb-util_8c_source.html#l00199">_dbus_get_user_id_and_primary_group()</a>, <a class="el" href="dbus-userdb-util_8c_source.html#l00388">_dbus_groups_from_uid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00461">_dbus_homedir_from_uid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00419">_dbus_homedir_from_username()</a>, and <a class="el" href="dbus-userdb-util_8c_source.html#l00049">_dbus_is_console_user()</a>.</p>
</div>
</div>
<a class="anchor" id="ga6a7e8b8cf3a6968972e9a49726022638"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_get_uid" ref="ga6a7e8b8cf3a6968972e9a49726022638" args="(DBusUserDatabase *db, dbus_uid_t uid, const DBusUserInfo **info, 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#ga6a7e8b8cf3a6968972e9a49726022638">_dbus_user_database_get_uid</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">const <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="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 the user information for the given UID, returned user info should not be freed. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>user database </td></tr>
<tr><td class="paramname">uid</td><td>the user ID </td></tr>
<tr><td class="paramname">info</td><td>return location for const ref to user info </td></tr>
<tr><td class="paramname">error</td><td>error location </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-userdb_8c_source.html#l00657">657</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00388">_dbus_groups_from_uid()</a>, and <a class="el" href="dbus-userdb_8c_source.html#l00461">_dbus_homedir_from_uid()</a>.</p>
</div>
</div>
<a class="anchor" id="gaccf1d5b330707a1835dcf4ce49a29c8c"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_get_username" ref="gaccf1d5b330707a1835dcf4ce49a29c8c" args="(DBusUserDatabase *db, const DBusString *username, const DBusUserInfo **info, 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#gaccf1d5b330707a1835dcf4ce49a29c8c">_dbus_user_database_get_username</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">const <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="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 the user information for the given username. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>user database </td></tr>
<tr><td class="paramname">username</td><td>the user name </td></tr>
<tr><td class="paramname">info</td><td>return location for const ref to user info </td></tr>
<tr><td class="paramname">error</td><td>error location </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-userdb_8c_source.html#l00676">676</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00128">_dbus_user_database_lookup()</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00104">DBUS_UID_UNSET</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00510">_dbus_credentials_add_from_user()</a>, <a class="el" href="dbus-userdb-util_8c_source.html#l00199">_dbus_get_user_id_and_primary_group()</a>, and <a class="el" href="dbus-userdb_8c_source.html#l00419">_dbus_homedir_from_username()</a>.</p>
</div>
</div>
<a class="anchor" id="ga959372f7d7cdea35ffbac3b78e29a1b0"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_lookup" ref="ga959372f7d7cdea35ffbac3b78e29a1b0" args="(DBusUserDatabase *db, dbus_uid_t uid, const DBusString *username, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusUserInfo.html">DBusUserInfo</a>* <a class="el" href="group__DBusInternalsUtils.html#ga959372f7d7cdea35ffbac3b78e29a1b0">_dbus_user_database_lookup</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">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>Looks up a uid or username in the user database. </p>
<p>Only one of name or UID can be provided. There are wrapper functions for this that are better to use, this one does no locking or anything on the database and otherwise sort of sucks.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>the database </td></tr>
<tr><td class="paramname">uid</td><td>the user ID or <a class="el" href="group__DBusSysdeps.html#ga3d2f3fb32bb759cabe362ca2de383f7d" title="an invalid UID used to represent an uninitialized dbus_uid_t field">DBUS_UID_UNSET</a> </td></tr>
<tr><td class="paramname">username</td><td>username 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">error</td><td>error to fill in </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the entry in the database </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00128">128</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-hash_8c_source.html#l01214">_dbus_hash_table_insert_string()</a>, <a class="el" href="dbus-hash_8c_source.html#l01289">_dbus_hash_table_insert_uintptr()</a>, <a class="el" href="dbus-hash_8c_source.html#l01049">_dbus_hash_table_lookup_string()</a>, <a class="el" href="dbus-hash_8c_source.html#l01099">_dbus_hash_table_lookup_uintptr()</a>, <a class="el" href="dbus-hash_8c_source.html#l01179">_dbus_hash_table_remove_uintptr()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00103">_dbus_is_a_number()</a>, <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02336">_dbus_user_info_fill()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02353">_dbus_user_info_fill_uid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00045">_dbus_user_info_free_allocated()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00111">DBUS_UID_FORMAT</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00104">DBUS_UID_UNSET</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00100">DBusUserInfo::uid</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-util_8c_source.html#l00049">_dbus_is_console_user()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00657">_dbus_user_database_get_uid()</a>, and <a class="el" href="dbus-userdb_8c_source.html#l00676">_dbus_user_database_get_username()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf6b7452691c0c7d11fec4b9214137052"></a><!-- doxytag: member="dbus-userdb-util.c::_dbus_user_database_lookup_group" ref="gaf6b7452691c0c7d11fec4b9214137052" args="(DBusUserDatabase *db, dbus_gid_t gid, const DBusString *groupname, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusGroupInfo.html">DBusGroupInfo</a>* <a class="el" href="group__DBusInternalsUtils.html#gaf6b7452691c0c7d11fec4b9214137052">_dbus_user_database_lookup_group</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</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">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>Looks up a gid or group name in the user database. </p>
<p>Only one of name or GID can be provided. There are wrapper functions for this that are better to use, this one does no locking or anything on the database and otherwise sort of sucks.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>the database </td></tr>
<tr><td class="paramname">gid</td><td>the group ID or <a class="el" href="group__DBusSysdeps.html#ga768a080926a119a6131083facc0bd42b" title="an invalid GID used to represent an uninitialized dbus_gid_t field">DBUS_GID_UNSET</a> </td></tr>
<tr><td class="paramname">groupname</td><td>group name 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">error</td><td>error to fill in </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the entry in the database </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb-util_8c_source.html#l00246">246</a> of file <a class="el" href="dbus-userdb-util_8c_source.html">dbus-userdb-util.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01023">_dbus_group_info_fill()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01042">_dbus_group_info_fill_gid()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00061">_dbus_group_info_free_allocated()</a>, <a class="el" href="dbus-hash_8c_source.html#l01214">_dbus_hash_table_insert_string()</a>, <a class="el" href="dbus-hash_8c_source.html#l01289">_dbus_hash_table_insert_uintptr()</a>, <a class="el" href="dbus-hash_8c_source.html#l01049">_dbus_hash_table_lookup_string()</a>, <a class="el" href="dbus-hash_8c_source.html#l01099">_dbus_hash_table_lookup_uintptr()</a>, <a class="el" href="dbus-hash_8c_source.html#l01179">_dbus_hash_table_remove_uintptr()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00103">_dbus_is_a_number()</a>, <a class="el" href="dbus-string_8c_source.html#l00451">_dbus_string_get_const_data()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00113">DBUS_GID_FORMAT</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00106">DBUS_GID_UNSET</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-sysdeps_8h_source.html#l00104">DBUS_UID_UNSET</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00113">DBusGroupInfo::gid</a>, <a class="el" href="dbus-sysdeps-unix_8h_source.html#l00114">DBusGroupInfo::groupname</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb-util_8c_source.html#l00367">_dbus_user_database_get_gid()</a>, and <a class="el" href="dbus-userdb-util_8c_source.html#l00347">_dbus_user_database_get_groupname()</a>.</p>
</div>
</div>
<a class="anchor" id="ga1dbf2c80952d17707c544f5d86dd8545"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_new" ref="ga1dbf2c80952d17707c544f5d86dd8545" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">DBusUserDatabase* <a class="el" href="group__DBusInternalsUtils.html#ga1dbf2c80952d17707c544f5d86dd8545">_dbus_user_database_new</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new user database object used to look up and cache user information. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>new database, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> on out of memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00550">550</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00061">_dbus_group_info_free_allocated()</a>, <a class="el" href="dbus-hash_8c_source.html#l00285">_dbus_hash_table_new()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00623">_dbus_user_database_unref()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00045">_dbus_user_info_free_allocated()</a>, <a class="el" href="dbus-hash_8h_source.html#l00069">DBUS_HASH_STRING</a>, <a class="el" href="dbus-hash_8h_source.html#l00071">DBUS_HASH_UINTPTR</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
</div>
</div>
<a class="anchor" id="ga55dbb78c415da040037442eca4c4e80e"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_database_unref" ref="ga55dbb78c415da040037442eca4c4e80e" args="(DBusUserDatabase *db)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga55dbb78c415da040037442eca4c4e80e">_dbus_user_database_unref</a> </td>
<td>(</td>
<td class="paramtype">DBusUserDatabase * </td>
<td class="paramname"><em>db</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Decrements refcount of user database. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">db</td><td>the database </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00623">623</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-hash_8c_source.html#l00361">_dbus_hash_table_unref()</a>, and <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>.</p>
<p>Referenced by <a class="el" href="dbus-userdb_8c_source.html#l00550">_dbus_user_database_new()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa40334f7b4f185a437a8bc6d6e0994a1"></a><!-- doxytag: member="dbus-userdb.c::_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="gaf725ba6f380a3b926650626eef714b67"></a><!-- doxytag: member="dbus-userdb.c::_dbus_user_info_free_allocated" ref="gaf725ba6f380a3b926650626eef714b67" args="(DBusUserInfo *info)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gaf725ba6f380a3b926650626eef714b67">_dbus_user_info_free_allocated</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 given <a class="el" href="structDBusUserInfo.html" title="Information about a UNIX user.">DBusUserInfo</a>'s members with <a class="el" href="group__DBusSysdepsUnix.html#gaa40334f7b4f185a437a8bc6d6e0994a1" title="Frees the members of info (but not info itself)">_dbus_user_info_free()</a> and also calls <a class="el" href="group__DBusMemory.html#ga34e666b19b015035a9a31e53da84b39a" title="Frees a block of memory previously allocated by dbus_malloc() or dbus_malloc0().">dbus_free()</a> on the block itself. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">info</td><td>the info </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00045">45</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00076">_dbus_user_info_free()</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, and <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>, and <a class="el" href="dbus-userdb_8c_source.html#l00550">_dbus_user_database_new()</a>.</p>
</div>
</div>
<a class="anchor" id="ga9c4c1850787bfd457107b95fa1878869"></a><!-- doxytag: member="dbus-userdb.c::_dbus_username_from_current_process" ref="ga9c4c1850787bfd457107b95fa1878869" args="(const DBusString **username)" -->
<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#ga9c4c1850787bfd457107b95fa1878869">_dbus_username_from_current_process</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>username</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets username of user owning current process. </p>
<p>The returned string is valid until <a class="el" href="group__DBusMemory.html#ga01912903e39428872920d861ef565bac" title="Frees all memory allocated internally by libdbus and reverses the effects of dbus_threads_init().">dbus_shutdown()</a> is called.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">username</td><td>place to store pointer to username </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-userdb_8c_source.html#l00371">371</a> of file <a class="el" href="dbus-userdb_8c_source.html">dbus-userdb.c</a>.</p>
<p>References <a class="el" href="dbus-userdb_8c_source.html#l00306">_dbus_user_database_lock_system()</a>, <a class="el" href="dbus-userdb_8c_source.html#l00323">_dbus_user_database_unlock_system()</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="gaf08364813376bd2d8f455d435d85323e"></a><!-- doxytag: member="dbus-internals.c::_dbus_uuid_encode" ref="gaf08364813376bd2d8f455d435d85323e" args="(const DBusGUID *uuid, DBusString *encoded)" -->
<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#gaf08364813376bd2d8f455d435d85323e">_dbus_uuid_encode</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> * </td>
<td class="paramname"><em>uuid</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>encoded</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Hex-encode a UUID. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">uuid</td><td>the uuid </td></tr>
<tr><td class="paramname">encoded</td><td>string to append hex uuid to </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 no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00663">663</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.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#l02241">_dbus_string_hex_encode()</a>, and <a class="el" href="dbus-string_8c_source.html#l00210">_dbus_string_init_const_len()</a>.</p>
<p>Referenced by <a class="el" href="dbus-internals_8c_source.html#l00854">_dbus_get_local_machine_uuid_encoded()</a>, <a class="el" href="dbus-server_8c_source.html#l00111">_dbus_server_init_base()</a>, and <a class="el" href="dbus-internals_8c_source.html#l00757">_dbus_write_uuid_file()</a>.</p>
</div>
</div>
<a class="anchor" id="ga45f661c5a089ed45233a1acabaf31964"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_verify_daemon_user" ref="ga45f661c5a089ed45233a1acabaf31964" args="(const char *user)" -->
<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__DBusSysdeps.html#ga45f661c5a089ed45233a1acabaf31964">_dbus_verify_daemon_user</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>user</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Verify that after the fork we can successfully change to this user. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">user</td><td>the username given in the daemon configuration </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 username is valid </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00314">314</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="gabea2c16d6d3fe7c4eb5b9496fc877f84"></a><!-- doxytag: member="dbus-internals.c::_dbus_warn" ref="gabea2c16d6d3fe7c4eb5b9496fc877f84" args="(const char *format,...)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#gabea2c16d6d3fe7c4eb5b9496fc877f84">_dbus_warn</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>...</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Prints a warning message to stderr. </p>
<p>Can optionally be made to exit fatally by setting DBUS_FATAL_WARNINGS, but this is rarely used. This function should be considered pretty much equivalent to fprintf(stderr). <a class="el" href="group__DBusInternalsUtils.html#ga63f2f8a068454b781f214ba596e313b4" title="Prints a "critical" warning to stderr when an assertion fails; differs from _dbus_warn primarily in t...">_dbus_warn_check_failed()</a> on the other hand is suitable for use when a programming mistake has been made.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">format</td><td>printf-style format string. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00230">230</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00077">_dbus_abort()</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03806">_dbus_append_keyring_directory_for_credentials()</a>, <a class="el" href="dbus-spawn_8c_source.html#l00324">_dbus_babysitter_unref()</a>, <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00334">_dbus_change_to_daemon_user()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03109">_dbus_full_duplex_pipe()</a>, <a class="el" href="dbus-sysdeps-win_8c_source.html#l02291">_dbus_get_tmpdir()</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-marshal-basic_8c_source.html#l01077">_dbus_marshal_skip_basic()</a>, <a class="el" href="dbus-message_8c_source.html#l00796">_dbus_message_iter_get_args_valist()</a>, <a class="el" href="dbus-object-tree_8c_source.html#l00623">_dbus_object_tree_unregister_and_unlock()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02573">_dbus_poll()</a>, <a class="el" href="dbus-internals_8c_source.html#l00912">_dbus_real_assert()</a>, <a class="el" href="dbus-internals_8c_source.html#l00937">_dbus_real_assert_not_reached()</a>, <a class="el" href="dbus-server-launchd_8c_source.html#l00065">_dbus_server_new_for_launchd()</a>, <a class="el" href="dbus-watch_8c_source.html#l00138">_dbus_watch_unref()</a>, <a class="el" href="dbus-connection_8c_source.html#l05774">dbus_connection_register_fallback()</a>, <a class="el" href="dbus-connection_8c_source.html#l05702">dbus_connection_register_object_path()</a>, <a class="el" href="dbus-memory_8c_source.html#l00461">dbus_malloc()</a>, <a class="el" href="dbus-memory_8c_source.html#l00531">dbus_malloc0()</a>, <a class="el" href="dbus-message_8c_source.html#l01824">dbus_message_append_args_valist()</a>, and <a class="el" href="dbus-memory_8c_source.html#l00601">dbus_realloc()</a>.</p>
</div>
</div>
<a class="anchor" id="ga63f2f8a068454b781f214ba596e313b4"></a><!-- doxytag: member="dbus-internals.c::_dbus_warn_check_failed" ref="ga63f2f8a068454b781f214ba596e313b4" args="(const char *format,...)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusInternalsUtils.html#ga63f2f8a068454b781f214ba596e313b4">_dbus_warn_check_failed</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>...</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Prints a "critical" warning to stderr when an assertion fails; differs from _dbus_warn primarily in that it prefixes the pid and defaults to fatal. </p>
<p>This should be used only when a programming error has been detected. (NOT for unavoidable errors that an app might handle - those should be returned as <a class="el" href="structDBusError.html" title="Object representing an exception.">DBusError</a>.) Calling this means "there is a bug" </p>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00258">258</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps_8c_source.html#l00077">_dbus_abort()</a>, and <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02440">_dbus_pid_for_log()</a>.</p>
<p>Referenced by <a class="el" href="dbus-internals_8c_source.html#l00854">_dbus_get_local_machine_uuid_encoded()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l00492">_dbus_marshal_read_basic()</a>, <a class="el" href="dbus-transport_8c_source.html#l00889">_dbus_transport_handle_watch()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">_dbus_type_reader_recurse()</a>, <a class="el" href="dbus-connection_8c_source.html#l02932">dbus_connection_close()</a>, <a class="el" href="dbus-connection_8c_source.html#l05563">dbus_connection_remove_filter()</a>, <a class="el" href="dbus-connection_8c_source.html#l02817">dbus_connection_unref()</a>, <a class="el" href="dbus-server_8c_source.html#l00687">dbus_server_ref()</a>, <a class="el" href="dbus-server_8c_source.html#l00982">dbus_server_set_timeout_functions()</a>, <a class="el" href="dbus-server_8c_source.html#l00929">dbus_server_set_watch_functions()</a>, <a class="el" href="dbus-server_8c_source.html#l00720">dbus_server_unref()</a>, and <a class="el" href="dbus-watch_8c_source.html#l00698">dbus_watch_handle()</a>.</p>
</div>
</div>
<a class="anchor" id="ga912d34a7e40b3a57864972e6d6ab65ba"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_windows_user_is_process_owner" ref="ga912d34a7e40b3a57864972e6d6ab65ba" args="(const char *windows_sid)" -->
<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__DBusSysdeps.html#ga912d34a7e40b3a57864972e6d6ab65ba">_dbus_windows_user_is_process_owner</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>windows_sid</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks to see if the Windows user SID matches the owner of the process. </p>
<p>Should always return <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> on UNIX.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">windows_sid</td><td>the Windows user SID </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 this user owns the process. </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l01136">1136</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga123620ec5ce2b881786588121d6a03fd"></a><!-- doxytag: member="dbus-sysdeps-util-unix.c::_dbus_write_pid_to_file_and_pipe" ref="ga123620ec5ce2b881786588121d6a03fd" args="(const DBusString *pidfile, DBusPipe *print_pid_pipe, dbus_pid_t pid_to_write, 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__DBusSysdeps.html#ga123620ec5ce2b881786588121d6a03fd">_dbus_write_pid_to_file_and_pipe</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>pidfile</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusPipe.html">DBusPipe</a> * </td>
<td class="paramname"><em>print_pid_pipe</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusSysdeps.html#ga1eff6303266888ec466cddba6c03aa40">dbus_pid_t</a> </td>
<td class="paramname"><em>pid_to_write</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>Writes the given pid_to_write to a pidfile (if non-NULL) and/or to a pipe (if non-NULL). </p>
<p>Does nothing if pidfile and print_pid_pipe are both NULL.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">pidfile</td><td>the file to write to 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">print_pid_pipe</td><td>the pipe to write to 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">pid_to_write</td><td>the pid to write out </td></tr>
<tr><td class="paramname">error</td><td>error on failure </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>FALSE if error is set </dd></dl>
<p>Definition at line <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00240">240</a> of file <a class="el" href="dbus-sysdeps-util-unix_8c_source.html">dbus-sysdeps-util-unix.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-sysdeps-util-unix_8c_source.html#l00087">_dbus_become_daemon()</a>.</p>
</div>
</div>
<a class="anchor" id="gaa16de06b33c56323fa33dd96eaab3829"></a><!-- doxytag: member="dbus-internals.c::_dbus_write_uuid_file" ref="gaa16de06b33c56323fa33dd96eaab3829" args="(const DBusString *filename, const DBusGUID *uuid, 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#gaa16de06b33c56323fa33dd96eaab3829">_dbus_write_uuid_file</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>filename</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="group__DBusSysdeps.html#ga24015a2f75b94c1307360755ce97f869">DBusGUID</a> * </td>
<td class="paramname"><em>uuid</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>Write the give UUID to a file. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>the file to write </td></tr>
<tr><td class="paramname">uuid</td><td>the UUID to save </td></tr>
<tr><td class="paramname">error</td><td>used to raise an error </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> on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-internals_8c_source.html#l00757">757</a> of file <a class="el" href="dbus-internals_8c_source.html">dbus-internals.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01139">_dbus_string_append_byte()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-file-unix_8c_source.html#l00164">_dbus_string_save_to_file()</a>, <a class="el" href="dbus-internals_8c_source.html#l00663">_dbus_uuid_encode()</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#l03604">_dbus_read_local_machine_uuid()</a>, and <a class="el" href="dbus-internals_8c_source.html#l00806">_dbus_read_uuid_file()</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:32 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>