<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>A5: Allegro File System error</title>
		<link>http://www.allegro.cc/forums/view/610057</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 17 Apr 2012 13:25:31 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>EDIT: Solved! Forgot to run al_open_directory(ALLEGRO_FS_ENTRY);</p><p>I&#39;ve made two functions that I am going to use to parse directories and get all files in them. The idea is that I only send the directory path to td_set_directory_to_parse() and then call td_next_file_in_directory() until it returns NULL. I&#39;ve used these functions before without problem but then I logged all files and subdirectories to &quot;content files&quot; in each directory (old approach from back when I used A4 which I&#39;ve converted to A5), but now I want to do it runtime instead of generating these content files.</p><p>Problem is that it crashes when I run al_read_directory(ParseDirectory); in the td_next_file_in_directory() function and I don&#39;t know why. ParseDirectory has been set to a File System entity and if I wouldn&#39;t it would be NULL and return NULL. </p><p>Anyone able to see what I&#39;ve forgotten? I&#39;ve been looking at the code for a few hours now and can&#39;t find it.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>ParseDirectory <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">void</span> td_set_directory_to_parse<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>path<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>  <span class="k1">if</span> <span class="k2">(</span>ParseDirectory <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>ParseDirectory<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>  ParseDirectory <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_fs_entry"><span class="a">al_create_fs_entry</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">char</span> <span class="k3">*</span>td_next_file_in_directory<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 13</span><span class="k2">{</span>
<span class="number"> 14</span>  <span class="k1">if</span> <span class="k2">(</span>ParseDirectory <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span>
<span class="number"> 15</span>    <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FS_ENTRY"><span class="a">ALLEGRO_FS_ENTRY</span></a> <span class="k3">*</span>file <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_read_directory"><span class="a">al_read_directory</span></a><span class="k2">(</span>ParseDirectory<span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- Crash!</span>
<span class="number"> 18</span>
<span class="number"> 19</span>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_fs_entry_mode"><span class="a">al_get_fs_entry_mode</span></a><span class="k2">(</span>file<span class="k2">)</span> <span class="k3">&amp;</span> ALLEGRO_FILEMODE_ISFILE<span class="k2">)</span>
<span class="number"> 20</span>  <span class="k2">{</span>
<span class="number"> 21</span>    <span class="k1">char</span> <span class="k3">*</span>fileName <span class="k3">=</span> td_malloc<span class="k2">(</span><span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>fileName, <span class="s">"%s"</span>, <a href="http://www.allegro.cc/manual/al_get_fs_entry_name"><span class="a">al_get_fs_entry_name</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>    <span class="k1">return</span> fileName<span class="k2">;</span>
<span class="number"> 24</span>  <span class="k2">}</span>
<span class="number"> 25</span>  <span class="k1">else</span>
<span class="number"> 26</span>  <span class="k2">{</span>
<span class="number"> 27</span>    <a href="http://www.allegro.cc/manual/al_destroy_fs_entry"><span class="a">al_destroy_fs_entry</span></a><span class="k2">(</span>ParseDirectory<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k1">return</span> NULL<span class="k2">;</span>
<span class="number"> 29</span>  <span class="k2">}</span>
<span class="number"> 30</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeaRDoWN)</author>
		<pubDate>Tue, 17 Apr 2012 13:25:31 +0000</pubDate>
	</item>
</rss>
