/* Copyright (c) 2008 The NetBSD Foundation, Inc.1* All rights reserved.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions5* are met:6* 1. Redistributions of source code must retain the above copyright7* notice, this list of conditions and the following disclaimer.8* 2. Redistributions in binary form must reproduce the above copyright9* notice, this list of conditions and the following disclaimer in the10* documentation and/or other materials provided with the distribution.11*12* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND13* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,14* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF15* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.16* IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY17* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL18* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE19* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS20* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER21* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR22* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN23* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */2425#if !defined(ATF_C_ERROR_H)26#define ATF_C_ERROR_H2728#include <atf-c/error_fwd.h>2930#include <stdbool.h>31#include <stddef.h>3233/* ---------------------------------------------------------------------34* The "atf_error" type.35* --------------------------------------------------------------------- */3637struct atf_error {38bool m_free;39const char *m_type;40void *m_data;4142void (*m_format)(struct atf_error *, char *, size_t);43};4445atf_error_t atf_error_new(const char *, void *, size_t,46void (*)(const atf_error_t, char *, size_t));47void atf_error_free(atf_error_t);4849atf_error_t atf_no_error(void);50bool atf_is_error(const atf_error_t);5152bool atf_error_is(const atf_error_t, const char *);53const void *atf_error_data(const atf_error_t);54void atf_error_format(const atf_error_t, char *, size_t);5556/* ---------------------------------------------------------------------57* Common error types.58* --------------------------------------------------------------------- */5960atf_error_t atf_libc_error(int, const char *, ...);61int atf_libc_error_code(const atf_error_t);62const char *atf_libc_error_msg(const atf_error_t);6364atf_error_t atf_no_memory_error(void);6566#endif /* !defined(ATF_C_ERROR_H) */676869