| 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 | { |
nothing calls this directly
no test coverage detected