// this function is used to properly interpret '..' in path void wxSplitPath(wxArrayString& aParts, const wxString& path) { aParts.clear(); wxString strCurrent; wxString::const_iterator pc = path.begin(); for ( ;; ) { if ( pc == path.end() || *pc == wxCONFIG_PATH_SEPARATOR ) { if ( strCurrent == wxT(".") ) { // ignore } else if ( strCurrent == wxT("..") ) { // go up one level if ( aParts.size() == 0 ) { wxLogWarning(_("'%s' has extra '..', ignored."), path); } else { aParts.erase(aParts.end() - 1); } strCurrent.Empty(); } else if ( !strCurrent.empty() ) { aParts.push_back(strCurrent); strCurrent.Empty(); } //else: // could log an error here, but we prefer to ignore extra '/' if ( pc == path.end() ) break; } else strCurrent += *pc; ++pc; } }
// this function is used to properly interpret '..' in path void wxSplitPath(wxArrayString& aParts, const wxChar *sz) { aParts.clear(); wxString strCurrent; const wxChar *pc = sz; for ( ;; ) { if ( *pc == wxT('\0') || *pc == wxCONFIG_PATH_SEPARATOR ) { if ( strCurrent == wxT(".") ) { // ignore } else if ( strCurrent == wxT("..") ) { // go up one level if ( aParts.size() == 0 ) wxLogWarning(_("'%s' has extra '..', ignored."), sz); else aParts.erase(aParts.end() - 1); strCurrent.Empty(); } else if ( !strCurrent.empty() ) { aParts.push_back(strCurrent); strCurrent.Empty(); } //else: // could log an error here, but we prefer to ignore extra '/' if ( *pc == wxT('\0') ) break; } else strCurrent += *pc; pc++; } }