1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-11 11:08:02 -06:00

Merge pull request #55 from davidfoerster/xdg-config-paths

Use XDG_CONFIG_HOME to determine the path of the configuration
This commit is contained in:
Mounir IDRASSI
2016-05-02 07:19:29 +02:00
15 changed files with 93 additions and 28 deletions

0
src/Core/Unix/MacOSX/CoreMacOSX.cpp Executable file → Normal file
View File

0
src/Crypto/Whirlpool.c Executable file → Normal file
View File

0
src/Crypto/config.h Executable file → Normal file
View File

0
src/Crypto/cpu.c Executable file → Normal file
View File

0
src/Crypto/cpu.h Executable file → Normal file
View File

0
src/Crypto/misc.h Executable file → Normal file
View File

View File

@@ -3,7 +3,7 @@
Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
by the TrueCrypt License 3.0. 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 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 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 contained in the file License.txt included in VeraCrypt binary and source
@@ -22,12 +22,60 @@
namespace VeraCrypt 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 () wxApp* Application::CreateConsoleApp ()
{ {
mUserInterface = new TextUserInterface; mUserInterface = new TextUserInterface;
mUserInterfaceType = UserInterfaceType::Text; mUserInterfaceType = UserInterfaceType::Text;
return mUserInterface; return mUserInterface;
} }
#ifndef TC_NO_GUI #ifndef TC_NO_GUI
wxApp* Application::CreateGuiApp () wxApp* Application::CreateGuiApp ()
@@ -35,32 +83,49 @@ namespace VeraCrypt
mUserInterface = new GraphicUserInterface; mUserInterface = new GraphicUserInterface;
mUserInterfaceType = UserInterfaceType::Graphic; mUserInterfaceType = UserInterfaceType::Graphic;
return mUserInterface; return mUserInterface;
} }
#endif #endif
FilePath Application::GetConfigFilePath (const wxString &configFileName, bool createConfigDir) FilePath Application::GetConfigFilePath (const wxString &configFileName, bool createConfigDir)
{ {
DirectoryPath configDir; static wxScopedPtr<const wxString> configDirC;
static bool configDirExists = false;
if (!Core->IsInPortableMode())
if (!configDirExists)
{ {
#ifdef TC_MACOSX if (!configDirC)
wxFileName configPath (L"~/Library/Application Support/VeraCrypt"); {
configPath.Normalize(); wxString *configDir;
configDir = wstring (configPath.GetFullPath());
#else if (Core->IsInPortableMode())
wxStandardPaths& stdPaths = wxStandardPaths::Get(); {
configDir = wstring (stdPaths.GetUserDataDir()); configDir = new wxString (
#endif 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;
}
} }
else
configDir = GetExecutableDirectory();
if (createConfigDir && !configDir.IsDirectory()) return FilePath((*configDirC + configFileName).ToStdWstring());
Directory::Create (configDir);
FilePath filePath = wstring (wxFileName (wstring (configDir), configFileName).GetFullPath());
return filePath;
} }
DirectoryPath Application::GetExecutableDirectory () DirectoryPath Application::GetExecutableDirectory ()

0
src/Main/Forms/ChangePasswordDialog.cpp Executable file → Normal file
View File

0
src/Main/Forms/MountOptionsDialog.cpp Executable file → Normal file
View File

0
src/Main/Forms/VolumeCreationWizard.cpp Executable file → Normal file
View File

0
src/Main/Forms/VolumePasswordPanel.cpp Executable file → Normal file
View File

0
src/Main/Forms/VolumePimWizardPage.cpp Executable file → Normal file
View File

View File

@@ -3,7 +3,7 @@
# Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed # Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
# by the TrueCrypt License 3.0. # 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 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 # 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 # contained in the file License.txt included in VeraCrypt binary and source
@@ -114,7 +114,7 @@ endif
ifeq "$(origin DEBUGGER)" "command line" ifeq "$(origin DEBUGGER)" "command line"
C_CXX_FLAGS += -ggdb C_CXX_FLAGS += -ggdb
WX_CONFIGURE_FLAGS += --enable-debug_gdb --enable-debug_info WX_CONFIGURE_FLAGS += --enable-debug_gdb --enable-debug_info
endif endif
@@ -172,7 +172,7 @@ ifeq "$(shell uname -s)" "Linux"
WXCONFIG_CFLAGS += -fdata-sections -ffunction-sections WXCONFIG_CFLAGS += -fdata-sections -ffunction-sections
WXCONFIG_CXXFLAGS += -fdata-sections -ffunction-sections WXCONFIG_CXXFLAGS += -fdata-sections -ffunction-sections
endif endif
ifneq "$(origin WXSTATIC)" "command line" ifneq "$(origin WXSTATIC)" "command line"
LFLAGS += -ldl LFLAGS += -ldl
else else
@@ -191,7 +191,7 @@ ifeq "$(shell uname -s)" "Darwin"
PLATFORM := MacOSX PLATFORM := MacOSX
APPNAME := VeraCrypt APPNAME := VeraCrypt
export VC_OSX_TARGET ?= 10.7 export VC_OSX_TARGET ?= 10.7
#check to see if XCode 3 path exists.Otherwise, use XCode 4 path #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 \ --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 --without-expat --without-libtiff --without-libjpeg --without-libpng -without-regex --without-zlib
ifeq "$(PLATFORM)" "Linux" ifeq "$(PLATFORM)" "Linux"
WX_CONFIGURE_FLAGS += --disable-tooltips WX_CONFIGURE_FLAGS += --disable-tooltips
endif endif
@@ -301,7 +301,7 @@ all clean:
PROJ=$$(echo $$DIR | cut -d/ -f1); \ PROJ=$$(echo $$DIR | cut -d/ -f1); \
$(MAKE) -C $$DIR -f $$PROJ.make NAME=$$PROJ $(MAKECMDGOALS) || exit $?; \ $(MAKE) -C $$DIR -f $$PROJ.make NAME=$$PROJ $(MAKECMDGOALS) || exit $?; \
export LIBS="$(BASE_DIR)/$$DIR/$$PROJ.a $$LIBS"; \ export LIBS="$(BASE_DIR)/$$DIR/$$PROJ.a $$LIBS"; \
done done
#------ wxWidgets build ------ #------ wxWidgets build ------
@@ -323,6 +323,6 @@ endif
mkdir -p "$(WX_BUILD_DIR)" mkdir -p "$(WX_BUILD_DIR)"
@echo Configuring wxWidgets library... @echo Configuring wxWidgets library...
cd "$(WX_BUILD_DIR)" && "$(WX_ROOT)/configure" $(WX_CONFIGURE_FLAGS) >/dev/null cd "$(WX_BUILD_DIR)" && "$(WX_ROOT)/configure" $(WX_CONFIGURE_FLAGS) >/dev/null
@echo Building wxWidgets library... @echo Building wxWidgets library...
cd "$(WX_BUILD_DIR)" && $(MAKE) cd "$(WX_BUILD_DIR)" && $(MAKE)

0
src/Resources/Icons/VeraCrypt-128x128.xpm Executable file → Normal file
View File

0
src/Resources/Icons/VeraCrypt-256x256.xpm Executable file → Normal file
View File