diff options
author | Antonio Rojas | 2022-07-07 23:20:15 +0200 |
---|---|---|
committer | Antonio Rojas | 2022-07-07 23:20:15 +0200 |
commit | a34de6e5b246efe50828cc9de0ec179f58e9bbea (patch) | |
tree | cb15cb1ce928fa09efed43b43a64511e2323ecd4 | |
download | aur-a34de6e5b246efe50828cc9de0ec179f58e9bbea.tar.gz |
import from community
-rw-r--r-- | .SRCINFO | 41 | ||||
-rw-r--r-- | PKGBUILD | 71 | ||||
-rw-r--r-- | fix-invalid-characters.patch | 54 | ||||
-rw-r--r-- | gcc6.patch | 61 | ||||
-rw-r--r-- | no-exec-stack.patch | 60 | ||||
-rw-r--r-- | truecrypt-arch-detection.patch | 15 | ||||
-rw-r--r-- | truecrypt.desktop | 9 | ||||
-rw-r--r-- | wxwidgets3.patch | 249 | ||||
-rw-r--r-- | wxwidgets31.patch | 37 | ||||
-rw-r--r-- | xdg-open.patch | 81 |
10 files changed, 678 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..ee957c4e81dd --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,41 @@ +pkgbase = truecrypt + pkgdesc = Free open-source cross-platform disk encryption software + pkgver = 7.1a + pkgrel = 9 + epoch = 1 + url = http://www.truecrypt.org/ + arch = x86_64 + license = custom:TrueCrypt + makedepends = nasm + depends = fuse2>=2.8.0 + depends = wxgtk2 + depends = libsm + depends = device-mapper + optdepends = sudo: mounting encrypted volumes as nonroot users + conflicts = truecrypt-utils + replaces = truecrypt-utils + source = https://sources.archlinux.org/other/tc/truecrypt-7.1a.tar.gz + source = https://sources.archlinux.org/other/tc/truecrypt-7.1a.tar.gz.sig + source = https://sources.archlinux.org/other/tc/pkcs-2.20.tar.gz + source = truecrypt.desktop + source = truecrypt-arch-detection.patch + source = gcc6.patch + source = fix-invalid-characters.patch + source = no-exec-stack.patch + source = wxwidgets3.patch + source = wxwidgets31.patch + source = xdg-open.patch + validpgpkeys = C5F4BAC4A7B22DB8B8F85538E3BA73CAF0D6B1E0 + sha512sums = b5e766023168015cb91bfd85c9e2621055dd98408215e02704775861b5070c5a0234a00c64c1bf7faa34e6d0b51ac71cd36169dd7a6f84d7a34ad0cfa304796a + sha512sums = SKIP + sha512sums = d69d90040da5bc93f91041ed9404f1614a3b1bdc8eddc2bbbd19367f12d2416a6f3af8b0071d77e1273d627148c63ebe7ebe332878fbe9adb8ae33dcc723f473 + sha512sums = 1ac13f1888319d6d2f10e03a61e22d68e5fe4a61bbdf8ad364a0fe6f6712cc53dbc1a98fff3fda2ecd57dbe67fcc24fb358c0805ab47eaa12cf14d48f1067e51 + sha512sums = fac6963c65720f0b13486ff22bdcc2e31e78c39ede2b9561b2c4037ef2c0375f04c4d51dc6067c37aaeb664c3ed70e5747488389737c41807680750c26a8f084 + sha512sums = 84175a3677f20b2b03ab29b017b9deecb517a58a640cf667b503cc9375c104b9c0a5d5ea4b3537ba7f12530054a456b466df0afdd935714cd43034b8e6cb2b7c + sha512sums = d52826572178a471bb608fd4991766f4f9fa7c5cbf3659922372feb9fdfcbab596d5f1360e30f66613681619672d0be6c5457f5617f5fb1f84061de779831f96 + sha512sums = c64f9255303a521b4e531ebea574befe80a9f193c9aa42fd9cb552e56d087815ca161b50b593e7c3ede10a65c67dc36d0447dbffb0f4d4614f181a95759c2f79 + sha512sums = f5dcbcd046489b52657fd99ec1d4d926883414b450af5bbd90890b210988f75055346c9276526486e9db00bffd50926e01c4f17da18144ad903fb40d81043769 + sha512sums = 461f27cb72a9230591de9131e1f4d32df0531316265164429dfb89b0787d0da25bf6f18231a77d596f2bf0fee4340bec6f3bae8cc1ca8a96cc7e2d2bab04dcee + sha512sums = e60f780bbd2d72ff86ce14df6bda929e696c825f20ccc54bee74c6fc85a98cbf73ccfdb311f6e33c92ef3f7e9095907ab98d62cfe067ab6254513731e9d69ab7 + +pkgname = truecrypt diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..a820ca2cca52 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,71 @@ +# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org> +# Maintainer: Rémy Oudompheng <remy@archlinux.org> +# Contributor: Paul Mattal <paul.archlinux.org> + +pkgname=truecrypt +pkgver=7.1a +pkgrel=9 +epoch=1 +pkgdesc='Free open-source cross-platform disk encryption software' +url='http://www.truecrypt.org/' +arch=('x86_64') +license=('custom:TrueCrypt') +depends=('fuse2>=2.8.0' 'wxgtk2' 'libsm' 'device-mapper') +optdepends=('sudo: mounting encrypted volumes as nonroot users') +makedepends=('nasm') +conflicts=('truecrypt-utils') +replaces=('truecrypt-utils') +# N.B. Truecrypt's web-based source download is incompatible with +# makepkg. Source has been placed on ftp.archlinux.org instead +source=(https://sources.archlinux.org/other/tc/truecrypt-${pkgver}.tar.gz{,.sig} + https://sources.archlinux.org/other/tc/pkcs-2.20.tar.gz + truecrypt.desktop + truecrypt-arch-detection.patch + gcc6.patch + fix-invalid-characters.patch + no-exec-stack.patch + wxwidgets3.patch + wxwidgets31.patch + xdg-open.patch) +sha512sums=('b5e766023168015cb91bfd85c9e2621055dd98408215e02704775861b5070c5a0234a00c64c1bf7faa34e6d0b51ac71cd36169dd7a6f84d7a34ad0cfa304796a' + 'SKIP' + 'd69d90040da5bc93f91041ed9404f1614a3b1bdc8eddc2bbbd19367f12d2416a6f3af8b0071d77e1273d627148c63ebe7ebe332878fbe9adb8ae33dcc723f473' + '1ac13f1888319d6d2f10e03a61e22d68e5fe4a61bbdf8ad364a0fe6f6712cc53dbc1a98fff3fda2ecd57dbe67fcc24fb358c0805ab47eaa12cf14d48f1067e51' + 'fac6963c65720f0b13486ff22bdcc2e31e78c39ede2b9561b2c4037ef2c0375f04c4d51dc6067c37aaeb664c3ed70e5747488389737c41807680750c26a8f084' + '84175a3677f20b2b03ab29b017b9deecb517a58a640cf667b503cc9375c104b9c0a5d5ea4b3537ba7f12530054a456b466df0afdd935714cd43034b8e6cb2b7c' + 'd52826572178a471bb608fd4991766f4f9fa7c5cbf3659922372feb9fdfcbab596d5f1360e30f66613681619672d0be6c5457f5617f5fb1f84061de779831f96' + 'c64f9255303a521b4e531ebea574befe80a9f193c9aa42fd9cb552e56d087815ca161b50b593e7c3ede10a65c67dc36d0447dbffb0f4d4614f181a95759c2f79' + 'f5dcbcd046489b52657fd99ec1d4d926883414b450af5bbd90890b210988f75055346c9276526486e9db00bffd50926e01c4f17da18144ad903fb40d81043769' + '461f27cb72a9230591de9131e1f4d32df0531316265164429dfb89b0787d0da25bf6f18231a77d596f2bf0fee4340bec6f3bae8cc1ca8a96cc7e2d2bab04dcee' + 'e60f780bbd2d72ff86ce14df6bda929e696c825f20ccc54bee74c6fc85a98cbf73ccfdb311f6e33c92ef3f7e9095907ab98d62cfe067ab6254513731e9d69ab7') +validpgpkeys=('C5F4BAC4A7B22DB8B8F85538E3BA73CAF0D6B1E0') # TrueCrypt Foundation + +prepare() { + cd ${pkgname}-${pkgver}-source + patch -p1 < "${srcdir}/truecrypt-arch-detection.patch" + 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}/wxwidgets31.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 \ + TC_EXTRA_LFLAGS+="-ldl ${LDFLAGS}" \ + TC_EXTRA_CXXFLAGS="${CXXFLAGS}" \ + TC_EXTRA_CFLAGS="${CFLAGS}" +} + +package() { + cd ${pkgname}-${pkgver}-source + install -Dm 755 Main/${pkgname} "${pkgdir}/usr/bin/${pkgname}" + install -Dm 644 "${srcdir}/truecrypt.desktop" -t "${pkgdir}/usr/share/applications" + install -Dm 644 Resources/Icons/TrueCrypt-48x48.xpm "${pkgdir}/usr/share/pixmaps/truecrypt.xpm" + install -Dm 644 License.txt -t "${pkgdir}/usr/share/licenses/${pkgname}" +} + +# vim: ts=2 sw=2 et: diff --git a/fix-invalid-characters.patch b/fix-invalid-characters.patch new file mode 100644 index 000000000000..b64bbb6b69b3 --- /dev/null +++ b/fix-invalid-characters.patch @@ -0,0 +1,54 @@ +From 646679da4d79bf7f8af22c44c7ae8498086a88a6 Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idrassi@idrix.fr> +Date: Fri, 18 Mar 2016 16:25:48 +0100 +Subject: [PATCH] Linux: Completely fix gcc-5 "Invalid characters encountered" + issue on mount. It was caused by an issue of gcc-5 STL implementation that is + causing char* pointers retrieved from std::string using c_str method to + become invalid in the child of a child process (after two fork calls). The + workaround is to first copy the std:string values in the child before calling + the second fork. + +--- + src/Platform/Unix/Process.cpp | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +diff --git a/src/Platform/Unix/Process.cpp b/src/Platform/Unix/Process.cpp +index 388bda6..0770364 100644 +--- a/src/Platform/Unix/Process.cpp ++++ b/src/Platform/Unix/Process.cpp +@@ -53,13 +53,33 @@ namespace VeraCrypt + try + { + int argIndex = 0; ++ /* Workaround for gcc 5.X issue related to the use of STL (string and list) with muliple fork calls. ++ * ++ * The char* pointers retrieved from the elements of parameter "arguments" are no longer valid after ++ * a second fork is called. "arguments" was created in the parent of the current child process. ++ * ++ * The only solution is to copy the elements of "arguments" parameter in a local string array on this ++ * child process and then use char* pointers retrieved from this local copies before calling fork. ++ * ++ * gcc 4.x doesn't suffer from this issue. ++ * ++ */ ++ string argsCopy[array_capacity (args)]; + if (!execFunctor) +- args[argIndex++] = const_cast <char*> (processName.c_str()); ++ { ++ argsCopy[argIndex++] = processName; ++ } + + foreach (const string &arg, arguments) + { +- args[argIndex++] = const_cast <char*> (arg.c_str()); ++ argsCopy[argIndex++] = arg; + } ++ ++ for (int i = 0; i < argIndex; i++) ++ { ++ args[i] = const_cast <char*> (argsCopy[i].c_str()); ++ } ++ + args[argIndex] = nullptr; + + if (inputData) diff --git a/gcc6.patch b/gcc6.patch new file mode 100644 index 000000000000..49923984cdf9 --- /dev/null +++ b/gcc6.patch @@ -0,0 +1,61 @@ +--- Main/Resources.cpp 2016-05-16 16:47:35.846462041 +0200 ++++ Main/Resources.cpp 2016-05-16 17:12:21.838202520 +0200 +@@ -45,13 +45,13 @@ + strBuf.CopyFrom (res); + return string (reinterpret_cast <char *> (strBuf.Ptr())); + #else +- static const char LanguageXml[] = ++ static byte LanguageXml[] = + { + # include "Common/Language.xml.h" + , 0 + }; + +- return string (LanguageXml); ++ return string ((const char*) LanguageXml); + #endif + } + +@@ -64,13 +64,13 @@ + strBuf.CopyFrom (res); + return string (reinterpret_cast <char *> (strBuf.Ptr())); + #else +- static const char License[] = ++ static byte License[] = + { + # include "License.txt.h" + , 0 + }; + +- return string (License); ++ return string ((const char*) License); + #endif + } + +--- Main/Forms/PreferencesDialog.cpp 2016-05-16 17:14:47.704707908 +0200 ++++ Main/Forms/PreferencesDialog.cpp 2016-05-16 17:15:56.927964437 +0200 +@@ -414,11 +414,11 @@ + libExtension = wxDynamicLibrary::CanonicalizeName (L"x"); + + #ifdef TC_MACOSX +- extensions.push_back (make_pair (L"dylib", LangString["DLL_FILES"])); ++ extensions.push_back (make_pair (L"dylib", static_cast<const wchar_t*>(LangString["DLL_FILES"].wc_str()))); + #endif + if (!libExtension.empty()) + { +- extensions.push_back (make_pair (libExtension.Mid (libExtension.find (L'.') + 1), LangString["DLL_FILES"])); ++ extensions.push_back (make_pair (static_cast<const wchar_t*>(libExtension.Mid (libExtension.find (L'.') + 1).wc_str()), static_cast<const wchar_t*>(LangString["DLL_FILES"].wc_str()))); + extensions.push_back (make_pair (L"*", L"")); + } + +--- Main/GraphicUserInterface.cpp 2016-05-16 17:16:38.724591342 +0200 ++++ Main/GraphicUserInterface.cpp 2016-05-16 17:17:09.854562653 +0200 +@@ -1445,7 +1445,7 @@ + FilePath GraphicUserInterface::SelectVolumeFile (wxWindow *parent, bool saveMode, const DirectoryPath &directory) const + { + list < pair <wstring, wstring> > extensions; +- extensions.push_back (make_pair (L"tc", LangString["TC_VOLUMES"])); ++ extensions.push_back (make_pair (L"tc", static_cast<const wchar_t*>(LangString["TC_VOLUMES"].wc_str()))); + + FilePathList selFiles = Gui->SelectFiles (parent, LangString[saveMode ? "OPEN_NEW_VOLUME" : "OPEN_VOL_TITLE"], saveMode, false, extensions, directory); + diff --git a/no-exec-stack.patch b/no-exec-stack.patch new file mode 100644 index 000000000000..2db772ff665f --- /dev/null +++ b/no-exec-stack.patch @@ -0,0 +1,60 @@ +--- Crypto/Aes_hw_cpu.asm.old 2011-06-01 17:12:53.078000001 -0400 ++++ Crypto/Aes_hw_cpu.asm 2011-06-01 17:12:53.080000002 -0400 +@@ -328,3 +328,12 @@ + + + %endif ; __BITS__ != 16 ++ %ifidn __OUTPUT_FORMAT__,elf ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf32 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf64 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif +--- Crypto/AesSmall_x86.asm.old 2011-06-01 17:12:53.084000002 -0400 ++++ Crypto/AesSmall_x86.asm 2011-06-01 17:12:53.086000002 -0400 +@@ -1442,3 +1442,12 @@ + db v8(0xe1),v8(0x69),v8(0x14),v8(0x63),v8(0x55),v8(0x21),v8(0x0c),v8(0x7d) + + %endif ++ %ifidn __OUTPUT_FORMAT__,elf ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf32 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf64 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif +--- Crypto/Aes_x64.asm.old 2011-06-01 17:12:53.090000002 -0400 ++++ Crypto/Aes_x64.asm 2011-06-01 17:12:53.092000002 -0400 +@@ -905,3 +905,12 @@ + %endif + + %endif ++ %ifidn __OUTPUT_FORMAT__,elf ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf32 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf64 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif +--- Crypto/Aes_x86.asm.old 2011-06-01 17:12:53.096000002 -0400 ++++ Crypto/Aes_x86.asm 2011-06-01 17:12:53.097000002 -0400 +@@ -644,3 +644,12 @@ + do_exit + + %endif ++ %ifidn __OUTPUT_FORMAT__,elf ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf32 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif ++ %ifidn __OUTPUT_FORMAT__,elf64 ++ section .note.GNU-stack noalloc noexec nowrite progbits ++ %endif diff --git a/truecrypt-arch-detection.patch b/truecrypt-arch-detection.patch new file mode 100644 index 000000000000..bc16a2a36e2d --- /dev/null +++ b/truecrypt-arch-detection.patch @@ -0,0 +1,15 @@ +diff -urN truecrypt-7.0a-source/Makefile truecrypt-7.0a-source.fixed/Makefile +--- truecrypt-7.0a-source/Makefile 2010-09-05 10:32:10.000000000 -0400 ++++ truecrypt-7.0a-source.fixed/Makefile 2011-07-05 21:41:50.296437879 -0400 +@@ -120,10 +120,7 @@ + + export CPU_ARCH ?= unknown + +-ARCH = $(shell uname -p) +-ifeq "$(ARCH)" "unknown" +- ARCH = $(shell uname -m) +-endif ++ARCH = $(shell uname -m) + + ifneq (,$(filter i386 i486 i586 i686 x86,$(ARCH))) + CPU_ARCH = x86 diff --git a/truecrypt.desktop b/truecrypt.desktop new file mode 100644 index 000000000000..53626f29fffa --- /dev/null +++ b/truecrypt.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Exec=truecrypt +Icon=truecrypt +Comment=On-the-fly encryption +Terminal=false +Name=TrueCrypt +StartupNotify=true +Categories=System; diff --git a/wxwidgets3.patch b/wxwidgets3.patch new file mode 100644 index 000000000000..2f043918b260 --- /dev/null +++ b/wxwidgets3.patch @@ -0,0 +1,249 @@ +From 084a8ee85c24fbc7077d6c789c97aacdb31b4e39 Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idrassi@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); diff --git a/wxwidgets31.patch b/wxwidgets31.patch new file mode 100644 index 000000000000..35ea64d665ab --- /dev/null +++ b/wxwidgets31.patch @@ -0,0 +1,37 @@ +From 2c6e9fc15c6467d559cc5e212bd63b02f82640bb Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idrassi@idrix.fr> +Date: Sun, 26 Oct 2014 17:28:59 +0100 +Subject: [PATCH] Replace deprecated wxTextValidator::SetBellOnError whose + logic whose inverted by the new wxTextValidator::SuppressBellOnError. Since + its used in constructor only for TC_WINDOWS, we do the same in the + destructor. + +--- + src/Main/Forms/PreferencesDialog.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/Main/Forms/PreferencesDialog.cpp b/src/Main/Forms/PreferencesDialog.cpp +index 50c9c300c..e22e304b6 100644 +--- a/src/Main/Forms/PreferencesDialog.cpp ++++ b/src/Main/Forms/PreferencesDialog.cpp +@@ -154,7 +154,7 @@ namespace VeraCrypt + Gui->SetListCtrlColumnWidths (HotkeyListCtrl, colPermilles); + + RestoreValidatorBell = !wxTextValidator::IsSilent(); +- wxTextValidator::SetBellOnError (true); ++ wxTextValidator::SuppressBellOnError (true); + HotkeyTextCtrl->SetValidator (wxTextValidator (wxFILTER_INCLUDE_CHAR_LIST)); + + UpdateHotkeyButtons(); +@@ -203,8 +203,10 @@ namespace VeraCrypt + + PreferencesDialog::~PreferencesDialog () + { ++#ifdef TC_WINDOWS + if (RestoreValidatorBell) +- wxTextValidator::SetBellOnError (false); ++ wxTextValidator::SuppressBellOnError (false); ++#endif + } + + void PreferencesDialog::SelectPage (wxPanel *page) diff --git a/xdg-open.patch b/xdg-open.patch new file mode 100644 index 000000000000..910f86a576f7 --- /dev/null +++ b/xdg-open.patch @@ -0,0 +1,81 @@ +From ad4af09d884e1727750571f7679e8679b8027a1c Mon Sep 17 00:00:00 2001 +From: Mounir IDRASSI <mounir.idrassi@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.idrassi@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 |