#include "exception.hh" #include #include errno_exception::errno_exception(int errno) : _errno(errno) { } int errno_exception::errno() const { return _errno; } const char *errno_exception::what() { std::snprintf(_buf, sizeof _buf, "error: %s (%d)", std::strerror(_errno), _errno); return _buf; } int try_main(int (*main)(int argc, char** argv), int argc, char** argv, int ret_on_exception) { try { return main(argc, argv); } catch (std::exception& e) { std::fprintf(stderr, "exception: %s\n", e.what()); } catch (...) { std::fprintf(stderr, "unknown exception\n"); } return ret_on_exception; }