<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>LIRC libraries: Internal API</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="diode-2.gif"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">LIRC libraries </div> <div id="projectbrief">LinuxInfraredRemoteControl</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('group__private__api.html','');}); /* @license-end */ </script> <div id="doc-content"> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="#files">Files</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Internal API</div> </div> </div><!--header--> <div class="contents"> <p>Internal API for lirc applications. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> Files</h2></td></tr> <tr class="memitem:ciniparser_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ciniparser_8h.html">ciniparser.h</a></td></tr> <tr class="memdesc:ciniparser_8h"><td class="mdescLeft"> </td><td class="mdescRight">Parser for ini files. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:dictionary_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="dictionary_8h.html">dictionary.h</a></td></tr> <tr class="memdesc:dictionary_8h"><td class="mdescLeft"> </td><td class="mdescRight">Implements a dictionary for string variables.This module implements a simple dictionary object, i.e. a list of string/string associations. This object is useful to store e.g. information retrieved from a configuration file (ini files). <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:driver_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="driver_8h.html">driver.h</a></td></tr> <tr class="memdesc:driver_8h"><td class="mdescLeft"> </td><td class="mdescRight">Interface to the userspace drivers. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:drv__admin_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="drv__admin_8h.html">drv_admin.h</a></td></tr> <tr class="memdesc:drv__admin_8h"><td class="mdescLeft"> </td><td class="mdescRight">Routines for dynamic drivers. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:dump__config_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="dump__config_8h.html">dump_config.h</a></td></tr> <tr class="memdesc:dump__config_8h"><td class="mdescLeft"> </td><td class="mdescRight">Dumps data structures into file. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:input__map_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="input__map_8h.html">input_map.h</a></td></tr> <tr class="memdesc:input__map_8h"><td class="mdescLeft"> </td><td class="mdescRight">Button namespace derived from Linux input layer. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ir__remote_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ir__remote_8h.html">ir_remote.h</a></td></tr> <tr class="memdesc:ir__remote_8h"><td class="mdescLeft"> </td><td class="mdescRight">Describes and decodes the signals from IR remotes. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ir__remote__types_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ir__remote__types_8h.html">ir_remote_types.h</a></td></tr> <tr class="memdesc:ir__remote__types_8h"><td class="mdescLeft"> </td><td class="mdescRight">Describes and decodes the signals from IR remotes. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ir__remote__types_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="ir__remote__types_8h.html">ir_remote_types.h</a></td></tr> <tr class="memdesc:ir__remote__types_8h"><td class="mdescLeft"> </td><td class="mdescRight">Describes and decodes the signals from IR remotes. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:lirc-utils_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="lirc-utils_8h.html">lirc-utils.h</a></td></tr> <tr class="memdesc:lirc-utils_8h"><td class="mdescLeft"> </td><td class="mdescRight">Utilities. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:lirc__config_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="lirc__config_8h.html">lirc_config.h</a></td></tr> <tr class="memdesc:lirc__config_8h"><td class="mdescLeft"> </td><td class="mdescRight">Local configuration constants not managed by autotools. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:lirc__log_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="lirc__log_8h.html">lirc_log.h</a></td></tr> <tr class="memdesc:lirc__log_8h"><td class="mdescLeft"> </td><td class="mdescRight">Logging functionality. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:lirc__options_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="lirc__options_8h.html">lirc_options.h</a></td></tr> <tr class="memdesc:lirc__options_8h"><td class="mdescLeft"> </td><td class="mdescRight">Options management: options file, parse and retrieve. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:release_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="release_8h.html">release.h</a></td></tr> <tr class="memdesc:release_8h"><td class="mdescLeft"> </td><td class="mdescRight">Automatic release event generation. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gaae645b840ccf7816a6dd37d53bc4325a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structir__remote.html">ir_remote</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__private__api.html#gaae645b840ccf7816a6dd37d53bc4325a">read_config</a> (FILE *f, const char *name)</td></tr> <tr class="memdesc:gaae645b840ccf7816a6dd37d53bc4325a"><td class="mdescLeft"> </td><td class="mdescRight">Parse a lircd.conf config file. <a href="#gaae645b840ccf7816a6dd37d53bc4325a">More...</a><br /></td></tr> <tr class="separator:gaae645b840ccf7816a6dd37d53bc4325a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa55b7dcba60df4c178fd885eaf129288"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__private__api.html#gaa55b7dcba60df4c178fd885eaf129288">free_config</a> (struct <a class="el" href="structir__remote.html">ir_remote</a> *remotes)</td></tr> <tr class="memdesc:gaa55b7dcba60df4c178fd885eaf129288"><td class="mdescLeft"> </td><td class="mdescRight">Free() an <a class="el" href="structir__remote.html" title="One remote as represented in the configuration file.">ir_remote</a> instance obtained using <a class="el" href="group__private__api.html#gaae645b840ccf7816a6dd37d53bc4325a" title="Parse a lircd.conf config file.">read_config()</a>. <a href="#gaa55b7dcba60df4c178fd885eaf129288">More...</a><br /></td></tr> <tr class="separator:gaa55b7dcba60df4c178fd885eaf129288"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga08cad0a0a22fb34e70ef33be007e484d"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__private__api.html#ga08cad0a0a22fb34e70ef33be007e484d">drop_sudo_root</a> (int(*set_some_uid)(uid_t))</td></tr> <tr class="memdesc:ga08cad0a0a22fb34e70ef33be007e484d"><td class="mdescLeft"> </td><td class="mdescRight">Try to drop possible root privileges, returning new user or "" on error. <a href="#ga08cad0a0a22fb34e70ef33be007e484d">More...</a><br /></td></tr> <tr class="separator:ga08cad0a0a22fb34e70ef33be007e484d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga24f983a41e2fccf1c7ba3ee4d69559a4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__private__api.html#ga24f983a41e2fccf1c7ba3ee4d69559a4">drop_root_cli</a> (int(*set_some_uid)(uid_t))</td></tr> <tr class="memdesc:ga24f983a41e2fccf1c7ba3ee4d69559a4"><td class="mdescLeft"> </td><td class="mdescRight">Default view part of drop_sudo_root. <a href="#ga24f983a41e2fccf1c7ba3ee4d69559a4">More...</a><br /></td></tr> <tr class="separator:ga24f983a41e2fccf1c7ba3ee4d69559a4"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Internal API for lirc applications. </p> <h2 class="groupheader">Function Documentation</h2> <a id="ga24f983a41e2fccf1c7ba3ee4d69559a4"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga24f983a41e2fccf1c7ba3ee4d69559a4">◆ </a></span>drop_root_cli()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void drop_root_cli </td> <td>(</td> <td class="paramtype">int(*)(uid_t) </td> <td class="paramname"><em>set_some_uid</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Default view part of drop_sudo_root. </p> <p>Invokes <a class="el" href="group__private__api.html#ga08cad0a0a22fb34e70ef33be007e484d" title="Try to drop possible root privileges, returning new user or "" on error.">drop_sudo_root()</a> and prints status messagea on stdout. </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">set_some_uid</td><td>Typically seteuid() or setuid() </td></tr> </table> </dd> </dl> <p class="definition">Definition at line <a class="el" href="lirc-utils_8c_source.html#l00081">81</a> of file <a class="el" href="lirc-utils_8c_source.html">lirc-utils.c</a>.</p> </div> </div> <a id="ga08cad0a0a22fb34e70ef33be007e484d"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga08cad0a0a22fb34e70ef33be007e484d">◆ </a></span>drop_sudo_root()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* drop_sudo_root </td> <td>(</td> <td class="paramtype">int(*)(uid_t) </td> <td class="paramname"><em>set_some_uid</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Try to drop possible root privileges, returning new user or "" on error. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">set_some_uid</td><td>Typically seteuid() or setuid() </td></tr> </table> </dd> </dl> <dl class="section note"><dt>Note</dt><dd>Uses environment SUDO_USER to determine user to switch to (if any). </dd></dl> <p class="definition">Definition at line <a class="el" href="lirc-utils_8c_source.html#l00028">28</a> of file <a class="el" href="lirc-utils_8c_source.html">lirc-utils.c</a>.</p> </div> </div> <a id="gaa55b7dcba60df4c178fd885eaf129288"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaa55b7dcba60df4c178fd885eaf129288">◆ </a></span>free_config()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void free_config </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structir__remote.html">ir_remote</a> * </td> <td class="paramname"><em>remotes</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free() an <a class="el" href="structir__remote.html" title="One remote as represented in the configuration file.">ir_remote</a> instance obtained using <a class="el" href="group__private__api.html#gaae645b840ccf7816a6dd37d53bc4325a" title="Parse a lircd.conf config file.">read_config()</a>. </p> <p class="definition">Definition at line <a class="el" href="config__file_8c_source.html#l01409">1409</a> of file <a class="el" href="config__file_8c_source.html">config_file.c</a>.</p> </div> </div> <a id="gaae645b840ccf7816a6dd37d53bc4325a"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaae645b840ccf7816a6dd37d53bc4325a">◆ </a></span>read_config()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structir__remote.html">ir_remote</a>* read_config </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"><em>f</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>name</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Parse a lircd.conf config file. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f</td><td>Open FILE* connection to file. </td></tr> <tr><td class="paramname">name</td><td>Normally the path for the open file f. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Pointer to dynamically allocated <a class="el" href="structir__remote.html" title="One remote as represented in the configuration file.">ir_remote</a> or NULL on errors, </dd></dl> <p class="definition">Definition at line <a class="el" href="config__file_8c_source.html#l00838">838</a> of file <a class="el" href="config__file_8c_source.html">config_file.c</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li> </ul> </div> </body> </html>