librazor/razor.c
changeset 437 b9cc58992572
parent 422 6fa783097ca1
child 442 c4bcba8023a9
     1.1 --- a/librazor/razor.c	Sat Feb 11 09:49:58 2012 +0000
     1.2 +++ b/librazor/razor.c	Wed Aug 20 18:56:17 2014 +0100
     1.3 @@ -48,17 +48,6 @@
     1.4  #define O_BINARY	0
     1.5  #endif
     1.6  
     1.7 -void *
     1.8 -zalloc(size_t size)
     1.9 -{
    1.10 -	void *p;
    1.11 -
    1.12 -	p = malloc(size);
    1.13 -	memset(p, 0, size);
    1.14 -
    1.15 -	return p;
    1.16 -}
    1.17 -
    1.18  struct razor_set_section_index {
    1.19  	const char *name;
    1.20  	uint32_t offset;
    1.21 @@ -102,6 +91,8 @@
    1.22  		set->ref_count = 1;
    1.23  
    1.24  		set->header_version = RAZOR_HEADER_VERSION;
    1.25 +
    1.26 +		set->flags = RAZOR_SET_PRIVATE;
    1.27  	}
    1.28  
    1.29  	return set;
    1.30 @@ -149,27 +140,25 @@
    1.31  };
    1.32  
    1.33  RAZOR_EXPORT int
    1.34 -razor_set_bind_sections(struct razor_set *set, struct razor_atomic *atomic,
    1.35 -			const char *filename)
    1.36 +razor_set_bind_sections(struct razor_set *set, const char *filename,
    1.37 +			enum razor_set_flags flags, struct razor_error **error)
    1.38  {
    1.39  	struct razor_set_section *s, *sections;
    1.40  	struct razor_mapped_file *file;
    1.41  	const char *pool, *reason;
    1.42 -	char *msg;
    1.43  	struct array *array;
    1.44  	int i, j;
    1.45  
    1.46  	file = zalloc(sizeof *file);
    1.47  	if (file == NULL) {
    1.48 -		razor_atomic_abort(atomic, "Not enough memory");
    1.49 +		razor_set_error(error, NULL, "Not enough memory");
    1.50  		return -1;
    1.51  	}
    1.52  
    1.53 -	file->header = razor_file_get_contents(filename, &file->size);
    1.54 +	file->header = razor_file_get_contents(filename, &file->size,
    1.55 +					       flags & RAZOR_SET_PRIVATE,
    1.56 +					       error);
    1.57  	if (!file->header) {
    1.58 -		msg = razor_concat(filename, ": ", strerror(errno), NULL);
    1.59 -		razor_atomic_abort(atomic, msg);
    1.60 -		free(msg);
    1.61  		free(file);
    1.62  		return -1;
    1.63  	}
    1.64 @@ -185,14 +174,14 @@
    1.65  		reason = NULL;
    1.66  
    1.67  	if (reason) {
    1.68 -		msg = razor_concat(filename, ": ", reason, NULL);
    1.69 -		razor_atomic_abort(atomic, msg);
    1.70 -		free(msg);
    1.71 +		razor_set_error(error, filename, reason);
    1.72  		razor_file_free_contents(file->header, file->size);
    1.73  		free(file);
    1.74  		return -1;
    1.75  	}
    1.76  
    1.77 +	set->flags = flags & RAZOR_SET_PRIVATE;
    1.78 +
    1.79  	set->header_version = file->header->version;
    1.80  
    1.81  	if (set->mapped_files == NULL) {
    1.82 @@ -226,19 +215,20 @@
    1.83  }
    1.84  
    1.85  RAZOR_EXPORT struct razor_set *
    1.86 -razor_set_open(const char *filename, struct razor_atomic *atomic)
    1.87 +razor_set_open(const char *filename, enum razor_set_flags flags,
    1.88 +	       struct razor_error **error)
    1.89  {
    1.90  	struct razor_set *set;
    1.91  
    1.92  	set = zalloc(sizeof *set);
    1.93  	if (!set) {
    1.94 -		razor_atomic_abort(atomic, "Not enough memory");
    1.95 +		razor_set_error(error, NULL, "Not enough memory");
    1.96  		return NULL;
    1.97  	}
    1.98  
    1.99  	set->lock_fd = -1;
   1.100  	set->ref_count = 1;
   1.101 -	if (razor_set_bind_sections(set, atomic, filename)) {
   1.102 +	if (razor_set_bind_sections(set, filename, flags, error)) {
   1.103  		free(set);
   1.104  		return NULL;
   1.105  	}