6.5. Transmitting File Attributes
~略~
# (ASCII 35)
Creation Date, expressed as "[yy]yymmdd[ hh:mm[:ss]]" (ISO standard date format), e.g.
831009 23:59. The time is optional; if given, it should be in 24-hour format, and the seconds may
be omitted, and a single space should separate the time from the date.
Kermitファイル転送で、ファイル属性情報を通知するように KmtFileAttr=on と設定して、ファイル送信時のタイムスタンプを確認すると、Windowsのファイルプロパティーで確認できる「作成日時」が通知されています。できれば「更新日時」を通知して貰いたいです。 どこかで設定変更とか出来たりしますでしょうか? 現在公開の最新版のバージョンでも確認しましたが、同様でした。
以下、動作変更に関するメモ。
規格上の規定
KERMIT PROTOCOL MANUAL Sixth Edition より。
上記のとおり、規格上では作成日時(Creation Date)を使うとされている。
環境、および各実装
Unix系OS, C-Kermit
Unix系OSで使われているファイルシステムでは、ファイル作成日時が記録されていない、またはOS独自の拡張として実装されている為、汎用的に作成日時を取得する方法が無い。
その為、C-Kermit では作成日時ではなく修正日時(st_mtime)を使うようになっている。
Windows95/98/Me, C-Kermit/Kermit95
DOSやWindows95系で使われる FAT も修正日時しかない。その為 C-Kermit, Kermit95ではUnix系OSと同じようにst_mtimeを使う。
Windows95/98/Me, Tera Term
前述したように、FAT では st_mtime しか使えない。しかし WindowsNTのNTFSで st_ctime が作成日時とされた影響なのか、Tera Term では st_ctime を使うようになっている。
FAT では st_ctime が使えないが、実際には st_mtime と同じ値が得られていたと思われる(未確認)為、Windows95系(FAT) で使う分には問題が顕在化しなかったと思われる。
WindowsNT系, Tera Term
ファイルシステムがNTFSとなり st_ctime でファイル作成日時が得られるようになった為、他の実装との間で動作の違いが表に出てきた。
対応
規格上は Tera Term の動作が正しいが、本家の C-Kermit と動作が違うのは望ましく無い為、C-Kermit に合わせて st_mtime を使うように変更する。