#endif
#include "wx/utils.h"
+#include <wx/intl.h>
#include <ctype.h>
#include <stdio.h>
}
}
+void wxStripExtension(wxString& buffer)
+{
+ size_t len = buffer.Length();
+ size_t i = len-1;
+ while (i > 0)
+ {
+ if (buffer.GetChar(i) == '.')
+ {
+ buffer = buffer.Left(i);
+ break;
+ }
+ i --;
+ }
+}
+
// Destructive removal of /./ and /../ stuff
char *wxRealPath (char *path)
{
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
static const char SEP = '\\';
Unix2DosFilename(path);
#else
path[0] = SEP;
path[1] = '\0';
}
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
/* Check that path[2] is NULL! */
else if (path[1] == ':' && !path[2])
{
buf[0] = '\0';
wxGetWorkingDirectory(buf, sizeof(buf)/sizeof(char));
char ch = buf[strlen(buf) - 1];
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
if (ch != '\\' && ch != '/')
strcat(buf, "\\");
#else
trimchars[2] = '\t';
trimchars[3] = 0;
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
const char SEP = '\\';
#else
const char SEP = '/';
s = nm;
d = lnm;
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
q = FALSE;
#else
q = nm[0] == '\\' && nm[1] == '~';
/* Expand inline environment variables */
while ((*d++ = *s)) {
-#ifndef __WINDOWS__
+#ifndef __WXMSW__
if (*s == '\\') {
if ((*(d - 1) = *++s)) {
s++;
break;
} else
#endif
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
if (*s++ == '$' && (*s == '{' || *s == ')'))
#else
if (*s++ == '$')
return NULL;
strcpy (dest, WXSTRINGCAST filename);
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
Unix2DosFilename(dest);
#endif
strcpy(wxBuffer, "~");
if (user && *user)
strcat(wxBuffer, user);
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
// strcat(wxBuffer, "\\");
#else
// strcat(wxBuffer, "/");
#endif
return tcp + 1;
} /* while */
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
if (isalpha (*path) && *(path + 1) == ':')
return path + 2;
#endif
#endif
return wxString(tcp + 1);
} /* while */
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
if (isalpha (*path) && *(path + 1) == ':')
return wxString(path + 2);
#endif
else i --;
}
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
// Try Drive specifier
if (isalpha (buf[0]) && buf[1] == ':')
{
else i --;
}
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
// Try Drive specifier
if (isalpha (buf[0]) && buf[1] == ':')
{
{
if (*s == '\\')
*s = '/';
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
else
*s = wxToLower (*s); // Case INDEPENDENT
#endif
}
void
+#ifdef __WXMSW__
wxUnix2DosFilename (char *s)
+#else
+wxUnix2DosFilename (char *WXUNUSED(s))
+#endif
{
// Yes, I really mean this to happen under DOS only! JACS
-#ifdef __WINDOWS__
+#ifdef __WXMSW__
if (s)
while (*s)
{
bool wxMkdir(const wxString& dir)
{
-#ifdef __VMS__
+#if defined(__WXSTUBS__)
+ return FALSE;
+#elif defined(__VMS__)
return FALSE;
-#elif (defined(__GNUWIN32__) && !defined(__MINGW32__)) || !defined(__WINDOWS__)
+#elif (defined(__GNUWIN32__) && !defined(__MINGW32__)) || !defined(__WXMSW__)
return (mkdir (WXSTRINGCAST dir, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == 0);
#else
return (mkdir(WXSTRINGCAST dir) == 0);
{
#ifdef __VMS__
return FALSE;
-#elif !defined(__WINDOWS__)
+#elif !defined(__WXMSW__)
struct stat sbuf;
return (stat(dir, &sbuf) != -1) && S_ISDIR(sbuf.st_mode) ? TRUE : FALSE;
#else
return buf;
}
}
- cerr << "wxWindows: error finding temporary file name.\n";
+ cerr << _("wxWindows: error finding temporary file name.\n");
if (buf) buf[0] = 0;
return NULL;
#endif
return NULL;
}
-#elif defined(__WINDOWS__)
+#elif defined(__WXMSW__)
#ifdef __WIN32__
HANDLE wxFileStrucHandle = INVALID_HANDLE_VALUE;
}
#endif
- // __WINDOWS__
+ // __WXMSW__
// Get current working directory.
// If buf is NULL, allocates space using new, else
{
// we assume that it's not empty
wxCHECK_MSG( !IsEmpty(pszFile), FALSE,
- "empty file name in wxFindFileInPath");
+ _("empty file name in wxFindFileInPath"));
// skip path separator in the beginning of the file name if present
if ( wxIsPathSeparator(*pszFile) )
return pc != NULL; // if true => we breaked from the loop
}
+void WXDLLEXPORT wxSplitPath(const char *pszFileName,
+ wxString *pstrPath,
+ wxString *pstrName,
+ wxString *pstrExt)
+{
+ wxCHECK_RET( pszFileName, _("NULL file name in wxSplitPath") );
+
+ const char *pDot = strrchr(pszFileName, FILE_SEP_EXT);
+ const char *pSepUnix = strrchr(pszFileName, FILE_SEP_PATH_UNIX);
+ const char *pSepDos = strrchr(pszFileName, FILE_SEP_PATH_DOS);
+
+ // take the last of the two
+ size_t nPosUnix = pSepUnix ? pSepUnix - pszFileName : 0;
+ size_t nPosDos = pSepDos ? pSepDos - pszFileName : 0;
+ if ( nPosDos > nPosUnix )
+ nPosUnix = nPosDos;
+// size_t nLen = Strlen(pszFileName);
+
+ if ( pstrPath )
+ *pstrPath = wxString(pszFileName, nPosUnix);
+ if ( pDot ) {
+ size_t nPosDot = pDot - pszFileName;
+ if ( pstrName )
+ *pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix);
+ if ( pstrExt )
+ *pstrExt = wxString(pszFileName + nPosDot + 1);
+ }
+ else {
+ if ( pstrName )
+ *pstrName = wxString(pszFileName + nPosUnix + 1);
+ if ( pstrExt )
+ pstrExt->Empty();
+ }
+}