New API functions iso_hfsplus_xinfo_func(), iso_hfsplus_xinfo_new()

and pre-version 0 of struct iso_hfsplus_xinfo_data.
This commit is contained in:
Thomas Schmitt 2012-05-24 19:27:03 +02:00
parent 201e7f15df
commit a8b20b87aa
3 changed files with 70 additions and 0 deletions

View File

@ -6647,6 +6647,53 @@ int iso_md5_end(void **md5_context, char result[16]);
int iso_md5_match(char first_md5[16], char second_md5[16]); int iso_md5_match(char first_md5[16], char second_md5[16]);
/* -------------------------------- For HFS+ ------------------------------- */
/**
* HFS+ attributes which may be attached to IsoNode objects as data parameter
* of iso_node_add_xinfo(). As parameter proc use iso_hfsplus_xinfo_func().
* Create instances of this struct by iso_hfsplus_xinfo_new().
*
* @since 1.2.4
*/
struct iso_hfsplus_xinfo_data {
/* Currently set to 0 by iso_hfsplus_xinfo_new() */
int version;
/* Attributes available with version 0.
* See: http://en.wikipedia.org/wiki/Creator_code , .../Type_code
* @since 1.2.4
*/
unsigned int creator_code :4;
unsigned int type_code :4;
};
/**
* The function that is used to mark struct iso_hfsplus_xinfo_data at IsoNodes
* and finally disposes such structs when their IsoNodes get disposed.
* Usually an application does not call this function, but only uses it as
* parameter of xinfo calls like iso_node_add_xinfo() or iso_node_get_xinfo().
*
* @since 1.2.4
*/
int iso_hfsplus_xinfo_func(void *data, int flag);
/**
* Create an instance of struct iso_hfsplus_xinfo_new().
*
* @param flag
* Bitfield for control purposes. Unused yet. Submit 0.
* @return
* A pointer to the new object
* NULL indicates failure to allocate memory
*
* @since 1.2.4
*/
struct iso_hfsplus_xinfo_data *iso_hfsplus_xinfo_new(int flag);
/************ Error codes and return values for libisofs ********************/ /************ Error codes and return values for libisofs ********************/
/** successfully execution */ /** successfully execution */

View File

@ -69,6 +69,8 @@ iso_fs_global_id;
iso_get_local_charset; iso_get_local_charset;
iso_get_messenger; iso_get_messenger;
iso_gzip_get_refcounts; iso_gzip_get_refcounts;
iso_hfsplus_xinfo_func;
iso_hfsplus_xinfo_new;
iso_image_add_boot_image; iso_image_add_boot_image;
iso_image_add_mips_boot_file; iso_image_add_mips_boot_file;
iso_image_attach_data; iso_image_attach_data;
@ -283,6 +285,7 @@ iso_write_opts_set_dir_rec_mtime;
iso_write_opts_set_disc_label; iso_write_opts_set_disc_label;
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_hfsplus;
iso_write_opts_set_iso1999; iso_write_opts_set_iso1999;
iso_write_opts_set_iso_level; iso_write_opts_set_iso_level;
iso_write_opts_set_joliet; iso_write_opts_set_joliet;

View File

@ -2065,3 +2065,23 @@ void *iso_alloc_mem(size_t size, size_t count, int flag)
return pt; return pt;
} }
int iso_hfsplus_xinfo_func(void *data, int flag)
{
if (flag == 1 && data != NULL)
free(data);
return 1;
}
struct iso_hfsplus_xinfo_data *iso_hfsplus_xinfo_new(int flag)
{
struct iso_hfsplus_xinfo_data *o;
o = calloc(1, sizeof(struct iso_hfsplus_xinfo_data));
if (o == NULL)
return NULL;
o->version = 0;
return o;
}