diff -r 4277359896dc -r 0a5e583393e1 librazor/razor.h --- a/librazor/razor.h Tue Sep 09 15:04:24 2014 +0100 +++ b/librazor/razor.h Tue Sep 09 15:27:12 2014 +0100 @@ -114,13 +114,14 @@ */ struct razor_error; -struct razor_error *razor_error_new_str(const char *path, const char *str); +struct razor_error *razor_error_new_str(int domain, int code, + const char *object, const char *str); struct razor_error *razor_error_dup(struct razor_error *src, const char *summary); -#define razor_set_error(error, path, str) \ +#define razor_set_error(error, domain, code, object, str) \ if (error) \ - *(error) = razor_error_new_str(path, str); \ + *(error) = razor_error_new_str(domain, code, object, str); \ else #define razor_propagate_error(dest, src, summary) \ @@ -128,6 +129,26 @@ *(dest) = razor_error_dup(src, summary); \ else +#define RAZOR_ERROR_DOMAIN(i1,i2,i3,c) \ + (((i1)&0xff)<<24|((i2)&0xff)<<16|((i3)&0xff)<<8|(c)&0xff) + +#define RAZOR_GENERAL_ERROR RAZOR_ERROR_DOMAIN('R','z','r',0) +#define RAZOR_POSIX_ERROR RAZOR_ERROR_DOMAIN('R','z','r',1) +#define RAZOR_MSWIN_ERROR RAZOR_ERROR_DOMAIN('R','z','r',2) +#define RAZOR_ZLIB_ERROR RAZOR_ERROR_DOMAIN('R','z','r',3) + +enum razor_general_error { + RAZOR_GENERAL_ERROR_FAILED, + RAZOR_GENERAL_ERROR_DATABASE_CORRUPTED, + RAZOR_GENERAL_ERROR_DATABASE_INCOMPATIBLE, + RAZOR_GENERAL_ERROR_DATABASE_EXISTS, + RAZOR_GENERAL_ERROR_DATABASE_LOCKED, + RAZOR_GENERAL_ERROR_RPM_UNSUPPORTED, +}; + +int razor_error_get_domain(struct razor_error *error); +int razor_error_get_code(struct razor_error *error); +const char *razor_error_get_object(struct razor_error *error); const char *razor_error_get_primary_text(struct razor_error *error); const char *razor_error_get_secondary_text(struct razor_error *error); const char *razor_error_get_msg(struct razor_error *error); @@ -215,7 +236,10 @@ const void *data, size_t size); int razor_atomic_close(struct razor_atomic *atomic, int handle); int razor_atomic_sync(struct razor_atomic *atomic, int handle); -void razor_atomic_abort(struct razor_atomic *atomic, const char *error_msg); +void razor_atomic_abort(struct razor_atomic *atomic, int domain, int code, + const char *error_msg); +void razor_atomic_propagate_error(struct razor_atomic *atomic, + struct razor_error *error, const char *summary); int razor_atomic_in_error_state(struct razor_atomic *atomic); /**