diff --git a/grepWinNP3/default.build b/grepWinNP3/default.build
index 15090e444..0f4afc957 100644
--- a/grepWinNP3/default.build
+++ b/grepWinNP3/default.build
@@ -105,6 +105,11 @@
+
+
+
+
+
@@ -165,6 +170,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/grepWinNP3/src/SearchDlg.cpp b/grepWinNP3/src/SearchDlg.cpp
index b46a50f22..0f1783c11 100644
--- a/grepWinNP3/src/SearchDlg.cpp
+++ b/grepWinNP3/src/SearchDlg.cpp
@@ -266,7 +266,7 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
ret = ::GetLongPathName(m_searchpath.c_str(), NULL, 0);
if (ret)
{
- std::unique_ptr pathbuf(new TCHAR[ret + 2]);
+ auto pathbuf = std::make_unique(ret + 2);
ret = ::GetLongPathName(m_searchpath.c_str(), pathbuf.get(), ret + 1);
m_searchpath = std::wstring(pathbuf.get(), ret);
}
@@ -337,7 +337,7 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
}
}
- TCHAR buf[MAX_PATH] = {0};
+ wchar_t buf[MAX_PATH] = {0};
if (m_bSizeC && (m_lSize != (uint64_t)-1))
{
_stprintf_s(buf, _countof(buf), L"%I64u", m_lSize);
@@ -582,21 +582,18 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
if (m_updateCheckThread.joinable())
m_updateCheckThread.join();
#endif
- if (!DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\escclose", FALSE)))
+ if (IsEvaluationThreadRunning())
+ InterlockedExchange(&s_Cancelled, TRUE);
+ else
{
- if (IsEvaluationThreadRunning())
- InterlockedExchange(&s_Cancelled, TRUE);
- else
- {
- SaveSettings();
- m_AutoCompleteFilePatterns.Save();
- m_AutoCompleteSearchPatterns.Save();
- m_AutoCompleteReplacePatterns.Save();
- m_AutoCompleteSearchPaths.Save();
- EndDialog(*this, IDCANCEL);
- }
+ SaveSettings();
+ m_AutoCompleteFilePatterns.Save();
+ m_AutoCompleteSearchPatterns.Save();
+ m_AutoCompleteReplacePatterns.Save();
+ m_AutoCompleteSearchPaths.Save();
+ EndDialog(*this, IDCANCEL);
}
- }
+ }
break;
case WM_DESTROY:
CTheme::Instance().RemoveRegisteredCallback(m_themeCallbackId);
@@ -638,7 +635,7 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
{
auto buf = GetDlgItemText(IDC_SEARCHPATH);
bool bIsDir = !!PathIsDirectory(buf.get());
- if ((!bIsDir) && _tcschr(buf.get(), '|'))
+ if ((!bIsDir) && wcschr(buf.get(), '|'))
bIsDir = true; // assume directories in case of multiple paths
auto sInverseSearch = TranslatedString(hResource, IDS_INVERSESEARCH);
@@ -797,7 +794,7 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
SetDlgItemText(hwndDlg, IDC_SEARCHTEXT, m_searchString.c_str());
}
- g_startTime = GetTickCount();
+ g_startTime = GetTickCount64();
}
break;
@@ -1023,8 +1020,8 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
if (id == IDC_CAPTURESEARCH)
{
m_bCaptureSearch = true;
- m_bNOTSearch = false;
- m_bReplace = false;
+ m_bNOTSearch = false;
+ m_bReplace = false;
}
SetDlgItemText(*this, IDOK, TranslatedString(hResource, IDS_STOP).c_str());
@@ -1097,7 +1094,10 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
if (m_updateCheckThread.joinable())
m_updateCheckThread.join();
#endif
- if (DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\escclose", FALSE)))
+ bool const escClose = bPortable ? g_iniFile.GetBoolValue(L"settings", L"escclose", false) :
+ !!DWORD(CRegStdDWORD(L"Software\\grepWinNP3\\escclose", FALSE));
+
+ if (escClose)
{
if (IsEvaluationThreadRunning())
InterlockedExchange(&s_Cancelled, TRUE);
@@ -1164,7 +1164,7 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
break;
}
- std::unique_ptr pathbuf(new WCHAR[MAX_PATH_NEW]);
+ auto pathbuf = std::make_unique(MAX_PATH_NEW);
wcscpy_s(pathbuf.get(), MAX_PATH_NEW, path.get());
browse.SetInfo(TranslatedString(hResource, IDS_SELECTPATHTOSEARCH).c_str());
if (browse.Show(*this, pathbuf.get(), MAX_PATH_NEW, m_searchpath.c_str()) == CBrowseFolder::OK)
@@ -1183,7 +1183,7 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
int len = GetDlgItemTextLength(IDC_SEARCHTEXT);
auto buf = GetDlgItemText(IDC_SEARCHPATH);
bool bIsDir = !!PathIsDirectory(buf.get());
- if ((!bIsDir) && _tcschr(buf.get(), '|'))
+ if ((!bIsDir) && wcschr(buf.get(), '|'))
bIsDir = true; // assume directories in case of multiple paths
bool bIncludeSubfolders = (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED);
DialogEnableWindow(IDC_ALLSIZERADIO, bIsDir);
@@ -1200,9 +1200,9 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
DialogEnableWindow(IDC_FILEPATTERNTEXT, bIsDir);
// change the dialog title to "grepWinNP3 : search/path"
- TCHAR compactPath[100] = {0};
+ wchar_t compactPath[100] = {0};
PathCompactPathEx(compactPath, buf.get(), 40, 0);
- TCHAR titleBuf[MAX_PATH] = {0};
+ wchar_t titleBuf[MAX_PATH] = {0};
_stprintf_s(titleBuf, _countof(titleBuf), L"grepWinNP3 : %s", compactPath);
SetWindowText(*this, titleBuf);
}
@@ -1215,7 +1215,7 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
auto buf = GetDlgItemText(IDC_SEARCHPATH);
bool bIncludeSubfolders = (IsDlgButtonChecked(*this, IDC_INCLUDESUBFOLDERS) == BST_CHECKED);
bool bIsDir = !!PathIsDirectory(buf.get());
- if ((!bIsDir) && _tcschr(buf.get(), '|'))
+ if ((!bIsDir) && wcschr(buf.get(), '|'))
bIsDir = true; // assume directories in case of multiple paths
DialogEnableWindow(IDC_EXCLUDEDIRSPATTERN, bIsDir || bIncludeSubfolders);
}
@@ -1237,9 +1237,9 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
{
if (msg == EN_CHANGE)
{
- TCHAR buf[20] = {0};
+ wchar_t buf[20] = {0};
::GetDlgItemText(*this, IDC_SIZEEDIT, buf, _countof(buf));
- if (_tcslen(buf))
+ if (wcslen(buf))
{
if (IsDlgButtonChecked(*this, IDC_ALLSIZERADIO) == BST_CHECKED)
{
@@ -1477,6 +1477,8 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
// Show the save file dialog
hr = pfd->Show(*this);
+ if (hr == HRESULT_FROM_WIN32(ERROR_CANCELLED))
+ break;
if (FailedShowMessage(hr))
break;
IShellItemPtr psiResult = nullptr;
@@ -1573,11 +1575,11 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
exportlinenumbers = includeMatchLineNumbers ? 1 : 0;
exportlinecontent = includeMatchLineTexts ? 1 : 0;
}
- SHELLEXECUTEINFO sei = { 0 };
- sei.cbSize = sizeof(SHELLEXECUTEINFO);
- sei.lpVerb = TEXT("open");
- sei.lpFile = path.c_str();
- sei.nShow = SW_SHOWNORMAL;
+ SHELLEXECUTEINFO sei = {0};
+ sei.cbSize = sizeof(SHELLEXECUTEINFO);
+ sei.lpVerb = TEXT("open");
+ sei.lpFile = path.c_str();
+ sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
}
}
@@ -1622,7 +1624,7 @@ void CSearchDlg::SaveWndPosition()
void CSearchDlg::UpdateInfoLabel()
{
std::wstring sText;
- TCHAR buf[1024] = {0};
+ wchar_t buf[1024] = {0};
_stprintf_s(buf, _countof(buf), TranslatedString(hResource, IDS_INFOLABEL).c_str(),
m_searchedItems, m_totalitems-m_searchedItems, m_totalmatches, m_items.size());
sText = buf;
@@ -2130,11 +2132,15 @@ void CSearchDlg::DoListNotify(LPNMITEMACTIVATE lpNMItemActivate)
else
{
auto filepart = pInfo->filepath.substr(pInfo->filepath.find_last_of('\\'));
- auto len = pInfo->filepath.size() - m_searchpath.size() - filepart.size();
+ auto len = pInfo->filepath.size() - m_searchpath.size() - filepart.size();
if (len > 0)
--len;
if (m_searchpath.size() < pInfo->filepath.size())
+ {
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.substr(m_searchpath.size() + 1, len).c_str(), pItem->cchTextMax - 1);
+ if (pItem->pszText[0] == 0)
+ wcscpy_s(pItem->pszText, pItem->cchTextMax, L"\\.");
+ }
else
wcsncpy_s(pItem->pszText, pItem->cchTextMax, pInfo->filepath.c_str(), pItem->cchTextMax - 1);
}
@@ -2328,14 +2334,14 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
bool filelist = (IsDlgButtonChecked(*this, IDC_RESULTFILES) == BST_CHECKED);
if (!filelist)
{
- HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
- TCHAR textlinebuf[MAX_PATH] = { 0 };
- LVITEM lv = { 0 };
- lv.iItem = listIndex;
- lv.iSubItem = 1; // line number
- lv.mask = LVIF_TEXT;
- lv.pszText = textlinebuf;
- lv.cchTextMax = _countof(textlinebuf);
+ HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
+ wchar_t textlinebuf[MAX_PATH] = {0};
+ LVITEM lv = {0};
+ lv.iItem = listIndex;
+ lv.iSubItem = 1; // line number
+ lv.mask = LVIF_TEXT;
+ lv.pszText = textlinebuf;
+ lv.cchTextMax = _countof(textlinebuf);
if (ListView_GetItem(hListControl, &lv))
SearchReplace(cmd, L"%line%", textlinebuf);
}
@@ -2369,7 +2375,7 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
SecureZeroMemory(&startupInfo, sizeof(startupInfo));
startupInfo.cb = sizeof(STARTUPINFO);
SecureZeroMemory(&processInfo, sizeof(processInfo));
- CreateProcess(nullptr, const_cast(cmd.c_str()), nullptr, nullptr, FALSE, CREATE_NEW_PROCESS_GROUP, nullptr, nullptr, &startupInfo, &processInfo);
+ CreateProcess(NULL, const_cast(cmd.c_str()), NULL, NULL, FALSE, 0, 0, NULL, &startupInfo, &processInfo);
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess);
return;
@@ -2385,13 +2391,13 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
return;
}
- AssocQueryString(ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR_COMMAND, ext.c_str(), nullptr, nullptr, &buflen);
- std::unique_ptr cmdbuf(new TCHAR[buflen + 1]);
- AssocQueryString(ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR_COMMAND, ext.c_str(), nullptr, cmdbuf.get(), &buflen);
+ AssocQueryString(ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR_COMMAND, ext.c_str(), NULL, NULL, &buflen);
+ auto cmdbuf = std::make_unique(buflen + 1);
+ AssocQueryString(ASSOCF_INIT_DEFAULTTOSTAR, ASSOCSTR_COMMAND, ext.c_str(), NULL, cmdbuf.get(), &buflen);
std::wstring application = cmdbuf.get();
// normalize application path
- DWORD len = ExpandEnvironmentStrings(application.c_str(), nullptr, 0);
- cmdbuf = std::unique_ptr(new TCHAR[len + 1]);
+ DWORD len = ExpandEnvironmentStrings(application.c_str(), NULL, 0);
+ cmdbuf = std::make_unique(buflen + 1);
ExpandEnvironmentStrings(application.c_str(), cmdbuf.get(), len);
application = cmdbuf.get();
@@ -2402,7 +2408,7 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
bool filelist = (IsDlgButtonChecked(*this, IDC_RESULTFILES) == BST_CHECKED);
std::wstring linenumberparam_before;
std::wstring linenumberparam;
- TCHAR textlinebuf[MAX_PATH] = { 0 };
+ wchar_t textlinebuf[MAX_PATH] = {0};
if (!filelist)
{
HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
@@ -2422,6 +2428,8 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
// use the first matching line in this file
swprintf_s(textlinebuf, L"%ld", inf.matchlinesnumbers[0]);
}
+ if (textlinebuf[0] == 0)
+ wcscpy_s(textlinebuf, L"0");
std::wstring appname = application;
std::transform(appname.begin(), appname.end(), appname.begin(), ::towlower);
@@ -2480,7 +2488,7 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
{
// Visual Studio Code
linenumberparam_before = L"--goto";
- linenumberparam = CStringUtils::Format(L":%s", textlinebuf);
+ linenumberparam = CStringUtils::Format(L":%s", textlinebuf);
}
// replace "%1" with %1
@@ -2523,7 +2531,7 @@ void CSearchDlg::OpenFileAtListIndex(int listIndex)
startupInfo.cb = sizeof(STARTUPINFO);
SecureZeroMemory(&processInfo, sizeof(processInfo));
- CreateProcess(nullptr, const_cast(application.c_str()), nullptr, nullptr, FALSE, 0, nullptr, nullptr, &startupInfo, &processInfo);
+ CreateProcess(NULL, const_cast(application.c_str()), NULL, NULL, FALSE, 0, 0, NULL, &startupInfo, &processInfo);
CloseHandle(processInfo.hThread);
CloseHandle(processInfo.hProcess);
}
@@ -2563,12 +2571,12 @@ bool CSearchDlg::SaveSettings()
// split the pattern string into single patterns and
// add them to an array
- TCHAR * pBuf = buf.get();
- size_t pos = 0;
+ auto pBuf = buf.get();
+ size_t pos = 0;
m_patterns.clear();
do
{
- pos = _tcscspn(pBuf, L"|");
+ pos = wcscspn(pBuf, L"|");
std::wstring s = std::wstring(pBuf, pos);
if (!s.empty())
{
@@ -2821,7 +2829,7 @@ bool CSearchDlg::ExtCompareDesc(const CSearchInfo& Entry1, const CSearchInfo& En
return StrCmpLogicalW(ext1.c_str(), ext2.c_str()) > 0;
}
-bool grepWin_match_i(const std::wstring& the_regex, const TCHAR *pText)
+bool grepWin_match_i(const std::wstring& the_regex, const wchar_t* pText)
{
try
{
@@ -2842,7 +2850,7 @@ DWORD CSearchDlg::SearchThread()
{
ProfileTimer profile(L"SearchThread");
- std::unique_ptr pathbuf(new TCHAR[MAX_PATH_NEW]);
+ auto pathbuf = std::make_unique(MAX_PATH_NEW);
DWORD const nMaxNumOfWorker = std::thread::hardware_concurrency() << 2;
DWORD const nOfWorker = max(min(bPortable ? g_iniFile.GetLongValue(L"global", L"MaxNumOfWorker", nMaxNumOfWorker >> 1) :
@@ -2853,12 +2861,12 @@ DWORD CSearchDlg::SearchThread()
// split the path string into single paths and
// add them to an array
- const TCHAR * pBufSearchPath = m_searchpath.c_str();
- size_t pos = 0;
+ const auto* pBufSearchPath = m_searchpath.c_str();
+ size_t pos = 0;
std::vector pathvector;
do
{
- pos = _tcscspn(pBufSearchPath, L"|");
+ pos = wcscspn(pBufSearchPath, L"|");
std::wstring s = std::wstring(pBufSearchPath, pos);
if (!s.empty())
{
@@ -2937,13 +2945,13 @@ DWORD CSearchDlg::SearchThread()
while ((fileEnumerator.NextFile(sPath, &bIsDirectory, bRecurse) || bAlwaysSearch) && !IsCancelled())
{
+ if (bAlwaysSearch && _wcsicmp(searchpath.c_str(), sPath.c_str()))
+ bAlwaysSearch = false;
+
if (s_BackupAndTmpFiles.contains(sPath))
continue; // don't search own backup files
- if (bAlwaysSearch && _wcsicmp(searchpath.c_str(), sPath.c_str()))
- bAlwaysSearch = false;
-
- _tcscpy_s(pathbuf.get(), MAX_PATH_NEW, sPath.c_str());
+ wcscpy_s(pathbuf.get(), MAX_PATH_NEW, sPath.c_str());
if (!bIsDirectory)
{
bool bSearch = false;
@@ -2952,8 +2960,8 @@ DWORD CSearchDlg::SearchThread()
FILETIME ft = {0};
if (bAlwaysSearch)
{
- _tcscpy_s(pathbuf.get(), MAX_PATH_NEW, searchpath.c_str());
- CAutoFile hFile = CreateFile(searchpath.c_str(), FILE_READ_EA, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ wcscpy_s(pathbuf.get(), MAX_PATH_NEW, searchpath.c_str());
+ CAutoFile hFile = CreateFile(searchpath.c_str(), FILE_READ_EA, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile)
{
BY_HANDLE_FILE_INFORMATION bhfi = {0};
@@ -3237,8 +3245,8 @@ bool CSearchDlg::MatchPath(LPCTSTR pathbuf)
{
bool bPattern = false;
// find start of pathname
- const TCHAR * pName = _tcsrchr(pathbuf, '\\');
- if (pName == nullptr)
+ const auto* pName = wcsrchr(pathbuf, '\\');
+ if (pName == NULL)
pName = pathbuf;
else
pName++; // skip the last '\\' char
@@ -3312,7 +3320,7 @@ int CSearchDlg::SearchFile(std::shared_ptr sinfoPtr, const std::wst
}
}
- CTextFile textfile;
+ CTextFile textfile;
CTextFile::UnicodeType type = CTextFile::AUTOTYPE;
bool bLoadResult = false;
if (searchFlags.bForceBinary)
@@ -3606,9 +3614,9 @@ int CSearchDlg::SearchFile(std::shared_ptr sinfoPtr, const std::wst
} while (!hFile && retrycounter < 5);
if (hFile)
{
- std::unique_ptr fbuf(new char[4096]);
- DWORD bytesread = 0;
- size_t pos = 0;
+ auto fbuf = std::make_unique(4096);
+ DWORD bytesread = 0;
+ size_t pos = 0;
while (ReadFile(hFile, fbuf.get(), 4096, &bytesread, NULL))
{
if (bytesread == 0)
@@ -3722,7 +3730,7 @@ int CSearchDlg::SearchFile(std::shared_ptr sinfoPtr, const std::wst
}
-void CSearchDlg::formatDate(TCHAR date_native[], const FILETIME& filetime, bool force_short_fmt)
+void CSearchDlg::formatDate(wchar_t date_native[], const FILETIME& filetime, bool force_short_fmt)
{
date_native[0] = '\0';
@@ -3737,8 +3745,8 @@ void CSearchDlg::formatDate(TCHAR date_native[], const FILETIME& filetime, bool
SYSTEMTIME localsystime;
SystemTimeToTzSpecificLocalTime(&timeZone, &systemtime,&localsystime);
- TCHAR timebuf[GREPWIN_DATEBUFFER] = {0};
- TCHAR datebuf[GREPWIN_DATEBUFFER] = {0};
+ wchar_t timebuf[GREPWIN_DATEBUFFER] = {0};
+ wchar_t datebuf[GREPWIN_DATEBUFFER] = {0};
LCID locale = MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), SORT_DEFAULT);
@@ -3746,17 +3754,17 @@ void CSearchDlg::formatDate(TCHAR date_native[], const FILETIME& filetime, bool
DWORD flags = force_short_fmt ? DATE_SHORTDATE : DATE_LONGDATE;
- GetDateFormat(locale, flags, &localsystime, nullptr, datebuf, GREPWIN_DATEBUFFER);
- GetTimeFormat(locale, 0, &localsystime, nullptr, timebuf, GREPWIN_DATEBUFFER);
- _tcsncat_s(date_native, GREPWIN_DATEBUFFER, datebuf, GREPWIN_DATEBUFFER);
- _tcsncat_s(date_native, GREPWIN_DATEBUFFER, L" ", GREPWIN_DATEBUFFER);
- _tcsncat_s(date_native, GREPWIN_DATEBUFFER, timebuf, GREPWIN_DATEBUFFER);
+ GetDateFormat(locale, flags, &localsystime, NULL, datebuf, GREPWIN_DATEBUFFER);
+ GetTimeFormat(locale, 0, &localsystime, NULL, timebuf, GREPWIN_DATEBUFFER);
+ wcsncat_s(date_native, GREPWIN_DATEBUFFER, datebuf, GREPWIN_DATEBUFFER);
+ wcsncat_s(date_native, GREPWIN_DATEBUFFER, L" ", GREPWIN_DATEBUFFER);
+ wcsncat_s(date_native, GREPWIN_DATEBUFFER, timebuf, GREPWIN_DATEBUFFER);
}
int CSearchDlg::CheckRegex()
{
auto buf = GetDlgItemText(IDC_SEARCHTEXT);
- auto len = (int)_tcslen(buf.get());
+ auto len = (int)wcslen(buf.get());
if (IsDlgButtonChecked(*this, IDC_REGEXRADIO) == BST_CHECKED)
{
m_bUseRegex = true;
@@ -3818,10 +3826,10 @@ int CSearchDlg::CheckRegex()
void CSearchDlg::AutoSizeAllColumns()
{
- HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
- auto headerCtrl = ListView_GetHeader(hListControl);
- auto nItemCount = ListView_GetItemCount(hListControl);
- TCHAR textbuf[MAX_PATH*4] = { 0 };
+ HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
+ auto headerCtrl = ListView_GetHeader(hListControl);
+ int nItemCount = ListView_GetItemCount(hListControl);
+ wchar_t textbuf[MAX_PATH * 4] = {0};
if (headerCtrl)
{
int maxcol = Header_GetItemCount(headerCtrl) - 1;
diff --git a/grepWinNP3/src/SearchDlg.h b/grepWinNP3/src/SearchDlg.h
index 196173a0a..6577eaf4d 100644
--- a/grepWinNP3/src/SearchDlg.h
+++ b/grepWinNP3/src/SearchDlg.h
@@ -127,7 +127,7 @@ protected:
void UpdateInfoLabel();
bool SaveSettings();
void SaveWndPosition();
- void formatDate(TCHAR date_native[], const FILETIME& filetime, bool force_short_fmt);
+ void formatDate(wchar_t date_native[], const FILETIME& filetime, bool force_short_fmt);
int CheckRegex();
bool MatchPath(LPCTSTR pathbuf);
void AutoSizeAllColumns();
diff --git a/grepWinNP3/src/last/version.h b/grepWinNP3/src/last/version.h
index 0c24a0a38..3661110f7 100644
--- a/grepWinNP3/src/last/version.h
+++ b/grepWinNP3/src/last/version.h
@@ -6,13 +6,13 @@
//#pragma message(__LOC__"Run the NAnt script to get proper version info")
-#define FILEVER 2, 1, 3, 24
-#define PRODUCTVER 2, 1, 3, 24
-#define STRFILEVER "2.1.3.24\0"
-#define STRPRODUCTVER "2.1.3.24\0"
+#define FILEVER 2, 1, 3, 25
+#define PRODUCTVER 2, 1, 3, 25
+#define STRFILEVER "2.1.3.25\0"
+#define STRPRODUCTVER "2.1.3.25\0"
#define GREPWIN_VERMAJOR 2
#define GREPWIN_VERMINOR 1
#define GREPWIN_VERMICRO 3
-#define GREPWIN_VERBUILD 24
-#define GREPWIN_VERDATE "2020-08-12"
+#define GREPWIN_VERBUILD 25
+#define GREPWIN_VERDATE "2020-08-16"