// WinMergeScript.cpp : Implementation of CWinMergeScript #include "stdafx.h" #include "IgnoreCommentsC.h" #include "WinMergeScript.h" //#include ///////////////////////////////////////////////////////////////////////////// // CWinMergeScript STDMETHODIMP CWinMergeScript::get_PluginEvent(BSTR *pVal) { *pVal = SysAllocString(L"BUFFER_PREDIFF"); return S_OK; } STDMETHODIMP CWinMergeScript::get_PluginDescription(BSTR *pVal) { *pVal = SysAllocString(L"Transform Delphi code to compare without CVS History - save not possible"); return S_OK; } STDMETHODIMP CWinMergeScript::get_PluginFileFilters(BSTR *pVal) { *pVal = SysAllocString(L"\\.pas$;\\.dpk$;\\.dpr$;\\.cpp$;\\.cxx$;\\.h$;\\.hxx$;\\.c$;\\.php$;\\.js$"); return S_OK; } STDMETHODIMP CWinMergeScript::get_PluginIsAutomatic(VARIANT_BOOL *pVal) { *pVal = VARIANT_TRUE; return S_OK; } STDMETHODIMP CWinMergeScript::UnpackBufferA(SAFEARRAY **pBuffer, INT *pSize, VARIANT_BOOL *pbChanged, INT *pSubcode, VARIANT_BOOL *pbSuccess) { // We don't need it return S_OK; } STDMETHODIMP CWinMergeScript::PackBufferA(SAFEARRAY **pBuffer, INT *pSize, VARIANT_BOOL *pbChanged, INT subcode, VARIANT_BOOL *pbSuccess) { // We don't need it return S_OK; } STDMETHODIMP CWinMergeScript::UnpackFile(BSTR fileSrc, BSTR fileDst, VARIANT_BOOL *pbChanged, INT *pSubcode, VARIANT_BOOL *pbSuccess) { // We don't need it return S_OK; } STDMETHODIMP CWinMergeScript::PackFile(BSTR fileSrc, BSTR fileDst, VARIANT_BOOL *pbChanged, INT pSubcode, VARIANT_BOOL *pbSuccess) { // always return error so the users knows we can not repack *pbChanged = VARIANT_FALSE; *pbSuccess = VARIANT_FALSE; return S_OK; } STDMETHODIMP CWinMergeScript::PrediffBufferW(BSTR *pText, INT *pSize, VARIANT_BOOL *pbChanged, VARIANT_BOOL *pbHandled) { // rule // scan lines , find CVS HISTORY, trip everything until closing curly bracket #ifdef _DEBUG __asm { int 3 }; #endif LPWSTR p; p=*pText; UINT N=*pSize; UINT j=0; UINT bol=0, sbol=0; for(UINT i=0; i i+wcslen(L"CVS HISTORY") && // see CheatSheet for Unicode funtions http://www.i18nguy.com/unicode/c-unicode.html if ( wcsncmp((wchar_t*)(p+i), L"CVS HISTORY", wcslen(L"CVS HISTORY")) == 0) { // copy CVS HISTORY for (int timoI = 0; timoI < wcslen(L"CVS HISTORY"); timoI++) { // copy CVS History p[j++]=p[i++]; } for(;i