diff --git a/src/ecma119.c b/src/ecma119.c index d2997ea..c016c90 100644 --- a/src/ecma119.c +++ b/src/ecma119.c @@ -825,6 +825,7 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts, Ecma119Image **img) target->iso_level = opts->level; target->rockridge = opts->rockridge; + target->joliet = 0; //TODO opts->joliet; target->ino = 0; target->omit_version_numbers = opts->omit_version_numbers; target->allow_deep_paths = opts->allow_deep_paths; diff --git a/src/ecma119.h b/src/ecma119.h index 71b79ce..7a59d2e 100644 --- a/src/ecma119.h +++ b/src/ecma119.h @@ -20,6 +20,7 @@ typedef struct ecma119_image Ecma119Image; typedef struct ecma119_node Ecma119Node; +typedef struct joliet_node JolietNode; typedef struct Iso_File_Src IsoFileSrc; typedef struct Iso_Image_Writer IsoImageWriter; @@ -32,6 +33,7 @@ struct ecma119_image /* extensions */ unsigned int rockridge :1; + unsigned int joliet :1; /* relaxed constraints */ unsigned int omit_version_numbers :1; @@ -95,6 +97,11 @@ struct ecma119_image uint32_t path_table_size; uint32_t l_path_table_pos; uint32_t m_path_table_pos; + + /* + * Joliet related information + */ + JolietNode *joliet_root; /* * Number of pad blocks that we need to write. Padding blocks are blocks diff --git a/src/joliet.c b/src/joliet.c index 3646f2c..8705338 100644 --- a/src/joliet.c +++ b/src/joliet.c @@ -245,17 +245,14 @@ void sort_tree(JolietNode *root) } static -int joliet_tree_create(IsoImageWriter *writer) +int joliet_tree_create(Ecma119Image *t) { int ret; JolietNode *root; - Ecma119Image *t; - if (writer == NULL || writer->target == NULL) { + if (t == NULL) { return ISO_NULL_POINTER; } - - t = writer->target; ret = create_tree(t, (IsoNode*)t->image->root, &root, 0); if (ret <= 0) { @@ -266,14 +263,14 @@ int joliet_tree_create(IsoImageWriter *writer) return ret; } - /* the Joliet tree is stored in the writer data field */ - writer->data = root; + /* the Joliet tree is stored in Ecma119Image target */ + t->joliet_root = root; iso_msg_debug(t->image->messenger, "Sorting the Joliet tree..."); sort_tree(root); //iso_msg_debug(t->image->messenger, "Mangling Joliet names..."); - // FIXME ret = mangle_tree(writer, 1); + // FIXME ret = mangle_tree(t, 1); return ISO_SUCCESS; } @@ -303,7 +300,8 @@ static int joliet_writer_free_data(IsoImageWriter *writer) { /* free the Joliet tree */ - joliet_node_free(writer->data); + Ecma119Image *t = writer->target; + joliet_node_free(t->joliet_root); return ISO_SUCCESS; } @@ -326,7 +324,7 @@ int joliet_writer_create(Ecma119Image *target) iso_msg_debug(target->image->messenger, "Creating low level Joliet tree..."); - ret = joliet_tree_create(writer); + ret = joliet_tree_create(target); if (ret < 0) { return ret; } diff --git a/src/joliet.h b/src/joliet.h index 26f5940..39125e3 100644 --- a/src/joliet.h +++ b/src/joliet.h @@ -17,8 +17,6 @@ #include "libisofs.h" #include "ecma119.h" -typedef struct joliet_node JolietNode; - enum joliet_node_type { JOLIET_FILE, JOLIET_DIR