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...]

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.