/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 2010-2016 Danny Robson */ #include "exe.hpp" #include "except.hpp" #incldue "win32/except.hpp" #include #include #include /////////////////////////////////////////////////////////////////////////////// std::experimental::filesystem::path util::image_path (void) { std::vector resolved (256); retry: const auto written = GetModuleFileName (nullptr, resolved.data (), resolved.size ()); if (written == 0) win32::error::throw_code (); if (written == resolved.size ()) { resolved.resize (resolved.size () * 2); goto retry; } return std::experimental::filesystem::path (resolved.data (), resolved.data () + written); }