From 92c257d1e5ce0e65d527a20c8a6b310132cda401 Mon Sep 17 00:00:00 2001 From: Andrea Odetti Date: Sun, 3 Nov 2019 10:21:02 +0000 Subject: [PATCH] Improve error handling in applen and ability to build outside the source tree. Signed-off-by: Andrea Odetti --- CMakeLists.txt | 4 ++++ source/frontends/ncurses/CMakeLists.txt | 3 +++ source/frontends/ncurses/configuration.cpp | 10 +++++++++- source/frontends/ncurses/main.cpp | 10 +++++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 72bad9f2..aa10f9ca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,10 @@ MESSAGE("CMAKE_CXX_FLAGS_RELWIHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +# used in applen for std::silesystem +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + include_directories(source) add_subdirectory(source) diff --git a/source/frontends/ncurses/CMakeLists.txt b/source/frontends/ncurses/CMakeLists.txt index c84b3c09..fb0748c9 100644 --- a/source/frontends/ncurses/CMakeLists.txt +++ b/source/frontends/ncurses/CMakeLists.txt @@ -34,3 +34,6 @@ target_link_libraries(applen Boost::program_options appleii ) + +add_custom_target(copy-resources ALL + COMMAND cmake -E copy_directory ${CMAKE_SOURCE_DIR}/resource ${CMAKE_BINARY_DIR}/resource) diff --git a/source/frontends/ncurses/configuration.cpp b/source/frontends/ncurses/configuration.cpp index ca2cb717..e395d4b2 100644 --- a/source/frontends/ncurses/configuration.cpp +++ b/source/frontends/ncurses/configuration.cpp @@ -4,6 +4,7 @@ #include "Log.h" #include +#include class Configuration { @@ -31,7 +32,14 @@ std::shared_ptr Configuration::instance; Configuration::Configuration(const std::string & filename) : myFilename(filename) { - boost::property_tree::ini_parser::read_ini(myFilename, myINI); + if (std::filesystem::exists(filename)) + { + boost::property_tree::ini_parser::read_ini(myFilename, myINI); + } + else + { + LogFileOutput("Registry: configuration file '%s' not found\n", filename.c_str()); + } } Configuration::~Configuration() diff --git a/source/frontends/ncurses/main.cpp b/source/frontends/ncurses/main.cpp index eae9f8e7..b880758a 100644 --- a/source/frontends/ncurses/main.cpp +++ b/source/frontends/ncurses/main.cpp @@ -326,5 +326,13 @@ namespace int main(int argc, const char * argv []) { - return foo(argc, argv); + try + { + return foo(argc, argv); + } + catch (const std::exception & e) + { + std::cerr << e.what() << std::endl; + return 1; + } }