// Created: 08.12.99
// RCS-ID: $Id$
// Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// 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
#include <sys/types.h>
#define INCL_DOSFILEMGR
+#define INCL_DOSERRORS
#include <os2.h>
#ifdef __EMX__
{
if (!::DosFindClose(vFd))
{
- wxLogLastError(_T("DosFindClose"));
+ wxLogLastError(wxT("DosFindClose"));
}
}
)
{
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;
}
,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(
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);
wxString* psFilename
)
{
- bool bFirst = FALSE;
+ bool bFirst = false;
FILEFINDBUF3 vFinddata;
#define PTR_TO_FINDDATA (&vFinddata)
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;
{
if (bFirst)
{
- bFirst = FALSE;
+ bFirst = false;
}
else
{
,PTR_TO_FINDDATA
))
{
- return FALSE;
+ return false;
}
}
//
// 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;
*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
// ----------------------------------------------------------------------------
{
delete M_DIR;
m_data = new wxDirData(rsDirname);
- return TRUE;
+ return true;
} // end of wxDir::Open
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;
, 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);
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