Datum und Zeit von Dateien

FTP.COM ist in der Lage, Datums- und Zeitstempel von Dateien in beide Richtungen automatisch zu übertragen. Diese Funktionalität erfordert natürlich ein CP/M System, welches diese Informationen auch bereitstellen kann. Da es dafür keine allgemein gültigen Standards gibt und die Erkennung der vielen verschiedenen Nachrüstungen durch diverse CP/M Erweiterungen aufwendig und mit meinem System nicht testbar ist, beschränkt sich die Unterstützung von Datums- und Zeitstempeln von Dateien auf CP/M Systeme, welche ZSDOS/ZDDOS als BDOS-Ersatz verwenden.

Das ist diesmal auch nicht nur auf den KC85 beschränkt, sondern gilt für alle Systeme, wo das CP/M-Programm eingesetzt werden kann. Beim Start von FTP.COM wird die vorhandene CP/M-Version speziell auf ZSDOS/ZDDOS getestet, so wie das im Handbuch für den Programmierer beschrieben wird. Die definierten BDOS-Funktionen von ZSDOS/ZDDOS für das Lesen und Schreiben von Datum und Zeit sind aber nur eine Voraussetzung. Damit das Sinn macht, muss das System bei Benutzung auch richtig funktionieren. Die Systemuhr inklusive Datum sollte daher immer laufen und richtig gestellt sein und auch in die RAM-Floppy des KC gehört eine !!!TIME&.DAT, sonst können dort keine Stempel für Dateien geschrieben bzw. gelesen werden!

Wenn unter CP/M eine Unterstützung von Datum und Zeit für Dateien vorhanden ist, hat man aber erst 50% der notwendigen Vorbedingungen erfüllt, da der FTP-Server diese Informationen auch übertragen muss. Das FTP-Protokoll hat es leider bis heute (2010), trotz seiner sehr langen Geschichte, noch nicht geschafft, einen offiziellen und damit einheitlichen Weg in den gültigen RFC's zu definieren, die Datums- und Zeitinformationen von Dateien serverseitig zu übernehmen.

Für das Lesen dieser Informationen beim Herunterladen von Dateien vom Server sind bereits 2 Protokollerweiterungen vorhanden. Mit MDTM oder dem "modify-fact" des MLST-Befehles, beide wurden in RFC 3659 definiert, kann man das Datum und die Zeit der letzten Änderung von Dateien erfahren. FTP.COM benutzt intern immer den MDTM-Befehl, welcher vom Server daher auch unterstützt werden muss! Ist das der Fall, wird diese Information vom Server nach dem Download einer Datei angefordert und lokal in das CP/M-Dateisystem übernommen, wenn alle anderen Voraussetzungen erfüllt sind.

Da es für das Schreiben von Datum und Zeit in serverseitige Dateien keinen offiziellen Weg gibt, versucht FTP.COM mit Hilfe mehrerer (inoffizieller) Methoden, diese Informationen trotzdem zu übertragen.

Schreiben der "Create Time" (Erstellung):

MFCT YYYYMMDDhhmmss pathname

Schreiben der "Modify Time" (letzte Änderung) mit einem der folgenden Befehle in dieser Reihenfolge:

MFMT YYYYMMDDhhmmss pathname

SITE UTIME pathname YYYYMMDDhhmmss YYYYMMDDhhmmss YYYYMMDDhhmmss UTC

SITE UTIME YYYYMMDDhhmmss pathname

Da die Zeitstempel unter ZSDOS/ZDDOS kein Sekundenfeld besitzen, wird der Wert von "ss" beim Senden immer mit 0 gefüllt und beim Empfangen nicht beachtet. Die Daten für das Datum und die Zeit werden nie verändert oder beispielsweise in lokale Zeitangaben konvertiert, da CP/M Systeme keine Lokalisierung unterstützen.

Wie man sehen kann, hängt die Erkennung und Aktivierung der Unterstützung von Datums- und Zeitstempeln von Dateien sowohl von lokal vorhandenen Bedingungen ab, als auch von den Fähigkeiten des FTP-Servers. Der ganze Prozess wirkt nach aussen etwas undurchsichtig und wird daher von FTP.COM intern vollautomatisch verwaltet. Der Bediener des Programmes kann daher weder die Erkennung und Aktivierung, noch die Nutzung von Stempelinformationen beeinflussen.

Die Aktivierung wird immer dann umgeschaltet, wenn die Login-Sequenz nach der Anmeldung am Server abgearbeitet wird. Erst dann können die Fähigkeiten des Servers abgefragt werden und wenn alle Voraussetzungen erfüllt sind, erfolgt eine Aktivierung. Eine aktivierte Unterstützung von Stempelinformationen führt immer zur Übertragung, das kann nicht ausgeschaltet werden.

Mit Hilfe des STATUS Kommandos von FTP.COM kann man sich anzeigen lassen, ob die Übertragung von Stempelinformationen aktiviert ist. Das macht allerdings nur Sinn, wenn eine Verbindung zum FTP-Server besteht und die Anmeldung erfolgreich ausgeführt wurde. Die beiden folgenden Zeilen der STATUS-Ausgabe zeigen die Unterstützung an, welche bei ON ein- und bei OFF ausgeschaltet ist, jeweils getrennt für das Senden bzw. Empfangen von Dateien:

Recv File Date/Time : ON/OFF
Send File Date/Time : ON/OFF

Im folgenden Beispielbild sieht man die vollständige Ausgabe des STATUS Kommandos mit aktivierter Unterstützung in beide Übertragungsrichtungen. Anschliessend wurde eine Datei vom Server mit Hilfe des GET Befehles heruntergeladen. Wenn die Stempelinformationen fehlerfrei gelesen bzw. geschrieben werden können, gibt FTP.COM eine"Dated"-Meldung nach jeder Übertragung aus. Das funktioniert bei den PUT-Befehlen genauso.

Wenn diese Meldung ausgegeben wird, kann man davon ausgehen, dass die Stempelinformationen erfolgreich übertragen werden konnten. Traten an irgendeiner Stelle der Übertragungskette Probleme auf, erfolgt auch keine Meldung. Ist z.B. die Stempeldatei !!!TIME&.DAT auf dem aktuellen CP/M-Laufwerk nicht vorhanden, meldet ZSDOS/ZDDOS einen Fehler. Die Meldung bleibt dann auch aus, selbst wenn die Unterstützung von Stempelinformationen laut STATUS aktiviert ist.

 

STATUS und GET Kommando