#ifndef _BUG_H
#define _BUG_H
/* These should be sync'd to the SQL schema for sanity's sake */
#define LOG_INFO 0
#define LOG_ERROR 1
#define LOG_FATAL 2
#define LOG_BOOT 3
#define LOG_AUTH 4
#define LOG_KILL 5
#define LOG_DEATH 6
#define LOG_RESET 7
#define LOG_IMC 8
#ifndef _BUG_C
extern char * LogNames[];
#endif
#define log_info(Str, ...) \
bug_logger(LOG_INFO, NULL, \
__FILE__, __PRETTY_FUNCTION__, __LINE__, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_error(Str, ...) \
bug_logger(LOG_ERROR, NULL, \
__FILE__, __PRETTY_FUNCTION__, __LINE__, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_fatal(Str, ...) \
bug_logger(LOG_FATAL, NULL, \
__FILE__, __PRETTY_FUNCTION__, __LINE__, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_boot(Str, ...) \
bug_logger(LOG_BOOT, NULL, \
__FILE__, __PRETTY_FUNCTION__, __LINE__, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_auth(Ch, Str, ...) \
bug_logger(LOG_AUTH, NULL, \
NULL, NULL, 0, \
NULL, 0, \
(Ch), NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_kill(Ch, Victim, Str, ...) \
bug_logger(LOG_KILL, NULL, \
NULL, NULL, 0, \
NULL, 0, \
(Ch), (Victim), \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_death(Ch, Victim, Str, ...) \
bug_logger(LOG_DEATH, NULL, \
NULL, NULL, 0, \
NULL, 0, \
(Ch), (Victim), \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_reset(Str, ...) \
bug_logger(LOG_RESET, NULL, \
NULL, NULL, 0, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
#define log_imc(Str, ...) \
bug_logger(LOG_IMC, NULL, \
NULL, NULL, 0, \
NULL, 0, \
NULL, NULL, \
GREATER_GOD, (Str), ## __VA_ARGS__ )
void bug_logger(unsigned int Type, const char *BugFile,
const char *File, const char *Func, int Line,
const char *AreaFile, int AreaLine,
struct char_data *ch, struct char_data *victim,
unsigned int Level, const char *Str, ...)
__attribute__ ( ( format( printf, 11, 12 ) ) );;
#endif