blob: e1d38cbdbea37bf9ec2e567d32e18a8a69a1dfaa [file] [log] [blame] [edit]
/* Copyright 2023 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "tools/mctk/debug.h"
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <source_location>
#include <string_view>
/* Global variable */
int mctk_verbosity = 0;
/* Print a message, without a prefix. */
void MCTK_VERBOSE(std::string_view msg) {
if (mctk_verbosity < 1)
return;
std::cerr << msg << std::endl;
}
/* Print a message, prefixed with the caller's name. */
void MCTK_ERR(std::string_view msg, const std::source_location sl) {
std::cerr << sl.function_name() << ": " << msg << std::endl;
}
void MCTK_PERROR(std::string_view msg, const std::source_location sl) {
std::cerr << sl.function_name() << ": " << msg << ": " << strerror(errno)
<< std::endl;
}
/* Print error message, then halt and catch fire. */
[[noreturn]] void MCTK_PANIC(std::string_view msg,
const std::source_location sl) {
std::cerr << sl.function_name() << ": " << msg << std::endl;
exit(EXIT_FAILURE);
}