Sophie

Sophie

distrib > * > cooker > x86_64 > by-pkgid > 12036146830596fff8a6e80859ec761e > files > 17

lib64njb-devel-2.2.6-9.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libnjb: /home/mandrake/rpm/BUILD/libnjb-2.2.6/src/datafile.c File Reference</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.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libnjb&#160;<span id="projectnumber">2.2.6</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="dir_c382854adf3ac0f9f97376793a1b657b.html">src</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<h1>datafile.c File Reference</h1>  </div>
</div>
<div class="contents">
<div class="textblock"><code>#include &lt;string.h&gt;</code><br/>
<code>#include &quot;<a class="el" href="libnjb_8h_source.html">libnjb.h</a>&quot;</code><br/>
<code>#include &quot;njb_error.h&quot;</code><br/>
<code>#include &quot;defs.h&quot;</code><br/>
<code>#include &quot;base.h&quot;</code><br/>
<code>#include &quot;unicode.h&quot;</code><br/>
<code>#include &quot;<a class="el" href="protocol3_8h_source.html">protocol3.h</a>&quot;</code><br/>
<code>#include &quot;byteorder.h&quot;</code><br/>
<code>#include &quot;datafile.h&quot;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#ada63b14d8141ed3e14baea072221c5cf">datafile_new</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__datatagapi.html#gaf5614490c92803428e896967355431a5">NJB_Datafile_Destroy</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">u_int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a7fac749db92f4ff7be5d7f4fd041016d">datafile_size</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#ad8cf05786cb9088cd9ae1bbb2100ea62">datafile_set_size</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, u_int64_t size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a7bb708f3e8952b778446f2fcef87fe61">datafile_set_time</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, time_t ts)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#ab8d6674a5aac213059d864b111f10b2d">datafile_set_name</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, const char *filename)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#ad492fd31f9f4bce733c174e21862b5d5">datafile_set_folder</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, const char *folder)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#aa0767790f814895d8ddc310d933fb011">datafile_unpack</a> (unsigned char *data, size_t nbytes)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#aa580707078938ef2447d971a96638ce3">datafile_pack</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, u_int32_t *size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#afc23fcd58e9e846ae7aa4ff500f5b198">datafile_pack3</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, <a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df, u_int32_t *size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#aa7ca666051692a0e0c2b458366e8fcf9">new_folder_pack3</a> (<a class="el" href="structnjb__struct.html">njb_t</a> *njb, const char *name, u_int32_t *size)</td></tr>
<tr><td colspan="2"><h2><a name="var-members"></a>
Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac04b373ed657c74d96015d8935eb57b0"></a><!-- doxytag: member="datafile.c::njb_unicode_flag" ref="ac04b373ed657c74d96015d8935eb57b0" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>njb_unicode_flag</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>This file contains functions that deal with putting regular data files onto the devices. It is not quite a "file system" but metadata elements in a database that have all the attributes of regular files. </p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="ada63b14d8141ed3e14baea072221c5cf"></a><!-- doxytag: member="datafile.c::datafile_new" ref="ada63b14d8141ed3e14baea072221c5cf" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a>* datafile_new </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Creates a new datafile struct. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a nullified and freshly allocated njb_datafile_t struct </dd></dl>

<p>Referenced by <a class="el" href="datafile_8c.html#aa0767790f814895d8ddc310d933fb011">datafile_unpack()</a>.</p>

</div>
</div>
<a class="anchor" id="aa580707078938ef2447d971a96638ce3"></a><!-- doxytag: member="datafile.c::datafile_pack" ref="aa580707078938ef2447d971a96638ce3" args="(njb_datafile_t *df, u_int32_t *size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char* datafile_pack </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>A function that packs a datafile tag into the format used by the NJB1. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile tag to pack. </td></tr>
    <tr><td class="paramname">size</td><td>a pointer to a variable that shall hold the size of the packed object after this function has been called. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the packed struct, which must be freed by the caller after use. </dd></dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#a1e69ed22f6d3ff77c3434390191cd764">njb_datafile_struct::filename</a>, <a class="el" href="structnjb__datafile__struct.html#aa63b9f2be9c278f1debe38b1b7262c19">njb_datafile_struct::filesize</a>, <a class="el" href="byteorder_8c.html#a922262997ca997a6645fb232e7d6c162">from_16bit_to_njb1_bytes()</a>, <a class="el" href="byteorder_8c.html#a83b8d3a440aa6cdc77b5c47989664a23">from_64bit_to_njb1_bytes()</a>, <a class="el" href="group__unicodeflags.html#ga388e9c70b7a684c777f6b25e2e9d801b">NJB_UC_UTF8</a>, and <a class="el" href="unicode_8c.html#a767008fdd0e78d87acbc7f1ad3bf4830">utf8tostr()</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="afc23fcd58e9e846ae7aa4ff500f5b198"></a><!-- doxytag: member="datafile.c::datafile_pack3" ref="afc23fcd58e9e846ae7aa4ff500f5b198" args="(njb_t *njb, njb_datafile_t *df, u_int32_t *size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char* datafile_pack3 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&#160;</td>
          <td class="paramname"><em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function packs (serialize, marshall) a high-level representation of a datafile metadata structure into a simple byte-array as used by the series 3 devices.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">njb</td><td>the NJB object to use </td></tr>
    <tr><td class="paramname">df</td><td>the datafile in libnjb structure format </td></tr>
    <tr><td class="paramname">size</td><td>a pointer to an integer that will hold the resulting size of the packed structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the packed structure as a newly allocated byte array. The caller shall free this memory after use. Returns NULL on failure. </dd></dl>

