#include "wx/msw/winundef.h"
#endif
-// at least some of these are required for file mod time
-#ifdef __WXGTK__
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <pwd.h>
-#ifndef __VMS
-# include <grp.h>
-#endif
-# include <time.h>
-#include <unistd.h>
-#endif
-
// ============================================================================
// implementation
// ============================================================================
{
wxStringTokenizer tn(path, GetPathSeparators(format),
wxTOKEN_RET_EMPTY_ALL);
- bool first = TRUE;
+ int i = 0;
m_dirs.Clear();
while ( tn.HasMoreTokens() )
{
wxString token = tn.GetNextToken();
- // If the path starts with a slash, we need the first
- // dir entry to be an empty for later reassembly.
- if (first || !token.IsEmpty())
+ // If the path starts with a slash (or two for a network path),
+ // we need the first dir entry to be an empty for later reassembly.
+ if ((i < 2) || !token.IsEmpty())
m_dirs.Add( token );
- first = FALSE;
+ i ++;
}
m_ext = ext;
wxDateTime wxFileName::GetModificationTime()
{
-#ifdef __WXGTK__
- struct stat buff;
- stat( GetFullName().fn_str(), &buff );
-
-#if !defined( __EMX__ ) && !defined(__VMS)
- struct stat lbuff;
- lstat( GetFullName().fn_str(), &lbuff );
- struct tm *t = localtime( &lbuff.st_mtime );
-#else
- struct tm *t = localtime( &buff.st_mtime );
-#endif
+ wxDateTime ret( wxFileModificationTime( GetFullPath() ) );
- wxDateTime ret( t->tm_mday, (wxDateTime::Month)t->tm_mon, t->tm_year+1900, t->tm_hour, t->tm_min, t->tm_sec );
-#else
-
- wxDateTime ret = wxDateTime::Now();
-
-#endif
return ret;
}
{
// FIXME: this is probably false for Mac and this is surely wrong for most
// of Unix shells (think about "[...]")
+ (void)format;
return m_name.find_first_of(_T("*?")) != wxString::npos;
}
wxString wxFileName::GetFullPath( wxPathFormat format ) const
{
- return GetPathWithSep() + GetFullName();
+ format = GetFormat( format );
+
+ wxString ret;
+ if (format == wxPATH_DOS)
+ {
+ for (size_t i = 0; i < m_dirs.GetCount(); i++)
+ {
+ ret += m_dirs[i];
+ ret += '\\';
+ }
+ }
+ else
+ if (format == wxPATH_UNIX)
+ {
+ for (size_t i = 0; i < m_dirs.GetCount(); i++)
+ {
+ ret += m_dirs[i];
+ ret += '/';
+ }
+ }
+ else
+ {
+ for (size_t i = 0; i < m_dirs.GetCount(); i++)
+ {
+ ret += m_dirs[i];
+ ret += ':';
+ }
+ }
+
+ ret += m_name;
+
+ if (!m_ext.IsEmpty())
+ {
+ ret += '.';
+ ret += m_ext;
+ }
+
+ return ret;
}
// Return the short form of the path (returns identity on non-Windows platforms)
wxString wxFileName::GetShortPath() const
{
-#if defined(__WXMSW__) && defined(__WIN32__)
+#if defined(__WXMSW__) && defined(__WIN32__) && !defined(__WXMICROWIN__)
wxString path(GetFullPath());
wxString pathOut;
DWORD sz = ::GetShortPathName(path, NULL, 0);
}
if (ok)
return pathOut;
- else
- return path;
+
+ return path;
#else
return GetFullPath();
#endif
// Return the long form of the path (returns identity on non-Windows platforms)
wxString wxFileName::GetLongPath() const
{
-#if defined(__WXMSW__) && defined(__WIN32__)
+#if defined(__WXMSW__) && defined(__WIN32__) && !defined(__WXMICROWIN__)
wxString path(GetFullPath());
wxString pathOut;
bool success = FALSE;
-#if wxUSE_DYNLIB_CLASS
+ // VZ: this code was disabled, why?
+#if 0 // wxUSE_DYNLIB_CLASS
typedef DWORD (*GET_LONG_PATH_NAME)(const wxChar *, wxChar *, DWORD);
static bool s_triedToLoad = FALSE;
- static GET_LONG_PATH_NAME s_pfnGetLongPathName = NULL;
if ( !s_triedToLoad )
{
s_triedToLoad = TRUE;
-
wxDllType dllKernel = wxDllLoader::LoadLibrary(_T("kernel32"));
- short avoidCompilerWarning = 0;
- if ( avoidCompilerWarning ) // dllKernel )
+ if ( dllKernel )
{
// may succeed or fail depending on the Windows version
+ static GET_LONG_PATH_NAME s_pfnGetLongPathName = NULL;
#ifdef _UNICODE
s_pfnGetLongPathName = (GET_LONG_PATH_NAME) wxDllLoader::GetSymbol(dllKernel, _T("GetLongPathNameW"));
#else
}
if (success)
return pathOut;
-#endif
- // wxUSE_DYNLIB_CLASS
+#endif // wxUSE_DYNLIB_CLASS
if (!success)
{
pathOut = wxEmptyString;
wxArrayString dirs = GetDirs();
- dirs.Add(GetName());
+ dirs.Add(GetFullName());
size_t count = dirs.GetCount();
size_t i;
}
}
}
+
return pathOut;
#else
return GetFullPath();
#if defined(__WXMSW__) || defined(__WXPM__)
format = wxPATH_DOS;
#elif defined(__WXMAC__)
- format = wxPATH_UNIX; // that's the way the rest of wx' code works right now
+ format = wxPATH_MAC;
#else
format = wxPATH_UNIX;
#endif