From 4b0833f62c927c0a9714ded9181c5fb4228897f7 Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Date: Sun, 6 Jan 2008 17:43:19 +0100 Subject: [PATCH] Sort Joliet tree. --- src/joliet.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/joliet.c b/src/joliet.c index cee3ac6..3646f2c 100644 --- a/src/joliet.c +++ b/src/joliet.c @@ -222,6 +222,28 @@ int create_tree(Ecma119Image *t, IsoNode *iso, JolietNode **tree, int pathlen) return ISO_SUCCESS; } +static int +cmp_node(const void *f1, const void *f2) +{ + JolietNode *f = *((JolietNode**)f1); + JolietNode *g = *((JolietNode**)f2); + return ucscmp(f->name, g->name); +} + +static +void sort_tree(JolietNode *root) +{ + size_t i; + + qsort(root->info.dir.children, root->info.dir.nchildren, + sizeof(void*), cmp_node); + for (i = 0; i < root->info.dir.nchildren; i++) { + JolietNode *child = root->info.dir.children[i]; + if (child->type == JOLIET_DIR) + sort_tree(child); + } +} + static int joliet_tree_create(IsoImageWriter *writer) { @@ -248,10 +270,10 @@ int joliet_tree_create(IsoImageWriter *writer) writer->data = root; iso_msg_debug(t->image->messenger, "Sorting the Joliet tree..."); - //TODO sort_tree(root); + sort_tree(root); - iso_msg_debug(t->image->messenger, "Mangling Joliet names..."); - // TODO ret = mangle_tree(writer, 1); + //iso_msg_debug(t->image->messenger, "Mangling Joliet names..."); + // FIXME ret = mangle_tree(writer, 1); return ISO_SUCCESS; }