2 #ifndef LIBISO_LIBISOFS_H_
3 #define LIBISO_LIBISOFS_H_
42 #ifdef HAVE_INTTYPES_H
91 #define iso_lib_header_version_major 1
92 #define iso_lib_header_version_minor 3
93 #define iso_lib_header_version_micro 8
233 #define ISO_NODE_IS_DIR(n) (iso_node_get_type(n) == LIBISO_DIR)
234 #define ISO_NODE_IS_FILE(n) (iso_node_get_type(n) == LIBISO_FILE)
235 #define ISO_NODE_IS_SYMLINK(n) (iso_node_get_type(n) == LIBISO_SYMLINK)
236 #define ISO_NODE_IS_SPECIAL(n) (iso_node_get_type(n) == LIBISO_SPECIAL)
237 #define ISO_NODE_IS_BOOTCAT(n) (iso_node_get_type(n) == LIBISO_BOOT)
240 #define ISO_DIR(n) ((IsoDir*)(ISO_NODE_IS_DIR(n) ? n : NULL))
241 #define ISO_FILE(n) ((IsoFile*)(ISO_NODE_IS_FILE(n) ? n : NULL))
242 #define ISO_SYMLINK(n) ((IsoSymlink*)(ISO_NODE_IS_SYMLINK(n) ? n : NULL))
243 #define ISO_SPECIAL(n) ((IsoSpecial*)(ISO_NODE_IS_SPECIAL(n) ? n : NULL))
245 #define ISO_NODE(n) ((IsoNode*)n)
871 unsigned char **aa_string,
int flag);
898 #ifndef Libisofs_h_as_cpluspluS
1171 #ifndef Libisofs_h_as_cpluspluS
1477 uint8_t serial_number[8]);
1497 int hfsp_block_size,
int apm_block_size);
1925 char *name,
char *timestamp,
1947 int file_mode,
int uid,
int gid);
2244 int options,
int flag);
2299 time_t vol_creation_time, time_t vol_modification_time,
2300 time_t vol_expiration_time, time_t vol_effective_time,
2337 uint32_t block_offset_2k,
2338 int secs_512_per_head,
int heads_per_cyl);
2346 #define iso_libjte_req_major 1
2347 #define iso_libjte_req_minor 0
2348 #define iso_libjte_req_micro 0
2503 uint8_t partition_type,
char *image_path,
int flag);
2560 struct burn_source **burn_src);
2974 const char *data_preparer_id);
3024 const char *copyright_file_id);
3042 const char *abstract_file_id);
3127 char **creation_time,
char **modification_time,
3128 char **expiration_time,
char **effective_time);
3169 const char *catalog_path,
3264 char **content, off_t *size);
3638 int options,
int flag);
3685 int *options,
int flag);
3693 #define ISO_MAX_SYSAREA_LINE_LENGTH 4096
3701 #define ISO_SYSAREA_REPORT_DOC \
3703 "Report format for recognized System Area data.", \
3705 "No text will be reported if no System Area was loaded or if it was", \
3706 "entirely filled with 0-bytes.", \
3707 "Else there will be at least these three lines:", \
3708 " System area options: hex", \
3709 " see libisofs.h, parameter of iso_write_opts_set_system_area().", \
3710 " System area summary: word ... word", \
3711 " human readable interpretation of system area options and other info", \
3712 " The words are from the set:", \
3713 " { MBR, CHRP, PReP, GPT, APM, MIPS-Big-Endian, MIPS-Little-Endian,", \
3714 " SUN-SPARC-Disk-Label, HP-PA-PALO,", \
3715 " protective-msdos-label, isohybrid, grub2-mbr,", \
3716 " cyl-align-{auto,on,off,all}, not-recognized, }", \
3717 " The acronyms indicate boot data for particular hardware/firmware.", \
3718 " protective-msdos-label is an MBR conformant to specs of GPT.", \
3719 " isohybrid is an MBR implementing ISOLINUX isohybrid functionality.", \
3720 " grub2-mbr is an MBR with GRUB2 64 bit address patching.", \
3721 " cyl-align-on indicates that the ISO image MBR partition ends at a", \
3722 " cylinder boundary. cyl-align-all means that more MBR partitions", \
3723 " exist and all end at a cylinder boundary.", \
3724 " not-recognized tells about unrecognized non-zero system area data.", \
3725 " ISO image size/512 : decimal", \
3726 " size of ISO image in block units of 512 bytes.", \
3728 #define ISO_SYSAREA_REPORT_DOC_MBR \
3730 "If an MBR is detected, with at least one partition entry of non-zero size,", \
3731 "then there may be:", \
3732 " Partition offset : decimal", \
3733 " if not 0 then a second ISO 9660 superblock was found to which MBR", \
3734 " partition 1 is pointing.", \
3735 " MBR heads per cyl : decimal", \
3736 " conversion factor between MBR C/H/S address and LBA. 0=inconsistent.", \
3737 " MBR secs per head : decimal", \
3738 " conversion factor between MBR C/H/S address and LBA. 0=inconsistent.", \
3739 " MBR partition table: N Status Type Start Blocks", \
3740 " headline for MBR partition table.", \
3741 " MBR partition : X hex hex decimal decimal", \
3742 " gives partition number, status byte, type byte, start block,", \
3743 " and number of blocks. 512 bytes per block.", \
3744 " MBR partition path : X path", \
3745 " the path of a file in the ISO image which begins at the partition", \
3746 " start block of partition X.", \
3747 " PReP boot partition: decimal decimal", \
3748 " gives start block and size of a PReP boot partition in ISO 9660", \
3749 " block units of 2048 bytes.", \
3751 #define ISO_SYSAREA_REPORT_DOC_GPT1 \
3753 "GUID Partition Table can coexist with MBR:", \
3755 " headline for GPT partition table. The fields are too wide for a", \
3756 " neat table. So they are listed with a partition number and a text.", \
3757 " GPT CRC should be : <hex> to match first 92 GPT header block bytes", \
3758 " GPT CRC found : <hex> matches all 512 bytes of GPT header block", \
3759 " libisofs-1.2.4 to 1.2.8 had a bug with the GPT header CRC. So", \
3760 " libisofs is willing to recognize GPT with the buggy CRC. These", \
3761 " two lines inform that most partition editors will not accept it.", \
3762 " GPT array CRC wrong: should be <hex>, found <hex>", \
3763 " GPT entry arrays are accepted even if their CRC does not match.", \
3764 " In this case, both CRCs are reported by this line.", \
3765 " GPT backup problems: text", \
3766 " reports about inconsistencies between main GPT and backup GPT.", \
3767 " The statements are comma separated:", \
3768 " Implausible header LBA <decimal>", \
3769 " Cannot read header block at 2k LBA <decimal>", \
3770 " Not a GPT 1.0 header of 92 bytes for 128 bytes per entry", \
3771 " Head CRC <hex> wrong. Should be <hex>", \
3772 " Head CRC <hex> wrong. Should be <hex>. Matches all 512 block bytes", \
3773 " Disk GUID differs (<hex_digits>)", \
3774 " Cannot read array block at 2k LBA <decimal>", \
3775 " Array CRC <hex> wrong. Should be <hex>", \
3776 " Entries differ for partitions <decimal> [... <decimal>]", \
3777 " GPT disk GUID : hex_digits", \
3778 " 32 hex digits giving the byte string of the disk's GUID", \
3779 " GPT entry array : decimal decimal word", \
3780 " start block of partition entry array and number of entries. 512 bytes", \
3781 " per block. The word may be \"separated\" if partitions are disjoint,", \
3782 " \"overlapping\" if they are not. In future there may be \"nested\"", \
3783 " as special case where all overlapping partitions are superset and", \
3784 " subset, and \"covering\" as special case of disjoint partitions", \
3785 " covering the whole GPT block range for partitions.", \
3786 " GPT lba range : decimal decimal decimal", \
3787 " addresses of first payload block, last payload block, and of the", \
3788 " GPT backup header block. 512 bytes per block." \
3790 #define ISO_SYSAREA_REPORT_DOC_GPT2 \
3792 " GPT partition name : X hex_digits", \
3793 " up to 144 hex digits giving the UTF-16LE name byte string of", \
3794 " partition X. Trailing 16 bit 0-characters are omitted.", \
3795 " GPT partname local : X text", \
3796 " the name of partition X converted to the local character set.", \
3797 " This line may be missing if the name cannot be converted, or is", \
3799 " GPT partition GUID : X hex_digits", \
3800 " 32 hex digits giving the byte string of the GUID of partition X.", \
3801 " GPT type GUID : X hex_digits", \
3802 " 32 hex digits giving the byte string of the type GUID of partition X.", \
3803 " GPT partition flags: X hex", \
3804 " 64 flag bits of partition X in hex representation.", \
3805 " Known bit meanings are:", \
3806 " bit0 = \"System Partition\" Do not alter.", \
3807 " bit2 = Legacy BIOS bootable (MBR partition type 0x80)", \
3808 " bit60= read-only", \
3809 " GPT start and size : X decimal decimal", \
3810 " start block and number of blocks of partition X. 512 bytes per block.", \
3811 " GPT partition path : X path", \
3812 " the path of a file in the ISO image which begins at the partition", \
3813 " start block of partition X.", \
3815 #define ISO_SYSAREA_REPORT_DOC_APM \
3817 "Apple partition map can coexist with MBR and GPT:", \
3819 " headline for human readers.", \
3820 " APM block size : decimal", \
3821 " block size of Apple Partition Map. 512 or 2048. This applies to", \
3822 " start address and size of all partitions in the APM.", \
3823 " APM gap fillers : decimal", \
3824 " tells the number of partitions with name \"Gap[0-9[0-9]]\" and type", \
3825 " \"ISO9660_data\".", \
3826 " APM partition name : X text", \
3827 " the name of partition X. Up to 32 characters.", \
3828 " APM partition type : X text", \
3829 " the type string of partition X. Up to 32 characters.", \
3830 " APM start and size : X decimal decimal", \
3831 " start block and number of blocks of partition X.", \
3832 " APM partition path : X path", \
3833 " the path of a file in the ISO image which begins at the partition", \
3834 " start block of partition X.", \
3836 #define ISO_SYSAREA_REPORT_DOC_MIPS \
3838 "If a MIPS Big Endian Volume Header is detected, there may be:", \
3839 " MIPS-BE volume dir : N Name Block Bytes", \
3840 " headline for human readers.", \
3841 " MIPS-BE boot entry : X upto8chr decimal decimal", \
3842 " tells name, 512-byte block address, and byte count of boot entry X.", \
3843 " MIPS-BE boot path : X path", \
3844 " tells the path to the boot image file in the ISO image which belongs", \
3845 " to the block address given by boot entry X.", \
3847 "If a DEC Boot Block for MIPS Little Endian is detected, there may be:", \
3848 " MIPS-LE boot map : LoadAddr ExecAddr SegmentSize SegmentStart", \
3849 " headline for human readers.", \
3850 " MIPS-LE boot params: decimal decimal decimal decimal", \
3851 " tells four numbers which are originally derived from the ELF header", \
3852 " of the boot file. The first two are counted in bytes, the other two", \
3853 " are counted in blocks of 512 bytes.", \
3854 " MIPS-LE boot path : path", \
3855 " tells the path to the boot file in the ISO image which belongs to the", \
3856 " address given by SegmentStart.", \
3857 " MIPS-LE elf offset : decimal", \
3858 " tells the relative 512-byte block offset inside the boot file:", \
3859 " SegmentStart - FileStartBlock", \
3861 #define ISO_SYSAREA_REPORT_DOC_SUN \
3863 "If a SUN SPARC Disk Label is present:", \
3864 " SUN SPARC disklabel: text", \
3865 " tells the disk label text.", \
3866 " SUN SPARC secs/head: decimal", \
3867 " tells the number of sectors per head.", \
3868 " SUN SPARC heads/cyl: decimal", \
3869 " tells the number of heads per cylinder.", \
3870 " SPARC GRUB2 core : decimal decimal", \
3871 " tells byte address and byte count of the GRUB2 SPARC core file.", \
3872 " SPARC GRUB2 path : path", \
3873 " tells the path to the data file in the ISO image which belongs to the", \
3874 " address given by core.", \
3876 #define ISO_SYSAREA_REPORT_DOC_HPPA \
3878 "If a HP-PA PALO boot sector version 4 or 5 is present:", \
3879 " PALO header version: decimal", \
3880 " tells the PALO header version: 4 or 5.", \
3881 " HP-PA cmdline : text", \
3882 " tells the command line for the kernels.", \
3883 " HP-PA boot files : ByteAddr ByteSize Path", \
3884 " headline for human readers.", \
3885 " HP-PA 32-bit kernel: decimal decimal path", \
3886 " tells start byte, byte count, and file path of the 32-bit kernel.", \
3887 " HP-PA 64-bit kernel: decimal decimal path", \
3888 " tells the same for the 64-bit kernel.", \
3889 " HP-PA ramdisk : decimal decimal path", \
3890 " tells the same for the ramdisk file.", \
3891 " HP-PA bootloader : decimal decimal path", \
3892 " tells the same for the bootloader file.", \
3931 char ***reply,
int *line_count,
int flag);
3939 #define ISO_ELTORITO_REPORT_DOC \
3940 "Report format for recognized El Torito boot information.", \
3942 "No text will be reported if no El Torito information was found.", \
3943 "Else there will be at least these three lines", \
3944 " El Torito catalog : decimal decimal", \
3945 " tells the block address and number of 2048-blocks of the boot catalog.", \
3946 " El Torito images : N Pltf B Emul Ld_seg Hdpt Ldsiz LBA", \
3947 " is the headline of the boot image list.", \
3948 " El Torito boot img : X word char word hex hex decimal decimal", \
3949 " tells about boot image number X:", \
3950 " - Platform Id: \"BIOS\", \"PPC\", \"Mac\", \"UEFI\" or a hex number.", \
3951 " - Bootability: either \"y\" or \"n\".", \
3952 " - Emulation: \"none\", \"fd1.2\", \"fd1.4\", \"fd2.8\", \"hd\"", \
3953 " for no emulation, three floppy MB sizes, hard disk.", \
3954 " - Load Segment: start offset in boot image. 0x0000 means 0x07c0.", \
3955 " - Hard disk emulation partition type: MBR partition type code.", \
3956 " - Load size: number of 512-blocks to load with emulation mode \"none\".", \
3957 " - LBA: start block number in ISO filesystem (2048-block).", \
3959 "The following lines appear conditionally:", \
3960 " El Torito cat path : iso_rr_path", \
3961 " tells the path to the data file in the ISO image which belongs to", \
3962 " the block address where the boot catalog starts.", \
3963 " (This line is not reported if no path points to that block.)", \
3964 " El Torito img opts : X word ... word", \
3965 " tells the presence of extra features:", \
3966 " \"boot-info-table\" image got boot info table patching.", \
3967 " \"isohybrid-suitable\" image is suitable for ISOLINUX isohybrid MBR.", \
3968 " \"grub2-boot-info\" image got GRUB2 boot info patching.", \
3969 " (This line is not reported if no such options were detected.)", \
3970 " El Torito id string: X hex_digits", \
3971 " tells the id string of the catalog section which hosts boot image X.", \
3972 " (This line is not reported if the id string is all zero.)", \
3973 " El Torito sel crit : X hex_digits", \
3974 " tells the selection criterion of boot image X.", \
3975 " (This line is not reported if the criterion is all zero.)", \
3976 " El Torito img path : X iso_rr_path", \
3977 " tells the path to the data file in the ISO image which belongs to", \
3978 " the block address given by LBA of boot image X.", \
3979 " (This line is not reported if no path points to that block.)", \
3980 " El Torito img blks : X decimal", \
3981 " gives an upper limit of the number of 2048-blocks in the boot image", \
3982 " if it is not accessible via a path in the ISO directory tree.", \
3983 " The boot image is supposed to end before the start block of any", \
3984 " other entity of the ISO filesystem.", \
3985 " (This line is not reported if no limiting entity is found.)", \
4018 char ***reply,
int *line_count,
int flag);
4048 uint32_t
iso_crc32_gpt(
unsigned char *data,
int count,
int flag);
4166 char *kernel_32,
char *kernel_64,
char *ramdisk,
4190 char **kernel_32,
char **kernel_64,
char **ramdisk);
5511 const char *path,
IsoNode **node);
5548 const char *name,
const char *path,
5549 off_t offset, off_t size,
5676 int *depth,
int flag);
5683 #define LIBISO_MAX_LINK_DEPTH 100
5737 size_t *free_bytes);
5739 #define ISO_MSGS_MESSAGE_LEN 4096
5784 int iso_obtain_msgs(
char *minimum_severity,
int *error_code,
int *imgid,
5785 char msg_text[],
char severity[]);
5812 char severity[],
int origin);
6176 unsigned char **aa_string,
int flag);
6522 char **access_text,
char **default_text,
int flag);
6557 char *access_text,
char *default_text,
int flag);
6614 char ***names,
size_t **value_lengths,
char ***values,
int flag);
6636 size_t *value_length,
char **value,
int flag);
6682 size_t *value_lengths,
char **values,
int flag);
6826 size_t **value_lengths,
char ***values,
int flag);
6860 size_t *value_lengths,
char **values,
int flag);
6865 #define Libisofs_default_path_maX 4096
7246 uint32_t *end_lba,
char md5[16],
int flag);
7347 uint32_t *range_start, uint32_t *range_size,
7348 uint32_t *next_tag,
char md5[16],
int flag);
7398 int iso_md5_clone(
void *old_md5_context,
void **new_md5_context);
7415 int iso_md5_end(
void **md5_context,
char result[16]);
7567 int *bless_max,
int flag);
7615 char **result,
size_t *result_len,
int flag);
7622 #define ISO_SUCCESS 1
7631 #define ISO_CANCELED 0xE830FFFF
7634 #define ISO_FATAL_ERROR 0xF030FFFE
7637 #define ISO_ERROR 0xE830FFFD
7640 #define ISO_ASSERT_FAILURE 0xF030FFFC
7645 #define ISO_NULL_POINTER 0xE830FFFB
7648 #define ISO_OUT_OF_MEM 0xF030FFFA
7651 #define ISO_INTERRUPTED 0xF030FFF9
7654 #define ISO_WRONG_ARG_VALUE 0xE830FFF8
7657 #define ISO_THREAD_ERROR 0xF030FFF7
7660 #define ISO_WRITE_ERROR 0xE830FFF6
7663 #define ISO_BUF_READ_ERROR 0xE830FFF5
7666 #define ISO_NODE_ALREADY_ADDED 0xE830FFC0
7669 #define ISO_NODE_NAME_NOT_UNIQUE 0xE830FFBF
7672 #define ISO_NODE_NOT_ADDED_TO_DIR 0xE830FFBE
7675 #define ISO_NODE_DOESNT_EXIST 0xE830FFBD
7680 #define ISO_IMAGE_ALREADY_BOOTABLE 0xE830FFBC
7683 #define ISO_BOOT_IMAGE_NOT_VALID 0xE830FFBB
7686 #define ISO_BOOT_IMAGE_OVERFLOW 0xE830FFBA
7689 #define ISO_BOOT_NO_CATALOG 0xE830FFB9
7696 #define ISO_FILE_ERROR 0xE830FF80
7699 #define ISO_FILE_ALREADY_OPENED 0xE830FF7F
7702 #define ISO_FILE_ALREADY_OPENNED 0xE830FF7F
7705 #define ISO_FILE_ACCESS_DENIED 0xE830FF7E
7708 #define ISO_FILE_BAD_PATH 0xE830FF7D
7711 #define ISO_FILE_DOESNT_EXIST 0xE830FF7C
7714 #define ISO_FILE_NOT_OPENED 0xE830FF7B
7717 #define ISO_FILE_NOT_OPENNED ISO_FILE_NOT_OPENED
7720 #define ISO_FILE_IS_DIR 0xE830FF7A
7723 #define ISO_FILE_READ_ERROR 0xE830FF79
7726 #define ISO_FILE_IS_NOT_DIR 0xE830FF78
7729 #define ISO_FILE_IS_NOT_SYMLINK 0xE830FF77
7732 #define ISO_FILE_SEEK_ERROR 0xE830FF76
7735 #define ISO_FILE_IGNORED 0xD020FF75
7738 #define ISO_FILE_TOO_BIG 0xD020FF74
7741 #define ISO_FILE_CANT_WRITE 0xE430FF73
7744 #define ISO_FILENAME_WRONG_CHARSET 0xD020FF72
7746 #define ISO_FILENAME_WRONG_CHARSET_OLD 0xC020FF72
7749 #define ISO_FILE_CANT_ADD 0xE030FF71
7755 #define ISO_FILE_IMGPATH_WRONG 0xD020FF70
7761 #define ISO_FILE_OFFSET_TOO_BIG 0xE830FF6A
7765 #define ISO_CHARSET_CONV_ERROR 0xE830FF00
7771 #define ISO_MANGLE_TOO_MUCH_FILES 0xE830FEFF
7779 #define ISO_WRONG_PVD 0xE830FEC0
7782 #define ISO_WRONG_RR 0xE030FEBF
7785 #define ISO_UNSUPPORTED_RR 0xE030FEBE
7788 #define ISO_WRONG_ECMA119 0xE830FEBD
7791 #define ISO_UNSUPPORTED_ECMA119 0xE830FEBC
7794 #define ISO_WRONG_EL_TORITO 0xD030FEBB
7797 #define ISO_UNSUPPORTED_EL_TORITO 0xD030FEBA
7800 #define ISO_ISOLINUX_CANT_PATCH 0xE030FEB9
7803 #define ISO_UNSUPPORTED_SUSP 0xE030FEB8
7806 #define ISO_WRONG_RR_WARN 0xD030FEB7
7809 #define ISO_SUSP_UNHANDLED 0xC020FEB6
7812 #define ISO_SUSP_MULTIPLE_ER 0xD030FEB5
7815 #define ISO_UNSUPPORTED_VD 0xC020FEB4
7818 #define ISO_EL_TORITO_WARN 0xD030FEB3
7821 #define ISO_IMAGE_WRITE_CANCELED 0xE430FEB2
7824 #define ISO_EL_TORITO_HIDDEN 0xD030FEB1
7829 #define ISO_AAIP_IGNORED 0xB030FEB0
7832 #define ISO_AAIP_BAD_ACL 0xE830FEAF
7835 #define ISO_AAIP_BAD_ACL_TEXT 0xE830FEAE
7839 #define ISO_AAIP_NOT_ENABLED 0xE830FEAD
7842 #define ISO_AAIP_BAD_AASTRING 0xE830FEAC
7845 #define ISO_AAIP_NO_GET_LOCAL 0xE830FEAB
7848 #define ISO_AAIP_NO_SET_LOCAL 0xE830FEAA
7852 #define ISO_AAIP_NON_USER_NAME 0xE830FEA9
7856 #define ISO_EXTF_TOO_OFTEN 0xE830FEA8
7859 #define ISO_ZLIB_NOT_ENABLED 0xE830FEA7
7862 #define ISO_ZISOFS_TOO_LARGE 0xE830FEA6
7865 #define ISO_FILTER_WRONG_INPUT 0xE830FEA5
7868 #define ISO_ZLIB_COMPR_ERR 0xE830FEA4
7871 #define ISO_ZISOFS_WRONG_INPUT 0xE830FEA3
7875 #define ISO_ZISOFS_PARAM_LOCK 0xE830FEA2
7878 #define ISO_ZLIB_EARLY_EOF 0xE830FEA1
7884 #define ISO_MD5_AREA_CORRUPTED 0xD030FEA0
7891 #define ISO_MD5_TAG_MISMATCH 0xE830FE9F
7898 #define ISO_SB_TREE_CORRUPTED 0xE830FE9E
7904 #define ISO_MD5_TAG_UNEXPECTED 0xD030FE9D
7910 #define ISO_MD5_TAG_MISPLACED 0xD030FE9C
7917 #define ISO_MD5_TAG_OTHER_RANGE 0xD030FE9B
7924 #define ISO_MD5_STREAM_CHANGE 0xE430FE9A
7931 #define ISO_SCDBACKUP_TAG_NOT_0 0xD030FE99
7939 #define ISO_OVWRT_MS_TOO_SMALL 0xE830FE98
7946 #define ISO_PART_OFFST_TOO_SMALL 0xE830FE97
7952 #define ISO_OVWRT_FIFO_TOO_SMALL 0xE830FE96
7955 #define ISO_LIBJTE_NOT_ENABLED 0xE830FE95
7958 #define ISO_LIBJTE_START_FAILED 0xE830FE94
7961 #define ISO_LIBJTE_END_FAILED 0xE830FE93
7965 #define ISO_LIBJTE_FILE_FAILED 0xE430FE92
7968 #define ISO_BOOT_TOO_MANY_MIPS 0xE830FE91
7971 #define ISO_BOOT_FILE_MISSING 0xE430FE90
7974 #define ISO_BAD_PARTITION_NO 0xE830FE8F
7977 #define ISO_BAD_PARTITION_FILE 0xE830FE8E
7981 #define ISO_NON_MBR_SYS_AREA 0xE830FE8D
7984 #define ISO_DISPLACE_ROLLOVER 0xE830FE8C
7988 #define ISO_NAME_NEEDS_TRANSL 0xE830FE8B
7992 #define ISO_STREAM_NO_CLONE 0xE830FE8A
7996 #define ISO_XINFO_NO_CLONE 0xE830FE89
7999 #define ISO_MD5_TAG_COPIED 0xD030FE88
8002 #define ISO_RR_NAME_TOO_LONG 0xE830FE87
8005 #define ISO_RR_NAME_RESERVED 0xE830FE86
8008 #define ISO_RR_PATH_TOO_LONG 0xE830FE85
8011 #define ISO_AAIP_BAD_ATTR_NAME 0xE830FE84
8015 #define ISO_AAIP_ACL_MULT_OBJ 0xE830FE83
8019 #define ISO_SECT_SCATTERED 0xE830FE82
8022 #define ISO_BOOT_TOO_MANY_APM 0xE830FE81
8025 #define ISO_BOOT_APM_OVERLAP 0xE830FE80
8028 #define ISO_BOOT_TOO_MANY_GPT 0xE830FE7F
8031 #define ISO_BOOT_GPT_OVERLAP 0xE830FE7E
8034 #define ISO_BOOT_TOO_MANY_MBR 0xE830FE7D
8037 #define ISO_BOOT_MBR_OVERLAP 0xE830FE7C
8040 #define ISO_BOOT_MBR_COLLISION 0xE830FE7B
8044 #define ISO_BOOT_NO_EFI_ELTO 0xE830FE7A
8047 #define ISO_BOOT_HFSP_BAD_BSIZE 0xE830FE79
8050 #define ISO_BOOT_APM_GPT_BSIZE 0xE830FE78
8053 #define ISO_HFSP_NO_MANGLE 0xE830FE77
8056 #define ISO_DEAD_SYMLINK 0xE830FE76
8059 #define ISO_DEEP_SYMLINK 0xE830FE75
8062 #define ISO_BAD_ISO_FILETYPE 0xE830FE74
8065 #define ISO_NAME_NOT_UCS2 0xD030FE73
8068 #define ISO_IMPORT_COLLISION 0xD030FE72
8071 #define ISO_HPPA_PALO_INCOMPL 0xE830FE71
8074 #define ISO_HPPA_PALO_OFLOW 0xE830FE70
8077 #define ISO_HPPA_PALO_NOTREG 0xE830FE6F
8080 #define ISO_HPPA_PALO_CMDLEN 0xE830FE6E
8083 #define ISO_SYSAREA_PROBLEMS 0xD030FE6D
8086 #define ISO_INQ_SYSAREA_PROP 0xE830FE6C
8099 #define ISO_DATA_SOURCE_SORRY 0xE030FCFF
8102 #define ISO_DATA_SOURCE_MISHAP 0xE430FCFF
8105 #define ISO_DATA_SOURCE_FAILURE 0xE830FCFF
8108 #define ISO_DATA_SOURCE_FATAL 0xF030FCFF
8116 #ifdef LIBISOFS_WITHOUT_LIBBURN
8144 struct burn_source {
8174 int (*read)(
struct burn_source *,
unsigned char *buffer,
int size);
8183 int (*read_sub)(
struct burn_source *,
unsigned char *buffer,
int size);
8190 off_t (*get_size)(
struct burn_source *);
8206 int (*set_size)(
struct burn_source *source, off_t size);
8213 void (*free_data)(
struct burn_source *);
8220 struct burn_source *next;
8254 int (*read_xt)(
struct burn_source *,
unsigned char *buffer,
int size);
8260 int (*cancel)(
struct burn_source *source);
int el_torito_get_load_seg(ElToritoBootImage *bootimg)
Get the load segment value.
int iso_node_remove_xinfo(IsoNode *node, iso_node_xinfo_func proc)
Remove the given extended info (defined by the proc function) from the given node.
int el_torito_set_id_string(ElToritoBootImage *bootimg, uint8_t id_string[28])
Set the id_string of the Validation Entry resp.
void iso_node_set_hidden(IsoNode *node, int hide_attrs)
Set whether the node will be hidden in the directory trees of RR/ISO 9660, or of Joliet (if enabled a...
int iso_file_remove_filter(IsoFile *file, int flag)
Delete the top filter stream from a data file.
int(* get_root)(IsoFilesystem *fs, IsoFileSource **root)
Get the root of a filesystem.
char type[4]
Type of filesystem.
int iso_write_opts_set_hardlinks(IsoWriteOpts *opts, int enable)
Control generation of non-unique inode numbers for the emerging image.
int(* get_by_path)(IsoFilesystem *fs, const char *path, IsoFileSource **file)
Retrieve a file from its absolute path inside the filesystem.
int iso_write_opts_set_sort_files(IsoWriteOpts *opts, int sort)
Whether to sort files based on their weight.
char * iso_file_source_get_path(IsoFileSource *src)
Get the absolute path in the filesystem this file source belongs to.
const char * iso_symlink_get_dest(const IsoSymlink *link)
Get the destination of a node.
An IsoFile Source is a POSIX abstraction of a file.
int iso_tree_add_new_special(IsoDir *parent, const char *name, mode_t mode, dev_t dev, IsoSpecial **special)
Add a new special file to the directory tree.
int iso_image_new(const char *name, IsoImage **image)
Create a new image, empty.
int iso_write_opts_set_aaip(IsoWriteOpts *opts, int enable)
Control writing of AAIP informations for ACL and xattr.
Replace with the new node if it is the same file type.
int iso_read_opts_set_no_iso1999(IsoReadOpts *opts, int noiso1999)
Do not read ISO 9660:1999 enhanced tree.
int iso_zisofs_get_refcounts(off_t *ziso_count, off_t *osiz_count, int flag)
Inquire the number of zisofs compression and uncompression filters which are in use.
int iso_write_opts_set_allow_lowercase(IsoWriteOpts *opts, int allow)
Allow lowercase characters in ISO-9660 filenames.
int iso_tree_resolve_symlink(IsoImage *img, IsoSymlink *sym, IsoNode **res, int *depth, int flag)
Get the destination node of a symbolic link within the IsoImage.
int iso_read_opts_set_no_rockridge(IsoReadOpts *opts, int norr)
Do not read Rock Ridge extensions.
int iso_error_get_severity(int e)
Get the severity of a given error code.
int iso_data_source_new_from_file(const char *path, IsoDataSource **src)
Create a new IsoDataSource from a local file.
int(* open)(IsoFileSource *src)
Opens the source.
int iso_node_remove(IsoNode *node)
Removes a child from a directory and free (unref) it.
void * iso_image_get_attached_data(IsoImage *image)
The the data previously attached with iso_image_attach_data()
void iso_data_source_ref(IsoDataSource *src)
Increments the reference counting of the given IsoDataSource.
int iso_write_opts_set_rockridge(IsoWriteOpts *opts, int enable)
Whether to use or not Rock Ridge extensions.
int el_torito_get_id_string(ElToritoBootImage *bootimg, uint8_t id_string[28])
Get the id_string as of el_torito_set_id_string().
int iso_node_remove_tree(IsoNode *node, IsoDirIter *boss_iter)
Removes a node by iso_node_remove() or iso_dir_iter_remove().
IsoFindCondition * iso_new_find_conditions_gid(gid_t gid)
Create a new condition that checks the node gid.
int iso_image_generator_is_running(IsoImage *image)
Inquire whether the image generator thread is still at work.
int iso_node_get_next_xinfo(IsoNode *node, void **handle, iso_node_xinfo_func *proc, void **data)
Get the next pair of function pointer and data of an iteration of the list of extended informations...
With IsoNode and IsoBoot: Write data content even if the node is not visible in any tree...
const char * iso_image_fs_get_volume_id(IsoImageFilesystem *fs)
Get the volume identifier for an existent image.
int iso_init_with_flag(int flag)
Initialize libisofs.
int(* close)(IsoDataSource *src)
Close a given source, freeing all system resources previously grabbed in open().
void iso_file_source_ref(IsoFileSource *src)
Take a ref to the given IsoFileSource.
struct Iso_Dir_Iter IsoDirIter
Context for iterate on directory children.
int iso_file_source_read(IsoFileSource *src, void *buf, size_t count)
Attempts to read up to count bytes from the given source into the buffer starting at buf...
int iso_tree_get_ignore_special(IsoImage *image)
Get current setting for ignore_special.
int iso_file_source_lstat(IsoFileSource *src, struct stat *info)
Get information about the file.
int el_torito_get_boot_platform_id(ElToritoBootImage *bootimg)
Get the platform ID value.
int iso_tree_get_follow_symlinks(IsoImage *image)
Get current setting for follow_symlinks.
struct Iso_File IsoFile
A regular file in the iso tree.
int iso_dir_get_children_count(IsoDir *dir)
Get the number of children of a directory.
const char * iso_node_get_name(const IsoNode *node)
Get the name of a node.
int iso_image_get_msg_id(IsoImage *image)
Get the id of an IsoImage, used for message reporting.
int iso_file_add_zisofs_filter(IsoFile *file, int flag)
Install a zisofs filter on top of the content stream of a data file.
const char * iso_image_get_publisher_id(const IsoImage *image)
Get the publisher of a image.
int(* read_block)(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
Read an arbitrary block (2048 bytes) of data from the source.
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.
struct Iso_Symlink IsoSymlink
A symbolic link in the iso tree.
int iso_tree_add_node(IsoImage *image, IsoDir *parent, const char *path, IsoNode **node)
Add a new node to the image tree, from an existing file.
int iso_write_opts_set_allow_full_ascii(IsoWriteOpts *opts, int allow)
Allow all 8-bit characters to appear on an ISO-9660 filename.
IsoFindCondition * iso_new_find_conditions_ctime(time_t time, enum iso_find_comparisons comparison)
Create a new condition that checks the time of last status change.
void iso_image_set_data_preparer_id(IsoImage *image, const char *data_preparer_id)
Fill in the data preparer for a image.
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.
int iso_zisofs_get_params(struct iso_zisofs_ctrl *params, int flag)
Get the current global parameters for zisofs filtering.
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.
int iso_write_opts_set_allow_deep_paths(IsoWriteOpts *opts, int allow)
Allow ISO-9660 directory hierarchy to be deeper than 8 levels.
int iso_write_opts_new(IsoWriteOpts **opts, int profile)
Creates an IsoWriteOpts for writing an image.
int iso_file_source_open(IsoFileSource *src)
Opens the source.
struct iso_find_condition IsoFindCondition
int iso_obtain_msgs(char *minimum_severity, int *error_code, int *imgid, char msg_text[], char severity[])
Obtain the oldest pending libisofs message from the queue which has at least the given minimum_severi...
int iso_node_remove_all_xinfo(IsoNode *node, int flag)
Remove all extended information from the given node.
int(* clone_stream)(IsoStream *old_stream, IsoStream **new_stream, int flag)
Produce a copy of a stream.
int iso_node_get_acl_text(IsoNode *node, char **access_text, char **default_text, int flag)
Get the eventual ACLs which are associated with the node.
void el_torito_set_no_bootable(ElToritoBootImage *bootimg)
Marks the specified boot image as not bootable.
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.
void iso_node_set_ctime(IsoNode *node, time_t time)
Set the time of last status change of the file.
unsigned int(* get_id)(IsoFilesystem *fs)
Get filesystem identifier.
int iso_node_xinfo_make_clonable(iso_node_xinfo_func proc, iso_node_xinfo_cloner cloner, int flag)
Associate a iso_node_xinfo_cloner to a particular class of extended information in order to make it c...
void(* free_data)(IsoDataSource *src)
Clean up the source specific data.
void el_torito_set_load_seg(ElToritoBootImage *bootimg, short segment)
Sets the load segment for the initial boot image.
int iso_symlink_set_dest(IsoSymlink *link, const char *dest)
Set the destination of a link.
int iso_node_set_acl_text(IsoNode *node, char *access_text, char *default_text, int flag)
Set the ACLs of the given node to the lists in parameters access_text and default_text or delete them...
char * iso_stream_get_source_path(IsoStream *stream, int flag)
Try to get eventual source path string of a stream.
struct Iso_Boot IsoBoot
An special type of IsoNode that acts as a placeholder for an El-Torito boot catalog.
void iso_stream_ref(IsoStream *stream)
Increment reference count of an IsoStream.
void iso_image_set_application_id(IsoImage *image, const char *application_id)
Fill in the application id for a image.
int iso_file_get_md5(IsoImage *image, IsoFile *file, char md5[16], int flag)
Eventually obtain the recorded MD5 checksum of a data file from the loaded ISO image.
int iso_file_get_old_image_lba(IsoFile *file, uint32_t *lba, int flag)
Get the block lba of a file node, if it was imported from an old image.
const char * iso_image_get_volume_id(const IsoImage *image)
Get the volume identifier.
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+.
int iso_dir_add_node(IsoDir *dir, IsoNode *child, enum iso_replace_mode replace)
Add a new node to a dir.
int iso_md5_end(void **md5_context, char result[16])
Obtain the MD5 checksum from a MD5 computation context and dispose this context.
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.
int iso_node_get_xinfo(IsoNode *node, iso_node_xinfo_func proc, void **data)
Get the given extended info (defined by the proc function) from the given node.
int iso_stream_update_size(IsoStream *stream)
Updates the size of the IsoStream with the current size of the underlying source. ...
int iso_write_opts_set_disc_label(IsoWriteOpts *opts, char *label)
Set a name for the system area.
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.
int(* open)(IsoStream *stream)
Opens the stream.
int iso_tree_remove_exclude(IsoImage *image, const char *path)
Remove a previously added exclude.
int iso_tree_get_ignore_hidden(IsoImage *image)
Get current setting for ignore_hidden.
void iso_node_set_mtime(IsoNode *node, time_t time)
Set the time of last modification of the file.
int iso_stream_get_external_filter(IsoStream *stream, IsoExternalFilterCommand **cmd, int flag)
Obtain the IsoExternalFilterCommand which is eventually associated with the given stream...
void iso_file_source_unref(IsoFileSource *src)
Drop your ref to the given IsoFileSource, eventually freeing the associated system resources...
int iso_image_set_hppa_palo(IsoImage *img, char *cmdline, char *bootloader, char *kernel_32, char *kernel_64, char *ramdisk, int flag)
Define a command line and submit the paths of four mandatory files for production of a HP-PA PALO boo...
int iso_image_get_bootcat(IsoImage *image, IsoBoot **catnode, uint32_t *lba, char **content, off_t *size)
Get detailed information about the boot catalog that was loaded from an ISO image.
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)
Explicitely set the four timestamps of the emerging Primary Volume Descriptor and in the volume descr...
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 obje...
off_t iso_file_get_size(IsoFile *file)
Get the size of the file, in bytes.
int iso_dir_iter_take(IsoDirIter *iter)
Removes a child from a directory during an iteration, without freeing it.
int el_torito_set_selection_crit(ElToritoBootImage *bootimg, uint8_t crit[20])
Set the Selection Criteria of a boot image.
IsoStream * iso_file_get_stream(IsoFile *file)
Get the IsoStream that represents the contents of the given IsoFile.
int iso_tree_add_new_symlink(IsoDir *parent, const char *name, const char *dest, IsoSymlink **link)
Add a new symlink to the directory tree.
const char * iso_image_get_copyright_file_id(const IsoImage *image)
Get the copyright information of a image.
int el_torito_get_selection_crit(ElToritoBootImage *bootimg, uint8_t crit[20])
Get the Selection Criteria bytes as of el_torito_set_selection_crit().
int iso_util_decode_md5_tag(char data[2048], int *tag_type, uint32_t *pos, uint32_t *range_start, uint32_t *range_size, uint32_t *next_tag, char md5[16], int flag)
Check a data block whether it is a libisofs session checksum tag and eventually obtain its recorded p...
int(* readdir)(IsoFileSource *src, IsoFileSource **child)
Read a directory.
void iso_image_set_abstract_file_id(IsoImage *image, const char *abstract_file_id)
Fill abstract information for the image.
int iso_write_opts_set_ms_block(IsoWriteOpts *opts, uint32_t ms_block)
Set the start block of the image.
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. ...
ino_t serial_id
Serial number to be used when you can't get a valid id for a Stream by other means.
int iso_read_opts_set_default_permissions(IsoReadOpts *opts, mode_t file_perm, mode_t dir_perm)
Set default permissions for files when RR extensions are not present.
off_t(* get_size)(IsoStream *stream)
Get the size (in bytes) of the stream.
struct iso_hfsplus_xinfo_data * iso_hfsplus_xinfo_new(int flag)
Create an instance of struct iso_hfsplus_xinfo_new().
const char * iso_image_fs_get_biblio_file_id(IsoImageFilesystem *fs)
Get the biblio file identifier for an existent image.
int iso_node_xinfo_get_cloner(iso_node_xinfo_func proc, iso_node_xinfo_cloner *cloner, int flag)
Inquire the registered cloner function for a particular class of extended information.
int iso_stream_read(IsoStream *stream, void *buf, size_t count)
Attempts to read up to count bytes from the given stream into the buffer starting at buf...
void iso_image_set_volume_id(IsoImage *image, const char *volume_id)
Fill in the volume identifier for a image.
int iso_msgs_submit(int error_code, char msg_text[], int os_errno, char severity[], int origin)
Submit a message to the libisofs queueing system.
void iso_image_ref(IsoImage *image)
Increments the reference counting of the given image.
int iso_read_opts_new(IsoReadOpts **opts, int profile)
Creates an IsoReadOpts for reading an existent image.
int iso_file_get_sort_weight(IsoFile *file)
Get the sort weight of a file.
int(* readlink)(IsoFileSource *src, char *buf, size_t bufsiz)
Read the destination of a symlink.
int(* iso_node_xinfo_cloner)(void *old_data, void **new_data, int flag)
Class of functions to clone extended information.
void iso_node_unref(IsoNode *node)
Decrements the reference couting of the given node.
const char * iso_image_get_data_preparer_id(const IsoImage *image)
Get the data preparer of a image.
off_t iso_stream_get_size(IsoStream *stream)
Get the size of a given stream.
int iso_sev_to_text(int severity_number, char **severity_name)
Convert a severity number into a severity name.
int iso_write_opts_set_rrip_1_10_px_ino(IsoWriteOpts *opts, int enable)
Write field PX with file serial number (i.e.
int iso_write_opts_set_always_gmt(IsoWriteOpts *opts, int gmt)
Whether to always record timestamps in GMT.
void iso_tree_set_report_callback(IsoImage *image, int(*report)(IsoImage *, IsoFileSource *))
Set a callback function that libisofs will call for each file that is added to the given image by a r...
Interface definition for IsoStream methods.
int(* clone_src)(IsoFileSource *old_src, IsoFileSource **new_src, int flag)
Produce a copy of a source.
IsoHideNodeFlag
Flag used to hide a file in the RR/ISO or Joliet tree.
int(* read)(IsoStream *stream, void *buf, size_t count)
Attempt to read up to count bytes from the given stream into the buffer starting at buf...
struct Iso_Dir IsoDir
A directory in the iso tree.
Hide the node in the HFS+ tree, if that format is enabled.
void iso_tree_set_follow_symlinks(IsoImage *image, int follow)
Set whether to follow or not symbolic links when added a file from a source to IsoImage.
int iso_file_source_close(IsoFileSource *src)
Close a previuously openned file.
const char * iso_image_fs_get_system_id(IsoImageFilesystem *fs)
Get the system identifier for an existent image.
unsigned int iso_fs_global_id
See IsoFilesystem->get_id() for info about this.
int el_torito_get_isolinux_options(ElToritoBootImage *bootimg, int flag)
Get the options as of el_torito_set_isolinux_options().
IsoFindCondition * iso_new_find_conditions_and(IsoFindCondition *a, IsoFindCondition *b)
Create a new condition that check if the two given conditions are valid.
Hide the node in the Joliet tree, if Joliet extension are enabled.
int(* close)(IsoFileSource *src)
Close a previuously openned file.
int iso_md5_match(char first_md5[16], char second_md5[16])
Inquire whether two MD5 checksums match.
int el_torito_get_bootable(ElToritoBootImage *bootimg)
Get the bootability flag.
void el_torito_patch_isolinux_image(ElToritoBootImage *bootimg)
Deprecated: Specifies that this image needs to be patched.
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...
int iso_read_opts_auto_input_charset(IsoReadOpts *opts, int mode)
Enable or disable methods to automatically choose an input charset.
int iso_tree_add_new_dir(IsoDir *parent, const char *name, IsoDir **dir)
Add a new directory to the iso tree.
int iso_image_get_session_md5(IsoImage *image, uint32_t *start_lba, uint32_t *end_lba, char md5[16], int flag)
Eventually obtain the recorded MD5 checksum of the session which was loaded as ISO image...
int iso_local_get_attrs(char *disk_path, size_t *num_attrs, char ***names, size_t **value_lengths, char ***values, int flag)
Get xattr and non-trivial ACLs of the given file in the local filesystem.
int version
Tells the version of the interface: Version 0 provides functions up to (*lseek)().
void iso_node_set_uid(IsoNode *node, uid_t uid)
Set the user id for the node.
time_t iso_node_get_ctime(const IsoNode *node)
Get the time of last status change of the file.
int iso_write_opts_set_system_area(IsoWriteOpts *opts, char data[32768], int options, int flag)
int iso_image_set_boot_catalog_hidden(IsoImage *image, int hide_attrs)
Hides the boot catalog file from directory trees.
off_t(* lseek)(IsoFileSource *src, off_t offset, int flag)
Repositions the offset of the IsoFileSource (must be opened) to the given offset according to the val...
int iso_stream_is_repeatable(IsoStream *stream)
Whether the given IsoStream can be read several times, with the same results.
An IsoFilesystem is a handler for a source of files, or a "filesystem".
void(* free)(IsoStream *stream)
Free implementation specific data.
int iso_read_opts_set_no_joliet(IsoReadOpts *opts, int nojoliet)
Do not read Joliet extensions.
int iso_image_add_boot_image(IsoImage *image, const char *image_path, enum eltorito_boot_media_type type, int flag, ElToritoBootImage **boot)
Add a further boot image to the set of El-Torito bootable images.
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. ...
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.
IsoFindCondition * iso_new_find_conditions_uid(uid_t uid)
Create a new condition that checks the node uid.
int iso_dir_iter_next(IsoDirIter *iter, IsoNode **node)
Get the next child.
IsoFilesystem IsoImageFilesystem
IsoFilesystem implementation to deal with ISO images, and to offer a way to access specific informati...
int iso_local_set_acl_text(char *disk_path, char *text, int flag)
Set the ACL of the given file in the local filesystem to a given list in long text form...
int iso_stream_clone(IsoStream *old_stream, IsoStream **new_stream, int flag)
Produce a copy of a stream.
void iso_image_set_app_use(IsoImage *image, const char *app_use_data, int count)
Fill Application Use field of the Primary Volume Descriptor.
int aaip_xinfo_func(void *data, int flag)
Function to identify and manage AAIP strings as xinfo of IsoNode.
struct iso_read_image_features IsoReadImageFeatures
Return information for image.
const char * iso_image_fs_get_application_id(IsoImageFilesystem *fs)
Get the application identifier for an existent image.
File section in an old image.
int iso_tree_add_dir_rec(IsoImage *image, IsoDir *parent, const char *dir)
Add the contents of a dir to a given directory of the iso tree.
int(* close)(IsoStream *stream)
Close the Stream.
int el_torito_get_load_size(ElToritoBootImage *bootimg)
Get the load size.
int iso_file_make_md5(IsoFile *file, int flag)
Read the content of an IsoFile object, compute its MD5 and attach it to the IsoFile.
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 eventua...
int iso_tree_add_new_cut_out_node(IsoImage *image, IsoDir *parent, const char *name, const char *path, off_t offset, off_t size, IsoNode **node)
Add a new node to the image tree with the given name that must not exist on dir.
void iso_finish()
Finalize libisofs.
int el_torito_seems_boot_info_table(ElToritoBootImage *bootimg, int flag)
Makes a guess whether the boot image was patched by a boot information table.
enum IsoNodeType iso_node_get_type(IsoNode *node)
Get the type of an IsoNode.
int iso_memory_stream_new(unsigned char *buf, size_t size, IsoStream **stream)
Create an IsoStream object from content which is stored in a dynamically allocated memory buffer...
Representation of an external program that shall serve as filter for an IsoStream.
const char * iso_image_get_volset_id(const IsoImage *image)
Get the volset identifier.
mode_t iso_node_get_perms_wo_acl(const IsoNode *node)
Like iso_node_get_permissions but reflecting ACL entry "group::" in S_IRWXG rather than ACL entry "ma...
int(* is_repeatable)(IsoStream *stream)
Tell whether this IsoStream can be read several times, with the same results.
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.
void iso_filesystem_unref(IsoFilesystem *fs)
Drop your ref to the given IsoFilesystem, evetually freeing associated resources. ...
int iso_write_opts_set_joliet_longer_paths(IsoWriteOpts *opts, int allow)
Allow paths in the Joliet tree to have more than 240 characters.
void iso_image_set_publisher_id(IsoImage *image, const char *publisher_id)
Fill in the publisher for a image.
int iso_init()
Initialize libisofs.
struct el_torito_boot_image ElToritoBootImage
It represents an El-Torito boot image.
int iso_node_get_old_image_lba(IsoNode *node, uint32_t *lba, int flag)
dev_t iso_special_get_dev(IsoSpecial *special)
Get the device id (major/minor numbers) of the given block or character device file.
int iso_node_get_attrs(IsoNode *node, size_t *num_attrs, char ***names, size_t **value_lengths, char ***values, int flag)
Get the list of xattr which is associated with the node.
int iso_node_set_name(IsoNode *node, const char *name)
Set the name of a node.
int iso_read_opts_set_default_uid(IsoReadOpts *opts, uid_t uid)
Set default uid for files when RR extensions are not present.
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...
void el_torito_set_load_size(ElToritoBootImage *bootimg, short sectors)
Sets the number of sectors (512b) to be load at load segment during the initial boot procedure...
void iso_data_source_unref(IsoDataSource *src)
Decrements the reference counting of the given IsoDataSource, freeing it if refcount reach 0...
void iso_lib_version(int *major, int *minor, int *micro)
Get version of the libisofs library at runtime.
void iso_node_set_atime(IsoNode *node, time_t time)
Set the time of last access to the file.
void iso_tree_set_ignore_special(IsoImage *image, int skip)
Set whether to skip or not special files.
void iso_stream_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id, ino_t *ino_id)
Get an unique identifier for a given IsoStream.
Representation of file contents as a stream of bytes.
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...
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 creat...
int(* close)(IsoFilesystem *fs)
Close the filesystem, thus freeing all system resources.
char * iso_tree_get_node_path(IsoNode *node)
Get the absolute path on image of the given node.
int iso_image_filesystem_new(IsoDataSource *src, IsoReadOpts *opts, int msgid, IsoImageFilesystem **fs)
Create a new IsoFilesystem to access a existent ISO image.
int iso_image_attach_data(IsoImage *image, void *data, void(*give_up)(void *))
Attach user defined data to the image.
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" rat...
int iso_image_get_all_boot_imgs(IsoImage *image, int *num_boots, ElToritoBootImage ***boots, IsoFile ***bootnodes, int flag)
Get all El-Torito boot images of an ISO image.
int iso_gzip_get_refcounts(off_t *gzip_count, off_t *gunzip_count, int flag)
Inquire the number of gzip compression and uncompression filters which are in use.
const char * iso_image_get_abstract_file_id(const IsoImage *image)
Get the abstract information of a image.
int iso_file_source_access(IsoFileSource *src)
Check if the process has access to read file contents.
struct Iso_Image IsoImage
Context for image creation.
int iso_md5_clone(void *old_md5_context, void **new_md5_context)
Create a MD5 computation context as clone of an existing one.
Always replace the old node with the new.
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.
int iso_read_image_features_has_iso1999(IsoReadImageFeatures *f)
Whether the image is recorded according to ISO 9660:1999, i.e.
int iso_read_opts_load_system_area(IsoReadOpts *opts, int mode)
Enable or disable loading of the first 32768 bytes of the session.
int iso_image_set_sparc_core(IsoImage *img, IsoFile *sparc_core, int flag)
Designate a data file in the ISO image of which the position and size shall be written after the SUN ...
int iso_file_source_stat(IsoFileSource *src, struct stat *info)
Get information about the file.
int iso_md5_start(void **md5_context)
Create a MD5 computation context and hand out an opaque handle.
unsigned int refcount
Reference count for the data source.
int iso_node_cmp_ino(IsoNode *n1, IsoNode *n2, int flag)
Compare two nodes whether they are based on the same input and can be considered as hardlinks to the ...
Never replace an existing node, and instead fail with ISO_NODE_NAME_NOT_UNIQUE.
const char * iso_image_get_system_id(const IsoImage *image)
Get the system id of a image.
time_t iso_node_get_atime(const IsoNode *node)
Get the time of last access to the file.
int iso_node_zf_by_magic(IsoNode *node, int flag)
Check for the given node or for its subtree whether the data file content effectively bears zisofs fi...
uid_t iso_node_get_uid(const IsoNode *node)
Get the user id of the node.
int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable)
Whether to add the non-standard Joliet extension to the image.
void * data
Source specific data.
int iso_image_report_system_area(IsoImage *image, char ***reply, int *line_count, int flag)
Obtain an array of texts describing the detected properties of the eventually loaded System Area...
Hide the node in the ISO-9660:1999 tree, if that format is enabled.
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 overwrit...
int iso_image_get_boot_image(IsoImage *image, ElToritoBootImage **boot, IsoFile **imgnode, IsoBoot **catnode)
Get the El-Torito boot catalog and the default boot image of an ISO image.
uint32_t iso_crc32_gpt(unsigned char *data, int count, int flag)
Compute a CRC number as expected in the GPT main and backup header blocks.
const char * iso_image_fs_get_volset_id(IsoImageFilesystem *fs)
Get the volset identifier for an existent image.
Hide the node in the FAT tree, if that format is enabled.
int iso_write_opts_detach_jte(IsoWriteOpts *opts, void **libjte_handle)
Remove eventual association to a libjte environment handle.
int iso_local_get_perms_wo_acl(char *disk_path, mode_t *st_mode, int flag)
Obtain permissions of a file in the local filesystem which shall reflect ACL entry "group::" in S_IRW...
int iso_image_get_hppa_palo(IsoImage *img, char **cmdline, char **bootloader, char **kernel_32, char **kernel_64, char **ramdisk)
Inquire the current settings of iso_image_set_hppa_palo().
int iso_image_import(IsoImage *image, IsoDataSource *src, IsoReadOpts *opts, IsoReadImageFeatures **features)
Import a previous session or image, for growing or modify.
int iso_read_image_features_has_eltorito(IsoReadImageFeatures *f)
Whether El-Torito boot record is present present in the image imported.
int aaip_xinfo_cloner(void *old_data, void **new_data, int flag)
The iso_node_xinfo_cloner function which gets associated to aaip_xinfo_func by iso_init() resp...
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.
struct iso_write_opts IsoWriteOpts
Options for image written.
int el_torito_get_boot_media_type(ElToritoBootImage *bootimg, enum eltorito_boot_media_type *media_type)
Get the boot media type as of parameter "type" of iso_image_set_boot_image() resp.
int iso_error_get_priority(int e)
Get the priority of a given error.
IsoFindCondition * iso_new_find_conditions_mtime(time_t time, enum iso_find_comparisons comparison)
Create a new condition that checks the time of last modification.
const char * iso_error_to_msg(int errcode)
Get a textual description of a libisofs error.
IsoStream * iso_stream_get_input_stream(IsoStream *stream, int flag)
Obtain the eventual input stream of a filter stream.
int iso_read_opts_set_preferjoliet(IsoReadOpts *opts, int preferjoliet)
Whether to prefer Joliet over RR.
Replace with the new node if it is the same file type and its ctime is newer than the old one...
void iso_write_opts_free(IsoWriteOpts *opts)
Free an IsoWriteOpts previously allocated with iso_write_opts_new().
int(* get_aa_string)(IsoFileSource *src, unsigned char **aa_string, int flag)
Valid only if .version is > 0.
int iso_local_get_acl_text(char *disk_path, char **text, int flag)
Get an ACL of the given file in the local filesystem in long text form.
int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names, size_t *value_lengths, char **values, int flag)
Attach a list of xattr and ACLs to the given file in the local filesystem.
int iso_tree_path_to_node(IsoImage *image, const char *path, IsoNode **node)
Locate a node by its absolute path on image.
void(* free)(IsoFileSource *src)
Free implementation specific data.
int iso_set_abort_severity(char *severity)
Set the minimum error severity that causes a libisofs operation to be aborted as soon as possible...
Interface definition for an IsoFileSource.
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.
IsoFindCondition * iso_new_find_conditions_not(IsoFindCondition *negate)
Create a new condition that check if the given conditions is false.
IsoFindCondition * iso_new_find_conditions_atime(time_t time, enum iso_find_comparisons comparison)
Create a new condition that checks the time of last access.
int iso_error_get_code(int e)
Get the message queue code of a libisofs error.
int iso_dir_get_node(IsoDir *dir, const char *name, IsoNode **node)
Locate a node inside a given dir.
Data source used by libisofs for reading an existing image.
void iso_image_set_volset_id(IsoImage *image, const char *volset_id)
Fill in the volset identifier for a image.
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.
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 ver...
void(* get_id)(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id, ino_t *ino_id)
Get an unique identifier for the IsoStream.
int iso_set_msgs_severities(char *queue_severity, char *print_severity, char *print_id)
Control queueing and stderr printing of messages from libisofs.
int iso_tree_add_new_file(IsoDir *parent, const char *name, IsoStream *stream, IsoFile **file)
Add a new regular file to the iso tree.
int iso_lib_is_compatible(int major, int minor, int micro)
Check at runtime if the library is ABI compatible with the given version.
int el_torito_set_boot_platform_id(ElToritoBootImage *bootimg, uint8_t id)
Sets the platform ID of the boot image.
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...
void iso_image_set_copyright_file_id(IsoImage *image, const char *copyright_file_id)
Fill copyright information for the image.
int iso_image_give_up_mips_boot(IsoImage *image, int flag)
Clear the list of MIPS Big Endian boot file paths.
IsoHfsplusBlessings
HFS+ blessings are relationships between HFS+ enhanced ISO images and particular files in such images...
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...
IsoFindCondition * iso_new_find_conditions_name(const char *wildcard)
Create a new condition that checks if the node name matches the given wildcard.
int iso_write_opts_attach_jte(IsoWriteOpts *opts, void *libjte_handle)
Associate a libjte environment object to the upcomming write run.
int iso_read_opts_set_no_aaip(IsoReadOpts *opts, int noaaip)
Control reading of AAIP informations about ACL and xattr when loading existing images.
int iso_node_set_attrs(IsoNode *node, size_t num_attrs, char **names, size_t *value_lengths, char **values, int flag)
Set the list of xattr which is associated with the node.
int iso_image_get_sparc_core(IsoImage *img, IsoFile **sparc_core, int flag)
Obtain the current setting of iso_image_set_sparc_core().
int(* lstat)(IsoFileSource *src, struct stat *info)
Get information about the file.
IsoDir * iso_node_get_parent(IsoNode *node)
void iso_filesystem_ref(IsoFilesystem *fs)
Take a ref to the given IsoFilesystem.
int iso_image_set_boot_image(IsoImage *image, const char *image_path, enum eltorito_boot_media_type type, const char *catalog_path, ElToritoBootImage **boot)
Create a new set of El-Torito bootable images by adding a boot catalog and the default boot image...
int iso_read_opts_set_no_md5(IsoReadOpts *opts, int no_md5)
Control reading of an array of MD5 checksums which is eventually stored at the end of a session...
int iso_tree_clone(IsoNode *node, IsoDir *new_parent, char *new_name, IsoNode **new_node, int flag)
Create a copy of the given node under a different path.
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.
char * iso_file_source_get_name(IsoFileSource *src)
Get the name of the file, with the dir component of the path.
struct Iso_Special IsoSpecial
An special file in the iso tree.
char * iso_get_local_charset(int flag)
Obtain the local charset as currently assumed by libisofs.
void iso_image_remove_boot_image(IsoImage *image)
Removes all El-Torito boot images from the ISO image.
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 dire...
int iso_file_source_get_aa_string(IsoFileSource *src, unsigned char **aa_string, int flag)
Get the AAIP string with encoded ACL and xattr.
int iso_image_hfsplus_get_blessed(IsoImage *img, IsoNode ***blessed_nodes, int *bless_max, int flag)
Get the array of nodes which are currently blessed.
int iso_ring_buffer_get_status(struct burn_source *b, size_t *size, size_t *free_bytes)
Get the status of the buffer used by a burn_source.
int iso_read_opts_set_default_gid(IsoReadOpts *opts, gid_t gid)
Set default gid for files when RR extensions are not present.
int(* access)(IsoFileSource *src)
Check if the process has access to read file contents.
int iso_image_update_sizes(IsoImage *image)
Update the sizes of all files added to image.
int iso_read_image_features_has_rockridge(IsoReadImageFeatures *f)
Whether RockRidge extensions are present in the image imported.
IsoFindCondition * iso_new_find_conditions_or(IsoFindCondition *a, IsoFindCondition *b)
Create a new condition that check if at least one the two given conditions is valid.
int iso_stream_close(IsoStream *stream)
Close a previously openned IsoStream.
const char * iso_image_get_biblio_file_id(const IsoImage *image)
Get the biblio information of a image.
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.
void iso_image_set_ignore_aclea(IsoImage *image, int what)
Control whether ACL and xattr will be imported from external filesystems (typically the local POSIX f...
gid_t iso_node_get_gid(const IsoNode *node)
Get the group id of the node.
int iso_image_report_el_torito(IsoImage *image, char ***reply, int *line_count, int flag)
Obtain an array of texts describing the detected properties of the eventually loaded El Torito boot i...
int(* stat)(IsoFileSource *src, struct stat *info)
Get information about the file.
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...
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_creat...
off_t iso_file_source_lseek(IsoFileSource *src, off_t offset, int flag)
Repositions the offset of the given IsoFileSource (must be opened) to the given offset according to t...
const char * iso_image_fs_get_abstract_file_id(IsoImageFilesystem *fs)
Get the abstract file identifier for an existent image.
int iso_dir_iter_has_next(IsoDirIter *iter)
Check if there're more children.
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 al...
enum iso_replace_mode iso_tree_get_replace_mode(IsoImage *image)
Get current setting for replace_mode.
int iso_node_take(IsoNode *node)
Removes a child from a directory.
int iso_node_lookup_attr(IsoNode *node, char *name, size_t *value_length, char **value, int flag)
Obtain the value of a particular xattr name.
int iso_dir_iter_remove(IsoDirIter *iter)
Removes a child from a directory during an iteration and unref() it.
int iso_set_local_charset(char *name, int flag)
Override the reply of libc function nl_langinfo(CODESET) which may or may not give the name of the ch...
Parameter set for iso_zisofs_set_params().
int(* cmp_ino)(IsoStream *s1, IsoStream *s2)
Compare two streams whether they are based on the same input and will produce the same output...
int iso_zisofs_set_params(struct iso_zisofs_ctrl *params, int flag)
Set the global parameters for zisofs filtering.
void * iso_get_messenger()
Return the messenger object handle used by libisofs.
int iso_dir_get_children(const IsoDir *dir, IsoDirIter **iter)
Get an iterator for the children of the given dir.
const char * iso_image_get_app_use(IsoImage *image)
Get the current setting for the Application Use field of the Primary Volume Descriptor.
char type[4]
Type of Stream.
int iso_file_get_old_image_sections(IsoFile *file, int *section_count, struct iso_file_section **sections, int flag)
Get the start addresses and the sizes of the data extents of a file node if it was imported from an o...
int iso_image_get_mips_boot_files(IsoImage *image, char *paths[15], int flag)
Obtain the number of added MIPS Big Endian boot files and pointers to their paths in the ISO 9660 Roc...
void(* free)(IsoFilesystem *fs)
Free implementation specific data.
int iso_write_opts_set_iso1999(IsoWriteOpts *opts, int enable)
Whether to use newer ISO-9660:1999 version.
int iso_image_set_boot_catalog_weight(IsoImage *image, int sort_weight)
Sets the sort weight of the boot catalog that is attached to an IsoImage.
const char * iso_image_get_application_id(const IsoImage *image)
Get the application id of a image.
void iso_stream_unref(IsoStream *stream)
Decrement reference count of an IsoStream, and eventually free it if refcount reach 0...
eltorito_boot_media_type
El-Torito bootable image type.
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 ...
IsoFindCondition * iso_new_find_conditions_mode(mode_t mask)
Create a new condition that checks the node mode against a mode mask.
IsoNodeType
The type of an IsoNode.
int iso_file_source_readdir(IsoFileSource *src, IsoFileSource **child)
Read a directory.
void iso_image_set_biblio_file_id(IsoImage *image, const char *biblio_file_id)
Fill biblio information for the image.
int iso_file_add_external_filter(IsoFile *file, IsoExternalFilterCommand *cmd, int flag)
Install an external filter command on top of the content stream of a data file.
int iso_md5_compute(void *md5_context, char *data, int datalen)
Advance the computation of a MD5 checksum by a chunk of data bytes.
int iso_image_add_mips_boot_file(IsoImage *image, char *path, int flag)
Add a MIPS boot file path to the image.
int(* update_size)(IsoStream *stream)
Update the size of the IsoStream with the current size of the underlying source, if the source is pro...
void iso_node_set_sort_weight(IsoNode *node, int w)
Sets the order in which a node will be written on image.
int el_torito_set_isolinux_options(ElToritoBootImage *bootimg, int options, int flag)
Specifies options for ISOLINUX or GRUB boot images.
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_sou...
int(* open)(IsoFilesystem *fs)
Opens the filesystem for several read operations.
const char * iso_image_fs_get_copyright_file_id(IsoImageFilesystem *fs)
Get the copyright file identifier for an existent image.
int iso_read_opts_set_input_charset(IsoReadOpts *opts, const char *charset)
Set the input charset of the file names on the image.
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.
void iso_image_set_system_id(IsoImage *image, const char *system_id)
Fill in the system id for a image.
int iso_read_opts_set_new_inos(IsoReadOpts *opts, int new_inos)
Control discarding of eventual inode numbers from existing images.
uint32_t iso_read_image_features_get_size(IsoReadImageFeatures *f)
Get the size (in 2048 byte block) of the image, as reported in the PVM.
int iso_image_get_system_area(IsoImage *img, char data[32768], int *options, int flag)
Obtain a copy of the eventually loaded first 32768 bytes of the imported session, the System Area...
void iso_image_unref(IsoImage *image)
Decrements the reference couting of the given image.
iso_replace_mode
Replace mode used when addding a node to a directory.
void iso_tree_set_ignore_hidden(IsoImage *image, int skip)
Set whether to skip or not disk files with names beginning by '.
iso_find_comparisons
Possible comparison between IsoNode and given conditions.
HFS+ attributes which may be attached to IsoNode objects as data parameter of iso_node_add_xinfo().
void iso_node_set_permissions(IsoNode *node, mode_t mode)
Set the permissions for the node.
void iso_node_set_gid(IsoNode *node, gid_t gid)
Set the group id for the node.
int iso_local_attr_support(int flag)
libisofs has an internal system dependent adapter to ACL and xattr operations.
const char * iso_image_fs_get_publisher_id(IsoImageFilesystem *fs)
Get the publisher identifier for an existent image.
int iso_read_image_features_has_joliet(IsoReadImageFeatures *f)
Whether Joliet extensions are present in the image imported.
void iso_node_ref(IsoNode *node)
Increments the reference counting of the given node.
int iso_stream_cmp_ino(IsoStream *s1, IsoStream *s2, int flag)
Compare two streams whether they are based on the same input and will produce the same output...
int iso_file_source_readlink(IsoFileSource *src, char *buf, size_t bufsiz)
Read the destination of a symlink.
Hide the node in the ECMA-119 / RR tree.
struct iso_read_opts IsoReadOpts
Options for image reading or import.
IsoFilesystem * iso_file_source_get_filesystem(IsoFileSource *src)
Get the filesystem for this source.
int(* iso_node_xinfo_func)(void *data, int flag)
Class of functions to handle particular extended information.
int iso_node_add_xinfo(IsoNode *node, iso_node_xinfo_func proc, void *data)
Add extended information to the given node.
int iso_hfsplus_xinfo_func(void *data, int flag)
The function that is used to mark struct iso_hfsplus_xinfo_data at IsoNodes and finally disposes such...
mode_t iso_node_get_permissions(const IsoNode *node)
Get the permissions for the node.
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 represent...
int iso_image_get_pvd_times(IsoImage *image, char **creation_time, char **modification_time, char **expiration_time, char **effective_time)
Get the four timestamps from the Primary Volume Descriptor of the imported ISO image.
void iso_dir_iter_free(IsoDirIter *iter)
Free a dir iterator.
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.
int iso_write_opts_set_iso_level(IsoWriteOpts *opts, int level)
Set the ISO-9960 level to write at.
time_t iso_node_get_mtime(const IsoNode *node)
Get the time of last modification of the file.
int iso_write_opts_set_fat(IsoWriteOpts *opts, int enable)
Production of FAT32 is not implemented yet.
int iso_write_opts_set_part_offset(IsoWriteOpts *opts, uint32_t block_offset_2k, int secs_512_per_head, int heads_per_cyl)
const char * iso_image_fs_get_data_preparer_id(IsoImageFilesystem *fs)
Get the data preparer identifier for an existent image.
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.
int(* open)(IsoDataSource *src)
Opens the given source.
void iso_read_image_features_destroy(IsoReadImageFeatures *f)
Destroy an IsoReadImageFeatures object obtained with iso_image_import.
int iso_text_to_sev(char *severity_name, int *severity_number)
Convert a severity name into a severity number, which gives the severity rank of the name...
int iso_read_opts_set_start_block(IsoReadOpts *opts, uint32_t block)
Set the block where the image begins.
int iso_file_add_gzip_filter(IsoFile *file, int flag)
Install a gzip or gunzip filter on top of the content stream of a data file.
void iso_read_opts_free(IsoReadOpts *opts)
Free an IsoReadOpts previously allocated with iso_read_opts_new().
void iso_tree_set_replace_mode(IsoImage *image, enum iso_replace_mode mode)
Set the replace mode, that defines the behavior of libisofs when adding a node whit the same name tha...
int iso_tree_add_exclude(IsoImage *image, const char *path)
Add a excluded path.
int iso_stream_open(IsoStream *stream)
Opens the given stream.
int(* read)(IsoFileSource *src, void *buf, size_t count)
Attempts to read up to count bytes from the given source into the buffer starting at buf...
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.
int iso_tree_add_new_node(IsoImage *image, IsoDir *parent, const char *name, const char *path, IsoNode **node)
This is a more versatile form of iso_tree_add_node which allows to set the node name in ISO image alr...
int iso_dir_find_children(IsoDir *dir, IsoFindCondition *cond, IsoDirIter **iter)
Find all directory children that match the given condition.
int iso_image_hfsplus_bless(IsoImage *img, enum IsoHfsplusBlessings blessing, IsoNode *node, int flag)
Issue a blessing to a particular IsoNode.
IsoDir * iso_image_get_root(const IsoImage *image)
Get the root directory of the image.
Replace with the new node if its ctime is newer than the old one.
int iso_node_get_hidden(IsoNode *node)
Get the hide_attrs as eventually set by iso_node_set_hidden().
mode_t iso_node_get_mode(const IsoNode *node)
Get the mode of the node, both permissions and file type, as specified in 'man 2 stat'.