From: Perry Rapp Date: Sun, 9 Feb 2003 10:56:57 +0000 (+0000) Subject: [ 683120 ] splitfilename changed to CStrings X-Git-Tag: 2.16.5~8152 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=74571608744712c8296dc83061db645df61bcd62;p=winmerge-jp%2Fwinmerge-jp.git [ 683120 ] splitfilename changed to CStrings --- diff --git a/Src/DirActions.cpp b/Src/DirActions.cpp index fa95dbaf1..0531bbbef 100644 --- a/Src/DirActions.cpp +++ b/Src/DirActions.cpp @@ -368,12 +368,8 @@ BOOL CDirView::GetSelectedDirNames(CString& strLeft, CString& strRight) const if (bResult) { - TCHAR path[MAX_PATH]; - split_filename(strLeft, path, NULL, NULL); - strLeft = path; - - split_filename(strRight, path, NULL, NULL); - strRight = path; + strLeft = GetPathOnly(strLeft); + strRight = GetPathOnly(strRight); } return bResult; } diff --git a/Src/DirDoc.cpp b/Src/DirDoc.cpp index 5b0281c27..2cef0078c 100644 --- a/Src/DirDoc.cpp +++ b/Src/DirDoc.cpp @@ -401,12 +401,6 @@ void CDirDoc::SetDiffContext(CDiffContext *pCtxt) BOOL CDirDoc::UpdateItemStatus(LPCTSTR pathLeft, LPCTSTR pathRight, UINT status) { - TCHAR path1[_MAX_PATH] = {0}; - TCHAR path2[_MAX_PATH] = {0}; - TCHAR file1[_MAX_PATH] = {0}; - TCHAR file2[_MAX_PATH] = {0}; - TCHAR ext1[_MAX_PATH] = {0}; - TCHAR ext2[_MAX_PATH] = {0}; POSITION pos = m_pCtxt->GetFirstDiffPosition(); POSITION currentPos; DIFFITEM current; @@ -414,28 +408,18 @@ BOOL CDirDoc::UpdateItemStatus(LPCTSTR pathLeft, LPCTSTR pathRight, int i = 0; BOOL found = FALSE; - split_filename(pathLeft, path1, file1, ext1); - split_filename(pathRight, path2, file2, ext2); + CString path1, file1; + SplitFilename(pathLeft, &path1, &file1, 0); + CString path2, file2; + SplitFilename(pathRight, &path2, &file2, 0); // Path can contain (because of difftools?) '/' and '\' - // so for comparing purposes, convert whole path to use '/' - mf->ConvertPathToSlashes(path1); - mf->ConvertPathToSlashes(path2); - - // Add extensions back - if (ext1 != NULL) - { - _tcscat(file1, "."); - _tcscat(file1, ext1); - } - if (ext2 != NULL) - { - _tcscat(file2, "."); - _tcscat(file2, ext2); - } + // so for comparing purposes, convert whole path to use '\\' + path1.Replace('/', '\\'); + path2.Replace('/', '\\'); // Filenames must be identical - if (_tcsicmp( file1, file2) != 0) + if (file1 != file2) return FALSE; // Get first item @@ -449,12 +433,12 @@ BOOL CDirDoc::UpdateItemStatus(LPCTSTR pathLeft, LPCTSTR pathRight, // Path can contain (because of difftools?) '/' and '\' // so for comparing purposes, convert whole path to use '/' - mf->ConvertPathToSlashes(current.rpath); - mf->ConvertPathToSlashes(current.lpath); + replace_char(current.rpath, '/', '\\'); + replace_char(current.lpath, '/', '\\'); - if ( (_tcsicmp(current.lpath, path1) == 0) && - (_tcsicmp(current.rpath, path2) == 0) && - (_tcsicmp(current.filename, file1) == 0) ) + if (path1 == current.lpath && + path2 == current.rpath && + file1 == current.filename) { // Right item found! // Get index at view, update status to context diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index 6c27536b8..e670e9ecc 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -139,10 +139,10 @@ CMainFrame::CMainFrame() CRegKeyEx reg; if (reg.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\SourceSafe")) == ERROR_SUCCESS) { - TCHAR temp[MAX_PATH],path[MAX_PATH]; - reg.ReadChars(_T("SCCServerPath"), temp, MAX_PATH, _T("")); - split_filename(temp, path, NULL, NULL); - m_strVssPath.Format(_T("%s\\Ss.exe"), path); + TCHAR temp[_MAX_PATH] = {0}; + reg.ReadChars(_T("SCCServerPath"), temp, _MAX_PATH, _T("")); + CString spath = GetPathOnly(temp); + m_strVssPath = spath + _T("\\Ss.exe"); } } } @@ -284,11 +284,12 @@ void CMainFrame::ShowMergeDoc(LPCTSTR szLeft, LPCTSTR szRight) } // set the document types - TCHAR name[MAX_PATH],ext[MAX_PATH]; - split_filename(szLeft, NULL, name, ext); - m_pLeft->SetTextType(ext); - split_filename(szRight, NULL, name, ext); - m_pRight->SetTextType(ext); + CString sname, sext; + SplitFilename(szLeft, 0, &sname, &sext); + m_pLeft->SetTextType(sext); + SplitFilename(szRight, 0, &sname, &sext); + m_pRight->SetTextType(sext); + // SetTextType will revert to language dependent defaults for tab m_pLeft->SetTabSize(mf->m_nTabSize); @@ -390,16 +391,14 @@ void CMainFrame::OnUpdateHideBackupFiles(CCmdUI* pCmdUI) void CMainFrame::OnHelpGnulicense() { - TCHAR path[MAX_PATH], temp[MAX_PATH]; - GetModuleFileName(NULL, temp, MAX_PATH); - split_filename(temp, path, NULL, NULL); - _tcscat(path, _T("\\Copying")); - + CString spath = GetModulePath() + _T("\\Copying"); + CString url = _T("http://www.gnu.org/copyleft/gpl.html"); + CFileStatus status; - if (CFile::GetStatus(path, status)) - ShellExecute(m_hWnd, _T("open"), _T("notepad.exe"),path, NULL, SW_SHOWNORMAL); + if (CFile::GetStatus(spath, status)) + ShellExecute(m_hWnd, _T("open"), _T("notepad.exe"), spath, NULL, SW_SHOWNORMAL); else - ShellExecute(NULL, _T("open"), _T("http://www.gnu.org/copyleft/gpl.html"), NULL, NULL, SW_SHOWNORMAL); + ShellExecute(NULL, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); } BOOL CMainFrame::CheckSavePath(CString& strSavePath) @@ -443,17 +442,20 @@ BOOL CMainFrame::CheckSavePath(CString& strSavePath) CWaitCursor wait; m_strVssProject = dlg.m_strProject; theApp.WriteProfileString(_T("Settings"), _T("VssProject"), mf->m_strVssProject); - TCHAR args[1024]; - TCHAR path[MAX_PATH],name[MAX_PATH]; - split_filename(strSavePath,path,name,NULL); - _chdrive(toupper(path[0])-'A'+1); - _chdir(path); - DWORD code; - _stprintf(args,_T("checkout %s/%s"), m_strVssProject,name); + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); + if (!spath.IsEmpty()) + { + _chdrive(toupper(spath[0])-'A'+1); + _chdir(spath); + } + CString args; + args.Format(_T("checkout %s/%s"), m_strVssProject, sname); HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); if (hVss!=INVALID_HANDLE_VALUE) { WaitForSingleObject(hVss, INFINITE); + DWORD code; GetExitCodeProcess(hVss, &code); CloseHandle(hVss); if (code != 0) @@ -510,12 +512,12 @@ BOOL CMainFrame::CheckSavePath(CString& strSavePath) // BSP - Open the specific VSS data file using info from VSS dialog box vssdb.Open(m_strVssPath, m_strVssUser, m_strVssPassword); - - TCHAR path[MAX_PATH],name[MAX_PATH]; - split_filename(strSavePath,path,name,NULL); + + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); // BSP - Combine the project entered on the dialog box with the file name... - CString strItem = m_strVssProject+"/"+name; + CString strItem = m_strVssProject + '/' + sname; // BSP - ...to get the specific source safe item to be checked out m_vssi = vssdb.GetVSSItem( strItem, 0 ); @@ -547,13 +549,16 @@ BOOL CMainFrame::CheckSavePath(CString& strSavePath) if(userChoice == IDOK) { CWaitCursor wait; - TCHAR args[1024]; - TCHAR path[MAX_PATH],name[MAX_PATH]; - split_filename(strSavePath,path,name,NULL); - _chdrive(toupper(path[0])-'A'+1); - _chdir(path); + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); + if (!spath.IsEmpty()) + { + _chdrive(toupper(spath[0])-'A'+1); + _chdir(spath); + } DWORD code; - _stprintf(args,_T("checkout -c \"%s\" %s"), dlg.m_comments, name); + CString args; + args.Format(_T("checkout -c \"%s\" %s"), dlg.m_comments, sname); HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); if (hVss!=INVALID_HANDLE_VALUE) { @@ -794,25 +799,25 @@ BOOL CMainFrame::DoFileOpen(LPCTSTR pszLeft /*=NULL*/, LPCTSTR pszRight /*=NULL* } // check to make sure they are same type - TCHAR name[MAX_PATH]; + CString sname; BOOL bLeftIsDir = GetFileAttributes(strLeft)&FILE_ATTRIBUTE_DIRECTORY; BOOL bRightIsDir = GetFileAttributes(strRight)&FILE_ATTRIBUTE_DIRECTORY; if (bLeftIsDir && !bRightIsDir) { - split_filename(strRight, NULL, name, NULL); + SplitFilename(strRight, 0, &sname, 0); strLeft += _T("\\"); - strLeft += name; + strLeft += sname; bLeftIsDir = FALSE; } else if (!bLeftIsDir && bRightIsDir) { - split_filename(strLeft, NULL, name, NULL); + SplitFilename(strLeft, 0, &sname, 0); strRight += _T("\\"); - strRight += name; + strRight += sname; bRightIsDir = FALSE; } - if (gWriteLog) + if (1) { gLog.Write(_T("### Begin Comparison Parameters #############################\r\n") _T("\tLeft: %s\r\n") @@ -880,15 +885,14 @@ BOOL CMainFrame::CreateBackup(LPCTSTR pszPath) if (m_bBackup && CFile::GetStatus(pszPath, status)) { - TCHAR path[MAX_PATH], name[_MAX_FNAME], ext[_MAX_EXT]; - CString s; - // build the backup filename - split_filename(pszPath, path, name, ext); - if (*ext != _T('\0')) - s.Format(_T("%s\\%s.%s") BACKUP_FILE_EXT, path, name, ext); + CString spath, sname, sext; + SplitFilename(pszPath, &spath, &sname, &sext); + CString s; + if (!sext.IsEmpty()) + s.Format(_T("%s\\%s.%s") BACKUP_FILE_EXT, spath, sname, sext); else - s.Format(_T("%s\\%s") BACKUP_FILE_EXT, path, name); + s.Format(_T("%s\\%s") BACKUP_FILE_EXT, spath, sname); // get rid of the dest file DeleteFile(s); // (errors are handled from MoveFile below) @@ -1142,16 +1146,14 @@ void CMainFrame::UpdateResources() void CMainFrame::OnHelpContents() { - TCHAR path[MAX_PATH], temp[MAX_PATH]; - GetModuleFileName(NULL, temp, MAX_PATH); - split_filename(temp, path, NULL, NULL); - _tcscat(path, _T("\\Docs\\index.html")); + CString spath = GetModulePath(0) + _T("\\Docs\\index.html"); + CString url = _T("http://winmerge.sourceforge.net/docs/index.html"); CFileStatus status; - if (CFile::GetStatus(path, status)) - ShellExecute(NULL, _T("open"), path, NULL, NULL, SW_SHOWNORMAL); + if (CFile::GetStatus(spath, status)) + ShellExecute(NULL, _T("open"), spath, NULL, NULL, SW_SHOWNORMAL); else - ShellExecute(NULL, _T("open"), _T("http://winmerge.sourceforge.net/docs/index.html"), NULL, NULL, SW_SHOWNORMAL); + ShellExecute(NULL, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); } @@ -1240,7 +1242,7 @@ void CMainFrame::FreeRegExpList() void CMainFrame::RebuildRegExpList() { - _TCHAR tmp[MAX_PATH]; + _TCHAR tmp[_MAX_PATH] = {0}; _TCHAR* token; _TCHAR sep[] = "\r\n"; diff --git a/Src/Merge.cpp b/Src/Merge.cpp index afe7eac61..179376c67 100644 --- a/Src/Merge.cpp +++ b/Src/Merge.cpp @@ -300,20 +300,10 @@ BOOL CAboutDlg::OnInitDialog() BOOL SelectFile(CString& path, LPCTSTR root_path /*=NULL*/, LPCTSTR title /*= _T("Open")*/, - UINT filter /*=0*/, + UINT filterid /*=0*/, BOOL is_open /*=TRUE*/) { - CString s; - TCHAR buf[MAX_PATH*2] = _T("Directory Selection");; - - if (filter != 0) - VERIFY(s.LoadString(filter)); - else - VERIFY(s.LoadString(IDS_ALLFILES)); - CFileDialog dlg(is_open, NULL, NULL, - OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, s); - dlg.m_ofn.lpstrTitle = (LPCTSTR)title; - dlg.m_ofn.lpstrInitialDir = (LPTSTR)root_path; + CString sfile = _T("Directory Selection"); // check if specified path is a file if (root_path!=NULL) @@ -322,20 +312,26 @@ BOOL SelectFile(CString& path, LPCTSTR root_path /*=NULL*/, if (CFile::GetStatus(root_path,status) && (status.m_attribute!=CFile::Attribute::directory)) { - split_filename(root_path, NULL, buf, NULL); + SplitFilename(root_path, 0, &sfile, 0); } } - - - dlg.m_ofn.lpstrFile = buf; - dlg.m_ofn.nMaxFile = MAX_PATH*2; + CString filters; + if (filterid != 0) + VERIFY(filters.LoadString(filterid)); + else + VERIFY(filters.LoadString(IDS_ALLFILES)); + DWORD flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST; + CFileDialog dlg(is_open, NULL, sfile, flags, filters); + dlg.m_ofn.lpstrTitle = (LPCTSTR)title; + dlg.m_ofn.lpstrInitialDir = (LPTSTR)root_path; + if (dlg.DoModal()==IDOK) { path = dlg.GetPathName(); return TRUE; } - path.Empty(); + path = _T(""); return FALSE; } @@ -365,7 +361,7 @@ void CMergeApp::OnViewLanguage() #include "direct.h" typedef BOOL (*RecursiveFindCallback)(WIN32_FIND_DATA &fd, LPCTSTR pszPath, LPVOID pUserData); -TCHAR recurse_dir_regex[MAX_PATH]; +TCHAR recurse_dir_regex[_MAX_PATH] = {0}; BOOL MyRecursiveFindCallback(WIN32_FIND_DATA &fd, LPCTSTR pszPath, LPVOID pUserData) { @@ -465,16 +461,16 @@ BOOL RecursiveFindRegex(LPCTSTR szRegex, void SillyTestCrap() { - TCHAR teststring[][MAX_PATH] = { - "test.cpp", - "test.c", - "test.h", - "test.x", - "test.cpp2", - ".cpp", - "cpp", - "acpp", - "" + TCHAR teststring[][_MAX_PATH] = { + _T("test.cpp"), + _T("test.c"), + _T("test.h"), + _T("test.x"), + _T("test.cpp2"), + _T(".cpp"), + _T("cpp"), + _T("acpp"), + _T("") }; TCHAR ext[] = _T("*.cpp;*.h;*.c"); LPTSTR p; diff --git a/Src/Merge.h b/Src/Merge.h index 93b4cfd4f..12cb6878b 100644 --- a/Src/Merge.h +++ b/Src/Merge.h @@ -80,7 +80,7 @@ extern CMergeApp theApp; CMergeDoc *GetDoc(); BOOL SelectFile(CString& path, LPCTSTR root_path = NULL, LPCTSTR title = _T("Open"), - UINT filter =0, + UINT filterid =0, BOOL is_open =TRUE); //{{AFX_INSERT_LOCATION}} diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index d1771e718..72c220f94 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -199,7 +199,7 @@ void CMergeDoc::Dump(CDumpContext& dc) const // CMergeDoc commands // remove lines with flags==deleteflags, and clear all others -static PrepareBufferForRescan(CMergeDoc::CDiffTextBuffer * buf, DWORD deleteflags) +static void PrepareBufferForRescan(CMergeDoc::CDiffTextBuffer * buf, DWORD deleteflags) { for(int ct=buf->GetLineCount()-1; ct>=0; --ct) { @@ -233,7 +233,7 @@ BOOL CMergeDoc::Rescan() // perform rescan struct file_data inf[2]; char *free0=NULL,*free1=NULL; - char dir0[MAX_PATH],dir1[MAX_PATH], name0[MAX_PATH], name1[MAX_PATH]; + CString sdir0, sdir1, sname0, sname1; int val,failed=0, depth=0; bool same_files=FALSE; struct change *e, *p; @@ -260,8 +260,8 @@ BOOL CMergeDoc::Rescan() m_nDiffs=0; m_nCurDiff=-1; - split_filename(m_strTempLeftFile, dir0, name0, NULL); - split_filename(m_strTempRightFile, dir1, name1, NULL); + SplitFilename(m_strTempLeftFile, &sdir0, &sname0, 0); + SplitFilename(m_strTempRightFile, &sdir1, &sname1, 0); memset(&inf[0], 0,sizeof(inf[0])); memset(&inf[1], 0,sizeof(inf[1])); @@ -269,9 +269,15 @@ BOOL CMergeDoc::Rescan() int o_binary = always_text_flag ? 0:O_BINARY; /* Open the files and record their descriptors. */ - inf[0].name = *dir0 == 0 ? name0 : (free0 = dir_file_pathname (dir0, name0)); + if (sdir0.IsEmpty()) + inf[0].name = sname0; + else + inf[0].name = free0 = dir_file_pathname (sdir0, sname0); inf[0].desc = -2; - inf[1].name = *dir1 == 0 ? name1 : (free1 = dir_file_pathname (dir1, name1)); + if (sdir1.IsEmpty()) + inf[1].name = sname1; + else + inf[1].name = free1 = dir_file_pathname (sdir1, sname1); inf[1].desc = -2; if (inf[0].desc == -2) { @@ -666,12 +672,12 @@ BOOL CMergeDoc::DoSave(LPCTSTR szPath, BOOL bLeft) && (status.m_attribute & CFile::Attribute::directory)) { // third arg was a directory, so get append the filename - TCHAR name[MAX_PATH]; - split_filename(szPath, NULL, name, NULL); + CString sname; + SplitFilename(szPath, 0, &sname, 0); strSavePath = mf->m_strSaveAsPath; if (mf->m_strSaveAsPath.Right(1) != _T('\\')) strSavePath += _T('\\'); - strSavePath += name; + strSavePath += sname; } else strSavePath = mf->m_strSaveAsPath; diff --git a/Src/OpenDlg.cpp b/Src/OpenDlg.cpp index 04d89ee3f..9706e1b29 100644 --- a/Src/OpenDlg.cpp +++ b/Src/OpenDlg.cpp @@ -91,21 +91,21 @@ END_MESSAGE_MAP() void COpenDlg::OnLeftButton() { CString s; - TCHAR folder[MAX_PATH]=_T(""), name[MAX_PATH]; + CString sfolder, sname; CFileStatus status; UpdateData(TRUE); if (CFile::GetStatus(m_strLeft, status) && (status.m_attribute & CFile::Attribute::directory)) - _tcscpy(folder, m_strLeft); + sfolder = m_strLeft; else - split_filename(m_strLeft, folder, NULL, NULL); - if (SelectFile(s, folder)) + sfolder = GetPathOnly(m_strLeft); + if (SelectFile(s, sfolder)) { - split_filename(s, folder, name, NULL); - if (!_tcscmp(name, DIRSEL_TAG)) + SplitFilename(s, &sfolder, &sname, 0); + if (sname == DIRSEL_TAG) { - m_strLeft = folder; + m_strLeft = sfolder; } else m_strLeft = s; @@ -117,20 +117,20 @@ void COpenDlg::OnLeftButton() void COpenDlg::OnRightButton() { CString s; - TCHAR folder[MAX_PATH]=_T(""), name[MAX_PATH]; + CString sfolder, sname; CFileStatus status; UpdateData(TRUE); if (CFile::GetStatus(m_strRight, status) && (status.m_attribute & CFile::Attribute::directory)) - _tcscpy(folder, m_strRight); + sfolder = m_strRight; else - split_filename(m_strRight, folder, NULL, NULL); - if (SelectFile(s, folder)) + sfolder = GetPathOnly(m_strRight); + if (SelectFile(s, sfolder)) { - split_filename(s, folder, name, NULL); - if (!_tcscmp(name, DIRSEL_TAG)) - m_strRight = folder; + SplitFilename(s, &sfolder, &sname, 0); + if (sname == DIRSEL_TAG) + m_strRight = sfolder; else m_strRight = s; UpdateData(FALSE); @@ -222,8 +222,8 @@ BOOL COpenDlg::SelectFile(CString& path, LPCTSTR pszFolder) CString s; VERIFY(s.LoadString(IDS_ALLFILES) ); - CFileDialog pdlg(TRUE, NULL, DIRSEL_TAG, - OFN_NOTESTFILECREATE | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST, s); + DWORD flags = OFN_NOTESTFILECREATE | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST; + CFileDialog pdlg(TRUE, NULL, DIRSEL_TAG, flags, s); CString title; VERIFY(title.LoadString(IDS_OPEN_TITLE)); pdlg.m_ofn.lpstrTitle = (LPCTSTR)title; diff --git a/Src/readme.txt b/Src/readme.txt index 708496a5b..56e39db06 100644 --- a/Src/readme.txt +++ b/Src/readme.txt @@ -1,3 +1,6 @@ +2003-02-09 Perry + [ 683120 ] splitfilename changed to CStrings + 2003-02-08 Perry DirDoc.*: Changed from strftime to COleDateTime::Format (respects user prefs). First half of [ 679692 ] Update after editing (with code combination).