<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[erledigt] Festplatte, struktur auslesen]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche derzeit die Verzeichnisstruktur auszulesen und nach dem schema</p>
<p>order<br />
-datei<br />
-datei<br />
-unterordner1<br />
--unterordner1_datei<br />
--unterordner1_datei<br />
-datei<br />
-datei<br />
(usw.)</p>
<p>ausgeben zu lassen.</p>
<p>bedauerlicherweise geht er nur durch einen zweig des baums:</p>
<pre><code>-NEWS
-debug
--config.log
--libtool
--config.h
--stamp-h1
--src
---.libs
</code></pre>
<p>an dieser stelle stellt er fest das .libs leer ist und müsste den restlichen inhalt von -debug ausgeben, tut er aber nicht.</p>
<p>google und co. konnten mir nicht weiterhelfen, lediglich das auslesen einzelnder verzeichnisse lässt sich dort finden, auch die boardsuche hat mir nicht helfen können.</p>
<p>auch das durchwühlen von referenzen hat mich nicht weitergebracht und ich nähre mich langsam der verzweifelung an.</p>
<p>Die funktion die die verzeichnisstruktur einließt:</p>
<pre><code class="language-cpp">void LaD ( TListenKnoten *handle)
{

	ostringstream likeinput;
	likeinput &lt;&lt; startknoten-&gt;mydir;
	const char* temp = likeinput.str().c_str();

	if (chdir(temp)) 
	{
		perror(&quot;Verzeichniswechsel&quot;);
	}

	ostringstream likeinput2;
	likeinput2 &lt;&lt; handle-&gt;mydir;
	const char* temp2 = likeinput2.str().c_str();
	chdir(temp2);

	handle-&gt;dir=opendir(&quot;./&quot;);

	do
	{
        	if (dirzeiger = readdir(handle-&gt;dir))
		{
			perror(&quot;readdir&quot;);
		}
		else
		{
			perror(&quot;readdir&quot;);
		}

		if (dirzeiger)
        	{
			if ((strcmp(dirzeiger-&gt;d_name, &quot;.&quot;)==0) or (strcmp(dirzeiger-&gt;d_name, &quot;..&quot;)==0))
			{

			}
			else
			{
				struct stat attribut;

				if (stat(dirzeiger-&gt;d_name, &amp;attribut))
				{
					perror(&quot;Fehler bei stat&quot;);
					cout &lt;&lt; errno &lt;&lt; endl;
				}
				else
				{
					neu = new struct TListenKnoten;	
					// Typ des Eintrags ermitteln
					if( S_ISREG(attribut.st_mode) )
					{
						cout &lt;&lt; &quot;Reguläre Datei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Reguläre Datei \t\t&quot;;
					}
					else if( S_ISDIR(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;Verzeichnis:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Verzeichnis \t\t&quot;;
					}
					else if( S_ISCHR(attribut.st_mode) )
					{
						cout &lt;&lt; &quot;zeichorient. Gerätedatei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;zeichorient. Gerätedatei \t\t&quot;;
					}
					else if( S_ISBLK(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;blockorient. Gerätedatei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;blockorient. Gerätedatei \t\t&quot;;
					}
					else if( S_ISFIFO(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;FIFO oder named Pipe:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;FIFO oder named Pipe \t\t&quot;;
					}
					else
					{
						cout &lt;&lt; &quot;Unbekannte Datei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Unbekannte Datei \t\t&quot;;
					}

					// Neuen eintrag erstellen
					neu-&gt;mydir = dirzeiger-&gt;d_name;
					neu-&gt;nodename=dirzeiger-&gt;d_name;
					neu-&gt;lastelement=handle;
					handle-&gt;nextelement.push_back(*neu);

					if  (S_ISDIR(attribut.st_mode)) 
					{
					// temp und temp2 werden nicht korrekt behandelt, liste geht nur durch ersten zweig.
					LaD (&amp;handle-&gt;nextelement[handle-&gt;nextelement.size()-1]);
					}
				}
			}	
        	}

	} while (dirzeiger);
}
</code></pre>
<p>ich habe eig. nurnoch eine mögliche erklärung dafür, das das aktuelle opendir das vorrangegangene überschreibt, aber ansonsten bin ich ratlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239714/erledigt-festplatte-struktur-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 10:17:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239714.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Apr 2009 07:36:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [erledigt] Festplatte, struktur auslesen on Mon, 27 Apr 2009 13:29:01 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche derzeit die Verzeichnisstruktur auszulesen und nach dem schema</p>
<p>order<br />
-datei<br />
-datei<br />
-unterordner1<br />
--unterordner1_datei<br />
--unterordner1_datei<br />
-datei<br />
-datei<br />
(usw.)</p>
<p>ausgeben zu lassen.</p>
<p>bedauerlicherweise geht er nur durch einen zweig des baums:</p>
<pre><code>-NEWS
-debug
--config.log
--libtool
--config.h
--stamp-h1
--src
---.libs
</code></pre>
<p>an dieser stelle stellt er fest das .libs leer ist und müsste den restlichen inhalt von -debug ausgeben, tut er aber nicht.</p>
<p>google und co. konnten mir nicht weiterhelfen, lediglich das auslesen einzelnder verzeichnisse lässt sich dort finden, auch die boardsuche hat mir nicht helfen können.</p>
<p>auch das durchwühlen von referenzen hat mich nicht weitergebracht und ich nähre mich langsam der verzweifelung an.</p>
<p>Die funktion die die verzeichnisstruktur einließt:</p>
<pre><code class="language-cpp">void LaD ( TListenKnoten *handle)
{

	ostringstream likeinput;
	likeinput &lt;&lt; startknoten-&gt;mydir;
	const char* temp = likeinput.str().c_str();

	if (chdir(temp)) 
	{
		perror(&quot;Verzeichniswechsel&quot;);
	}

	ostringstream likeinput2;
	likeinput2 &lt;&lt; handle-&gt;mydir;
	const char* temp2 = likeinput2.str().c_str();
	chdir(temp2);

	handle-&gt;dir=opendir(&quot;./&quot;);

	do
	{
        	if (dirzeiger = readdir(handle-&gt;dir))
		{
			perror(&quot;readdir&quot;);
		}
		else
		{
			perror(&quot;readdir&quot;);
		}

		if (dirzeiger)
        	{
			if ((strcmp(dirzeiger-&gt;d_name, &quot;.&quot;)==0) or (strcmp(dirzeiger-&gt;d_name, &quot;..&quot;)==0))
			{

			}
			else
			{
				struct stat attribut;

				if (stat(dirzeiger-&gt;d_name, &amp;attribut))
				{
					perror(&quot;Fehler bei stat&quot;);
					cout &lt;&lt; errno &lt;&lt; endl;
				}
				else
				{
					neu = new struct TListenKnoten;	
					// Typ des Eintrags ermitteln
					if( S_ISREG(attribut.st_mode) )
					{
						cout &lt;&lt; &quot;Reguläre Datei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Reguläre Datei \t\t&quot;;
					}
					else if( S_ISDIR(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;Verzeichnis:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Verzeichnis \t\t&quot;;
					}
					else if( S_ISCHR(attribut.st_mode) )
					{
						cout &lt;&lt; &quot;zeichorient. Gerätedatei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;zeichorient. Gerätedatei \t\t&quot;;
					}
					else if( S_ISBLK(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;blockorient. Gerätedatei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;blockorient. Gerätedatei \t\t&quot;;
					}
					else if( S_ISFIFO(attribut.st_mode) )
					{	
						cout &lt;&lt; &quot;FIFO oder named Pipe:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;FIFO oder named Pipe \t\t&quot;;
					}
					else
					{
						cout &lt;&lt; &quot;Unbekannte Datei:\t\t &quot; &lt;&lt; dirzeiger-&gt;d_name &lt;&lt; endl;
						neu-&gt;wert=&quot;Unbekannte Datei \t\t&quot;;
					}

					// Neuen eintrag erstellen
					neu-&gt;mydir = dirzeiger-&gt;d_name;
					neu-&gt;nodename=dirzeiger-&gt;d_name;
					neu-&gt;lastelement=handle;
					handle-&gt;nextelement.push_back(*neu);

					if  (S_ISDIR(attribut.st_mode)) 
					{
					// temp und temp2 werden nicht korrekt behandelt, liste geht nur durch ersten zweig.
					LaD (&amp;handle-&gt;nextelement[handle-&gt;nextelement.size()-1]);
					}
				}
			}	
        	}

	} while (dirzeiger);
}
</code></pre>
<p>ich habe eig. nurnoch eine mögliche erklärung dafür, das das aktuelle opendir das vorrangegangene überschreibt, aber ansonsten bin ich ratlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701811</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Mon, 27 Apr 2009 13:29:01 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Festplatte, struktur auslesen on Mon, 27 Apr 2009 07:45:09 GMT]]></title><description><![CDATA[<p>Wozu das Rad zweimal erfinden - soetwas gibt es schon</p>
<p><a href="ftp://mama.indstate.edu/linux/tree/" rel="nofollow">ftp://mama.indstate.edu/linux/tree/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701817</guid><dc:creator><![CDATA[hartmut1164]]></dc:creator><pubDate>Mon, 27 Apr 2009 07:45:09 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] Festplatte, struktur auslesen on Mon, 27 Apr 2009 13:28:40 GMT]]></title><description><![CDATA[<p>hartmut1164 schrieb:</p>
<blockquote>
<p>Wozu das Rad zweimal erfinden - soetwas gibt es schon</p>
<p><a href="ftp://mama.indstate.edu/linux/tree/" rel="nofollow">ftp://mama.indstate.edu/linux/tree/</a></p>
</blockquote>
<p>nunja, hast durchaus recht, allerdings lernt man dadurch ja nichts^^</p>
<p>PS: die ausgabe erfolgt über eine andere funktion</p>
<p>edit::</p>
<p>Problem gelöst:</p>
<pre><code class="language-cpp">if  (S_ISDIR(attribut.st_mode)) 
					{
						LaD (&amp;handle-&gt;nextelement[handle-&gt;nextelement.size()-1]);

					chdir(&quot;..&quot;);

					}
</code></pre>
<p>ich habe mir einfach mal den absoluten pfad des arbeitsverzeichnisses an mehreren programmstellen ausgeben lassen und siehe da, das aktuelle arbeitsverzeichnis ist global...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701819</guid><dc:creator><![CDATA[Lodoss]]></dc:creator><pubDate>Mon, 27 Apr 2009 13:28:40 GMT</pubDate></item></channel></rss>