OSDN Git Service

New parser can show Chinese file name
[tortoisegit/TortoiseGitJp.git] / src / Git / TGitPath.cpp
index bf0ec78..e33d018 100644 (file)
@@ -882,14 +882,18 @@ int CTGitPathList::ParserFromLog(BYTE_VECTOR &log)
 {\r
        this->Clear();\r
        int pos=0;\r
+       BYTE *p=&log[0];\r
        //CString one;\r
        CTGitPath path;\r
        m_Action=0;\r
-       while( pos>=0 )\r
+       while( pos>=0 && pos<log.size())\r
        {\r
                //one=log.Tokenize(_T("\n"),pos);\r
                path.Reset();\r
-               if(log[pos]==_T(':'))\r
+               if(log[pos]=='\n')\r
+                       pos++;\r
+\r
+               if(log[pos]==':')\r
                {\r
                        int end=log.find(0,pos);\r
                        int actionstart=-1;\r
@@ -949,12 +953,7 @@ int CTGitPathList::ParserFromLog(BYTE_VECTOR &log)
                                AddPath(path);\r
                                \r
                        }\r
-               \r
-                       pos=log.find(0,pos);\r
-                       if(pos>=0)\r
-                       {\r
-                               pos++;\r
-                       }\r
+       \r
                }else\r
                {                       \r
                        int tabstart=0;\r
@@ -968,16 +967,17 @@ int CTGitPathList::ParserFromLog(BYTE_VECTOR &log)
                        if(tabstart >=0)\r
                        {\r
                                log[tabstart]=0;\r
-                               pos=tabstart;\r
                                g_Git.StringAppend(&StatAdd,&log[pos],CP_UTF8);\r
+                               pos=tabstart+1;\r
                        }\r
 \r
                        tabstart=log.find('\t',pos);\r
                        if(tabstart >=0)\r
                        {\r
                                log[tabstart]=0;\r
-                               pos=tabstart;\r
+                               \r
                                g_Git.StringAppend(&StatDel,&log[pos],CP_UTF8);\r
+                               pos=tabstart+1;\r
                        }\r
                        \r
                        if(log[pos] == 0) //rename\r
@@ -1010,11 +1010,8 @@ int CTGitPathList::ParserFromLog(BYTE_VECTOR &log)
                                AddPath(path);\r
                        }\r
 \r
-                       pos=log.find(0,pos);\r
-                       if(pos>=0)\r
-                               pos++;\r
                }\r
-\r
+               pos=log.findNextString(pos);\r
        }\r
        return pos;\r
 }\r