Sophie

Sophie

distrib > Mageia > 7 > armv7hl > by-pkgid > eb6f01499a5d4428f90019094419e1c5 > files > 381

liblirc-devel-0.10.1-7.mga7.armv7hl.rpm

<!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: /home/iurt/rpmbuild/BUILD/lirc-0.10.1/lib/lirc_options.c Source File</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&amp;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&amp;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&amp;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&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('lirc__options_8c_source.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="headertitle">
<div class="title">lirc_options.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="lirc__options_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/****************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">** lirc_options.c **********************************************************</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">****************************************************************************</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">* options.c - global options access.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor"># include &lt;config.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;getopt.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#if defined(__linux__)</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;linux/types.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ciniparser_8h.html">ciniparser.h</a>&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="lirc__options_8h.html">lirc_options.h</a>&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="lirc__log_8h.html">lirc_log.h</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="lirc__log_8h.html#abffd9aa4ab9bcfacdbb9d7728037114b">logchannel_t</a> logchannel = LOG_LIB;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<a class="code" href="struct__dictionary__.html">dictionary</a>* lirc_options = NULL;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment">/* Environment variable which if set enables some debug output. */</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> LIRC_DEBUG_OPTIONS = <span class="stringliteral">&quot;LIRC_DEBUG_OPTIONS&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> depth = 0;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> options_debug = -1;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="lirc__options_8h.html#a21ea46a90d52096ab0a309317312b346">   40</a></span>&#160;<a class="code" href="lirc__log_8h.html#a24e101a095456e946efea0b971fc2ee3">loglevel_t</a> <a class="code" href="lirc__options_8c.html#a21ea46a90d52096ab0a309317312b346">options_set_loglevel</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* optarg)</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="keywordtype">char</span> s[4];</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        <a class="code" href="lirc__log_8h.html#a24e101a095456e946efea0b971fc2ee3">loglevel_t</a> level;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        level = <a class="code" href="lirc__log_8c.html#a2a2913bd83563a14c1202e9aafd5900c">string2loglevel</a>(optarg);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        <span class="keywordflow">if</span> (level == LIRC_BADLEVEL)</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;                <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        snprintf(s, <span class="keyword">sizeof</span>(s), <span class="stringliteral">&quot;%d&quot;</span>, level);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        options_set_opt(<span class="stringliteral">&quot;lircd:debug&quot;</span>, s);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;}</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keywordtype">void</span> options_set_opt(<span class="keyword">const</span> <span class="keywordtype">char</span>* key, <span class="keyword">const</span> <span class="keywordtype">char</span>* value)</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="group__ciniparser.html#gaab65a95ad09062716b24a129d8529b76">dictionary_set</a>(lirc_options, key, value) != 0)</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                <a class="code" href="lirc__log_8h.html#afd2d22d45a6b32ff3ff8ea73013f09dc">log_warn</a>(<span class="stringliteral">&quot;Cannot set option %s to %s\n&quot;</span>, key, value);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* options_getstring(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> key)</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="group__ciniparser.html#gaeb8a3530ebcbacf04b16a06c2353699a">ciniparser_getstring</a>(lirc_options, key, 0);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keywordtype">int</span> options_getint(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> key)</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;{</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="group__ciniparser.html#ga494c830a31e50ba9daa03c5b3b596d1d">ciniparser_getint</a>(lirc_options, key, 0);</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keywordtype">int</span>  options_getboolean(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> key)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="group__ciniparser.html#ga21a20d1db5df6cb8854829a9649d57eb">ciniparser_getboolean</a>(lirc_options, key, 0);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;}</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span>* parse_O_arg(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="keywordtype">char</span>* path = NULL;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">int</span> opt_len = strlen(<span class="stringliteral">&quot;--options_file&quot;</span>);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordflow">for</span> (i = 0; i &lt; argc; i += 1) {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                <span class="keywordflow">if</span> (strncmp(argv[i], <span class="stringliteral">&quot;-O&quot;</span>, 2) != 0 &amp;&amp;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;                    strncmp(argv[i], <span class="stringliteral">&quot;--options-file&quot;</span>, opt_len) != 0)</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;                        <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                <span class="keywordflow">if</span> (strchr(argv[i], <span class="charliteral">&#39;=&#39;</span>) != NULL) {</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                        path = strchr(argv[i], <span class="charliteral">&#39;=&#39;</span>) + 1;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(argv[i], <span class="stringliteral">&quot;-O&quot;</span>, 2) == 0 &amp;&amp;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;                           strlen(argv[i]) &gt; 2</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;                ) {</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                        path = argv[i] + 2;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i + 1 &lt; argc) {</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                        path = argv[i + 1];</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                }</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                <span class="keywordflow">if</span> (path &amp;&amp; access(path, R_OK) != 0) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                        fprintf(stderr, <span class="stringliteral">&quot;Cannot open options file %s for read\n&quot;</span>,</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                                path);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                }</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;}</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="keywordtype">void</span> options_load(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** <span class="keyword">const</span> argv,</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;                  <span class="keyword">const</span> <span class="keywordtype">char</span>* path_arg,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;                  <span class="keywordtype">void</span> (*parse_options)(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>** <span class="keyword">const</span>))</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keywordtype">char</span> buff[128];</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keywordtype">char</span> buff2[128];</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* path = path_arg;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">if</span> (depth &gt; 1) {</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;                <a class="code" href="lirc__log_8h.html#afd2d22d45a6b32ff3ff8ea73013f09dc">log_warn</a>(<span class="stringliteral">&quot;Error:Cowardly refusing to process&quot;</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;                          <span class="stringliteral">&quot; options-file option within a file\n&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        depth += 1;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        setenv(<span class="stringliteral">&quot;POSIXLY_CORRECT&quot;</span>, <span class="stringliteral">&quot;1&quot;</span>, 1);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordflow">if</span> (path == NULL)</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;                path = parse_O_arg(argc, argv);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="keywordflow">if</span> (path == NULL) {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;                path = getenv(<a class="code" href="lirc__config_8h.html#acc0c7046411273ffb575459f10ff4cf0">LIRC_OPTIONS_VAR</a>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;                path = (path == NULL ? <a class="code" href="lirc__config_8h.html#a933452728d1e45e1f58e7058825ebccd">LIRC_OPTIONS_PATH</a> : path);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        }</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">if</span> (*path != <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                <span class="keywordflow">if</span> (getcwd(buff2, <span class="keyword">sizeof</span>(buff2)) == NULL)</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                        <a class="code" href="lirc__log_8h.html#a9a1bc3b439c0d122c4e82be836c6f531">log_perror_warn</a>(<span class="stringliteral">&quot;options_load: getcwd():&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                snprintf(buff, <span class="keyword">sizeof</span>(buff), <span class="stringliteral">&quot;%s/%s&quot;</span>, buff2, path);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;                path = buff;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        }</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        <span class="keywordflow">if</span> (access(path, R_OK) == 0) {</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;                lirc_options = <a class="code" href="group__ciniparser.html#ga1e877c8cb81d953914b7f10030d84ccd">ciniparser_load</a>(path);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;                <span class="keywordflow">if</span> (lirc_options == NULL) {</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                        <a class="code" href="lirc__log_8h.html#afd2d22d45a6b32ff3ff8ea73013f09dc">log_warn</a>(<span class="stringliteral">&quot;Cannot load options file %s\n&quot;</span>, path);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                        lirc_options = <a class="code" href="group__ciniparser.html#ga876a908eb786f957f939a08a362e514d">dictionary_new</a>(0);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;                }</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;Warning: cannot open %s\n&quot;</span>, path);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;                <a class="code" href="lirc__log_8h.html#afd2d22d45a6b32ff3ff8ea73013f09dc">log_warn</a>(<span class="stringliteral">&quot;Cannot open %s\n&quot;</span>, path);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                lirc_options = <a class="code" href="group__ciniparser.html#ga876a908eb786f957f939a08a362e514d">dictionary_new</a>(0);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        }</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        <span class="keywordflow">if</span> (parse_options != NULL)</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                parse_options(argc, argv);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        <span class="keywordflow">if</span> (options_debug == -1)</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                options_debug = getenv(LIRC_DEBUG_OPTIONS) != NULL;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <span class="keywordflow">if</span> (options_debug &amp;&amp; lirc_options != NULL) {</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;Dumping parsed option values:\n&quot;</span>);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                <a class="code" href="group__ciniparser.html#gac3baf2303bc7715836462364ad3d1b71">ciniparser_dump</a>(lirc_options, stderr);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        }</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;}</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="lirc__options_8h.html#a2e0ec345fba828920ffe10c85d4aa9c9">  160</a></span>&#160;<a class="code" href="lirc__log_8h.html#a24e101a095456e946efea0b971fc2ee3">loglevel_t</a> <a class="code" href="lirc__options_8c.html#a2e0ec345fba828920ffe10c85d4aa9c9">options_get_app_loglevel</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* app)</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* s;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <a class="code" href="lirc__log_8h.html#a24e101a095456e946efea0b971fc2ee3">loglevel_t</a> level = LIRC_BADLEVEL;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <span class="keywordtype">char</span> buff[64];</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        s = getenv(<span class="stringliteral">&quot;LIRC_LOGLEVEL&quot;</span>);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        level = <a class="code" href="lirc__log_8c.html#a2a2913bd83563a14c1202e9aafd5900c">string2loglevel</a>(s);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordflow">if</span> (level != LIRC_BADLEVEL)</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <span class="keywordflow">if</span> (lirc_options == NULL)</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                options_load(0, NULL, NULL, NULL);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <span class="keywordflow">if</span> (level == LIRC_BADLEVEL &amp;&amp; app != NULL) {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                snprintf(buff, <span class="keyword">sizeof</span>(buff), <span class="stringliteral">&quot;%s:debug&quot;</span>, app);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                s = <a class="code" href="group__ciniparser.html#gaeb8a3530ebcbacf04b16a06c2353699a">ciniparser_getstring</a>(lirc_options, buff, NULL);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                level = <a class="code" href="lirc__log_8c.html#a2a2913bd83563a14c1202e9aafd5900c">string2loglevel</a>(s);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        }</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordflow">if</span> (level == LIRC_BADLEVEL) {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                s = <a class="code" href="group__ciniparser.html#gaeb8a3530ebcbacf04b16a06c2353699a">ciniparser_getstring</a>(lirc_options, <span class="stringliteral">&quot;lircd:debug&quot;</span>, <span class="stringliteral">&quot;debug&quot;</span>);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                level = <a class="code" href="lirc__log_8c.html#a2a2913bd83563a14c1202e9aafd5900c">string2loglevel</a>(s);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;                <span class="keywordflow">if</span> (level == LIRC_BADLEVEL)</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                        level = LIRC_DEBUG;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        }</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;}</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="keywordtype">void</span> options_add_defaults(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> defaults[])</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;{</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* key;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* value;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">for</span> (i = 0; defaults[i] != NULL; i += 2) {</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                key = defaults[i];</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                value = defaults[i + 1];</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="group__ciniparser.html#gaeb8a3530ebcbacf04b16a06c2353699a">ciniparser_getstring</a>(lirc_options, key, NULL) == NULL)</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                        options_set_opt((<span class="keywordtype">char</span>*)key, (<span class="keywordtype">char</span>*)value);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        }</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="keywordtype">void</span> options_unload(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        depth = 0;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        options_debug = -1;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">if</span> (lirc_options != NULL) {</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                <a class="code" href="group__ciniparser.html#ga9d792f2544cf674a371663e2f32128fa">dictionary_del</a>(lirc_options);</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                lirc_options = NULL;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        }</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;}</div><div class="ttc" id="group__ciniparser_html_gaeb8a3530ebcbacf04b16a06c2353699a"><div class="ttname"><a href="group__ciniparser.html#gaeb8a3530ebcbacf04b16a06c2353699a">ciniparser_getstring</a></div><div class="ttdeci">const char * ciniparser_getstring(dictionary *d, const char *key, char *def)</div><div class="ttdoc">Get the string associated to a key.</div><div class="ttdef"><b>Definition:</b> <a href="ciniparser_8c_source.html#l00286">ciniparser.c:286</a></div></div>
<div class="ttc" id="group__ciniparser_html_gaab65a95ad09062716b24a129d8529b76"><div class="ttname"><a href="group__ciniparser.html#gaab65a95ad09062716b24a129d8529b76">dictionary_set</a></div><div class="ttdeci">int dictionary_set(dictionary *d, const char *key, const char *val)</div><div class="ttdoc">Set a value in a dictionary.</div><div class="ttdef"><b>Definition:</b> <a href="dictionary_8c_source.html#l00147">dictionary.c:147</a></div></div>
<div class="ttc" id="group__ciniparser_html_ga1e877c8cb81d953914b7f10030d84ccd"><div class="ttname"><a href="group__ciniparser.html#ga1e877c8cb81d953914b7f10030d84ccd">ciniparser_load</a></div><div class="ttdeci">dictionary * ciniparser_load(const char *ininame)</div><div class="ttdoc">Parse an ini file and return an allocated dictionary object.</div><div class="ttdef"><b>Definition:</b> <a href="ciniparser_8c_source.html#l00368">ciniparser.c:368</a></div></div>
<div class="ttc" id="lirc__log_8h_html"><div class="ttname"><a href="lirc__log_8h.html">lirc_log.h</a></div><div class="ttdoc">Logging functionality.</div></div>
<div class="ttc" id="group__ciniparser_html_ga494c830a31e50ba9daa03c5b3b596d1d"><div class="ttname"><a href="group__ciniparser.html#ga494c830a31e50ba9daa03c5b3b596d1d">ciniparser_getint</a></div><div class="ttdeci">int ciniparser_getint(dictionary *d, const char *key, int notfound)</div><div class="ttdoc">Get the string associated to a key, convert to an int.</div><div class="ttdef"><b>Definition:</b> <a href="ciniparser_8c_source.html#l00300">ciniparser.c:300</a></div></div>
<div class="ttc" id="lirc__options_8h_html"><div class="ttname"><a href="lirc__options_8h.html">lirc_options.h</a></div><div class="ttdoc">Options management: options file, parse and retrieve.</div></div>
<div class="ttc" id="lirc__log_8h_html_afd2d22d45a6b32ff3ff8ea73013f09dc"><div class="ttname"><a href="lirc__log_8h.html#afd2d22d45a6b32ff3ff8ea73013f09dc">log_warn</a></div><div class="ttdeci">#define log_warn(fmt,...)</div><div class="ttdoc">Log a warning message.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00109">lirc_log.h:109</a></div></div>
<div class="ttc" id="lirc__options_8c_html_a21ea46a90d52096ab0a309317312b346"><div class="ttname"><a href="lirc__options_8c.html#a21ea46a90d52096ab0a309317312b346">options_set_loglevel</a></div><div class="ttdeci">loglevel_t options_set_loglevel(const char *optarg)</div><div class="ttdoc">Parse and store a loglevel, returning value (possibly LIRC_BADLEVEL).</div><div class="ttdef"><b>Definition:</b> <a href="lirc__options_8c_source.html#l00040">lirc_options.c:40</a></div></div>
<div class="ttc" id="group__ciniparser_html_ga876a908eb786f957f939a08a362e514d"><div class="ttname"><a href="group__ciniparser.html#ga876a908eb786f957f939a08a362e514d">dictionary_new</a></div><div class="ttdeci">dictionary * dictionary_new(int size)</div><div class="ttdoc">Create a new dictionary object.</div><div class="ttdef"><b>Definition:</b> <a href="dictionary_8c_source.html#l00092">dictionary.c:92</a></div></div>
<div class="ttc" id="lirc__log_8h_html_abffd9aa4ab9bcfacdbb9d7728037114b"><div class="ttname"><a href="lirc__log_8h.html#abffd9aa4ab9bcfacdbb9d7728037114b">logchannel_t</a></div><div class="ttdeci">logchannel_t</div><div class="ttdoc">Log channels used to filter messages.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00053">lirc_log.h:53</a></div></div>
<div class="ttc" id="lirc__log_8h_html_a24e101a095456e946efea0b971fc2ee3"><div class="ttname"><a href="lirc__log_8h.html#a24e101a095456e946efea0b971fc2ee3">loglevel_t</a></div><div class="ttdeci">loglevel_t</div><div class="ttdoc">The defined loglevels.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00036">lirc_log.h:36</a></div></div>
<div class="ttc" id="group__ciniparser_html_ga9d792f2544cf674a371663e2f32128fa"><div class="ttname"><a href="group__ciniparser.html#ga9d792f2544cf674a371663e2f32128fa">dictionary_del</a></div><div class="ttdeci">void dictionary_del(dictionary *d)</div><div class="ttdoc">Delete a dictionary object.</div><div class="ttdef"><b>Definition:</b> <a href="dictionary_8c_source.html#l00109">dictionary.c:109</a></div></div>
<div class="ttc" id="lirc__config_8h_html_acc0c7046411273ffb575459f10ff4cf0"><div class="ttname"><a href="lirc__config_8h.html#acc0c7046411273ffb575459f10ff4cf0">LIRC_OPTIONS_VAR</a></div><div class="ttdeci">#define LIRC_OPTIONS_VAR</div><div class="ttdoc">Environment variable overriding options file path.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__config_8h_source.html#l00072">lirc_config.h:72</a></div></div>
<div class="ttc" id="lirc__options_8c_html_a2e0ec345fba828920ffe10c85d4aa9c9"><div class="ttname"><a href="lirc__options_8c.html#a2e0ec345fba828920ffe10c85d4aa9c9">options_get_app_loglevel</a></div><div class="ttdeci">loglevel_t options_get_app_loglevel(const char *app)</div><div class="ttdoc">Return loglevel based on (falling priority)</div><div class="ttdef"><b>Definition:</b> <a href="lirc__options_8c_source.html#l00160">lirc_options.c:160</a></div></div>
<div class="ttc" id="lirc__config_8h_html_a933452728d1e45e1f58e7058825ebccd"><div class="ttname"><a href="lirc__config_8h.html#a933452728d1e45e1f58e7058825ebccd">LIRC_OPTIONS_PATH</a></div><div class="ttdeci">#define LIRC_OPTIONS_PATH</div><div class="ttdoc">Default options file path.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__config_8h_source.html#l00069">lirc_config.h:69</a></div></div>
<div class="ttc" id="group__ciniparser_html_gac3baf2303bc7715836462364ad3d1b71"><div class="ttname"><a href="group__ciniparser.html#gac3baf2303bc7715836462364ad3d1b71">ciniparser_dump</a></div><div class="ttdeci">void ciniparser_dump(dictionary *d, FILE *f)</div><div class="ttdoc">Dump a dictionary to an opened file pointer.</div><div class="ttdef"><b>Definition:</b> <a href="ciniparser_8c_source.html#l00227">ciniparser.c:227</a></div></div>
<div class="ttc" id="struct__dictionary___html"><div class="ttname"><a href="struct__dictionary__.html">_dictionary_</a></div><div class="ttdoc">Dictionary object.</div><div class="ttdef"><b>Definition:</b> <a href="dictionary_8h_source.html#l00067">dictionary.h:67</a></div></div>
<div class="ttc" id="lirc__log_8h_html_a9a1bc3b439c0d122c4e82be836c6f531"><div class="ttname"><a href="lirc__log_8h.html#a9a1bc3b439c0d122c4e82be836c6f531">log_perror_warn</a></div><div class="ttdeci">#define log_perror_warn(fmt,...)</div><div class="ttdoc">perror wrapper logging with level LIRC_WARNING.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8h_source.html#l00094">lirc_log.h:94</a></div></div>
<div class="ttc" id="ciniparser_8h_html"><div class="ttname"><a href="ciniparser_8h.html">ciniparser.h</a></div><div class="ttdoc">Parser for ini files.</div></div>
<div class="ttc" id="group__ciniparser_html_ga21a20d1db5df6cb8854829a9649d57eb"><div class="ttname"><a href="group__ciniparser.html#ga21a20d1db5df6cb8854829a9649d57eb">ciniparser_getboolean</a></div><div class="ttdeci">int ciniparser_getboolean(dictionary *d, const char *key, int notfound)</div><div class="ttdoc">Get the string associated to a key, convert to a boolean.</div><div class="ttdef"><b>Definition:</b> <a href="ciniparser_8c_source.html#l00324">ciniparser.c:324</a></div></div>
<div class="ttc" id="lirc__log_8c_html_a2a2913bd83563a14c1202e9aafd5900c"><div class="ttname"><a href="lirc__log_8c.html#a2a2913bd83563a14c1202e9aafd5900c">string2loglevel</a></div><div class="ttdeci">loglevel_t string2loglevel(const char *s)</div><div class="ttdoc">Convert a string, either a number or 'info', 'trace1', error etc.</div><div class="ttdef"><b>Definition:</b> <a href="lirc__log_8c_source.html#l00234">lirc_log.c:234</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="lirc__options_8c.html">lirc_options.c</a></li>
    <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>