1.1 --- a/librazor/razor.h Sat Feb 11 23:50:26 2012 +0000
1.2 +++ b/librazor/razor.h Thu Feb 16 17:33:47 2012 +0000
1.3 @@ -95,6 +95,16 @@
1.4 RAZOR_PROPERTY_POSTUN
1.5 };
1.6
1.7 +enum razor_set_flags {
1.8 + /*
1.9 + * Create a private copy of the razor set such that changes made
1.10 + * to the underlying file are not visible in the razor set.
1.11 + * If this flag is not set then the caller must ensure that the
1.12 + * underlying file (if any) is not changed.
1.13 + */
1.14 + RAZOR_SET_PRIVATE = 1 << 0,
1.15 +};
1.16 +
1.17 /**
1.18 * SECTION:error
1.19 * @title: Error reporting
1.20 @@ -104,6 +114,13 @@
1.21 */
1.22 struct razor_error;
1.23
1.24 +struct razor_error *razor_error_new_str(const char *path, const char *str);
1.25 +
1.26 +#define razor_set_error(error, path, str) \
1.27 + if (error) \
1.28 + *(error) = razor_error_new_str(path, str); \
1.29 + else
1.30 +
1.31 const char *razor_error_get_msg(struct razor_error *error);
1.32 void razor_error_free(struct razor_error *error);
1.33
1.34 @@ -216,8 +233,9 @@
1.35 **/
1.36 struct razor_set *razor_set_create_without_root(void);
1.37 struct razor_set *razor_set_create(void);
1.38 -struct razor_set *razor_set_open(const char *filename,
1.39 - struct razor_atomic *atomic);
1.40 +struct razor_set *
1.41 +razor_set_open(const char *filename, enum razor_set_flags flags,
1.42 + struct razor_error **error);
1.43 uint32_t razor_set_get_header_version(struct razor_set *set);
1.44 int razor_set_set_header_version(struct razor_set *set,
1.45 uint32_t header_version);
1.46 @@ -228,8 +246,9 @@
1.47 uint32_t section_mask);
1.48 int razor_set_write(struct razor_set *set, struct razor_atomic *atomic,
1.49 const char *filename, uint32_t setions);
1.50 -int razor_set_bind_sections(struct razor_set *set, struct razor_atomic *atomic,
1.51 - const char *filename);
1.52 +int
1.53 +razor_set_bind_sections(struct razor_set *set, const char *filename,
1.54 + enum razor_set_flags flags, struct razor_error **error);
1.55
1.56 struct razor_package *
1.57 razor_set_get_package(struct razor_set *set, const char *package);
1.58 @@ -528,13 +547,14 @@
1.59
1.60 int razor_root_create(const char *root);
1.61 struct razor_root *
1.62 -razor_root_open(const char *root, struct razor_atomic *atomic);
1.63 -struct razor_set *razor_root_open_read_only(const char *root,
1.64 - struct razor_atomic *atomic);
1.65 +razor_root_open(const char *root, struct razor_error **error);
1.66 +struct razor_set *
1.67 +razor_root_open_read_only(const char *root, struct razor_error **error);
1.68 struct razor_set *razor_root_get_system_set(struct razor_root *root);
1.69 int razor_root_close(struct razor_root *root);
1.70 -void razor_root_update(struct razor_root *root, struct razor_set *next);
1.71 -int razor_root_commit(struct razor_root *root);
1.72 +int
1.73 +razor_root_update(struct razor_root *root, struct razor_set *next,
1.74 + struct razor_atomic *atomic);
1.75
1.76 /**
1.77 * SECTION:misc