1.1 --- a/librazor/razor.c Sat Feb 11 09:49:58 2012 +0000
1.2 +++ b/librazor/razor.c Tue Mar 27 21:29:53 2012 +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 }