VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/Cmdline.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/Cmdline.c')
-rw-r--r--src/Common/Cmdline.c368
1 files changed, 184 insertions, 184 deletions
diff --git a/src/Common/Cmdline.c b/src/Common/Cmdline.c
index 759c63f5..e5fe5969 100644
--- a/src/Common/Cmdline.c
+++ b/src/Common/Cmdline.c
@@ -1,184 +1,184 @@
-/*
- Legal Notice: Some portions of the source code contained in this file were
- derived from the source code of TrueCrypt 7.1a, which is
- Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
- governed by the TrueCrypt License 3.0, also from the source code of
- Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
- and which is governed by the 'License Agreement for Encryption for the Masses'
- 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
- code distribution packages. */
-
-#include "Tcdefs.h"
-
-#include <malloc.h>
-#include <ctype.h>
-#include "Cmdline.h"
-
-#include "Resource.h"
-#include "Crypto.h"
-#include "Apidrvr.h"
-#include "Dlgcode.h"
-#include "Language.h"
-#include <Strsafe.h>
-
-#ifndef SRC_POS
-#define SRC_POS (__FUNCTION__ ":" TC_TO_STRING(__LINE__))
-#endif
-
-/* Except in response to the WM_INITDIALOG message, the dialog box procedure
- should return nonzero if it processes the message, and zero if it does
- not. - see DialogProc */
-BOOL CALLBACK CommandHelpDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- UNREFERENCED_PARAMETER (lParam); /* remove warning */
- UNREFERENCED_PARAMETER (wParam); /* remove warning */
-
- switch (msg)
- {
- case WM_INITDIALOG:
- {
- wchar_t * tmp = err_malloc(8192 * sizeof (wchar_t));
- wchar_t tmp2[MAX_PATH * 2];
- argumentspec *as;
- int i;
-
- LocalizeDialog (hwndDlg, "IDD_COMMANDHELP_DLG");
-
- as = (argumentspec*) lParam;
-
- *tmp = 0;
-
- StringCchCopyW (tmp, 8192, L"VeraCrypt " _T(VERSION_STRING));
-#ifdef _WIN64
- StringCchCatW (tmp, 8192, L" (64-bit)");
-#else
- StringCchCatW (tmp, 8192, L" (32-bit)");
-#endif
-#if (defined(_DEBUG) || defined(DEBUG))
- StringCchCatW (tmp, 8192, L" (debug)");
-#endif
-
- StringCchCatW (tmp, 8192, L"\n\nCommand line options:\n\n");
- for (i = 0; i < as->arg_cnt; i ++)
- {
- if (!as->args[i].Internal)
- {
- StringCchPrintfW(tmp2, MAX_PATH * 2, L"%s\t%s\n", as->args[i].short_name, as->args[i].long_name);
- StringCchCatW(tmp, 8192, tmp2);
- }
- }
-
- StringCchCatW (tmp, 8192, L"\nExamples:\n\nMount a volume as X:\tveracrypt.exe /q /v volume.hc /l X\nDismount a volume X:\tveracrypt.exe /q /d X");
-
- SetWindowTextW (GetDlgItem (hwndDlg, IDC_COMMANDHELP_TEXT), tmp);
-
- TCfree(tmp);
- return 1;
- }
-
- case WM_COMMAND:
- EndDialog (hwndDlg, IDOK);
- return 1;
- case WM_CLOSE:
- EndDialog (hwndDlg, 0);
- return 1;
- }
-
- return 0;
-}
-
-int Win32CommandLine (wchar_t ***lpszArgs)
-{
- int argumentCount;
- int i;
-
- LPWSTR *arguments = CommandLineToArgvW (GetCommandLineW(), &argumentCount);
- if (!arguments)
- {
- handleWin32Error (NULL, SRC_POS);
- return 0;
- }
-
- --argumentCount;
- if (argumentCount < 1)
- {
- LocalFree (arguments);
- return 0;
- }
-
- *lpszArgs = malloc (sizeof (wchar_t *) * argumentCount);
- if (!*lpszArgs)
- AbortProcess ("OUTOFMEMORY");
-
- for (i = 0; i < argumentCount; ++i)
- {
- wchar_t *arg = _wcsdup (arguments[i + 1]);
- if (!arg)
- AbortProcess ("OUTOFMEMORY");
-
- (*lpszArgs)[i] = arg;
- }
-
- LocalFree (arguments);
- return argumentCount;
-}
-
-int GetArgSepPosOffset (wchar_t *lpszArgument)
-{
- if (lpszArgument[0] == L'/')
- return 1;
-
- return 0;
-}
-
-int GetArgumentID (argumentspec *as, wchar_t *lpszArgument)
-{
- int i;
-
- for (i = 0; i < as->arg_cnt; i++)
- {
- if (_wcsicmp (as->args[i].long_name, lpszArgument) == 0)
- {
- return as->args[i].Id;
- }
- }
-
- for (i = 0; i < as->arg_cnt; i++)
- {
- if (as->args[i].short_name[0] == 0)
- continue;
-
- if (_wcsicmp (as->args[i].short_name, lpszArgument) == 0)
- {
- return as->args[i].Id;
- }
- }
-
-
- return -1;
-}
-
-int GetArgumentValue (wchar_t **lpszCommandLineArgs, int *nArgIdx,
- int nNoCommandLineArgs, wchar_t *lpszValue, int nValueSize)
-{
- *lpszValue = 0;
-
- if (*nArgIdx + 1 < nNoCommandLineArgs)
- {
- int x = GetArgSepPosOffset (lpszCommandLineArgs[*nArgIdx + 1]);
- if (x == 0)
- {
- /* Handles the case of space between parameter code
- and value */
- StringCchCopyW (lpszValue, nValueSize, lpszCommandLineArgs[*nArgIdx + 1]);
- lpszValue[nValueSize - 1] = 0;
- (*nArgIdx)++;
- return HAS_ARGUMENT;
- }
- }
-
- return HAS_NO_ARGUMENT;
-}
+/*
+ Legal Notice: Some portions of the source code contained in this file were
+ derived from the source code of TrueCrypt 7.1a, which is
+ Copyright (c) 2003-2012 TrueCrypt Developers Association and which is
+ governed by the TrueCrypt License 3.0, also from the source code of
+ Encryption for the Masses 2.02a, which is Copyright (c) 1998-2000 Paul Le Roux
+ and which is governed by the 'License Agreement for Encryption for the Masses'
+ 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
+ code distribution packages. */
+
+#include "Tcdefs.h"
+
+#include <malloc.h>
+#include <ctype.h>
+#include "Cmdline.h"
+
+#include "Resource.h"
+#include "Crypto.h"
+#include "Apidrvr.h"
+#include "Dlgcode.h"
+#include "Language.h"
+#include <Strsafe.h>
+
+#ifndef SRC_POS
+#define SRC_POS (__FUNCTION__ ":" TC_TO_STRING(__LINE__))
+#endif
+
+/* Except in response to the WM_INITDIALOG message, the dialog box procedure
+ should return nonzero if it processes the message, and zero if it does
+ not. - see DialogProc */
+BOOL CALLBACK CommandHelpDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ UNREFERENCED_PARAMETER (lParam); /* remove warning */
+ UNREFERENCED_PARAMETER (wParam); /* remove warning */
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ {
+ wchar_t * tmp = err_malloc(8192 * sizeof (wchar_t));
+ wchar_t tmp2[MAX_PATH * 2];
+ argumentspec *as;
+ int i;
+
+ LocalizeDialog (hwndDlg, "IDD_COMMANDHELP_DLG");
+
+ as = (argumentspec*) lParam;
+
+ *tmp = 0;
+
+ StringCchCopyW (tmp, 8192, L"VeraCrypt " _T(VERSION_STRING));
+#ifdef _WIN64
+ StringCchCatW (tmp, 8192, L" (64-bit)");
+#else
+ StringCchCatW (tmp, 8192, L" (32-bit)");
+#endif
+#if (defined(_DEBUG) || defined(DEBUG))
+ StringCchCatW (tmp, 8192, L" (debug)");
+#endif
+
+ StringCchCatW (tmp, 8192, L"\n\nCommand line options:\n\n");
+ for (i = 0; i < as->arg_cnt; i ++)
+ {
+ if (!as->args[i].Internal)
+ {
+ StringCchPrintfW(tmp2, MAX_PATH * 2, L"%s\t%s\n", as->args[i].short_name, as->args[i].long_name);
+ StringCchCatW(tmp, 8192, tmp2);
+ }
+ }
+
+ StringCchCatW (tmp, 8192, L"\nExamples:\n\nMount a volume as X:\tveracrypt.exe /q /v volume.hc /l X\nDismount a volume X:\tveracrypt.exe /q /d X");
+
+ SetWindowTextW (GetDlgItem (hwndDlg, IDC_COMMANDHELP_TEXT), tmp);
+
+ TCfree(tmp);
+ return 1;
+ }
+
+ case WM_COMMAND:
+ EndDialog (hwndDlg, IDOK);
+ return 1;
+ case WM_CLOSE:
+ EndDialog (hwndDlg, 0);
+ return 1;
+ }
+
+ return 0;
+}
+
+int Win32CommandLine (wchar_t ***lpszArgs)
+{
+ int argumentCount;
+ int i;
+
+ LPWSTR *arguments = CommandLineToArgvW (GetCommandLineW(), &argumentCount);
+ if (!arguments)
+ {
+ handleWin32Error (NULL, SRC_POS);
+ return 0;
+ }
+
+ --argumentCount;
+ if (argumentCount < 1)
+ {
+ LocalFree (arguments);
+ return 0;
+ }
+
+ *lpszArgs = malloc (sizeof (wchar_t *) * argumentCount);
+ if (!*lpszArgs)
+ AbortProcess ("OUTOFMEMORY");
+
+ for (i = 0; i < argumentCount; ++i)
+ {
+ wchar_t *arg = _wcsdup (arguments[i + 1]);
+ if (!arg)
+ AbortProcess ("OUTOFMEMORY");
+
+ (*lpszArgs)[i] = arg;
+ }
+
+ LocalFree (arguments);
+ return argumentCount;
+}
+
+int GetArgSepPosOffset (wchar_t *lpszArgument)
+{
+ if (lpszArgument[0] == L'/')
+ return 1;
+
+ return 0;
+}
+
+int GetArgumentID (argumentspec *as, wchar_t *lpszArgument)
+{
+ int i;
+
+ for (i = 0; i < as->arg_cnt; i++)
+ {
+ if (_wcsicmp (as->args[i].long_name, lpszArgument) == 0)
+ {
+ return as->args[i].Id;
+ }
+ }
+
+ for (i = 0; i < as->arg_cnt; i++)
+ {
+ if (as->args[i].short_name[0] == 0)
+ continue;
+
+ if (_wcsicmp (as->args[i].short_name, lpszArgument) == 0)
+ {
+ return as->args[i].Id;
+ }
+ }
+
+
+ return -1;
+}
+
+int GetArgumentValue (wchar_t **lpszCommandLineArgs, int *nArgIdx,
+ int nNoCommandLineArgs, wchar_t *lpszValue, int nValueSize)
+{
+ *lpszValue = 0;
+
+ if (*nArgIdx + 1 < nNoCommandLineArgs)
+ {
+ int x = GetArgSepPosOffset (lpszCommandLineArgs[*nArgIdx + 1]);
+ if (x == 0)
+ {
+ /* Handles the case of space between parameter code
+ and value */
+ StringCchCopyW (lpszValue, nValueSize, lpszCommandLineArgs[*nArgIdx + 1]);
+ lpszValue[nValueSize - 1] = 0;
+ (*nArgIdx)++;
+ return HAS_ARGUMENT;
+ }
+ }
+
+ return HAS_NO_ARGUMENT;
+}