(although :filename works as well).
Since the volume is just part of the file path, it is not
treated like a separate entity as it is done under DOS and
- VMS, it is just treated as another dir.
+ VMS, it is just treated as another dir.
wxPATH_VMS: VMS native format, absolute file names have the form
<device>:[dir1.dir2.dir3]file.txt
// ----------------------------------------------------------------------------
#ifdef __GNUG__
- #pragma implementation "filename.h"
+#pragma implementation "filename.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+#pragma hdrstop
#endif
#ifndef WX_PRECOMP
- #include "wx/intl.h"
- #include "wx/log.h"
+#include "wx/intl.h"
+#include "wx/log.h"
+#include "wx/file.h"
#endif
#include "wx/filename.h"
#include "wx/tokenzr.h"
#include "wx/config.h" // for wxExpandEnvVars
#include "wx/utils.h"
-
-#if wxUSE_DYNLIB_CLASS
- #include "wx/dynlib.h"
-#endif
+#include "wx/file.h"
+//#include "wx/dynlib.h" // see GetLongPath below, code disabled.
// For GetShort/LongPathName
#ifdef __WIN32__
- #include <windows.h>
-
- #include "wx/msw/winundef.h"
+#include <windows.h>
+#include "wx/msw/winundef.h"
#endif
// utime() is POSIX so should normally be available on all Unices
#ifdef __UNIX_LIKE__
- #include <sys/types.h>
- #include <utime.h>
- #include <sys/stat.h>
- #include <unistd.h>
+#include <sys/types.h>
+#include <utime.h>
+#include <sys/stat.h>
+#include <unistd.h>
#endif
#ifdef __MWERKS__
- #include <stat.h>
- #include <unistd.h>
- #include <unix.h>
+#include <stat.h>
+#include <unistd.h>
+#include <unix.h>
#endif
#ifdef __WATCOMC__
- #include <io.h>
- #include <sys/utime.h>
- #include <sys/stat.h>
+#include <io.h>
+#include <sys/utime.h>
+#include <sys/stat.h>
#endif
#ifdef __VISAGECPP__
{
wxPathFormat my_format = GetFormat( format );
wxString my_path = path;
-
+
m_dirs.Clear();
-
+
if (!my_path.empty())
{
// 1) Determine if the path is relative or absolute.
-
+
switch (my_format)
{
case wxPATH_MAC:
// We then remove a leading ":". The reason is in our
// storage form for relative paths:
// ":dir:file.txt" actually means "./dir/file.txt" in
- // DOS notation and should get stored as
+ // DOS notation and should get stored as
// (relative) (dir) (file.txt)
// "::dir:file.txt" actually means "../dir/file.txt"
// stored as (relative) (..) (dir) (file.txt)
wxFAIL_MSG( wxT("error") );
break;
}
-
+
// 2) Break up the path into its members. If the original path
// was just "/" or "\\", m_dirs will be empty. We know from
// the m_relative field, if this means "nothing" or "root dir".
-
+
wxStringTokenizer tn( my_path, GetPathSeparators(my_format) );
while ( tn.HasMoreTokens() )
#ifndef __WATCOMC__
::DosCreateDir(wxStringBuffer(path, MAX_PATH), NULL);
#endif
-
+
#else // !Windows, !OS/2
if ( dir.empty() )
{
{
// open the file - of course, there is a race condition here, this is
// why we always prefer using mkstemp()...
- if ( !fileTemp->Open(path, wxFile::write_excl, wxS_IRUSR | wxS_IWUSR) )
+ //
+ // NB: GetTempFileName() under Windows creates the file, so using
+ // write_excl there would fail
+ if ( !fileTemp->Open(path,
+#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
+ wxFile::write,
+#else
+ wxFile::write_excl,
+#endif
+ wxS_IRUSR | wxS_IWUSR) )
{
// FIXME: If !ok here should we loop and try again with another
// file name? That is the standard recourse if open(O_EXCL)
{
m_dirs.Insert(wxT(".."), 0u);
}
-
+
m_relative = TRUE;
// we were modified
if (!m_relative)
fullpath += wxFILE_SEP_PATH_UNIX;
}
-
+
// then concatenate all the path components using the path separator
size_t dirCount = m_dirs.GetCount();
if ( dirCount )
// else ignore
}
}
-
+
// the leading character
if ( format == wxPATH_MAC && m_relative )
{
if (!m_relative)
fullpath += wxFILE_SEP_PATH_UNIX;
}
-
+
// then concatenate all the path components using the path separator
size_t dirCount = m_dirs.GetCount();
if ( dirCount )
bool success = FALSE;
// VZ: this code was disabled, why?
-#if 0 // wxUSE_DYNLIB_CLASS
+#if 0 // wxUSE_DYNAMIC_LOADER
typedef DWORD (*GET_LONG_PATH_NAME)(const wxChar *, wxChar *, DWORD);
static bool s_triedToLoad = FALSE;
}
if (success)
return pathOut;
-#endif // wxUSE_DYNLIB_CLASS
+#endif // wxUSE_DYNAMIC_LOADER
if (!success)
{