Ich habe da ein Programm, das individualisierte Vorschaudateien von Videos erstellt. Da gibt es aber ein Problem mit der Veränderungszeit, wenn das Dateisystem VFAT oder auch exFAT (das ist jetzt das Problem)) ist.
Das Problem besteht bei VFAT darin, dass es nur 2 Sekunden Auflösung hat, Linux aber ein virtuelles Dateisystem darüber legt, wodurch die vorgegaulketen Metadaten nach einem Reboot verändert erscheinen. Bei VFAT versuche ich dem vorzubeugen indem ich bei erkanntem VFAT ungerade Veränderungszeiten durch Abrunden verhindere:
if( statfs( cwd, &fs_data ) == 0 ) { // try to detect the file system type
if( fs_data.f_type == MSDOS_SUPER_MAGIC ) // 0x4d44
vfat = true;
}
Das funktioniert bisher. Aber ich kann in der Dokumentation von [(https://www.man7.org/linux/man-pages/man2/statfs.2.html) statfs] nichts erkennen, was auf exFAT hindeutet.
Aus anderen Quellen weiß ich, dass exFAT im Prinzip 1/100 Zeitauflösung kann (als Offset zu dem 2 sec Zeitstempel), dies aber nicht von allen Treibern weiter gereicht wird. Da möchte ich dann, beim Kopieren, auch eine Vorwärtskorrektur erreichen.
Beim Kopieren ist das ja recht einfach zu erreichen, indem man den Zeitstempel nach dem Kopieren korrigiert, wozu ich exFAT aber erstmal erkennen müsste.
Hintergrund Info: Vorschaudateien werden von Dateimanagern nur dann als gültig angesehen, wenn der darin angegebene Zeitstempel mit der tatsächlichen Veränderungszeit übereinstimmt (eigentlich nur ganze Sekunden).
[(https://blog.1234n6.com/exfat-timestamp-behavior-associated-with-different-operating-systems/)]