From b8aa48038ba96cc43f97a13f477115869b6719b1 Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Date: Sun, 23 Dec 2007 15:39:41 +0100 Subject: [PATCH] Minor changes. --- src/buffer.c | 8 ++++++++ src/buffer.h | 7 ++++++- src/ecma119.c | 2 +- src/ecma119_tree.c | 12 +++++++++--- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index 6ac3ceb..8a212f5 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -92,6 +92,14 @@ int iso_ring_buffer_new(IsoRingBuffer **rbuf) return ISO_SUCCESS; } +void iso_ring_buffer_free(IsoRingBuffer *buf) +{ + pthread_mutex_destroy(&buf->mutex); + pthread_cond_destroy(&buf->empty); + pthread_cond_destroy(&buf->full); + free(buf); +} + /** * Write count bytes into buffer. It blocks until all bytes where written or * reader close the buffer. diff --git a/src/buffer.h b/src/buffer.h index 0179cbc..473e64d 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -21,13 +21,18 @@ typedef struct iso_ring_buffer IsoRingBuffer; /** * Create a new buffer. * - * The created buffer can be freed with free(3) + * The created buffer can be freed with iso_ring_buffer_free(3) * * @return * 1 success, < 0 error */ int iso_ring_buffer_new(IsoRingBuffer **rbuf); +/** + * Free a given buffer + */ +void iso_ring_buffer_free(IsoRingBuffer *buf); + /** * Write count bytes into buffer. It blocks until all bytes where written or * reader close the buffer. diff --git a/src/ecma119.c b/src/ecma119.c index ef52d6e..5f884bd 100644 --- a/src/ecma119.c +++ b/src/ecma119.c @@ -31,6 +31,7 @@ void ecma119_image_free(Ecma119Image *t) ecma119_node_free(t->root); iso_image_unref(t->image); iso_rbtree_destroy(t->files, iso_file_src_free); + iso_ring_buffer_free(t->buffer); for (i = 0; i < t->nwriters; ++i) { IsoImageWriter *writer = t->writers[i]; @@ -39,7 +40,6 @@ void ecma119_image_free(Ecma119Image *t) } free(t->input_charset); free(t->writers); - free(t->buffer); free(t); } diff --git a/src/ecma119_tree.c b/src/ecma119_tree.c index 60e368f..f60856e 100644 --- a/src/ecma119_tree.c +++ b/src/ecma119_tree.c @@ -320,7 +320,8 @@ int contains_name(Ecma119Node *dir, const char *name) * but never under 3 characters. */ static -int mangle_dir(Ecma119Node *dir, int max_file_len, int max_dir_len) +int mangle_dir(Ecma119Image *img, Ecma119Node *dir, int max_file_len, + int max_dir_len) { int i, nchildren; Ecma119Node **children; @@ -449,6 +450,8 @@ int mangle_dir(Ecma119Node *dir, int max_file_len, int max_dir_len) if (new == NULL) { return ISO_MEM_ERROR; } + iso_msg_debug(img->image, "\"%s\" renamed to \"%s\"", + children[k]->iso_name, new); free(children[k]->iso_name); children[k]->iso_name = new; /* @@ -484,7 +487,7 @@ int mangle_dir(Ecma119Node *dir, int max_file_len, int max_dir_len) for (i = 0; i < nchildren; ++i) { int ret; if (children[i]->type == ECMA119_DIR) { - ret = mangle_dir(children[i], max_file_len, max_dir_len); + ret = mangle_dir(img, children[i], max_file_len, max_dir_len); if (ret < 0) { /* error */ return ret; @@ -507,7 +510,7 @@ int mangle_tree(Ecma119Image *img) } else { max_file = max_dir = 31; } - return mangle_dir(img->root, max_file, max_dir); + return mangle_dir(img, img->root, max_file, max_dir); } @@ -525,8 +528,11 @@ int ecma119_tree_create(Ecma119Image *img) return ret; } img->root = root; + + iso_msg_debug(img->image, "Sorting the low level tree..."); sort_tree(root); + iso_msg_debug(img->image, "Mangling names..."); ret = mangle_tree(img); if (ret < 0) { return ret;