// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEBUGD_SRC_ERROR_UTILS_H_
#define DEBUGD_SRC_ERROR_UTILS_H_

#include <base/location.h>
#include <base/posix/safe_strerror.h>
#include <brillo/errors/error.h>
#include <brillo/errors/error_codes.h>

// These are provided as macros because providing them as functions
// would cause FROM_HERE to expand to the same value everywhere, which
// impedes debugging.

#define DEBUGD_ADD_ERROR(error, code, message)                            \
  brillo::Error::AddTo((error), FROM_HERE, brillo::errors::dbus::kDomain, \
                       (code), (message))

#define DEBUGD_ADD_ERROR_FMT(error, code, format, ...)                      \
  brillo::Error::AddToPrintf((error), FROM_HERE,                            \
                             brillo::errors::dbus::kDomain, (code), format, \
                             ##__VA_ARGS__)

#define DEBUGD_ADD_PERROR(error, code, message)                               \
  brillo::Error::AddToPrintf((error), FROM_HERE,                              \
                             brillo::errors::dbus::kDomain, (code), "%s: %s", \
                             (message), base::safe_strerror(errno).c_str())

#endif  // DEBUGD_SRC_ERROR_UTILS_H_
