xorriso  1.5.4.pl02
About: GNU xorriso creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions. It is suitable for incremental data backup and for production of bootable ISO 9660 images. GNU xorriso is a statical compilation of the libraries libburn, libisofs, libisoburn, and libjte.
  Fossies Dox: xorriso-1.5.4.pl02.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

ecma119.c File Reference
#include "libisofs.h"
#include "ecma119.h"
#include "joliet.h"
#include "hfsplus.h"
#include "iso1999.h"
#include "eltorito.h"
#include "ecma119_tree.h"
#include "filesrc.h"
#include "image.h"
#include "writer.h"
#include "messages.h"
#include "rockridge.h"
#include "util.h"
#include "system_area.h"
#include "md5.h"
#include <ctype.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <locale.h>
#include <langinfo.h>
#include <stdio.h>
Include dependency graph for ecma119.c:

Go to the source code of this file.

Data Structures

struct  iso_zero_writer_data_struct
 
struct  iso_interval_zeroizer
 
struct  iso_interval_reader
 

Macros

#define LIBISOFS_WITHOUT_LIBBURN   yes
 
#define Libisofs_gpt_writer_lasT   yes
 
#define Libisofs_print_size_no_forK   1
 

Functions

int iso_write_opts_clone (IsoWriteOpts *in, IsoWriteOpts **out, int flag)
 
static void ecma119_image_free (Ecma119Image *t)
 
static int show_chunk_to_jte (Ecma119Image *target, char *buf, int count)
 
static int need_version_number (IsoWriteOpts *opts, enum ecma119_node_type node_type)
 
static size_t calc_dirent_len (Ecma119Image *t, Ecma119Node *n)
 
static size_t calc_dir_size (Ecma119Image *t, Ecma119Node *dir, size_t *ce)
 
static void calc_dir_pos (Ecma119Image *t, Ecma119Node *dir)
 
static uint32_t calc_path_table_size (Ecma119Node *dir)
 
static int ecma119_writer_compute_data_blocks (IsoImageWriter *writer)
 
static void write_one_dir_record (Ecma119Image *t, Ecma119Node *node, int file_id, uint8_t *buf, size_t len_fi, struct susp_info *info, int extent)
 
static char * get_relaxed_vol_id (Ecma119Image *t, const char *name)
 
void ecma119_set_voldescr_times (IsoImageWriter *writer, struct ecma119_pri_vol_desc *vol)
 
static int ecma119_writer_write_vol_desc (IsoImageWriter *writer)
 
static int write_one_dir (Ecma119Image *t, Ecma119Node *dir, Ecma119Node *parent)
 
static int write_dirs (Ecma119Image *t, Ecma119Node *root, Ecma119Node *parent)
 
static int write_path_table (Ecma119Image *t, Ecma119Node **pathlist, int l_type)
 
static int write_path_tables (Ecma119Image *t)
 
static int ecma119_writer_write_dirs (IsoImageWriter *writer)
 
static int ecma119_writer_write_data (IsoImageWriter *writer)
 
static int ecma119_writer_free_data (IsoImageWriter *writer)
 
int ecma119_writer_create (Ecma119Image *target)
 
static int mspad_writer_compute_data_blocks (IsoImageWriter *writer)
 
static int mspad_writer_write_vol_desc (IsoImageWriter *writer)
 
static int mspad_writer_write_data (IsoImageWriter *writer)
 
static int mspad_writer_free_data (IsoImageWriter *writer)
 
static int mspad_writer_create (Ecma119Image *target)
 
static int zero_writer_compute_data_blocks (IsoImageWriter *writer)
 
static int zero_writer_write_vol_desc (IsoImageWriter *writer)
 
static int zero_writer_write_data (IsoImageWriter *writer)
 
static int zero_writer_free_data (IsoImageWriter *writer)
 
static int tail_writer_compute_data_blocks (IsoImageWriter *writer)
 
static int part_align_writer_compute_data_blocks (IsoImageWriter *writer)
 
static int zero_writer_create (Ecma119Image *target, uint32_t num_blocks, int flag)
 
static int process_preserved_cx (IsoDir *dir, int flag)
 
static int transplant_checksum_buffer (Ecma119Image *target, int flag)
 
static int write_vol_desc_terminator (Ecma119Image *target)
 
static int write_head_part1 (Ecma119Image *target, int *write_count, int flag)
 
static int write_head_part2 (Ecma119Image *target, int *write_count, int flag)
 
static int write_head_part (Ecma119Image *target, int flag)
 
static int finish_libjte (Ecma119Image *target)
 
static int iso_ivr_next_comp (char *read_pt, char **next_pt, int flag)
 
static int iso_ivr_read_number (char *start_pt, char *end_pt, off_t *result, int flag)
 
static int iso_ivr_parse_interval (char *start_pt, char *end_pt, off_t *start_byte, off_t *end_byte, int flag)
 
static int iso_ivr_parse_zeroizers (struct iso_interval_reader *ivr, char *pathpt, char *end_pt, int flag)
 
static int iso_ivr_parse (struct iso_interval_reader *ivr, char *path, int flag)
 
int iso_interval_reader_destroy (struct iso_interval_reader **ivr, int flag)
 
int iso_interval_reader_new (IsoImage *img, char *path, struct iso_interval_reader **ivr, off_t *byte_count, int flag)
 
static int iso_ivr_zeroize (struct iso_interval_reader *ivr, uint8_t *buf, int buf_fill, int flag)
 
int iso_interval_reader_read (struct iso_interval_reader *ivr, uint8_t *buf, int *buf_fill, int flag)
 
int iso_interval_reader_keep (Ecma119Image *target, struct iso_interval_reader *ivr, int flag)
 
int iso_interval_reader_start_size (Ecma119Image *t, char *path, off_t *start_byte, off_t *byte_count, int flag)
 
int iso_write_partition_file (Ecma119Image *target, char *path, uint32_t prepad, uint32_t blocks, int flag)
 
void issue_ucs2_warning_summary (size_t failures)
 
static void * write_function (void *arg)
 
static int checksum_prepare_image (IsoImage *src, int flag)
 
static int checksum_prepare_nodes (Ecma119Image *target, IsoNode *node, int flag)
 
static void ecma119_determine_now_time (Ecma119Image *target)
 
static int gpt_disk_guid_setup (Ecma119Image *target)
 
static int ecma119_image_new (IsoImage *src, IsoWriteOpts *in_opts, Ecma119Image **img)
 
static int bs_read (struct burn_source *bs, unsigned char *buf, int size)
 
static off_t bs_get_size (struct burn_source *bs)
 
static void bs_free_data (struct burn_source *bs)
 
static int bs_cancel (struct burn_source *bs)
 
static int bs_set_size (struct burn_source *bs, off_t size)
 
static int dive_to_depth_8 (IsoDir *dir, int depth)
 
static int make_reloc_dir_if_needed (IsoImage *img, IsoWriteOpts *opts, int flag)
 
int iso_image_create_burn_source (IsoImage *image, IsoWriteOpts *opts, struct burn_source **burn_src)
 
int iso_write (Ecma119Image *target, void *buf, size_t count)
 
int iso_write_opts_new (IsoWriteOpts **opts, int profile)
 
void iso_write_opts_free (IsoWriteOpts *opts)
 
int iso_write_opts_set_will_cancel (IsoWriteOpts *opts, int will_cancel)
 
