diff --git a/plugins/orders.cpp b/plugins/orders.cpp index ab683f949..629fee225 100644 --- a/plugins/orders.cpp +++ b/plugins/orders.cpp @@ -419,50 +419,8 @@ static command_result orders_export_command(color_ostream & out, const std::stri return file.good() ? CR_OK : CR_FAILURE; } -static command_result orders_import_command(color_ostream & out, const std::string & name) +static command_result orders_import(color_ostream &out, Json::Value &orders) { - if (!is_safe_filename(out, name)) - { - return CR_WRONG_USAGE; - } - - const std::string filename("dfhack-config/orders/" + name + ".json"); - Json::Value orders; - - { - std::ifstream file(filename); - - if (!file.good()) - { - out << COLOR_LIGHTRED << "Cannot find orders file: " << filename << std::endl; - return CR_FAILURE; - } - - try - { - file >> orders; - } - catch (const std::exception & e) - { - out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl; - return CR_FAILURE; - } - - if (!file.good()) - { - out << COLOR_LIGHTRED << "Error reading orders file: " << filename << std::endl; - return CR_FAILURE; - } - } - - if (orders.type() != Json::arrayValue) - { - out << COLOR_LIGHTRED << "Invalid orders file: " << filename << ": expected array" << std::endl; - return CR_FAILURE; - } - - CoreSuspender suspend; - std::map id_mapping; for (auto it : orders) { @@ -793,6 +751,61 @@ static command_result orders_import_command(color_ostream & out, const std::stri return CR_OK; } +static command_result orders_import_command(color_ostream & out, const std::string & name) +{ + if (!is_safe_filename(out, name)) + { + return CR_WRONG_USAGE; + } + + const std::string filename("dfhack-config/orders/" + name + ".json"); + Json::Value orders; + + { + std::ifstream file(filename); + + if (!file.good()) + { + out << COLOR_LIGHTRED << "Cannot find orders file: " << filename << std::endl; + return CR_FAILURE; + } + + try + { + file >> orders; + } + catch (const std::exception & e) + { + out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl; + return CR_FAILURE; + } + + if (!file.good()) + { + out << COLOR_LIGHTRED << "Error reading orders file: " << filename << std::endl; + return CR_FAILURE; + } + } + + if (orders.type() != Json::arrayValue) + { + out << COLOR_LIGHTRED << "Invalid orders file: " << filename << ": expected array" << std::endl; + return CR_FAILURE; + } + + CoreSuspender suspend; + + try + { + return orders_import(out, orders); + } + catch (const std::exception & e) + { + out << COLOR_LIGHTRED << "Error reading orders file: " << filename << ": " << e.what() << std::endl; + return CR_FAILURE; + } +} + static command_result orders_clear_command(color_ostream & out) { CoreSuspender suspend;