Prof. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 13. Januar 2005
Christian Ehrhardt Blatt 9


Uni Logo



Allgemeine Informatik 3 (WS 2004/2005)


Abgabetermin 18.01.2005

Mails (10 Punkte)

Das Maildir Format

Ein Mailfolder (manchmal auch Mailordner genannt) besteht auf unseren SUNs aus einem Verzeichnis, das den Namen des Folders trägt. Dort gibt es drei Unterverzeichnisse
new
In diesem Verzeichnis befinden sich die neuen (ungelesenen) Mails.
cur
Hier befinden sich die gelesenen, aber (noch) nicht gelöschten Mails.
tmp
Dieses Unterverzeichnis kann für dieses Blatt ignoriert werden.
Jede Datei in cur oder new, deren Namen nicht mit einem Punkt beginnt, enthält genau eine Mail. Ein Beispiel für einen solchen Mailfolder ist Eure Inbox, die sich in der Regel im Unterverzeichnis mailbox/inbox/ im Heimatverzeichnis befindet. Dieses Mailfolder-Format trägt den Namen Maildir. Auf anderen Systemen kann es sein, daß Mailfolder anders organisiert sind.

Mails

Mails bestehen aus einer Reihe von Headerzeilen, dann folgt eine Leerzeile und der eigentliche Inhalt der Mail. Der Header enthält Dinge wie den Absender (eine Zeile, die mit ``From: '' beginnt) und das Subject (eine Zeile, die mit ``Subject: '' beginnt) der Mail.

Aufgabe

Eure Aufgabe ist es, ein Programm zu schreiben, das von allen Mails in einem Folder folgende Informationen anzeigt:

Dazu werden zwei Dinge benötigt:

Einträge in einem Verzeichnis

Um die Einträge in einem bestimmten Verzeichnis zu erhalten, muß zuerst das Verzeichnis geöffnet werden. Dazu dient die Funktion opendir. Übergibt man dieser Funktion den Namen eines Verzeichnisses, dann liefert sie einen Zeiger auf eine Datenstruktur vom Typ DIR zurück. Übergibt man diesen Zeiger an die Funktion readdir, so erhält man bei jedem Aufruf einen Zeiger auf eine Struktur vom Typ struct dirent (man dirent). Diese Struktur enthält im Feld d_name den Namen des jeweils nächsten Verzeichniseintrags. Am Ende sollte das Verzeichnis mit der Funktion closedir wieder geschlossen werden.

Lesen aus Dateien

Wie aus Modula oder Oberon bekannt, muß eine Datei zunächst geöffnet werden. Dazu dient die Funktion fopen(3C). Neben dem Pfadnamen der Datei muß dieser Funktion noch ein zweiter String übergeben werden, der angibt, ob die Datei zum Lesen (``r'') oder zum Schreiben (``w'') geöffnet wird. Der Rückgabewert von fopen ist ein Zeiger auf eine Struktur vom Typ FILE. Dieser Zeiger kann z.B. an fgets oder fscanf übergeben werden, um anzugeben, aus welcher Datei gelesen werden soll. Zum Schluß sollte eine geöffnete Datei mit fclose wieder geschlossen werden.



Christian Ehrhardt 2005-01-13