std::vector<Drive> osx_disks_to_drives (std::vector<OSXDisk> disks);
+class ArgFixer
+{
+public:
+ ArgFixer(int argc, char** argv);
+
+ int argc() const {
+ return _argc;
+ }
+
+ char** argv() const {
+ return _argv;
+ }
+
+private:
+ int _argc;
+ char** _argv;
+#ifdef DCPOMATIC_WINDOWS
+ std::vector<std::string> _argv_strings;
+#endif
+
+};
+
+
#endif
}
+ArgFixer::ArgFixer(int argc, char** argv)
+ : _argc(argc)
+ , _argv(argv)
+{
+
+}
+
#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>
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());
+ }
+}
+
*/
+#include "lib/cross.h"
#include "lib/kdm_cli.h"
#include "lib/util.h"
#include <iostream>
int
main (int argc, char* argv[])
{
+ ArgFixer fixer(argc, argv);
+
dcpomatic_setup_path_encoding ();
dcpomatic_setup ();
- auto error = kdm_cli (argc, argv, [](std::string s) { std::cout << s << "\n"; });
+ auto error = kdm_cli (fixer.argc(), fixer.argv(), [](std::string s) { std::cout << s << "\n"; });
if (error) {
std::cerr << *error << "\n";
exit (EXIT_FAILURE);