diff -r 6112bcc5d1cf -r 8cbc438cc298 librazor/razor.h --- a/librazor/razor.h Sat Feb 11 23:50:26 2012 +0000 +++ b/librazor/razor.h Thu Feb 16 17:33:47 2012 +0000 @@ -95,6 +95,16 @@ RAZOR_PROPERTY_POSTUN }; +enum razor_set_flags { + /* + * Create a private copy of the razor set such that changes made + * to the underlying file are not visible in the razor set. + * If this flag is not set then the caller must ensure that the + * underlying file (if any) is not changed. + */ + RAZOR_SET_PRIVATE = 1 << 0, +}; + /** * SECTION:error * @title: Error reporting @@ -104,6 +114,13 @@ */ struct razor_error; +struct razor_error *razor_error_new_str(const char *path, const char *str); + +#define razor_set_error(error, path, str) \ + if (error) \ + *(error) = razor_error_new_str(path, str); \ + else + const char *razor_error_get_msg(struct razor_error *error); void razor_error_free(struct razor_error *error); @@ -216,8 +233,9 @@ **/ struct razor_set *razor_set_create_without_root(void); struct razor_set *razor_set_create(void); -struct razor_set *razor_set_open(const char *filename, - struct razor_atomic *atomic); +struct razor_set * +razor_set_open(const char *filename, enum razor_set_flags flags, + struct razor_error **error); uint32_t razor_set_get_header_version(struct razor_set *set); int razor_set_set_header_version(struct razor_set *set, uint32_t header_version); @@ -228,8 +246,9 @@ uint32_t section_mask); int razor_set_write(struct razor_set *set, struct razor_atomic *atomic, const char *filename, uint32_t setions); -int razor_set_bind_sections(struct razor_set *set, struct razor_atomic *atomic, - const char *filename); +int +razor_set_bind_sections(struct razor_set *set, const char *filename, + enum razor_set_flags flags, struct razor_error **error); struct razor_package * razor_set_get_package(struct razor_set *set, const char *package); @@ -528,13 +547,14 @@ int razor_root_create(const char *root); struct razor_root * -razor_root_open(const char *root, struct razor_atomic *atomic); -struct razor_set *razor_root_open_read_only(const char *root, - struct razor_atomic *atomic); +razor_root_open(const char *root, struct razor_error **error); +struct razor_set * +razor_root_open_read_only(const char *root, struct razor_error **error); struct razor_set *razor_root_get_system_set(struct razor_root *root); int razor_root_close(struct razor_root *root); -void razor_root_update(struct razor_root *root, struct razor_set *next); -int razor_root_commit(struct razor_root *root); +int +razor_root_update(struct razor_root *root, struct razor_set *next, + struct razor_atomic *atomic); /** * SECTION:misc