librazor/razor.h
changeset 424 8cbc438cc298
parent 423 6112bcc5d1cf
child 425 0c8bdd8dc942
     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