<p>References <a class="el" href="structnjb__struct.html#a405f9cb824196553362aa8d4ad546c07">njb_struct::device_type</a>, <a class="el" href="group__errors.html#ga2ab3784c31667eb7bd6dbc4296818720">EO_NOMEM</a>, <a class="el" href="structnjb__datafile__struct.html#a1e69ed22f6d3ff77c3434390191cd764">njb_datafile_struct::filename</a>, <a class="el" href="structnjb__datafile__struct.html#aa63b9f2be9c278f1debe38b1b7262c19">njb_datafile_struct::filesize</a>, <a class="el" href="structnjb__datafile__struct.html#ac99996234eaf1ab83538c1fe1f9e53ab">njb_datafile_struct::folder</a>, <a class="el" href="byteorder_8c.html#a3cb7e2df65722e11213de39bb33c1e8e">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c.html#a4380f8c5e2841f39c2f63ce44d64df59">from_32bit_to_njb3_bytes()</a>, <a class="el" href="group__njbboxes.html#ga926fee67d4ce21c76387fc3776d8300a">NJB_DEVICE_NJB3</a>, <a class="el" href="group__njbboxes.html#gaf6a2f938dac789dbe60fd180b3e349b9">NJB_DEVICE_NJBZEN</a>, <a class="el" href="unicode_8c.html#a7a77d04f2f0563c9c74d28fca28effdd">strtoucs2()</a>, and <a class="el" href="structnjb__datafile__struct.html#ade4025a7f0642bf2cde81bf30556c643">njb_datafile_struct::timestamp</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="ad492fd31f9f4bce733c174e21862b5d5"></a><!-- doxytag: member="datafile.c::datafile_set_folder" ref="ad492fd31f9f4bce733c174e21862b5d5" args="(njb_datafile_t *df, const char *folder)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int datafile_set_folder </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>folder</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Helper function that sets the foldername of a datafile. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile to be altered. </td></tr>
    <tr><td class="paramname">folder</td><td>the new folder name. Folder names always begin and end with a backslash (\) with a backslash separator between levels, like this: "\foo\bar\fnord\". </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#ac99996234eaf1ab83538c1fe1f9e53ab">njb_datafile_struct::folder</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="ab8d6674a5aac213059d864b111f10b2d"></a><!-- doxytag: member="datafile.c::datafile_set_name" ref="ab8d6674a5aac213059d864b111f10b2d" args="(njb_datafile_t *df, const char *filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int datafile_set_name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>filename</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Helper function that sets the name of a datafile. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile to be altered. </td></tr>
    <tr><td class="paramname">filename</td><td>the new name. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#a1e69ed22f6d3ff77c3434390191cd764">njb_datafile_struct::filename</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="ad8cf05786cb9088cd9ae1bbb2100ea62"></a><!-- doxytag: member="datafile.c::datafile_set_size" ref="ad8cf05786cb9088cd9ae1bbb2100ea62" args="(njb_datafile_t *df, u_int64_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void datafile_set_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int64_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Helper function that sets the size of the datafile. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile to be altered. </td></tr>
    <tr><td class="paramname">size</td><td>the size of the file as a 64bit unsigned integer. </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#aa63b9f2be9c278f1debe38b1b7262c19">njb_datafile_struct::filesize</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="a7bb708f3e8952b778446f2fcef87fe61"></a><!-- doxytag: member="datafile.c::datafile_set_time" ref="a7bb708f3e8952b778446f2fcef87fe61" args="(njb_datafile_t *df, time_t ts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void datafile_set_time </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">time_t&#160;</td>
          <td class="paramname"><em>ts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Helper function that sets the timestamp for a datafile. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile to be altered. </td></tr>
    <tr><td class="paramname">ts</td><td>the new timestamp for this datafile. </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#ade4025a7f0642bf2cde81bf30556c643">njb_datafile_struct::timestamp</a>.</p>

<p>Referenced by <a class="el" href="group__datatagapi.html#ga31c21abd0c41827557fa14b13b496d5e">NJB_Send_File()</a>.</p>

