<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=141.23.27.139</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=141.23.27.139"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/141.23.27.139"/>
	<updated>2026-10-29T03:12:53Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/ckdu&amp;diff=14994</id>
		<title>C-Kurs/ckdu</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=C-Kurs/ckdu&amp;diff=14994"/>
		<updated>2010-09-21T15:12:58Z</updated>

		<summary type="html">&lt;p&gt;141.23.27.139: Kommentare hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Aufgabe ist eine besondere Aufgabe. Sie wird/wurde in der 7. Vorlesung live fast komplett implementiert. Da dies sehr viel ist und damit wichtige Fragen dort geklaert werden koennen, probiert diese Aufgabe zu Hause &#039;&#039;&#039;übers Wochenende&#039;&#039;&#039; doch schon mal &#039;&#039;&#039;selbst zu implementieren&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Aufbau dieser Seite =&lt;br /&gt;
Es gibt mehrere Stufen. Das heißt wir haben diese große Aufgabe schon für euch in kleine Happen geteilt. Wenn ihr also &#039;&#039;wirklich&#039;&#039; nicht weiterkommt, könnt ihr euch in der Vorgabe (base1.c bis base 3.c) der nächst höheren Stufe angucken wie wir es gelöst haben. Aber bedenke: Jede Stufe wird ein bisschen anspruchsvoller!&lt;br /&gt;
&lt;br /&gt;
= Funktion =&lt;br /&gt;
ckdu soll wie das Tool &#039;&#039;du&#039;&#039; auch, eine Auflistung aller Dateien/Ordner und deren Größe. Zusätzlich soll ckdu diese Liste auch sortieren und menschlich Lesbar gestalten (in KB, MB, GB).&lt;br /&gt;
&lt;br /&gt;
= Vorgaben =&lt;br /&gt;
Für jede Stufe findet ihr eine eigene Vorgabe (falls ihr irgendwo gar nicht weiter kommt).&lt;br /&gt;
Um diese Vorgaben kurz zu halten, haben wir das error_handling ausgelagert:&lt;br /&gt;
&lt;br /&gt;
* base[1-3].c findet ihr weiter unten..&lt;br /&gt;
* [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=error_handling.c;hb=HEAD Download (error_handling.c)]&lt;br /&gt;
* [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=error_handling.h;hb=HEAD Download (error_handling.h)]&lt;br /&gt;
&lt;br /&gt;
= Stufen =&lt;br /&gt;
== 1. Stufe ==&lt;br /&gt;
Ordnerinhalt einlesen und ausgeben.&lt;br /&gt;
Ähnliche wie:  ls -1s&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;so koennte das dann aussehen:&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    4 img&lt;br /&gt;
29832 HelloWorld.pdf&lt;br /&gt;
    0 HelloWorld.snm&lt;br /&gt;
   36 HelloWorld.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorgabe ===&lt;br /&gt;
* [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=base1.c;hb=HEAD Download (base1.c)]&lt;br /&gt;
&lt;br /&gt;
== 2. Stufe ==&lt;br /&gt;
Refactoring - zu: &amp;lt;br&amp;gt;&lt;br /&gt;
Eingelesene Inhalte in einer Liste speichern.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Liste wieder ausgeben.&lt;br /&gt;
&lt;br /&gt;
Dies soll in den folgenden drei Funktionen geschehen,&amp;lt;br&amp;gt;&lt;br /&gt;
so dass die main() diese Funktionen aufruft und somit nur ein paar Zeilen lang wird.&lt;br /&gt;
&lt;br /&gt;
Erzeugt ein neuen tree_entry. Die Parameterliste muss um entsprechende Variablen erweitert werden...&lt;br /&gt;
 void initialize_tree_entry(ckdu_tree_entry * entry /* INSERT CODE HERE */)&lt;br /&gt;
&lt;br /&gt;
Speichert alle benoetigten Dateiattribute des als char-array uebergebenen Verzeichnisses unterhalb des mit uebergebenen root-node.&lt;br /&gt;
 void crawl_tree(ckdu_tree_entry * root, const char * dirname) &lt;br /&gt;
&lt;br /&gt;
Gibt alle Dateien unterhalb von uebergebenen root-node auf der console aus.&lt;br /&gt;
 void print_tree(const ckdu_tree_entry * root)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Vorgabe ===&lt;br /&gt;
* [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=base2.c;hb=HEAD Download (base2.c)]&lt;br /&gt;
&lt;br /&gt;
== 3. Stufe ==&lt;br /&gt;
&lt;br /&gt;
Ordnerinhalte rekursiv aufaddieren&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;so koennte das dann aussehen:&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  0.0M HelloWorld.snm&lt;br /&gt;
 30.0M HelloWorld.pdf&lt;br /&gt;
 36.0K HelloWorld.tex&lt;br /&gt;
153.0M img/&lt;br /&gt;
 12.0M   uebung.png&lt;br /&gt;
 24.0M   vortrag.png&lt;br /&gt;
 86.0M   world2.png&lt;br /&gt;
  3.0M   world.png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorgabe ===&lt;br /&gt;
* [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=base3.c;hb=HEAD Download (base3.c)]&lt;br /&gt;
&lt;br /&gt;
== 4. Stufe ==&lt;br /&gt;
sortieren nach Groesse (absteigend)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;so koennte das dann aussehen:&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
153.0M img/&lt;br /&gt;
 12.0M   uebung.png&lt;br /&gt;
 24.0M   vortrag.png&lt;br /&gt;
 86.0M   world2.png&lt;br /&gt;
  3.0M   world.png&lt;br /&gt;
 30.0M HelloWorld.pdf&lt;br /&gt;
 36.0K HelloWorld.tex&lt;br /&gt;
  0.0M HelloWorld.snm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vorgabe ===&lt;br /&gt;
* &#039;&#039;Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 3.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 5. Stufe ==&lt;br /&gt;
In dieser Stufe folgen alle wichtigen Sachen, die man noch beachten &#039;&#039;&#039;muss&#039;&#039;&#039;, wenn man auf dem Dateisystem operiert.&lt;br /&gt;
Außerdem bieten wir einige Ideen mit denen du dein ckdu erweiteren kannst :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Symlinks nur einmal folgen (Parameter)&lt;br /&gt;
* Hardlinks nur einmal folgen&lt;br /&gt;
* Ordentliches Fehler-handling&lt;br /&gt;
* du-parameter-kompatible:&lt;br /&gt;
** &amp;quot;--max-depth&amp;quot;&lt;br /&gt;
** basierend auf getopt&lt;br /&gt;
** Device verlassen verbieten&lt;br /&gt;
* Wird nicht von den Betreuern betreut:&lt;br /&gt;
** Farbige Ausgabe&lt;br /&gt;
** Interaktivität&lt;br /&gt;
** Einlesen mit mehreren Threads?&lt;br /&gt;
&lt;br /&gt;
=== Vorgabe ===&lt;br /&gt;
* &#039;&#039;Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 4.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Kommentare =&lt;br /&gt;
* Wenn ich das richtig verstehe, sollten in der Vorgabe base3.c schon die Verzeichnisse rekursiv dargestellt werden. Das werden sie leider nicht, Unterordner werden nicht durchsucht.&lt;br /&gt;
* Die Beispielausgabe von Stufe4 ist auch nicht bis in jedes Unterverzeichnis sortiert. War das so gewollt?&lt;/div&gt;</summary>
		<author><name>141.23.27.139</name></author>
	</entry>
</feed>