OSDN Git Service

Fix error in call to GetTimeZoneInformation().
[tortoisegit/TortoiseGitJp.git] / src / Git / Git.cpp
index 97885fa..09f631b 100644 (file)
@@ -74,18 +74,23 @@ int CGit::RunAsync(CString cmd,PROCESS_INFORMATION *piOut,HANDLE *hReadOut,CStri
 }\r
 //Must use sperate function to convert ANSI str to union code string\r
 //Becuase A2W use stack as internal convert buffer. \r
-void CGit::StringAppend(CString *str,BYTE *p,int code)\r
+void CGit::StringAppend(CString *str,BYTE *p,int code,int length)\r
 {\r
      //USES_CONVERSION;\r
         //str->Append(A2W_CP((LPCSTR)p,code));\r
        WCHAR * buf;\r
-       int len = strlen((const char*)p);\r
+\r
+       int len ;\r
+       if(length<0)\r
+               len= strlen((const char*)p);\r
+       else\r
+               len=length;\r
        //if (len==0)\r
        //      return ;\r
        //buf = new WCHAR[len*4 + 1];\r
        buf = str->GetBuffer(len*4+1+str->GetLength())+str->GetLength();\r
        SecureZeroMemory(buf, (len*4 + 1)*sizeof(WCHAR));\r
-       MultiByteToWideChar(code, 0, (LPCSTR)p, -1, buf, len*4);\r
+       MultiByteToWideChar(code, 0, (LPCSTR)p, len, buf, len*4);\r
        str->ReleaseBuffer();\r
        //str->Append(buf);\r
        //delete buf;\r
@@ -262,9 +267,18 @@ int CGit::GetLog(BYTE_VECTOR& logOut, CString &hash,  CTGitPath *path ,int count
        if(mask& CGit::LOG_INFO_DETECT_RENAME )\r
                param += _T(" -M ");\r
 \r
+       if(mask& CGit::LOG_INFO_FIRST_PARENT )\r
+               param += _T(" --first-parent ");\r
+       \r
+       if(mask& CGit::LOG_INFO_NO_MERGE )\r
+               param += _T(" --no-merges ");\r
+\r
+       if(mask& CGit::LOG_INFO_FOLLOW)\r
+               param += _T(" --follow ");\r
+\r
        param+=hash;\r
 \r
-       cmd.Format(_T("git.exe log %s -z --topo-order --parents %s --pretty=format:\""),\r
+       cmd.Format(_T("git.exe log %s -z --topo-order %s --parents --pretty=format:\""),\r
                                num,param);\r
 \r
        BuildOutputFormat(log,!(mask&CGit::LOG_INFO_ONLY_HASH));\r
@@ -373,7 +387,7 @@ int CGit::RunLogFile(CString cmd,CString &filename)
        CloseHandle(pi.hProcess);\r
        CloseHandle(houtfile);\r
        return GIT_SUCCESS;\r
-       return 0;\r
+//     return 0;\r
 }\r
 \r
 git_revnum_t CGit::GetHash(CString &friendname)\r