Linux/MacOSX: Load preferences if only volume path is given in command line and GUI mode enabled.

This commit is contained in:
Mounir IDRASSI 2015-03-08 20:08:16 +01:00
parent f80f7d47d5
commit 279c99fdf8
3 changed files with 23 additions and 6 deletions

View File

@ -17,7 +17,7 @@
namespace VeraCrypt
{
CommandLineInterface::CommandLineInterface (wxCmdLineParser &parser, UserInterfaceType::Enum interfaceType) :
CommandLineInterface::CommandLineInterface (int argc, wchar_t** argv, UserInterfaceType::Enum interfaceType) :
ArgCommand (CommandId::None),
ArgFilesystem (VolumeCreationOptions::FilesystemType::Unknown),
ArgNoHiddenVolumeProtection (false),
@ -26,6 +26,9 @@ namespace VeraCrypt
ArgTrueCryptMode (false),
StartBackgroundTask (false)
{
wxCmdLineParser parser;
parser.SetCmdLine (argc, argv);
parser.SetSwitchChars (L"-");
parser.AddOption (L"", L"auto-mount", _("Auto mount device-hosted/favorite volumes"));
@ -475,6 +478,22 @@ namespace VeraCrypt
// Parameters
if (parser.GetParamCount() > 0)
{
// in case of GUI interface, we load the preference when only
// specifying volume path without any option/switch
if (Application::GetUserInterfaceType() != UserInterfaceType::Text)
{
// check if only parameters were specified in the command line
// (e.g. when associating .hc extension in mimetype with /usr/bin/veracrypt)
bool onlyParametersPresent = (parser.GetParamCount() == (size_t) (argc - 1));
if (onlyParametersPresent)
{
// no options/switches, so we load prefences now
Preferences.Load();
ArgMountOptions = Preferences.DefaultMountOptions;
}
}
if (ArgCommand == CommandId::None)
{
ArgCommand = CommandId::MountVolume;

View File

@ -50,7 +50,7 @@ namespace VeraCrypt
struct CommandLineInterface
{
public:
CommandLineInterface (wxCmdLineParser &parser, UserInterfaceType::Enum interfaceType);
CommandLineInterface (int argc, wchar_t** argv, UserInterfaceType::Enum interfaceType);
virtual ~CommandLineInterface ();

View File

@ -501,10 +501,8 @@ namespace VeraCrypt
LangString.Init();
Core->Init();
wxCmdLineParser parser;
parser.SetCmdLine (argc, argv);
CmdLine.reset (new CommandLineInterface (parser, InterfaceType));
CmdLine.reset (new CommandLineInterface (argc, argv, InterfaceType));
SetPreferences (CmdLine->Preferences);
Core->SetApplicationExecutablePath (Application::GetExecutablePath());