diff --git a/DesktopEditor/common/File.h b/DesktopEditor/common/File.h index c588e575b6..01f721c355 100644 --- a/DesktopEditor/common/File.h +++ b/DesktopEditor/common/File.h @@ -1148,6 +1148,7 @@ namespace NSFile #if defined(__linux__) || defined(_MAC) && !defined(_IOS) char buf[NS_FILE_MAX_PATH]; + memset(buf, 0, NS_FILE_MAX_PATH); if (readlink ("/proc/self/exe", buf, NS_FILE_MAX_PATH) <= 0) { #ifdef _MAC diff --git a/X2tConverter/src/ASCConverters.cpp b/X2tConverter/src/ASCConverters.cpp index 5442629fa8..1e693c0538 100644 --- a/X2tConverter/src/ASCConverters.cpp +++ b/X2tConverter/src/ASCConverters.cpp @@ -860,13 +860,26 @@ namespace NExtractTools NSDirectory::CreateDirectory(sResultPptxDir); - int nRes = ppt2pptx_dir(sFrom, sResultPptxDir, sTemp, params); - if(SUCCEEDED_X2T(nRes)) + int hRes = ppt2pptx_dir(sFrom, sResultPptxDir, sTemp, params); + + if(SUCCEEDED_X2T(hRes)) { COfficeUtils oCOfficeUtils(NULL); if(S_OK == oCOfficeUtils.CompressFileOrDirectory(sResultPptxDir, sTo, true)) return 0; } + else if (AVS_ERROR_DRM == hRes) + { + if(!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else if (AVS_ERROR_PASSWORD == hRes) + { + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } return AVS_FILEUTILS_ERROR_CONVERT; } int ppt2pptx_dir (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) @@ -874,7 +887,22 @@ namespace NExtractTools COfficePPTFile pptFile; pptFile.put_TempDirectory(sTemp); - return S_OK == pptFile.LoadFromFile(sFrom, sTo, params.getPassword()) ? 0 : AVS_FILEUTILS_ERROR_CONVERT; + + long hRes = pptFile.LoadFromFile(sFrom, sTo, params.getPassword()); + + if (AVS_ERROR_DRM == hRes) + { + if(!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else if (AVS_ERROR_PASSWORD == hRes) + { + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } + return 0 == hRes ? 0 : AVS_FILEUTILS_ERROR_CONVERT; } // ppt -> pptt int ppt2pptt (const std::wstring &sFrom, const std::wstring &sTo, const std::wstring &sTemp, InputParams& params) @@ -905,22 +933,36 @@ namespace NExtractTools pptFile.put_TempDirectory(sTemp); - if ( pptFile.LoadFromFile(sFrom, sTempUnpackedPPTX, params.getPassword()) != S_OK) return AVS_FILEUTILS_ERROR_CONVERT; + long nRes = pptFile.LoadFromFile(sFrom, sTempUnpackedPPTX, params.getPassword()); - // convert unzipped pptx to unzipped pptt - CPPTXFile *pptx_file = new CPPTXFile(NULL, NULL, NULL, NULL); + if (SUCCEEDED_X2T(nRes)) + { + // convert unzipped pptx to unzipped pptt + CPPTXFile *pptx_file = new CPPTXFile(NULL, NULL, NULL, NULL); - int nRes = 0; + if (pptx_file) + { + pptx_file->SetFontDir (params.getFontPath()); + nRes = (S_OK == pptx_file->OpenFileToPPTY (sTempUnpackedPPTX, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; - if (pptx_file) - { - pptx_file->SetFontDir (params.getFontPath()); - nRes = (S_OK == pptx_file->OpenFileToPPTY (sTempUnpackedPPTX, sTo)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT; + delete pptx_file; + } + return nRes; - delete pptx_file; - } - - return nRes; + } + else if (AVS_ERROR_DRM == nRes) + { + if(!params.getDontSaveAdditional()) + { + copyOrigin(sFrom, *params.m_sFileTo); + } + return AVS_FILEUTILS_ERROR_CONVERT_DRM; + } + else if (AVS_ERROR_PASSWORD == nRes) + { + return AVS_FILEUTILS_ERROR_CONVERT_PASSWORD; + } + return AVS_FILEUTILS_ERROR_CONVERT; } // pptx -> odp diff --git a/X2tConverter/src/main.cpp b/X2tConverter/src/main.cpp index 60fa8048eb..ff7118f6b0 100644 --- a/X2tConverter/src/main.cpp +++ b/X2tConverter/src/main.cpp @@ -138,13 +138,15 @@ static std::wstring utf8_to_unicode(const char *src) InputParams oInputParams; oInputParams.m_sFileFrom = new std::wstring(sArg1); oInputParams.m_sFileTo = new std::wstring(sArg2); - oInputParams.m_sPassword = new std::wstring(L"password"); - // get conversion direction from 3rd argument if (argc > 3) { oInputParams.m_sFontDir = new std::wstring(sArg3); } + if (argc > 4) + { + oInputParams.m_sPassword = new std::wstring(sArg4); + } result = NExtractTools::fromInputParams(oInputParams); }