OSDN Git Service
(root)
/
tortoisegit
/
TortoiseGitJp.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a952205
)
character conversion fix for parsed filenames from igit.exe
author
Myagi
<snowcoder@gmail.com>
Mon, 23 Feb 2009 22:09:40 +0000
(23:09 +0100)
committer
Frank Li
<lznuaa@gmail.com>
Tue, 24 Feb 2009 01:06:13 +0000
(09:06 +0800)
src/Git/Git.cpp
patch
|
blob
|
history
src/Git/GitFolderStatus.cpp
patch
|
blob
|
history
src/Git/GitStatus.h
patch
|
blob
|
history
src/Git/TGitPath.cpp
patch
|
blob
|
history
src/Git/TGitPath.h
patch
|
blob
|
history
src/TGitCache/CachedDirectory.cpp
patch
|
blob
|
history
diff --git
a/src/Git/Git.cpp
b/src/Git/Git.cpp
index
922b181
..
3508193
100644
(file)
--- a/
src/Git/Git.cpp
+++ b/
src/Git/Git.cpp
@@
-868,6
+868,9
@@
public:
fileStatus.nFlags = 0;
\r
if (*line == 'D')
\r
fileStatus.nFlags |= WGFF_Directory;
\r
fileStatus.nFlags = 0;
\r
if (*line == 'D')
\r
fileStatus.nFlags |= WGFF_Directory;
\r
+ else if (*line != 'F')
\r
+ // parse error
\r
+ return false;
\r
line += 2;
\r
\r
// status
\r
line += 2;
\r
\r
// status
\r
@@
-884,6
+887,10
@@
public:
case 'I': fileStatus.nStatus = WGFS_Ignored; break;
\r
case 'U': fileStatus.nStatus = WGFS_Unversioned; break;
\r
case 'E': fileStatus.nStatus = WGFS_Empty; break;
\r
case 'I': fileStatus.nStatus = WGFS_Ignored; break;
\r
case 'U': fileStatus.nStatus = WGFS_Unversioned; break;
\r
case 'E': fileStatus.nStatus = WGFS_Empty; break;
\r
+ case '?': fileStatus.nStatus = WGFS_Unknown; break;
\r
+ default:
\r
+ // parse error
\r
+ return false;
\r
}
\r
line += 2;
\r
\r
}
\r
line += 2;
\r
\r
@@
-895,7
+902,7
@@
public:
{
\r
for (int i=0; i<20; i++)
\r
{
\r
{
\r
for (int i=0; i<20; i++)
\r
{
\r
- sha1[i] = (
HexChar(line[0]) << 8) | HexChar(line[1]
);
\r
+ sha1[i] = (
BYTE)((HexChar(line[0]) << 8) | HexChar(line[1])
);
\r
line += 2;
\r
}
\r
\r
line += 2;
\r
}
\r
\r
@@
-903,10
+910,17
@@
public:
}
\r
\r
// filename
\r
}
\r
\r
// filename
\r
- fileStatus.sFileName = line;
\r
+ int len = strlen(line);
\r
+ if (len && len < 2048)
\r
+ {
\r
+ WCHAR *buf = (WCHAR*)alloca((len*4+2)*sizeof(WCHAR));
\r
+ *buf = 0;
\r
+ MultiByteToWideChar(CP_ACP, 0, line, len+1, buf, len*4+1);
\r
+ fileStatus.sFileName = buf;
\r
\r
\r
- if ( (*m_pEnumCb)(&fileStatus,m_pUserData) )
\r
- return false;
\r
+ if (*buf && (*m_pEnumCb)(&fileStatus,m_pUserData))
\r
+ return false;
\r
+ }
\r
\r
return true;
\r
}
\r
\r
return true;
\r
}
\r
diff --git
a/src/Git/GitFolderStatus.cpp
b/src/Git/GitFolderStatus.cpp
index
507070b
..
16bde65
100644
(file)
--- a/
src/Git/GitFolderStatus.cpp
+++ b/
src/Git/GitFolderStatus.cpp
@@
-448,7
+448,7
@@
BOOL GitFolderStatus::fillstatusmap(const struct wgFile_s *pFile, void *pUserDat
stdstring str;
\r
if (pFile->sFileName)
\r
{
\r
stdstring str;
\r
if (pFile->sFileName)
\r
{
\r
- str = CUnicodeUtils::StdGetUnicode(pFile->sFileName);
\r
+ str =
pFile->sFileName;//
CUnicodeUtils::StdGetUnicode(pFile->sFileName);
\r
std::replace(str.begin(), str.end(), '/', '\\');
\r
//MessageBox(NULL, str.c_str(), _T(""), MB_OK);
\r
}
\r
std::replace(str.begin(), str.end(), '/', '\\');
\r
//MessageBox(NULL, str.c_str(), _T(""), MB_OK);
\r
}
\r
diff --git
a/src/Git/GitStatus.h
b/src/Git/GitStatus.h
index
aa21fa3
..
a6d61e5
100644
(file)
--- a/
src/Git/GitStatus.h
+++ b/
src/Git/GitStatus.h
@@
-111,7
+111,7
@@
enum WGFILEFLAGS
\r
struct wgFile_s
\r
{
\r
\r
struct wgFile_s
\r
{
\r
-
const char *sFileName;
// filename or directory relative to project root (using forward slashes)
\r
+
LPCTSTR sFileName;
// filename or directory relative to project root (using forward slashes)
\r
int nStatus; // the WGFILESTATUS of the file
\r
int nFlags; // a combination of WGFILEFLAGS
\r
\r
int nStatus; // the WGFILESTATUS of the file
\r
int nFlags; // a combination of WGFILEFLAGS
\r
\r
diff --git
a/src/Git/TGitPath.cpp
b/src/Git/TGitPath.cpp
index
a3ddc54
..
93787c0
100644
(file)
--- a/
src/Git/TGitPath.cpp
+++ b/
src/Git/TGitPath.cpp
@@
-128,6
+128,18
@@
void CTGitPath::SetFromGit(const char* pPath, bool bIsDirectory)
m_bIsDirectory = bIsDirectory;
\r
}
\r
\r
m_bIsDirectory = bIsDirectory;
\r
}
\r
\r
+void CTGitPath::SetFromGit(const TCHAR* pPath, bool bIsDirectory)
\r
+{
\r
+ Reset();
\r
+ if (pPath)
\r
+ {
\r
+ m_sFwdslashPath = pPath;
\r
+ SanitizeRootPath(m_sFwdslashPath, true);
\r
+ }
\r
+ m_bDirectoryKnown = true;
\r
+ m_bIsDirectory = bIsDirectory;
\r
+}
\r
+
\r
void CTGitPath::SetFromGit(const CString& sPath,CString *oldpath)
\r
{
\r
Reset();
\r
void CTGitPath::SetFromGit(const CString& sPath,CString *oldpath)
\r
{
\r
Reset();
\r
diff --git
a/src/Git/TGitPath.h
b/src/Git/TGitPath.h
index
cbb9256
..
22bfb09
100644
(file)
--- a/
src/Git/TGitPath.h
+++ b/
src/Git/TGitPath.h
@@
-50,6
+50,7
@@
public:
*/
\r
void SetFromGit(const char* pPath);
\r
void SetFromGit(const char* pPath, bool bIsDirectory);
\r
*/
\r
void SetFromGit(const char* pPath);
\r
void SetFromGit(const char* pPath, bool bIsDirectory);
\r
+ void SetFromGit(const TCHAR* pPath, bool bIsDirectory);
\r
void SetFromGit(const CString& sPath,CString *OldPath=NULL);
\r
\r
/**
\r
void SetFromGit(const CString& sPath,CString *OldPath=NULL);
\r
\r
/**
\r
diff --git
a/src/TGitCache/CachedDirectory.cpp
b/src/TGitCache/CachedDirectory.cpp
index
3edd90b
..
ed81ef3
100644
(file)
--- a/
src/TGitCache/CachedDirectory.cpp
+++ b/
src/TGitCache/CachedDirectory.cpp
@@
-566,7
+566,7
@@
BOOL CCachedDirectory::GetStatusCallback(const struct wgFile_s *pFile, void *pUs
{
\r
CCachedDirectory* pThis = (CCachedDirectory*)pUserData;
\r
\r
{
\r
CCachedDirectory* pThis = (CCachedDirectory*)pUserData;
\r
\r
- const
char
*path = pFile->sFileName;
\r
+ const
TCHAR
*path = pFile->sFileName;
\r
\r
if (path == NULL)
\r
return FALSE;
\r
\r
if (path == NULL)
\r
return FALSE;
\r