Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 874255f3b26b44feb57fbe38a7384518 > files > 229

gmerlin-0.4.1-2mdv2010.0.i586.rpm

<!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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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 *&nbsp;</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">&nbsp;</td><td class="mdescRight">Duplicate a string.  <a href="#g85f65ca22c7e0e43e07a2c66f50b2204"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</td><td class="mdescRight">Concatenate two strings.  <a href="#g0f1126a9090f15b26b6c887ef47d6062"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 **&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</td><td class="mdescRight">Scramble a string.  <a href="#gde07b6cfc705fa3eb87b0e169267ddad"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</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">&nbsp;</td><td class="mdescRight">Descramble a string.  <a href="#g871f478ddc0303b07b1a27d88a7e9a53"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 **&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>old_string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>new_string</em></td><td>&nbsp;</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>&nbsp;</td><td>(will eventually be freed) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>new_string</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>old_string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>new_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>new_end</em></td><td>&nbsp;</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>&nbsp;</td><td>(will eventually be freed) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>new_start</em>&nbsp;</td><td>Start of the new string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>new_end</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>old_string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>tail</em></td><td>&nbsp;</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>&nbsp;</td><td>Old string (will be freed) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tail</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>old_string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>end</em></td><td>&nbsp;</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>&nbsp;</td><td>Old string (will be freed) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>start</em>&nbsp;</td><td>Start of the string to be appended </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>end</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>protocol</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>user</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>password</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>hostname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>path</em></td><td>&nbsp;</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>&nbsp;</td><td>An URL </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>Protocol (returned) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user</em>&nbsp;</td><td>Username (returned) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>password</em>&nbsp;</td><td>Password (returned) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>Hostname (returned) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>Port (returned) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>Path (returned)</td></tr>
  </table>
</dl>
This parses an url in the form &lt;protocol&gt;://&lt;user@password&gt;&lt;host&gt;&lt;:port&gt;&lt;path&gt;. 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 *&nbsp;</td>
          <td class="paramname"> <em>gml</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>ret</em>[33]</td><td>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&nbsp;</td>
          <td class="paramname"> <em>delim</em></td><td>&nbsp;</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>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delim</em>&nbsp;</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 **&nbsp;</td>
          <td class="paramname"> <em>retval</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>pos1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</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>&nbsp;</td><td>The string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>pos1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</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>&nbsp;</td><td>The string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</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>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</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 **&nbsp;</td>
          <td class="paramname"> <em>uri_list</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</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>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</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>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>iso</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>key_list</em></td><td>&nbsp;</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>&nbsp;</td><td>String </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key_list</em>&nbsp;</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&nbsp;
<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>