diff -r 6fa783097ca1 -r 0c8bdd8dc942 librazor/razor.c --- a/librazor/razor.c Sat Feb 11 09:49:58 2012 +0000 +++ b/librazor/razor.c Thu Feb 16 17:44:25 2012 +0000 @@ -48,17 +48,6 @@ #define O_BINARY 0 #endif -void * -zalloc(size_t size) -{ - void *p; - - p = malloc(size); - memset(p, 0, size); - - return p; -} - struct razor_set_section_index { const char *name; uint32_t offset; @@ -102,6 +91,8 @@ set->ref_count = 1; set->header_version = RAZOR_HEADER_VERSION; + + set->flags = RAZOR_SET_PRIVATE; } return set; @@ -149,27 +140,25 @@ }; RAZOR_EXPORT int -razor_set_bind_sections(struct razor_set *set, struct razor_atomic *atomic, - const char *filename) +razor_set_bind_sections(struct razor_set *set, const char *filename, + enum razor_set_flags flags, struct razor_error **error) { struct razor_set_section *s, *sections; struct razor_mapped_file *file; const char *pool, *reason; - char *msg; struct array *array; int i, j; file = zalloc(sizeof *file); if (file == NULL) { - razor_atomic_abort(atomic, "Not enough memory"); + razor_set_error(error, NULL, "Not enough memory"); return -1; } - file->header = razor_file_get_contents(filename, &file->size); + file->header = razor_file_get_contents(filename, &file->size, + flags & RAZOR_SET_PRIVATE, + error); if (!file->header) { - msg = razor_concat(filename, ": ", strerror(errno), NULL); - razor_atomic_abort(atomic, msg); - free(msg); free(file); return -1; } @@ -185,14 +174,14 @@ reason = NULL; if (reason) { - msg = razor_concat(filename, ": ", reason, NULL); - razor_atomic_abort(atomic, msg); - free(msg); + razor_set_error(error, filename, reason); razor_file_free_contents(file->header, file->size); free(file); return -1; } + set->flags = flags & RAZOR_SET_PRIVATE; + set->header_version = file->header->version; if (set->mapped_files == NULL) { @@ -226,19 +215,20 @@ } RAZOR_EXPORT struct razor_set * -razor_set_open(const char *filename, struct razor_atomic *atomic) +razor_set_open(const char *filename, enum razor_set_flags flags, + struct razor_error **error) { struct razor_set *set; set = zalloc(sizeof *set); if (!set) { - razor_atomic_abort(atomic, "Not enough memory"); + razor_set_error(error, NULL, "Not enough memory"); return NULL; } set->lock_fd = -1; set->ref_count = 1; - if (razor_set_bind_sections(set, atomic, filename)) { + if (razor_set_bind_sections(set, filename, flags, error)) { free(set); return NULL; }