C-Kurs/ckdu: Unterschied zwischen den Versionen
AndyF (Diskussion | Beiträge) K (→2. Stufe) |
(Links zum error_handling.c eingefuegt) |
||
Zeile 6: | Zeile 6: | ||
= Funktion = | = Funktion = | ||
ckdu soll wie das Tool ''du'' 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). | ckdu soll wie das Tool ''du'' 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). | ||
+ | |||
+ | = Vorgaben = | ||
+ | Für jede Stufe findet ihr eine eigene Vorgabe (falls ihr irgendwo gar nicht weiter kommt). | ||
+ | Um diese Vorgaben kurz zu halten, haben wir das error_handling ausgelagert: | ||
+ | |||
+ | * base[1-3].c findet ihr weiter unten.. | ||
+ | * [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=error_handling.c;hb=HEAD Download (error_handling.c)] | ||
+ | * [http://git.goodpoint.de/?p=ckdu-live.git;a=blob_plain;f=error_handling.h;hb=HEAD Download (error_handling.h)] | ||
= Stufen = | = Stufen = |
Version vom 19. September 2010, 11:53 Uhr
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 übers Wochenende doch schon mal selbst zu implementieren.
Inhaltsverzeichnis
Aufbau dieser Seite
Es gibt mehrere Stufen. Das heißt wir haben diese große Aufgabe schon für euch in kleine Happen geteilt. Wenn ihr also wirklich 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!
Funktion
ckdu soll wie das Tool du 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).
Vorgaben
Für jede Stufe findet ihr eine eigene Vorgabe (falls ihr irgendwo gar nicht weiter kommt). Um diese Vorgaben kurz zu halten, haben wir das error_handling ausgelagert:
- base[1-3].c findet ihr weiter unten..
- Download (error_handling.c)
- Download (error_handling.h)
Stufen
1. Stufe
Ordnerinhalt einlesen und ausgeben. Ähnliche wie: ls -1s
so koennte das dann aussehen:
4 img 29832 HelloWorld.pdf 0 HelloWorld.snm 36 HelloWorld.tex
Vorgabe
2. Stufe
Refactoring ! Eingelesene Inhalte in einer Liste speichern. Diese Liste wieder ausgeben.
Vorgabe
3. Stufe
Ordnerinhalte rekursiv aufaddieren
so koennte das dann aussehen:
0.0M HelloWorld.snm 30.0M HelloWorld.pdf 36.0K HelloWorld.tex 153.0M img/ 12.0M uebung.png 24.0M vortrag.png 86.0M world2.png 3.0M world.png
Vorgabe
4. Stufe
sortieren nach Groesse (absteigend)
so koennte das dann aussehen:
153.0M img/ 12.0M uebung.png 24.0M vortrag.png 86.0M world2.png 3.0M world.png 30.0M HelloWorld.pdf 36.0K HelloWorld.tex 0.0M HelloWorld.snm
Vorgabe
- Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 3.
5. Stufe
In dieser Stufe folgen alle wichtigen Sachen, die man noch beachten muss, wenn man auf dem Dateisystem operiert. Außerdem bieten wir einige Ideen mit denen du dein ckdu erweiteren kannst :)
- Symlinks nur einmal folgen (Parameter)
- Hardlinks nur einmal folgen
- Ordentliches Fehler-handling
- du-parameter-kompatible:
- "--max-depth"
- basierend auf getopt
- Device verlassen verbieten
- Wird nicht von den Betreuern betreut:
- Farbige Ausgabe
- Interaktivität
- Einlesen mit mehreren Threads?
Vorgabe
- Absichtlich keine Vorgabe. Bitte erweitert eure Lösung von Stufe 4.