summaryrefslogtreecommitdiff
path: root/src/lib/cross_windows.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/cross_windows.cc')
-rw-r--r--src/lib/cross_windows.cc21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/lib/cross_windows.cc b/src/lib/cross_windows.cc
index 054961578..200b72485 100644
--- a/src/lib/cross_windows.cc
+++ b/src/lib/cross_windows.cc
@@ -44,10 +44,11 @@ extern "C" {
#include <setupapi.h>
#include <fileapi.h>
#undef DATADIR
-#include <shlwapi.h>
-#include <shlobj.h>
-#include <shellapi.h>
#include <knownfolders.h>
+#include <processenv.h>
+#include <shellapi.h>
+#include <shlobj.h>
+#include <shlwapi.h>
#include <fcntl.h>
#include <fstream>
#include <map>
@@ -657,3 +658,17 @@ show_in_file_manager (boost::filesystem::path, boost::filesystem::path select)
return (reinterpret_cast<int64_t>(r) <= 32);
}
+
+ArgFixer::ArgFixer(int, char**)
+{
+ auto cmd_line = GetCommandLineW();
+ auto wide_argv = CommandLineToArgvW(cmd_line, &_argc);
+
+ _argv_strings.resize(_argc);
+ _argv = new char*[_argc];
+ for (int i = 0; i < _argc; ++i) {
+ _argv_strings[i] = wchar_to_utf8(wide_argv[i]);
+ _argv[i] = const_cast<char*>(_argv_strings[i].c_str());
+ }
+}
+