summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/unix/dir_access_unix.cpp4
-rw-r--r--drivers/unix/dir_access_unix.h3
-rw-r--r--drivers/windows/dir_access_windows.cpp29
-rw-r--r--drivers/windows/dir_access_windows.h3
4 files changed, 39 insertions, 0 deletions
diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp
index 7284226ae7..e011176806 100644
--- a/drivers/unix/dir_access_unix.cpp
+++ b/drivers/unix/dir_access_unix.cpp
@@ -407,6 +407,10 @@ size_t DirAccessUnix::get_space_left() {
#endif
};
+String DirAccessUnix::get_filesystem_type() const {
+ return ""; //TODO this should be implemented
+}
+
DirAccessUnix::DirAccessUnix() {
dir_stream = 0;
diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h
index 4da7e42b64..b85ae719ff 100644
--- a/drivers/unix/dir_access_unix.h
+++ b/drivers/unix/dir_access_unix.h
@@ -82,6 +82,9 @@ public:
virtual size_t get_space_left();
+ virtual String get_filesystem_type() const;
+
+
DirAccessUnix();
~DirAccessUnix();
};
diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp
index c20f707684..c32e063736 100644
--- a/drivers/windows/dir_access_windows.cpp
+++ b/drivers/windows/dir_access_windows.cpp
@@ -346,6 +346,35 @@ size_t DirAccessWindows::get_space_left() {
return (size_t)bytes;
}
+String DirAccessWindows::get_filesystem_type() const {
+ String path = fix_path(const_cast<DirAccessWindows*>(this)->get_current_dir());
+ print_line("fixed path: "+path);
+ int unit_end = path.find(":");
+ ERR_FAIL_COND_V(unit_end==-1,String());
+ String unit = path.substr(0,unit_end+1) + "\\";
+ print_line("unit: "+unit);
+
+ TCHAR szVolumeName[100] = "";
+ TCHAR szFileSystemName[10] = "";
+ DWORD dwSerialNumber = 0;
+ DWORD dwMaxFileNameLength = 0;
+ DWORD dwFileSystemFlags = 0;
+
+ if(::GetVolumeInformation(unit.utf8().get_data(),
+ szVolumeName,
+ sizeof(szVolumeName),
+ &dwSerialNumber,
+ &dwMaxFileNameLength,
+ &dwFileSystemFlags,
+ szFileSystemName,
+ sizeof(szFileSystemName)) == TRUE) {
+
+ return String(szFileSystemName);
+ }
+
+ ERR_FAIL_V("");
+}
+
DirAccessWindows::DirAccessWindows() {
p = memnew(DirAccessWindowsPrivate);
diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h
index 2e2d23f4e2..b8599d5c26 100644
--- a/drivers/windows/dir_access_windows.h
+++ b/drivers/windows/dir_access_windows.h
@@ -82,6 +82,9 @@ public:
//virtual FileType get_file_type() const;
size_t get_space_left();
+ virtual String get_filesystem_type() const;
+
+
DirAccessWindows();
~DirAccessWindows();
};