Ausgabe von printdir?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Ausgabe von printdir?
Hallo!

Wie soll die Ausgabe von printdir aussehen? Genauso wie ls -l oder sollen die Dateien mit . vorne dran mit angezeigt werden (also wie bei ls -la)?


Steht doch alles auf dem Blatt:

Aufgabe 5: 23.05.2005
printdir (12 Punkte)
Entwickeln Sie (als Zweiergruppe) ein Programm printdir, mit dem Sie — ähnlich wie mit dem
UNIX-Kommando ls(1) — den Inhalt eines oder mehrerer Verzeichnisse anzeigen können. Die Namen
der Verzeichnisse werden auf der Kommandozeile übergeben. Lösen Sie die Aufgabe in folgenden
Schritten:

a) Einfache Ausgabe
Das Programm soll auf der Standardausgabe für jedes Verzeichnis jeweils zuerst den Verzeichnisnamen
und in den darauffolgenden Zeilen - durch einen Tabulator eingerückt - die Namen
der Dateien in diesem Verzeichnis ausgeben. [color=red]Dateien, deren Namen mit einem Punkt beginnt,
werden wie bei Unix-ls nicht angezeigt[/color]
. Essentielle Funktionen: opendir(3), readdir(3)

b) Makefile
Erstellen Sie ein zur Aufgabe passendes Makefile mit dem gleichen Funktionsumfang wie in
der Aufgabe 2.

c) Sortieren der Ausgabe
Sortieren Sie die Ausgabe mit Hilfe von qsort(3) und strcmp(3) nach dem Dateinamen.

d) Dateityp, Zugriffsrechte, Dateigröße und Anzahl der Links
Geben Sie zum Dateinamen den Typ der Datei (regulär, block-special, …), die Zugriffsrechte
(rwx …), die Dateigröße in Bytes und die Anzahl der Links (hardlinks) auf dies Datei aus. Verwenden
Sie dazu den Systemaufruf lstat(2).
Beispiel:

lrwxr-x–x 1 2038 stat.c
-rwxr-x–x 1 2038 realstat.c

e) Dateityp und Zugriffsrechte:
Ihr Programm soll nun noch symbolische Verweise als solche anzeigen. (readlink(2)).
Beispiel:

lrwxr-x–x 1 10 stat.c → realstat.c
-rwxr-x–x 1 2038 realstat.c

f) Benutzer- und Gruppenzugehörigkeit:
Ermitteln Sie aus den numerischen Werten der Benutzer- und Gruppenzugehörigkeit der Datei
die Namen des Benutzers und der Gruppe (getpwuid(3), getgrgid(3)) und geben Sie diese aus.
Sollten Benutzer und/oder Gruppe nicht auflösbar sein, soll das Programm die numerischen
Werte ausgeben.
Beispiel:

lrwxr-x–x 1 wawi i4staff 10 stat.c → realstat.c
-rwxr-x–x 1 jklein i4staff 2038 realstat.c


Unter linux haben symbolische links immer alle Rechte, drum zeigt der ls -l das auch als lrwxrwxrwx an. Man kann die Rechte hier gar nicht effektiv einschraenken, da der Benutzer ja auch direkt auf das Ziel zugreifen koennte. Das einzige was eventuell vorstellbar waere ist, den Namen des Ziels nicht preiszugeben, wobei das auch nicht sehr sinnvoll ist, entweder will man jemandem Rechte auf eine Datei geben - oder eben nicht.

Ob es jetzt nicht sinnvoll waere, gleich die Zielrechte auszugeben, darueber kann man streiten. Spezifiziert ist es jedenfalls nicht, darum wuerd ich darauf auch keinen Punktabzub geben.