<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>gmerlin: String utilities</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> </div> <div class="contents"> <h1>String utilities<br> <small> [<a class="el" href="group__utils.html">Utilities</a>]</small> </h1>String utilities. <a href="#_details">More...</a> <p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g85f65ca22c7e0e43e07a2c66f50b2204">bg_strdup</a> (char *old_string, const char *new_string)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicate a string. <a href="#g85f65ca22c7e0e43e07a2c66f50b2204"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gb244d3ebad539ce68b6845060a577c79">bg_strndup</a> (char *old_string, const char *new_start, const char *new_end)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicate a string from a part of a source string. <a href="#gb244d3ebad539ce68b6845060a577c79"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g0f1126a9090f15b26b6c887ef47d6062">bg_strcat</a> (char *old_string, const char *tail)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Concatenate two strings. <a href="#g0f1126a9090f15b26b6c887ef47d6062"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g9ab27a7531f6d53a6776667da5b6ffd3">bg_strncat</a> (char *old_string, const char *start, const char *end)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Append a part of a string to another string. <a href="#g9ab27a7531f6d53a6776667da5b6ffd3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g512496339d271800ccad7d909466da43">bg_toupper</a> (const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert an UTF-8 string to uppercase. <a href="#g512496339d271800ccad7d909466da43"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gc7cb47e44502ede7a9969dd357211986">bg_string_is_url</a> (const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Check if a string looks like an URL. <a href="#gc7cb47e44502ede7a9969dd357211986"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g786cca69eabd5b43eae0566289813af9">bg_url_split</a> (const char *url, char **protocol, char **user, char **password, char **hostname, int *port, char **path)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Split an URL into their parts. <a href="#g786cca69eabd5b43eae0566289813af9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gcdc3eadf71268ab17c6e44058402d49a">bg_get_filename_hash</a> (const char *gml, char ret[33])</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get MD5 hash of a filename. <a href="#gcdc3eadf71268ab17c6e44058402d49a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#ge53e17355b5cf85d6050c0b6fcd482a9">bg_sprintf</a> (const char *format,...) __attribute__((format(printf</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print into a string. <a href="#ge53e17355b5cf85d6050c0b6fcd482a9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char char ** </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g3e09358b31ca242b0d77da64f37b4799">bg_strbreak</a> (const char *str, char delim)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Break a string into substrings. <a href="#g3e09358b31ca242b0d77da64f37b4799"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gf548c01df6e5f7fa89be6bf84a782746">bg_strbreak_free</a> (char **retval)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free a substrings array. <a href="#gf548c01df6e5f7fa89be6bf84a782746"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gde07b6cfc705fa3eb87b0e169267ddad">bg_scramble_string</a> (const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Scramble a string. <a href="#gde07b6cfc705fa3eb87b0e169267ddad"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g871f478ddc0303b07b1a27d88a7e9a53">bg_descramble_string</a> (const char *str)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Descramble a string. <a href="#g871f478ddc0303b07b1a27d88a7e9a53"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g2b52f10ce16f30531ed438d8e824110b">bg_string_to_uri</a> (const char *pos1, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert a binary string (in system charset) to an URI. <a href="#g2b52f10ce16f30531ed438d8e824110b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gf36af54a0711c076061e3d33630daa57">bg_uri_to_string</a> (const char *pos1, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert an URI to a a binary string (in system charset). <a href="#gf36af54a0711c076061e3d33630daa57"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char ** </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gaa73f7bd8a0c1dd5d82d2fa495a7638d">bg_urilist_decode</a> (const char *str, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Decode an URI list. <a href="#gaa73f7bd8a0c1dd5d82d2fa495a7638d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#gcbcb97e546dcb05e3c62cf438d64fd85">bg_urilist_free</a> (char **uri_list)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free an URI list. <a href="#gcbcb97e546dcb05e3c62cf438d64fd85"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g3c961ec1b257dcc6bd6b35c9598db808">bg_system_to_utf8</a> (const char *str, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert a string from the system character set to UTF-8. <a href="#g3c961ec1b257dcc6bd6b35c9598db808"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g2811bcb3e6da8bed49c079ca13f640ba">bg_utf8_to_system</a> (const char *str, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convert a string from UTF-8 to the system character set. <a href="#g2811bcb3e6da8bed49c079ca13f640ba"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#g3f6852a10ccf9bd55b564e1c6d261c4b">bg_get_language_name</a> (const char *iso)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get a language name. <a href="#g3f6852a10ccf9bd55b564e1c6d261c4b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__strings.html#ga982eb0cc563236178fd1186d088c374">bg_string_match</a> (const char *str, const char *key_list)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Check if a string occurs in a space-separated list of strings. <a href="#ga982eb0cc563236178fd1186d088c374"></a><br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> String utilities. <hr><h2>Function Documentation</h2> <a class="anchor" name="g85f65ca22c7e0e43e07a2c66f50b2204"></a><!-- doxytag: member="utils.h::bg_strdup" ref="g85f65ca22c7e0e43e07a2c66f50b2204" args="(char *old_string, const char *new_string)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_strdup </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>old_string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>new_string</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Duplicate a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>old_string</em> </td><td>(will eventually be freed) </td></tr> <tr><td valign="top"></td><td valign="top"><em>new_string</em> </td><td>New string</td></tr> </table> </dl> Both old_string and new_string can be NULL. If new string is the empty string (""), if will be treated like NULL. </div> </div><p> <a class="anchor" name="gb244d3ebad539ce68b6845060a577c79"></a><!-- doxytag: member="utils.h::bg_strndup" ref="gb244d3ebad539ce68b6845060a577c79" args="(char *old_string, const char *new_start, const char *new_end)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_strndup </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>old_string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>new_start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>new_end</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Duplicate a string from a part of a source string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>old_string</em> </td><td>(will eventually be freed) </td></tr> <tr><td valign="top"></td><td valign="top"><em>new_start</em> </td><td>Start of the new string </td></tr> <tr><td valign="top"></td><td valign="top"><em>new_end</em> </td><td>Points to the first character after the end of the new string</td></tr> </table> </dl> Any combination of old_string, new_start and new_end can be NULL. If new_start is the empty string (""), if will be treated like NULL. If new_end is NULL, it will be obtained with strlen(). </div> </div><p> <a class="anchor" name="g0f1126a9090f15b26b6c887ef47d6062"></a><!-- doxytag: member="utils.h::bg_strcat" ref="g0f1126a9090f15b26b6c887ef47d6062" args="(char *old_string, const char *tail)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_strcat </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>old_string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>tail</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Concatenate two strings. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>old_string</em> </td><td>Old string (will be freed) </td></tr> <tr><td valign="top"></td><td valign="top"><em>tail</em> </td><td>Will be appended to old_string </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string. </dd></dl> </div> </div><p> <a class="anchor" name="g9ab27a7531f6d53a6776667da5b6ffd3"></a><!-- doxytag: member="utils.h::bg_strncat" ref="g9ab27a7531f6d53a6776667da5b6ffd3" args="(char *old_string, const char *start, const char *end)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_strncat </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>old_string</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>end</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Append a part of a string to another string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>old_string</em> </td><td>Old string (will be freed) </td></tr> <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>Start of the string to be appended </td></tr> <tr><td valign="top"></td><td valign="top"><em>end</em> </td><td>Points to the first character after the end of the string to be appended </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string. </dd></dl> </div> </div><p> <a class="anchor" name="g512496339d271800ccad7d909466da43"></a><!-- doxytag: member="utils.h::bg_toupper" ref="g512496339d271800ccad7d909466da43" args="(const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_toupper </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Convert an UTF-8 string to uppercase. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string. </dd></dl> </div> </div><p> <a class="anchor" name="gc7cb47e44502ede7a9969dd357211986"></a><!-- doxytag: member="utils.h::bg_string_is_url" ref="gc7cb47e44502ede7a9969dd357211986" args="(const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int bg_string_is_url </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Check if a string looks like an URL. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>A string </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>1 if the string looks like an URL, 0 else</dd></dl> This checks mostly for the occurrence of "://" at a location, where it makes sense. </div> </div><p> <a class="anchor" name="g786cca69eabd5b43eae0566289813af9"></a><!-- doxytag: member="utils.h::bg_url_split" ref="g786cca69eabd5b43eae0566289813af9" args="(const char *url, char **protocol, char **user, char **password, char **hostname, int *port, char **path)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int bg_url_split </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>url</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>protocol</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>user</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>password</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>hostname</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>port</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>path</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Split an URL into their parts. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>url</em> </td><td>An URL </td></tr> <tr><td valign="top"></td><td valign="top"><em>protocol</em> </td><td>Protocol (returned) </td></tr> <tr><td valign="top"></td><td valign="top"><em>user</em> </td><td>Username (returned) </td></tr> <tr><td valign="top"></td><td valign="top"><em>password</em> </td><td>Password (returned) </td></tr> <tr><td valign="top"></td><td valign="top"><em>hostname</em> </td><td>Hostname (returned) </td></tr> <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>Port (returned) </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>Path (returned)</td></tr> </table> </dl> This parses an url in the form <protocol>://<user@password><host><:port><path>. All arguments for returning the path can be NULL. port will be set to -1 if if doesn't occur in the URL. All strings must be freed when non-NULL after the call. </div> </div><p> <a class="anchor" name="gcdc3eadf71268ab17c6e44058402d49a"></a><!-- doxytag: member="utils.h::bg_get_filename_hash" ref="gcdc3eadf71268ab17c6e44058402d49a" args="(const char *gml, char ret[33])" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void bg_get_filename_hash </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>gml</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char </td> <td class="paramname"> <em>ret</em>[33]</td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Get MD5 hash of a filename. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>gml</em> </td><td>Returns the MD5 sum</td></tr> </table> </dl> This creates an MD5 hash of a gml. For regular files this is compatible with the thumbnailing specification </div> </div><p> <a class="anchor" name="ge53e17355b5cf85d6050c0b6fcd482a9"></a><!-- doxytag: member="utils.h::bg_sprintf" ref="ge53e17355b5cf85d6050c0b6fcd482a9" args="(const char *format,...) __attribute__((format(printf" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_sprintf </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>format</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Print into a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>format</em> </td><td>printf like format</td></tr> </table> </dl> All other arguments must match the format like in printf. This function allocates the returned string, thus it must be freed by the caller. </div> </div><p> <a class="anchor" name="g3e09358b31ca242b0d77da64f37b4799"></a><!-- doxytag: member="utils.h::bg_strbreak" ref="g3e09358b31ca242b0d77da64f37b4799" args="(const char *str, char delim)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char char** bg_strbreak </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char </td> <td class="paramname"> <em>delim</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Break a string into substrings. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> <tr><td valign="top"></td><td valign="top"><em>delim</em> </td><td>Delimiter for the substrings </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A NULL terminated array of substrings</dd></dl> Free the result with <a class="el" href="group__strings.html#gf548c01df6e5f7fa89be6bf84a782746">bg_strbreak_free</a>. </div> </div><p> <a class="anchor" name="gf548c01df6e5f7fa89be6bf84a782746"></a><!-- doxytag: member="utils.h::bg_strbreak_free" ref="gf548c01df6e5f7fa89be6bf84a782746" args="(char **retval)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void bg_strbreak_free </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"> <em>retval</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Free a substrings array. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>retval</em> </td><td>Array</td></tr> </table> </dl> Use this for substring arrays returned by <a class="el" href="group__strings.html#g3e09358b31ca242b0d77da64f37b4799">bg_strbreak</a>. </div> </div><p> <a class="anchor" name="gde07b6cfc705fa3eb87b0e169267ddad"></a><!-- doxytag: member="utils.h::bg_scramble_string" ref="gde07b6cfc705fa3eb87b0e169267ddad" args="(const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_scramble_string </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Scramble a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String to be scrambled </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated scrambled string</dd></dl> Note: Don't even think about using this for security sensitive stuff. It's for saving passwords in files, which should be readable by the the owner only. </div> </div><p> <a class="anchor" name="g871f478ddc0303b07b1a27d88a7e9a53"></a><!-- doxytag: member="utils.h::bg_descramble_string" ref="g871f478ddc0303b07b1a27d88a7e9a53" args="(const char *str)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_descramble_string </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Descramble a string. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String to be descrambled </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated descrambled string</dd></dl> Note: Don't even think about using this for security sensitive stuff. It's for saving passwords in files, which should be readable by the the owner only. </div> </div><p> <a class="anchor" name="g2b52f10ce16f30531ed438d8e824110b"></a><!-- doxytag: member="utils.h::bg_string_to_uri" ref="g2b52f10ce16f30531ed438d8e824110b" args="(const char *pos1, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_string_to_uri </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>pos1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Convert a binary string (in system charset) to an URI. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pos1</em> </td><td>The string </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>or -1</td></tr> </table> </dl> This e.g. replaces " " by "%20". </div> </div><p> <a class="anchor" name="gf36af54a0711c076061e3d33630daa57"></a><!-- doxytag: member="utils.h::bg_uri_to_string" ref="gf36af54a0711c076061e3d33630daa57" args="(const char *pos1, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_uri_to_string </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>pos1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Convert an URI to a a binary string (in system charset). <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pos1</em> </td><td>The string </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>or -1</td></tr> </table> </dl> This e.g. replaces "%20" by " ". </div> </div><p> <a class="anchor" name="gaa73f7bd8a0c1dd5d82d2fa495a7638d"></a><!-- doxytag: member="utils.h::bg_urilist_decode" ref="gaa73f7bd8a0c1dd5d82d2fa495a7638d" args="(const char *str, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char** bg_urilist_decode </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Decode an URI list. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Length of the string or -1</td></tr> </table> </dl> This one decodes a string of MIME type text/urilist into a gmerlin usable array of location strings. The returned array is NULL terminated, it must be freed by the caller with bg_urilist_free. </div> </div><p> <a class="anchor" name="gcbcb97e546dcb05e3c62cf438d64fd85"></a><!-- doxytag: member="utils.h::bg_urilist_free" ref="gcbcb97e546dcb05e3c62cf438d64fd85" args="(char **uri_list)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void bg_urilist_free </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"> <em>uri_list</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Free an URI list. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>uri_list</em> </td><td>Decoded URI list returned by <a class="el" href="group__strings.html#gf36af54a0711c076061e3d33630daa57">bg_uri_to_string</a> </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="g3c961ec1b257dcc6bd6b35c9598db808"></a><!-- doxytag: member="utils.h::bg_system_to_utf8" ref="g3c961ec1b257dcc6bd6b35c9598db808" args="(const char *str, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_system_to_utf8 </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Convert a string from the system character set to UTF-8. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Length or -1 </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string</dd></dl> The "system charset" is obtained with nl_langinfo(). </div> </div><p> <a class="anchor" name="g2811bcb3e6da8bed49c079ca13f640ba"></a><!-- doxytag: member="utils.h::bg_utf8_to_system" ref="g2811bcb3e6da8bed49c079ca13f640ba" args="(const char *str, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* bg_utf8_to_system </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Convert a string from UTF-8 to the system character set. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>Length or -1 </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A newly allocated string</dd></dl> The "system charset" is obtained with nl_langinfo(). </div> </div><p> <a class="anchor" name="g3f6852a10ccf9bd55b564e1c6d261c4b"></a><!-- doxytag: member="utils.h::bg_get_language_name" ref="g3f6852a10ccf9bd55b564e1c6d261c4b" args="(const char *iso)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* bg_get_language_name </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>iso</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Get a language name. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>iso</em> </td><td>An iso-639 3 character code </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>The name of the language or NULL </dd></dl> </div> </div><p> <a class="anchor" name="ga982eb0cc563236178fd1186d088c374"></a><!-- doxytag: member="utils.h::bg_string_match" ref="ga982eb0cc563236178fd1186d088c374" args="(const char *str, const char *key_list)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int bg_string_match </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key_list</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Check if a string occurs in a space-separated list of strings. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>String </td></tr> <tr><td valign="top"></td><td valign="top"><em>key_list</em> </td><td>Space separated list of keys </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>1 of str occurs in key_list, 0 else </dd></dl> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Sat Aug 22 01:28:05 2009 for gmerlin by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>