00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #pragma once
00025 #ifndef _OSCAP_ERROR_H
00026 #define _OSCAP_ERROR_H
00027
00028 #include <errno.h>
00029 #include <libxml/xmlerror.h>
00030 #include "public/error.h"
00031
00032 #define oscap_assert_errno(cond, etype, desc) \
00033 { if (!(cond)) { if ((errno)) oscap_seterr(OSCAP_EFAMILY_GLIBC, errno, desc); \
00034 else oscap_seterr(OSCAP_EFAMILY_OSCAP, (etype), desc); } }
00035
00036 #define oscap_setxmlerr(error) __oscap_setxmlerr (__FILE__, __LINE__, __PRETTY_FUNCTION__, error)
00037
00038 void __oscap_setxmlerr(const char *file, uint32_t line, const char *func, xmlErrorPtr error);
00039
00040 struct oscap_err_t {
00041 oscap_errfamily_t family;
00042 oscap_errcode_t code;
00043 char *desc;
00044 const char *func;
00045 const char *file;
00046 uint32_t line;
00047 };
00048
00052 #define oscap_seterr(family, code, desc) __oscap_seterr (__FILE__, __LINE__, __PRETTY_FUNCTION__, family, code, desc)
00053
00054
00058 void __oscap_seterr(const char *file, uint32_t line, const char *func,
00059 oscap_errfamily_t family, oscap_errcode_t code, const char *desc);
00060
00061 #endif