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
commit 0b914c8f5d
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
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
if (!configDirC)
{
wxString *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;
}
}
else
configDir = GetExecutableDirectory();
if (createConfigDir && !configDir.IsDirectory())
Directory::Create (configDir);
FilePath filePath = wstring (wxFileName (wstring (configDir), configFileName).GetFullPath());
return filePath;
return FilePath((*configDirC + configFileName).ToStdWstring());
}
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
# 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)

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