/usr/include/libguytools2/toolerror.h is in libguytools2-dev 2.0.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | // ****************************************************************************
// Project: libguytools
// ****************************************************************************
// Programmer: Guy Voncken
// Police Grand-Ducale
// Service de Police Judiciaire
// Section Nouvelles Technologies
// ****************************************************************************
// Module: Error handling
// ****************************************************************************
// Copyright 2008, 2009, 2010, 2011, 2012 Guy Voncken
//
// This file is part of libguytools.
//
// libguytools is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// libguytools is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with libguytools. If not, see <http://www.gnu.org/licenses/>.
#ifndef __TOOLERROR_H__
#define __TOOLERROR_H__
#ifndef __FFL__
#define __FFL__ __FILE__, __FUNCTION__, __LINE__
#endif
// -----------
// Constants
// -----------
#define NO_ERROR 0
// ---------------------------------------
// Macros for comfortable error checking
// ---------------------------------------
#define CHK(Func) \
/*lint -save -e506 -e774*/ /*Warning 506: Constant value Boolean; Info 774: Boolean within 'if' always evaluates to True */ \
{ \
APIRET ec; \
if ((ec = Func) != NO_ERROR) \
{ \
(void)ToolErrorCheck (__FFL__, ec); \
return ec; \
} \
} \
/*lint -restore*/
#define CHK_CONST(ec) \
{ \
(void)ToolErrorCheck (__FFL__, ec); \
return ec; \
} \
#define CHK_RET(Func) \
{ \
APIRET ec; \
if ((ec = Func) != NO_ERROR) \
return ec; \
}
#define CHK_NORET(Func) \
{ \
APIRET ec; \
if ((ec = Func) != NO_ERROR) \
(void)ToolErrorCheck (__FFL__, ec); \
}
#define TOOL_CHK(Fn) \
{ \
APIRET ec; \
if ((ec=Fn) != NO_ERROR) \
return ec; \
}
// ------------------
// Type definitions
// ------------------
typedef long APIRET;
typedef long * pAPIRET;
// -----------------------------
// ToolError's own error codes
// -----------------------------
enum
{
TOOL_ERROR_ENTRY_NOT_FOUND = ERROR_BASE_TOOL_ERROR + 1,
TOOL_ERROR_DUPLICATE_ENTRY ,
TOOL_ERROR_NOT_INITIALISED ,
TOOL_ERROR_ALREADY_INITIALISED
};
// -------------------------------
// Prototypes and wrapper macros
// -------------------------------
typedef void (* t_pToolErrorLogFn)(const char *pFileName, const char *pFunctionName, int LineNr, const char *pFormat, va_list pArguments);
APIRET ToolErrorSetLogFn (t_pToolErrorLogFn pLogFn);
APIRET ToolErrorRegisterError (int ErrorCode, const char *pErrorMsg);
APIRET ToolErrorGetMessage (int ErrorCode, const char **ppMessage);
const char *ToolErrorMessage (int ErrorCode);
const char *ToolErrorTranslateErrno (int Errno);
APIRET ToolErrorInit (int MaxErrors);
APIRET ToolErrorDeInit (void);
APIRET ToolErrorCheck (char const *pFileName, char const *pFunctionName, int LineNr, int ErrorCode);
APIRET ToolErrorLog (char const *pFileName, char const *pFunctionName, int LineNr, const char * pFormat, ...) __attribute__ ((format (printf, 4, 5)));
#define TOOL_ERROR_REGISTER_CODE(ErrorCode) ToolErrorRegisterError(ErrorCode, #ErrorCode)
#endif
|