Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > c67c6057ffd14254a26624517a2352e6 > files > 593

i3-doc-3.e-3.bf1.fc14.noarch.rpm

<!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"/>
<title>i3: src/util.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.2-20100208 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>src/util.c File Reference</h1><code>#include &lt;stdio.h&gt;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;unistd.h&gt;</code><br/>
<code>#include &lt;string.h&gt;</code><br/>
<code>#include &lt;sys/wait.h&gt;</code><br/>
<code>#include &lt;stdarg.h&gt;</code><br/>
<code>#include &lt;assert.h&gt;</code><br/>
<code>#include &lt;iconv.h&gt;</code><br/>
<code>#include &lt;xcb/xcb_icccm.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="a00041_source.html">i3.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00036_source.html">data.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00051_source.html">table.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00043_source.html">layout.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00052_source.html">util.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00054_source.html">xcb.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00032_source.html">client.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00044_source.html">log.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00038_source.html">ewmh.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00046_source.html">manage.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00053_source.html">workspace.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="a00042_source.html">ipc.h</a>&quot;</code><br/>
<div class="dynheader">
Include dependency graph for util.c:</div>
<div class="dynsection">
</div>

<p><a href="a00077_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#abd8bbcfabb3ddef2ccaafb9928a37b95">min</a> (int a, int b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#af082905f7eac6d03e92015146bbc1925">max</a> (int a, int b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a4dfa7907c5f327e6383b32d6e8acde8f">update_if_necessary</a> (uint32_t *destination, const uint32_t new_value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates *destination with new_value and returns true if it was changed or false if it was the same.  <a href="#a4dfa7907c5f327e6383b32d6e8acde8f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a46c23cb2833f4b674f5cfc977f16b990">smalloc</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory available).  <a href="#a46c23cb2833f4b674f5cfc977f16b990"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ad475e1b898d9da9b2a8b92e3da51b3dd">scalloc</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Safe-wrapper around calloc which exits if malloc returns NULL (meaning that there is no more memory available).  <a href="#ad475e1b898d9da9b2a8b92e3da51b3dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a11822d1f4b182be3fa03d2a5af536e1a">sstrdup</a> (const char *str)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Safe-wrapper around strdup which exits if malloc returns NULL (meaning that there is no more memory available).  <a href="#a11822d1f4b182be3fa03d2a5af536e1a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a387447a095debe780790788f18e88d6e">table_put</a> (struct keyvalue_table_head *head, uint32_t key, void *value)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inserts an element into the given keyvalue-table using the given key.  <a href="#a387447a095debe780790788f18e88d6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a325edcce10c699e46d7638d4361599e7">table_remove</a> (struct keyvalue_table_head *head, uint32_t key)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes the element from the given keyvalue-table with the given key and returns its value;.  <a href="#a325edcce10c699e46d7638d4361599e7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ae1529a1d81e2457f9a2402eda35735d7">table_get</a> (struct keyvalue_table_head *head, uint32_t key)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the value of the element of the given keyvalue-table with the given key.  <a href="#ae1529a1d81e2457f9a2402eda35735d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a4a1b0dbf1f2e37a0ad5a0f6cc786225c">start_application</a> (const char *command)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starts the given application by passing it through a shell.  <a href="#a4a1b0dbf1f2e37a0ad5a0f6cc786225c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ae8ee4cede01d9a00cbeaffbc5f096f8d">check_error</a> (xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks a generic cookie for errors and quits with the given message if there was an error.  <a href="#ae8ee4cede01d9a00cbeaffbc5f096f8d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a1d926a6371d3d87f2dd85c1a27d83f4b">convert_utf8_to_ucs2</a> (char *input, int *real_strlen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts the given string to UCS-2 big endian for use with xcb_image_text_16().  <a href="#a1d926a6371d3d87f2dd85c1a27d83f4b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00007.html">Client</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ad5a21e1f5f7065c1997717c13559907a">get_last_focused_client</a> (xcb_connection_t *conn, <a class="el" href="a00013.html">Container</a> *container, <a class="el" href="a00007.html">Client</a> *exclude)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the client which comes next in focus stack (= was selected before) for the given container, optionally excluding the given client.  <a href="#ad5a21e1f5f7065c1997717c13559907a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a323dcf30475bb3bf165100e74d225b48">set_focus</a> (xcb_connection_t *conn, <a class="el" href="a00007.html">Client</a> *client, bool set_anyways)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the given client as focused by updating the data structures correctly, updating the X input focus and finally re-decorating both windows (to signalize the user the new focus situation).  <a href="#a323dcf30475bb3bf165100e74d225b48"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a796c789f58b40c431d9c35860585367e">leave_stack_mode</a> (xcb_connection_t *conn, <a class="el" href="a00013.html">Container</a> *container)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called when the user switches to another mode or when the container is destroyed and thus needs to be cleaned up.  <a href="#a796c789f58b40c431d9c35860585367e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a5b3f86291e1bab74d7edc044a9d87a52">switch_layout_mode</a> (xcb_connection_t *conn, <a class="el" href="a00013.html">Container</a> *container, int mode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Switches the layout of the given container taking care of the necessary house-keeping.  <a href="#a5b3f86291e1bab74d7edc044a9d87a52"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00007.html">Client</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ad77b9ae748e9583f072306af098dafed">get_matching_client</a> (xcb_connection_t *conn, const char *window_classtitle, <a class="el" href="a00007.html">Client</a> *specific)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the first matching client for the given window class/window title.  <a href="#ad77b9ae748e9583f072306af098dafed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#ab2bd44ab8b1c1b843c6c7ba6f76227e2">append_argument</a> (char **original, char *argument)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#aa6932bace7059f6a57068cdf87de1e1f">i3_restart</a> ()</td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static iconv_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#afd57bdc78393cf2e79ad556e7b973204">conversion_descriptor</a> = 0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct keyvalue_table_head&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#a38dffc58d761d720f7c63d35f2efd71d">by_parent</a> = TAILQ_HEAD_INITIALIZER(<a class="el" href="a00052.html#a38dffc58d761d720f7c63d35f2efd71d">by_parent</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct keyvalue_table_head&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#aadfb9c6f265623f83355191df37c86c8">by_child</a> = TAILQ_HEAD_INITIALIZER(<a class="el" href="a00052.html#aadfb9c6f265623f83355191df37c86c8">by_child</a>)</td></tr>
</table>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ab2bd44ab8b1c1b843c6c7ba6f76227e2"></a><!-- doxytag: member="util.c::append_argument" ref="ab2bd44ab8b1c1b843c6c7ba6f76227e2" args="(char **original, char *argument)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static char** append_argument </td>
          <td>(</td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>argument</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00492">492</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00044_source.html#l00021">DLOG</a>, and <a class="el" href="a00077_source.html#l00068">smalloc()</a>.</p>

<p>Referenced by <a class="el" href="a00077_source.html#l00514">i3_restart()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ae8ee4cede01d9a00cbeaffbc5f096f8d"></a><!-- doxytag: member="util.c::check_error" ref="ae8ee4cede01d9a00cbeaffbc5f096f8d" args="(xcb_connection_t *conn, xcb_void_cookie_t cookie, char *err_message)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void check_error </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">xcb_void_cookie_t&nbsp;</td>
          <td class="paramname"> <em>cookie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>err_message</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks a generic cookie for errors and quits with the given message if there was an error. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00159">159</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00071_source.html#l00193">main()</a>, and <a class="el" href="a00079_source.html#l00026">TAILQ_HEAD()</a>.</p>

</div>
</div>
<a class="anchor" id="a1d926a6371d3d87f2dd85c1a27d83f4b"></a><!-- doxytag: member="util.c::convert_utf8_to_ucs2" ref="a1d926a6371d3d87f2dd85c1a27d83f4b" args="(char *input, int *real_strlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* convert_utf8_to_ucs2 </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>real_strlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Converts the given string to UCS-2 big endian for use with xcb_image_text_16(). </p>
<p>The amount of real glyphs is stored in real_strlen, a buffer containing the UCS-2 encoded string (16 bit per glyph) is returned. It has to be freed when done. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00175">175</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00077_source.html#l00040">conversion_descriptor</a>, and <a class="el" href="a00077_source.html#l00068">smalloc()</a>.</p>

<p>Referenced by <a class="el" href="a00077_source.html#l00440">get_matching_client()</a>, <a class="el" href="a00075_source.html#l00151">handle_signal()</a>, <a class="el" href="a00067_source.html#l00603">handle_windowname_change()</a>, <a class="el" href="a00075_source.html#l00053">sig_draw_window()</a>, and <a class="el" href="a00078_source.html#l00078">workspace_set_name()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ad5a21e1f5f7065c1997717c13559907a"></a><!-- doxytag: member="util.c::get_last_focused_client" ref="ad5a21e1f5f7065c1997717c13559907a" args="(xcb_connection_t *conn, Container *container, Client *exclude)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00007.html">Client</a>* get_last_focused_client </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00013.html">Container</a> *&nbsp;</td>
          <td class="paramname"> <em>container</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00007.html">Client</a> *&nbsp;</td>
          <td class="paramname"> <em>exclude</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the client which comes next in focus stack (= was selected before) for the given container, optionally excluding the given client. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00217">217</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00036_source.html#l00353">Client::container</a>, <a class="el" href="a00047_source.html#l00115">SLIST_FOREACH</a>, and <a class="el" href="a00036_source.html#l00488">Container::workspace</a>.</p>

<p>Referenced by <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, <a class="el" href="a00061_source.html#l00312">move_current_window()</a>, <a class="el" href="a00077_source.html#l00232">set_focus()</a>, <a class="el" href="a00077_source.html#l00347">switch_layout_mode()</a>, and <a class="el" href="a00066_source.html#l00041">toggle_floating_mode()</a>.</p>

</div>
</div>
<a class="anchor" id="ad77b9ae748e9583f072306af098dafed"></a><!-- doxytag: member="util.c::get_matching_client" ref="ad77b9ae748e9583f072306af098dafed" args="(xcb_connection_t *conn, const char *window_classtitle, Client *specific)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00007.html">Client</a>* get_matching_client </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>window_classtitle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00007.html">Client</a> *&nbsp;</td>
          <td class="paramname"> <em>specific</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets the first matching client for the given window class/window title. </p>
<p>If the paramater specific is set to a specific client, only this one will be checked. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00440">440</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00060_source.html#l00125">client_matches_class_name()</a>, <a class="el" href="a00077_source.html#l00175">convert_utf8_to_ucs2()</a>, <a class="el" href="a00044_source.html#l00021">DLOG</a>, <a class="el" href="a00052_source.html#l00029">FREE</a>, <a class="el" href="a00036_source.html#l00387">Client::name</a>, <a class="el" href="a00036_source.html#l00239">Workspace::output</a>, <a class="el" href="a00047_source.html#l00115">SLIST_FOREACH</a>, <a class="el" href="a00077_source.html#l00080">sstrdup()</a>, <a class="el" href="a00047_source.html#l00335">TAILQ_FOREACH</a>, <a class="el" href="a00036_source.html#l00401">Client::window_class_class</a>, <a class="el" href="a00036_source.html#l00400">Client::window_class_instance</a>, and <a class="el" href="a00076_source.html#l00034">workspaces</a>.</p>

<p>Referenced by <a class="el" href="a00061_source.html#l00713">jump_to_window()</a>, and <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="aa6932bace7059f6a57068cdf87de1e1f"></a><!-- doxytag: member="util.c::i3_restart" ref="aa6932bace7059f6a57068cdf87de1e1f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void i3_restart </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00514">514</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00077_source.html#l00492">append_argument()</a>, <a class="el" href="a00071_source.html#l00058">global_conn</a>, <a class="el" href="a00068_source.html#l00145">ipc_shutdown()</a>, <a class="el" href="a00044_source.html#l00019">LOG</a>, <a class="el" href="a00072_source.html#l00074">restore_geometry()</a>, and <a class="el" href="a00071_source.html#l00061">start_argv</a>.</p>

<p>Referenced by <a class="el" href="a00061_source.html#l00950">parse_command()</a>, and <a class="el" href="a00075_source.html#l00085">sig_handle_key_press()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="a796c789f58b40c431d9c35860585367e"></a><!-- doxytag: member="util.c::leave_stack_mode" ref="a796c789f58b40c431d9c35860585367e" args="(xcb_connection_t *conn, Container *container)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void leave_stack_mode </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00013.html">Container</a> *&nbsp;</td>
          <td class="paramname"> <em>container</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called when the user switches to another mode or when the container is destroyed and thus needs to be cleaned up. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00329">329</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00036_source.html#l00126">Cached_Pixmap::gc</a>, <a class="el" href="a00036_source.html#l00100">Rect::height</a>, <a class="el" href="a00036_source.html#l00123">Cached_Pixmap::id</a>, <a class="el" href="a00036_source.html#l00145">Stack_Window::pixmap</a>, <a class="el" href="a00036_source.html#l00146">Stack_Window::rect</a>, <a class="el" href="a00047_source.html#l00150">SLIST_REMOVE</a>, <a class="el" href="a00036_source.html#l00485">Container::stack_win</a>, <a class="el" href="a00071_source.html#l00078">stack_wins</a>, <a class="el" href="a00036_source.html#l00099">Rect::width</a>, and <a class="el" href="a00036_source.html#l00144">Stack_Window::window</a>.</p>

<p>Referenced by <a class="el" href="a00076_source.html#l00250">free_container()</a>, and <a class="el" href="a00077_source.html#l00347">switch_layout_mode()</a>.</p>

</div>
</div>
<a class="anchor" id="af082905f7eac6d03e92015146bbc1925"></a><!-- doxytag: member="util.c::max" ref="af082905f7eac6d03e92015146bbc1925" args="(int a, int b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int max </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>b</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00048">48</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00060_source.html#l00457">client_min_height()</a>, <a class="el" href="a00060_source.html#l00474">client_min_width()</a>, <a class="el" href="a00066_source.html#l00298">DRAGGING_CB()</a>, <a class="el" href="a00069_source.html#l00348">render_container()</a>, <a class="el" href="a00072_source.html#l00151">reparent_window()</a>, <a class="el" href="a00074_source.html#l00164">resize_container()</a>, and <a class="el" href="a00077_source.html#l00347">switch_layout_mode()</a>.</p>

</div>
</div>
<a class="anchor" id="abd8bbcfabb3ddef2ccaafb9928a37b95"></a><!-- doxytag: member="util.c::min" ref="abd8bbcfabb3ddef2ccaafb9928a37b95" args="(int a, int b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int min </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>b</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00044">44</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00080_source.html#l00050">query_screens()</a>, <a class="el" href="a00073_source.html#l00387">randr_query_outputs()</a>, <a class="el" href="a00069_source.html#l00348">render_container()</a>, and <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

</div>
</div>
<a class="anchor" id="ad475e1b898d9da9b2a8b92e3da51b3dd"></a><!-- doxytag: member="util.c::scalloc" ref="ad475e1b898d9da9b2a8b92e3da51b3dd" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* scalloc </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Safe-wrapper around calloc which exits if malloc returns NULL (meaning that there is no more memory available). </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00074">74</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00052_source.html#l00020">exit_if_null</a>.</p>

<p>Referenced by <a class="el" href="a00068_source.html#l00290">add_subscription()</a>, <a class="el" href="a00073_source.html#l00216">disable_randr()</a>, <a class="el" href="a00076_source.html#l00127">expand_table_cols()</a>, <a class="el" href="a00076_source.html#l00147">expand_table_cols_at_head()</a>, <a class="el" href="a00073_source.html#l00303">handle_output()</a>, <a class="el" href="a00076_source.html#l00044">init_table()</a>, <a class="el" href="a00068_source.html#l00158">IPC_HANDLER()</a>, <a class="el" href="a00068_source.html#l00472">ipc_new_client()</a>, <a class="el" href="a00062_source.html#l00307">load_configuration()</a>, <a class="el" href="a00071_source.html#l00193">main()</a>, <a class="el" href="a00076_source.html#l00054">new_container()</a>, <a class="el" href="a00056_source.html#l00129">parse_file()</a>, <a class="el" href="a00080_source.html#l00050">query_screens()</a>, <a class="el" href="a00072_source.html#l00151">reparent_window()</a>, <a class="el" href="a00077_source.html#l00091">table_put()</a>, <a class="el" href="a00078_source.html#l00039">workspace_get()</a>, and <a class="el" href="a00056_source.html#l01427">yyparse()</a>.</p>

</div>
</div>
<a class="anchor" id="a323dcf30475bb3bf165100e74d225b48"></a><!-- doxytag: member="util.c::set_focus" ref="a323dcf30475bb3bf165100e74d225b48" args="(xcb_connection_t *conn, Client *client, bool set_anyways)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void set_focus </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00007.html">Client</a> *&nbsp;</td>
          <td class="paramname"> <em>client</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>set_anyways</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sets the given client as focused by updating the data structures correctly, updating the X input focus and finally re-decorating both windows (to signalize the user the new focus situation). </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00232">232</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00076_source.html#l00036">c_ws</a>, <a class="el" href="a00036_source.html#l00452">Client::child</a>, <a class="el" href="a00060_source.html#l00339">client_is_floating()</a>, <a class="el" href="a00032_source.html#l00151">CLIENT_LOG</a>, <a class="el" href="a00036_source.html#l00475">Container::col</a>, <a class="el" href="a00036_source.html#l00353">Client::container</a>, <a class="el" href="a00076_source.html#l00037">current_col</a>, <a class="el" href="a00036_source.html#l00211">Workspace::current_col</a>, <a class="el" href="a00076_source.html#l00038">current_row</a>, <a class="el" href="a00036_source.html#l00208">Workspace::current_row</a>, <a class="el" href="a00036_source.html#l00469">Container::currently_focused</a>, <a class="el" href="a00044_source.html#l00021">DLOG</a>, <a class="el" href="a00036_source.html#l00431">Client::dock</a>, <a class="el" href="a00065_source.html#l00045">ewmh_update_active_window()</a>, <a class="el" href="a00065_source.html#l00031">ewmh_update_current_desktop()</a>, <a class="el" href="a00036_source.html#l00448">Client::frame</a>, <a class="el" href="a00036_source.html#l00226">Workspace::fullscreen_client</a>, <a class="el" href="a00077_source.html#l00217">get_last_focused_client()</a>, <a class="el" href="a00013.html#ac094306ab77e360742aba04d7cbd0fe6">Container::mode</a>, <a class="el" href="a00069_source.html#l00081">redecorate_window()</a>, <a class="el" href="a00036_source.html#l00474">Container::row</a>, <a class="el" href="a00047_source.html#l00110">SLIST_FIRST</a>, <a class="el" href="a00047_source.html#l00115">SLIST_FOREACH</a>, <a class="el" href="a00047_source.html#l00137">SLIST_INSERT_HEAD</a>, <a class="el" href="a00047_source.html#l00150">SLIST_REMOVE</a>, <a class="el" href="a00036_source.html#l00434">Client::urgent</a>, <a class="el" href="a00036_source.html#l00488">Container::workspace</a>, <a class="el" href="a00036_source.html#l00356">Client::workspace</a>, and <a class="el" href="a00078_source.html#l00431">workspace_update_urgent_flag()</a>.</p>

<p>Referenced by <a class="el" href="a00059_source.html#l00060">button_press_stackwin()</a>, <a class="el" href="a00067_source.html#l00133">check_crossing_screen_boundary()</a>, <a class="el" href="a00076_source.html#l00319">cleanup_table()</a>, <a class="el" href="a00066_source.html#l00466">floating_focus_direction()</a>, <a class="el" href="a00066_source.html#l00540">floating_toggle_hide()</a>, <a class="el" href="a00061_source.html#l00084">focus_thing()</a>, <a class="el" href="a00061_source.html#l00038">focus_window_in_container()</a>, <a class="el" href="a00059_source.html#l00255">handle_button_press()</a>, <a class="el" href="a00067_source.html#l00173">handle_enter_notify()</a>, <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, <a class="el" href="a00061_source.html#l00738">jump_to_container()</a>, <a class="el" href="a00061_source.html#l00066">jump_to_mark()</a>, <a class="el" href="a00061_source.html#l00713">jump_to_window()</a>, <a class="el" href="a00061_source.html#l00312">move_current_window()</a>, <a class="el" href="a00061_source.html#l00638">move_current_window_to_workspace()</a>, <a class="el" href="a00061_source.html#l00566">move_floating_window_to_workspace()</a>, <a class="el" href="a00061_source.html#l00950">parse_command()</a>, <a class="el" href="a00069_source.html#l00206">reposition_client()</a>, <a class="el" href="a00077_source.html#l00347">switch_layout_mode()</a>, <a class="el" href="a00061_source.html#l00780">travel_focus_stack()</a>, and <a class="el" href="a00078_source.html#l00113">workspace_show()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="a46c23cb2833f4b674f5cfc977f16b990"></a><!-- doxytag: member="util.c::smalloc" ref="a46c23cb2833f4b674f5cfc977f16b990" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* smalloc </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Safe-wrapper around malloc which exits if malloc returns NULL (meaning that there is no more memory available). </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00068">68</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00052_source.html#l00020">exit_if_null</a>.</p>

<p>Referenced by <a class="el" href="a00077_source.html#l00492">append_argument()</a>, <a class="el" href="a00077_source.html#l00175">convert_utf8_to_ucs2()</a>, <a class="el" href="a00065_source.html#l00058">ewmh_update_workarea()</a>, <a class="el" href="a00072_source.html#l00040">manage_existing_windows()</a>, <a class="el" href="a00056_source.html#l00129">parse_file()</a>, <a class="el" href="a00067_source.html#l00047">SLIST_HEAD()</a>, <a class="el" href="a00079_source.html#l00026">TAILQ_HEAD()</a>, <a class="el" href="a00062_source.html#l00138">translate_keysyms()</a>, and <a class="el" href="a00056_source.html#l01427">yyparse()</a>.</p>

</div>
</div>
<a class="anchor" id="a11822d1f4b182be3fa03d2a5af536e1a"></a><!-- doxytag: member="util.c::sstrdup" ref="a11822d1f4b182be3fa03d2a5af536e1a" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* sstrdup </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Safe-wrapper around strdup which exits if malloc returns NULL (meaning that there is no more memory available). </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00080">80</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00052_source.html#l00020">exit_if_null</a>.</p>

<p>Referenced by <a class="el" href="a00060_source.html#l00428">client_mark()</a>, <a class="el" href="a00077_source.html#l00440">get_matching_client()</a>, <a class="el" href="a00062_source.html#l00044">glob_path()</a>, <a class="el" href="a00068_source.html#l00502">ipc_create_socket()</a>, <a class="el" href="a00061_source.html#l00713">jump_to_window()</a>, <a class="el" href="a00062_source.html#l00307">load_configuration()</a>, <a class="el" href="a00071_source.html#l00193">main()</a>, <a class="el" href="a00056_source.html#l00129">parse_file()</a>, <a class="el" href="a00079_source.html#l00026">TAILQ_HEAD()</a>, and <a class="el" href="a00056_source.html#l01427">yyparse()</a>.</p>

</div>
</div>
<a class="anchor" id="a4a1b0dbf1f2e37a0ad5a0f6cc786225c"></a><!-- doxytag: member="util.c::start_application" ref="a4a1b0dbf1f2e37a0ad5a0f6cc786225c" args="(const char *command)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void start_application </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>command</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Starts the given application by passing it through a shell. </p>
<p>We use double fork to avoid zombie processes. As the started application’s parent exits (immediately), the application is reparented to init (process-id 1), which correctly handles childs, so we don’t have to do it :-).</p>
<p>The shell is determined by looking for the SHELL environment variable. If it does not exist, /bin/sh is used. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00134">134</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00071_source.html#l00193">main()</a>, and <a class="el" href="a00061_source.html#l00950">parse_command()</a>.</p>

</div>
</div>
<a class="anchor" id="a5b3f86291e1bab74d7edc044a9d87a52"></a><!-- doxytag: member="util.c::switch_layout_mode" ref="a5b3f86291e1bab74d7edc044a9d87a52" args="(xcb_connection_t *conn, Container *container, int mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void switch_layout_mode </td>
          <td>(</td>
          <td class="paramtype">xcb_connection_t *&nbsp;</td>
          <td class="paramname"> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00013.html">Container</a> *&nbsp;</td>
          <td class="paramname"> <em>container</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Switches the layout of the given container taking care of the necessary house-keeping. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00347">347</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00047_source.html#l00439">CIRCLEQ_FOREACH</a>, <a class="el" href="a00036_source.html#l00149">Stack_Window::container</a>, <a class="el" href="a00079_source.html#l00093">create_window()</a>, <a class="el" href="a00036_source.html#l00469">Container::currently_focused</a>, <a class="el" href="a00044_source.html#l00021">DLOG</a>, <a class="el" href="a00036_source.html#l00440">Client::force_reconfigure</a>, <a class="el" href="a00036_source.html#l00448">Client::frame</a>, <a class="el" href="a00077_source.html#l00217">get_last_focused_client()</a>, <a class="el" href="a00036_source.html#l00100">Rect::height</a>, <a class="el" href="a00077_source.html#l00329">leave_stack_mode()</a>, <a class="el" href="a00077_source.html#l00048">max()</a>, <a class="el" href="a00013.html#ac094306ab77e360742aba04d7cbd0fe6">Container::mode</a>, <a class="el" href="a00036_source.html#l00145">Stack_Window::pixmap</a>, <a class="el" href="a00036_source.html#l00146">Stack_Window::rect</a>, <a class="el" href="a00036_source.html#l00135">Cached_Pixmap::referred_drawable</a>, <a class="el" href="a00036_source.html#l00133">Cached_Pixmap::referred_rect</a>, <a class="el" href="a00069_source.html#l00771">render_layout()</a>, <a class="el" href="a00077_source.html#l00232">set_focus()</a>, <a class="el" href="a00047_source.html#l00137">SLIST_INSERT_HEAD</a>, <a class="el" href="a00036_source.html#l00485">Container::stack_win</a>, <a class="el" href="a00071_source.html#l00078">stack_wins</a>, <a class="el" href="a00036_source.html#l00480">Container::width</a>, <a class="el" href="a00036_source.html#l00144">Stack_Window::window</a>, <a class="el" href="a00036_source.html#l00477">Container::x</a>, <a class="el" href="a00054_source.html#l00022">XCB_CURSOR_LEFT_PTR</a>, and <a class="el" href="a00036_source.html#l00478">Container::y</a>.</p>

<p>Referenced by <a class="el" href="a00076_source.html#l00127">expand_table_cols()</a>, <a class="el" href="a00076_source.html#l00073">expand_table_rows()</a>, <a class="el" href="a00076_source.html#l00054">new_container()</a>, <a class="el" href="a00061_source.html#l00950">parse_command()</a>, and <a class="el" href="a00056_source.html#l01427">yyparse()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="ae1529a1d81e2457f9a2402eda35735d7"></a><!-- doxytag: member="util.c::table_get" ref="ae1529a1d81e2457f9a2402eda35735d7" args="(struct keyvalue_table_head *head, uint32_t key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* table_get </td>
          <td>(</td>
          <td class="paramtype">struct keyvalue_table_head *&nbsp;</td>
          <td class="paramname"> <em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the value of the element of the given keyvalue-table with the given key. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00114">114</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00036_source.html#l00167">keyvalue_element::key</a>, <a class="el" href="a00047_source.html#l00335">TAILQ_FOREACH</a>, and <a class="el" href="a00036_source.html#l00168">keyvalue_element::value</a>.</p>

<p>Referenced by <a class="el" href="a00059_source.html#l00255">handle_button_press()</a>, <a class="el" href="a00067_source.html#l00840">handle_client_message()</a>, <a class="el" href="a00067_source.html#l01076">handle_clientleader_change()</a>, <a class="el" href="a00067_source.html#l00292">handle_configure_request()</a>, <a class="el" href="a00067_source.html#l00173">handle_enter_notify()</a>, <a class="el" href="a00067_source.html#l00770">handle_expose_event()</a>, <a class="el" href="a00067_source.html#l00994">handle_hints()</a>, <a class="el" href="a00067_source.html#l00880">handle_normal_hints()</a>, <a class="el" href="a00067_source.html#l01044">handle_transient_for()</a>, <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, <a class="el" href="a00067_source.html#l00738">handle_windowclass_change()</a>, <a class="el" href="a00067_source.html#l00603">handle_windowname_change()</a>, <a class="el" href="a00067_source.html#l00675">handle_windowname_change_legacy()</a>, <a class="el" href="a00072_source.html#l00092">manage_window()</a>, and <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

</div>
</div>
<a class="anchor" id="a387447a095debe780790788f18e88d6e"></a><!-- doxytag: member="util.c::table_put" ref="a387447a095debe780790788f18e88d6e" args="(struct keyvalue_table_head *head, uint32_t key, void *value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool table_put </td>
          <td>(</td>
          <td class="paramtype">struct keyvalue_table_head *&nbsp;</td>
          <td class="paramname"> <em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inserts an element into the given keyvalue-table using the given key. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00091">91</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00036_source.html#l00167">keyvalue_element::key</a>, <a class="el" href="a00077_source.html#l00074">scalloc()</a>, <a class="el" href="a00047_source.html#l00363">TAILQ_INSERT_TAIL</a>, and <a class="el" href="a00036_source.html#l00168">keyvalue_element::value</a>.</p>

<p>Referenced by <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
</div>
</p>

</div>
</div>
<a class="anchor" id="a325edcce10c699e46d7638d4361599e7"></a><!-- doxytag: member="util.c::table_remove" ref="a325edcce10c699e46d7638d4361599e7" args="(struct keyvalue_table_head *head, uint32_t key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* table_remove </td>
          <td>(</td>
          <td class="paramtype">struct keyvalue_table_head *&nbsp;</td>
          <td class="paramname"> <em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&nbsp;</td>
          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removes the element from the given keyvalue-table with the given key and returns its value;. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00100">100</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>References <a class="el" href="a00036_source.html#l00167">keyvalue_element::key</a>, <a class="el" href="a00047_source.html#l00335">TAILQ_FOREACH</a>, <a class="el" href="a00047_source.html#l00387">TAILQ_REMOVE</a>, and <a class="el" href="a00036_source.html#l00168">keyvalue_element::value</a>.</p>

<p>Referenced by <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>.</p>

</div>
</div>
<a class="anchor" id="a4dfa7907c5f327e6383b32d6e8acde8f"></a><!-- doxytag: member="util.c::update_if_necessary" ref="a4dfa7907c5f327e6383b32d6e8acde8f" args="(uint32_t *destination, const uint32_t new_value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool update_if_necessary </td>
          <td>(</td>
          <td class="paramtype">uint32_t *&nbsp;</td>
          <td class="paramname"> <em>destination</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint32_t&nbsp;</td>
          <td class="paramname"> <em>new_value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Updates *destination with new_value and returns true if it was changed or false if it was the same. </p>

<p>Definition at line <a class="el" href="a00077_source.html#l00057">57</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00073_source.html#l00303">handle_output()</a>, <a class="el" href="a00073_source.html#l00387">randr_query_outputs()</a>, <a class="el" href="a00069_source.html#l00576">render_bars()</a>, and <a class="el" href="a00069_source.html#l00348">render_container()</a>.</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="aadfb9c6f265623f83355191df37c86c8"></a><!-- doxytag: member="util.c::by_child" ref="aadfb9c6f265623f83355191df37c86c8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct keyvalue_table_head <a class="el" href="a00052.html#aadfb9c6f265623f83355191df37c86c8">by_child</a> = TAILQ_HEAD_INITIALIZER(<a class="el" href="a00052.html#aadfb9c6f265623f83355191df37c86c8">by_child</a>)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00042">42</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00059_source.html#l00255">handle_button_press()</a>, <a class="el" href="a00067_source.html#l00840">handle_client_message()</a>, <a class="el" href="a00067_source.html#l01076">handle_clientleader_change()</a>, <a class="el" href="a00067_source.html#l00292">handle_configure_request()</a>, <a class="el" href="a00067_source.html#l00173">handle_enter_notify()</a>, <a class="el" href="a00067_source.html#l00994">handle_hints()</a>, <a class="el" href="a00067_source.html#l00880">handle_normal_hints()</a>, <a class="el" href="a00067_source.html#l01044">handle_transient_for()</a>, <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, <a class="el" href="a00067_source.html#l00738">handle_windowclass_change()</a>, <a class="el" href="a00067_source.html#l00603">handle_windowname_change()</a>, <a class="el" href="a00067_source.html#l00675">handle_windowname_change_legacy()</a>, <a class="el" href="a00072_source.html#l00092">manage_window()</a>, and <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

</div>
</div>
<a class="anchor" id="a38dffc58d761d720f7c63d35f2efd71d"></a><!-- doxytag: member="util.c::by_parent" ref="a38dffc58d761d720f7c63d35f2efd71d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct keyvalue_table_head <a class="el" href="a00052.html#a38dffc58d761d720f7c63d35f2efd71d">by_parent</a> = TAILQ_HEAD_INITIALIZER(<a class="el" href="a00052.html#a38dffc58d761d720f7c63d35f2efd71d">by_parent</a>)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00041">41</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00059_source.html#l00255">handle_button_press()</a>, <a class="el" href="a00067_source.html#l00173">handle_enter_notify()</a>, <a class="el" href="a00067_source.html#l00770">handle_expose_event()</a>, <a class="el" href="a00067_source.html#l00460">handle_unmap_notify_event()</a>, and <a class="el" href="a00072_source.html#l00151">reparent_window()</a>.</p>

</div>
</div>
<a class="anchor" id="afd57bdc78393cf2e79ad556e7b973204"></a><!-- doxytag: member="util.c::conversion_descriptor" ref="afd57bdc78393cf2e79ad556e7b973204" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">iconv_t <a class="el" href="a00077.html#afd57bdc78393cf2e79ad556e7b973204">conversion_descriptor</a> = 0<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="a00077_source.html#l00040">40</a> of file <a class="el" href="a00077_source.html">util.c</a>.</p>

<p>Referenced by <a class="el" href="a00077_source.html#l00175">convert_utf8_to_ucs2()</a>.</p>

</div>
</div>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address>
</body>
</html>