Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > ca44e7e21c4b6cd5e0c5fdfbf12b4de7 > files > 20

libnjb-devel-2.2.6-6.fc12.x86_64.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>libnjb: /builddir/build/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.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="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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 class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_a231d544ee85f784af5e92462fb4d8ea.html">src</a>
  </div>
</div>
<div class="contents">
<h1>datafile.c File Reference</h1><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>
<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"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#da63b14d8141ed3e14baea072221c5cf">datafile_new</a> (void)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__datatagapi.html#gf5614490c92803428e896967355431a5">NJB_Datafile_Destroy</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">u_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#7fac749db92f4ff7be5d7f4fd041016d">datafile_size</a> (<a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *df)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#d8cf05786cb9088cd9ae1bbb2100ea62">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" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#7bb708f3e8952b778446f2fcef87fe61">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" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#b8d6674a5aac213059d864b111f10b2d">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" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#d492fd31f9f4bce733c174e21862b5d5">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" nowrap align="right" valign="top"><a class="el" href="structnjb__datafile__struct.html">njb_datafile_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a0767790f814895d8ddc310d933fb011">datafile_unpack</a> (unsigned char *data, size_t nbytes)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a580707078938ef2447d971a96638ce3">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" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#fc23fcd58e9e846ae7aa4ff500f5b198">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" nowrap align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#a7ca666051692a0e0c2b458366e8fcf9">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"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="datafile_8c.html#60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c04b373ed657c74d96015d8935eb57b0"></a><!-- doxytag: member="datafile.c::njb_unicode_flag" ref="c04b373ed657c74d96015d8935eb57b0" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>njb_unicode_flag</b></td></tr>

</table>
<hr><h2>Detailed Description</h2>
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. <hr><h2>Function Documentation</h2>
<a class="anchor" name="da63b14d8141ed3e14baea072221c5cf"></a><!-- doxytag: member="datafile.c::datafile_new" ref="da63b14d8141ed3e14baea072221c5cf" 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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Creates a new datafile struct. <dl class="return" compact><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_source.html#l00164">datafile_unpack()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a580707078938ef2447d971a96638ce3"></a><!-- doxytag: member="datafile.c::datafile_pack" ref="a580707078938ef2447d971a96638ce3" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <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. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile tag to pack. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</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>
</dl>
<dl class="return" compact><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="libnjb_8h_source.html#l00277">njb_datafile_struct::filename</a>, <a class="el" href="libnjb_8h_source.html#l00326">njb_datafile_struct::filesize</a>, <a class="el" href="byteorder_8c_source.html#l00183">from_16bit_to_njb1_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00052">from_64bit_to_njb1_bytes()</a>, <a class="el" href="libnjb_8h_source.html#l00147">NJB_UC_UTF8</a>, and <a class="el" href="unicode_8c_source.html#l00147">utf8tostr()</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="fc23fcd58e9e846ae7aa4ff500f5b198"></a><!-- doxytag: member="datafile.c::datafile_pack3" ref="fc23fcd58e9e846ae7aa4ff500f5b198" 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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <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 compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>the NJB object to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile in libnjb structure format </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>a pointer to an integer that will hold the resulting size of the packed structure </td></tr>
  </table>
</dl>
<dl class="return" compact><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="libnjb_8h_source.html#l00189">njb_struct::device_type</a>, <a class="el" href="njb__error_8h_source.html#l00014">EO_NOMEM</a>, <a class="el" href="libnjb_8h_source.html#l00277">njb_datafile_struct::filename</a>, <a class="el" href="libnjb_8h_source.html#l00326">njb_datafile_struct::filesize</a>, <a class="el" href="libnjb_8h_source.html#l00282">njb_datafile_struct::folder</a>, <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, <a class="el" href="libnjb_8h_source.html#l00074">NJB_DEVICE_NJB3</a>, <a class="el" href="libnjb_8h_source.html#l00075">NJB_DEVICE_NJBZEN</a>, <a class="el" href="unicode_8c_source.html#l00255">strtoucs2()</a>, and <a class="el" href="libnjb_8h_source.html#l00289">njb_datafile_struct::timestamp</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="d492fd31f9f4bce733c174e21862b5d5"></a><!-- doxytag: member="datafile.c::datafile_set_folder" ref="d492fd31f9f4bce733c174e21862b5d5" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>folder</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function that sets the foldername of a datafile. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile to be altered. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>folder</em>&nbsp;</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>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

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

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

</div>
</div><p>
<a class="anchor" name="b8d6674a5aac213059d864b111f10b2d"></a><!-- doxytag: member="datafile.c::datafile_set_name" ref="b8d6674a5aac213059d864b111f10b2d" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>filename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function that sets the name of a datafile. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile to be altered. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>the new name. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

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

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

