]> git.saurik.com Git - wxWidgets.git/commitdiff
use UNIX wxDir if available
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 8 Jan 2002 18:03:14 +0000 (18:03 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 8 Jan 2002 18:03:14 +0000 (18:03 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

distrib/msw/tmake/filelist.txt
src/mgl/dir.cpp [deleted file]
src/mgl/dirmgl.cpp [new file with mode: 0644]
src/mgl/files.lst

index bca3e3d319b3424fc7882ef75d40be517130c173..689de96cab87ca08ba7d30fe5c10d58801258e55 100644 (file)
@@ -352,7 +352,7 @@ wave.cpp    MSW
 window.cpp     MSW     LowLevel
 
 dialup.cpp     Unix    NotMac
-dir.cpp        Unix    Base,NotMac,NotMGL
+dir.cpp        Unix    Base,NotMac
 fontenum.cpp   Unix    NotMac,NotMGL,NotMicro
 fontutil.cpp   Unix    NotMac,NotMGL,NotMicro
 gsocket.c      Unix    Base,NotMac
@@ -1448,7 +1448,7 @@ fontutil.cpp      MGL     LowLevel
 evtloop.cpp    MGL     LowLevel
 app.cpp        MGL     LowLevel
 bitmap.cpp     MGL     LowLevel
-dir.cpp        MGL     LowLevel
+dirmgl.cpp     MGL     LowLevel
 clipbrd.cpp    MGL     LowLevel
 cursor.cpp     MGL     LowLevel
 dcclient.cpp   MGL     LowLevel
diff --git a/src/mgl/dir.cpp b/src/mgl/dir.cpp
deleted file mode 100644 (file)
index c290d3f..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name:        mgl/dir.cpp
-// Purpose:     wxDir implementation for MGL
-// Author:      Vaclav Slavik, Vadim Zeitlin
-// Modified by:
-// Created:     2001/12/09
-// RCS-ID:      $Id$
-// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-//              (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
-// Licence:     wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
-#ifdef __GNUG__
-    #pragma implementation "dir.h"
-#endif
-
-// For compilers that support precompilation, includes "wx.h".
-#include "wx/wxprec.h"
-
-#ifdef __BORLANDC__
-    #pragma hdrstop
-#endif
-
-#ifndef WX_PRECOMP
-    #include "wx/intl.h"
-    #include "wx/log.h"
-#endif // PCH
-
-#include "wx/dir.h"
-#include "wx/filefn.h"          // for wxMatchWild
-#include "wx/mgl/private.h"
-
-// ----------------------------------------------------------------------------
-// macros
-// ----------------------------------------------------------------------------
-
-#define M_DIR       ((wxDirData *)m_data)
-
-// ----------------------------------------------------------------------------
-// private classes
-// ----------------------------------------------------------------------------
-
-// this class stores everything we need to enumerate the files
-class wxDirData
-{
-public:
-    wxDirData(const wxString& dirname);
-    ~wxDirData();
-
-    bool IsOk() const { return m_dir != NULL; }
-
-    void SetFileSpec(const wxString& filespec) { m_filespec = filespec; }
-    void SetFlags(int flags) { m_flags = flags; }
-
-    void Rewind();
-    bool Read(wxString *filename);
-
-    const wxString& GetName() const { return m_dirname; }
-
-private:
-    void    *m_dir;
-
-    wxString m_dirname;
-    wxString m_filespec;
-
-    int      m_flags;
-};
-
-// ============================================================================
-// implementation
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// wxDirData
-// ----------------------------------------------------------------------------
-
-wxDirData::wxDirData(const wxString& dirname)
-         : m_dirname(dirname)
-{
-    m_dir = NULL;
-
-    // throw away the trailing slashes
-    size_t n = m_dirname.length();
-    wxCHECK_RET( n, _T("empty dir name in wxDir") );
-
-    while ( n > 0 && m_dirname[--n] == wxFILE_SEP_PATH ) {}
-
-    m_dirname.Truncate(n + 1);
-}
-
-wxDirData::~wxDirData()
-{
-    if ( m_dir )
-        PM_findClose(m_dir);
-}
-
-void wxDirData::Rewind()
-{
-    if ( m_dir )
-    {
-        PM_findClose(m_dir);
-        m_dir = NULL;
-    }
-}
-
-bool wxDirData::Read(wxString *filename)
-{
-    PM_findData data;
-    bool matches = FALSE;
-
-    data.dwSize = sizeof(data);
-    
-    wxString path = m_dirname;
-    path += wxFILE_SEP_PATH;
-    path.reserve(path.length() + 255); // speed up string concatenation
-
-    while ( !matches )
-    {
-        if ( m_dir )
-        {
-            if ( !PM_findNextFile(m_dir, &data) )
-                return FALSE;
-        }
-        else
-        {
-            m_dir = PM_findFirstFile(path + m_filespec , &data);
-            if ( m_dir == PM_FILE_INVALID )
-            {
-                m_dir = NULL;
-                return FALSE;
-            }
-        }
-
-        // don't return "." and ".." unless asked for
-        if ( data.name[0] == '.' &&
-             ((data.name[1] == '.' && data.name[2] == '\0') ||
-              (data.name[1] == '\0')) )
-        {
-            if ( !(m_flags & wxDIR_DOTDOT) )
-                continue;
-
-            // we found a valid match
-            break;
-        }
-
-        // check the type now
-        if ( !(m_flags & wxDIR_FILES) && !(data.attrib & PM_FILE_DIRECTORY) )
-        {
-            // it's a file, but we don't want them
-            continue;
-        }
-        else if ( !(m_flags & wxDIR_DIRS) && (data.attrib & PM_FILE_DIRECTORY) )
-        {
-            // it's a dir, and we don't want it
-            continue;
-        }
-
-        matches = m_flags & wxDIR_HIDDEN ? TRUE : !(data.attrib & PM_FILE_HIDDEN);
-    }
-
-    *filename = data.name;
-
-    return TRUE;
-}
-
-
-// ----------------------------------------------------------------------------
-// wxDir helpers
-// ----------------------------------------------------------------------------
-
-/* static */
-bool wxDir::Exists(const wxString& dir)
-{
-    return wxPathExists(dir);
-}
-
-// ----------------------------------------------------------------------------
-// wxDir construction/destruction
-// ----------------------------------------------------------------------------
-
-wxDir::wxDir(const wxString& dirname)
-{
-    m_data = NULL;
-
-    (void)Open(dirname);
-}
-
-bool wxDir::Open(const wxString& dirname)
-{
-    delete M_DIR;
-    m_data = NULL;
-    
-    if ( !wxDir::Exists(dirname) )
-    {
-        wxLogError(_("Directory '%s' doesn't exist!"), dirname.c_str());
-        return FALSE;
-    }
-    
-    m_data = new wxDirData(dirname);
-    return TRUE;
-}
-
-bool wxDir::IsOpened() const
-{
-    return m_data != NULL;
-}
-
-wxString wxDir::GetName() const
-{
-    wxString name;
-    if ( m_data )
-    {
-        name = M_DIR->GetName();
-        if ( !name.empty() && (name.Last() == wxFILE_SEP_PATH) )
-        {
-            // chop off the last (back)slash
-            name.Truncate(name.length() - 1);
-        }
-    }
-
-    return name;
-}
-
-wxDir::~wxDir()
-{
-    delete M_DIR;
-}
-
-// ----------------------------------------------------------------------------
-// wxDir enumerating
-// ----------------------------------------------------------------------------
-
-bool wxDir::GetFirst(wxString *filename,
-                     const wxString& filespec,
-                     int flags) const
-{
-    wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") );
-
-    M_DIR->Rewind();
-
-    M_DIR->SetFileSpec(filespec);
-    M_DIR->SetFlags(flags);
-
-    return GetNext(filename);
-}
-
-bool wxDir::GetNext(wxString *filename) const
-{
-    wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") );
-
-    wxCHECK_MSG( filename, FALSE, _T("bad pointer in wxDir::GetNext()") );
-
-    return M_DIR->Read(filename);
-}
-
diff --git a/src/mgl/dirmgl.cpp b/src/mgl/dirmgl.cpp
new file mode 100644 (file)
index 0000000..b6ce6e5
--- /dev/null
@@ -0,0 +1,269 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        mgl/dir.cpp
+// Purpose:     wxDir implementation for MGL
+// Author:      Vaclav Slavik, Vadim Zeitlin
+// Modified by:
+// Created:     2001/12/09
+// RCS-ID:      $Id$
+// Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+//              (c) 2001 SciTech Software, Inc. (www.scitechsoft.com)
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#ifdef __GNUG__
+    #pragma implementation "dir.h"
+#endif
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#include "wx/defs.h"
+
+#ifndef __UNIX__
+
+#ifndef WX_PRECOMP
+    #include "wx/intl.h"
+    #include "wx/log.h"
+#endif // PCH
+
+#include "wx/dir.h"
+#include "wx/filefn.h"          // for wxMatchWild
+#include "wx/mgl/private.h"
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+#define M_DIR       ((wxDirData *)m_data)
+
+// ----------------------------------------------------------------------------
+// private classes
+// ----------------------------------------------------------------------------
+
+// this class stores everything we need to enumerate the files
+class wxDirData
+{
+public:
+    wxDirData(const wxString& dirname);
+    ~wxDirData();
+
+    bool IsOk() const { return m_dir != NULL; }
+
+    void SetFileSpec(const wxString& filespec) { m_filespec = filespec; }
+    void SetFlags(int flags) { m_flags = flags; }
+
+    void Rewind();
+    bool Read(wxString *filename);
+
+    const wxString& GetName() const { return m_dirname; }
+
+private:
+    void    *m_dir;
+
+    wxString m_dirname;
+    wxString m_filespec;
+
+    int      m_flags;
+};
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxDirData
+// ----------------------------------------------------------------------------
+
+wxDirData::wxDirData(const wxString& dirname)
+         : m_dirname(dirname)
+{
+    m_dir = NULL;
+
+    // throw away the trailing slashes
+    size_t n = m_dirname.length();
+    wxCHECK_RET( n, _T("empty dir name in wxDir") );
+
+    while ( n > 0 && m_dirname[--n] == wxFILE_SEP_PATH ) {}
+
+    m_dirname.Truncate(n + 1);
+}
+
+wxDirData::~wxDirData()
+{
+    if ( m_dir )
+        PM_findClose(m_dir);
+}
+
+void wxDirData::Rewind()
+{
+    if ( m_dir )
+    {
+        PM_findClose(m_dir);
+        m_dir = NULL;
+    }
+}
+
+bool wxDirData::Read(wxString *filename)
+{
+    PM_findData data;
+    bool matches = FALSE;
+
+    data.dwSize = sizeof(data);
+    
+    wxString path = m_dirname;
+    path += wxFILE_SEP_PATH;
+    path.reserve(path.length() + 255); // speed up string concatenation
+
+    while ( !matches )
+    {
+        if ( m_dir )
+        {
+            if ( !PM_findNextFile(m_dir, &data) )
+                return FALSE;
+        }
+        else
+        {
+            m_dir = PM_findFirstFile(path + m_filespec , &data);
+            if ( m_dir == PM_FILE_INVALID )
+            {
+                m_dir = NULL;
+                return FALSE;
+            }
+        }
+
+        // don't return "." and ".." unless asked for
+        if ( data.name[0] == '.' &&
+             ((data.name[1] == '.' && data.name[2] == '\0') ||
+              (data.name[1] == '\0')) )
+        {
+            if ( !(m_flags & wxDIR_DOTDOT) )
+                continue;
+
+            // we found a valid match
+            break;
+        }
+
+        // check the type now
+        if ( !(m_flags & wxDIR_FILES) && !(data.attrib & PM_FILE_DIRECTORY) )
+        {
+            // it's a file, but we don't want them
+            continue;
+        }
+        else if ( !(m_flags & wxDIR_DIRS) && (data.attrib & PM_FILE_DIRECTORY) )
+        {
+            // it's a dir, and we don't want it
+            continue;
+        }
+
+        matches = m_flags & wxDIR_HIDDEN ? TRUE : !(data.attrib & PM_FILE_HIDDEN);
+    }
+
+    *filename = data.name;
+
+    return TRUE;
+}
+
+
+// ----------------------------------------------------------------------------
+// wxDir helpers
+// ----------------------------------------------------------------------------
+
+/* static */
+bool wxDir::Exists(const wxString& dir)
+{
+    return wxPathExists(dir);
+}
+
+// ----------------------------------------------------------------------------
+// wxDir construction/destruction
+// ----------------------------------------------------------------------------
+
+wxDir::wxDir(const wxString& dirname)
+{
+    m_data = NULL;
+
+    (void)Open(dirname);
+}
+
+bool wxDir::Open(const wxString& dirname)
+{
+    delete M_DIR;
+    m_data = NULL;
+    
+    if ( !wxDir::Exists(dirname) )
+    {
+        wxLogError(_("Directory '%s' doesn't exist!"), dirname.c_str());
+        return FALSE;
+    }
+    
+    m_data = new wxDirData(dirname);
+    return TRUE;
+}
+
+bool wxDir::IsOpened() const
+{
+    return m_data != NULL;
+}
+
+wxString wxDir::GetName() const
+{
+    wxString name;
+    if ( m_data )
+    {
+        name = M_DIR->GetName();
+        if ( !name.empty() && (name.Last() == wxFILE_SEP_PATH) )
+        {
+            // chop off the last (back)slash
+            name.Truncate(name.length() - 1);
+        }
+    }
+
+    return name;
+}
+
+wxDir::~wxDir()
+{
+    delete M_DIR;
+}
+
+// ----------------------------------------------------------------------------
+// wxDir enumerating
+// ----------------------------------------------------------------------------
+
+bool wxDir::GetFirst(wxString *filename,
+                     const wxString& filespec,
+                     int flags) const
+{
+    wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") );
+
+    M_DIR->Rewind();
+
+    M_DIR->SetFileSpec(filespec);
+    M_DIR->SetFlags(flags);
+
+    return GetNext(filename);
+}
+
+bool wxDir::GetNext(wxString *filename) const
+{
+    wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") );
+
+    wxCHECK_MSG( filename, FALSE, _T("bad pointer in wxDir::GetNext()") );
+
+    return M_DIR->Read(filename);
+}
+
+#endif // !__UNIX__
+
index 8b7852197b8f10f9b7f5be2b0d892d29eb0918d0..8243d15d4e29e890a39b173b198b06213077343e 100644 (file)
@@ -1,4 +1,4 @@
-# This file was automatically generated by tmake at 22:59, 2002/01/01
+# This file was automatically generated by tmake at 17:34, 2002/01/08
 # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE MGL.T!
 ALL_SOURCES = \
                generic/accel.cpp \
@@ -180,7 +180,7 @@ ALL_SOURCES = \
                mgl/dcclient.cpp \
                mgl/dcmemory.cpp \
                mgl/dcscreen.cpp \
-               mgl/dir.cpp \
+               mgl/dirmgl.cpp \
                mgl/evtloop.cpp \
                mgl/font.cpp \
                mgl/fontenum.cpp \
@@ -196,6 +196,7 @@ ALL_SOURCES = \
                mgl/utils.cpp \
                mgl/window.cpp \
                unix/dialup.cpp \
+               unix/dir.cpp \
                unix/gsocket.c \
                unix/mimetype.cpp \
                unix/snglinst.cpp \
@@ -694,7 +695,7 @@ GUI_LOWLEVEL_OBJS = \
                dcclient.o \
                dcmemory.o \
                dcscreen.o \
-               dir.o \
+               dirmgl.o \
                evtloop.o \
                font.o \
                fontenum.o \
@@ -712,6 +713,7 @@ GUI_LOWLEVEL_OBJS = \
 
 UNIXOBJS = \
                dialup.o \
+               dir.o \
                gsocket.o \
                mimetype.o \
                snglinst.o \