PageRenderTime 82ms CodeModel.GetById 18ms app.highlight 50ms RepoModel.GetById 1ms app.codeStats 0ms

/incron-0.5.9/doc/html/icd-main_8cpp.html

#
HTML | 503 lines | 452 code | 50 blank | 1 comment | 0 complexity | 64d948a8dee226d5631f3734dfcab79e MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  3<title>incron: icd-main.cpp File Reference</title>
  4<link href="doxygen.css" rel="stylesheet" type="text/css">
  5<link href="tabs.css" rel="stylesheet" type="text/css">
  6</head><body>
  7<!-- Generated by Doxygen 1.5.6 -->
  8<div class="navigation" id="top">
  9  <div class="tabs">
 10    <ul>
 11      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
 12      <li><a href="annotated.html"><span>Classes</span></a></li>
 13      <li class="current"><a href="files.html"><span>Files</span></a></li>
 14    </ul>
 15  </div>
 16</div>
 17<div class="contents">
 18<h1>icd-main.cpp File Reference</h1>inotify cron daemon main file <a href="#_details">More...</a>
 19<p>
 20<code>#include &lt;map&gt;</code><br>
 21<code>#include &lt;signal.h&gt;</code><br>
 22<code>#include &lt;wait.h&gt;</code><br>
 23<code>#include &lt;fcntl.h&gt;</code><br>
 24<code>#include &lt;pwd.h&gt;</code><br>
 25<code>#include &lt;dirent.h&gt;</code><br>
 26<code>#include &lt;syslog.h&gt;</code><br>
 27<code>#include &lt;errno.h&gt;</code><br>
 28<code>#include &lt;sys/poll.h&gt;</code><br>
 29<code>#include &lt;sys/stat.h&gt;</code><br>
 30<code>#include &lt;cstring&gt;</code><br>
 31<code>#include &quot;<a class="el" href="inotify-cxx_8h-source.html">inotify-cxx.h</a>&quot;</code><br>
 32<code>#include &quot;<a class="el" href="appinst_8h-source.html">appinst.h</a>&quot;</code><br>
 33<code>#include &quot;<a class="el" href="appargs_8h-source.html">appargs.h</a>&quot;</code><br>
 34<code>#include &quot;<a class="el" href="incron_8h-source.html">incron.h</a>&quot;</code><br>
 35<code>#include &quot;<a class="el" href="incrontab_8h-source.html">incrontab.h</a>&quot;</code><br>
 36<code>#include &quot;<a class="el" href="usertable_8h-source.html">usertable.h</a>&quot;</code><br>
 37<code>#include &quot;<a class="el" href="incroncfg_8h-source.html">incroncfg.h</a>&quot;</code><br>
 38<table border="0" cellpadding="0" cellspacing="0">
 39<tr><td></td></tr>
 40<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
 41<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#1b84812e74f21a986bc5aa8d33c27710">INCRON_LOG_OPTS</a>&nbsp;&nbsp;&nbsp;(LOG_CONS | LOG_PID)</td></tr>
 42
 43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Logging options (console as fallback, log PID).  <a href="#1b84812e74f21a986bc5aa8d33c27710"></a><br></td></tr>
 44<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#9c4a692d77625a6e2c89a4859ffbcaf4">INCRON_LOG_FACIL</a>&nbsp;&nbsp;&nbsp;LOG_CRON</td></tr>
 45
 46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Logging facility (use CRON).  <a href="#9c4a692d77625a6e2c89a4859ffbcaf4"></a><br></td></tr>
 47<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#78420617decce797effe9015f9871fc4">INCROND_VERSION</a>&nbsp;&nbsp;&nbsp;INCROND_NAME &quot; &quot; INCRON_VERSION</td></tr>
 48
 49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">incrond version string  <a href="#78420617decce797effe9015f9871fc4"></a><br></td></tr>
 50<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#937d4f25f3142b6b23e87db51ce923cc">INCROND_DESCRIPTION</a></td></tr>
 51
 52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">incrontab description string  <a href="#937d4f25f3142b6b23e87db51ce923cc"></a><br></td></tr>
 53<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#a009c75345b3ef62a1eea04fb3435031">INCROND_HELP</a></td></tr>
 54
 55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">incrontab help string  <a href="#a009c75345b3ef62a1eea04fb3435031"></a><br></td></tr>
 56<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#e2b69e649a6b4428ec11bdd0a260f20d">CHILD_PIPE_BUF_LEN</a>&nbsp;&nbsp;&nbsp;32</td></tr>
 57
 58<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
 59<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#49430e2d0ab1d2554ee2f4719f124453">on_signal</a> (int signo)</td></tr>
 60
 61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handles a signal.  <a href="#49430e2d0ab1d2554ee2f4719f124453"></a><br></td></tr>
 62<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#6d41c37c974d655525f705b6c6f0716e">load_tables</a> (<a class="el" href="classEventDispatcher.html">EventDispatcher</a> *pEd)  throw (InotifyException)</td></tr>
 63
 64<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Attempts to load all (user and system) incron tables.  <a href="#6d41c37c974d655525f705b6c6f0716e"></a><br></td></tr>
 65<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#ad2b62ecc78cde29f5c17023b7f3dbbf">free_tables</a> (<a class="el" href="classEventDispatcher.html">EventDispatcher</a> *pEd)</td></tr>
 66
 67<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deallocates all memory used by incron tables and unregisters them from the dispatcher.  <a href="#ad2b62ecc78cde29f5c17023b7f3dbbf"></a><br></td></tr>
 68<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#290979d4c24417b39e7ae8c1274ba3e9">prepare_pipe</a> ()</td></tr>
 69
 70<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prepares a 'dead/done child' notification pipe.  <a href="#290979d4c24417b39e7ae8c1274ba3e9"></a><br></td></tr>
 71<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#51f34ab639073cd212dad9f8ab39c01a">init_poll_array</a> (struct pollfd pfd[], int pipefd, int infd)</td></tr>
 72
 73<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether a parameter string is a specific command.  <a href="#51f34ab639073cd212dad9f8ab39c01a"></a><br></td></tr>
 74<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
 75
 76<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Main application function.  <a href="#3c04138a5bfe5d72780bb7e82a18e627"></a><br></td></tr>
 77<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
 78<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="usertable_8h.html#9aa598e8878c4709e214b51047e52e13">SUT_MAP</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#7b1aaf113e44f11e01cf42487aeb5359">g_ut</a></td></tr>
 79
 80<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">User name to user table mapping table.  <a href="#7b1aaf113e44f11e01cf42487aeb5359"></a><br></td></tr>
 81<tr><td class="memItemLeft" nowrap align="right" valign="top">volatile bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#1295917a6eebc00317fc77da160096fa">g_fFinish</a> = false</td></tr>
 82
 83<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finish program yes/no.  <a href="#1295917a6eebc00317fc77da160096fa"></a><br></td></tr>
 84<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#4d8a4d0f07d2d9d35fcad5176d85422f">g_cldPipe</a> [2]</td></tr>
 85
 86<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pipe for notifying about dead children.  <a href="#4d8a4d0f07d2d9d35fcad5176d85422f"></a><br></td></tr>
 87<tr><td class="memItemLeft" nowrap align="right" valign="top">char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#396871ab1873161138a2e5d330b0c9c0">g_cldPipeBuf</a> [CHILD_PIPE_BUF_LEN]</td></tr>
 88
 89<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="icd-main_8cpp.html#9b04c4f885c4831357ef60072756a130">g_daemon</a> = true</td></tr>
 90
 91<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Daemonize true/false.  <a href="#9b04c4f885c4831357ef60072756a130"></a><br></td></tr>
 92</table>
 93<hr><a name="_details"></a><h2>Detailed Description</h2>
 94inotify cron daemon main file 
 95<p>
 96inotify cron system<p>
 97Copyright (C) 2006, 2007, 2008 Lukas Jelinek, &lt;<a href="mailto:lukas@aiken.cz">lukas@aiken.cz</a>&gt;<p>
 98This program is free software; you can use it, redistribute it and/or modify it under the terms of the GNU General Public License, version 2 (see LICENSE-GPL). <hr><h2>Define Documentation</h2>
 99<a class="anchor" name="e2b69e649a6b4428ec11bdd0a260f20d"></a><!-- doxytag: member="icd-main.cpp::CHILD_PIPE_BUF_LEN" ref="e2b69e649a6b4428ec11bdd0a260f20d" args="" -->
