2008-06-25 Tor Arne Vestbø <tavestbo@trolltech.com>
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jul 2008 10:41:03 +0000 (10:41 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jul 2008 10:41:03 +0000 (10:41 +0000)
        Reviewed by Simon.

        Add an abstraction for listing files in a directory to FileSystem.h.

        Currently this is only implemented for the Qt and GTK port. The other
        ports have a default implementations which call notImplemented().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@34999 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/platform/FileSystem.h
WebCore/platform/gtk/FileSystemGtk.cpp
WebCore/platform/mac/FileSystemMac.mm
WebCore/platform/posix/FileSystemPOSIX.cpp
WebCore/platform/qt/FileSystemQt.cpp
WebCore/platform/win/FileSystemWin.cpp
WebCore/platform/wx/FileSystemWx.cpp

index 55ae0b05212261a6866e9ad10d083f61e0cd8e0b..3579a5fcb170b5f828d453be1ca55d5165df8591 100644 (file)
 #include <time.h>
 
 #include <wtf/Platform.h>
+#include <wtf/Vector.h>
+
+#include "PlatformString.h"
 
 typedef const struct __CFData* CFDataRef;
 
 namespace WebCore {
 
 class CString;
-class String;
 
 #if PLATFORM(WIN)
 typedef HANDLE PlatformFileHandle;
@@ -125,6 +127,8 @@ String homeDirectoryPath();
 String pathGetFileName(const String&);
 String directoryName(const String&);
 
+Vector<String> listDirectory(const String& path, const String& filter = String());
+
 CString fileSystemRepresentation(const String&);
 
 inline bool isHandleValid(const PlatformFileHandle& handle) { return handle != invalidPlatformFileHandle; }
index d79f2cd534fd2f6a6378fc922cb5e410fa8218e3..fe0034da19be2a7cba440f21c9f230bce2938963 100644 (file)
@@ -146,6 +146,28 @@ String directoryName(const String& path)
     return String();
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+
+    GDir* dir = g_dir_open((path.utf8()).data(), 0, 0);
+    if (!dir)
+        return entries;
+
+    GPatternSpec *pspec = g_pattern_spec_new((filter.utf8()).data());
+    while (const char* name = g_dir_read_name(dir)) {
+        if (!g_pattern_match_string(pspec, name))
+            continue;
+
+        gchar* entry = g_build_filename((path.utf8()).data(), name, NULL);
+        entries.append(entry);
+        g_free(entry);
+    }
+    g_dir_close(dir);
+
+    return entries;
+}
+
 CString openTemporaryFile(const char* prefix, PlatformFileHandle& handle)
 {
     gchar* filename = g_strdup_printf("%sXXXXXX", prefix);
index 98f85bb29f9c729c3eb6e3254cb682173e6223ef..74d93a214c08e87ab408adcfcd46ae0ecd3420d3 100644 (file)
@@ -37,4 +37,11 @@ String homeDirectoryPath()
     return NSHomeDirectory();
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+    notImplemented();
+    return entries;
+}
+
 } // namespace WebCore
index 7d6da641e784cdd5398296d85055a48e1771dc71..e00687e38935a070cceb7be8774937611490e84a 100644 (file)
@@ -157,4 +157,11 @@ String directoryName(const String& path)
     return dirname(fsRep.mutableData());
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+    notImplemented();
+    return entries;
+}
+
 } // namespace WebCore
index e1c47b629b6ccb80e1084a5e60e40291acb53dca..6fcb2ae0eb70f051d0d31361ad1c5976331bd8cb 100644 (file)
@@ -100,6 +100,19 @@ String directoryName(const String& path)
     return String(QFileInfo(path).baseName());
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+
+    QFileInfoList fileInfoList = QDir(path).entryInfoList(QStringList(filter));
+    foreach (const QFileInfo fileInfo, fileInfoList) {
+        String entry = String(fileInfo.absoluteFilePath());
+        entries.append(entry);
+    }
+
+    return entries;
+}
+
 CString openTemporaryFile(const char* prefix, PlatformFileHandle& handle)
 {
     QFile *temp = new QTemporaryFile(QString(prefix));
index 4f58c80edfa85fb9309eebdc0fb2c142ff39fc86..5671462d9a557d8ffc54715e656de89d2daf717e 100644 (file)
@@ -297,4 +297,11 @@ bool safeCreateFile(const String& path, CFDataRef data)
     return true;
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+    notImplemented();
+    return entries;
+}
+
 } // namespace WebCore
index 4bb77d3541454397994414bace910f6b761a38c7..7de425eaeb6e9b7d3616615e0264071df7d9f710 100644 (file)
@@ -121,4 +121,11 @@ bool unloadModule(PlatformModule)
     return false;
 }
 
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+    notImplemented();
+    return entries;
+}
+
 }