diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-02-20 23:01:44 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-02-20 23:01:44 -0300 |
commit | f2a068984c36de1f77940ae9d5dc0d017b8e642d (patch) | |
tree | 870fc023ade48d3817624b32b301105e0b86bb9e /platform/flash/dir_access_flash.cpp | |
parent | 51c55b237b795fa4c085841dbf935c0bd103d5c7 (diff) |
-run script in editor
-add search docs dialog that returns places string was found
-added flash
Diffstat (limited to 'platform/flash/dir_access_flash.cpp')
-rw-r--r-- | platform/flash/dir_access_flash.cpp | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/platform/flash/dir_access_flash.cpp b/platform/flash/dir_access_flash.cpp new file mode 100644 index 0000000000..a0f1679243 --- /dev/null +++ b/platform/flash/dir_access_flash.cpp @@ -0,0 +1,191 @@ +/*************************************************/ +/* dir_access_psp.cpp */ +/*************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/*************************************************/ +/* Source code within this file is: */ +/* (c) 2007-2010 Juan Linietsky, Ariel Manzur */ +/* All Rights Reserved. */ +/*************************************************/ + +#include "dir_access_flash.h" + +#include "print_string.h" + +DirAccess* DirAccessFlash::create_flash() { + + return memnew( DirAccessFlash ); +}; + +void DirAccessFlash::make_default() { + + instance_func=create_flash; +} + + +bool DirAccessFlash::list_dir_begin() { + + list_dir_end(); + + dir_stream = opendir(current_dir.utf8().get_data()); + if (!dir_stream) + return true; //error! + + return false; +}; + +String DirAccessFlash::get_next() { + + if (!dir_stream) + return ""; + dirent *entry; + + entry=readdir(dir_stream); + + if (entry==NULL) { + + list_dir_end(); + return ""; + } + + //typedef struct stat Stat; + struct stat flags; + + String fname; + if (fname.parse_utf8(entry->d_name)) + fname=entry->d_name; //no utf8, maybe latin? + + String f=current_dir+"/"+fname; + + if (stat(f.utf8().get_data(),&flags)==0) { + + if (S_ISDIR(flags.st_mode)) { + + _cisdir=true; + + } else { + + _cisdir=false; + } + + } else { + + _cisdir=false; + + } + + return fname; +}; + +bool DirAccessFlash::current_is_dir() const { + + return _cisdir; +}; + +void DirAccessFlash::list_dir_end() { + + if (dir_stream) + closedir(dir_stream); + dir_stream=0; + _cisdir=false; +}; + +int DirAccessFlash::get_drive_count() { + + return 1; +}; + +String DirAccessFlash::get_drive(int p_drive) { + + return "host0"; +}; + +Error DirAccessFlash::change_dir(String p_dir) { + + if (p_dir==".") + return OK; + + + if (p_dir.is_rel_path()) + current_dir+="/"+p_dir; + else + current_dir=fix_path(p_dir); + + current_dir=current_dir.simplify_path(); + if (current_dir.length()>1 && current_dir.ends_with("/") && !current_dir.ends_with("//")) + current_dir=current_dir.substr(0,current_dir.length()-1); + + return OK; + +}; + +String DirAccessFlash::get_current_dir() { + + return current_dir; +}; + + +uint64_t DirAccessFlash::get_modified_time(String p_file) { + + return 0; +}; + +Error DirAccessFlash::make_dir(String p_dir) { + + return ERR_UNAVAILABLE; +}; + +bool DirAccessFlash::file_exists(String p_file) { + + GLOBAL_LOCK_FUNCTION + + + if (p_file.is_rel_path()) + p_file=current_dir+"/"+p_file; + else + p_file=fix_path(p_file); + + struct stat flags; + bool success = (stat(p_file.utf8().get_data(),&flags)==0); + + if (success && S_ISDIR(flags.st_mode)) { + success=false; + } + + return success; +}; + +size_t DirAccessFlash::get_space_left() { + + return 0; +}; + +Error DirAccessFlash::rename(String p_from, String p_to) { + + return FAILED; +}; + +Error DirAccessFlash::remove(String p_name) { + + return FAILED; +}; + +extern char* psp_drive; + +DirAccessFlash::DirAccessFlash() { + + dir_stream=0; + current_dir="."; + _cisdir=false; + + /* determine drive count */ + + change_dir(current_dir); +} + +DirAccessFlash::~DirAccessFlash() { + + list_dir_end(); +}; + |