]> git.saurik.com Git - android/aapt.git/commitdiff
Fix to compile for windows
authorJosiah Gaskin <josiahgaskin@google.com>
Thu, 21 Jul 2011 00:33:08 +0000 (17:33 -0700)
committerJosiah Gaskin <josiahgaskin@google.com>
Thu, 21 Jul 2011 01:22:26 +0000 (18:22 -0700)
This change includes a workaround for dirent.h on windows not
including d_type.

Change-Id: Ieaa3f298d2e6b32f2d8367384a1d02a2f5d06cca

FileFinder.cpp
FileFinder.h

index a1f64d017bb0ae19097a65502d8168d4542b7456..580528d29a823408d6fc43a1e096d3201aac30a8 100644 (file)
@@ -9,8 +9,9 @@
 #include <utils/String8.h>
 #include <utils/KeyedVector.h>
 
-
 #include <iostream>
+#include <dirent.h>
+#include <sys/stat.h>
 
 #include "DirectoryWalker.h"
 #include "FileFinder.h"
@@ -21,6 +22,25 @@ using android::String8;
 using std::cout;
 using std::endl;
 
+// Private function to check whether a file is a directory or not
+bool isDirectory(const char* filename) {
+    struct stat fileStat;
+    if (stat(filename, &fileStat) == -1) {
+        return false;
+    }
+    return(S_ISDIR(fileStat.st_mode));
+}
+
+
+// Private function to check whether a file is a regular file or not
+bool isFile(const char* filename) {
+    struct stat fileStat;
+    if (stat(filename, &fileStat) == -1) {
+        return false;
+    }
+    return(S_ISREG(fileStat.st_mode));
+}
+
 bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
                                  KeyedVector<String8,time_t>& fileStore,
                                  DirectoryWalker* dw)
@@ -45,14 +65,14 @@ bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
 
         String8 fullPath = basePath.appendPathCopy(entryName);
         // If this entry is a directory we'll recurse into it
-        if (entry->d_type == DT_DIR) {
+        if (isDirectory(fullPath.string()) ) {
             DirectoryWalker* copy = dw->clone();
             findFiles(fullPath, extensions, fileStore,copy);
             delete copy;
         }
 
         // If this entry is a file, we'll pass it over to checkAndAddFile
-        if (entry->d_type == DT_REG) {
+        if (isFile(fullPath.string()) ) {
             checkAndAddFile(fullPath,dw->entryStats(),extensions,fileStore);
         }
     }
@@ -89,4 +109,5 @@ void SystemFileFinder::checkAndAddFile(String8 path, const struct stat* stats,
 #ifdef DEBUG
     cout << endl;
 #endif //DEBUG
-}
\ No newline at end of file
+}
+
index 3f87aba0a0848597434eb4b4e48a084b2a635cb7..6974aee033a874db39e6e4eb94b9f603c186f375 100644 (file)
@@ -25,6 +25,8 @@ public:
     virtual bool findFiles(String8 basePath, Vector<String8>& extensions,
                            KeyedVector<String8,time_t>& fileStore,
                            DirectoryWalker* dw) = 0;
+
+    virtual ~FileFinder() {};
 };
 
 class SystemFileFinder : public FileFinder {