/////////////////////////////////////////////////////////////////////////////
-// Name: filefn.cpp
+// Name: src/common/filefn.cpp
// Purpose: File- and directory-related functions
// Author: Julian Smart
// Modified by:
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "filefn.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/defs.h"
if ( f.empty() || wxIsAbsolutePath(f) )
return f;
- wxString buf;
- wxGetWorkingDirectory(wxStringBuffer(buf, _MAXPATHLEN), _MAXPATHLEN);
+ wxString buf = ::wxGetCwd();
if ( !wxEndsWithPathSeparator(buf) )
{
void wxStripExtension(wxString& buffer)
{
//RN: Be careful about the handling the case where
- //buffer.Length() == 0
- for(size_t i = buffer.Length() - 1; i != wxString::npos; --i)
+ //buffer.length() == 0
+ for(size_t i = buffer.length() - 1; i != wxString::npos; --i)
{
if (buffer.GetChar(i) == wxT('.'))
{
return path;
}
+wxString wxRealPath(const wxString& path)
+{
+ wxChar *buf1=MYcopystring(path);
+ wxChar *buf2=wxRealPath(buf1);
+ wxString buf(buf2);
+ delete [] buf1;
+ return buf;
+}
+
+
// Must be destroyed
wxChar *wxCopyAbsolutePath(const wxString& filename)
{
- if (filename.empty())
- return (wxChar *) NULL;
+ if (filename.empty())
+ return (wxChar *) NULL;
- if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) {
- wxChar buf[_MAXPATHLEN];
- buf[0] = wxT('\0');
- wxGetWorkingDirectory(buf, WXSIZEOF(buf));
- wxChar ch = buf[wxStrlen(buf) - 1];
+ if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename)))
+ {
+ wxString buf = ::wxGetCwd();
+ wxChar ch = buf.Last();
#ifdef __WXMSW__
- if (ch != wxT('\\') && ch != wxT('/'))
- wxStrcat(buf, wxT("\\"));
+ if (ch != wxT('\\') && ch != wxT('/'))
+ buf << wxT("\\");
#else
- if (ch != wxT('/'))
- wxStrcat(buf, wxT("/"));
+ if (ch != wxT('/'))
+ buf << wxT("/");
#endif
- wxStrcat(buf, wxFileFunctionsBuffer);
- return MYcopystring( wxRealPath(buf) );
- }
- return MYcopystring( wxFileFunctionsBuffer );
+ buf << wxFileFunctionsBuffer;
+ buf = wxRealPath( buf );
+ return MYcopystring( buf );
+ }
+ return MYcopystring( wxFileFunctionsBuffer );
}
/*-
while ((*d++ = *s) != 0) {
# ifndef __WXMSW__
if (*s == wxT('\\')) {
- if ((*(d - 1) = *++s)) {
+ if ((*(d - 1) = *++s)!=0) {
s++;
continue;
} else
// Local copy
wxStrcpy (buf, WXSTRINGCAST path);
- int l = path.Length();
+ int l = path.length();
int i = l - 1;
// Search backward for a backward or forward slash
// Get current working directory.
-// If buf is NULL, allocates space using new, else
-// copies into buf.
-wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
+// If buf is NULL, allocates space using new, else copies into buf.
+// wxGetWorkingDirectory() is obsolete, use wxGetCwd()
+// wxDoGetCwd() is their common core to be moved
+// to wxGetCwd() once wxGetWorkingDirectory() will be removed.
+// Do not expose wxDoGetCwd in headers!
+
+wxChar *wxDoGetCwd(wxChar *buf, int sz)
{
#if defined(__WXPALMOS__)
- // TODO ?
- return NULL;
+ // TODO
+ if(buf && sz>0) buf[0] = _T('\0');
+ return buf;
#elif defined(__WXWINCE__)
// TODO
- wxUnusedVar(buf);
- wxUnusedVar(sz);
- return NULL;
+ if(buf && sz>0) buf[0] = _T('\0');
+ return buf;
#else
if ( !buf )
{
bool needsANSI = true;
#if !defined(HAVE_WGETCWD) || wxUSE_UNICODE_MSLU
- // This is not legal code as the compiler
- // is allowed destroy the wxCharBuffer.
- // wxCharBuffer c_buffer(sz);
- // char *cbuf = (char*)(const char*)c_buffer;
char cbuf[_MAXPATHLEN];
#endif
#if defined( __CYGWIN__ ) && defined( __WINDOWS__ )
// another example of DOS/Unix mix (Cygwin)
wxString pathUnix = buf;
+#if wxUSE_UNICODE
+ char bufA[_MAXPATHLEN];
+ cygwin_conv_to_full_win32_path(pathUnix.mb_str(wxConvFile), bufA);
+ wxConvFile.MB2WC(buf, bufA, sz);
+#else
cygwin_conv_to_full_win32_path(pathUnix, buf);
+#endif // wxUSE_UNICODE
#endif // __CYGWIN__
}
// __WXWINCE__
}
-wxString wxGetCwd()
+#if WXWIN_COMPATIBILITY_2_6
+wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
{
- wxChar *buffer = new wxChar[_MAXPATHLEN];
- wxGetWorkingDirectory(buffer, _MAXPATHLEN);
- wxString str( buffer );
- delete [] buffer;
+ return wxDoGetCwd(buf,sz);
+}
+#endif // WXWIN_COMPATIBILITY_2_6
+wxString wxGetCwd()
+{
+ wxString str;
+ wxDoGetCwd(wxStringBuffer(str, _MAXPATHLEN), _MAXPATHLEN);
return str;
}
{
// Note: The watcom rtl dll doesn't have fileno (the static lib does).
// Should be fixed in version 1.4.
-#if defined(wxFILEKIND_STUB) || \
- (defined(__WATCOMC__) && __WATCOMC__ <= 1230 && defined(__SW_BR))
+#if defined(wxFILEKIND_STUB) || wxONLY_WATCOM_EARLIER_THAN(1,4)
(void)fp;
return wxFILE_KIND_DISK;
#else
- return wxGetFileKind(fileno(fp));
+ return fp ? wxGetFileKind(fileno(fp)) : wxFILE_KIND_UNKNOWN;
#endif
}