]> git.saurik.com Git - wxWidgets.git/commitdiff
wxSplitPath() handles correctly filenames with '.' but without extension
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 Feb 1999 19:35:32 +0000 (19:35 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 4 Feb 1999 19:35:32 +0000 (19:35 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/filefn.cpp

index c220105aba4885ae2099d7570ff2648fbd8096e8..8207942f5e321bfa296b80cfd629c13846b8ccd3 100644 (file)
@@ -1500,29 +1500,35 @@ void WXDLLEXPORT wxSplitPath(const char *pszFileName,
                              wxString *pstrName,
                              wxString *pstrExt)
 {
                              wxString *pstrName,
                              wxString *pstrExt)
 {
-  wxCHECK_RET( pszFileName, _("NULL file name in wxSplitPath") );
+  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);
 
 
   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
+  // take the last of the two: nPosUnix containts the last slash in the
+  // filename
   size_t nPosUnix = pSepUnix ? pSepUnix - pszFileName : 0;
   size_t nPosDos = pSepDos ? pSepDos - pszFileName : 0;
   if ( nPosDos > nPosUnix )
     nPosUnix = nPosDos;
   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 ( pstrPath )
     *pstrPath = wxString(pszFileName, nPosUnix);
-  if ( pDot ) {
-    size_t nPosDot = pDot - pszFileName;
+
+  size_t nPosDot = 0;
+  if ( pDot )
+    nPosDot = pDot - pszFileName;
+
+  if ( nPosDot > nPosUnix ) {
+    // the file name looks like "path/name.ext"
     if ( pstrName )
       *pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix);
     if ( pstrExt )
       *pstrExt = wxString(pszFileName + nPosDot + 1);
   }
   else {
     if ( pstrName )
       *pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix);
     if ( pstrExt )
       *pstrExt = wxString(pszFileName + nPosDot + 1);
   }
   else {
+    // there is either no dot at all or there is a '/' after it
     if ( pstrName )
       *pstrName = wxString(pszFileName + nPosUnix + 1);
     if ( pstrExt )
     if ( pstrName )
       *pstrName = wxString(pszFileName + nPosUnix + 1);
     if ( pstrExt )