diff options
Diffstat (limited to 'b2g/gaia/run-b2g.cpp')
-rw-r--r-- | b2g/gaia/run-b2g.cpp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/b2g/gaia/run-b2g.cpp b/b2g/gaia/run-b2g.cpp deleted file mode 100644 index 26fce08a2..000000000 --- a/b2g/gaia/run-b2g.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include <Windows.h> -#include <Shlwapi.h> -#include <strsafe.h> - -// Linker options -#pragma comment(lib, "User32.lib") -#pragma comment(lib, "shlwapi.lib") -#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:wmainCRTStartup") - -#define NUM_MAX_PATH_BYTES sizeof(wchar_t) * MAX_PATH + 1 -#define PROFILE_ARG L" -profile " - -// Options that can be overridden at build time with -D -#ifndef B2G_NAME -#define B2G_NAME L"b2g.exe" -#endif -#ifndef GAIA_PATH -#define GAIA_PATH L"gaia\\profile" -#endif - -void error(wchar_t* msg){ - MessageBoxW(nullptr, msg, L"Error starting program", MB_OK | MB_ICONERROR); -} - -/* This function takes a string which represents a windows path, orig. - * The file portion of the path is stripped off and replaced with the - * path component, file. This function returns a string which represents - * a windows path with the modifications requested and needs to be freed - * explicitly by the calling function. - */ -wchar_t* make_path_with_leaf_file_name(wchar_t* orig, wchar_t* file){ - wchar_t* buffer = (wchar_t*) malloc(NUM_MAX_PATH_BYTES); - if (!buffer) { - return nullptr; - } - if (FAILED(StringCchCopyW(buffer, NUM_MAX_PATH_BYTES, orig))) { - error(L"Error copying string"); - free(buffer); - buffer = nullptr; - } - PathRemoveFileSpecW(buffer); - if (!PathAppendW(buffer, file)) { - error(L"Unable to append file to directory"); - free(buffer); - buffer = nullptr; - } - return buffer; -} - -BOOL execute(wchar_t* binary_path, wchar_t* args, int cp_flags) { - STARTUPINFOW si; - PROCESS_INFORMATION pi; - - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - ZeroMemory(&pi, sizeof(pi)); - - if (!CreateProcessW( - binary_path, - args, - nullptr, - nullptr, - FALSE, - cp_flags, - nullptr, - nullptr, - &si, - &pi)){ - error(L"Could not execute program"); - return FALSE; - } - - WaitForInputIdle(pi.hProcess, 0); - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - return true; -} - -int wmain(int argc, wchar_t *argv[], wchar_t *envp[]){ - int cp_flags; - wchar_t* b2g_path = make_path_with_leaf_file_name(argv[0], B2G_NAME); - wchar_t* profile_path = make_path_with_leaf_file_name(argv[0], GAIA_PATH); - // 10 chars for the ' -profile ' portion of the argument - wchar_t* args = (wchar_t*) malloc(2 * NUM_MAX_PATH_BYTES + wcslen(PROFILE_ARG)); - if (FAILED(StringCchPrintfW(args, NUM_MAX_PATH_BYTES, L"\"%ws\"%ws\"%ws\"", b2g_path, PROFILE_ARG, profile_path))) { - error(L"Could not create argument string"); - ExitProcess(1); - } -#ifdef SHOW_CONSOLE - cp_flags = 0; -#else - cp_flags = DETACHED_PROCESS; -#endif - if (!execute(b2g_path, args, cp_flags)) { - error(L"Failed to launch program"); - } - free(profile_path); - free(b2g_path); - free(args); - profile_path = b2g_path = args = nullptr; - -} |