Testen, ob Verzeichnis beschreibbar ist (plattformunabhängig)
-
Hallo,
ich möchte eine plattformunabhängige Methode IsWriteable(directory) implementieren. Sie sollte auf Windows und Unix funktionieren, kann intern auch plattformspezifischen Code enthalten.
In dieser Methode will ich nicht testweise eine Datei erzeugen, sondern Betriebssystemfunktionen nutzen.
Hat jemand einen Vorschlag?
P.S.: habe schon gesucht, habe aber kein passendes Beispiel gefunden.
-
bool IsWriteable(const char* directory) { #if defined _WIN32 //windows-code #elif defined UNIX //POSIX-code #else # error bla }oder fehlt es dir an den api-funktionen?
bb
-
GetFileAttributes() mit "Windows.h" für Windows und stat() zusammen mit <sys/stat.h> für Linux
Sebastian Meier schrieb:
P.S.: habe schon gesucht, habe aber kein passendes Beispiel gefunden.
Glaub ich dir kein Wort.
-
@unskilled: ja, die API-Funktionen suche ich
@Rewind: GetFileAttributes() - geht das für Verzeichnisse? Aus der Doku:
FILE_ATTRIBUTE_READONLY
A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories.
http://msdn.microsoft.com/en-us/library/windows/desktop/gg258117(v=vs.85).aspx
-
Das wird wahrscheinlich damit zusammenhängen, dass man auf Windows keine Ordner als "read-only" (im Sinne von
chmod a-wbei Linux) einstellen kann, bin mir aber nicht sicher, ob das bei WinXP noch ging. Ich lasse mich aber gerne eines besseren belehren.
-
Nur auf read-only zu testen reicht ja nicht. Bei Windows müsste man eigentlich die ACL auslesen und darüber die Rechte bestimmen. Das ist nicht gerade trivial.
Es ist schon am Einfachsten einfach zu versuchen was zu schreiben.