X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f38c86f452b444cab9eff182f76196d01bc9d22..04fa04d8067d235ab45b5bc05b65f0679634b541:/src/os2/dir.cpp diff --git a/src/os2/dir.cpp b/src/os2/dir.cpp index c5a14f2ce3..2b08bac7d1 100644 --- a/src/os2/dir.cpp +++ b/src/os2/dir.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: os2/dir.cpp +// Name: src/os2/dir.cpp // Purpose: wxDir implementation for OS/2 // Author: Vadim Zeitlin // Modified by: Stefan Neis // Created: 08.12.99 // RCS-ID: $Id$ // Copyright: (c) 1999 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -17,14 +17,11 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "dir.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifndef WX_PRECOMP + #include "wx/os2/private.h" #include "wx/intl.h" #include "wx/log.h" #endif // PCH @@ -35,6 +32,7 @@ #include #define INCL_DOSFILEMGR +#define INCL_DOSERRORS #include #ifdef __EMX__ @@ -64,7 +62,7 @@ static inline void FreeFindData( { if (!::DosFindClose(vFd)) { - wxLogLastError(_T("DosFindClose")); + wxLogLastError(wxT("DosFindClose")); } } @@ -74,19 +72,19 @@ static inline FIND_DATA FindFirst( ) { ULONG ulFindCount = 1; - FIND_DATA hDir; + FIND_DATA hDir = HDIR_CREATE; FIND_ATTR rc; rc = ::DosFindFirst( rsSpec.c_str() ,&hDir - ,FILE_NORMAL + ,0x37 // was: FILE_NORMAL ,pFinddata ,sizeof(FILEFINDBUF3) ,&ulFindCount ,FIL_STANDARD ); if (rc != 0) - return 0; + return InitFindData(); return hDir; } @@ -101,14 +99,14 @@ static inline bool FindNext( ,pFinddata ,sizeof(FILEFINDBUF3) ,&ulFindCount - ) != 0; + ) == 0; } static const wxChar* GetNameFromFindData( FIND_STRUCT* pFinddata ) { - return pFinddata->achName; + return (wxChar*)pFinddata->achName; } static const FIND_ATTR GetAttrFromFindData( @@ -160,6 +158,7 @@ public: void SetFileSpec(const wxString& rsFilespec) { m_sFilespec = rsFilespec; } void SetFlags(int nFlags) { m_nFlags = nFlags; } + const wxString& GetName() const { return m_sDirname; } void Close(); void Rewind(); bool Read(wxString* rsFilename); @@ -210,7 +209,7 @@ bool wxDirData::Read( wxString* psFilename ) { - bool bFirst = FALSE; + bool bFirst = false; FILEFINDBUF3 vFinddata; #define PTR_TO_FINDDATA (&vFinddata) @@ -224,19 +223,19 @@ bool wxDirData::Read( if ( !wxEndsWithPathSeparator(sFilespec) ) { - sFilespec += _T('\\'); + sFilespec += wxT('\\'); } - sFilespec += (!m_sFilespec ? _T("*.*") : m_sFilespec.c_str()); + sFilespec += (!m_sFilespec ? wxT("*.*") : m_sFilespec.c_str()); m_vFinddata = FindFirst( sFilespec ,PTR_TO_FINDDATA ); - bFirst = TRUE; + bFirst = true; } if ( !IsFindDataOk(m_vFinddata) ) { - return FALSE; + return false; } const wxChar* zName; @@ -246,7 +245,7 @@ bool wxDirData::Read( { if (bFirst) { - bFirst = FALSE; + bFirst = false; } else { @@ -254,7 +253,7 @@ bool wxDirData::Read( ,PTR_TO_FINDDATA )) { - return FALSE; + return false; } } @@ -264,9 +263,9 @@ bool wxDirData::Read( // // Don't return "." and ".." unless asked for // - if ( zName[0] == _T('.') && - ((zName[1] == _T('.') && zName[2] == _T('\0')) || - (zName[1] == _T('\0'))) ) + if ( zName[0] == wxT('.') && + ((zName[1] == wxT('.') && zName[2] == wxT('\0')) || + (zName[1] == wxT('\0'))) ) { if (!(m_nFlags & wxDIR_DOTDOT)) continue; @@ -306,21 +305,9 @@ bool wxDirData::Read( *psFilename = zName; break; } - return TRUE; + return true; } // end of wxDirData::Read -// ---------------------------------------------------------------------------- -// wxDir helpers -// ---------------------------------------------------------------------------- - -/* static */ -bool wxDir::Exists( - const wxString& rsDir -) -{ - return wxPathExists(rsDir); -} // end of wxDir::Exists - // ---------------------------------------------------------------------------- // wxDir construction/destruction // ---------------------------------------------------------------------------- @@ -340,7 +327,7 @@ bool wxDir::Open( { delete M_DIR; m_data = new wxDirData(rsDirname); - return TRUE; + return true; } // end of wxDir::Open bool wxDir::IsOpened() const @@ -348,6 +335,28 @@ bool wxDir::IsOpened() const return m_data != NULL; } // end of wxDir::IsOpen +wxString wxDir::GetName() const +{ + wxString name; + if ( m_data ) + { + name = M_DIR->GetName(); + if ( !name.empty() ) + { + // bring to canonical Windows form + name.Replace(wxT("/"), wxT("\\")); + + if ( name.Last() == wxT('\\') ) + { + // chop off the last (back)slash + name.Truncate(name.length() - 1); + } + } + } + + return name; +} + wxDir::~wxDir() { delete M_DIR; @@ -363,7 +372,7 @@ bool wxDir::GetFirst( , int nFlags ) const { - wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") ); + wxCHECK_MSG( IsOpened(), false, wxT("must wxDir::Open() first") ); M_DIR->Rewind(); M_DIR->SetFileSpec(rsFilespec); M_DIR->SetFlags(nFlags); @@ -374,8 +383,8 @@ bool wxDir::GetNext( wxString* psFilename ) const { - wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") ); - wxCHECK_MSG( psFilename, FALSE, _T("bad pointer in wxDir::GetNext()") ); + wxCHECK_MSG( IsOpened(), false, wxT("must wxDir::Open() first") ); + wxCHECK_MSG( psFilename, false, wxT("bad pointer in wxDir::GetNext()") ); return M_DIR->Read(psFilename); } // end of wxDir::GetNext