00001 #pragma once
00002 #ifndef _OSCAP_ERROR_H
00003 #define _OSCAP_ERROR_H
00004
00005 #include <errno.h>
00006 #include <libxml/xmlerror.h>
00007 #include "public/error.h"
00008
00009 #define oscap_assert_errno(cond, etype, desc) \
00010 { if (!(cond)) { if ((errno)) oscap_seterr(OSCAP_EFAMILY_GLIBC, errno, desc); \
00011 else oscap_seterr(OSCAP_EFAMILY_OSCAP, (etype), desc); } }
00012
00013 #define oscap_seterr_errno(etype, desc) \
00014 { if ((errno)) oscap_seterr(OSCAP_EFAMILY_GLIBC, errno, desc); \
00015 else oscap_seterr(OSCAP_EFAMILY_OSCAP, (etype), desc); }
00016
00017 #define oscap_setxmlerr(error) __oscap_setxmlerr (__FILE__, __LINE__, __PRETTY_FUNCTION__, error)
00018
00019 void __oscap_setxmlerr(const char *file, uint32_t line, const char *func, xmlErrorPtr error);
00020
00021 struct oscap_err_t {
00022 oscap_errfamily_t family;
00023 oscap_errcode_t code;
00024 char *desc;
00025 const char *func;
00026 const char *file;
00027 uint32_t line;
00028 };
00029
00030 #endif