int iso_write_opts_set_iso_level (IsoWriteOpts *opts, int level)
 
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_hfsplus (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_fat (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_iso1999 (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_hardlinks (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_aaip (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_old_empty (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_untranslated_name_len (IsoWriteOpts *opts, int len)
 
int iso_write_opts_set_allow_dir_id_ext (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_omit_version_numbers (IsoWriteOpts *opts, int omit)
 
int iso_write_opts_set_allow_deep_paths (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_allow_longer_paths (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_max_37_char_filenames (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_no_force_dots (IsoWriteOpts *opts, int no)
 
int iso_write_opts_set_allow_lowercase (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_allow_full_ascii (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_allow_7bit_ascii (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_relaxed_vol_atts (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_joliet_longer_paths (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_joliet_long_names (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_joliet_utf16 (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_rrip_version_1_10 (IsoWriteOpts *opts, int oldvers)
 
int iso_write_opts_set_rrip_1_10_px_ino (IsoWriteOpts *opts, int enable)
 
int iso_write_opts_set_aaip_susp_1_10 (IsoWriteOpts *opts, int oldvers)
 
int iso_write_opts_set_dir_rec_mtime (IsoWriteOpts *opts, int allow)
 
int iso_write_opts_set_rr_reloc (IsoWriteOpts *opts, char *name, int flags)
 
int iso_write_opts_set_sort_files (IsoWriteOpts *opts, int sort)
 
int iso_write_opts_set_record_md5 (IsoWriteOpts *opts, int session, int files)
 
int iso_write_opts_set_scdbackup_tag (IsoWriteOpts *opts, char *name, char *timestamp, char *tag_written)
 
int iso_write_opts_set_replace_mode (IsoWriteOpts *opts, int dir_mode, int file_mode, int uid, int gid)
 
int iso_write_opts_set_default_dir_mode (IsoWriteOpts *opts, mode_t dir_mode)
 
int iso_write_opts_set_default_file_mode (IsoWriteOpts *opts, mode_t file_mode)
 
int iso_write_opts_set_default_uid (IsoWriteOpts *opts, uid_t uid)
 
int iso_write_opts_set_default_gid (IsoWriteOpts *opts, gid_t gid)
 
int iso_write_opts_set_replace_timestamps (IsoWriteOpts *opts, int replace)
 
int iso_write_opts_set_default_timestamp (IsoWriteOpts *opts, time_t timestamp)
 
int iso_write_opts_set_always_gmt (IsoWriteOpts *opts, int gmt)
 
int iso_write_opts_set_output_charset (IsoWriteOpts *opts, const char *charset)
 
int iso_write_opts_set_appendable (IsoWriteOpts *opts, int appendable)
 
int iso_write_opts_set_ms_block (IsoWriteOpts *opts, uint32_t ms_block)
 
int iso_write_opts_set_overwrite_buf (IsoWriteOpts *opts, uint8_t *overwrite)
 
int iso_write_opts_set_fifo_size (IsoWriteOpts *opts, size_t fifo_size)
 
int iso_write_opts_get_data_start (IsoWriteOpts *opts, uint32_t *data_start, int flag)
 
int iso_write_opts_set_system_area (IsoWriteOpts *opts, char data[32768], int options, int flag)
 
int iso_write_opts_set_pvd_times (IsoWriteOpts *opts, time_t vol_creation_time, time_t vol_modification_time, time_t vol_expiration_time, time_t vol_effective_time, char *vol_uuid)
 
int iso_write_opts_set_part_offset (IsoWriteOpts *opts, uint32_t block_offset_2k, int secs_512_per_head, int heads_per_cyl)
 
int iso_write_opts_attach_jte (IsoWriteOpts *opts, void *libjte_handle)
 
int iso_write_opts_detach_jte (IsoWriteOpts *opts, void **libjte_handle)
 
int iso_write_opts_set_tail_blocks (IsoWriteOpts *opts, uint32_t num_blocks)
 
int iso_write_opts_set_prep_img (IsoWriteOpts *opts, char *image_path, int flag)
 
int iso_write_opts_set_efi_bootp (IsoWriteOpts *opts, char *image_path, int flag)
 
int iso_write_opts_set_partition_img (IsoWriteOpts *opts, int partition_number, uint8_t partition_type, char *image_path, int flag)
 
int iso_write_opts_set_part_type_guid (IsoWriteOpts *opts, int partition_number, uint8_t guid[16], int valid)
 
int iso_write_opts_set_appended_as_gpt (IsoWriteOpts *opts, int gpt)
 
int iso_write_opts_set_appended_as_apm (IsoWriteOpts *opts, int apm)
 
int iso_write_opts_set_part_like_isohybrid (IsoWriteOpts *opts, int alike)
 
int iso_write_opts_set_iso_mbr_part_type (IsoWriteOpts *opts, int part_type)
 
int iso_write_opts_set_iso_type_guid (IsoWriteOpts *opts, uint8_t guid[16], int valid)
 
int iso_write_opts_set_disc_label (IsoWriteOpts *opts, char *label)
 
int iso_write_opts_set_hfsp_serial_number (IsoWriteOpts *opts, uint8_t serial_number[8])
 
int iso_write_opts_set_hfsp_block_size (IsoWriteOpts *opts, int hfsp_block_size, int apm_block_size)
 
int iso_write_opts_set_gpt_guid (IsoWriteOpts *opts, uint8_t guid[16], int mode)
 
int iso_conv_name_chars (IsoWriteOpts *opts, char *in_name, size_t name_len, char **result, size_t *result_len, int flag)
 
static void ecma119_filesrc_array (Ecma119Node *dir, int(*include_item)(void *), IsoFileSrc **filelist, size_t *size, int just_count)
 
static void hidden_filesrc_array (Ecma119Image *t, int(*include_item)(void *), IsoFileSrc **filelist, size_t *size, int just_count)
 
IsoFileSrc ** iso_ecma119_to_filesrc_array (Ecma119Image *t, int(*include_item)(void *), size_t *size)
 
void iso_tell_max_part_range (IsoWriteOpts *opts, int *first_partition, int *last_partition, int flag)
 
int iso_count_appended_partitions (Ecma119Image *target, int *first_partition, int *last_partition)
 

Macro Definition Documentation

◆ Libisofs_gpt_writer_lasT

#define Libisofs_gpt_writer_lasT   yes

◆ Libisofs_print_size_no_forK

#define Libisofs_print_size_no_forK   1

◆ LIBISOFS_WITHOUT_LIBBURN

#define LIBISOFS_WITHOUT_LIBBURN   yes

Definition at line 19 of file ecma119.c.

Function Documentation

◆ bs_cancel()

◆ bs_free_data()

◆ bs_get_size()

static off_t bs_get_size ( struct burn_source bs)
static

Definition at line 3297 of file ecma119.c.

References burn_source::data, and ecma119_image::total_size.

Referenced by iso_image_create_burn_source().

◆ bs_read()

static int bs_read ( struct burn_source bs,
unsigned char *  buf,
int  size 
)
static

◆ bs_set_size()

static int bs_set_size ( struct burn_source bs,
off_t  size 
)
static

Definition at line 3361 of file ecma119.c.

References burn_source::data, and ecma119_image::total_size.

Referenced by iso_image_create_burn_source().

◆ calc_dir_pos()

◆ calc_dir_size()

static size_t calc_dir_size ( Ecma119Image t,
Ecma119Node dir,
size_t *  ce 
)
static

Computes the total size of all directory entries of a single dir, according to ECMA-119 6.8.1.1

This also take into account the size needed for RR entries and SUSP continuation areas (SUSP, 5.1).

Parameters
ceWill be filled with the size needed for Continuation Areas
Returns
The size needed for all dir entries of the given dir, without taking into account the continuation areas.

Definition at line 208 of file ecma119.c.

References BLOCK_SIZE, calc_dirent_len(), ecma119_dir_info::children, ecma119_node::dir, ECMA119_FILE, ecma119_node::file, ecma119_node::info, ecma119_dir_info::len, ecma119_dir_info::nchildren, Iso_File_Src::nsections, ecma119_image::opts, iso_write_opts::rockridge, ROUND_UP, rrip_calc_len(), and ecma119_node::type.

Referenced by calc_dir_pos().

◆ calc_dirent_len()

static size_t calc_dirent_len ( Ecma119Image t,
Ecma119Node n 
)
static

Compute the size of a directory entry for a single node

Definition at line 183 of file ecma119.c.

References ecma119_node::iso_name, need_version_number(), ecma119_image::opts, and ecma119_node::type.

Referenced by calc_dir_size().

◆ calc_path_table_size()

static uint32_t calc_path_table_size ( Ecma119Node dir)
static

◆ checksum_prepare_image()

static int checksum_prepare_image ( IsoImage src,
int  flag 
)
static

Definition at line 2312 of file ecma119.c.

References iso_root_set_isofsca(), ISO_SUCCESS, and Iso_Image::root.

Referenced by ecma119_image_new().

◆ checksum_prepare_nodes()

◆ dive_to_depth_8()

static int dive_to_depth_8 ( IsoDir dir,
int  depth 
)
static

Definition at line 3370 of file ecma119.c.

References Iso_Dir::children, LIBISO_DIR, Iso_Node::next, and Iso_Node::type.

Referenced by make_reloc_dir_if_needed().

◆ ecma119_determine_now_time()

◆ ecma119_filesrc_array()

static void ecma119_filesrc_array ( Ecma119Node dir,
int(*)(void *)  include_item,
IsoFileSrc **  filelist,
size_t *  size,
int  just_count 
)
static

◆ ecma119_image_free()

◆ ecma119_image_new()

static int ecma119_image_new ( IsoImage src,
IsoWriteOpts in_opts,
Ecma119Image **  img 
)
static

Definition at line 2480 of file ecma119.c.

References ecma119_image::alignment_end_block, iso_write_opts::apm_block_size, ecma119_image::apm_req, ecma119_image::apm_req_count, ecma119_image::apm_req_flags, iso_write_opts::appendable, ecma119_image::appended_part_prepad, ecma119_image::appended_part_size, ecma119_image::appended_part_start, iso_write_opts::appended_partitions, BLOCK_SIZE, ecma119_image::boot_appended_idx, ecma119_image::boot_intvl_size, ecma119_image::boot_intvl_start, Iso_Image::bootcat, ecma119_image::bootsrc, ecma119_image::buffer, ecma119_image::catalog, ecma119_image::checksum_array_pos, ecma119_image::checksum_buffer, ecma119_image::checksum_counter, ecma119_image::checksum_ctx, ecma119_image::checksum_idx_counter, checksum_prepare_image(), checksum_prepare_nodes(), ecma119_image::checksum_range_size, ecma119_image::checksum_range_start, ecma119_image::checksum_rlsb_tag_pos, ecma119_image::checksum_sb_tag_pos, ecma119_image::checksum_tag_pos, ecma119_image::checksum_tree_tag_pos, checksum_writer_create(), Iso_Image_Writer::compute_data_blocks, ecma119_image::curblock, iso_write_opts::data_start_lba, iso_write_opts::dir_mode, ecma119_image::dir_mode, ecma119_determine_now_time(), ecma119_image::ecma119_hidden_list, ecma119_image_free(), ecma119_writer_create(), ecma119_writer_write_vol_desc(), ecma119_image::eff_partition_offset, ecma119_image::efi_boot_part_filesrc, ecma119_image::efi_boot_part_size, ecma119_image::eltorito, eltorito_writer_create(), ecma119_image::empty_file_block, iso_write_opts::fat, iso_write_opts::fifo_size, iso_write_opts::file_mode, ecma119_image::file_mode, ecma119_image::files, ecma119_image::filesrc_blocks, ecma119_image::filesrc_start, filesrc_writer_pre_compute(), Iso_Image::generator_is_running, iso_write_opts::gid, ecma119_image::gid, ecma119_image::gpt_backup_end, ecma119_image::gpt_backup_outside, ecma119_image::gpt_backup_size, ecma119_image::gpt_disk_guid_set, gpt_disk_guid_setup(), ecma119_image::gpt_is_computed, ecma119_image::gpt_max_entries, ecma119_image::gpt_part_start, ecma119_image::gpt_req, ecma119_image::gpt_req_count, ecma119_image::gpt_req_flags, gpt_tail_writer_create(), gpt_tail_writer_write_vol_desc(), ecma119_image::gpt_uuid_base, ecma119_image::gpt_uuid_counter, ecma119_image::have_appended_partitions, ecma119_image::hfsp_cat_node_size, ecma119_image::hfsp_collision_count, ecma119_image::hfsp_iso_block_fac, iso_write_opts::hfsplus, ecma119_image::hfsplus_blessed, Iso_Image::hfsplus_blessed, hfsplus_tail_writer_create(), hfsplus_writer_create(), Iso_Image::id, ecma119_image::image, ecma119_image::image_md5, ecma119_image::input_charset, iso_write_opts::iso1999, iso1999_writer_create(), ISO_APM_ENTRIES_MAX, iso_compute_append_partitions(), iso_count_appended_partitions(), iso_delete_gpt_apm_fillers(), iso_file_src_cmp(), iso_file_src_writer_create(), iso_get_local_charset(), ISO_GPT_ENTRIES_MAX, ISO_HFSPLUS_BLESS_MAX, iso_image_ref(), iso_libjte_forward_msgs(), ISO_LIBJTE_START_FAILED, ISO_MAX_PARTITIONS, ISO_MBR_ENTRIES_MAX, iso_md5_compute(), iso_md5_end(), iso_md5_start(), iso_md5_write_tag(), iso_msg_debug(), iso_msg_submit(), iso_node_ref(), iso_node_set_atime(), iso_node_set_ctime(), iso_node_set_mtime(), ISO_NON_MBR_SYS_AREA, ISO_OUT_OF_MEM, ISO_OVWRT_FIFO_TOO_SMALL, ISO_OVWRT_MS_TOO_SMALL, ISO_PART_OFFST_TOO_SMALL, iso_patch_eltoritos(), iso_rbtree_new(), iso_read_mipsel_elf(), iso_ring_buffer_new(), iso_ring_buffer_read(), iso_root_set_isofsnt(), iso_setup_hfsplus_block_size(), ISO_SUCCESS, ISO_THREAD_ERROR, iso_util_decode_md5_tag(), iso_write_opts_clone(), ecma119_image::j_part_l_path_table_pos, ecma119_image::j_part_m_path_table_pos, ecma119_image::j_part_root, iso_write_opts::joliet, ecma119_image::joliet_ucs2_failures, joliet_writer_create(), joliet_writer_write_vol_desc(), libjte_write_header(), ecma119_image::mbr_req, ecma119_image::mbr_req_count, iso_write_opts::md5_file_checksums, iso_write_opts::md5_session_checksum, ecma119_image::mipsel_e_entry, ecma119_image::mipsel_p_filesz, ecma119_image::mipsel_p_offset, ecma119_image::mipsel_p_vaddr, iso_write_opts::ms_block, mspad_writer_create(), el_torito_boot_catalog::node, ecma119_image::now, el_torito_boot_catalog::num_bootimages, ecma119_image::num_bootsrc, ecma119_image::nwriters, iso_write_opts::old_empty, ecma119_image::opts, ecma119_image::opts_overwrite, iso_write_opts::output_charset, ecma119_image::output_charset, iso_write_opts::overwrite, ecma119_image::part_align_blocks, partappend_writer_create(), iso_write_opts::partition_heads_per_cyl, ecma119_image::partition_heads_per_cyl, ecma119_image::partition_l_table_pos, ecma119_image::partition_m_table_pos, iso_write_opts::partition_offset, ecma119_image::partition_root, iso_write_opts::partition_secs_per_head, ecma119_image::partition_secs_per_head, partprepend_writer_create(), ecma119_image::post_iso_part_pad, ecma119_image::prep_part_size, iso_write_opts::prep_partition, ecma119_image::pvd_size_is_total_size, ecma119_image::refcount, iso_write_opts::replace_dir_mode, ecma119_image::replace_dir_mode, iso_write_opts::replace_file_mode, ecma119_image::replace_file_mode, iso_write_opts::replace_gid, ecma119_image::replace_gid, iso_write_opts::replace_timestamps, ecma119_image::replace_timestamps, iso_write_opts::replace_uid, ecma119_image::replace_uid, Iso_Image::root, ecma119_image::rr_reloc_node, ecma119_image::sparc_core_src, ecma119_image::sys_area_already_written, iso_write_opts::system_area_data, ecma119_image::system_area_data, Iso_Image::system_area_data, iso_write_opts::system_area_options, ecma119_image::system_area_options, Iso_Image::system_area_options, iso_write_opts::tail_blocks, ecma119_image::th_attr, iso_write_opts::timestamp, ecma119_image::timestamp, ecma119_image::total_size, ecma119_image::tree_end_block, Iso_Image::truncate_length, Iso_Image::truncate_mode, iso_write_opts::uid, ecma119_image::uid, ecma119_image::vol_space_size, iso_write_opts::will_cancel, write_function(), write_head_part1(), write_head_part2(), Iso_Image_Writer::write_vol_desc, ecma119_image::writers, ecma119_image::wthread, ecma119_image::wthread_is_running, and zero_writer_create().

Referenced by iso_image_create_burn_source().

◆ ecma119_set_voldescr_times()

◆ ecma119_writer_compute_data_blocks()

◆ ecma119_writer_create()

◆ ecma119_writer_free_data()

static int ecma119_writer_free_data ( IsoImageWriter writer)
static

Definition at line 978 of file ecma119.c.

References ISO_SUCCESS.

Referenced by ecma119_writer_create().

◆ ecma119_writer_write_data()

static int ecma119_writer_write_data ( IsoImageWriter writer)
static

Write directory structure and Path Tables of the ECMA-119 tree. This happens eventually a second time for the duplicates which use addresses with partition offset.

Definition at line 936 of file ecma119.c.

References ecma119_image::bytes_written, ecma119_writer_write_dirs(), ecma119_image::eff_partition_offset, ISO_ASSERT_FAILURE, iso_msgs_submit(), ISO_SUCCESS, LIBISO_ALLOC_MEM, LIBISO_FREE_MEM, iso_write_opts::ms_block, ecma119_image::opts, iso_write_opts::partition_offset, Iso_Image_Writer::target, and ecma119_image::tree_end_block.

Referenced by ecma119_writer_create().

◆ ecma119_writer_write_dirs()

◆ ecma119_writer_write_vol_desc()

static int ecma119_writer_write_vol_desc ( IsoImageWriter writer)
static

Write the Primary Volume Descriptor (ECMA-119, 8.4)

Definition at line 536 of file ecma119.c.

References ecma119_pri_vol_desc::abstract_file_id, Iso_Image::abstract_file_id, ecma119_pri_vol_desc::app_use, ecma119_pri_vol_desc::application_id, Iso_Image::application_id, Iso_Image::application_use, Iso_Image::biblio_file_id, ecma119_pri_vol_desc::bibliographic_file_id, ecma119_pri_vol_desc::block_size, BLOCK_SIZE, ecma119_pri_vol_desc::copyright_file_id, Iso_Image::copyright_file_id, ecma119_pri_vol_desc::data_prep_id, Iso_Image::data_preparer_id, ecma119_set_voldescr_times(), ecma119_image::eff_partition_offset, ecma119_pri_vol_desc::file_structure_version, get_relaxed_vol_id(), Iso_Image::id, ecma119_image::image, ecma119_image::input_charset, ISO_ASSERT_FAILURE, iso_bb(), iso_lsb(), iso_msb(), iso_msg_debug(), iso_write(), ecma119_pri_vol_desc::l_path_table_pos, ecma119_image::l_path_table_pos, ecma119_pri_vol_desc::m_path_table_pos, ecma119_image::m_path_table_pos, ecma119_image::opts, ecma119_image::partition_l_table_pos, ecma119_image::partition_m_table_pos, ecma119_image::partition_root, ecma119_pri_vol_desc::path_table_size, ecma119_image::path_table_size, ecma119_pri_vol_desc::publisher_id, Iso_Image::publisher_id, ecma119_image::pvd_size_is_total_size, iso_write_opts::relaxed_vol_atts, ecma119_image::root, ecma119_pri_vol_desc::root_dir_record, ecma119_pri_vol_desc::std_identifier, str2a_char(), str2d_char(), strncpy_pad(), ecma119_pri_vol_desc::system_id, Iso_Image::system_id, Iso_Image_Writer::target, ecma119_image::total_size, ecma119_pri_vol_desc::vol_desc_type, ecma119_pri_vol_desc::vol_desc_version, ecma119_pri_vol_desc::vol_seq_number, ecma119_pri_vol_desc::vol_set_id, ecma119_pri_vol_desc::vol_set_size, ecma119_pri_vol_desc::vol_space_size, ecma119_image::vol_space_size, Iso_Image::volset_id, ecma119_pri_vol_desc::volume_id, Iso_Image::volume_id, and write_one_dir_record().

Referenced by ecma119_image_new(), ecma119_writer_create(), and write_head_part2().

◆ finish_libjte()

static int finish_libjte ( Ecma119Image target)
static

◆ get_relaxed_vol_id()

static char* get_relaxed_vol_id ( Ecma119Image t,
const char *  name 
)
static

◆ gpt_disk_guid_setup()

◆ hidden_filesrc_array()

static void hidden_filesrc_array ( Ecma119Image t,
int(*)(void *)  include_item,
IsoFileSrc **  filelist,
size_t *  size,
int  just_count 
)
static

◆ iso_conv_name_chars()

int iso_conv_name_chars ( IsoWriteOpts opts,
char *  name,
size_t  name_len,
char **  result,
size_t *  result_len,
int  flag 
)

Convert the characters in name from local charset to another charset or convert name to the representation of a particular ISO image name space. In the latter case it is assumed that the conversion result does not collide with any other converted name in the same directory. I.e. this function does not take into respect possible name changes due to collision handling.

Parameters
optsDefines output charset, UCS-2 versus UTF-16 for Joliet, and naming restrictions.
nameThe input text which shall be converted.
name_lenThe number of bytes in input text.
resultWill return the conversion result in case of success. Terminated by a trailing zero byte. Use free() to dispose it when no longer needed.
result_lenWill return the number of bytes in result (excluding trailing zero)
flagBitfield for control purposes. bit0-bit7= Name space 0= generic (output charset is used, no reserved characters, no length limits) 1= Rock Ridge (output charset is used) 2= Joliet (output charset gets overridden by UCS-2 or UTF-16) 3= ECMA-119 (output charset gets overridden by the dull ISO 9660 subset of ASCII) 4= HFS+ (output charset gets overridden by UTF-16BE) bit8= Treat input text as directory name (matters for Joliet and ECMA-119) bit9= Do not issue error messages bit15= Reverse operation (best to be done only with results of previous conversions)
Returns
1 means success, <0 means error
Since
1.3.6

Definition at line 4423 of file ecma119.c.

References ECMA119_DIR, ECMA119_FILE, iso_get_ecma119_name(), iso_get_hfsplus_name(), iso_get_joliet_name(), iso_get_local_charset(), iso_get_rr_name(), ISO_JOLIET_UCS2_WARN_MAX, ISO_SUCCESS, ISO_WRONG_ARG_VALUE, iso_write_opts::joliet_utf16, LIBISO_ALLOC_MEM, LIBISO_DIR, LIBISO_FILE, LIBISO_FREE_MEM, need_version_number(), iso_write_opts::omit_version_numbers, iso_write_opts::output_charset, strnconvl(), and ucslen().

Referenced by iso_impsysa_report(), and isoburn_conv_name_chars().

◆ iso_count_appended_partitions()

int iso_count_appended_partitions ( Ecma119Image target,
int *  first_partition,
int *  last_partition 
)

◆ iso_ecma119_to_filesrc_array()

IsoFileSrc** iso_ecma119_to_filesrc_array ( Ecma119Image t,
int(*)(void *)  include_item,
size_t *  size 
)

◆ iso_image_create_burn_source()

int iso_image_create_burn_source ( IsoImage image,
IsoWriteOpts opts,
struct burn_source **  burn_src 
)

Create a burn_source and a thread which immediately begins to generate the image. That burn_source can be used with libburn as a data source for a track. A copy of its public declaration in libburn.h can be found further below in this text.

If image generation shall be aborted by the application program, then the .cancel() method of the burn_source must be called to end the generation thread: burn_src->cancel(burn_src);

Parameters
imageThe image to write.
optsThe options for image generation. All needed data will be copied, so you can free the given struct once this function returns.
burn_srcLocation where the pointer to the burn_source will be stored
Returns
1 on success, < 0 on error
Since
0.6.2

Definition at line 3427 of file ecma119.c.

References iso_write_opts::allow_deep_paths, bs_cancel(), bs_free_data(), bs_get_size(), bs_read(), bs_set_size(), burn_source::cancel, burn_source::data, ecma119_image_new(), burn_source::free_data, burn_source::get_size, ISO_NULL_POINTER, ISO_OUT_OF_MEM, ISO_SUCCESS, make_reloc_dir_if_needed(), burn_source::read, burn_source::read_xt, burn_source::refcount, burn_source::set_size, and burn_source::version.

Referenced by isoburn_prepare_disc_aux().

◆ iso_interval_reader_destroy()

int iso_interval_reader_destroy ( struct iso_interval_reader **  ivr,
int  flag 
)

Dispose an interval reader object.

Parameters
ivrThe reader object to be disposed. *ivr will be set to NULL.
flagUnused yet. Submit 0.
Returns
ISO_SUCCESS or error (which is < 0)
Since
1.4.0

Definition at line 1738 of file ecma119.c.

References iso_data_source::close, iso_interval_reader::fd, iso_interval_reader::image, Iso_Image::import_src, ISO_SUCCESS, LIBISO_FREE_MEM, iso_interval_reader::path, iso_interval_reader::src_is_open, and iso_interval_reader::zeroizers.

Referenced by compute_partition_size(), iso_interval_reader_new(), iso_interval_reader_start_size(), iso_write_partition_file(), Xorriso_set_system_area(), and Xorriso_set_system_area_path().

◆ iso_interval_reader_keep()

◆ iso_interval_reader_new()

int iso_interval_reader_new ( IsoImage img,
char *  path,
struct iso_interval_reader **  ivr,
off_t *  byte_count,
int  flag 
)

Create an interval reader object.

Parameters
imgThe IsoImage object which can provide the "imported_iso" data source.
pathThe interval reader description string. See above.
ivrReturns in case of success a pointer to the created object. Dispose it by iso_interval_reader_destroy() when no longer needed.
byte_countReturns in case of success the number of bytes in the interval.
flagbit0= tolerate (src == NULL) with "imported_iso". (Will immediately cause eof of interval input.)
Returns
ISO_SUCCESS or error (which is < 0)
Since
1.4.0

Definition at line 1760 of file ecma119.c.

References iso_interval_reader::apm_block_size, iso_interval_reader::end_byte, iso_interval_reader::eof, iso_interval_reader::fd, iso_interval_reader::flags, iso_interval_reader::image, Iso_Image::import_src, iso_interval_reader::initialized, iso_interval_reader::is_block_aligned, ISO_BAD_PARTITION_FILE, iso_interval_reader_destroy(), iso_ivr_parse(), iso_msg_submit(), ISO_NO_KEPT_DATA_SRC, ISO_SUCCESS, LIBISO_ALLOC_MEM, iso_interval_reader::num_zeroizers, iso_interval_reader::path, iso_interval_reader::pending_read_bytes, iso_interval_reader::pending_read_pt, iso_interval_reader::read_count, iso_interval_reader::source_pt, iso_interval_reader::src_is_open, iso_interval_reader::start_byte, and iso_interval_reader::zeroizers.

Referenced by compute_partition_size(), iso_interval_reader_start_size(), iso_write_partition_file(), Xorriso_set_system_area(), and Xorriso_set_system_area_path().

◆ iso_interval_reader_read()

int iso_interval_reader_read ( struct iso_interval_reader ivr,
uint8_t *  buf,
int *  buf_fill,
int  flag 
)

Read the next block of 2048 bytes from an interval reader object. If end-of-input happens, the interval will get filled up with 0 bytes.

Parameters
ivrThe object to read from.
bufPointer to memory for filling in at least 2048 bytes.
buf_fillWill in case of success return the number of valid bytes. If this is smaller than 2048, then end-of-interval has occurred.
flagUnused yet. Submit 0.
Returns
ISO_SUCCESS if data were read, 0 if not, < 0 if error
Since
1.4.0

Definition at line 1910 of file ecma119.c.

References BLOCK_SIZE, iso_interval_reader::cur_block, iso_interval_reader::end_byte, iso_interval_reader::eof, iso_interval_reader::fd, iso_interval_reader::flags, iso_interval_reader::image, Iso_Image::import_src, iso_interval_reader::initialized, iso_interval_reader::is_block_aligned, ISO_BAD_PARTITION_FILE, iso_error_get_severity(), ISO_INTVL_READ_PROBLEM, iso_ivr_zeroize(), iso_msg_submit(), ISO_SUCCESS, iso_data_source::open, iso_interval_reader::pending_read_bytes, iso_interval_reader::pending_read_pt, iso_data_source::read_block, iso_interval_reader::read_buf, iso_interval_reader::read_count, iso_interval_reader::source_pt, iso_interval_reader::src_is_open, and iso_interval_reader::start_byte.

Referenced by iso_write_partition_file(), and Xorriso_set_system_area().

◆ iso_interval_reader_start_size()

int iso_interval_reader_start_size ( Ecma119Image t,
char *  path,
off_t *  start_byte,
off_t *  byte_count,
int  flag 
)

◆ iso_ivr_next_comp()

static int iso_ivr_next_comp ( char *  read_pt,
char **  next_pt,
int  flag 
)
static

Definition at line 1594 of file ecma119.c.

Referenced by iso_ivr_parse().

◆ iso_ivr_parse()

◆ iso_ivr_parse_interval()

static int iso_ivr_parse_interval ( char *  start_pt,
char *  end_pt,
off_t *  start_byte,
off_t *  end_byte,
int  flag 
)
static

◆ iso_ivr_parse_zeroizers()

static int iso_ivr_parse_zeroizers ( struct iso_interval_reader ivr,
char *  pathpt,
char *  end_pt,
int  flag 
)
static

◆ iso_ivr_read_number()

static int iso_ivr_read_number ( char *  start_pt,
char *  end_pt,
off_t *  result,
int  flag 
)
static

Definition at line 1608 of file ecma119.c.

References ISO_MALFORMED_READ_INTVL, iso_msg_submit(), and iso_scanf_io_size().

Referenced by iso_ivr_parse_interval().

◆ iso_ivr_zeroize()

◆ iso_tell_max_part_range()

void iso_tell_max_part_range ( IsoWriteOpts opts,
int *  first_partition,
int *  last_partition,
int  flag 
)

◆ iso_write()

◆ iso_write_opts_attach_jte()

int iso_write_opts_attach_jte ( IsoWriteOpts opts,
void *  libjte_handle 
)

Associate a libjte environment object to the upcoming write run. libjte implements Jigdo Template Extraction as of Steve McIntyre and Richard Atterer. The call will fail if no libjte support was enabled at compile time.

Parameters
optsThe option set to be manipulated.
libjte_handlePointer to a struct libjte_env e.g. created by libjte_new(). It must stay existent from the start of image generation by iso_image_create_burn_source() until the write thread has ended. This can be inquired by iso_image_generator_is_running(). In order to keep the libisofs API identical with and without libjte support the parameter type is (void *).
Returns
ISO_SUCCESS or error
Since
0.6.38

Definition at line 4240 of file ecma119.c.

References ISO_LIBJTE_NOT_ENABLED, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_clone()

◆ iso_write_opts_detach_jte()

int iso_write_opts_detach_jte ( IsoWriteOpts opts,
void **  libjte_handle 
)

Remove eventual association to a libjte environment handle. The call will fail if no libjte support was enabled at compile time.

Parameters
optsThe option set to be manipulated.
libjte_handleIf not submitted as NULL, this will return the previously set libjte handle.
Returns
ISO_SUCCESS or error
Since
0.6.38

Definition at line 4254 of file ecma119.c.

References ISO_LIBJTE_NOT_ENABLED, and ISO_SUCCESS.

◆ iso_write_opts_free()

◆ iso_write_opts_get_data_start()

int iso_write_opts_get_data_start ( IsoWriteOpts opts,
uint32_t *  data_start,
int  flag 
)

Inquire the start address of the file data blocks after having used IsoWriteOpts with iso_image_create_burn_source().

Parameters
optsThe option set that was used when starting image creation
data_startReturns the logical block address if it is already valid
flagReserved for future usage, set to 0.
Returns
1 indicates valid data_start, <0 indicates invalid data_start
Since
0.6.16

Definition at line 4161 of file ecma119.c.

References iso_write_opts::data_start_lba, ISO_ERROR, and ISO_SUCCESS.

Referenced by isoburn_prepare_disc_aux().

◆ iso_write_opts_new()

int iso_write_opts_new ( IsoWriteOpts **  opts,
int  profile 
)

Creates an IsoWriteOpts for writing an image. You should set the options desired with the correspondent setters.

Options by default are determined by the selected profile. Fifo size is set by default to 2 MB.

Parameters
optsPointer to the location where the newly created IsoWriteOpts will be stored. You should free it with iso_write_opts_free() when no more needed.
profileDefault profile for image creation. For now the following values are defined: —> 0 [BASIC] No extensions are enabled, and ISO level is set to 1. Only suitable for usage for very old and limited systems (like MS-DOS), or by a start point from which to set your custom options. —> 1 [BACKUP] POSIX compatibility for backup. Simple settings, ISO level is set to 3 and RR extensions are enabled. Useful for backup purposes. Note that ACL and xattr are not enabled by default. If you enable them, expect them not to show up in the mounted image. They will have to be retrieved by libisofs applications like xorriso. —> 2 [DISTRIBUTION] Setting for information distribution. Both RR and Joliet are enabled to maximize compatibility with most systems. Permissions are set to default values, and timestamps to the time of recording.
Returns
1 success, < 0 error
Since
0.6.2

Definition at line 3519 of file ecma119.c.

References iso_write_opts::allow_dir_id_ext, iso_write_opts::always_gmt, iso_write_opts::apm_block_size, iso_write_opts::appended_as_apm, iso_write_opts::appended_as_gpt, iso_write_opts::appended_part_flags, iso_write_opts::appended_part_gpt_flags, iso_write_opts::appended_part_type_guids, iso_write_opts::appended_part_types, iso_write_opts::appended_partitions, iso_write_opts::ascii_disc_label, iso_write_opts::efi_boot_part_flag, iso_write_opts::efi_boot_partition, iso_write_opts::fat, iso_write_opts::fifo_size, iso_write_opts::gpt_disk_guid, iso_write_opts::gpt_disk_guid_mode, iso_write_opts::hfsp_block_size, iso_write_opts::hfsp_serial_number, iso_write_opts::hfsplus, ISO_ASSERT_FAILURE, iso_write_opts::iso_gpt_flag, iso_write_opts::iso_gpt_type_guid, iso_write_opts::iso_level, ISO_MAX_PARTITIONS, iso_write_opts::iso_mbr_part_type, ISO_NULL_POINTER, ISO_OUT_OF_MEM, ISO_SUCCESS, ISO_WRONG_ARG_VALUE, iso_write_opts::joliet, iso_write_opts::joliet_utf16, iso_write_opts::old_empty, iso_write_opts::part_like_isohybrid, iso_write_opts::partition_heads_per_cyl, iso_write_opts::partition_offset, iso_write_opts::partition_secs_per_head, iso_write_opts::prep_part_flag, iso_write_opts::prep_partition, iso_write_opts::replace_dir_mode, iso_write_opts::replace_file_mode, iso_write_opts::replace_gid, iso_write_opts::replace_timestamps, iso_write_opts::replace_uid, iso_write_opts::rockridge, iso_write_opts::rr_reloc_dir, iso_write_opts::rr_reloc_flags, iso_write_opts::scdbackup_tag_written, iso_write_opts::sort_files, iso_write_opts::system_area_data, iso_write_opts::system_area_options, iso_write_opts::system_area_size, iso_write_opts::tail_blocks, iso_write_opts::untranslated_name_len, iso_write_opts::vol_creation_time, iso_write_opts::vol_effective_time, iso_write_opts::vol_expiration_time, iso_write_opts::vol_modification_time, iso_write_opts::vol_uuid, and iso_write_opts::will_cancel.

Referenced by iso_impsysa_report(), iso_write_opts_clone(), isoburn_conv_name_chars(), isoburn_igopt_set_untranslated_name_len(), and isoburn_prepare_disc_aux().

◆ iso_write_opts_set_aaip()

int iso_write_opts_set_aaip ( IsoWriteOpts opts,
int  enable 
)

Control writing of AAIP information for ACL and xattr. For importing ACL and xattr when inserting nodes from external filesystems (e.g. the local POSIX filesystem) see iso_image_set_ignore_aclea(). For loading of this information from images see iso_read_opts_set_no_aaip().

Parameters
optsThe option set to be manipulated.
enable1 = write AAIP information from nodes into the image 0 = do not write AAIP information into the image All other values are reserved.
Since
0.6.14

Definition at line 3764 of file ecma119.c.

References iso_write_opts::aaip, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_aaip_susp_1_10()

int iso_write_opts_set_aaip_susp_1_10 ( IsoWriteOpts opts,
int  oldvers 
)

Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. I.e. without announcing it by an ER field and thus without the need to precede the RRIP fields and the AAIP field by ES fields. This saves 5 to 10 bytes per file and might avoid problems with readers which dislike ER fields other than the ones for RRIP. On the other hand, SUSP 1.12 frowns on such unannounced extensions and prescribes ER and ES. It does this since the year 1994.

In effect only if above iso_write_opts_set_aaip() enables writing of AAIP.

Since
0.6.14

Definition at line 3934 of file ecma119.c.

References iso_write_opts::aaip_susp_1_10, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_7bit_ascii()

int iso_write_opts_set_allow_7bit_ascii ( IsoWriteOpts opts,
int  allow 
)

If not iso_write_opts_set_allow_full_ascii() is set to 1: Allow all 7-bit characters that would be allowed by allow_full_ascii, but map lowercase to uppercase if iso_write_opts_set_allow_lowercase() is not set to 1.

Parameters
opts
The option set to be manipulated.
allowIf not zero, then allow what is described above.
Since
1.2.2

Definition at line 3870 of file ecma119.c.

References iso_write_opts::allow_7bit_ascii, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_deep_paths()

int iso_write_opts_set_allow_deep_paths ( IsoWriteOpts opts,
int  allow 
)

Allow ISO-9660 directory hierarchy to be deeper than 8 levels. This breaks ECMA-119 specification. Use with caution.

Since
0.6.2

Definition at line 3816 of file ecma119.c.

References iso_write_opts::allow_deep_paths, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_dir_id_ext()

int iso_write_opts_set_allow_dir_id_ext ( IsoWriteOpts opts,
int  allow 
)

Convert directory names for ECMA-119 similar to other file names, but do not force a dot or add a version number. This violates ECMA-119 by allowing one "." and especially ISO level 1 by allowing DOS style 8.3 names rather than only 8 characters. (mkisofs and its clones seem to do this violation.)

Parameters
optsThe option set to be manipulated.
allow1= allow dots , 0= disallow dots and convert them
Returns
1 success, < 0 error
Since
1.0.0

Definition at line 3798 of file ecma119.c.

References iso_write_opts::allow_dir_id_ext, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_full_ascii()

int iso_write_opts_set_allow_full_ascii ( IsoWriteOpts opts,
int  allow 
)

Allow all 8-bit characters to appear on an ISO-9660 filename. Note that "/" and 0x0 characters are never allowed, even in RR names. This breaks ECMA-119 specification. Use with caution.

Since
0.6.2

Definition at line 3861 of file ecma119.c.

References iso_write_opts::allow_full_ascii, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_longer_paths()

int iso_write_opts_set_allow_longer_paths ( IsoWriteOpts opts,
int  allow 
)

Allow path in the ISO-9660 tree to have more than 255 characters. This breaks ECMA-119 specification. Use with caution.

Since
0.6.2

Definition at line 3825 of file ecma119.c.

References iso_write_opts::allow_longer_paths, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_allow_lowercase()

int iso_write_opts_set_allow_lowercase ( IsoWriteOpts opts,
int  allow 
)

Allow lowercase characters in ISO-9660 filenames. By default, only uppercase characters, numbers and a few other characters are allowed. This breaks ECMA-119 specification. Use with caution. If lowercase is not allowed then those letters get mapped to uppercase letters.

Since
0.6.2

Definition at line 3852 of file ecma119.c.

References iso_write_opts::allow_lowercase, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_always_gmt()

int iso_write_opts_set_always_gmt ( IsoWriteOpts opts,
int  gmt 
)

Whether to always record timestamps in GMT.

By default, libisofs stores local time information on image. You can set this to always store timestamps converted to GMT. This prevents any discrimination of the timezone of the image preparer by the image reader.

It is useful if you want to hide your timezone, or you live in a timezone that can't be represented in ECMA-119. These are timezones with an offset from GMT greater than +13 hours, lower than -12 hours, or not a multiple of 15 minutes. Negative timezones (west of GMT) can trigger bugs in some operating systems which typically appear in mounted ISO images as if the timezone shift from GMT was applied twice (e.g. in New York 22:36 becomes 17:36).

Since
0.6.2

Definition at line 4104 of file ecma119.c.

References iso_write_opts::always_gmt, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_appendable()

int iso_write_opts_set_appendable ( IsoWriteOpts opts,
int  append 
)

Set the type of image creation in case there was already an existing image imported. Libisofs supports two types of creation: stand-alone and appended.

A stand-alone image is an image that does not need the old image any more for being mounted by the operating system or imported by libisofs. It may be written beginning with byte 0 of optical media or disk file objects. There will be no distinction between files from the old image and those which have been added by the new image generation.

On the other side, an appended image is not self contained. It may refer to files that stay stored in the imported existing image. This usage model is inspired by CD multi-session. It demands that the appended image is finally written to the same media or disk file as the imported image at an address behind the end of that imported image. The exact address may depend on media peculiarities and thus has to be announced by the application via iso_write_opts_set_ms_block(). The real address where the data will be written is under control of the consumer of the struct burn_source which takes the output of libisofs image generation. It may be the one announced to libisofs or an intermediate one. Nevertheless, the image will be readable only at the announced address.

If you have not imported a previous image by iso_image_import(), then the image will always be a stand-alone image, as there is no previous data to refer to.

Parameters
optsThe option set to be manipulated.
append1 to create an appended image, 0 for an stand-alone one.
Since
0.6.2

Definition at line 4122 of file ecma119.c.

References iso_write_opts::appendable, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_appended_as_apm()

int iso_write_opts_set_appended_as_apm ( IsoWriteOpts opts,
int  apm 
)

Control whether partitions created by iso_write_opts_set_partition_img() are to be represented in Apple Partition Map.

Parameters
optsThe option set to be manipulated.
apm0= do not represent appended partitions in APM 1= represent in APM, even if not iso_write_opts_set_part_like_isohybrid() enables it and no other APM partitions emerge.
Returns
ISO_SUCCESS or error
Since
1.4.4

Definition at line 4340 of file ecma119.c.

References iso_write_opts::appended_as_apm, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_appended_as_gpt()

int iso_write_opts_set_appended_as_gpt ( IsoWriteOpts opts,
int  gpt 
)

Control whether partitions created by iso_write_opts_set_partition_img() are to be represented in MBR or as GPT partitions.

Parameters
optsThe option set to be manipulated.
gpt0= represent as MBR partition; as GPT only if other GPT partitions are present 1= represent as GPT partition and cause protective MBR with a single partition which covers the whole output data. This may fail if other settings demand MBR partitions.
Returns
ISO_SUCCESS or error
Since
1.4.0

Definition at line 4334 of file ecma119.c.

References iso_write_opts::appended_as_gpt, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_default_dir_mode()

int iso_write_opts_set_default_dir_mode ( IsoWriteOpts opts,
mode_t  dir_mode 
)

Set the mode to use on dirs when you set the replace_mode of dirs to 2.

See also
iso_write_opts_set_replace_mode
Since
0.6.2

Definition at line 4047 of file ecma119.c.

References iso_write_opts::dir_mode, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_default_file_mode()

int iso_write_opts_set_default_file_mode ( IsoWriteOpts opts,
mode_t  file_mode 
)

Set the mode to use on files when you set the replace_mode of files to 2.

See also
iso_write_opts_set_replace_mode
Since
0.6.2

Definition at line 4056 of file ecma119.c.

References iso_write_opts::file_mode, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_default_gid()

int iso_write_opts_set_default_gid ( IsoWriteOpts opts,
gid_t  gid 
)

Set the gid to use when you set the replace_gid to 2.

See also
iso_write_opts_set_replace_mode
Since
0.6.2

Definition at line 4074 of file ecma119.c.

References iso_write_opts::gid, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_default_timestamp()

int iso_write_opts_set_default_timestamp ( IsoWriteOpts opts,
time_t  timestamp 
)

Set the timestamp to use when you set the replace_timestamps to 2.

See also
iso_write_opts_set_replace_timestamps
Since
0.6.2

Definition at line 4095 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::timestamp.

◆ iso_write_opts_set_default_uid()

int iso_write_opts_set_default_uid ( IsoWriteOpts opts,
uid_t  uid 
)

Set the uid to use when you set the replace_uid to 2.

See also
iso_write_opts_set_replace_mode
Since
0.6.2

Definition at line 4065 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::uid.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_dir_rec_mtime()

int iso_write_opts_set_dir_rec_mtime ( IsoWriteOpts opts,
int  allow 
)

Store as ECMA-119 Directory Record timestamp the mtime of the source node rather than the image creation time. If storing of mtime is enabled, then the settings of iso_write_opts_set_replace_timestamps() apply. (replace==1 will revoke, replace==2 will override mtime by iso_write_opts_set_default_timestamp().

Since version 1.2.0 this may apply also to Joliet and ISO 9660:1999. To reduce the probability of unwanted behavior changes between pre-1.2.0 and post-1.2.0, the bits for Joliet and ISO 9660:1999 also enable ECMA-119. The hopefully unlikely bit14 may then be used to disable mtime for ECMA-119.

To enable mtime for all three directory trees, submit 7. To disable this feature completely, submit 0.

Parameters
opts
The option set to be manipulated.
allowIf this parameter is negative, then mtime is enabled only for ECMA-119. With positive numbers, the parameter is interpreted as bit field : bit0= enable mtime for ECMA-119 bit1= enable mtime for Joliet and ECMA-119 bit2= enable mtime for ISO 9660:1999 and ECMA-119 bit14= disable mtime for ECMA-119 although some of the other bits would enable it
Since
1.2.0 Before version 1.2.0 this applied only to ECMA-119 : 0 stored image creation time in ECMA-119 tree. Any other value caused storing of mtime. Joliet and ISO 9660:1999 always stored the image creation time.
0.6.12

Definition at line 3943 of file ecma119.c.

References iso_write_opts::dir_rec_mtime, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_disc_label()

int iso_write_opts_set_disc_label ( IsoWriteOpts opts,
char *  label 
)

Set a name for the system area. This setting is ignored unless system area type 3 "SUN Disk Label" is in effect by iso_write_opts_set_system_area(). In this case it will replace the default text at the start of the image: "CD-ROM Disc with Sun sparc boot created by libisofs"

Parameters
optsThe option set to be manipulated.
labelA text of up to 128 characters.
Returns
ISO_SUCCESS or error
Since
0.6.40

Definition at line 4369 of file ecma119.c.

References iso_write_opts::ascii_disc_label, ISO_DISC_LABEL_SIZE, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_efi_bootp()

int iso_write_opts_set_efi_bootp ( IsoWriteOpts opts,
char *  image_path,
int  flag 
)

Copy a data file from the local filesystem into the emerging ISO image. Mark it by an GPT partition entry as EFI System partition, and also cause protective GPT partition entries before and after the partition. GPT = Globally Unique Identifier Partition Table

This feature may collide with data submitted by iso_write_opts_set_system_area() and with settings made by el_torito_set_isolinux_options() It is compatible with HFS+/FAT production by storing the EFI partition before the start of the HFS+/FAT partition. The GPT overwrites byte 0x0200 to 0x03ff of the system area and all further bytes above 0x0800 which are not used by an Apple Partition Map.

Parameters
optsThe option set to be manipulated.
image_pathFile address in the local file system or instructions for interval reader. See flag bit0. NULL revokes production of the EFI boot partition.
flagbit0= The path contains instructions for the interval reader See above.
Since
1.4.0 All other bits are reserved for future usage. Set them to 0.
Returns
ISO_SUCCESS or error
Since
1.2.4

Definition at line 4289 of file ecma119.c.

References iso_write_opts::efi_boot_part_flag, iso_write_opts::efi_boot_partition, ISO_OUT_OF_MEM, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_fat()

int iso_write_opts_set_fat ( IsoWriteOpts opts,
int  enable 
)

Production of FAT32 is not implemented yet. This call exists only as preparation for implementation.

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

Parameters
optsThe option set to be manipulated.
enable1 to enable FAT32 extension, 0 to not add FAT metadata
Returns
1 success, < 0 error
Since
1.2.4

Definition at line 3737 of file ecma119.c.

References iso_write_opts::fat, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_fifo_size()

int iso_write_opts_set_fifo_size ( IsoWriteOpts opts,
size_t  fifo_size 
)

Set the size, in number of blocks, of the ring buffer used between the writer thread and the burn_source. You have to provide at least a 32 blocks buffer. Default value is set to 2MB, if that is ok for you, you don't need to call this function.

Since
0.6.2

Definition at line 4149 of file ecma119.c.

References iso_write_opts::fifo_size, ISO_NULL_POINTER, ISO_SUCCESS, and ISO_WRONG_ARG_VALUE.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_gpt_guid()

int iso_write_opts_set_gpt_guid ( IsoWriteOpts opts,
uint8_t  guid[16],
int  mode 
)

Control whether the emerging GPT gets a pseudo-randomly generated disk GUID or whether it gets a user supplied GUID. The partition GUIDs will be generated in a reproducible way by exoring the little-endian 32 bit partition number with the disk GUID beginning at byte offset 9.

Parameters
optsThe option set to be manipulated.
guid16 bytes of user supplied GUID. Readily byte-swapped from the text form as prescribed by UEFI specs: 4 byte, 2 byte, 2 byte as little-endian. 2 byte, 6 byte as big-endian. The upper 4 bit of guid[7] should bear the value 4 to express the RFC 4122 version 4. Bit 7 of byte[8] should be set to 1 and bit 6 be set to 0, in order to express the RFC 4122 variant of UUID, where version 4 means "pseudo-random uuid".
mode0 = ignore parameter guid and produce the GPT disk GUID by a pseudo-random algorithm. This is the default setting. 1 = use parameter guid as GPT disk GUID 2 = ignore parameter guid and derive the GPT disk GUID from parameter vol_uuid of iso_write_opts_set_pvd_times(). The 16 bytes of vol_uuid get copied and bytes 7, 8 get their upper bits changed to comply to RFC 4122 and UEFI. Error ISO_GPT_NO_VOL_UUID will occur if image production begins before vol_uuid was set.
Returns
ISO_SUCCESS or ISO_BAD_GPT_GUID_MODE
Since
1.4.6

Definition at line 4396 of file ecma119.c.

References iso_write_opts::gpt_disk_guid, iso_write_opts::gpt_disk_guid_mode, ISO_BAD_GPT_GUID_MODE, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_hardlinks()

int iso_write_opts_set_hardlinks ( IsoWriteOpts opts,
int  enable 
)

Control generation of non-unique inode numbers for the emerging image. Inode numbers get written as "file serial number" with PX entries as of RRIP-1.12. They may mark families of hardlinks. RRIP-1.10 prescribes a PX entry without file serial number.If not overridden by iso_write_opts_set_rrip_1_10_px_ino() there will be no file serial number written into RRIP-1.10 images.

Inode number generation does not affect IsoNode objects which imported their inode numbers from the old ISO image (see iso_read_opts_set_new_inos()) and which have not been altered since import. It rather applies to IsoNode objects which were newly added to the image, or to IsoNode which brought no inode number from the old image, or to IsoNode where certain properties have been altered since image import.

If two IsoNode are found with same imported inode number but differing properties, then one of them will get assigned a new unique inode number. I.e. the hardlink relation between both IsoNode objects ends.

Parameters
optsThe option set to be manipulated.
enable1 = Collect IsoNode objects which have identical data sources and properties. 0 = Generate unique inode numbers for all IsoNode objects which do not have a valid inode number from an imported ISO image. All other values are reserved.
Since
0.6.20

Definition at line 3755 of file ecma119.c.

References iso_write_opts::hardlinks, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_hfsp_block_size()

int iso_write_opts_set_hfsp_block_size ( IsoWriteOpts opts,
int  hfsp_block_size,
int  apm_block_size 
)

Set the block size for Apple Partition Map and for HFS+.

Parameters
optsThe option set to be manipulated.
hfsp_block_sizeThe allocation block size to be used by the HFS+ filesystem. 0, 512, or 2048
apm_block_sizeThe block size to be used for and within the Apple Partition Map. 0, 512, or 2048. Size 512 is not compatible with options which produce GPT.
Returns
1 success, < 0 error
Since
1.2.4

Definition at line 4383 of file ecma119.c.

References iso_write_opts::apm_block_size, iso_write_opts::hfsp_block_size, ISO_BOOT_HFSP_BAD_BSIZE, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_hfsp_serial_number()

int iso_write_opts_set_hfsp_serial_number ( IsoWriteOpts opts,
uint8_t  serial_number[8] 
)

Supply a serial number for the HFS+ extension of the emerging image.

Parameters
optsThe option set to be manipulated.
serial_number8 bytes which should be unique to the image. If all bytes are 0, then the serial number will be generated as random number by libisofs. This is the default setting.
Returns
1 success, < 0 error
Since
1.2.4

Definition at line 4376 of file ecma119.c.

References iso_write_opts::hfsp_serial_number, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_hfsplus()

int iso_write_opts_set_hfsplus ( IsoWriteOpts opts,
int  enable 
)

Whether to add a HFS+ filesystem to the image which points to the same file content as the other directory trees. It will get marked by an Apple Partition Map in the System Area of the ISO image. This may collide with data submitted by iso_write_opts_set_system_area() and with settings made by el_torito_set_isolinux_options() The first 8 bytes of the System Area get overwritten by {0x45, 0x52, 0x08 0x00, 0xeb, 0x02, 0xff, 0xff} which can be executed as x86 machine code without negative effects. So if an MBR gets combined with this feature, then its first 8 bytes should contain no essential commands. The next blocks of 2 KiB in the System Area will be occupied by APM entries. The first one covers the part of the ISO image before the HFS+ filesystem metadata. The second one marks the range from HFS+ metadata to the end of file content data. If more ISO image data follow, then a third partition entry gets produced. Other features of libisofs might cause the need for more APM entries.

Parameters
optsThe option set to be manipulated.
enable1 to enable HFS+ extension, 0 to not add HFS+ metadata and APM
Returns
1 success, < 0 error
Since
1.2.4

Definition at line 3728 of file ecma119.c.

References iso_write_opts::hfsplus, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_iso1999()

int iso_write_opts_set_iso1999 ( IsoWriteOpts opts,
int  enable 
)

Whether to use newer ISO-9660:1999 version.

This is the second version of ISO-9660. It allows longer filenames and has less restrictions than old ISO-9660. However, nobody is using it so there are no much reasons to enable this.

Since
0.6.2

Definition at line 3746 of file ecma119.c.

References iso_write_opts::iso1999, ISO_NULL_POINTER, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_iso_level()

int iso_write_opts_set_iso_level ( IsoWriteOpts opts,
int  level 
)

Set the ISO-9960 level to write at.

Parameters
optsThe option set to be manipulated.
level-> 1 for higher compatibility with old systems. With this level filenames are restricted to 8.3 characters. -> 2 to allow up to 31 filename characters. -> 3 to allow files greater than 4GB
Returns
1 success, < 0 error
Since
0.6.2

Definition at line 3698 of file ecma119.c.

References iso_write_opts::iso_level, ISO_NULL_POINTER, ISO_SUCCESS, and ISO_WRONG_ARG_VALUE.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_iso_mbr_part_type()

int iso_write_opts_set_iso_mbr_part_type ( IsoWriteOpts opts,
int  part_type 
)

Set the partition type of the MBR partition which represents the ISO filesystem or at least protects it. This is without effect if no such partition emerges by other settings or if the partition type is prescribed mandatorily like 0xee for GPT protective MBR or 0x96 for CHRP.

Parameters
optsThe option set to be manipulated.
part_type0x00 to 0xff as desired partition type. Any other value (e.g. -1) enables the default types of the various occasions.
Returns
ISO_SUCCESS or error
Since
1.4.8

Definition at line 4352 of file ecma119.c.

References iso_write_opts::iso_mbr_part_type, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_iso_type_guid()

int iso_write_opts_set_iso_type_guid ( IsoWriteOpts opts,
uint8_t  guid[16],
int  valid 
)

Set the GPT Type GUID for the partition which represents the ISO 9660 filesystem, if such a partition emerges in GPT.

Parameters
optsThe option set to be manipulated.
guid16 bytes of user supplied GUID. Readily byte-swapped from the text form as prescribed by UEFI specs: 4 byte, 2 byte, 2 byte as little-endian. 2 byte, 6 byte as big-endian.
validSet to 1 to make this Type GUID valid. Set to 0 in order to invalidate a previously made setting. In this case the setting of iso_write_opts_set_iso_mbr_part_type() or its default will get into effect.
Returns
ISO_SUCCESS or error
Since
1.5.2

Definition at line 4360 of file ecma119.c.

References iso_write_opts::iso_gpt_flag, iso_write_opts::iso_gpt_type_guid, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_joliet()

int iso_write_opts_set_joliet ( IsoWriteOpts opts,
int  enable 
)

Whether to add the non-standard Joliet extension to the image.

This extensions are heavily used in Microsoft Windows systems, so if you plan to use your disc on such a system you should add this extension. Usage of Joliet supplies longer filesystem length (up to 64 unicode characters), and deeper directory structure.

Parameters
optsThe option set to be manipulated.
enable1 to enable Joliet extension, 0 to not add them
Returns
1 success, < 0 error
Since
0.6.2

Definition at line 3719 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::joliet.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_joliet_long_names()

int iso_write_opts_set_joliet_long_names ( IsoWriteOpts opts,
int  allow 
)

Allow leaf names in the Joliet tree to have up to 103 characters. Normal limit is 64. This breaks Joliet specification. Use with caution.

Since
1.0.6

Definition at line 3898 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::joliet_long_names.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_joliet_longer_paths()

int iso_write_opts_set_joliet_longer_paths ( IsoWriteOpts opts,
int  allow 
)

Allow paths in the Joliet tree to have more than 240 characters. This breaks Joliet specification. Use with caution.

Since
0.6.2

Definition at line 3889 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::joliet_longer_paths.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_joliet_utf16()

int iso_write_opts_set_joliet_utf16 ( IsoWriteOpts opts,
int  allow 
)

Use character set UTF-16BE with Joliet, which is a superset of the actually prescribed character set UCS-2. This breaks Joliet specification with exotic characters which would elsewise be mapped to underscore '_'. Use with caution.

Since
1.3.6

Definition at line 3907 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::joliet_utf16.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_max_37_char_filenames()

int iso_write_opts_set_max_37_char_filenames ( IsoWriteOpts opts,
int  allow 
)

Allow a single file or directory identifier to have up to 37 characters. This is larger than the 31 characters allowed by ISO level 2, and the extra space is taken from the version number, so this also forces omit_version_numbers. This breaks ECMA-119 specification and could lead to buffer overflow problems on old systems. Use with caution.

Since
0.6.2

Definition at line 3834 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::max_37_char_filenames.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_ms_block()

int iso_write_opts_set_ms_block ( IsoWriteOpts opts,
uint32_t  ms_block 
)

Set the start block of the image. It is supposed to be the lba where the first block of the image will be written on disc. All references inside the ISO image will take this into account, thus providing a mountable image.

For appendable images, that are written to a new session, you should pass here the lba of the next writable address on disc.

In stand alone images this is usually 0. However, you may want to provide a different ms_block if you don't plan to burn the image in the first session on disc, such as in some CD-Extra disc whether the data image is written in a new session after some audio tracks.

Since
0.6.2

Definition at line 4131 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::ms_block.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_no_force_dots()

int iso_write_opts_set_no_force_dots ( IsoWriteOpts opts,
int  no 
)

ISO-9660 forces filenames to have a ".", that separates file name from extension. libisofs adds it if original filename doesn't has one. Set this to 1 to prevent this behavior. This breaks ECMA-119 specification. Use with caution.

Parameters
optsThe option set to be manipulated.
nobit0= no forced dot with ECMA-119 bit1= no forced dot with Joliet (
Since
0.6.30)
0.6.2

Definition at line 3843 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::no_force_dots.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_old_empty()

int iso_write_opts_set_old_empty ( IsoWriteOpts opts,
int  enable 
)

Use this only if you need to reproduce a suboptimal behavior of older versions of libisofs. They used address 0 for links and device files, and the address of the Volume Descriptor Set Terminator for empty data files. New versions let symbolic links, device files, and empty data files point to a dedicated block of zero-bytes after the end of the directory trees. (Single-pass reader libarchive needs to see all directory info before processing any data files.)

Parameters
optsThe option set to be manipulated.
enable1 = use the suboptimal block addresses in the range of 0 to 115. 0 = use the address of a block after the directory tree. (Default)
Since
1.0.2

Definition at line 3773 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::old_empty.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_omit_version_numbers()

int iso_write_opts_set_omit_version_numbers ( IsoWriteOpts opts,
int  omit 
)

Omit the version number (";1") at the end of the ISO-9660 identifiers. This breaks ECMA-119 specification, but version numbers are usually not used, so it should work on most systems. Use with caution.

Parameters
optsThe option set to be manipulated.
omitbit0= omit version number with ECMA-119 and Joliet bit1= omit version number with Joliet alone (
Since
0.6.30)
0.6.2

Definition at line 3807 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::omit_version_numbers.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_output_charset()

int iso_write_opts_set_output_charset ( IsoWriteOpts opts,
const char *  charset 
)

Set the charset to use for the RR names of the files that will be created on the image. NULL to use default charset, that is the locale charset. You can obtain the list of charsets supported on your system executing "iconv -l" in a shell.

Since
0.6.2

Definition at line 4113 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::output_charset.

Referenced by iso_impsysa_report(), and isoburn_make_iso_write_opts().

◆ iso_write_opts_set_overwrite_buf()

int iso_write_opts_set_overwrite_buf ( IsoWriteOpts opts,
uint8_t *  overwrite 
)

Sets the buffer where to store the descriptors which shall be written at the beginning of an overwritable media to point to the newly written image. This is needed if the write start address of the image is not 0. In this case the first 64 KiB of the media have to be overwritten by the buffer content after the session was written and the buffer was updated by libisofs. Otherwise the new session would not be found by operating system function mount() or by libisoburn. (One could still mount that session if its start address is known.)

If you do not need this information, for example because you are creating a new image for LBA 0 or because you will create an image for a true multisession media, just do not use this call or set buffer to NULL.

Use cases:

  • Together with iso_write_opts_set_appendable(opts, 1) the buffer serves for the growing of an image as done in growisofs by Andy Polyakov. This allows appending of a new session to non-multisession media, such as DVD+RW. The new session will refer to the data of previous sessions on the same media. libisoburn emulates multisession appendability on overwritable media and disk files by performing this use case.
  • Together with iso_write_opts_set_appendable(opts, 0) the buffer allows to write the first session on overwritable media to start addresses other than 0. This address must not be smaller than 32 blocks plus the eventual partition offset as defined by iso_write_opts_set_part_offset(). libisoburn in most cases writes the first session on overwritable media and disk files to LBA (32 + partition_offset) in order to preserve its descriptors from the subsequent overwriting by the descriptor buffer of later sessions.
Parameters
optsThe option set to be manipulated.
overwriteWhen not NULL, it should point to at least 64KiB of memory, where libisofs will install the contents that shall be written at the beginning of overwritable media. You should initialize the buffer either with 0s, or with the contents of the first 32 blocks of the image you are growing. In most cases, 0 is good enough. IMPORTANT: If you use iso_write_opts_set_part_offset() then the overwrite buffer must be larger by the offset defined there.
Since
0.6.2

Definition at line 4140 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::overwrite.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_part_like_isohybrid()

int iso_write_opts_set_part_like_isohybrid ( IsoWriteOpts opts,
int  alike 
)

Control whether bits 2 to 8 of el_torito_set_isolinux_options() shall apply even if not isohybrid MBR patching is enabled (bit1 of parameter options of iso_write_opts_set_system_area()):

  • Mentioning of El Torito boot images in GPT.
  • Mentioning of El Torito boot images in APM.

In this case some other behavior from isohybrid processing will apply too:

  • No MBR partition of type 0xee emerges, even if GPT gets produced.
  • Gaps between GPT and APM partitions will not be filled by more partitions.

An extra feature towards isohybrid is enabled:

  • Appended partitions get mentioned in APM if other APM partitions emerge.
Parameters
optsThe option set to be manipulated.
alike0= Apply the described behavior only with ISOLINUX isohybrid. Do not mention appended partitions in APM unless iso_write_opts_set_appended_as_apm() is enabled. 1= Apply the described behavior even without ISOLINUX isohybrid.
Returns
ISO_SUCCESS or error
Since
1.4.4

Definition at line 4346 of file ecma119.c.

References ISO_SUCCESS, and iso_write_opts::part_like_isohybrid.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_part_offset()

int iso_write_opts_set_part_offset ( IsoWriteOpts opts,
uint32_t  block_offset_2k,
int  secs_512_per_head,
int  heads_per_cyl 
)

◆ iso_write_opts_set_part_type_guid()

int iso_write_opts_set_part_type_guid ( IsoWriteOpts opts,
int  partition_number,
uint8_t  guid[16],
int  valid 
)

Set the GPT Type GUID for a partition defined by iso_write_opts_set_partition_img().

Parameters
optsThe option set to be manipulated.
partition_numberDepicts the partition table entry which shall get the Type GUID.
guid16 bytes of user supplied GUID. Readily byte-swapped from the text form as prescribed by UEFI specs: 4 byte, 2 byte, 2 byte as little-endian. 2 byte, 6 byte as big-endian.
validSet to 1 to make this Type GUID valid. Set to 0 in order to invalidate a previously made setting. In this case MBR type 0xEF will become the EFI Type GUID. All others will become the Basic Data Partition Type GUID.
Returns
ISO_SUCCESS or error
Since
1.5.2

Definition at line 4320 of file ecma119.c.

References iso_write_opts::appended_part_gpt_flags, iso_write_opts::appended_part_type_guids, ISO_BAD_PARTITION_NO, ISO_MAX_PARTITIONS, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_partition_img()

int iso_write_opts_set_partition_img ( IsoWriteOpts opts,
int  partition_number,
uint8_t  partition_type,
char *  image_path,
int  flag 
)

Cause an arbitrary data file to be appended to the ISO image and to be described by a partition table entry in an MBR or SUN Disk Label at the start of the ISO image. The partition entry will bear the size of the image file rounded up to the next multiple of 2048 bytes. MBR or SUN Disk Label are selected by iso_write_opts_set_system_area() system area type: 0 selects MBR partition table. 3 selects a SUN partition table with 320 kB start alignment.

Parameters
optsThe option set to be manipulated.
partition_numberDepicts the partition table entry which shall describe the appended image. Range with MBR: 1 to 4. 1 will cause the whole ISO image to be unclaimable space before partition 1. Range with SUN Disk Label: 2 to 8.
partition_typeThe MBR partition type. E.g. FAT12 = 0x01 , FAT16 = 0x06, Linux Native Partition = 0x83. See fdisk command L. This parameter is ignored with SUN Disk Label.
image_pathFile address in the local file system or instructions for interval reader. See flag bit0. With SUN Disk Label: an empty name causes the partition to become a copy of the next lower partition.
flagbit0= The path contains instructions for the interval reader See above.
Since
1.4.0 All other bits are reserved for future usage. Set them to 0.
Returns
ISO_SUCCESS or error
Since
0.6.38

Definition at line 4303 of file ecma119.c.

References iso_write_opts::appended_part_flags, iso_write_opts::appended_part_types, iso_write_opts::appended_partitions, ISO_BAD_PARTITION_NO, ISO_MAX_PARTITIONS, ISO_OUT_OF_MEM, and ISO_SUCCESS.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_prep_img()

int iso_write_opts_set_prep_img ( IsoWriteOpts opts,
char *  image_path,
int  flag 
)

Copy a data file from the local filesystem into the emerging ISO image. Mark it by an MBR partition entry as PreP partition and also cause protective MBR partition entries before and after this partition. Vladimir Serbinenko stated aboy PreP = PowerPC Reference Platform : "PreP [...] refers mainly to IBM hardware. PreP boot is a partition containing only raw ELF and having type 0x41."

This feature is only combinable with system area type 0 and currently not combinable with ISOLINUX isohybrid production. It overrides –protective-msdos-label. See iso_write_opts_set_system_area(). Only partition 4 stays available for iso_write_opts_set_partition_img(). It is compatible with HFS+/FAT production by storing the PreP partition before the start of the HFS+/FAT partition.

Parameters
optsThe option set to be manipulated.
image_pathFile address in the local file system or instructions for interval reader. See flag bit0. NULL revokes production of the PreP partition.
flagbit0= The path contains instructions for the interval reader. See above.
Since
1.4.0 All other bits are reserved for future usage. Set them to 0.
Returns
ISO_SUCCESS or error
Since
1.2.4

Definition at line 4276 of file ecma119.c.

References ISO_OUT_OF_MEM, ISO_SUCCESS, iso_write_opts::prep_part_flag, and iso_write_opts::prep_partition.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_pvd_times()

int iso_write_opts_set_pvd_times ( IsoWriteOpts opts,
time_t  vol_creation_time,
time_t  vol_modification_time,
time_t  vol_expiration_time,
time_t  vol_effective_time,
char *  vol_uuid 
)

Explicitly set the four timestamps of the emerging Primary Volume Descriptor and in the volume descriptors of Joliet and ISO 9660:1999, if those are to be generated. Default with all parameters is 0.

ECMA-119 defines them as:

Parameters
optsThe option set to be manipulated.
vol_creation_timeWhen "the information in the volume was created." A value of 0 means that the timepoint of write start is to be used.
vol_modification_timeWhen "the information in the volume was last modified." A value of 0 means that the timepoint of write start is to be used.
vol_expiration_timeWhen "the information in the volume may be regarded as obsolete." A value of 0 means that the information never shall expire.
vol_effective_timeWhen "the information in the volume may be used." A value of 0 means that not such retention is intended.
vol_uuidIf this text is not empty, then it overrides vol_creation_time and vol_modification_time by copying the first 16 decimal digits from uuid, eventually padding up with decimal '1', and writing a NUL-byte as timezone. Other than with vol_*_time the resulting string in the ISO image is fully predictable and free of timezone pitfalls. It should express a reasonable time in form YYYYMMDDhhmmsscc. The timezone will always be recorded as GMT. E.g.: "2010040711405800" = 7 Apr 2010 11:40:58 (+0 centiseconds)
Returns
ISO_SUCCESS or error
Since
0.6.30

Definition at line 4214 of file ecma119.c.

References ISO_SUCCESS, iso_write_opts::vol_creation_time, iso_write_opts::vol_effective_time, iso_write_opts::vol_expiration_time, iso_write_opts::vol_modification_time, and iso_write_opts::vol_uuid.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_record_md5()

int iso_write_opts_set_record_md5 ( IsoWriteOpts opts,
int  session,
int  files 
)

Whether to compute and record MD5 checksums for the whole session and/or for each single IsoFile object. The checksums represent the data as they were written into the image output stream, not necessarily as they were on hard disk at any point of time. See also calls iso_image_get_session_md5() and iso_file_get_md5().

Parameters
optsThe option set to be manipulated.
sessionIf bit0 set: Compute session checksum
filesIf bit0 set: Compute a checksum for each single IsoFile object which gets its data content written into the session. Copy checksums from files which keep their data in older sessions. If bit1 set: Check content stability (only with bit0). I.e. before writing the file content into to image stream, read it once and compute a MD5. Do a second reading for writing into the image stream. Afterwards compare both MD5 and issue a MISHAP event ISO_MD5_STREAM_CHANGE if they do not match. Such a mismatch indicates content changes between the time point when the first MD5 reading started and the time point when the last block was read for writing. So there is high risk that the image stream was fed from changing and possibly inconsistent file content.
Since
0.6.22

Definition at line 3983 of file ecma119.c.

References ISO_SUCCESS, iso_write_opts::md5_file_checksums, and iso_write_opts::md5_session_checksum.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_relaxed_vol_atts()

int iso_write_opts_set_relaxed_vol_atts ( IsoWriteOpts opts,
int  allow 
)

Allow all characters to be part of Volume and Volset identifiers on the Primary Volume Descriptor. This breaks ISO-9660 constraints, but should work on modern systems.

Since
0.6.2

Definition at line 3880 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::relaxed_vol_atts.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_replace_mode()

int iso_write_opts_set_replace_mode ( IsoWriteOpts opts,
int  dir_mode,
int  file_mode,
int  uid,
int  gid 
)

Whether to set default values for files and directory permissions, gid and uid. All these take one of three values: 0, 1 or 2.

If 0, the corresponding attribute will be kept as set in the IsoNode. Unless you have changed it, it corresponds to the value on disc, so it is suitable for backup purposes. If set to 1, the corresponding attrib. will be changed by a default suitable value. Finally, if you set it to 2, the attrib. will be changed with the value specified by the functioins below. Note that for mode attributes, only the permissions are set, the file type remains unchanged.

See also
iso_write_opts_set_default_dir_mode
iso_write_opts_set_default_file_mode
iso_write_opts_set_default_uid
iso_write_opts_set_default_gid
Since
0.6.2

Definition at line 4022 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, ISO_WRONG_ARG_VALUE, iso_write_opts::replace_dir_mode, iso_write_opts::replace_file_mode, iso_write_opts::replace_gid, and iso_write_opts::replace_uid.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_replace_timestamps()

int iso_write_opts_set_replace_timestamps ( IsoWriteOpts opts,
int  replace 
)

0 to use IsoNode timestamps, 1 to use recording time, 2 to use values from timestamp field. This applies to the timestamps of Rock Ridge and if the use of mtime is enabled by iso_write_opts_set_dir_rec_mtime(). In the latter case, value 1 will revoke the recording of mtime, value 2 will override mtime by iso_write_opts_set_default_timestamp().

See also
iso_write_opts_set_default_timestamp
Since
0.6.2

Definition at line 4083 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, ISO_WRONG_ARG_VALUE, and iso_write_opts::replace_timestamps.

◆ iso_write_opts_set_rockridge()

int iso_write_opts_set_rockridge ( IsoWriteOpts opts,
int  enable 
)

Whether to use or not Rock Ridge extensions.

This are standard extensions to ECMA-119, intended to add POSIX filesystem features to ECMA-119 images. Thus, usage of this flag is highly recommended for images used on GNU/Linux systems. With the usage of RR extension, the resulting image will have long filenames (up to 255 characters), deeper directory structure, POSIX permissions and owner info on files and directories, support for symbolic links or special files... All that attributes can be modified/set with the appropriate function.

Parameters
optsThe option set to be manipulated.
enable1 to enable RR extension, 0 to not add them
Returns
1 success, < 0 error
Since
0.6.2

Definition at line 3710 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::rockridge.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_rr_reloc()

int iso_write_opts_set_rr_reloc ( IsoWriteOpts opts,
char *  name,
int  flags 
)

This call describes the directory where to store Rock Ridge relocated directories. If not iso_write_opts_set_allow_deep_paths(,1) is in effect, then it may become necessary to relocate directories so that no ECMA-119 file path has more than 8 components. These directories are grafted into either the root directory of the ISO image or into a dedicated relocation directory. For Rock Ridge, the relocated directories are linked forth and back to placeholders at their original positions in path level 8. Directories marked by Rock Ridge entry RE are to be considered artefacts of relocation and shall not be read into a Rock Ridge tree. Instead they are to be read via their placeholders and their links. For plain ECMA-119, the relocation directory and the relocated directories are just normal directories which contain normal files and directories.

Parameters
optsThe option set to be manipulated.
nameThe name of the relocation directory in the root directory. Do not prepend "/". An empty name or NULL will direct relocated directories into the root directory. This is the default. If the given name does not exist in the root directory when iso_image_create_burn_source() is called, and if there are directories at path level 8, then directory /name will be created automatically. The name given by this call will be compared with iso_node_get_name() of the directories in the root directory, not with the final ECMA-119 names of those directories.
flagsBitfield for control purposes. bit0= Mark the relocation directory by a Rock Ridge RE entry, if it gets created during iso_image_create_burn_source(). This will make it invisible for most Rock Ridge readers. bit1= not settable via API (used internally)
Returns
1 success, < 0 error
Since
1.2.2

Definition at line 3958 of file ecma119.c.

References ISO_OUT_OF_MEM, ISO_SUCCESS, iso_write_opts::rr_reloc_dir, and iso_write_opts::rr_reloc_flags.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_rrip_1_10_px_ino()

int iso_write_opts_set_rrip_1_10_px_ino ( IsoWriteOpts opts,
int  enable 
)

Write field PX with file serial number (i.e. inode number) even if iso_write_opts_set_rrip_version_1_10(,1) is in effect. This clearly violates the RRIP-1.10 specs. But it is done by mkisofs since a while and no widespread protest is visible in the web. If this option is not enabled, then iso_write_opts_set_hardlinks() will only have an effect with iso_write_opts_set_rrip_version_1_10(,0).

Since
0.6.20

Definition at line 3925 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::rrip_1_10_px_ino.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_rrip_version_1_10()

int iso_write_opts_set_rrip_version_1_10 ( IsoWriteOpts opts,
int  oldvers 
)

Write Rock Ridge info as of specification RRIP-1.10 rather than RRIP-1.12: signature "RRIP_1991A" rather than "IEEE_1282", field PX without file serial number.

Since
0.6.12

Definition at line 3916 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::rrip_version_1_10.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_scdbackup_tag()

int iso_write_opts_set_scdbackup_tag ( IsoWriteOpts opts,
char *  name,
char *  timestamp,
char *  tag_written 
)

Set the parameters "name" and "timestamp" for a scdbackup checksum tag. It will be appended to the libisofs session tag if the image starts at LBA 0 (see iso_write_opts_set_ms_block()). The scdbackup tag can be used to verify the image by command scdbackup_verify device -auto_end. See scdbackup/README appendix VERIFY for its inner details.

Parameters
optsThe option set to be manipulated.
nameA word of up to 80 characters. Typically volno_totalno telling that this is volume volno of a total of totalno volumes.
timestampA string of 13 characters YYMMDD.hhmmss (e.g. A90831.190324). A9 = 2009, B0 = 2010, B1 = 2011, ... C0 = 2020, ...
tag_writtenEither NULL or the address of an array with at least 512 characters. In the latter case the eventually produced scdbackup tag will be copied to this array when the image gets written. This call sets scdbackup_tag_written[0] = 0 to mark its preliminary invalidity.
Returns
1 indicates success, <0 is error
Since
0.6.24

Definition at line 3990 of file ecma119.c.

References ISO_SUCCESS, iso_write_opts::scdbackup_tag_parm, and iso_write_opts::scdbackup_tag_written.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_sort_files()

int iso_write_opts_set_sort_files ( IsoWriteOpts opts,
int  sort 
)

Whether to sort files based on their weight.

See also
iso_node_set_sort_weight
Since
0.6.2

Definition at line 3974 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::sort_files.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_system_area()

int iso_write_opts_set_system_area ( IsoWriteOpts opts,
char  data[32768],
int  options,
int  flag 
)

◆ iso_write_opts_set_tail_blocks()

int iso_write_opts_set_tail_blocks ( IsoWriteOpts opts,
uint32_t  num_blocks 
)

Cause a number of blocks with zero bytes to be written after the payload data, but before the eventual checksum data. Unlike libburn tail padding, these blocks are counted as part of the image and covered by eventual image checksums. A reason for such padding can be the wish to prevent the Linux read-ahead bug by sacrificial data which still belong to image and Jigdo template. Normally such padding would be the job of the burn program which should know that it is needed with CD write type TAO if Linux read(2) shall be able to read all payload blocks. 150 blocks = 300 kB is the traditional sacrifice to the Linux kernel.

Parameters
optsThe option set to be manipulated.
num_blocksNumber of extra 2 kB blocks to be written.
Returns
ISO_SUCCESS or error
Since
0.6.38

Definition at line 4270 of file ecma119.c.

References ISO_SUCCESS, and iso_write_opts::tail_blocks.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_opts_set_untranslated_name_len()

int iso_write_opts_set_untranslated_name_len ( IsoWriteOpts opts,
int  len 
)

Caution: This option breaks any assumptions about names that are supported by ECMA-119 specifications. Try to omit any translation which would make a file name compliant to the ECMA-119 rules. This includes and exceeds omit_version_numbers, max_37_char_filenames, no_force_dots bit0, allow_full_ascii. Further it prevents the conversion from local character set to ASCII. The maximum name length is given by this call. If a filename exceeds this length or cannot be recorded untranslated for other reasons, then image production is aborted with ISO_NAME_NEEDS_TRANSL. Currently the length limit is 96 characters, because an ECMA-119 directory record may at most have 254 bytes and up to 158 other bytes must fit into the record. Probably 96 more bytes can be made free for the name in future.

Parameters
optsThe option set to be manipulated.
len0 = disable this feature and perform name translation according to other settings. >0 = Omit any translation. Eventually abort image production if a name is longer than the given value. -1 = Like >0. Allow maximum possible length (currently 96)
Returns
>=0 success, <0 failure In case of >=0 the return value tells the effectively set len. E.g. 96 after using len == -1.
Since
1.0.0

Definition at line 3782 of file ecma119.c.

References ISO_NULL_POINTER, ISO_UNTRANSLATED_NAMES_MAX, ISO_WRONG_ARG_VALUE, and iso_write_opts::untranslated_name_len.

Referenced by isoburn_igopt_set_untranslated_name_len(), and isoburn_make_iso_write_opts().

◆ iso_write_opts_set_will_cancel()

int iso_write_opts_set_will_cancel ( IsoWriteOpts opts,
int  will_cancel 
)

Announce that only the image size is desired, that the struct burn_source which is set to consume the image output stream will stay inactive, and that the write thread will be cancelled anyway by the .cancel() method of the struct burn_source. This avoids to create a write thread which would begin production of the image stream and would generate a MISHAP event when burn_source.cancel() gets into effect.

Parameters
optsThe option set to be manipulated.
will_cancel0= normal image generation 1= prepare for being canceled before image stream output is completed
Returns
1 success, < 0 error
Since
0.6.40

Definition at line 3689 of file ecma119.c.

References ISO_NULL_POINTER, ISO_SUCCESS, and iso_write_opts::will_cancel.

Referenced by isoburn_make_iso_write_opts().

◆ iso_write_partition_file()

◆ issue_ucs2_warning_summary()

void issue_ucs2_warning_summary ( size_t  failures)

Definition at line 2164 of file ecma119.c.

References ISO_JOLIET_UCS2_WARN_MAX, iso_msg_submit(), and ISO_NAME_NOT_UCS2.

Referenced by iso_image_import(), and write_function().

◆ make_reloc_dir_if_needed()

static int make_reloc_dir_if_needed ( IsoImage img,
IsoWriteOpts opts,
int  flag 
)
static

◆ mspad_writer_compute_data_blocks()

static int mspad_writer_compute_data_blocks ( IsoImageWriter writer)
static

◆ mspad_writer_create()

◆ mspad_writer_free_data()

static int mspad_writer_free_data ( IsoImageWriter writer)
static

Definition at line 1090 of file ecma119.c.

References ISO_SUCCESS.

Referenced by mspad_writer_create().

◆ mspad_writer_write_data()

static int mspad_writer_write_data ( IsoImageWriter writer)
static

◆ mspad_writer_write_vol_desc()

static int mspad_writer_write_vol_desc ( IsoImageWriter writer)
static

Definition at line 1052 of file ecma119.c.

References ISO_SUCCESS.

Referenced by mspad_writer_create().

◆ need_version_number()

static int need_version_number ( IsoWriteOpts opts,
enum ecma119_node_type  node_type 
)
static

◆ part_align_writer_compute_data_blocks()

◆ process_preserved_cx()

static int process_preserved_cx ( IsoDir dir,
int  flag 
)
static

◆ show_chunk_to_jte()

static int show_chunk_to_jte ( Ecma119Image target,
char *  buf,
int  count 
)
static

◆ tail_writer_compute_data_blocks()

◆ transplant_checksum_buffer()

◆ write_dirs()

static int write_dirs ( Ecma119Image t,
Ecma119Node root,
Ecma119Node parent 
)
static

◆ write_function()

◆ write_head_part()

static int write_head_part ( Ecma119Image target,
int  flag 
)
static

◆ write_head_part1()

◆ write_head_part2()

◆ write_one_dir()

◆ write_one_dir_record()

static void write_one_dir_record ( Ecma119Image t,
Ecma119Node node,
int  file_id,
uint8_t *  buf,
size_t  len_fi,
struct susp_info info,
int  extent 
)
static

Write a single directory record (ECMA-119, 9.1)

Parameters
file_idif >= 0, we use it instead of the filename (for "." and ".." entries).
len_fiComputed length of the file identifier. Total size of the directory entry will be len + 33 + padding if needed (ECMA-119, 9.1.12)
infoSUSP entries for the given directory record. It will be NULL for the root directory record in the PVD (ECMA-119, 8.4.18) (in order to distinguish it from the "." entry in the root directory)

Definition at line 378 of file ecma119.c.

References iso_write_opts::always_gmt, ecma119_dir_info::block, iso_file_section::block, ecma119_node::dir, iso_write_opts::dir_rec_mtime, ECMA119_DIR, ECMA119_FILE, ecma119_image::eff_partition_offset, ecma119_image::empty_file_block, ecma119_node::file, ecma119_node::info, iso_bb(), iso_datetime_7(), ecma119_node::iso_name, ecma119_dir_info::len, Iso_Node::mtime, need_version_number(), ecma119_node::node, ecma119_image::now, Iso_File_Src::nsections, iso_write_opts::old_empty, ecma119_image::opts, ecma119_node::parent, ecma119_image::replace_timestamps, rrip_write_susp_fields(), Iso_File_Src::sections, iso_file_section::size, susp_info::suf_len, ecma119_image::timestamp, and ecma119_node::type.

Referenced by ecma119_writer_write_vol_desc(), and write_one_dir().

◆ write_path_table()

◆ write_path_tables()

◆ write_vol_desc_terminator()

◆ zero_writer_compute_data_blocks()

◆ zero_writer_create()

◆ zero_writer_free_data()

static int zero_writer_free_data ( IsoImageWriter writer)
static

Definition at line 1175 of file ecma119.c.

References Iso_Image_Writer::data, and ISO_SUCCESS.

Referenced by zero_writer_create().

◆ zero_writer_write_data()

◆ zero_writer_write_vol_desc()

static int zero_writer_write_vol_desc ( IsoImageWriter writer)
static

Definition at line 1140 of file ecma119.c.

References ISO_SUCCESS.

Referenced by zero_writer_create().