34 lines
687 B
C++
34 lines
687 B
C++
#include "exception.hh"
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
|
|
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;
|
|
}
|