diff --git a/apps/rocket/main.cpp b/apps/rocket/main.cpp index 558c2a9..fd8eb3e 100644 --- a/apps/rocket/main.cpp +++ b/apps/rocket/main.cpp @@ -346,8 +346,8 @@ class LauncherState : public StateBase { // Get the reason auto irq = unistdpp::readFile("/sys/power/pm_wakeup_irq"); if (!irq.has_value()) { - std::cout << "Error getting reason: " << unistdpp::toString(irq.error()) - << std::endl; + std::cout << "Error getting reason: " + << unistdpp::to_string(irq.error()) << std::endl; // If there is no irq it must be the user which pressed the button: return true; @@ -596,7 +596,7 @@ main(int argc, char* argv[]) { std::signal(SIGCHLD, cleanup); - fatalOnError(runApp(LauncherWidget())); + unistdpp::fatalOnError(runApp(LauncherWidget())); auto fb = fb::FrameBuffer::open(); if (fb.has_value()) { diff --git a/apps/tilem/main.cpp b/apps/tilem/main.cpp index 56e1f7c..4159aa3 100644 --- a/apps/tilem/main.cpp +++ b/apps/tilem/main.cpp @@ -15,7 +15,7 @@ int main(int argc, char* argv[]) { const auto* calcName = argc > 1 ? argv[1] : calc_default_rom; - fatalOnError(runApp(Navigator(tilem::Calculator(calcName)))); + unistdpp::fatalOnError(runApp(Navigator(tilem::Calculator(calcName)))); return EXIT_SUCCESS; } diff --git a/apps/yaft/YaftWidget.cpp b/apps/yaft/YaftWidget.cpp index 31a1012..02a71ad 100644 --- a/apps/yaft/YaftWidget.cpp +++ b/apps/yaft/YaftWidget.cpp @@ -33,7 +33,7 @@ void initSignalHandler(AppContext& ctx) { globalCtx = &ctx; - struct sigaction sigact{}; + struct sigaction sigact {}; memset(&sigact, 0, sizeof(struct sigaction)); sigact.sa_handler = sigHandler; sigact.sa_flags = SA_RESTART; @@ -42,12 +42,12 @@ initSignalHandler(AppContext& ctx) { bool forkAndExec(int* master, - const char* cmd, - char* const argv[], - int lines, - int cols) { + const char* cmd, + char* const argv[], + int lines, + int cols) { pid_t pid = 0; - struct winsize ws{}; + struct winsize ws {}; ws.ws_row = lines; ws.ws_col = cols; /* XXX: this variables are UNUSED (man tty_ioctl), @@ -58,7 +58,8 @@ forkAndExec(int* master, pid = eforkpty(master, nullptr, nullptr, &ws); if (pid < 0) { return false; - } if (pid == 0) { /* child */ + } + if (pid == 0) { /* child */ setenv("TERM", termName, 1); execvp(cmd, argv); /* never reach here */ @@ -98,10 +99,10 @@ YaftState::init(rmlib::AppContext& ctx, const rmlib::BuildContext& /*unused*/) { initSignalHandler(ctx); if (!forkAndExec(&term->fd, - getWidget().cmd, - getWidget().argv, - term->lines, - term->cols)) { + getWidget().cmd, + getWidget().argv, + term->lines, + term->cols)) { puts("Failed to fork!"); std::exit(EXIT_FAILURE); } @@ -112,7 +113,7 @@ YaftState::init(rmlib::AppContext& ctx, const rmlib::BuildContext& /*unused*/) { // Only update if the buffer isn't full. Otherwise more data is comming // probably. - if (size != buf.size()) { + if (size != int(buf.size())) { setState([&](auto& self) { parse(self.term.get(), reinterpret_cast(buf.data()), size); }); diff --git a/apps/yaft/main.cpp b/apps/yaft/main.cpp index afd4c04..ab71e16 100644 --- a/apps/yaft/main.cpp +++ b/apps/yaft/main.cpp @@ -38,7 +38,7 @@ main(int argc, char* argv[]) { auto cfg = loadConfigOrMakeDefault(); - fatalOnError(runApp(Yaft(cmd, args, std::move(cfg)))); + unistdpp::fatalOnError(runApp(Yaft(cmd, args, std::move(cfg)))); return 0; } diff --git a/libs/rMlib/EmulatedInput.cpp b/libs/rMlib/EmulatedInput.cpp index 3be0461..4c29674 100644 --- a/libs/rMlib/EmulatedInput.cpp +++ b/libs/rMlib/EmulatedInput.cpp @@ -30,7 +30,7 @@ struct FakeInputDevice : public InputDeviceBase { pipes = unistdpp::pipe() .or_else([](auto err) { - std::cerr << unistdpp::toString(err) << "\n"; + std::cerr << unistdpp::to_string(err) << "\n"; std::exit(EXIT_FAILURE); }) .value(); @@ -83,7 +83,7 @@ InputManager::waitForInput(std::vector& extraFds, auto ret = unistdpp::poll(extraFds, timeout); if (!ret) { - std::cerr << "Poll failure: " << unistdpp::toString(ret.error()) << "\n"; + std::cerr << "Poll failure: " << unistdpp::to_string(ret.error()) << "\n"; return; } diff --git a/libs/rMlib/include/Error.h b/libs/rMlib/include/Error.h index 2b6fd85..1f80d07 100644 --- a/libs/rMlib/include/Error.h +++ b/libs/rMlib/include/Error.h @@ -27,19 +27,3 @@ using ErrorOr = tl::expected; template using OptError = tl::expected; - -template -T -fatalOnError(tl::expected error) { - if (!error.has_value()) { - using namespace std; - std::cerr << "FATAL: " << to_string(error.error()) << std::endl; - std::abort(); - } - - if constexpr (std::is_void_v) { - return; - } else { - return *error; - } -} diff --git a/libs/rm2fb/Message.h b/libs/rm2fb/Message.h index ce0fa97..df8c7fb 100644 --- a/libs/rm2fb/Message.h +++ b/libs/rm2fb/Message.h @@ -53,6 +53,7 @@ template unistdpp::Result read(const unistdpp::FD& fd, int32_t index) { if constexpr (idx >= std::variant_size_v) { + (void)index; return tl::unexpected(std::errc::bad_message); } else { if (idx == index) { diff --git a/libs/rm2fb/Server.cpp b/libs/rm2fb/Server.cpp index 1ef79c7..2de46b1 100644 --- a/libs/rm2fb/Server.cpp +++ b/libs/rm2fb/Server.cpp @@ -131,7 +131,7 @@ getTcpSocket(int port) { bool doTCPUpdate(unistdpp::FD& fd, const UpdateParams& params) { if (auto res = fd.writeAll(params); !res) { - std::cerr << "Error writing: " << toString(res.error()) << "\n"; + std::cerr << "Error writing: " << to_string(res.error()) << "\n"; fd.close(); return false; } @@ -152,7 +152,7 @@ doTCPUpdate(unistdpp::FD& fd, const UpdateParams& params) { const auto writeSize = size * sizeof(uint16_t); auto res = fd.writeAll(buffer.data(), writeSize); if (!res) { - std::cerr << "Error writing: " << toString(res.error()) << "\n"; + std::cerr << "Error writing: " << to_string(res.error()) << "\n"; fd.close(); return false; } @@ -166,7 +166,7 @@ readControlMessage(ControlSocket& serverSock, Fn&& fn) { serverSock.recvfrom() .and_then(std::forward(fn)) .or_else([](auto err) { - std::cerr << "Recvfrom fail: " << unistdpp::toString(err) << "\n"; + std::cerr << "Recvfrom fail: " << to_string(err) << "\n"; }); } @@ -213,7 +213,7 @@ serverMain(int argc, char* argv[], char** envp) { // NOLINT return getTcpSocket(tcp_port); }(); if (!tcpFd) { - std::cerr << "Unable to start TCP listener: " << toString(tcpFd.error()) + std::cerr << "Unable to start TCP listener: " << to_string(tcpFd.error()) << "\n"; } @@ -269,7 +269,7 @@ serverMain(int argc, char* argv[], char** envp) { // NOLINT [](const auto& client) { return waitFor(client, Wait::Read); }); if (auto res = unistdpp::poll(pollfds); !res) { - std::cerr << "Poll error: " << toString(res.error()) << "\n"; + std::cerr << "Poll error: " << to_string(res.error()) << "\n"; break; } @@ -307,7 +307,7 @@ serverMain(int argc, char* argv[], char** envp) { // NOLINT .transform( [&](auto client) { tcpClients.emplace_back(std::move(client)); }) .or_else([](auto err) { - std::cerr << "Client accept errror: " << toString(err) << "\n"; + std::cerr << "Client accept errror: " << to_string(err) << "\n"; }); } @@ -334,7 +334,7 @@ serverMain(int argc, char* argv[], char** envp) { // NOLINT } }) .or_else([&](auto err) { - std::cerr << "Reading input: " << toString(err) << "\n"; + std::cerr << "Reading input: " << to_string(err) << "\n"; if (err == unistdpp::FD::eof_error) { clientSock.close(); } diff --git a/libs/unistdpp/include/unistdpp/error.h b/libs/unistdpp/include/unistdpp/error.h index 3636445..2ed791b 100644 --- a/libs/unistdpp/include/unistdpp/error.h +++ b/libs/unistdpp/include/unistdpp/error.h @@ -40,10 +40,26 @@ getErrno() { } inline std::string -toString(std::errc error) { +to_string(std::errc error) { // NOLINT return std::make_error_code(error).message(); } +template +T +fatalOnError(tl::expected error, std::string_view msg = "") { + if (!error.has_value()) { + using namespace std; + std::cerr << "FATAL: " << msg << to_string(error.error()) << std::endl; + std::abort(); + } + + if constexpr (std::is_void_v) { + return; + } else { + return *error; + } +} + template struct WrapperTraits> { static_assert( diff --git a/test/unit/TestUnistdpp.cpp b/test/unit/TestUnistdpp.cpp index c2f1e99..4b10bff 100644 --- a/test/unit/TestUnistdpp.cpp +++ b/test/unit/TestUnistdpp.cpp @@ -18,19 +18,19 @@ template struct StringMaker> { static std::string convert(const Result& value) { return value.has_value() ? StringMaker::convert(*value) - : "Error: " + toString(value.error()); + : "Error: " + to_string(value.error()); } }; template<> struct StringMaker> { static std::string convert(const Result& value) { - return value.has_value() ? "OK" : "Error: " + toString(value.error()); + return value.has_value() ? "OK" : "Error: " + to_string(value.error()); } }; } // namespace Catch TEST_CASE("error", "[unistdpp]") { - REQUIRE(toString(std::errc::invalid_argument) == "Invalid argument"); + REQUIRE(to_string(std::errc::invalid_argument) == "Invalid argument"); } TEST_CASE("open", "[unistdpp]") { diff --git a/tools/rm2fb-emu/rm2fb-emu.cpp b/tools/rm2fb-emu/rm2fb-emu.cpp index 21264a1..9e3067d 100644 --- a/tools/rm2fb-emu/rm2fb-emu.cpp +++ b/tools/rm2fb-emu/rm2fb-emu.cpp @@ -38,7 +38,7 @@ main(int argc, char* argv[]) { int port = atoi(argv[2]); auto sock = getClientSock(argv[1], port); if (!sock.has_value()) { - std::cout << "Couldn't get tcp socket: " << toString(sock.error()) << "\n"; + std::cout << "Couldn't get tcp socket: " << to_string(sock.error()) << "\n"; return EXIT_FAILURE; } @@ -87,7 +87,7 @@ main(int argc, char* argv[]) { ClientMsg input = Input{ touchEv.location.x, touchEv.location.y, type }; auto res = sendMessage(*sock, input); if (!res) { - std::cerr << "Error writing: " << toString(res.error()) << "\n"; + std::cerr << "Error writing: " << to_string(res.error()) << "\n"; } } @@ -97,7 +97,7 @@ main(int argc, char* argv[]) { auto msgOrErr = sock->readAll(); if (!msgOrErr) { - std::cerr << "Error reading: " << toString(msgOrErr.error()) << "\n"; + std::cerr << "Error reading: " << to_string(msgOrErr.error()) << "\n"; break; } auto msg = *msgOrErr; @@ -117,7 +117,7 @@ main(int argc, char* argv[]) { int readSize = bufSize * sizeof(uint16_t); auto res = sock->readAll(buffer.data(), readSize); if (!res) { - std::cerr << "Error reading: " << toString(res.error()) << "\n"; + std::cerr << "Error reading: " << to_string(res.error()) << "\n"; break; } diff --git a/tools/rm2fb-emu/rm2fb-test.cpp b/tools/rm2fb-emu/rm2fb-test.cpp index 34e3df9..f59e7d9 100644 --- a/tools/rm2fb-emu/rm2fb-test.cpp +++ b/tools/rm2fb-emu/rm2fb-test.cpp @@ -21,7 +21,7 @@ doScreenshot(unistdpp::FD& sock, std::vector args) { sendMessage(sock, ClientMsg(GetUpdate{})); auto msgOrErr = sock.readAll(); if (!msgOrErr) { - std::cerr << "Error reading: " << toString(msgOrErr.error()) << "\n"; + std::cerr << "Error reading: " << to_string(msgOrErr.error()) << "\n"; return false; } auto msg = *msgOrErr; @@ -40,7 +40,7 @@ doScreenshot(unistdpp::FD& sock, std::vector args) { auto res = sock.readAll(buffer.data(), bufSize); if (!res) { - std::cerr << "Error reading: " << toString(res.error()) << "\n"; + std::cerr << "Error reading: " << to_string(res.error()) << "\n"; return false; } @@ -102,7 +102,7 @@ main(int argc, char* argv[]) { int port = atoi(argv[2]); // NOLINT auto sock = getClientSock(argv[1], port); // NOLINT if (!sock.has_value()) { - std::cout << "Couldn't get tcp socket: " << toString(sock.error()) << "\n"; + std::cout << "Couldn't get tcp socket: " << to_string(sock.error()) << "\n"; return EXIT_FAILURE; } @@ -111,7 +111,5 @@ main(int argc, char* argv[]) { args.emplace_back(argv[i]); // NOLINT } - actionFn(*sock, std::move(args)); - - return EXIT_SUCCESS; + return actionFn(*sock, std::move(args)) ? EXIT_SUCCESS : EXIT_FAILURE; }