1.1 --- a/librazor/razor.h Tue Sep 09 15:04:24 2014 +0100
1.2 +++ b/librazor/razor.h Tue Sep 09 15:27:12 2014 +0100
1.3 @@ -114,13 +114,14 @@
1.4 */
1.5 struct razor_error;
1.6
1.7 -struct razor_error *razor_error_new_str(const char *path, const char *str);
1.8 +struct razor_error *razor_error_new_str(int domain, int code,
1.9 + const char *object, const char *str);
1.10 struct razor_error *razor_error_dup(struct razor_error *src,
1.11 const char *summary);
1.12
1.13 -#define razor_set_error(error, path, str) \
1.14 +#define razor_set_error(error, domain, code, object, str) \
1.15 if (error) \
1.16 - *(error) = razor_error_new_str(path, str); \
1.17 + *(error) = razor_error_new_str(domain, code, object, str); \
1.18 else
1.19
1.20 #define razor_propagate_error(dest, src, summary) \
1.21 @@ -128,6 +129,26 @@
1.22 *(dest) = razor_error_dup(src, summary); \
1.23 else
1.24
1.25 +#define RAZOR_ERROR_DOMAIN(i1,i2,i3,c) \
1.26 + (((i1)&0xff)<<24|((i2)&0xff)<<16|((i3)&0xff)<<8|(c)&0xff)
1.27 +
1.28 +#define RAZOR_GENERAL_ERROR RAZOR_ERROR_DOMAIN('R','z','r',0)
1.29 +#define RAZOR_POSIX_ERROR RAZOR_ERROR_DOMAIN('R','z','r',1)
1.30 +#define RAZOR_MSWIN_ERROR RAZOR_ERROR_DOMAIN('R','z','r',2)
1.31 +#define RAZOR_ZLIB_ERROR RAZOR_ERROR_DOMAIN('R','z','r',3)
1.32 +
1.33 +enum razor_general_error {
1.34 + RAZOR_GENERAL_ERROR_FAILED,
1.35 + RAZOR_GENERAL_ERROR_DATABASE_CORRUPTED,
1.36 + RAZOR_GENERAL_ERROR_DATABASE_INCOMPATIBLE,
1.37 + RAZOR_GENERAL_ERROR_DATABASE_EXISTS,
1.38 + RAZOR_GENERAL_ERROR_DATABASE_LOCKED,
1.39 + RAZOR_GENERAL_ERROR_RPM_UNSUPPORTED,
1.40 +};
1.41 +
1.42 +int razor_error_get_domain(struct razor_error *error);
1.43 +int razor_error_get_code(struct razor_error *error);
1.44 +const char *razor_error_get_object(struct razor_error *error);
1.45 const char *razor_error_get_primary_text(struct razor_error *error);
1.46 const char *razor_error_get_secondary_text(struct razor_error *error);
1.47 const char *razor_error_get_msg(struct razor_error *error);
1.48 @@ -215,7 +236,10 @@
1.49 const void *data, size_t size);
1.50 int razor_atomic_close(struct razor_atomic *atomic, int handle);
1.51 int razor_atomic_sync(struct razor_atomic *atomic, int handle);
1.52 -void razor_atomic_abort(struct razor_atomic *atomic, const char *error_msg);
1.53 +void razor_atomic_abort(struct razor_atomic *atomic, int domain, int code,
1.54 + const char *error_msg);
1.55 +void razor_atomic_propagate_error(struct razor_atomic *atomic,
1.56 + struct razor_error *error, const char *summary);
1.57 int razor_atomic_in_error_state(struct razor_atomic *atomic);
1.58
1.59 /**