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;
}
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;
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
// 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
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");
}
}
}
}
// 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);
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)
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)
// 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 );
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)
{
}
// 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")
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)
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);
}
void CMainFrame::RebuildRegExpList()
{
- _TCHAR tmp[MAX_PATH];
+ _TCHAR tmp[_MAX_PATH] = {0};
_TCHAR* token;
_TCHAR sep[] = "\r\n";
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)
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;
}
#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)
{
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;
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}}
// 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)
{
// 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;
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]));
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)
{
&& (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;
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;
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);
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;
+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).