Sektion Angewandte Informationsverarbeitung
Übungen zu Systemnahe Software I, Wintersemester 1996/97
Blatt 9
Abgabe: Donnerstag, 6.2.1997
Aufgabe 13 (30 Punkte)
Zum Abschluß des Semesters sollen mit einer etwas umfangreicheren
Programmieraufgabe Techniken zur Modularisierung von C-Programmen
angewendet werden.
Schreiben Sie in C ein einfaches Archivierungsprogramm
(sam = simple archive manager)
für gewöhnliche Dateien.
Der Aufruf des Programms soll folgender Syntax genügen:
sam (-r|-d|-x|-t) archive [files...]
-
Der Parameter -r steht für ``replace'',
d.h., die angegebenen Dateien sollen ins Archiv aufgenommen
werden oder eventuell dort bereits vorhandene Dateien gleichen
Namens ersetzen.
Wenn das Archiv noch nicht existiert, soll es bei dieser
Gelegenheit angelegt werden.
Die Originaldateien sollen unverändert bestehen bleiben.
-
Der Parameter -d steht für ``delete'',
d.h., die angegebenen Dateien sollen, falls vorhanden,
aus dem Archiv entfernt werden.
-
Der Parameter -x steht für ``extract'',
d.h., die angegebenen Dateien sollen aus dem Archiv
heraus wieder in den Arbeitskatalog kopiert werden,
wobei sie dort etwa noch bestehende Dateien gleichen
Namens ersetzen.
Das Archiv selbst soll dabei nicht verändert werden.
Wenn außer dem Archivnamen keine Dateien angegeben werden, sollen
alle
im Archiv gespeicherten Dateien extrahiert werden.
-
Der Parameter -t steht für ``table of contents'',
d.h., es soll eine Liste mit Informationen über die
angegebenen archivierten Dateien ausgegeben werden.
Auch hier soll beim Fehlen von Dateiargumenten der
gesamte Archivinhalt gemeint sein.
Die angezeigten Informationen sollen den Namen, die Größe
und das Datum der letzten Änderung jeder Datei umfassen.
Ein Archiv soll als einzelne Datei realisiert werden, in der
alle benötigten Verwaltungsinformationen zusammen mit dem
Inhalt der archivierten Dateien platzsparend abgelegt werden.
Der Name der Archivdatei wird, wie oben angedeutet, beim Programmaufruf
angegeben.
Die Reihenfolge, in der Dateien gespeichert oder angezeigt
werden, spielt keine Rolle.
Wenn etwas gelöscht wird, soll das Archiv tatsächlich
verkleinert werden.
Daher empfiehlt es sich, bei allen Veränderungen des Archivs
mit einer temporären Datei zu arbeiten, in der es neu aufgebaut
werden kann.
Zum Eröffnen einer temporären Datei, die beim Schließen
automatisch gelöscht wird, eignet sich die Büchereifunktion
tmpfile.
Dateinamen sollen ohne Pfad im Archiv verwaltet werden.
Ihre Länge kann als beschränkt angenommen werden,
z.B. auf maximal 255 Zeichen (warum?).
Bei allen Dateioperationen (Öffnen, Lesen, Schreiben, etc.)
sollen Fehlerbedingungen erkannt werden und zu entsprechenden
Fehlermeldungen führen (Büchereifunktion perror).
Sorgen Sie auch mit einer Plausibilitätsprüfung dafür, daß
nicht jede beliebige Datei als Archiv interpretiert werden kann.