</div>
</div><p>
<a class="anchor" name="d8cf05786cb9088cd9ae1bbb2100ea62"></a><!-- doxytag: member="datafile.c::datafile_set_size" ref="d8cf05786cb9088cd9ae1bbb2100ea62" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int64_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function that sets the size of the datafile. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile to be altered. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>the size of the file as a 64bit unsigned integer. </td></tr>
  </table>
</dl>

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

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

</div>
</div><p>
<a class="anchor" name="7bb708f3e8952b778446f2fcef87fe61"></a><!-- doxytag: member="datafile.c::datafile_set_time" ref="7bb708f3e8952b778446f2fcef87fe61" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">time_t&nbsp;</td>
          <td class="paramname"> <em>ts</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function that sets the timestamp for a datafile. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile to be altered. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ts</em>&nbsp;</td><td>the new timestamp for this datafile. </td></tr>
  </table>
</dl>

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

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

</div>
</div><p>
<a class="anchor" name="7fac749db92f4ff7be5d7f4fd041016d"></a><!-- doxytag: member="datafile.c::datafile_size" ref="7fac749db92f4ff7be5d7f4fd041016d" 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> *&nbsp;</td>
          <td class="paramname"> <em>df</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function that returns the size of the datafile as a 64bit unsigned integer <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>df</em>&nbsp;</td><td>the datafile whose size we are interested in. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the size. </dd></dl>

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

</div>
</div><p>
<a class="anchor" name="a0767790f814895d8ddc310d933fb011"></a><!-- doxytag: member="datafile.c::datafile_unpack" ref="a0767790f814895d8ddc310d933fb011" 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 *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>nbytes</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Unpacks a datafile struct from NJB1. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the raw binary data to unpack </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nbytes</em>&nbsp;</td><td>the size of the raw binary data in bytes </td></tr>
  </table>
</dl>
<dl class="return" compact><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_source.html#l00029">datafile_new()</a>, <a class="el" href="libnjb_8h_source.html#l00277">njb_datafile_struct::filename</a>, <a class="el" href="libnjb_8h_source.html#l00326">njb_datafile_struct::filesize</a>, <a class="el" href="libnjb_8h_source.html#l00291">njb_datafile_struct::flags</a>, <a class="el" href="libnjb_8h_source.html#l00282">njb_datafile_struct::folder</a>, <a class="el" href="byteorder_8c_source.html#l00146">njb1_bytes_to_16bit()</a>, <a class="el" href="byteorder_8c_source.html#l00027">njb1_bytes_to_64bit()</a>, <a class="el" href="datafile_8c_source.html#l00052">NJB_Datafile_Destroy()</a>, <a class="el" href="libnjb_8h_source.html#l00269">NJB_FILEFLAGS_REGULAR_FILE</a>, <a class="el" href="libnjb_8h_source.html#l00147">NJB_UC_UTF8</a>, and <a class="el" href="unicode_8c_source.html#l00117">strtoutf8()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a7ca666051692a0e0c2b458366e8fcf9"></a><!-- doxytag: member="datafile.c::new_folder_pack3" ref="a7ca666051692a0e0c2b458366e8fcf9" 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> *&nbsp;</td>
          <td class="paramname"> <em>njb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_int32_t *&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <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 compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>njb</em>&nbsp;</td><td>the NJB object to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name of the new folder, must have a reasonable format! </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>a pointer to an integer that will hold the resulting size of the packed folder structure </td></tr>
  </table>
</dl>
<dl class="return" compact><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="libnjb_8h_source.html#l00189">njb_struct::device_type</a>, <a class="el" href="njb__error_8h_source.html#l00014">EO_NOMEM</a>, <a class="el" href="byteorder_8c_source.html#l00198">from_16bit_to_njb3_bytes()</a>, <a class="el" href="byteorder_8c_source.html#l00129">from_32bit_to_njb3_bytes()</a>, <a class="el" href="libnjb_8h_source.html#l00074">NJB_DEVICE_NJB3</a>, <a class="el" href="libnjb_8h_source.html#l00075">NJB_DEVICE_NJBZEN</a>, and <a class="el" href="unicode_8c_source.html#l00255">strtoucs2()</a>.</p>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="60db410c9e82d9e61b1bf0be607922ed"></a><!-- doxytag: member="datafile.c::__sub_depth" ref="60db410c9e82d9e61b1bf0be607922ed" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="usb__io_8c.html#60db410c9e82d9e61b1bf0be607922ed">__sub_depth</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The current subroutine depth for all of libnjb (global) 
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Jul 26 17:17:29 2009 for libnjb 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>