1 ///////////////////////////////////////////////////////////////////////////////
\r
3 // Module: Utility.cpp
\r
5 // Desc: See Utility.h
\r
7 // Copyright (c) 2007 TortoiseSVN
\r
8 // Copyright (c) 2003 Michael Carruth
\r
10 ///////////////////////////////////////////////////////////////////////////////
\r
13 #include "Utility.h"
\r
14 #include "resource.h"
\r
16 namespace CUtility {
\r
18 BSTR CUtility::AllocSysString(string s)
\r
20 #if defined(_UNICODE) || defined(OLE2ANSI)
\r
21 BSTR bstr = ::SysAllocStringLen(s.c_str(), s.size());
\r
23 int nLen = MultiByteToWideChar(CP_ACP, 0, s.c_str(),
\r
24 s.size(), NULL, NULL);
\r
25 BSTR bstr = ::SysAllocStringLen(NULL, nLen);
\r
27 MultiByteToWideChar(CP_ACP, 0, s.c_str(), s.size(), bstr, nLen);
\r
32 FILETIME CUtility::getLastWriteFileTime(string sFile)
\r
34 FILETIME ftLocal = {0};
\r
36 WIN32_FIND_DATA ff32;
\r
37 hFind = FindFirstFile(sFile.c_str(), &ff32);
\r
38 if (INVALID_HANDLE_VALUE != hFind)
\r
40 FileTimeToLocalFileTime(&(ff32.ftLastWriteTime), &ftLocal);
\r
46 FILETIME CUtility::getLastWriteFileTime(WCHAR * wszFile)
\r
48 FILETIME ftLocal = {0};
\r
50 WIN32_FIND_DATAW ff32;
\r
51 hFind = FindFirstFileW(wszFile, &ff32);
\r
52 if (INVALID_HANDLE_VALUE != hFind)
\r
54 FileTimeToLocalFileTime(&(ff32.ftLastWriteTime), &ftLocal);
\r
60 string CUtility::getAppName()
\r
62 TCHAR szFileName[_MAX_PATH];
\r
63 GetModuleFileName(NULL, szFileName, _MAX_FNAME);
\r
65 string sAppName; // Extract from last '\' to '.'
\r
67 *_tcsrchr(szFileName, '.') = '\0';
\r
68 sAppName = (_tcsrchr(szFileName, '\\')+1);
\r
74 string CUtility::getTempFileName()
\r
76 static int counter = 0;
\r
77 TCHAR szTempDir[MAX_PATH - 14] = _T("");
\r
78 TCHAR szTempFile[MAX_PATH] = _T("");
\r
80 if (GetTempPath(MAX_PATH - 14, szTempDir))
\r
81 GetTempFileName(szTempDir, getAppName().c_str(), ++counter, szTempFile);
\r
87 string CUtility::getSaveFileName()
\r
89 string sFilter = _T("Zip Files (*.zip)");
\r
91 OPENFILENAME ofn = {0}; // common dialog box structure
\r
92 TCHAR szFile[MAX_PATH] = {0}; // buffer for file name
\r
93 // Initialize OPENFILENAME
\r
94 ofn.lStructSize = sizeof(OPENFILENAME);
\r
95 ofn.hwndOwner = NULL;
\r
96 ofn.lpstrFile = szFile;
\r
97 ofn.nMaxFile = sizeof(szFile)/sizeof(TCHAR);
\r
98 ofn.Flags = OFN_OVERWRITEPROMPT;
\r
100 ofn.lpstrFilter = sFilter.c_str();
\r
101 ofn.nFilterIndex = 1;
\r
102 // Display the Open dialog box.
\r
103 bool bTargetSelected = !!GetSaveFileName(&ofn);
\r
105 DeleteFile(ofn.lpstrFile); // Just in-case it already exist
\r
106 return ofn.lpstrFile;
\r