</div>
</div>
<a class="anchor" id="a7fac749db92f4ff7be5d7f4fd041016d"></a><!-- doxytag: member="datafile.c::datafile_size" ref="a7fac749db92f4ff7be5d7f4fd041016d" args="(njb_datafile_t *df)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u_int64_t datafile_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&#160;</td>
          <td class="paramname"><em>df</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Helper function that returns the size of the datafile as a 64bit unsigned integer </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">df</td><td>the datafile whose size we are interested in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the size. </dd></dl>

<p>References <a class="el" href="structnjb__datafile__struct.html#aa63b9f2be9c278f1debe38b1b7262c19">njb_datafile_struct::filesize</a>.</p>

</div>
</div>
<a class="anchor" id="aa0767790f814895d8ddc310d933fb011"></a><!-- doxytag: member="datafile.c::datafile_unpack" ref="aa0767790f814895d8ddc310d933fb011" args="(unsigned char *data, size_t nbytes)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a>* datafile_unpack </td>
          <td>(</td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>nbytes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Unpacks a datafile struct from NJB1. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>the raw binary data to unpack </td></tr>
    <tr><td class="paramname">nbytes</td><td>the size of the raw binary data in bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a newly allocated and filled in njb_datafile_t struct. </dd></dl>

<p>References <a class="el" href="datafile_8c.html#ada63b14d8141ed3e14baea072221c5cf">datafile_new()</a>, <a class="el" href="structnjb__datafile__struct.html#a1e69ed22f6d3ff77c3434390191cd764">njb_datafile_struct::filename</a>, <a class="el" href="structnjb__datafile__struct.html#aa63b9f2be9c278f1debe38b1b7262c19">njb_datafile_struct::filesize</a>, <a class="el" href="structnjb__datafile__struct.html#a14153d25ae71a35a26c70c30b32c13a0">njb_datafile_struct::flags</a>, <a class="el" href="structnjb__datafile__struct.html#ac99996234eaf1ab83538c1fe1f9e53ab">njb_datafile_struct::folder</a>, <a class="el" href="byteorder_8c.html#a77340c095fa6b6b32bea9f4132fc4081">njb1_bytes_to_16bit()</a>, <a class="el" href="byteorder_8c.html#a493611d5663d3a79767c8a11b7b601e7">njb1_bytes_to_64bit()</a>, <a class="el" href="group__datatagapi.html#gaf5614490c92803428e896967355431a5">NJB_Datafile_Destroy()</a>, <a class="el" href="libnjb_8h.html#ae77d86345615710d5d11b5b294e98948">NJB_FILEFLAGS_REGULAR_FILE</a>, <a class="el" href="group__unicodeflags.html#ga388e9c70b7a684c777f6b25e2e9d801b">NJB_UC_UTF8</a>, and <a class="el" href="unicode_8c.html#a4b1829345b6bf2af61d6dbbb1b02726b">strtoutf8()</a>.</p>

</div>
</div>
<a class="anchor" id="aa7ca666051692a0e0c2b458366e8fcf9"></a><!-- doxytag: member="datafile.c::new_folder_pack3" ref="aa7ca666051692a0e0c2b458366e8fcf9" args="(njb_t *njb, const char *name, u_int32_t *size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned char* new_folder_pack3 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnjb__struct.html">njb_t</a> *&#160;</td>
          <td class="paramname"><em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This creates a folder metadata entry for a new folder on the series 3 devices. (Not applicable for NJB1.)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">njb</td><td>the NJB object to use </td></tr>
    <tr><td class="paramname">name</td><td>the name of the new folder, must have a reasonable format! </td></tr>
    <tr><td class="paramname">size</td><td>a pointer to an integer that will hold the resulting size of the packed folder structure </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the packed folder structure as a newly allocated byte array. the caller shall free this memory after use. Returns NULL on failure. </dd></dl>

<p>References <a class="el" href="structnjb__struct.html#a405f9cb824196553362aa8d4ad546c07">njb_struct::device_type</a>, <a class="el" href="group__errors.html#ga2ab3784c31667eb7bd6dbc4296818720">EO_NOMEM</a>, <a class="el" href="byteorder_8c.html#a3cb7e2df65722e11213de39bb33c1e8e">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c.html#a4380f8c5e2841f39c2f63ce44d64df59">from_32bit_to_njb3_bytes()</a>, <a class="el" href="group__njbboxes.html#ga926fee67d4ce21c76387fc3776d8300a">NJB_DEVICE_NJB3</a>, <a class="el" href="group__njbboxes.html#gaf6a2f938dac789dbe60fd180b3e349b9">NJB_DEVICE_NJBZEN</a>, and <a class="el" href="unicode_8c.html#a7a77d04f2f0563c9c74d28fca28effdd">strtoucs2()</a>.</p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a60db410c9e82d9e61b1bf0be607922ed"></a><!-- doxytag: member="datafile.c::__sub_depth" ref="a60db410c9e82d9e61b1bf0be607922ed" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="usb__io_8c.html#a60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The current subroutine depth for all of libnjb (global) </p>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Mon May 2 2011 06:05:24 for libnjb by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>