X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f38c86f452b444cab9eff182f76196d01bc9d22..222702b112dcc7bebe018d6f4d66fe469fefd02c:/src/os2/dir.cpp diff --git a/src/os2/dir.cpp b/src/os2/dir.cpp index c5a14f2ce3..e0eb0cbb16 100644 --- a/src/os2/dir.cpp +++ b/src/os2/dir.cpp @@ -6,7 +6,7 @@ // Created: 08.12.99 // RCS-ID: $Id$ // Copyright: (c) 1999 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -25,6 +25,7 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP + #include "wx/os2/private.h" #include "wx/intl.h" #include "wx/log.h" #endif // PCH @@ -35,6 +36,7 @@ #include #define INCL_DOSFILEMGR +#define INCL_DOSERRORS #include #ifdef __EMX__ @@ -74,19 +76,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() + rc = ::DosFindFirst( (PSZ)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 +103,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 +162,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 +213,7 @@ bool wxDirData::Read( wxString* psFilename ) { - bool bFirst = FALSE; + bool bFirst = false; FILEFINDBUF3 vFinddata; #define PTR_TO_FINDDATA (&vFinddata) @@ -231,12 +234,12 @@ bool wxDirData::Read( m_vFinddata = FindFirst( sFilespec ,PTR_TO_FINDDATA ); - bFirst = TRUE; + bFirst = true; } if ( !IsFindDataOk(m_vFinddata) ) { - return FALSE; + return false; } const wxChar* zName; @@ -246,7 +249,7 @@ bool wxDirData::Read( { if (bFirst) { - bFirst = FALSE; + bFirst = false; } else { @@ -254,7 +257,7 @@ bool wxDirData::Read( ,PTR_TO_FINDDATA )) { - return FALSE; + return false; } } @@ -306,7 +309,7 @@ bool wxDirData::Read( *psFilename = zName; break; } - return TRUE; + return true; } // end of wxDirData::Read // ---------------------------------------------------------------------------- @@ -318,7 +321,7 @@ bool wxDir::Exists( const wxString& rsDir ) { - return wxPathExists(rsDir); + return wxDirExists(rsDir); } // end of wxDir::Exists // ---------------------------------------------------------------------------- @@ -340,7 +343,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 +351,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(_T("/"), _T("\\")); + + if ( name.Last() == _T('\\') ) + { + // chop off the last (back)slash + name.Truncate(name.length() - 1); + } + } + } + + return name; +} + wxDir::~wxDir() { delete M_DIR; @@ -363,7 +388,7 @@ bool wxDir::GetFirst( , int nFlags ) const { - wxCHECK_MSG( IsOpened(), FALSE, _T("must wxDir::Open() first") ); + wxCHECK_MSG( IsOpened(), false, _T("must wxDir::Open() first") ); M_DIR->Rewind(); M_DIR->SetFileSpec(rsFilespec); M_DIR->SetFlags(nFlags); @@ -374,8 +399,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, _T("must wxDir::Open() first") ); + wxCHECK_MSG( psFilename, false, _T("bad pointer in wxDir::GetNext()") ); return M_DIR->Read(psFilename); } // end of wxDir::GetNext