Merge pull request #459 from marynate/PR-diracccess-dir-exists
Add DirAccess:dir_exist api
This commit is contained in:
commit
bb0dd1c5f9
13 changed files with 118 additions and 2 deletions
|
|
@ -81,6 +81,26 @@ bool DirAccessUnix::file_exists(String p_file) {
|
|||
|
||||
}
|
||||
|
||||
bool DirAccessUnix::dir_exists(String p_dir) {
|
||||
|
||||
GLOBAL_LOCK_FUNCTION
|
||||
|
||||
|
||||
if (p_dir.is_rel_path())
|
||||
p_dir=current_dir+"/"+p_dir;
|
||||
else
|
||||
p_dir=fix_path(p_dir);
|
||||
|
||||
struct stat flags;
|
||||
bool success = (stat(p_dir.utf8().get_data(),&flags)==0);
|
||||
|
||||
if (success && S_ISDIR(flags.st_mode))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
uint64_t DirAccessUnix::get_modified_time(String p_file) {
|
||||
|
||||
if (p_file.is_rel_path())
|
||||
|
|
|
|||
|
|
@ -66,7 +66,9 @@ public:
|
|||
virtual String get_current_dir(); ///< return current dir location
|
||||
virtual Error make_dir(String p_dir);
|
||||
|
||||
virtual bool file_exists(String p_file);
|
||||
virtual bool file_exists(String p_file);
|
||||
virtual bool dir_exists(String p_dir);
|
||||
|
||||
virtual uint64_t get_modified_time(String p_file);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -303,6 +303,39 @@ bool DirAccessWindows::file_exists(String p_file) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool DirAccessWindows::dir_exists(String p_dir) {
|
||||
|
||||
GLOBAL_LOCK_FUNCTION
|
||||
|
||||
if (!p_dir.is_abs_path())
|
||||
p_dir=get_current_dir()+"/"+p_dir;
|
||||
p_dir=fix_path(p_dir);
|
||||
|
||||
p_dir.replace("/","\\");
|
||||
|
||||
if (unicode) {
|
||||
|
||||
DWORD fileAttr;
|
||||
|
||||
fileAttr = GetFileAttributesW(p_dir.c_str());
|
||||
if (0xFFFFFFFF == fileAttr)
|
||||
return false;
|
||||
|
||||
return (fileAttr&FILE_ATTRIBUTE_DIRECTORY);
|
||||
|
||||
} else {
|
||||
DWORD fileAttr;
|
||||
|
||||
fileAttr = GetFileAttributesA(p_dir.ascii().get_data());
|
||||
if (0xFFFFFFFF == fileAttr)
|
||||
return false;
|
||||
return (fileAttr&FILE_ATTRIBUTE_DIRECTORY);
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Error DirAccessWindows::rename(String p_path,String p_new_path) {
|
||||
|
||||
p_path=fix_path(p_path);
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ public:
|
|||
|
||||
|
||||
virtual bool file_exists(String p_file);
|
||||
virtual bool dir_exists(String p_dir);
|
||||
|
||||
virtual Error make_dir(String p_dir);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue