common: Implement Werror flag
This commit is contained in:
parent
bfa3e047ce
commit
3608c3eb02
@ -105,6 +105,10 @@ bool CommandHandler::executeBeforeContext()
|
|||||||
log_streams.push_back(std::make_pair(&std::cerr, LogLevel::LOG_MSG));
|
log_streams.push_back(std::make_pair(&std::cerr, LogLevel::LOG_MSG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vm.count("Werror")) {
|
||||||
|
log_warn_as_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (vm.count("log")) {
|
if (vm.count("log")) {
|
||||||
std::string logfilename = vm["log"].as<std::string>();
|
std::string logfilename = vm["log"].as<std::string>();
|
||||||
logfile.open(logfilename);
|
logfile.open(logfilename);
|
||||||
@ -121,6 +125,7 @@ po::options_description CommandHandler::getGeneralOptions()
|
|||||||
general.add_options()("help,h", "show help");
|
general.add_options()("help,h", "show help");
|
||||||
general.add_options()("verbose,v", "verbose output");
|
general.add_options()("verbose,v", "verbose output");
|
||||||
general.add_options()("quiet,q", "quiet mode, only errors and warnings displayed");
|
general.add_options()("quiet,q", "quiet mode, only errors and warnings displayed");
|
||||||
|
general.add_options()("Werror", "Turn warnings into errors");
|
||||||
general.add_options()("log,l", po::value<std::string>(),
|
general.add_options()("log,l", po::value<std::string>(),
|
||||||
"log file, all log messages are written to this file regardless of -q");
|
"log file, all log messages are written to this file regardless of -q");
|
||||||
general.add_options()("debug", "debug output");
|
general.add_options()("debug", "debug output");
|
||||||
|
@ -41,6 +41,7 @@ void (*log_error_atexit)() = NULL;
|
|||||||
dict<LogLevel, int, loglevel_hash_ops> message_count_by_level;
|
dict<LogLevel, int, loglevel_hash_ops> message_count_by_level;
|
||||||
static int log_newline_count = 0;
|
static int log_newline_count = 0;
|
||||||
bool had_nonfatal_error = false;
|
bool had_nonfatal_error = false;
|
||||||
|
bool log_warn_as_error = false;
|
||||||
|
|
||||||
std::string stringf(const char *fmt, ...)
|
std::string stringf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
@ -128,6 +129,22 @@ void logv_prefixed(const char *prefix, const char *format, va_list ap, LogLevel
|
|||||||
log_flush();
|
log_flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void logv_nonfatal_error(const char *format, va_list ap)
|
||||||
|
{
|
||||||
|
logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG);
|
||||||
|
had_nonfatal_error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void logv_error(const char *format, va_list ap)
|
||||||
|
{
|
||||||
|
logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG);
|
||||||
|
|
||||||
|
if (log_error_atexit)
|
||||||
|
log_error_atexit();
|
||||||
|
|
||||||
|
throw log_execution_error_exception();
|
||||||
|
}
|
||||||
|
|
||||||
void log_always(const char *format, ...)
|
void log_always(const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -156,6 +173,9 @@ void log_warning(const char *format, ...)
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
|
if (log_warn_as_error)
|
||||||
|
logv_nonfatal_error(format, ap);
|
||||||
|
else
|
||||||
logv_prefixed("Warning: ", format, ap, LogLevel::WARNING_MSG);
|
logv_prefixed("Warning: ", format, ap, LogLevel::WARNING_MSG);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
@ -164,12 +184,7 @@ void log_error(const char *format, ...)
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG);
|
logv_error(format, ap);
|
||||||
|
|
||||||
if (log_error_atexit)
|
|
||||||
log_error_atexit();
|
|
||||||
|
|
||||||
throw log_execution_error_exception();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void log_break()
|
void log_break()
|
||||||
@ -184,9 +199,8 @@ void log_nonfatal_error(const char *format, ...)
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
logv_prefixed("ERROR: ", format, ap, LogLevel::ERROR_MSG);
|
logv_nonfatal_error(format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
had_nonfatal_error = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void log_flush()
|
void log_flush()
|
||||||
|
@ -63,6 +63,7 @@ extern log_write_type log_write_function;
|
|||||||
extern std::string log_last_error;
|
extern std::string log_last_error;
|
||||||
extern void (*log_error_atexit)();
|
extern void (*log_error_atexit)();
|
||||||
extern bool had_nonfatal_error;
|
extern bool had_nonfatal_error;
|
||||||
|
extern bool log_warn_as_error;
|
||||||
extern dict<LogLevel, int, loglevel_hash_ops> message_count_by_level;
|
extern dict<LogLevel, int, loglevel_hash_ops> message_count_by_level;
|
||||||
|
|
||||||
std::string stringf(const char *fmt, ...);
|
std::string stringf(const char *fmt, ...);
|
||||||
|
Loading…
Reference in New Issue
Block a user