# HG changeset patch # User nkeynes # Date 1264926613 -36000 # Node ID 3f8f4c5b9ef471d0fb77897a92a67ecbd3151f40 # Parent a8b798030464bd69b6a5f09fe1a89472af319eaa Add first cut of error-reporting structure + macro --- a/src/lxdream.h Sun Jan 31 18:28:24 2010 +1000 +++ b/src/lxdream.h Sun Jan 31 18:30:13 2010 +1000 @@ -87,6 +87,16 @@ #define DEBUG( ... ) log_message( NULL, EMIT_DEBUG, MODULE_NAME, __VA_ARGS__ ) #define TRACE( ... ) log_message( NULL, EMIT_TRACE, MODULE_NAME, __VA_ARGS__ ) +/* Error reporting */ +#define MAX_ERROR_MSG_SIZE 512 +typedef struct error_struct { + unsigned int code; + char msg[MAX_ERROR_MSG_SIZE]; +} ERROR; + +#define SET_ERROR(err, n, ...) if( (err) != NULL ) { (err)->code = n; snprintf( (err)->msg, sizeof((err)->msg), __VA_ARGS__ ); } +#define CLEAR_ERROR(err) do { err.code = 0; err.msg[0] = 0; } while(0) + #ifdef HAVE_FASTCALL #define FASTCALL __attribute__((regparm(2)))