New API call iso_write_opts_set_fat(). (FAT feature not implemented yet.)

This commit is contained in:
Thomas Schmitt 2012-06-10 19:41:00 +02:00
parent 7c6c3466e9
commit 1de0284eaa
4 changed files with 36 additions and 3 deletions

View File

@ -1682,6 +1682,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
target->rockridge = opts->rockridge; target->rockridge = opts->rockridge;
target->joliet = opts->joliet; target->joliet = opts->joliet;
target->hfsplus = opts->hfsplus; target->hfsplus = opts->hfsplus;
target->fat = opts->fat;
target->iso1999 = opts->iso1999; target->iso1999 = opts->iso1999;
target->hardlinks = opts->hardlinks; target->hardlinks = opts->hardlinks;
target->aaip = opts->aaip; target->aaip = opts->aaip;
@ -1924,7 +1925,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
if (target->joliet) { if (target->joliet) {
nwriters++; nwriters++;
} }
if (target->hfsplus) { if (target->hfsplus || target->fat) {
nwriters+= 2; nwriters+= 2;
} }
if (target->iso1999) { if (target->iso1999) {
@ -2007,7 +2008,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
/* create writer for HFS+/FAT structure */ /* create writer for HFS+/FAT structure */
/* Impotant: It must be created directly before iso_file_src_writer_create. /* Impotant: It must be created directly before iso_file_src_writer_create.
*/ */
if (target->hfsplus) { if (target->hfsplus || target->fat) {
ret = hfsplus_writer_create(target); ret = hfsplus_writer_create(target);
if (ret < 0) { if (ret < 0) {
goto target_cleanup; goto target_cleanup;
@ -2022,7 +2023,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
file_src_writer_index = target->nwriters - 1; file_src_writer_index = target->nwriters - 1;
/* create writer for HFS+ structure */ /* create writer for HFS+ structure */
if (target->hfsplus) { if (target->hfsplus || target->fat) {
ret = hfsplus_tail_writer_create(target); ret = hfsplus_tail_writer_create(target);
if (ret < 0) { if (ret < 0) {
goto target_cleanup; goto target_cleanup;
@ -2639,6 +2640,8 @@ int iso_write_opts_new(IsoWriteOpts **opts, int profile)
return ISO_ASSERT_FAILURE; return ISO_ASSERT_FAILURE;
break; break;
} }
wopts->hfsplus = 0;
wopts->fat = 0;
wopts->fifo_size = 1024; /* 2 MB buffer */ wopts->fifo_size = 1024; /* 2 MB buffer */
wopts->sort_files = 1; /* file sorting is always good */ wopts->sort_files = 1; /* file sorting is always good */
@ -2752,6 +2755,15 @@ int iso_write_opts_set_hfsplus(IsoWriteOpts *opts, int enable)
return ISO_SUCCESS; return ISO_SUCCESS;
} }
int iso_write_opts_set_fat(IsoWriteOpts *opts, int enable)
{
if (opts == NULL) {
return ISO_NULL_POINTER;
}
opts->fat = enable ? 1 : 0;
return ISO_SUCCESS;
}
int iso_write_opts_set_iso1999(IsoWriteOpts *opts, int enable) int iso_write_opts_set_iso1999(IsoWriteOpts *opts, int enable)
{ {
if (opts == NULL) { if (opts == NULL) {

View File

@ -97,6 +97,7 @@ struct iso_write_opts {
unsigned int joliet :1; unsigned int joliet :1;
unsigned int iso1999 :1; unsigned int iso1999 :1;
unsigned int hfsplus :1; unsigned int hfsplus :1;
unsigned int fat :1;
unsigned int aaip :1; /* whether to write eventual ACL and EAs */ unsigned int aaip :1; /* whether to write eventual ACL and EAs */
@ -489,6 +490,7 @@ struct ecma119_image
unsigned int eltorito :1; unsigned int eltorito :1;
unsigned int iso1999 :1; unsigned int iso1999 :1;
unsigned int hfsplus :1; unsigned int hfsplus :1;
unsigned int fat :1;
unsigned int hardlinks:1; /* see iso_write_opts_set_hardlinks() */ unsigned int hardlinks:1; /* see iso_write_opts_set_hardlinks() */

View File

@ -1427,6 +1427,24 @@ int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable);
*/ */
int iso_write_opts_set_hfsplus(IsoWriteOpts *opts, int enable); int iso_write_opts_set_hfsplus(IsoWriteOpts *opts, int enable);
/**
* Whether to add a FAT32 filesystem to the image which points to the same
* file content as the other directory trees.
*
* >>> FAT32 is planned to get implemented in co-existence with HFS+
* >>> Describe impact on MBR
*
* @param opts
* The option set to be manipulated.
* @param enable
* 1 to enable FAT32 extension, 0 to not add FAT metadata
* @return
* 1 success, < 0 error
*
* @since 1.2.4
*/
int iso_write_opts_set_fat(IsoWriteOpts *opts, int enable);
/** /**
* Supply a serial number for the HFS+ extension of the emerging image. * Supply a serial number for the HFS+ extension of the emerging image.
* *

View File

@ -285,6 +285,7 @@ iso_write_opts_set_default_timestamp;
iso_write_opts_set_default_uid; iso_write_opts_set_default_uid;
iso_write_opts_set_dir_rec_mtime; iso_write_opts_set_dir_rec_mtime;
iso_write_opts_set_disc_label; iso_write_opts_set_disc_label;
iso_write_opts_set_fat;
iso_write_opts_set_fifo_size; iso_write_opts_set_fifo_size;
iso_write_opts_set_hardlinks; iso_write_opts_set_hardlinks;
iso_write_opts_set_hfsp_serial_number; iso_write_opts_set_hfsp_serial_number;