#include "fspcompa.h"
#endif
-#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxStringList)
-#endif
// ----------------------------------------------------------------------------
// private globals
static wxChar wxFileFunctionsBuffer[4*_MAXPATHLEN];
+#if defined(__VISAGECPP__) && __IBMCPP__ >= 400
+//
+// VisualAge C++ V4.0 cannot have any external linkage const decs
+// in headers included by more than one primary source
+//
+const off_t wxInvalidOffset = (off_t)-1;
+#endif
+
// ============================================================================
// implementation
// ============================================================================
return wxRealPath(buf);
}
-
/* Contract Paths to be build upon an environment variable
component:
void
#if defined(__WXMSW__) || defined(__WXPM__)
-wxUnix2DosFilename (char *s)
+wxUnix2DosFilename (wxChar *s)
#else
-wxUnix2DosFilename (char *WXUNUSED(s) )
+wxUnix2DosFilename (wxChar *WXUNUSED(s) )
#endif
{
// Yes, I really mean this to happen under DOS only! JACS
// assume mkdir() has 2 args on non Windows-OS/2 platforms and on Windows too
// for the GNU compiler
-#if (!(defined(__WXMSW__) || defined(__WXPM__))) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) || defined(__WXWINE__)
+#if (!(defined(__WXMSW__) || defined(__OS2__))) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) || defined(__WXWINE__)
if ( mkdir(wxFNCONV(dirname), perm) != 0 )
-#else // MSW and OS/2
+#else // !MSW and !OS/2 VAC++
if ( mkdir(wxFNSTRINGCAST wxFNCONV(dirname)) != 0 )
#endif // !MSW/MSW
{
#endif
}
+bool wxGetTempFileName(const wxString& prefix, wxString& buf)
+{
+ wxChar buf2[512];
+ if (wxGetTempFileName(prefix, buf2) != (wxChar*) NULL)
+ {
+ buf = buf2;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
// Get first file name matching given wild card.
#ifdef __UNIX__
nextDir != NULL;
nextDir = readdir(gs_dirStream) )
{
- if (wxMatchWild(name, nextDir->d_name))
+ if (wxMatchWild(name, nextDir->d_name, FALSE) && // RR: added FALSE to find hidden files
+ strcmp(nextDir->d_name, ".") &&
+ strcmp(nextDir->d_name, "..") )
{
result.Empty();
if ( !path.IsEmpty() )
if ( ( g_iter.m_CPB.dirInfo.ioFlAttrib & ioDirMask) == 0 && !(g_iter_flags & wxFILE ) )
continue ;
-
+
// hit !
break ;
}
g_iter.m_dirId,
g_iter.m_name,
&spec) ;
-
+
return wxMacFSSpec2UnixFilename( &spec ) ;
}
return result;
}
+
wxString wxFindNextFile()
{
wxString result;
return result;
}
-#endif // Unix/Windows
+#elif defined(__WXPM__)
+
+wxString wxFindFirstFile(const wxChar *spec, int flags)
+{
+ wxString result;
+
+ /*
+ // TODO: figure something out here for OS/2
+ gs_strFileSpec = spec;
+ gs_findFlags = flags;
+
+ // Find path only so we can concatenate found file onto path
+ wxString path(wxPathOnly(gs_strFileSpec));
+ if ( !path.IsEmpty() )
+ result << path << wxT('\\');
+
+ int flag = _A_NORMAL;
+ if (flags & wxDIR)
+ flag = _A_SUBDIR;
+
+ if (_dos_findfirst(WXSTRINGCAST spec, flag, &gs_findDataStruct) == 0)
+ {
+ char attrib;
+ attrib = gs_findDataStruct.attrib;
+
+ if (attrib & _A_SUBDIR) {
+ if (!(gs_findFlags & wxDIR))
+ return wxFindNextFile();
+ } else if (gs_findFlags && !(gs_findFlags & wxFILE))
+ return wxFindNextFile();
+
+ result += gs_findDataStruct.name;
+ }
+ */
+ return result;
+}
+
+wxString wxFindNextFile()
+{
+ wxString result;
+ // TODO:
+ return result;
+}
+
+#endif // Unix/Windows/OS/2
// Get current working directory.
// If buf is NULL, allocates space using new, else
#ifdef _MSC_VER
if (_getcwd(buf, sz) == NULL) {
#elif defined( __WXMAC__)
- enum
- {
- SFSaveDisk = 0x214, CurDirStore = 0x398
+ enum
+ {
+ SFSaveDisk = 0x214, CurDirStore = 0x398
};
FSSpec cwdSpec ;
#else // assume Unix
const wxChar *pLastSeparator = wxStrrchr(pszFileName, wxFILE_SEP_PATH_UNIX);
- if ( pDot == pszFileName )
+ if ( pDot )
{
- // under Unix files like .profile are treated in a special way
- pDot = NULL;
+ if ( (pDot == pszFileName) || (*(pDot - 1) == wxFILE_SEP_PATH_UNIX) )
+ {
+ // under Unix, dot may be (and commonly is) the first character of the
+ // filename, don't treat the entire filename as extension in this case
+ pDot = NULL;
+ }
}
#endif // MSW/Unix
- if ( pDot < pLastSeparator )
+ if ( pDot && (pDot < pLastSeparator) )
{
// the dot is part of the path, not the start of the extension
pDot = NULL;
}
}
+
+
+time_t WXDLLEXPORT wxFileModificationTime(const wxString& filename)
+{
+ struct stat buf;
+
+ stat(filename.fn_str(), &buf);
+ return buf.st_mtime;
+}
+
+
//------------------------------------------------------------------------
// wild character routines
//------------------------------------------------------------------------