path += name;
+ // Needed for Unicode/Ansi conversion
+ char buf[500];
+
#if defined(HAVE_MKSTEMP)
// scratch space for mkstemp()
path += _T("XXXXXX");
- // can use the cast here because the length doesn't change and the string
- // is not shared
- int fdTemp = mkstemp((char *)path.mb_str());
+#if wxUSE_UNICODE
+ strcpy( buf, wxConvFile.cWC2MB( path ) );
+#else
+ strcpy( buf, path.c_str() );
+#endif
+ int fdTemp = mkstemp( buf );
if ( fdTemp == -1 )
{
// this might be not necessary as mkstemp() on most systems should have
}
else // mkstemp() succeeded
{
+#if wxUSE_UNICODE
+ path = wxConvFile.cMB2WC( buf );
+#else
+ path = buf;
+#endif
// avoid leaking the fd
if ( fileTemp )
{
// same as above
path += _T("XXXXXX");
- if ( !mktemp((char *)path.mb_str()) )
+#if wxUSE_UNICODE
+ strcpy( buf, wxConvFile.cWC2MB( path ) );
+#else
+ strcpy( buf, path.c_str() );
+#endif
+ if ( !mktemp( buf )
{
path.clear();
}
+ else
+ {
+#if wxUSE_UNICODE
+ path = wxConvFile.cMB2WC( buf );
+#else
+ path = buf;
+#endif
+ }
#else // !HAVE_MKTEMP (includes __DOS__)
// generate the unique file name ourselves
#ifndef __DOS__
utimbuf utm;
utm.actime = dtAccess ? dtAccess->GetTicks() : dtMod->GetTicks();
utm.modtime = dtMod ? dtMod->GetTicks() : dtAccess->GetTicks();
- if ( utime(GetFullPath(), &utm) == 0 )
+ if ( utime(GetFullPath().fn_str(), &utm) == 0 )
{
return TRUE;
}
{
#if defined(__UNIX_LIKE__)
// under Unix touching file is simple: just pass NULL to utime()
- if ( utime(GetFullPath(), NULL) == 0 )
+ if ( utime(GetFullPath().fn_str(), NULL) == 0 )
{
return TRUE;
}
{
#if defined(__UNIX_LIKE__) || defined(__WXMAC__) || (defined(__DOS__) && defined(__WATCOMC__))
wxStructStat stBuf;
- if ( wxStat(GetFullPath(), &stBuf) == 0 )
+ if ( wxStat( GetFullPath().c_str(), &stBuf) == 0 )
{
if ( dtAccess )
dtAccess->Set(stBuf.st_atime);