-Changed how Dir works so it's more user friendly, closes #4705

This commit is contained in:
Juan Linietsky 2016-06-18 12:11:48 -03:00
parent e3905a084e
commit d8be671313

View File

@ -1891,6 +1891,13 @@ String _Directory::get_current_dir() {
Error _Directory::make_dir(String p_dir){ Error _Directory::make_dir(String p_dir){
ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED);
if (!p_dir.is_rel_path()) {
DirAccess *d = DirAccess::create_for_path(p_dir);
Error err = d->make_dir(p_dir);
memdelete(d);
return err;
}
return d->make_dir(p_dir); return d->make_dir(p_dir);
} }
Error _Directory::make_dir_recursive(String p_dir){ Error _Directory::make_dir_recursive(String p_dir){
@ -1902,12 +1909,26 @@ Error _Directory::make_dir_recursive(String p_dir){
bool _Directory::file_exists(String p_file){ bool _Directory::file_exists(String p_file){
ERR_FAIL_COND_V(!d,false); ERR_FAIL_COND_V(!d,false);
if (!p_file.is_rel_path()) {
return FileAccess::exists(p_file);
}
return d->file_exists(p_file); return d->file_exists(p_file);
} }
bool _Directory::dir_exists(String p_dir) { bool _Directory::dir_exists(String p_dir) {
ERR_FAIL_COND_V(!d,false); ERR_FAIL_COND_V(!d,false);
return d->dir_exists(p_dir); if (!p_dir.is_rel_path()) {
DirAccess *d = DirAccess::create_for_path(p_dir);
bool exists = d->dir_exists(p_dir);
memdelete(d);
return exists;
} else {
return d->dir_exists(p_dir);
}
} }
int _Directory::get_space_left(){ int _Directory::get_space_left(){
@ -1924,12 +1945,26 @@ Error _Directory::copy(String p_from,String p_to){
Error _Directory::rename(String p_from, String p_to){ Error _Directory::rename(String p_from, String p_to){
ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED);
if (!p_from.is_rel_path()) {
DirAccess *d = DirAccess::create_for_path(p_from);
Error err = d->rename(p_from,p_to);
memdelete(d);
return err;
}
return d->rename(p_from,p_to); return d->rename(p_from,p_to);
} }
Error _Directory::remove(String p_name){ Error _Directory::remove(String p_name){
ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED);
if (!p_name.is_rel_path()) {
DirAccess *d = DirAccess::create_for_path(p_name);
Error err = d->remove(p_name);
memdelete(d);
return err;
}
return d->remove(p_name); return d->remove(p_name);
} }