MCPcopy Create free account
hub / github.com/WinMerge/winmerge / CallUnpackFile

Method CallUnpackFile

Src/InternalPlugins.cpp:689–733  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

687 }
688
689 static HRESULT STDMETHODCALLTYPE CallUnpackFile(IDispatch *pDispatch, BSTR text, BSTR* pbstrResult)
690 {
691 TempFile src, dst;
692 String fileSrc = src.Create();
693 String fileDst = dst.Create();
694 HRESULT hr = WriteFile(fileSrc, text);
695 if (FAILED(hr))
696 return hr;
697 int changed = 0;
698 int subcode = 0;
699 auto* thisObj = static_cast<EditorScriptGeneratedFromUnpacker*>(pDispatch);
700 auto* pInternalPlugin = dynamic_cast<InternalPlugin*>(thisObj->m_pDispatch);
701 if (pInternalPlugin)
702 {
703 BSTR bstrArguments = SysAllocString(thisObj->m_sArguments.c_str());
704 pInternalPlugin->put_PluginArguments(bstrArguments);
705 BSTR bstrFileSrc = SysAllocString(ucr::toUTF16(fileSrc).c_str());
706 BSTR bstrFileDst= SysAllocString(ucr::toUTF16(fileDst).c_str());
707 VARIANT_BOOL bChanged;
708 VARIANT_BOOL bSuccess;
709 hr = pInternalPlugin->UnpackFile(bstrFileSrc, bstrFileDst, &bChanged, &subcode, &bSuccess);
710 SysFreeString(bstrFileSrc);
711 SysFreeString(bstrFileDst);
712 SysFreeString(bstrArguments);
713 if (FAILED(hr))
714 return hr;
715 }
716 else
717 {
718 if (thisObj->m_hasArgumentsProperty)
719 {
720 if (!plugin::InvokePutPluginArguments(thisObj->m_sArguments, thisObj->m_pDispatch))
721 return E_FAIL;
722 }
723 if (!plugin::InvokeUnpackFile(fileSrc, fileDst, changed, thisObj->m_pDispatch, subcode))
724 return E_FAIL;
725 }
726 String unpackedText;
727 hr = ReadFile(fileDst, unpackedText);
728 if (FAILED(hr))
729 return hr;
730 *pbstrResult = SysAllocStringLen(ucr::toUTF16(unpackedText).c_str(),
731 static_cast<unsigned>(unpackedText.length()));
732 return S_OK;
733 }
734
735 HRESULT STDMETHODCALLTYPE ShowSettingsDialog(VARIANT_BOOL* pbHandled) override
736 {

Callers

nothing calls this directly

Calls 9

WriteFileFunction · 0.85
InvokePutPluginArgumentsFunction · 0.85
InvokeUnpackFileFunction · 0.85
ReadFileFunction · 0.85
toUTF16Function · 0.50
CreateMethod · 0.45
put_PluginArgumentsMethod · 0.45
UnpackFileMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected