<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>CGI manipulation</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3-rc2 --> <center> <a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>CGI manipulation</h1> <p> <table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Functions</h2></td></tr> <tr><td nowrap align=right valign=top>formvars * </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a0">cgi_process_form</a> ()</td></tr> <tr><td> </td><td><font size=-1><em>Process HTML form or URL data.</em> <a href="#a0"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a1">cgi_fatal</a> (const char *msg)</td></tr> <tr><td> </td><td><font size=-1><em>Kills the application with a message.</em> <a href="#a1"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a2">cgi_include</a> (const char *filename)</td></tr> <tr><td> </td><td><font size=-1><em>Include static files.</em> <a href="#a2"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a3">cgi_init_headers</a> ()</td></tr> <tr><td> </td><td><font size=-1><em>Initialize HTML headers.</em> <a href="#a3"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a4">cgi_param_multiple</a> (const char *name)</td></tr> <tr><td> </td><td><font size=-1><em>Return all values with the same name sent by a form.</em> <a href="#a4"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a5">cgi_redirect</a> (char *url)</td></tr> <tr><td> </td><td><font size=-1><em>Recirects to the specified url.</em> <a href="#a5"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a7">cgi_init</a> ()</td></tr> <tr><td> </td><td><font size=-1><em>Main cgi function.</em> <a href="#a7"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a8">cgi_end</a> ()</td></tr> <tr><td> </td><td><font size=-1><em>Performs cgi clean ups.</em> <a href="#a8"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a9">cgi_unescape_special_chars</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Transforms' URL special chars.</em> <a href="#a9"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a10">cgi_escape_special_chars</a> (char *str)</td></tr> <tr><td> </td><td><font size=-1><em>Transforms' special characters into hexadecimal form ( %E1 ).</em> <a href="#a10"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>char * </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a11">cgi_param</a> (const char *var_name)</td></tr> <tr><td> </td><td><font size=-1><em>Gets the of HTML or URL variable indicated by 'name'.</em> <a href="#a11"></a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="group__libcgi__cgi.html#a12">cgi_send_header</a> (const char *header)</td></tr> <tr><td> </td><td><font size=-1><em>Sends a specific header.</em> <a href="#a12"></a><em></em></font><br><br></td></tr> </table> <hr><h2>Function Documentation</h2> <a name="a8" doxytag="cgi.c::cgi_end"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void cgi_end </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Performs cgi clean ups. <p> Provides some methods to clean memory or any other job that need to be done before the end of the application. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a7">cgi_init</a> </dd></dl> </td> </tr> </table> <a name="a10" doxytag="cgi.c::cgi_escape_special_chars"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* cgi_escape_special_chars </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Transforms' special characters into hexadecimal form ( %E1 ). <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>str</em> </td><td>String to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a9">cgi_unescape_special_chars</a> </dd></dl> </td> </tr> </table> <a name="a1" doxytag="cgi.c::cgi_fatal"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void cgi_fatal </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>msg</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Kills the application with a message. <p> Writes msg and terminate <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>msg</em> </td><td>Message to send to the browser before killing </td></tr> </table> </dl> </td> </tr> </table> <a name="a2" doxytag="cgi.c::cgi_include"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int cgi_include </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>filename</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Include static files. <p> Function used to include static data ( normaly html files ). File contents will never be processed. Note that I don't scan for any special character. The reason I did it is, if the you are using this library, you have a shell where you can compile the cgi program. And can do much more ;-) <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>filename</em> </td><td>Filename with full path to include </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>If an error occurs and libcgi_debug is true, then a warning message is showed. </dd></dl> <dl compact><dt><b>See also:</b></dt><dd>libcgi_debug</dd></dl> <div class="fragment"><pre> <a class="code" href="group__libcgi__cgi.html#a2">cgi_include</a>(<span class="stringliteral">"top_bar.htm"</span>); </pre></div> </td> </tr> </table> <a name="a7" doxytag="cgi.c::cgi_init"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> int cgi_init </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Main cgi function. <p> Configures all (most?) we need to get cgi library working correctly. It MUST be called before any other cgi function. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a8">cgi_end</a>, <a class="el" href="group__libcgi__cgi.html#a0">cgi_process_form</a>, <a class="el" href="group__libcgi__cgi.html#a3">cgi_init_headers</a> </dd></dl> </td> </tr> </table> <a name="a3" doxytag="cgi.c::cgi_init_headers"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void cgi_init_headers </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Initialize HTML headers. <p> You need to call this function before that any content is send to the brosert, otherwise you'll get an error (Error 500). <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a7">cgi_init</a> </dd></dl> </td> </tr> </table> <a name="a11" doxytag="cgi.c::cgi_param"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* cgi_param </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>var_name</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Gets the of HTML or URL variable indicated by 'name'. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>name</em> </td><td>Form Variable name </td></tr> </table> </dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a4">cgi_param_multiple</a>, <a class="el" href="group__libcgi__cgi.html#a0">cgi_process_form</a>, <a class="el" href="group__libcgi__cgi.html#a7">cgi_init</a></dd></dl> <div class="fragment"><pre> <span class="comment">// ...</span> <span class="keywordtype">char</span> *contents; <a class="code" href="group__libcgi__cgi.html#a7">cgi_init</a>(); <a class="code" href="group__libcgi__cgi.html#a0">cgi_process_form</a>(); <a class="code" href="group__libcgi__cgi.html#a3">cgi_init_headers</a>(); contents = <a class="code" href="group__libcgi__cgi.html#a11">cgi_param</a>(<span class="stringliteral">"foo"</span>); puts(contents); <span class="comment">// ...</span> </pre></div> </td> </tr> </table> <a name="a4" doxytag="cgi.c::cgi_param_multiple"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* cgi_param_multiple </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>name</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Return all values with the same name sent by a form. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>name</em> </td><td>Form variable name </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>Form variable contents </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a11">cgi_param</a></dd></dl> Example: For example, if in your HTML you have something like<br> <br> <pre> "What do you like??"<br> Computers : <input type='checkbox' name='like' value='computers'><br> Internet : <input type='checkbox' name='like' value='net'><br> games : <input type='checkbox' name='like' 'value='games''><br> </pre> <br> then, to retrieve all values, you can make a code like<br> <br> <p> <div class="fragment"><pre> <span class="comment">// ...</span> <span class="keywordtype">char</span> *data; \\ ... <span class="keywordflow">while</span> ((data = <a class="code" href="group__libcgi__cgi.html#a4">cgi_param_multiple</a>(<span class="stringliteral">"like"</span>)) != NULL) puts(data); \\ ... </pre></div> </td> </tr> </table> <a name="a0" doxytag="cgi.c::cgi_process_form"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> formvars* cgi_process_form </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Process HTML form or URL data. <p> Used to retrieve GET or POST data. It handles automaticaly the correct REQUEST_METHOD, so you don't need to afraid about it. <dl compact><dt><b>Returns:</b></dt><dd>Returns the contents of URL or FORM into a formvars variable, or NULL if FALSE. Most of time, you don't need any variable to store the form data, because is used an internal variable to manipulate the contents. </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a7">cgi_init</a>, <a class="el" href="group__libcgi__cgi.html#a3">cgi_init_headers</a> </dd></dl> </td> </tr> </table> <a name="a5" doxytag="cgi.c::cgi_redirect"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void cgi_redirect </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>url</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Recirects to the specified url. <p> Remember that you cannot send any header before this function, or it will not work. <b>Note:</b><br> LibCGI does not implement RFC 2396 to make the lib simple and quick. You should be sure to pass a correct URI to this function. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>url</em> </td><td>url to redirect the browser</td></tr> </table> </dl> <div class="fragment"><pre> <a class="code" href="group__libcgi__cgi.html#a5">cgi_redirect</a>(<span class="stringliteral">"http://wwww.linux.org"</span>); </pre></div> </td> </tr> </table> <a name="a12" doxytag="cgi.c::cgi_send_header"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> void cgi_send_header </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname1" valign="top" nowrap> <em>header</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Sends a specific header. <p> Sends a specific HTTP header. You won't need to add '\n\n' chars. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>header</em> </td><td>HTTP header to send, without new line characteres </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>True </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a3">cgi_init_headers</a> </dd></dl> </td> </tr> </table> <a name="a9" doxytag="cgi.c::cgi_unescape_special_chars"></a><p> <table width="100%" cellpadding="2" cellspacing="0" border="0"> <tr> <td class="md"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> char* cgi_unescape_special_chars </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>str</em> </td> <td class="md" valign="top">) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> Transforms' URL special chars. <p> Search for special chars ( like %E1 ) in str, converting them to the ascii character correspondent. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>str</em> </td><td>String containing data to parse </td></tr> </table> </dl> <dl compact><dt><b>Returns:</b></dt><dd>The new string </dd></dl> <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__libcgi__cgi.html#a10">cgi_escape_special_chars</a> </dd></dl> </td> </tr> </table> <hr><address style="align: right;"><small>Generated on Thu Mar 13 10:13:11 2003 for LibCGI by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.3-rc2 </small></address> </body> </html>