VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2016-05-02 07:19:29 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2016-05-02 07:19:29 +0200
commit0b914c8f5d690dfc1bdfbca1e1083372c5ed84d8 (patch)
treeb106600a18dcd0b4586aee4da9533b6c15264b40 /src
parent650d913f51304c348158cbe7bb8b47cd6d4a4a58 (diff)
parentfaea63cb3c135316c035152dbdb1d5b98ae43907 (diff)
downloadVeraCrypt-0b914c8f5d690dfc1bdfbca1e1083372c5ed84d8.tar.gz
VeraCrypt-0b914c8f5d690dfc1bdfbca1e1083372c5ed84d8.zip
Merge pull request #55 from davidfoerster/xdg-config-paths
Use XDG_CONFIG_HOME to determine the path of the configuration
Diffstat (limited to 'src')
-rw-r--r--[-rwxr-xr-x]src/Core/Unix/MacOSX/CoreMacOSX.cpp0
-rw-r--r--[-rwxr-xr-x]src/Crypto/Whirlpool.c0
-rw-r--r--[-rwxr-xr-x]src/Crypto/config.h0
-rw-r--r--[-rwxr-xr-x]src/Crypto/cpu.c0
-rw-r--r--[-rwxr-xr-x]src/Crypto/cpu.h0
-rw-r--r--[-rwxr-xr-x]src/Crypto/misc.h0
-rw-r--r--src/Main/Application.cpp107
-rw-r--r--[-rwxr-xr-x]src/Main/Forms/ChangePasswordDialog.cpp0
-rw-r--r--[-rwxr-xr-x]src/Main/Forms/MountOptionsDialog.cpp0
-rw-r--r--[-rwxr-xr-x]src/Main/Forms/VolumeCreationWizard.cpp0
-rw-r--r--[-rwxr-xr-x]src/Main/Forms/VolumePasswordPanel.cpp0
-rw-r--r--[-rwxr-xr-x]src/Main/Forms/VolumePimWizardPage.cpp0
-rw-r--r--src/Makefile14
-rw-r--r--[-rwxr-xr-x]src/Resources/Icons/VeraCrypt-128x128.xpm0
-rw-r--r--[-rwxr-xr-x]src/Resources/Icons/VeraCrypt-256x256.xpm0
15 files changed, 93 insertions, 28 deletions
diff --git a/src/Core/Unix/MacOSX/CoreMacOSX.cpp b/src/Core/Unix/MacOSX/CoreMacOSX.cpp
index b2a10017..b2a10017 100755..100644
--- a/src/Core/Unix/MacOSX/CoreMacOSX.cpp
+++ b/src/Core/Unix/MacOSX/CoreMacOSX.cpp
diff --git a/src/Crypto/Whirlpool.c b/src/Crypto/Whirlpool.c
index c0e5b884..c0e5b884 100755..100644
--- a/src/Crypto/Whirlpool.c
+++ b/src/Crypto/Whirlpool.c
diff --git a/src/Crypto/config.h b/src/Crypto/config.h
index da9276db..da9276db 100755..100644
--- a/src/Crypto/config.h
+++ b/src/Crypto/config.h
diff --git a/src/Crypto/cpu.c b/src/Crypto/cpu.c
index 58a131af..58a131af 100755..100644
--- a/src/Crypto/cpu.c
+++ b/src/Crypto/cpu.c
diff --git a/src/Crypto/cpu.h b/src/Crypto/cpu.h
index da8d14cb..da8d14cb 100755..100644
--- a/src/Crypto/cpu.h
+++ b/src/Crypto/cpu.h
diff --git a/src/Crypto/misc.h b/src/Crypto/misc.h
index 37d40243..37d40243 100755..100644
--- a/src/Crypto/misc.h
+++ b/src/Crypto/misc.h
diff --git a/src/Main/Application.cpp b/src/Main/Application.cpp
index a4b3c60c..4b013cfc 100644
--- a/src/Main/Application.cpp
+++ b/src/Main/Application.cpp
@@ -3,7 +3,7 @@
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
by the TrueCrypt License 3.0.
- Modifications and additions to the original source code (contained in this file)
+ Modifications and additions to the original source code (contained in this file)
and all other portions of this file are Copyright (c) 2013-2016 IDRIX
and are governed by the Apache License 2.0 the full text of which is
contained in the file License.txt included in VeraCrypt binary and source
@@ -22,12 +22,60 @@
namespace VeraCrypt
{
+ namespace
+ {
+ void EnsureEndsWithPathSeparator( wxString &s )
+ {
+ const wxUniChar pathSeparator = wxFileName::GetPathSeparator();
+ if (s[s.size() - 1] != pathSeparator)
+ s.append(pathSeparator);
+ }
+
+ wxString *GetXdgConfigPath ()
+ {
+ const wxChar *xdgConfig = wxGetenv(wxT("XDG_CONFIG_HOME"));
+ wxString *configDir;
+
+ if (!wxIsEmpty(xdgConfig))
+ {
+ configDir = new wxString (xdgConfig);
+ //wcerr << L"XDG_CONFIG_HOME=" << *configDir << endl;
+ EnsureEndsWithPathSeparator(*configDir);
+ configDir->append(Application::GetName());
+ }
+ else
+ {
+ #if !defined(TC_UNIX) || defined(TC_MACOSX) // Windows, OS X:
+ configDir =
+ new wxString (wxStandardPaths::Get().GetUserDataDir());
+ #else // Linux, FreeBSD, Solaris:
+ configDir = new wxString (wxFileName::GetHomeDir());
+ configDir->append(wxT("/.config/"));
+ configDir->append(Application::GetName());
+
+ if (!wxDirExists(*configDir))
+ {
+ wxString legacyConfigDir = wxStandardPaths::Get().GetUserDataDir();
+ //wcerr << L"Legacy config dir: " << legacyConfigDir << endl;
+ if (wxDirExists(legacyConfigDir))
+ {
+ configDir->swap(legacyConfigDir);
+ }
+ }
+ #endif
+ }
+
+ //wcerr << L"Config dir: " << *configDir << endl;
+ return configDir;
+ }
+ }
+
wxApp* Application::CreateConsoleApp ()
{
mUserInterface = new TextUserInterface;
mUserInterfaceType = UserInterfaceType::Text;
return mUserInterface;
- }
+ }
#ifndef TC_NO_GUI
wxApp* Application::CreateGuiApp ()
@@ -35,32 +83,49 @@ namespace VeraCrypt
mUserInterface = new GraphicUserInterface;
mUserInterfaceType = UserInterfaceType::Graphic;
return mUserInterface;
- }
+ }
#endif
FilePath Application::GetConfigFilePath (const wxString &configFileName, bool createConfigDir)
{
- DirectoryPath configDir;
-
- if (!Core->IsInPortableMode())
+ static wxScopedPtr<const wxString> configDirC;
+ static bool configDirExists = false;
+
+ if (!configDirExists)
{
-#ifdef TC_MACOSX
- wxFileName configPath (L"~/Library/Application Support/VeraCrypt");
- configPath.Normalize();
- configDir = wstring (configPath.GetFullPath());
-#else
- wxStandardPaths& stdPaths = wxStandardPaths::Get();
- configDir = wstring (stdPaths.GetUserDataDir());
-#endif
- }
- else
- configDir = GetExecutableDirectory();
+ if (!configDirC)
+ {
+ wxString *configDir;
- if (createConfigDir && !configDir.IsDirectory())
- Directory::Create (configDir);
+ if (Core->IsInPortableMode())
+ {
+ configDir = new wxString (
+ wxPathOnly(wxStandardPaths::Get().GetExecutablePath()));
+ }
+ else
+ {
+ configDir = GetXdgConfigPath();
+ }
+
+ EnsureEndsWithPathSeparator(*configDir);
+ configDirC.reset(configDir);
+ }
+
+ if (createConfigDir)
+ {
+ if (!wxDirExists(*configDirC))
+ {
+ //wcerr << L"Creating config dir »" << *configDirC << L"« ..." << endl;
+ throw_sys_sub_if(
+ !wxMkdir(*configDirC, wxS_IRUSR | wxS_IWUSR | wxS_IXUSR),
+ configDirC->ToStdWstring());
+ }
+ configDirExists = true;
+ //wcerr << L"Config directory »" << *configDirC << L"« exists now" << endl;
+ }
+ }
- FilePath filePath = wstring (wxFileName (wstring (configDir), configFileName).GetFullPath());
- return filePath;
+ return FilePath((*configDirC + configFileName).ToStdWstring());
}
DirectoryPath Application::GetExecutableDirectory ()
diff --git a/src/Main/Forms/ChangePasswordDialog.cpp b/src/Main/Forms/ChangePasswordDialog.cpp
index b3e0bd04..b3e0bd04 100755..100644
--- a/src/Main/Forms/ChangePasswordDialog.cpp
+++ b/src/Main/Forms/ChangePasswordDialog.cpp
diff --git a/src/Main/Forms/MountOptionsDialog.cpp b/src/Main/Forms/MountOptionsDialog.cpp
index 207d2479..207d2479 100755..100644
--- a/src/Main/Forms/MountOptionsDialog.cpp
+++ b/src/Main/Forms/MountOptionsDialog.cpp
diff --git a/src/Main/Forms/VolumeCreationWizard.cpp b/src/Main/Forms/VolumeCreationWizard.cpp
index e9ceb3a3..e9ceb3a3 100755..100644
--- a/src/Main/Forms/VolumeCreationWizard.cpp
+++ b/src/Main/Forms/VolumeCreationWizard.cpp
diff --git a/src/Main/Forms/VolumePasswordPanel.cpp b/src/Main/Forms/VolumePasswordPanel.cpp
index 16fafa3a..16fafa3a 100755..100644
--- a/src/Main/Forms/VolumePasswordPanel.cpp
+++ b/src/Main/Forms/VolumePasswordPanel.cpp
diff --git a/src/Main/Forms/VolumePimWizardPage.cpp b/src/Main/Forms/VolumePimWizardPage.cpp
index 0e3d4299..0e3d4299 100755..100644
--- a/src/Main/Forms/VolumePimWizardPage.cpp
+++ b/src/Main/Forms/VolumePimWizardPage.cpp
diff --git a/src/Makefile b/src/Makefile
index 23d0c516..70fb26da 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3,7 +3,7 @@
# Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
# by the TrueCrypt License 3.0.
#
-# Modifications and additions to the original source code (contained in this file)
+# Modifications and additions to the original source code (contained in this file)
# and all other portions of this file are Copyright (c) 2013-2016 IDRIX
# and are governed by the Apache License 2.0 the full text of which is
# contained in the file License.txt included in VeraCrypt binary and source
@@ -114,7 +114,7 @@ endif
ifeq "$(origin DEBUGGER)" "command line"
- C_CXX_FLAGS += -ggdb
+ C_CXX_FLAGS += -ggdb
WX_CONFIGURE_FLAGS += --enable-debug_gdb --enable-debug_info
endif
@@ -172,7 +172,7 @@ ifeq "$(shell uname -s)" "Linux"
WXCONFIG_CFLAGS += -fdata-sections -ffunction-sections
WXCONFIG_CXXFLAGS += -fdata-sections -ffunction-sections
endif
-
+
ifneq "$(origin WXSTATIC)" "command line"
LFLAGS += -ldl
else
@@ -191,7 +191,7 @@ ifeq "$(shell uname -s)" "Darwin"
PLATFORM := MacOSX
APPNAME := VeraCrypt
-
+
export VC_OSX_TARGET ?= 10.7
#check to see if XCode 3 path exists.Otherwise, use XCode 4 path
@@ -284,7 +284,7 @@ WX_CONFIGURE_FLAGS += --enable-unicode -disable-shared --disable-dependency-trac
--disable-gif --disable-pcx --disable-tga --disable-iff --disable-gif --disable-pnm --disable-svg \
--without-expat --without-libtiff --without-libjpeg --without-libpng -without-regex --without-zlib
-ifeq "$(PLATFORM)" "Linux"
+ifeq "$(PLATFORM)" "Linux"
WX_CONFIGURE_FLAGS += --disable-tooltips
endif
@@ -301,7 +301,7 @@ all clean:
PROJ=$$(echo $$DIR | cut -d/ -f1); \
$(MAKE) -C $$DIR -f $$PROJ.make NAME=$$PROJ $(MAKECMDGOALS) || exit $?; \
export LIBS="$(BASE_DIR)/$$DIR/$$PROJ.a $$LIBS"; \
- done
+ done
#------ wxWidgets build ------
@@ -323,6 +323,6 @@ endif
mkdir -p "$(WX_BUILD_DIR)"
@echo Configuring wxWidgets library...
cd "$(WX_BUILD_DIR)" && "$(WX_ROOT)/configure" $(WX_CONFIGURE_FLAGS) >/dev/null
-
+
@echo Building wxWidgets library...
cd "$(WX_BUILD_DIR)" && $(MAKE)
diff --git a/src/Resources/Icons/VeraCrypt-128x128.xpm b/src/Resources/Icons/VeraCrypt-128x128.xpm
index 42c5189a..42c5189a 100755..100644
--- a/src/Resources/Icons/VeraCrypt-128x128.xpm
+++ b/src/Resources/Icons/VeraCrypt-128x128.xpm
diff --git a/src/Resources/Icons/VeraCrypt-256x256.xpm b/src/Resources/Icons/VeraCrypt-256x256.xpm
index 7c9107fe..7c9107fe 100755..100644
--- a/src/Resources/Icons/VeraCrypt-256x256.xpm
+++ b/src/Resources/Icons/VeraCrypt-256x256.xpm