OSDN Git Service

Update TortoiseUDiff to version 16491
[tortoisegit/TortoiseGitJp.git] / src / crashrpt / Utility.cpp
1 ///////////////////////////////////////////////////////////////////////////////\r
2 //\r
3 //  Module: Utility.cpp\r
4 //\r
5 //    Desc: See Utility.h\r
6 //\r
7 // Copyright (c) 2007 TortoiseSVN\r
8 // Copyright (c) 2003 Michael Carruth\r
9 //\r
10 ///////////////////////////////////////////////////////////////////////////////\r
11 \r
12 #include "stdafx.h"\r
13 #include "Utility.h"\r
14 #include "resource.h"\r
15 \r
16 namespace CUtility {\r
17 \r
18 BSTR CUtility::AllocSysString(string s)\r
19 {\r
20 #if defined(_UNICODE) || defined(OLE2ANSI)\r
21         BSTR bstr = ::SysAllocStringLen(s.c_str(), s.size());\r
22 #else\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
26         if(bstr != NULL)\r
27                 MultiByteToWideChar(CP_ACP, 0, s.c_str(), s.size(), bstr, nLen);\r
28 #endif\r
29         return bstr;\r
30 }\r
31 \r
32 FILETIME CUtility::getLastWriteFileTime(string sFile)\r
33 {\r
34    FILETIME          ftLocal = {0};\r
35    HANDLE            hFind;\r
36    WIN32_FIND_DATA   ff32;\r
37    hFind = FindFirstFile(sFile.c_str(), &ff32);\r
38    if (INVALID_HANDLE_VALUE != hFind)\r
39    {\r
40       FileTimeToLocalFileTime(&(ff32.ftLastWriteTime), &ftLocal);\r
41       FindClose(hFind);        \r
42    }\r
43    return ftLocal;\r
44 }\r
45 \r
46 FILETIME CUtility::getLastWriteFileTime(WCHAR * wszFile)\r
47 {\r
48         FILETIME          ftLocal = {0};\r
49         HANDLE            hFind;\r
50         WIN32_FIND_DATAW  ff32;\r
51         hFind = FindFirstFileW(wszFile, &ff32);\r
52         if (INVALID_HANDLE_VALUE != hFind)\r
53         {\r
54                 FileTimeToLocalFileTime(&(ff32.ftLastWriteTime), &ftLocal);\r
55                 FindClose(hFind);        \r
56         }\r
57         return ftLocal;\r
58 }\r
59 \r
60 string CUtility::getAppName()\r
61 {\r
62    TCHAR szFileName[_MAX_PATH];\r
63    GetModuleFileName(NULL, szFileName, _MAX_FNAME);\r
64 \r
65    string sAppName; // Extract from last '\' to '.'\r
66 \r
67    *_tcsrchr(szFileName, '.') = '\0';\r
68    sAppName = (_tcsrchr(szFileName, '\\')+1);\r
69 \r
70    return sAppName;\r
71 }\r
72 \r
73 \r
74 string CUtility::getTempFileName()\r
75 {\r
76    static int counter = 0;\r
77    TCHAR szTempDir[MAX_PATH - 14]   = _T("");\r
78    TCHAR szTempFile[MAX_PATH]       = _T("");\r
79 \r
80    if (GetTempPath(MAX_PATH - 14, szTempDir))\r
81       GetTempFileName(szTempDir, getAppName().c_str(), ++counter, szTempFile);\r
82 \r
83    return szTempFile;\r
84 }\r
85 \r
86 \r
87 string CUtility::getSaveFileName()\r
88 {\r
89    string sFilter = _T("Zip Files (*.zip)");\r
90 \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
99 \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
104 \r
105    DeleteFile(ofn.lpstrFile);  // Just in-case it already exist\r
106    return ofn.lpstrFile;\r
107 }\r
108 \r
109 };\r