100<div class="memitem">
101<div class="memproto">
102      <table class="memname">
103        <tr>
104          <td class="memname">#define CHILD_PIPE_BUF_LEN&nbsp;&nbsp;&nbsp;32          </td>
105        </tr>
106      </table>
107</div>
108<div class="memdoc">
109
110<p>
111
112</div>
113</div><p>
114<a class="anchor" name="9c4a692d77625a6e2c89a4859ffbcaf4"></a><!-- doxytag: member="icd-main.cpp::INCRON_LOG_FACIL" ref="9c4a692d77625a6e2c89a4859ffbcaf4" args="" -->
115<div class="memitem">
116<div class="memproto">
117      <table class="memname">
118        <tr>
119          <td class="memname">#define INCRON_LOG_FACIL&nbsp;&nbsp;&nbsp;LOG_CRON          </td>
120        </tr>
121      </table>
122</div>
123<div class="memdoc">
124
125<p>
126Logging facility (use CRON). 
127<p>
128
129</div>
130</div><p>
131<a class="anchor" name="1b84812e74f21a986bc5aa8d33c27710"></a><!-- doxytag: member="icd-main.cpp::INCRON_LOG_OPTS" ref="1b84812e74f21a986bc5aa8d33c27710" args="" -->
132<div class="memitem">
133<div class="memproto">
134      <table class="memname">
135        <tr>
136          <td class="memname">#define INCRON_LOG_OPTS&nbsp;&nbsp;&nbsp;(LOG_CONS | LOG_PID)          </td>
137        </tr>
138      </table>
139</div>
140<div class="memdoc">
141
142<p>
143Logging options (console as fallback, log PID). 
144<p>
145
146</div>
147</div><p>
148<a class="anchor" name="937d4f25f3142b6b23e87db51ce923cc"></a><!-- doxytag: member="icd-main.cpp::INCROND_DESCRIPTION" ref="937d4f25f3142b6b23e87db51ce923cc" args="" -->
149<div class="memitem">
150<div class="memproto">
151      <table class="memname">
152        <tr>
153          <td class="memname">#define INCROND_DESCRIPTION          </td>
154        </tr>
155      </table>
156</div>
157<div class="memdoc">
158
159<p>
160<b>Value:</b><div class="fragment"><pre class="fragment"><span class="stringliteral">"incrond - inotify cron daemon\n"</span> \
161                            <span class="stringliteral">"(c) Lukas Jelinek, 2006, 2007, 2008"</span>
162</pre></div>incrontab description string 
163<p>
164
165</div>
166</div><p>
167<a class="anchor" name="a009c75345b3ef62a1eea04fb3435031"></a><!-- doxytag: member="icd-main.cpp::INCROND_HELP" ref="a009c75345b3ef62a1eea04fb3435031" args="" -->
168<div class="memitem">
169<div class="memproto">
170      <table class="memname">
171        <tr>
172          <td class="memname">#define INCROND_HELP          </td>
173        </tr>
174      </table>
175</div>
176<div class="memdoc">
177
178<p>
179<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="icd-main_8cpp.html#937d4f25f3142b6b23e87db51ce923cc" title="incrontab description string">INCROND_DESCRIPTION</a> <span class="stringliteral">"\n\n"</span> \
180          <span class="stringliteral">"usage: incrond [&lt;options&gt;]\n\n"</span> \
181          <span class="stringliteral">"&lt;operation&gt; may be one of the following:\n"</span> \
182          <span class="stringliteral">"These options may be used:\n"</span> \
183          <span class="stringliteral">"  -?, --about                  gives short information about program\n"</span> \
184          <span class="stringliteral">"  -h, --help                   prints this help text\n"</span> \
185          <span class="stringliteral">"  -n, --foreground             runs on foreground (no daemonizing)\n"</span> \
186          <span class="stringliteral">"  -k, --kill                   terminates running instance of incrond\n"</span> \
187          <span class="stringliteral">"  -f &lt;FILE&gt;, --config=&lt;FILE&gt;   overrides default configuration file  (requires root privileges)\n"</span> \
188          <span class="stringliteral">"  -V, --version                prints program version\n\n"</span> \
189          <span class="stringliteral">"For reporting bugs please use http://bts.aiken.cz\n"</span>
190</pre></div>incrontab help string 
191<p>
192
193</div>
194</div><p>
195<a class="anchor" name="78420617decce797effe9015f9871fc4"></a><!-- doxytag: member="icd-main.cpp::INCROND_VERSION" ref="78420617decce797effe9015f9871fc4" args="" -->
196<div class="memitem">
197<div class="memproto">
198      <table class="memname">
199        <tr>
200          <td class="memname">#define INCROND_VERSION&nbsp;&nbsp;&nbsp;INCROND_NAME &quot; &quot; INCRON_VERSION          </td>
201        </tr>
202      </table>
203</div>
204<div class="memdoc">
205
206<p>
207incrond version string 
208<p>
209
210</div>
211</div><p>
212<hr><h2>Function Documentation</h2>
213<a class="anchor" name="ad2b62ecc78cde29f5c17023b7f3dbbf"></a><!-- doxytag: member="icd-main.cpp::free_tables" ref="ad2b62ecc78cde29f5c17023b7f3dbbf" args="(EventDispatcher *pEd)" -->
214<div class="memitem">
215<div class="memproto">
216      <table class="memname">
217        <tr>
218          <td class="memname">void free_tables           </td>
219          <td>(</td>
220          <td class="paramtype"><a class="el" href="classEventDispatcher.html">EventDispatcher</a> *&nbsp;</td>
221          <td class="paramname"> <em>pEd</em>          </td>
222          <td>&nbsp;)&nbsp;</td>
223          <td></td>
224        </tr>
225      </table>
226</div>
227<div class="memdoc">
228
229<p>
230Deallocates all memory used by incron tables and unregisters them from the dispatcher. 
231<p>
232<dl compact><dt><b>Parameters:</b></dt><dd>
233  <table border="0" cellspacing="2" cellpadding="0">
234    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pEd</em>&nbsp;</td><td>event dispatcher </td></tr>
235  </table>
236</dl>
237
238</div>
239</div><p>
240<a class="anchor" name="51f34ab639073cd212dad9f8ab39c01a"></a><!-- doxytag: member="icd-main.cpp::init_poll_array" ref="51f34ab639073cd212dad9f8ab39c01a" args="(struct pollfd pfd[], int pipefd, int infd)" -->
241<div class="memitem">
242<div class="memproto">
243      <table class="memname">
244        <tr>
245          <td class="memname">void init_poll_array           </td>
246          <td>(</td>
247          <td class="paramtype">struct pollfd&nbsp;</td>
248          <td class="paramname"> <em>pfd</em>[], </td>
249        </tr>
250        <tr>
251          <td class="paramkey"></td>
252          <td></td>
253          <td class="paramtype">int&nbsp;</td>
254          <td class="paramname"> <em>pipefd</em>, </td>
255        </tr>
256        <tr>
257          <td class="paramkey"></td>
258          <td></td>
259          <td class="paramtype">int&nbsp;</td>
260          <td class="paramname"> <em>infd</em></td><td>&nbsp;</td>
261        </tr>
262        <tr>
263          <td></td>
264          <td>)</td>
265          <td></td><td></td><td></td>
266        </tr>
267      </table>
268</div>
269<div class="memdoc">
270
271<p>
272Checks whether a parameter string is a specific command. 
273<p>
274The string is accepted if it equals either the short or long form of the command.<p>
275<dl compact><dt><b>Parameters:</b></dt><dd>
276  <table border="0" cellspacing="2" cellpadding="0">
277    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>s</em>&nbsp;</td><td>checked string </td></tr>
278    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>shortCmd</em>&nbsp;</td><td>short form of command </td></tr>
279    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>longCmd</em>&nbsp;</td><td>long form of command </td></tr>
280  </table>
281</dl>
282<dl class="return" compact><dt><b>Returns:</b></dt><dd>true = string accepted, false = otherwise Initializes a poll array. </dd></dl>
283<dl compact><dt><b>Parameters:</b></dt><dd>
284  <table border="0" cellspacing="2" cellpadding="0">
285    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>pfd</em>&nbsp;</td><td>poll structure array </td></tr>
286    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pipefd</em>&nbsp;</td><td>pipe file descriptor </td></tr>
287    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>infd</em>&nbsp;</td><td>inotify infrastructure file descriptor </td></tr>
288  </table>
289</dl>
290
291</div>
292</div><p>
293<a class="anchor" name="6d41c37c974d655525f705b6c6f0716e"></a><!-- doxytag: member="icd-main.cpp::load_tables" ref="6d41c37c974d655525f705b6c6f0716e" args="(EventDispatcher *pEd)" -->
294<div class="memitem">
295<div class="memproto">
296      <table class="memname">
297        <tr>
298          <td class="memname">void load_tables           </td>
299          <td>(</td>
300          <td class="paramtype"><a class="el" href="classEventDispatcher.html">EventDispatcher</a> *&nbsp;</td>
301          <td class="paramname"> <em>pEd</em>          </td>
302          <td>&nbsp;)&nbsp;</td>
303          <td>  throw (<a class="el" href="classInotifyException.html">InotifyException</a>)</td>
304        </tr>
305      </table>
306</div>
307<div class="memdoc">
308
309<p>
310Attempts to load all (user and system) incron tables. 
311<p>
312Loaded tables are registered for processing events.<p>
313<dl compact><dt><b>Parameters:</b></dt><dd>
314  <table border="0" cellspacing="2" cellpadding="0">
315    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>pEd</em>&nbsp;</td><td>inotify event dispatcher</td></tr>
316  </table>
317</dl>
318<dl compact><dt><b>Exceptions:</b></dt><dd>
319  <table border="0" cellspacing="2" cellpadding="0">
320    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a></em>&nbsp;</td><td>thrown if base table directory cannot be read </td></tr>
321  </table>
322</dl>
323
324</div>
325</div><p>
326<a class="anchor" name="3c04138a5bfe5d72780bb7e82a18e627"></a><!-- doxytag: member="icd-main.cpp::main" ref="3c04138a5bfe5d72780bb7e82a18e627" args="(int argc, char **argv)" -->
327<div class="memitem">
328<div class="memproto">
329      <table class="memname">
330        <tr>
331          <td class="memname">int main           </td>
332          <td>(</td>
333          <td class="paramtype">int&nbsp;</td>
334          <td class="paramname"> <em>argc</em>, </td>
335        </tr>
336        <tr>
337          <td class="paramkey"></td>
338          <td></td>
339          <td class="paramtype">char **&nbsp;</td>
340          <td class="paramname"> <em>argv</em></td><td>&nbsp;</td>
341        </tr>
342        <tr>
343          <td></td>
344          <td>)</td>
345          <td></td><td></td><td></td>
346        </tr>
347      </table>
348</div>
349<div class="memdoc">
350
351<p>
352Main application function. 
353<p>
354<dl compact><dt><b>Parameters:</b></dt><dd>
355  <table border="0" cellspacing="2" cellpadding="0">
356    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>argc</em>&nbsp;</td><td>argument count </td></tr>
357    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>argv</em>&nbsp;</td><td>argument array </td></tr>
358  </table>
359</dl>
360<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, 1 on error</dd></dl>
361<dl class="attention" compact><dt><b>Attention:</b></dt><dd>In daemon mode, it finishes immediately. </dd></dl>
362
363</div>
364</div><p>
365<a class="anchor" name="49430e2d0ab1d2554ee2f4719f124453"></a><!-- doxytag: member="icd-main.cpp::on_signal" ref="49430e2d0ab1d2554ee2f4719f124453" args="(int signo)" -->
366<div class="memitem">
367<div class="memproto">
368      <table class="memname">
369        <tr>
370          <td class="memname">void on_signal           </td>
371          <td>(</td>
372          <td class="paramtype">int&nbsp;</td>
373          <td class="paramname"> <em>signo</em>          </td>
374          <td>&nbsp;)&nbsp;</td>
375          <td></td>
376        </tr>
377      </table>
378</div>
379<div class="memdoc">
380
381<p>
382Handles a signal. 
383<p>
384For SIGTERM and SIGINT it sets the program finish variable. For SIGCHLD it writes a character into the notification pipe (this is a workaround made due to disability to reliably wait for dead children).<p>
385<dl compact><dt><b>Parameters:</b></dt><dd>
386  <table border="0" cellspacing="2" cellpadding="0">
387    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>signo</em>&nbsp;</td><td>signal number </td></tr>
388  </table>
389</dl>
390
391</div>
392</div><p>
393<a class="anchor" name="290979d4c24417b39e7ae8c1274ba3e9"></a><!-- doxytag: member="icd-main.cpp::prepare_pipe" ref="290979d4c24417b39e7ae8c1274ba3e9" args="()" -->
394<div class="memitem">
395<div class="memproto">
396      <table class="memname">
397        <tr>
398          <td class="memname">void prepare_pipe           </td>
399          <td>(</td>
400          <td class="paramname">          </td>
401          <td>&nbsp;)&nbsp;</td>
402          <td></td>
403        </tr>
404      </table>
405</div>
406<div class="memdoc">
407
408<p>
409Prepares a 'dead/done child' notification pipe. 
410<p>
411This function returns no value at all and on error it throws an exception. 
412</div>
413</div><p>
414<hr><h2>Variable Documentation</h2>
415<a class="anchor" name="4d8a4d0f07d2d9d35fcad5176d85422f"></a><!-- doxytag: member="icd-main.cpp::g_cldPipe" ref="4d8a4d0f07d2d9d35fcad5176d85422f" args="[2]" -->
416<div class="memitem">
417<div class="memproto">
418      <table class="memname">
419        <tr>
420          <td class="memname">int <a class="el" href="icd-main_8cpp.html#4d8a4d0f07d2d9d35fcad5176d85422f">g_cldPipe</a>[2]          </td>
421        </tr>
422      </table>
423</div>
424<div class="memdoc">
425
426<p>
427Pipe for notifying about dead children. 
428<p>
429
430</div>
431</div><p>
432<a class="anchor" name="396871ab1873161138a2e5d330b0c9c0"></a><!-- doxytag: member="icd-main.cpp::g_cldPipeBuf" ref="396871ab1873161138a2e5d330b0c9c0" args="[CHILD_PIPE_BUF_LEN]" -->
433<div class="memitem">
434<div class="memproto">
435      <table class="memname">
436        <tr>
437          <td class="memname">char <a class="el" href="icd-main_8cpp.html#396871ab1873161138a2e5d330b0c9c0">g_cldPipeBuf</a>[CHILD_PIPE_BUF_LEN]          </td>
438        </tr>
439      </table>
440</div>
441<div class="memdoc">
442
443<p>
444
445</div>
446</div><p>
447<a class="anchor" name="9b04c4f885c4831357ef60072756a130"></a><!-- doxytag: member="icd-main.cpp::g_daemon" ref="9b04c4f885c4831357ef60072756a130" args="" -->
448<div class="memitem">
449<div class="memproto">
450      <table class="memname">
451        <tr>
452          <td class="memname">bool <a class="el" href="icd-main_8cpp.html#9b04c4f885c4831357ef60072756a130">g_daemon</a> = true          </td>
453        </tr>
454      </table>
455</div>
456<div class="memdoc">
457
458<p>
459Daemonize true/false. 
460<p>
461
462</div>
463</div><p>
464<a class="anchor" name="1295917a6eebc00317fc77da160096fa"></a><!-- doxytag: member="icd-main.cpp::g_fFinish" ref="1295917a6eebc00317fc77da160096fa" args="" -->
465<div class="memitem">
466<div class="memproto">
467      <table class="memname">
468        <tr>
469          <td class="memname">volatile bool <a class="el" href="usertable_8cpp.html#1295917a6eebc00317fc77da160096fa">g_fFinish</a> = false          </td>
470        </tr>
471      </table>
472</div>
473<div class="memdoc">
474
475<p>
476Finish program yes/no. 
477<p>
478
479</div>
480</div><p>
481<a class="anchor" name="7b1aaf113e44f11e01cf42487aeb5359"></a><!-- doxytag: member="icd-main.cpp::g_ut" ref="7b1aaf113e44f11e01cf42487aeb5359" args="" -->
482<div class="memitem">
483<div class="memproto">
484      <table class="memname">
485        <tr>
486          <td class="memname"><a class="el" href="usertable_8h.html#9aa598e8878c4709e214b51047e52e13">SUT_MAP</a> <a class="el" href="usertable_8cpp.html#7b1aaf113e44f11e01cf42487aeb5359">g_ut</a>          </td>
487        </tr>
488      </table>
489</div>
490<div class="memdoc">
491
492<p>
493User name to user table mapping table. 
494<p>
495
496</div>
497</div><p>
498</div>
499<hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 22:27:24 2009 for incron by&nbsp;
500<a href="http://www.doxygen.org/index.html">
501<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
502</body>
503</html>