Date: Friday, January 20, 2017 @ 17:12:50 Author: anthraxx Revision: 287023
upgpkg: truecrypt 1:7.1a-5 (wxgtk>=3 compatibility) backport "open directory" patch for FS#38477 Added: truecrypt/trunk/wxwidgets3.patch truecrypt/trunk/xdg-open.patch Modified: truecrypt/trunk/PKGBUILD ------------------+ PKGBUILD | 16 ++- wxwidgets3.patch | 249 +++++++++++++++++++++++++++++++++++++++++++++++++++++ xdg-open.patch | 81 +++++++++++++++++ 3 files changed, 341 insertions(+), 5 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-01-20 15:46:57 UTC (rev 287022) +++ PKGBUILD 2017-01-20 17:12:50 UTC (rev 287023) @@ -4,13 +4,13 @@ pkgname=truecrypt pkgver=7.1a -pkgrel=4 +pkgrel=5 epoch=1 pkgdesc='Free open-source cross-platform disk encryption software' url='http://www.truecrypt.org/' arch=('i686' 'x86_64') license=('custom:TrueCrypt') -depends=('fuse2>=2.8.0' 'wxgtk2.8>=2.8.9' 'libsm' 'device-mapper') +depends=('fuse2>=2.8.0' 'wxgtk' 'libsm' 'device-mapper') optdepends=('sudo: mounting encrypted volumes as nonroot users') makedepends=('nasm') conflicts=('truecrypt-utils') @@ -23,7 +23,9 @@ truecrypt-arch-detection.patch gcc6.patch fix-invalid-characters.patch - no-exec-stack.patch) + no-exec-stack.patch + wxwidgets3.patch + xdg-open.patch) sha512sums=('b5e766023168015cb91bfd85c9e2621055dd98408215e02704775861b5070c5a0234a00c64c1bf7faa34e6d0b51ac71cd36169dd7a6f84d7a34ad0cfa304796a' 'SKIP' 'd69d90040da5bc93f91041ed9404f1614a3b1bdc8eddc2bbbd19367f12d2416a6f3af8b0071d77e1273d627148c63ebe7ebe332878fbe9adb8ae33dcc723f473' @@ -31,7 +33,9 @@ 'fac6963c65720f0b13486ff22bdcc2e31e78c39ede2b9561b2c4037ef2c0375f04c4d51dc6067c37aaeb664c3ed70e5747488389737c41807680750c26a8f084' '84175a3677f20b2b03ab29b017b9deecb517a58a640cf667b503cc9375c104b9c0a5d5ea4b3537ba7f12530054a456b466df0afdd935714cd43034b8e6cb2b7c' 'd52826572178a471bb608fd4991766f4f9fa7c5cbf3659922372feb9fdfcbab596d5f1360e30f66613681619672d0be6c5457f5617f5fb1f84061de779831f96' - 'c64f9255303a521b4e531ebea574befe80a9f193c9aa42fd9cb552e56d087815ca161b50b593e7c3ede10a65c67dc36d0447dbffb0f4d4614f181a95759c2f79') + 'c64f9255303a521b4e531ebea574befe80a9f193c9aa42fd9cb552e56d087815ca161b50b593e7c3ede10a65c67dc36d0447dbffb0f4d4614f181a95759c2f79' + 'f5dcbcd046489b52657fd99ec1d4d926883414b450af5bbd90890b210988f75055346c9276526486e9db00bffd50926e01c4f17da18144ad903fb40d81043769' + 'e60f780bbd2d72ff86ce14df6bda929e696c825f20ccc54bee74c6fc85a98cbf73ccfdb311f6e33c92ef3f7e9095907ab98d62cfe067ab6254513731e9d69ab7') validpgpkeys=('C5F4BAC4A7B22DB8B8F85538E3BA73CAF0D6B1E0') # TrueCrypt Foundation prepare() { @@ -40,12 +44,14 @@ patch -p0 < "${srcdir}/gcc6.patch" patch -p2 < "${srcdir}/fix-invalid-characters.patch" patch -p0 < "${srcdir}/no-exec-stack.patch" + patch -p2 < "${srcdir}/wxwidgets3.patch" + patch -p2 < "${srcdir}/xdg-open.patch" } build() { cd ${pkgname}-${pkgver}-source make PKCS11_INC="${srcdir}/pkcs-2.20" \ - WX_CONFIG=/usr/bin/wx-config-2.8 \ + WX_CONFIG=/usr/bin/wx-config \ TC_EXTRA_LFLAGS+="-ldl ${LDFLAGS}" \ TC_EXTRA_CXXFLAGS="${CXXFLAGS}" \ TC_EXTRA_CFLAGS="${CFLAGS}" Added: wxwidgets3.patch =================================================================== --- wxwidgets3.patch (rev 0) +++ wxwidgets3.patch 2017-01-20 17:12:50 UTC (rev 287023) @@ -0,0 +1,249 @@ +From 084a8ee85c24fbc7077d6c789c97aacdb31b4e39 Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idra...@idrix.fr> +Date: Sun, 8 Jun 2014 00:45:49 +0200 +Subject: [PATCH] wxWidgets 3.0 compatibility modifications + +--- + src/Main/Application.cpp | 6 +++--- + src/Main/CommandLineInterface.cpp | 12 ++++++------ + src/Main/Forms/MainFrame.cpp | 2 +- + src/Main/Forms/SelectDirectoryWizardPage.cpp | 2 +- + src/Main/Forms/SelectDirectoryWizardPage.h | 2 +- + src/Main/GraphicUserInterface.cpp | 6 +++--- + src/Main/TextUserInterface.cpp | 2 +- + src/Main/UserPreferences.cpp | 2 +- + 8 files changed, 17 insertions(+), 17 deletions(-) + +diff --git a/src/Main/Application.cpp b/src/Main/Application.cpp +index 8c6dea1..2d49169 100644 +--- a/src/Main/Application.cpp ++++ b/src/Main/Application.cpp +@@ -36,7 +36,7 @@ namespace TrueCrypt + + FilePath Application::GetConfigFilePath (const wxString &configFileName, bool createConfigDir) + { +- wxStandardPaths stdPaths; ++ wxStandardPaths& stdPaths = wxStandardPaths::Get(); + DirectoryPath configDir; + + if (!Core->IsInPortableMode()) +@@ -61,12 +61,12 @@ namespace TrueCrypt + + DirectoryPath Application::GetExecutableDirectory () + { +- return wstring (wxFileName (wxStandardPaths().GetExecutablePath()).GetPath()); ++ return wstring (wxFileName (wxStandardPaths::Get().GetExecutablePath()).GetPath()); + } + + FilePath Application::GetExecutablePath () + { +- return wstring (wxStandardPaths().GetExecutablePath()); ++ return wstring (wxStandardPaths::Get().GetExecutablePath()); + } + + void Application::Initialize (UserInterfaceType::Enum type) +diff --git a/src/Main/CommandLineInterface.cpp b/src/Main/CommandLineInterface.cpp +index ccb0317..61cbd31 100644 +--- a/src/Main/CommandLineInterface.cpp ++++ b/src/Main/CommandLineInterface.cpp +@@ -380,7 +380,7 @@ namespace TrueCrypt + ArgQuick = parser.Found (L"quick"); + + if (parser.Found (L"random-source", &str)) +- ArgRandomSourcePath = FilesystemPath (str); ++ ArgRandomSourcePath = FilesystemPath (str.wc_str()); + + if (parser.Found (L"restore-headers")) + { +@@ -471,7 +471,7 @@ namespace TrueCrypt + + if (param1IsFile) + { +- ArgFilePath.reset (new FilePath (parser.GetParam (0))); ++ ArgFilePath.reset (new FilePath (parser.GetParam (0).wc_str())); + } + } + +@@ -524,7 +524,7 @@ namespace TrueCrypt + arr.Add (L""); + continue; + } +- arr.Last() += token.empty() ? L',' : token; ++ arr.Last() += token.empty() ? L"," : token.wc_str(); + } + else + arr.Add (token); +@@ -562,12 +562,12 @@ namespace TrueCrypt + { + filteredVolumes.push_back (volume); + } +- else if (wxString (volume->Path) == pathFilter.GetFullPath()) ++ else if (wxString (wstring(volume->Path)) == pathFilter.GetFullPath()) + { + filteredVolumes.push_back (volume); + } +- else if (wxString (volume->MountPoint) == pathFilter.GetFullPath() +- || (wxString (volume->MountPoint) + wxFileName::GetPathSeparator()) == pathFilter.GetFullPath()) ++ else if (wxString (wstring(volume->MountPoint)) == pathFilter.GetFullPath() ++ || (wxString (wstring(volume->MountPoint)) + wxFileName::GetPathSeparator()) == pathFilter.GetFullPath()) + { + filteredVolumes.push_back (volume); + } +diff --git a/src/Main/Forms/MainFrame.cpp b/src/Main/Forms/MainFrame.cpp +index 6100a7a..3443ea3 100644 +--- a/src/Main/Forms/MainFrame.cpp ++++ b/src/Main/Forms/MainFrame.cpp +@@ -828,7 +828,7 @@ namespace TrueCrypt + // File-hosted volumes + if (!volume->Path.IsDevice() && !mountPoint.IsEmpty()) + { +- if (wxString (volume->Path).Upper().StartsWith (wstring (mountPoint).c_str())) ++ if (wxString (wstring(volume->Path)).Upper().StartsWith (wstring (mountPoint).c_str())) + { + removedVolumes.push_back (volume); + continue; +diff --git a/src/Main/Forms/SelectDirectoryWizardPage.cpp b/src/Main/Forms/SelectDirectoryWizardPage.cpp +index a6a3ab0..1299e22 100644 +--- a/src/Main/Forms/SelectDirectoryWizardPage.cpp ++++ b/src/Main/Forms/SelectDirectoryWizardPage.cpp +@@ -16,7 +16,7 @@ namespace TrueCrypt + { + if (!DirectoryTextCtrl->IsEmpty()) + { +- return FilesystemPath (DirectoryTextCtrl->GetValue()).IsDirectory(); ++ return FilesystemPath (DirectoryTextCtrl->GetValue().wc_str()).IsDirectory(); + } + + return false; +diff --git a/src/Main/Forms/SelectDirectoryWizardPage.h b/src/Main/Forms/SelectDirectoryWizardPage.h +index 52335fc..2ea8b0d 100644 +--- a/src/Main/Forms/SelectDirectoryWizardPage.h ++++ b/src/Main/Forms/SelectDirectoryWizardPage.h +@@ -18,7 +18,7 @@ namespace TrueCrypt + public: + SelectDirectoryWizardPage (wxPanel* parent) : SelectDirectoryWizardPageBase (parent) { } + +- DirectoryPath GetDirectory () const { return DirectoryPath (DirectoryTextCtrl->GetValue()); } ++ DirectoryPath GetDirectory () const { return DirectoryPath (DirectoryTextCtrl->GetValue().wc_str()); } + bool IsValid (); + void SetDirectory (const DirectoryPath &path) { DirectoryTextCtrl->SetValue (wstring (path)); } + void SetMaxStaticTextWidth (int width) { InfoStaticText->Wrap (width); } +diff --git a/src/Main/GraphicUserInterface.cpp b/src/Main/GraphicUserInterface.cpp +index 41eb780..64e9e4b 100644 +--- a/src/Main/GraphicUserInterface.cpp ++++ b/src/Main/GraphicUserInterface.cpp +@@ -1384,7 +1384,7 @@ namespace TrueCrypt + #else + L"", + #endif +- L"", wxDD_DEFAULT_STYLE | (existingOnly ? wxDD_DIR_MUST_EXIST : 0), wxDefaultPosition, parent)); ++ L"", wxDD_DEFAULT_STYLE | (existingOnly ? wxDD_DIR_MUST_EXIST : 0), wxDefaultPosition, parent).wc_str()); + } + + FilePathList GraphicUserInterface::SelectFiles (wxWindow *parent, const wxString &caption, bool saveMode, bool allowMultiple, const list < pair <wstring, wstring> > &fileExtensions, const DirectoryPath &directory) const +@@ -1428,14 +1428,14 @@ namespace TrueCrypt + if (dialog.ShowModal() == wxID_OK) + { + if (!allowMultiple) +- files.push_back (make_shared <FilePath> (dialog.GetPath())); ++ files.push_back (make_shared <FilePath> (dialog.GetPath().wc_str())); + else + { + wxArrayString paths; + dialog.GetPaths (paths); + + foreach (const wxString &path, paths) +- files.push_back (make_shared <FilePath> (path)); ++ files.push_back (make_shared <FilePath> (path.wc_str())); + } + } + +diff --git a/src/Main/TextUserInterface.cpp b/src/Main/TextUserInterface.cpp +index d9e93e6..c7af099 100644 +--- a/src/Main/TextUserInterface.cpp ++++ b/src/Main/TextUserInterface.cpp +@@ -116,7 +116,7 @@ namespace TrueCrypt + for (size_t i = 0; i < length && i < VolumePassword::MaxSize; ++i) + { + passwordBuf[i] = (wchar_t) passwordStr[i]; +- const_cast <wchar_t *> (passwordStr.c_str())[i] = L'X'; ++ const_cast <wchar_t *> (passwordStr.wc_str())[i] = L'X'; + } + + if (verify && verPhase) +diff --git a/src/Main/UserPreferences.cpp b/src/Main/UserPreferences.cpp +index e0e8233..6608f79 100644 +--- a/src/Main/UserPreferences.cpp ++++ b/src/Main/UserPreferences.cpp +@@ -219,7 +219,7 @@ namespace TrueCrypt + + foreach_ref (const Keyfile &keyfile, DefaultKeyfiles) + { +- keyfilesXml.InnerNodes.push_back (XmlNode (L"keyfile", wxString (FilesystemPath (keyfile)))); ++ keyfilesXml.InnerNodes.push_back (XmlNode (L"keyfile", wxString (wstring(FilesystemPath (keyfile))))); + } + + XmlWriter keyfileWriter (keyfilesCfgPath); +--- a/src/Main/Forms/Forms.cpp ++++ b/src/Main/Forms/Forms.cpp +@@ -263,8 +263,6 @@ + VolumeStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( MainPanel, wxID_ANY, _("Volume") ), wxVERTICAL ); + + VolumeGridBagSizer = new wxGridBagSizer( 0, 0 ); +- VolumeGridBagSizer->AddGrowableCol( 1 ); +- VolumeGridBagSizer->AddGrowableRow( 0 ); + VolumeGridBagSizer->SetFlexibleDirection( wxBOTH ); + VolumeGridBagSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + +@@ -307,6 +305,8 @@ + + VolumeGridBagSizer->Add( bSizer21, wxGBPosition( 1, 3 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 ); + ++ VolumeGridBagSizer->AddGrowableCol( 1 ); ++ VolumeGridBagSizer->AddGrowableRow( 0 ); + VolumeStaticBoxSizer->Add( VolumeGridBagSizer, 1, wxEXPAND|wxALL, 4 ); + + LowStaticBoxSizer->Add( VolumeStaticBoxSizer, 1, wxEXPAND, 5 ); +@@ -1442,7 +1442,6 @@ + bSizer54->Add( bSizer55, 1, wxEXPAND, 5 ); + + FilesystemOptionsSizer = new wxGridBagSizer( 0, 0 ); +- FilesystemOptionsSizer->AddGrowableCol( 1 ); + FilesystemOptionsSizer->SetFlexibleDirection( wxBOTH ); + FilesystemOptionsSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + FilesystemOptionsSizer->SetEmptyCellSize( wxSize( 0,0 ) ); +@@ -1468,6 +1467,7 @@ + FilesystemOptionsTextCtrl = new wxTextCtrl( m_panel8, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + FilesystemOptionsSizer->Add( FilesystemOptionsTextCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + ++ FilesystemOptionsSizer->AddGrowableCol( 1 ); + bSizer54->Add( FilesystemOptionsSizer, 0, wxEXPAND, 5 ); + + sbSizer28->Add( bSizer54, 0, wxEXPAND|wxBOTTOM, 5 ); +@@ -2892,7 +2892,6 @@ + bSizer7 = new wxBoxSizer( wxVERTICAL ); + + GridBagSizer = new wxGridBagSizer( 0, 0 ); +- GridBagSizer->AddGrowableCol( 1 ); + GridBagSizer->SetFlexibleDirection( wxBOTH ); + GridBagSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + GridBagSizer->SetEmptyCellSize( wxSize( 0,0 ) ); +@@ -2950,6 +2949,7 @@ + + GridBagSizer->Add( PasswordPlaceholderSizer, wxGBPosition( 8, 1 ), wxGBSpan( 1, 2 ), wxTOP|wxEXPAND, 5 ); + ++ GridBagSizer->AddGrowableCol( 1 ); + bSizer7->Add( GridBagSizer, 1, wxALL|wxEXPAND, 5 ); + + this->SetSizer( bSizer7 ); +--- a/src/Main/Forms/PreferencesDialog.h ++++ b/src/Main/Forms/PreferencesDialog.h +@@ -26,7 +26,7 @@ namespace VeraCrypt + protected: + void OnAssignHotkeyButtonClick (wxCommandEvent& event); + void OnBackgroundTaskEnabledCheckBoxClick (wxCommandEvent& event); +- void OnCancelButtonClick (wxCommandEvent& event) { Close(); } ++ void OnCancelButtonClick (wxCommandEvent& event) { EndModal (wxID_CANCEL); } + void OnClose (wxCloseEvent& event); + void OnDismountOnPowerSavingCheckBoxClick (wxCommandEvent& event); + void OnDismountOnScreenSaverCheckBoxClick (wxCommandEvent& event); Added: xdg-open.patch =================================================================== --- xdg-open.patch (rev 0) +++ xdg-open.patch 2017-01-20 17:12:50 UTC (rev 287023) @@ -0,0 +1,81 @@ +From ad4af09d884e1727750571f7679e8679b8027a1c Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idra...@idrix.fr> +Date: Sun, 8 Feb 2015 13:45:15 +0100 +Subject: [PATCH] Linux: When not under Gnome/KDE, use xdg-open to open the + mounted volume if it is available. + +--- + src/Main/UserInterface.cpp | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp +index 177a4e9..39c4274 100644 +--- a/src/Main/UserInterface.cpp ++++ b/src/Main/UserInterface.cpp +@@ -832,7 +832,7 @@ namespace VeraCrypt + // MIME handler for directory seems to be unavailable through wxWidgets + wxString desktop = GetTraits()->GetDesktopEnvironment(); + +- if (desktop == L"GNOME" || desktop.empty()) ++ if (desktop == L"GNOME") + { + args.push_back ("--no-default-window"); + args.push_back ("--no-desktop"); +@@ -865,6 +865,22 @@ namespace VeraCrypt + catch (exception &e) { ShowError (e); } + } + } ++ else if (wxFileName::IsFileExecutable (wxT("/usr/bin/xdg-open"))) ++ { ++ // Fallback on the standard xdg-open command ++ // which is not always available by default ++ args.push_back (string (path)); ++ try ++ { ++ Process::Execute ("xdg-open", args, 2000); ++ } ++ catch (TimeOut&) { } ++ catch (exception &e) { ShowError (e); } ++ } ++ else ++ { ++ ShowWarning (wxT("Unable to find a file manager to open the mounted volume")); ++ } + #endif + } + +From 3a9db8d98c1301726bdf26af9698e7cc61a46f71 Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idra...@idrix.fr> +Date: Wed, 2 Dec 2015 11:10:30 +0100 +Subject: [PATCH] Linux: fix Nautilus not detected as file manager on some + Gnome based destributions. + +--- + src/Main/UserInterface.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/Main/UserInterface.cpp b/src/Main/UserInterface.cpp +index 73c9914..2be5bc7 100644 +--- a/src/Main/UserInterface.cpp ++++ b/src/Main/UserInterface.cpp +@@ -834,8 +834,10 @@ namespace VeraCrypt + #else + // MIME handler for directory seems to be unavailable through wxWidgets + wxString desktop = GetTraits()->GetDesktopEnvironment(); ++ bool xdgOpenPresent = wxFileName::IsFileExecutable (wxT("/usr/bin/xdg-open")); ++ bool nautilusPresent = wxFileName::IsFileExecutable (wxT("/usr/bin/nautilus")); + +- if (desktop == L"GNOME") ++ if (desktop == L"GNOME" || (desktop.empty() && !xdgOpenPresent && nautilusPresent)) + { + args.push_back ("--no-default-window"); + args.push_back ("--no-desktop"); +@@ -868,7 +870,7 @@ namespace VeraCrypt + catch (exception &e) { ShowError (e); } + } + } +- else if (wxFileName::IsFileExecutable (wxT("/usr/bin/xdg-open"))) ++ else if (xdgOpenPresent) + { + // Fallback on the standard xdg-open command + // which is not always available by default