Index: src/utils/SkOSFile.cpp |
diff --git a/src/utils/SkOSFile.cpp b/src/utils/SkOSFile.cpp |
index 04a4fe910e9ae2da0f9ed1fd604a8cb638891ed7..cb12c2b6ae5190909aa700088e1764a98a7adc73 100644 |
--- a/src/utils/SkOSFile.cpp |
+++ b/src/utils/SkOSFile.cpp |
@@ -42,212 +42,3 @@ SkString SkOSPath::Dirname(const char* fullPath) { |
} |
return SkString(fullPath, end - fullPath); |
} |
- |
-#ifdef SK_BUILD_FOR_WIN |
- |
-static uint16_t* concat_to_16(const char src[], const char suffix[]) |
-{ |
- size_t i, len = strlen(src); |
- size_t len2 = 3 + (suffix ? strlen(suffix) : 0); |
- uint16_t* dst = (uint16_t*)sk_malloc_throw((len + len2) * sizeof(uint16_t)); |
- |
- for (i = 0; i < len; i++) |
- dst[i] = src[i]; |
- |
- if (i > 0 && dst[i-1] != '/') |
- dst[i++] = '/'; |
- dst[i++] = '*'; |
- |
- if (suffix) |
- { |
- while (*suffix) |
- dst[i++] = *suffix++; |
- } |
- dst[i] = 0; |
- SkASSERT(i + 1 <= len + len2); |
- |
- return dst; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////// |
- |
-SkOSFile::Iter::Iter() : fHandle(0), fPath16(NULL) |
-{ |
-} |
- |
-SkOSFile::Iter::Iter(const char path[], const char suffix[]) : fHandle(0), fPath16(NULL) |
-{ |
- this->reset(path, suffix); |
-} |
- |
-SkOSFile::Iter::~Iter() |
-{ |
- sk_free(fPath16); |
- if (fHandle) |
- ::FindClose(fHandle); |
-} |
- |
-void SkOSFile::Iter::reset(const char path[], const char suffix[]) |
-{ |
- if (fHandle) |
- { |
- ::FindClose(fHandle); |
- fHandle = 0; |
- } |
- if (NULL == path) |
- path = ""; |
- |
- sk_free(fPath16); |
- fPath16 = concat_to_16(path, suffix); |
-} |
- |
-static bool is_magic_dir(const uint16_t dir[]) |
-{ |
- // return true for "." and ".." |
- return dir[0] == '.' && (dir[1] == 0 || dir[1] == '.' && dir[2] == 0); |
-} |
- |
-static bool get_the_file(HANDLE handle, SkString* name, WIN32_FIND_DATAW* dataPtr, bool getDir) |
-{ |
- WIN32_FIND_DATAW data; |
- |
- if (NULL == dataPtr) |
- { |
- if (::FindNextFileW(handle, &data)) |
- dataPtr = &data; |
- else |
- return false; |
- } |
- |
- for (;;) |
- { |
- if (getDir) |
- { |
- if ((dataPtr->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && !is_magic_dir((uint16_t*)dataPtr->cFileName)) |
- break; |
- } |
- else |
- { |
- if (!(dataPtr->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) |
- break; |
- } |
- if (!::FindNextFileW(handle, dataPtr)) |
- return false; |
- } |
- // if we get here, we've found a file/dir |
- if (name) |
- name->setUTF16((uint16_t*)dataPtr->cFileName); |
- return true; |
-} |
- |
-bool SkOSFile::Iter::next(SkString* name, bool getDir) |
-{ |
- WIN32_FIND_DATAW data; |
- WIN32_FIND_DATAW* dataPtr = NULL; |
- |
- if (fHandle == 0) // our first time |
- { |
- if (fPath16 == NULL || *fPath16 == 0) // check for no path |
- return false; |
- |
- fHandle = ::FindFirstFileW((LPCWSTR)fPath16, &data); |
- if (fHandle != 0 && fHandle != (HANDLE)~0) |
- dataPtr = &data; |
- } |
- return fHandle != (HANDLE)~0 && get_the_file(fHandle, name, dataPtr, getDir); |
-} |
- |
-#elif defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_IOS) |
- |
-#if 0 |
-OSStatus FSPathMakeRef ( |
- const UInt8 * path, |
- FSRef * ref, |
- Boolean * isDirectory |
-); |
-#endif |
- |
-SkOSFile::Iter::Iter() : fDIR(0) |
-{ |
-} |
- |
-SkOSFile::Iter::Iter(const char path[], const char suffix[]) : fDIR(0) |
-{ |
- this->reset(path, suffix); |
-} |
- |
-SkOSFile::Iter::~Iter() |
-{ |
- if (fDIR) |
- ::closedir(fDIR); |
-} |
- |
-void SkOSFile::Iter::reset(const char path[], const char suffix[]) |
-{ |
- if (fDIR) |
- { |
- ::closedir(fDIR); |
- fDIR = 0; |
- } |
- |
- fPath.set(path); |
- if (path) |
- { |
- fDIR = ::opendir(path); |
- fSuffix.set(suffix); |
- } |
- else |
- fSuffix.reset(); |
-} |
- |
-// returns true if suffix is empty, or if str ends with suffix |
-static bool issuffixfor(const SkString& suffix, const char str[]) |
-{ |
- size_t suffixLen = suffix.size(); |
- size_t strLen = strlen(str); |
- |
- return strLen >= suffixLen && |
- memcmp(suffix.c_str(), str + strLen - suffixLen, suffixLen) == 0; |
-} |
- |
-#include <sys/stat.h> |
- |
-bool SkOSFile::Iter::next(SkString* name, bool getDir) |
-{ |
- if (fDIR) |
- { |
- dirent* entry; |
- |
- while ((entry = ::readdir(fDIR)) != NULL) |
- { |
- struct stat s; |
- SkString str(fPath); |
- |
- if (!str.endsWith("/") && !str.endsWith("\\")) |
- str.append("/"); |
- str.append(entry->d_name); |
- |
- if (0 == stat(str.c_str(), &s)) |
- { |
- if (getDir) |
- { |
- if (s.st_mode & S_IFDIR) |
- break; |
- } |
- else |
- { |
- if (!(s.st_mode & S_IFDIR) && issuffixfor(fSuffix, entry->d_name)) |
- break; |
- } |
- } |
- } |
- if (entry) // we broke out with a file |
- { |
- if (name) |
- name->set(entry->d_name); |
- return true; |
- } |
- } |
- return false; |
-} |
-#endif // if one of:SK_BUILD_FOR_MAC, SK_BUILD_FOR_UNIX, SK_BUILD_FOR_ANDROID,SK_BUILD_FOR_IOS |