From 5d813050425e6ad52fc790e943cb7c47665aceef Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Date: Tue, 8 Jan 2008 16:10:25 +0100 Subject: [PATCH] Expose Joliet. --- demo/iso.c | 2 ++ demo/iso_modify.c | 2 ++ demo/iso_ms.c | 2 ++ src/ecma119.c | 20 ++++++++++++++++---- src/libisofs.h | 2 ++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/demo/iso.c b/demo/iso.c index e10320e..1d082a1 100644 --- a/demo/iso.c +++ b/demo/iso.c @@ -30,8 +30,10 @@ int main(int argc, char **argv) Ecma119WriteOpts opts = { 1, /* level */ 1, /* rockridge */ + 1, /* joliet */ 0, /* omit_version_numbers */ 0, /* allow_deep_paths */ + 0, /* joliet_longer_paths */ 0, /* sort files */ 0, /* replace_dir_mode */ 0, /* replace_file_mode */ diff --git a/demo/iso_modify.c b/demo/iso_modify.c index 4165f4a..dd3b5e7 100644 --- a/demo/iso_modify.c +++ b/demo/iso_modify.c @@ -30,8 +30,10 @@ int main(int argc, char **argv) Ecma119WriteOpts opts = { 1, /* level */ 1, /* rockridge */ + 0, /* joliet */ 0, /* omit_version_numbers */ 0, /* allow_deep_paths */ + 0, /* joliet_longer_paths */ 1, /* sort files */ 0, /* replace_dir_mode */ 0, /* replace_file_mode */ diff --git a/demo/iso_ms.c b/demo/iso_ms.c index c8215b9..8e56e47 100644 --- a/demo/iso_ms.c +++ b/demo/iso_ms.c @@ -30,8 +30,10 @@ int main(int argc, char **argv) Ecma119WriteOpts opts = { 1, /* level */ 1, /* rockridge */ + 0, /* joliet */ 0, /* omit_version_numbers */ 0, /* allow_deep_paths */ + 0, /* joliet_longer_paths */ 1, /* sort files */ 0, /* replace_dir_mode */ 0, /* replace_file_mode */ diff --git a/src/ecma119.c b/src/ecma119.c index 2059702..1b837ef 100644 --- a/src/ecma119.c +++ b/src/ecma119.c @@ -9,6 +9,7 @@ #include "libisofs.h" #include "ecma119.h" +#include "joliet.h" #include "ecma119_tree.h" #include "error.h" #include "filesrc.h" @@ -825,11 +826,11 @@ 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->joliet = opts->joliet; target->ino = 0; target->omit_version_numbers = opts->omit_version_numbers; target->allow_deep_paths = opts->allow_deep_paths; - target->joliet_longer_paths = 0; //TODO + target->joliet_longer_paths = opts->joliet_longer_paths; target->sort_files = opts->sort_files; target->replace_uid = opts->replace_uid ? 1 : 0; @@ -878,6 +879,11 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts, Ecma119Image **img) /* the number of writers is dependent of the extensions */ nwriters = 1 + 1 + 1; /* ECMA-119 + padding + files */ + + if (target->joliet) { + nwriters++; + } + target->writers = malloc(nwriters * sizeof(void*)); if (target->writers == NULL) { iso_image_unref(src); @@ -890,12 +896,18 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts, Ecma119Image **img) if (ret < 0) { goto target_cleanup; } - - voldesc_size = target->curblock - target->ms_block - 16; + + /* create writer for Joliet structure */ + ret = joliet_writer_create(target); + if (ret < 0) { + goto target_cleanup; + } /* Volume Descriptor Set Terminator */ target->curblock++; + voldesc_size = target->curblock - target->ms_block - 16; + /* * Create the writer for possible padding to ensure that in case of image * growing we can safety overwrite the first 64 KiB of image. diff --git a/src/libisofs.h b/src/libisofs.h index 1abbfb6..e7f43be 100644 --- a/src/libisofs.h +++ b/src/libisofs.h @@ -65,10 +65,12 @@ typedef struct /** Which extensions to support. */ unsigned int rockridge :1; + unsigned int joliet :1; /* relaxed constraints */ unsigned int omit_version_numbers :1; unsigned int allow_deep_paths :1; + unsigned int joliet_longer_paths :1; //int relaxed_constraints; /**< see ecma119_relaxed_constraints_flag */ //unsigned int copy_eltorito:1;