Thread Feststellung ob Dateisystem casesensitive ist (4 answers)
Opened by bianca at 2011-08-12 17:51

murphy
 2011-08-12 18:30
#151545 #151545
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Das Betriebssystem alleine ist sicherlich kein zuverlässiger Anhaltspunkt.

Auch unter Windows kann man Dateisysteme einbinden, die einen Unterschied zwischen Groß- und Kleinschreibung machen. Umgekehrt haben auch andere Betriebssysteme Dateisysteme, denen das egal ist, zum Beispiel unterscheidet HFS+, das Standarddateisystem bei MacOS X, in seiner Standardkonfiguration beim Auffinden von Dateien nicht zwischen Groß- und Kleinschreibung im Namen, ganz ähnlich wie unter Windows. Bei HFS+ kann man das Verhalten allerdings für jeden eingebundenen Datenträger gesondert umstellen. Auch wenn in der Unixwelt lokale Dateisysteme in der Regel Groß- und Kleinschreibung unterscheiden, so ist das doch wiederum bei populären Netzwerkdateisystemen wie CIFS nicht der Fall, selbst wenn das eigentliche, den Netzwerkspeicher implementierende Medium ein Dateisystem mit Unterscheidung zwischen Groß- und Kleinschreibung verwendet.

Die Situation ist also ziemlich verzwickt und mir ist keine irgendwie standardisierte Schnittstelle bekannt, mit der man diese Information über ein Dateisystem abfragen könnte.

Ich denke, die einzige wirklich zuverlässige Möglichkeit der Abfrage ist daher das Anlegen von Dateien mit Testnamen um die Eigenschaften eines Dateisystems zu bestimmen. Eine mögliche Strategie könnte so aussehen:
  • Erstelle ein temporäres Verzeichnis auf dem fraglichen Dateisystem
  • Erstelle darin eine Datei mit dem Namen Foo
  • Prüfe das Ergebnis von fstat(3) auf der geöffneten Datei:
    • Ist der ausgelesene Dateiname immer noch Foo, so erhält das Dateisystem bei der Erstellung die Groß- und Kleinschreibung des Dateinamens.
    • Ist der Name jetzt foo, so faltet das Dateisystem bei der Erstellung die Dateinamen in Kleinschreibung.
    • Ist der Name jetzt FOO, so faltet das Dateisystem bei der Erstellung die Dateinamen in Großschreibung.
  • Versuche, die Datei in fOo umzubenennen. Im Erfolgsfall erlaubt das Dateisystem die Veränderung der Groß- und Kleinschreibung des Dateinamens.
  • Versuche, die Datei als foO zu öffnen. Im Erfolgsfall faltet das Dateisystem beim Öffnen die Dateinamen in einheitliche Groß- und Kleinschreibung.
When C++ is your hammer, every problem looks like your thumb.

View full thread Feststellung ob Dateisystem casesensitive ist