Vladimir Serbinenko began to implement production of HFS+ metadata.
This revision introduces the writer class and a first attempt to integrate it into image production. Not yet functional.
This commit is contained in:
parent
6982971796
commit
2c540b1f43
@ -66,6 +66,8 @@ libisofs_libisofs_la_SOURCES = \
|
|||||||
libisofs/rockridge_read.c \
|
libisofs/rockridge_read.c \
|
||||||
libisofs/joliet.h \
|
libisofs/joliet.h \
|
||||||
libisofs/joliet.c \
|
libisofs/joliet.c \
|
||||||
|
libisofs/hfsplus.h \
|
||||||
|
libisofs/hfsplus.c \
|
||||||
libisofs/eltorito.h \
|
libisofs/eltorito.h \
|
||||||
libisofs/eltorito.c \
|
libisofs/eltorito.c \
|
||||||
libisofs/system_area.h \
|
libisofs/system_area.h \
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include "ecma119.h"
|
#include "ecma119.h"
|
||||||
#include "joliet.h"
|
#include "joliet.h"
|
||||||
|
#include "hfsplus.h"
|
||||||
#include "iso1999.h"
|
#include "iso1999.h"
|
||||||
#include "eltorito.h"
|
#include "eltorito.h"
|
||||||
#include "ecma119_tree.h"
|
#include "ecma119_tree.h"
|
||||||
@ -451,6 +452,9 @@ char *get_relaxed_vol_id(Ecma119Image *t, const char *name)
|
|||||||
return strdup(name);
|
return strdup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the timestamps of Primary, Supplementary, or Enhanced Volume Descriptor.
|
||||||
|
*/
|
||||||
void ecma119_set_voldescr_times(IsoImageWriter *writer,
|
void ecma119_set_voldescr_times(IsoImageWriter *writer,
|
||||||
struct ecma119_pri_vol_desc *vol)
|
struct ecma119_pri_vol_desc *vol)
|
||||||
{
|
{
|
||||||
@ -1260,6 +1264,8 @@ int write_head_part1(Ecma119Image *target, int *write_count, int flag)
|
|||||||
iso_msg_debug(target->image->id, "Write volume descriptors");
|
iso_msg_debug(target->image->id, "Write volume descriptors");
|
||||||
for (i = 0; i < (int) target->nwriters; ++i) {
|
for (i = 0; i < (int) target->nwriters; ++i) {
|
||||||
writer = target->writers[i];
|
writer = target->writers[i];
|
||||||
|
if (writer->write_vol_desc == hfsplus_writer_write_vol_desc)
|
||||||
|
continue;
|
||||||
res = writer->write_vol_desc(writer);
|
res = writer->write_vol_desc(writer);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
goto write_error;
|
goto write_error;
|
||||||
@ -1270,6 +1276,16 @@ int write_head_part1(Ecma119Image *target, int *write_count, int flag)
|
|||||||
if (res < 0)
|
if (res < 0)
|
||||||
goto write_error;
|
goto write_error;
|
||||||
|
|
||||||
|
/* Special treatment for HFS */
|
||||||
|
for (i = 0; i < (int) target->nwriters; ++i) {
|
||||||
|
writer = target->writers[i];
|
||||||
|
if (writer->write_vol_desc != hfsplus_writer_write_vol_desc)
|
||||||
|
continue;
|
||||||
|
res = writer->write_vol_desc(writer);
|
||||||
|
if (res < 0)
|
||||||
|
goto write_error;
|
||||||
|
}
|
||||||
|
|
||||||
if(flag & 2) {
|
if(flag & 2) {
|
||||||
iso_ring_buffer_get_buf_status(target->buffer, &buffer_size,
|
iso_ring_buffer_get_buf_status(target->buffer, &buffer_size,
|
||||||
&buffer_free);
|
&buffer_free);
|
||||||
@ -1314,6 +1330,13 @@ int write_head_part2(Ecma119Image *target, int *write_count, int flag)
|
|||||||
|
|
||||||
/* >>> TWINTREE: Enhance ISO1999 writer and add it here */
|
/* >>> TWINTREE: Enhance ISO1999 writer and add it here */
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
Vladimir wanted to run hfsplus_writer_write_vol_desc
|
||||||
|
here. But this function is called after the terminator
|
||||||
|
for the first descriptor set.
|
||||||
|
So it would have to be called after this loop.
|
||||||
|
If it is prepared for duplicate metadata at all.
|
||||||
|
*/
|
||||||
if(writer->write_vol_desc != ecma119_writer_write_vol_desc &&
|
if(writer->write_vol_desc != ecma119_writer_write_vol_desc &&
|
||||||
writer->write_vol_desc != joliet_writer_write_vol_desc)
|
writer->write_vol_desc != joliet_writer_write_vol_desc)
|
||||||
continue;
|
continue;
|
||||||
@ -1325,6 +1348,11 @@ int write_head_part2(Ecma119Image *target, int *write_count, int flag)
|
|||||||
ret = write_vol_desc_terminator(target);
|
ret = write_vol_desc_terminator(target);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
If desired and capable, write HFS "volume descriptor" stuff here.
|
||||||
|
*/
|
||||||
|
|
||||||
(*write_count)++;
|
(*write_count)++;
|
||||||
target->eff_partition_offset = 0;
|
target->eff_partition_offset = 0;
|
||||||
|
|
||||||
@ -1630,6 +1658,13 @@ int checksum_prepare_nodes(Ecma119Image *target, IsoNode *node, int flag)
|
|||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
int is_ms_file(void *arg)
|
||||||
|
{
|
||||||
|
IsoFileSrc *f = (IsoFileSrc *)arg;
|
||||||
|
return f->prev_img ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
||||||
{
|
{
|
||||||
@ -1641,7 +1676,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
int system_area_options = 0;
|
int system_area_options = 0;
|
||||||
char *system_area = NULL;
|
char *system_area = NULL;
|
||||||
int write_count = 0, write_count_mem;
|
int write_count = 0, write_count_mem;
|
||||||
|
int hfsplus_writer_index = -1;
|
||||||
|
|
||||||
/* 1. Allocate target and copy opts there */
|
/* 1. Allocate target and copy opts there */
|
||||||
target = calloc(1, sizeof(Ecma119Image));
|
target = calloc(1, sizeof(Ecma119Image));
|
||||||
@ -1666,6 +1701,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
target->iso_level = opts->level;
|
target->iso_level = opts->level;
|
||||||
target->rockridge = opts->rockridge;
|
target->rockridge = opts->rockridge;
|
||||||
target->joliet = opts->joliet;
|
target->joliet = opts->joliet;
|
||||||
|
target->hfsplus = opts->hfsplus;
|
||||||
target->iso1999 = opts->iso1999;
|
target->iso1999 = opts->iso1999;
|
||||||
target->hardlinks = opts->hardlinks;
|
target->hardlinks = opts->hardlinks;
|
||||||
target->aaip = opts->aaip;
|
target->aaip = opts->aaip;
|
||||||
@ -1891,6 +1927,9 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
if (target->joliet) {
|
if (target->joliet) {
|
||||||
nwriters++;
|
nwriters++;
|
||||||
}
|
}
|
||||||
|
if (target->hfsplus) {
|
||||||
|
nwriters++;
|
||||||
|
}
|
||||||
if (target->iso1999) {
|
if (target->iso1999) {
|
||||||
nwriters++;
|
nwriters++;
|
||||||
}
|
}
|
||||||
@ -1940,6 +1979,15 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* create writer for HFS+ structure */
|
||||||
|
if (target->hfsplus) {
|
||||||
|
hfsplus_writer_index = target->nwriters - 1;
|
||||||
|
ret = hfsplus_writer_create(target);
|
||||||
|
if (ret < 0) {
|
||||||
|
goto target_cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* create writer for ISO 9660:1999 structure */
|
/* create writer for ISO 9660:1999 structure */
|
||||||
if (target->iso1999) {
|
if (target->iso1999) {
|
||||||
ret = iso1999_writer_create(target);
|
ret = iso1999_writer_create(target);
|
||||||
@ -2007,6 +2055,13 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
|
|
||||||
/* >>> TWINTREE: Enhance ISO1999 writer and add it here */
|
/* >>> TWINTREE: Enhance ISO1999 writer and add it here */
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
Vladimir wanted to run hfsplus_writer_write_vol_desc
|
||||||
|
for the second descriptor set. But that aspect needs
|
||||||
|
further clarification. So it is not yet implemented
|
||||||
|
and is not yet counted here.
|
||||||
|
*/
|
||||||
|
|
||||||
if(writer->write_vol_desc != ecma119_writer_write_vol_desc &&
|
if(writer->write_vol_desc != ecma119_writer_write_vol_desc &&
|
||||||
writer->write_vol_desc != joliet_writer_write_vol_desc)
|
writer->write_vol_desc != joliet_writer_write_vol_desc)
|
||||||
continue;
|
continue;
|
||||||
@ -2032,6 +2087,15 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
if (i == el_torito_writer_index)
|
if (i == el_torito_writer_index)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
Vladimir wanted to skip hfsplus_writer here.
|
||||||
|
I do not understand all motivation for this yet, but the
|
||||||
|
writer must compute its data size in sequence with the other
|
||||||
|
writers. The el_torito_writer jump is a hack and allowed only
|
||||||
|
because eltorito_writer_compute_data_blocks() does not
|
||||||
|
increase the block count. It rather performs -boot-info-table.
|
||||||
|
*/
|
||||||
|
|
||||||
/* Exposing address of data start to IsoWriteOpts and memorizing
|
/* Exposing address of data start to IsoWriteOpts and memorizing
|
||||||
this address for all files which have no block address:
|
this address for all files which have no block address:
|
||||||
symbolic links, device files, empty data files.
|
symbolic links, device files, empty data files.
|
||||||
@ -2039,6 +2103,17 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
will account resp. write this single block.
|
will account resp. write this single block.
|
||||||
*/
|
*/
|
||||||
if (i == file_src_writer_index) {
|
if (i == file_src_writer_index) {
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
Vladimir wanted to delay the setting of
|
||||||
|
target->empty_file_block here. But it might be important
|
||||||
|
that this is the start block of the file_src_writer realm.
|
||||||
|
I have to examine, whether it is ok to choose a different
|
||||||
|
block.
|
||||||
|
This is related anyway to the inappropriate skipping of
|
||||||
|
hfs_writer. See above.
|
||||||
|
*/
|
||||||
|
|
||||||
if (! target->old_empty)
|
if (! target->old_empty)
|
||||||
target->empty_file_block = target->curblock;
|
target->empty_file_block = target->curblock;
|
||||||
opts->data_start_lba = target->curblock;
|
opts->data_start_lba = target->curblock;
|
||||||
@ -2050,6 +2125,50 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NIX
|
||||||
|
|
||||||
|
/* >>> HFS : ts B20523
|
||||||
|
By Vladimir.
|
||||||
|
This should be integrated in above loop and probably go into
|
||||||
|
hfs_writer->compute_data_blocks()..
|
||||||
|
I have to examine what it does.
|
||||||
|
*/
|
||||||
|
if (hfsplus_writer_index >= 0) {
|
||||||
|
IsoImageWriter *writer = target->writers[hfsplus_writer_index];
|
||||||
|
uint32_t extra;
|
||||||
|
IsoFileSrc **filelist;
|
||||||
|
size_t size;
|
||||||
|
size_t j;
|
||||||
|
|
||||||
|
target->vol_space_size = target->curblock - target->ms_block;
|
||||||
|
target->total_size = (off_t) target->vol_space_size * BLOCK_SIZE;
|
||||||
|
|
||||||
|
target->curblock = opts->data_start_lba;
|
||||||
|
ret = writer->compute_data_blocks(writer);
|
||||||
|
if (ret < 0) {
|
||||||
|
goto target_cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
writer = target->writers[file_src_writer_index];
|
||||||
|
if (! target->old_empty)
|
||||||
|
target->empty_file_block = target->curblock;
|
||||||
|
extra = target->curblock - opts->data_start_lba;
|
||||||
|
opts->data_start_lba = target->curblock;
|
||||||
|
|
||||||
|
filelist = (IsoFileSrc**)iso_rbtree_to_array(target->files, target->appendable ? is_ms_file : NULL, &size);
|
||||||
|
/* fill block value */
|
||||||
|
for (j = 0; j < size; ++j) {
|
||||||
|
int extent = 0;
|
||||||
|
IsoFileSrc *file = filelist[j];
|
||||||
|
|
||||||
|
for (extent = 0; extent < file->nsections - 1; ++extent) {
|
||||||
|
file->sections[extent].block += extra;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* NIX */
|
||||||
|
|
||||||
/* Now perform delayed image patching and System Area preparations */
|
/* Now perform delayed image patching and System Area preparations */
|
||||||
if (el_torito_writer_index >= 0) {
|
if (el_torito_writer_index >= 0) {
|
||||||
IsoImageWriter *writer = target->writers[el_torito_writer_index];
|
IsoImageWriter *writer = target->writers[el_torito_writer_index];
|
||||||
@ -2412,6 +2531,10 @@ int iso_image_create_burn_source(IsoImage *image, IsoWriteOpts *opts,
|
|||||||
struct burn_source *source;
|
struct burn_source *source;
|
||||||
Ecma119Image *target= NULL;
|
Ecma119Image *target= NULL;
|
||||||
|
|
||||||
|
/* <<< ts B20523 : Only as long as Vladimir develops HFS */
|
||||||
|
iso_msg_debug(image->id, "(c) opts->hfsplus = 0x%x", opts->hfsplus);
|
||||||
|
iso_msg_debug(image->id, "(c) opts->joliet = 0x%x", opts->joliet);
|
||||||
|
|
||||||
if (image == NULL || opts == NULL || burn_src == NULL) {
|
if (image == NULL || opts == NULL || burn_src == NULL) {
|
||||||
return ISO_NULL_POINTER;
|
return ISO_NULL_POINTER;
|
||||||
}
|
}
|
||||||
@ -2640,6 +2763,15 @@ int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable)
|
|||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int iso_write_opts_set_hfsplus(IsoWriteOpts *opts, int enable)
|
||||||
|
{
|
||||||
|
if (opts == NULL) {
|
||||||
|
return ISO_NULL_POINTER;
|
||||||
|
}
|
||||||
|
opts->hfsplus = 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) {
|
||||||
|
@ -83,6 +83,7 @@ struct iso_write_opts {
|
|||||||
unsigned int rockridge :1;
|
unsigned int rockridge :1;
|
||||||
unsigned int joliet :1;
|
unsigned int joliet :1;
|
||||||
unsigned int iso1999 :1;
|
unsigned int iso1999 :1;
|
||||||
|
unsigned int hfsplus :1;
|
||||||
|
|
||||||
unsigned int aaip :1; /* whether to write eventual ACL and EAs */
|
unsigned int aaip :1; /* whether to write eventual ACL and EAs */
|
||||||
|
|
||||||
@ -448,6 +449,7 @@ typedef struct ecma119_image Ecma119Image;
|
|||||||
typedef struct ecma119_node Ecma119Node;
|
typedef struct ecma119_node Ecma119Node;
|
||||||
typedef struct joliet_node JolietNode;
|
typedef struct joliet_node JolietNode;
|
||||||
typedef struct iso1999_node Iso1999Node;
|
typedef struct iso1999_node Iso1999Node;
|
||||||
|
typedef struct hfsplus_node HFSPlusNode;
|
||||||
typedef struct Iso_File_Src IsoFileSrc;
|
typedef struct Iso_File_Src IsoFileSrc;
|
||||||
typedef struct Iso_Image_Writer IsoImageWriter;
|
typedef struct Iso_Image_Writer IsoImageWriter;
|
||||||
|
|
||||||
@ -467,6 +469,7 @@ struct ecma119_image
|
|||||||
unsigned int joliet :1;
|
unsigned int joliet :1;
|
||||||
unsigned int eltorito :1;
|
unsigned int eltorito :1;
|
||||||
unsigned int iso1999 :1;
|
unsigned int iso1999 :1;
|
||||||
|
unsigned int hfsplus :1;
|
||||||
|
|
||||||
unsigned int hardlinks:1; /* see iso_write_opts_set_hardlinks() */
|
unsigned int hardlinks:1; /* see iso_write_opts_set_hardlinks() */
|
||||||
|
|
||||||
@ -592,6 +595,16 @@ struct ecma119_image
|
|||||||
uint32_t joliet_l_path_table_pos;
|
uint32_t joliet_l_path_table_pos;
|
||||||
uint32_t joliet_m_path_table_pos;
|
uint32_t joliet_m_path_table_pos;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HFS+ related information
|
||||||
|
*/
|
||||||
|
HFSPlusNode *hfsplus_root;
|
||||||
|
uint32_t hfsp_part_start;
|
||||||
|
uint32_t hfsp_nfiles;
|
||||||
|
uint32_t hfsp_ndirs;
|
||||||
|
uint32_t hfsp_cat_id;
|
||||||
|
uint32_t hfsp_allocation_blocks;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ISO 9660:1999 related information
|
* ISO 9660:1999 related information
|
||||||
*/
|
*/
|
||||||
|
1011
libisofs/hfsplus.c
Normal file
1011
libisofs/hfsplus.c
Normal file
File diff suppressed because it is too large
Load Diff
96
libisofs/hfsplus.h
Normal file
96
libisofs/hfsplus.h
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 Thomas Schmitt
|
||||||
|
* Copyright (c) 2012 Vladimir Serbinenko
|
||||||
|
*
|
||||||
|
* This file is part of the libisofs project; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License version 2
|
||||||
|
* or later as published by the Free Software Foundation.
|
||||||
|
* See COPYING file for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Declare HFS+ related structures.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIBISO_HFSPLUS_H
|
||||||
|
#define LIBISO_HFSPLUS_H
|
||||||
|
|
||||||
|
#include "ecma119.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* <<< dummies */
|
||||||
|
|
||||||
|
#define LIBISO_HFSPLUS_NAME_MAX 255
|
||||||
|
|
||||||
|
enum hfsplus_node_type {
|
||||||
|
HFSPLUS_FILE,
|
||||||
|
HFSPLUS_DIR
|
||||||
|
};
|
||||||
|
|
||||||
|
struct hfsplus_dir_info {
|
||||||
|
HFSPlusNode **children;
|
||||||
|
size_t nchildren;
|
||||||
|
size_t len;
|
||||||
|
size_t block;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct hfsplus_node
|
||||||
|
{
|
||||||
|
uint16_t *name; /**< Name in UCS-2BE. */
|
||||||
|
|
||||||
|
HFSPlusNode *parent;
|
||||||
|
|
||||||
|
IsoNode *node; /*< reference to the iso node */
|
||||||
|
|
||||||
|
enum hfsplus_node_type type;
|
||||||
|
union {
|
||||||
|
IsoFileSrc *file;
|
||||||
|
struct hfsplus_dir_info *dir;
|
||||||
|
} info;
|
||||||
|
|
||||||
|
/* <<< dummies */
|
||||||
|
int cat_id;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct hfsplus_volheader {
|
||||||
|
|
||||||
|
uint16_t magic;
|
||||||
|
uint16_t version;
|
||||||
|
uint32_t attributes;
|
||||||
|
uint32_t last_mounted_version;
|
||||||
|
uint32_t ctime;
|
||||||
|
uint32_t utime;
|
||||||
|
uint32_t backup_time;
|
||||||
|
uint32_t fsck_time;
|
||||||
|
uint32_t file_count;
|
||||||
|
uint32_t folder_count;
|
||||||
|
uint32_t blksize;
|
||||||
|
uint32_t catalog_node_id;
|
||||||
|
uint32_t rsrc_clumpsize;
|
||||||
|
uint32_t data_clumpsize;
|
||||||
|
uint32_t total_blocks;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* >>> ts B20523 : what else is needed here ? */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a IsoWriter to deal with HFS+ structures, and add it to the given
|
||||||
|
* target.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* 1 on success, < 0 on error
|
||||||
|
*/
|
||||||
|
int hfsplus_writer_create(Ecma119Image *target);
|
||||||
|
|
||||||
|
|
||||||
|
/* Not to be called but only for comparison with target->writers[i]
|
||||||
|
*/
|
||||||
|
int hfsplus_writer_write_vol_desc(IsoImageWriter *writer);
|
||||||
|
|
||||||
|
#endif /* LIBISO_HFSPLUS_H */
|
@ -295,6 +295,11 @@ enum IsoHideNodeFlag {
|
|||||||
/** Hide the node in the ISO-9660:1999 tree, if that format is enabled */
|
/** Hide the node in the ISO-9660:1999 tree, if that format is enabled */
|
||||||
LIBISO_HIDE_ON_1999 = 1 << 2,
|
LIBISO_HIDE_ON_1999 = 1 << 2,
|
||||||
|
|
||||||
|
/** Hide the node in the HFS+ tree, if that format is enabled.
|
||||||
|
@since 1.2.4
|
||||||
|
*/
|
||||||
|
LIBISO_HIDE_ON_HFSPLUS = 1 << 4,
|
||||||
|
|
||||||
/** With IsoNode and IsoBoot: Write data content even if the node is
|
/** With IsoNode and IsoBoot: Write data content even if the node is
|
||||||
* not visible in any tree.
|
* not visible in any tree.
|
||||||
* With directory nodes : Write data content of IsoNode and IsoBoot
|
* With directory nodes : Write data content of IsoNode and IsoBoot
|
||||||
@ -1391,6 +1396,20 @@ int iso_write_opts_set_rockridge(IsoWriteOpts *opts, int enable);
|
|||||||
*/
|
*/
|
||||||
int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable);
|
int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to add the HFS+ to the image.
|
||||||
|
*
|
||||||
|
* @param opts
|
||||||
|
* The option set to be manipulated.
|
||||||
|
* @param enable
|
||||||
|
* 1 to enable HFS+ extension, 0 to not add them
|
||||||
|
* @return
|
||||||
|
* 1 success, < 0 error
|
||||||
|
*
|
||||||
|
* @since 1.2.4
|
||||||
|
*/
|
||||||
|
int iso_write_opts_set_hfsplus(IsoWriteOpts *opts, int enable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to use newer ISO-9660:1999 version.
|
* Whether to use newer ISO-9660:1999 version.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user