Skip to content

Commit

Permalink
Clean-up code, we are using using
Browse files Browse the repository at this point in the history
  • Loading branch information
melroy89 committed Aug 24, 2024
1 parent 3370b26 commit 5b25588
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 105 deletions.
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
"codecvt": "cpp",
"__errc": "cpp",
"__mutex_base": "cpp",
"__tree": "cpp"
"__tree": "cpp",
"format": "cpp"
}
}
66 changes: 39 additions & 27 deletions include/helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@
#include "dll_override_types.h"

using std::endl;
using std::pair;
using std::string;
using std::vector;

/**
* \class Helper
Expand All @@ -44,10 +46,20 @@ class Helper
// Singleton
static Helper& get_instance();

static std::vector<string> get_bottles_paths(const string& dir_path, bool display_default_wine_machine);
static string run_program(const string& prefix_path, int debug_log_level, const string& program, bool give_error = true, bool stderr_output = true);
static string run_program_under_wine(
bool wine_64_bit, const string& prefix_path, int debug_log_level, const string& program, bool give_error = true, bool stderr_output = true);
static vector<string> get_bottles_paths(const string& dir_path, bool display_default_wine_machine);
static string run_program(const string& prefix_path,
int debug_log_level,
const string& program,
const vector<pair<string, string>>& env_vars,
bool give_error = true,
bool stderr_output = true);
static string run_program_under_wine(bool wine_64_bit,
const string& prefix_path,
int debug_log_level,
const string& program,
const vector<pair<string, string>>& env_vars,
bool give_error = true,
bool stderr_output = true);
static void write_to_log_file(const string& logging_bottle_prefix, const string& logging);
static string get_log_file_path(const string& logging_bottle_prefix);
static void wait_until_wineserver_is_terminated(const string& prefix_path);
Expand Down Expand Up @@ -80,50 +92,50 @@ class Helper
static void set_virtual_desktop(const string& prefix_path, string resolution);
static void disable_virtual_desktop(const string& prefix_path);
static void set_audio_driver(const string& prefix_path, BottleTypes::AudioDriver audio_driver);
static std::vector<string> get_menu_items(const string& prefix_path);
static std::vector<std::pair<string, string>> get_desktop_items(const string& prefix_path);
static vector<string> get_menu_items(const string& prefix_path);
static vector<pair<string, string>> get_desktop_items(const string& prefix_path);
static string log_level_to_winedebug_string(int log_level);
static string get_wine_guid(bool wine_64_bit, const string& prefix_path, const string& application_name);
static bool get_dll_override(const string& prefix_path, const string& dll_name, DLLOverride::LoadOrder load_order = DLLOverride::LoadOrder::Native);
static string get_uninstaller(const string& prefix_path, const string& uninstallerKey);
static string get_font_filename(const string& prefix_path, BottleTypes::Bit bit, const string& fontName);
static string get_image_location(const string& filename);
static bool is_default_wine_bottle(const string& prefix_path);
static string encode_text(const std::string& string);
static string string_to_icon(const std::string& string);
static string encode_text(const string& text);
static string string_to_icon(const string& filename);

private:
Helper();
~Helper();
Helper(const Helper&) = delete;
Helper& operator=(const Helper&) = delete;

static std::pair<int, string> exec(const std::string& command);
static string exec_error_message(const std::string& command);
static std::pair<int, string> exec(const string& command);
static string exec_error_message(const string& command);
static int close_exec_stream(std::FILE* file);
static void write_file(const string& filename, const string& contents);
static string read_file(const string& filename);
static string get_winetricks_version();
static string get_reg_value(const string& filename, const string& key_name, const string& value_name);
static std::vector<string> get_reg_keys(const string& file_path, const string& key_name);
static std::vector<std::pair<string, string>> get_reg_keys_name_data_pair(const string& file_path, const string& key_name);
static std::vector<std::pair<string, string>>
static vector<string> get_reg_keys(const string& file_path, const string& key_name);
static vector<pair<string, string>> get_reg_keys_name_data_pair(const string& file_path, const string& key_name);
static vector<pair<string, string>>
get_reg_keys_name_data_pair_filter(const string& file_path, const string& key_name, const string& key_value_filter = "");
static std::vector<std::pair<string, string>> get_reg_keys_name_data_pair_filter_ignore(const string& file_path,
const string& key_name,
const string& key_value_filter = "",
const string& key_name_ignore_filter = "");
static std::vector<string> get_reg_keys_value_data(const string& file_path, const string& key_name);
static std::vector<string> get_reg_keys_value_data_filter(const string& file_path, const string& key_name, const string& key_value_filter = "");
static std::vector<string> get_reg_keys_value_data_filter_ignore(const string& file_path,
const string& key_name,
const string& key_value_filter = "",
const string& key_name_ignore_filter = "");
static vector<pair<string, string>> get_reg_keys_name_data_pair_filter_ignore(const string& file_path,
const string& key_name,
const string& key_value_filter = "",
const string& key_name_ignore_filter = "");
static vector<string> get_reg_keys_value_data(const string& file_path, const string& key_name);
static vector<string> get_reg_keys_value_data_filter(const string& file_path, const string& key_name, const string& key_value_filter = "");
static vector<string> get_reg_keys_value_data_filter_ignore(const string& file_path,
const string& key_name,
const string& key_value_filter = "",
const string& key_name_ignore_filter = "");
static string get_reg_meta_data(const string& filename, const string& meta_value_name);
static string get_bottle_dir_from_prefix(const string& prefix_path);
static std::vector<string> read_file_lines(const string& file_path);
static std::vector<string> split(const string& s, const char delimiter);
static vector<string> read_file_lines(const string& file_path);
static vector<string> split(const string& s, const char delimiter);
static string unescape_reg_key_data(const string& src);
static string string2hex(const std::string& str, bool capital = false);
static string hex2string(const std::string& hexstr);
static string string2hex(const string& str, bool capital = false);
static string hex2string(const string& hexstr);
};
34 changes: 19 additions & 15 deletions src/bottle_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -675,13 +675,15 @@ void BottleManager::run_executable(string program, bool is_msi_file = false)
string program_prefix = is_msi_file ? "msiexec /i" : "start /unix";
// Be-sure to execute the program between quotes (due to spaces)
program = program_prefix + " \"" + program + "\"";
auto& env_vars = active_bottle_->env_vars();

std::thread t(
[wine64 = std::move(is_wine64_bit_), wine_prefix, debug_log_level, program, logging_stderr = std::move(is_logging_stderr_),
[wine64 = std::move(is_wine64_bit_), wine_prefix, debug_log_level, program, env_vars, logging_stderr = std::move(is_logging_stderr_),
debug_logging = std::move(is_debug_logging), output_logging_mutex = std::ref(output_loging_mutex_),
logging_bottle_prefix = std::ref(logging_bottle_prefix_), output_logging = std::ref(output_logging_),
write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, program, env_vars, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -721,13 +723,15 @@ void BottleManager::run_program(string program)
// Add 'start' for Windows style commands, like 'notepad'
program = "start \"" + program + "\"";
}
auto& env_vars = active_bottle_->env_vars();

std::thread t(
[wine64 = std::move(is_wine64_bit_), wine_prefix, debug_log_level, program, logging_stderr = std::move(is_logging_stderr_),
[wine64 = std::move(is_wine64_bit_), wine_prefix, debug_log_level, program, env_vars, logging_stderr = std::move(is_logging_stderr_),
debug_logging = std::move(is_debug_logging), output_logging_mutex = std::ref(output_loging_mutex_),
logging_bottle_prefix = std::ref(logging_bottle_prefix_), output_logging = std::ref(output_logging_),
write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, program, env_vars, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand All @@ -748,7 +752,7 @@ void BottleManager::run_program(string program)
output_logging_mutex = std::ref(output_loging_mutex_), logging_bottle_prefix = std::ref(logging_bottle_prefix_),
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -794,7 +798,7 @@ void BottleManager::reboot()
logging_bottle_prefix = std::ref(logging_bottle_prefix_), output_logging = std::ref(output_logging_),
write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -r", true, logging_stderr);
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -r", {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -826,7 +830,7 @@ void BottleManager::update()
output_logging_mutex = std::ref(output_loging_mutex_), logging_bottle_prefix = std::ref(logging_bottle_prefix_),
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -u", true, logging_stderr);
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -u", {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -884,7 +888,7 @@ void BottleManager::kill_processes()
logging_bottle_prefix = std::ref(logging_bottle_prefix_), output_logging = std::ref(output_logging_),
write_log_dispatcher = &write_log_dispatcher_]
{
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -k", true, logging_stderr);
string output = Helper::run_program_under_wine(wine64, wine_prefix, debug_log_level, "wineboot -k", {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -928,7 +932,7 @@ void BottleManager::install_d3dx9(Gtk::Window& parent, const string& version)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -974,7 +978,7 @@ void BottleManager::install_dxvk(Gtk::Window& parent, const string& version)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -1014,7 +1018,7 @@ void BottleManager::install_vkd3d(Gtk::Window& parent)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -1055,7 +1059,7 @@ void BottleManager::install_visual_cpp_package(Gtk::Window& parent, const string
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -1114,7 +1118,7 @@ void BottleManager::install_dot_net(Gtk::Window& parent, const string& version)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -1158,7 +1162,7 @@ void BottleManager::install_core_fonts(Gtk::Window& parent)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down Expand Up @@ -1197,7 +1201,7 @@ void BottleManager::install_liberation(Gtk::Window& parent)
output_logging = std::ref(output_logging_), write_log_dispatcher = &write_log_dispatcher_,
finish_dispatcher = &finished_package_install_dispatcher]
{
string output = Helper::run_program(wine_prefix, debug_log_level, program, true, logging_stderr);
string output = Helper::run_program(wine_prefix, debug_log_level, program, {}, true, logging_stderr);
if (debug_logging && !output.empty())
{
{
Expand Down
Loading

0 comments on commit 5b25588

Please sign in to comment.