Compare commits

..

92 Commits

Author SHA1 Message Date
3a4a03a4c6 Promoted branch to tag 2010-10-26 12:02:32 +00:00
ba5c0c7be9 Documented changes and release timestamp 2010-10-26 10:24:39 +00:00
7436e99f5e Version leap to libisoburn-0.6.2 2010-10-26 10:23:00 +00:00
d2b130c079 Branching for libisoburn release 0.6.4 2010-10-26 09:25:21 +00:00
5deefe053b Adapted GNU xorriso to version leap libisofs-0.6.39 2010-10-23 16:23:27 +00:00
5f798e535b Requiring libisofs-0.6.38 now 2010-10-23 16:22:38 +00:00
2e7d10b6b7 Corrected -check_media handling of last track on BD-R resp. BD-ROM 2010-10-21 18:04:07 +00:00
d4872c7d83 Requiring libburn-0.8.8 now 2010-10-20 17:06:07 +00:00
32a7b0fd4d Version leap to libburn-0.8.9 2010-10-20 17:04:51 +00:00
61e803a3a7 Cancelling libisofs write thread in case of early libburn end 2010-10-20 07:52:47 +00:00
47d6c59b26 Avoiding potential endless write pacifier loop. Introduced with rev 3432. 2010-10-19 17:07:21 +00:00
ae886b6154 Minor adjustments 2010-10-19 10:48:37 +00:00
b16dfb5cad New option -append_partition, -as mkisofs -append_partition 2010-10-18 21:22:23 +00:00
caffd6c7da New option -append_partition, -as mkisofs -append_partition 2010-10-18 16:01:49 +00:00
38e1dc8a22 New API calls isoburn_igopt_set_partition_img, isoburn_igopt_get_partition_img 2010-10-18 15:54:46 +00:00
25f1eab3ac United macro Xorriso_jte_standalonE with macro Xorriso_standalonE 2010-10-15 12:55:03 +00:00
b7030ca35b Included libjte in GNU xorriso 2010-10-15 12:16:12 +00:00
3ff054d60f -boot_image mipsel_path= , -as mkisofs -mipsel-boot. 2010-10-15 11:21:30 +00:00
3abcb244c7 Polished and documented MIPS booting option 2010-10-13 17:07:05 +00:00
97415e3f63 Lifted the ban to combine MIPS Big Endian boot with El Torito 2010-10-12 18:31:54 +00:00
2e956586c1 Provisorily: -boot_image mips_path= , -as mkisofs -mips-boot. No Eltorito then. 2010-10-12 10:32:22 +00:00
e7992747e5 Allowed to set System Area type via isoburn_igopt_set_system_area() 2010-10-12 10:30:47 +00:00
7019473212 Removed unrelated copyright statements from libisoburn COPYRIGHT 2010-10-08 11:33:47 +00:00
0b175bab97 Fixed inability to compile without enabled libjte. Introduced by rev 3429. 2010-10-08 09:34:07 +00:00
ba0871a814 Corrected compile problems introduced with rev 3433 2010-10-07 18:13:58 +00:00
399cbf6d66 Enhanced xorriso docs about meaning of .md5 file addresses 2010-10-07 17:53:54 +00:00
55c8f1d964 Preparing for GNU xorriso to include libjte source 2010-10-07 11:49:41 +00:00
82941f4c99 Fixed a theoretically possible race condition of burn end and ISO generator end 2010-10-06 16:30:54 +00:00
b70f5a9041 Fixed a potential SIGSEGV by pointer offset -1. Detected by valgrind. 2010-10-05 18:00:52 +00:00
96ee0fae23 Reporting libjte version with option -version 2010-10-04 15:52:50 +00:00
0159052d92 Tests for version of libjte, new API call isoburn_libjte_req() 2010-10-04 15:51:37 +00:00
f46bcf9d5f Silenced compiler warning about unused variable 2010-10-04 11:32:04 +00:00
e942108ad7 Enabled use of libjte message list 2010-10-04 11:22:58 +00:00
25460413ce Corrected xorriso docs about meaning of -jigdo-map and .md5 file addresses 2010-10-03 17:15:08 +00:00
9b788a2c32 Reacting with FATAL event on failure to create libjte_handle 2010-10-03 17:13:25 +00:00
0b263e8c78 Forgot to commit ChangeLog 2010-10-03 08:26:34 +00:00
851dd76849 New -as mkisofs options -checksum_algorithm_iso, -checksum_algorithm_template 2010-10-03 08:23:32 +00:00
5a3acfc41a Letting libisofs do the padding with -jigdo, rather than disabling padding 2010-10-02 21:03:29 +00:00
147ef216ce New API call isoburn_igopt_set_tail_blocks() 2010-10-02 21:00:49 +00:00
c41c83b279 Requiring libisofs-0.6.37 now 2010-10-02 16:43:28 +00:00
68dc026cf9 Added a blank to xorriso Preparer Id string 2010-10-02 15:03:02 +00:00
6f2aac75ce New -as mkisofs option -jigdo-template-compress 2010-10-02 12:12:13 +00:00
3bec7c5c77 Made two non-public parameters independent of Xorriso_with_libjtE 2010-10-01 19:02:57 +00:00
4c81b329ef Switched from old libjte API names to new ones 2010-09-30 07:42:32 +00:00
daebb44722 Enabled -status -jigdo 2010-09-29 16:41:48 +00:00
54a493f382 New option -jigdo 2010-09-29 15:28:57 +00:00
e4ef8c6582 Avoided trailing 64 kB alignment with -compliance no_emul_toc 2010-09-29 12:44:49 +00:00
d02bd410b3 Enabled use of libjte for GNU xorriso 2010-09-29 09:25:59 +00:00
7b4bd76d9b New -as mkisofs options -jigdo-* and -md5-list as of genisoimage 2010-09-29 09:24:20 +00:00
538b70068f New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte() 2010-09-29 09:16:04 +00:00
d5583ce58c Updated partition offset wike about GRUB experiment 2010-09-29 08:55:30 +00:00
be11642977 Reporting BD spare area info with -list_formats 2010-09-24 11:09:09 +00:00
4fd78f9049 Requiring libburn-0.8.7 now 2010-09-24 11:07:57 +00:00
d02d8642b9 Explaining the partition offset feature 2010-09-23 13:56:22 +00:00
b86abe8c65 Mentioned --disable-ldconfig-at-install 2010-09-22 10:56:52 +00:00
41d0d1c03f On Linux: More tolerance towards failures of ldconfig 2010-09-21 15:03:56 +00:00
4b3a671d27 On Linux: Run ldconfig during make install,if not --disable-ldconfig-at-install 2010-09-21 14:25:46 +00:00
aeaa715d8d Documented changes and release timestamp 2010-09-19 15:08:36 +00:00
641b696764 Fixed a bug with uninitialized variable introduced by rev 3364 2010-09-19 13:54:45 +00:00
c2ff24cf89 Version leap to libisoburn-0.6.3 2010-09-19 13:53:42 +00:00
b82abcf210 Version leap to libburn-0.8.7 2010-09-17 08:22:19 +00:00
252a845f2b Adapted GNU xorriso to version leap libisofs-0.6.37 2010-09-15 09:20:58 +00:00
44310ae57e Requiring libisofs-0.6.36 now 2010-09-15 09:16:32 +00:00
8d9d900608 Meaningful change log file derived by George Danchev from web site 2010-09-15 06:57:53 +00:00
06c1540797 Removed development marks 2010-09-11 12:51:27 +00:00
cc672d525b Removed development marks 2010-09-11 12:50:36 +00:00
8239d082ca Enabled multi-session with partition offset 2010-09-10 17:13:00 +00:00
d54efd4bc2 Enabled multi-session with partition offset 2010-09-10 17:10:03 +00:00
5af8ad46f4 Bug fix: Re-enabled use of iso_write_opts_set_rrip_1_10_px_ino() 2010-09-06 10:34:35 +00:00
9ce2aabe28 New -as mkisofs options -partition_offset, -partition_hd_cyl, -partition_sec_hd 2010-09-05 11:40:13 +00:00
21bd5b5d42 New boot_image boot specs partition_offset, partition_hd_cyl, partition_sec_hd 2010-09-05 11:37:45 +00:00
0e755f48c9 New API function isoburn_igopt_set_part_offset(), requiring libisofs 0.6.35 2010-09-05 11:36:53 +00:00
4e4b789753 This was obviously forgotten to commit with rev 3289 2010-09-04 10:08:55 +00:00
87ebfde08b Mentioned support for DVD-R DL as single-session media 2010-08-21 10:30:45 +00:00
4771254d1f New -as mkisofs option -hard-disk-boot, enabled -b without -no-emul-boot 2010-08-18 18:19:30 +00:00
689bcf0168 New -boot_image specifier emul_type=none|hard_disk|floppy 2010-08-18 18:17:14 +00:00
fb35f70c6e New -as mkisofs option -e from Fedora genisoimage 2010-08-18 10:33:04 +00:00
3d933149ff Hopefully silenced warnings of doxygen on Debian buildd 2010-08-09 09:21:16 +00:00
6c939780e8 Missing device,inode numbers caused -compare_r to report a difference 2010-07-31 08:55:15 +00:00
d06c6e69f8 Corrected FILE_PATTERNS 2010-07-30 17:10:22 +00:00
1c0ee8fc32 Removed problematic DETAILS_AT_TOP to silence warning of Debian buildd 2010-07-30 17:06:40 +00:00
3ee02c766d New option -preparer_id, -as mkisofs options -p and -preparer 2010-07-30 15:52:09 +00:00
bb16a5615f Corrected manual text about -read_mkisofsrc 2010-07-29 20:17:05 +00:00
d78b29005d Detached make target "doc" from target "all". 2010-07-29 16:50:16 +00:00
df685e89ac Made behavior of -as mkisofs with unknown options more similar to original 2010-07-08 15:59:45 +00:00
1942a636f3 Mentioned that public API calls must be in libisofs/libisofs.ver 2010-07-06 11:45:45 +00:00
050871e1f2 Let configure perform linker test with --version-script if enabled 2010-07-06 11:41:46 +00:00
a58ca098b7 Hiding all non-API symbols from the linker by use of --version-script 2010-07-05 12:29:50 +00:00
75f864a061 Removed definition of phantom xorriso options 2010-07-05 09:05:01 +00:00
592424a420 Added -L/usr/local/lib to libisoburn LDFLAGS for Solaris 2010-07-04 13:30:32 +00:00
f2ac46cbc0 Documented changes and release timestamp 2010-07-02 20:26:48 +00:00
04bd02972d Version leap to libisoburn-0.6.1 2010-07-02 20:25:51 +00:00
48 changed files with 4642 additions and 509 deletions

View File

@ -3,10 +3,6 @@ Vreixo Formoso <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
libisoburn is Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
xorriso is Copyright (C) 2007-2010 Thomas Schmitt
libisofs (if included) is Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic
libburn (if included) is Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
and Copyright (C) 2006-2010 Mario Danic, Thomas Schmitt
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2

382
ChangeLog Normal file
View File

@ -0,0 +1,382 @@
SVN trunk (to become libisoburn-0.6.6.pl00.tar.gz)
===============================================================================
libisoburn novelties:
- none yet -
xorriso novelties:
- none yet -
libisoburn-0.6.4.pl00.tar.gz Tue Oct 26 2010
===============================================================================
libisoburn novelties:
* New API call isoburn_libjte_req()
* New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte()
* New API call isoburn_igopt_set_tail_blocks()
* New API call isoburn_libjte_req()
xorriso novelties:
* New option -jigdo
* New -as mkisofs options -jigdo-* and -md5-list as of genisoimage
* New -as mkisofs options -checksum_algorithm_iso, -checksum_algorithm_template
* New bootspecs mips_path= and mipsel_path= for Debian MIPS releases
* New -as mkisofs options -mips-boot and -mipsel-boot
* New option -append_partition, -as mkisofs -append_partition
libisoburn-0.6.2.pl00.tar.gz Sat Sep 18 2010
===============================================================================
libisoburn novelties:
* New API function isoburn_igopt_set_part_offset()
* Hiding all non-API symbols from the linker by use of --version-script
* Now with history of release notes in ./ChangeLog file.
xorriso novelties:
* Bug fix: Regression with -hardlinks and -compliance old_rr, 0.4.2, Aug 2009
* New option -preparer_id, -as mkisofs options -p and -preparer
* New -boot_image specifier emul_type=none|hard_disk|floppy
* New boot_image boot specs partition_offset,partition_hd_cyl,partition_sec_hd
* Made behavior of -as mkisofs with unknown options more similar to original
* New -as mkisofs option -hard-disk-boot, enabled -b without -no-emul-boot
* New -as mkisofs option -e from Fedora genisoimage
* New -as mkisofs options -partition_offset,-partition_hd_cyl,-partition_sec_hd
libisoburn-0.6.0.pl00.tar.gz Fri Jul 02 2010
===============================================================================
libisoburn novelties:
xorriso novelties:
* New option -read_mkisofsrc interprets .mkisofsrc To be performed before -as
mkisofs. Performed automatically with program alias name "xorrisofs".
* Implemented -as mkisofs options -dir-mode, -file-mode, -abstract, -biblio,
-copyright
* Implemented -as mkisofs options -hide, -hide-joliet, -hide-list,
-hide-joliet-list
* New -as mkisofs option --boot-catalog-hide
* New option -hide, -find action -hide, -find test -hidden
* New -boot_image bootspec cat_hidden=on
* New options -copright_file , -biblio_file , -abstract_file
* New find test -disk_name
* Enabled use of libreadline on Solaris
* Bug fix: -check_media patch_lba0= could install wrong image size
* Bug fix: -as mkisofs option -volset was wrongly interpreted like -volid
libisoburn-0.5.8.pl00.tar.gz Mon Jun 14 2010
===============================================================================
libisoburn novelties:
* xorriso source split into more modules, object code moved into libisoburn
xorriso novelties:
* New write extension option isoburn_igopt_no_emul_toc
* New -compliance rule no_emul_toc, new -as mkisofs --no-emul-toc
* Implemented -as cdrecord -V
* Implemented -as mkisofs options -U, -N, -l, -d, -allow-lowercase
libisoburn-0.5.6.pl00.tar.gz Tue May 04 2010
===============================================================================
libisoburn novelties:
xorriso novelties:
* Allowing up to 32 boot images
* New -boot_image bootspecs
efi_path=, platform_id=, sel_crit=, id_string=, next
* New -as mkisofs options --efi-boot, -eltorito-alt-boot
libisoburn-0.5.4.pl00.tar.gz Mon Apr 19 2010
===============================================================================
libisoburn novelties:
* New API call isoburn_igopt_set_system_area()
* New API call isoburn_igopt_set_pvd_times()
* New isoburn_igopt_set_relaxed() options: only_iso_versions, no_j_force_dots
xorriso novelties:
* New -boot_image any system_area=, -as mkisofs option -G
* New -boot_image grub partition_table=on, -as mkisofs --protective-msdos-label
* New -boot_image isolinux partition_table=on, -as mkisofs -isohybrid-mbr
* New option -volume_date, -as mkisofs --modification-date=
* New -find action mkisofs_r,-as mkisofs -r
* New -find action sort_weight, -as mkisofs --sort-weight
* New -compliance options only_iso_version, no_j_force_dots avoid
a bug in GRUB 1.96. They are default now.
libisoburn-0.5.2.pl00.tar.gz Tue Mar 30 2010
===============================================================================
xorriso novelties:
* xorriso documentation is now based on a hybrid format of Texinfo and man-
page. Copies included: .texi, .info, .1 (man page)
libisoburn-0.5.0.pl00.tar.gz Tue Feb 22 2010
===============================================================================
xorriso novelties:
* The former xorriso-standalone project is now GNU xorriso under GPLv3+. This
affects some documentation and the generator script, but not the license of
libisoburn or its program xorriso.
* Bug fix: xorriso -update_r could lead to SIGSEGV if applied to a data file
rather than a directory.
* Bug fix on FreeBSD: xorriso could leave the drive tray locked.
* New option -scsi_log
libisoburn-0.4.8.pl00.tar.gz Tue Jan 26 2010
===============================================================================
xorriso novelties:
* Bug fix: xorriso did not blank CD-RW with images that were prepared
on hard disk.
* New configure option --enable-libcdio for system adapter to libcdio-0.83git
libisoburn-0.4.6.pl00.tar.gz Wed Dec 09 2009
===============================================================================
xorriso novelties:
* New options -dvd_obs and -stdio_sync
* New configure option --enable-dvd-obs-64k
libisoburn-0.4.4.pl00.tar.gz Wed Oct 28 2009
===============================================================================
xorriso novelties:
* Bug fix: With -as cdrecord : -xa1 and -xamix were ignored although they do
matter.
* Option -toc now reports the individual media type. E.g. with a DVD+RW:
"Media product: RICOHJPN/W11/49 , Ricoh Company Limited"
* New option -pvd_info displays image id strings. New options -system_id , -
volset_id allow to set such image id strings.
* New option -mount_opts tries to circumvent an eventual ban to mount the same
device twice. Some Linux systems allow to mount two sessions of the same
media only if they get fooled via the loop device.
* New option -scdbackup_tag performs the task of the scdbackup MD5 checksum
filter inside xorriso.
Already fixed by patch releases of xorriso-0.4.2:
* Bug fix: -cut_out deleted previously cut-out pieces of the same file
* Bug fix libisofs: Filenames could lose blanks during a multi-session cycle
* Bug fix: -for_backup did not enable -xattr and -md5 if no drive was chosen
yet
* Bug fix: xorrisofs -help, xorrecord -help displayed original xorriso -help
libisoburn-0.4.2.pl02.tar.gz Thu Oct 08 2009
===============================================================================
* Bug fix: -for_backup did not enable -xattr and -md5 if no drive was chosen
yet
* Bug fix: xorrisofs -help, xorrecord -help displayed original xorriso -help
Libisoburn 0.4.2.pl01
===============================================================================
* Bug fix: xorriso option -cut_out deleted previously cut-out pieces of the
same file. The bug was introduced with release 0.1.4 in March 2008.
Libisoburn 0.4.2
===============================================================================
* New write options isoburn_igopt_session_md5, isoburn_igopt_file_md5,
isoburn_igopt_file_stability allow to record MD5 checksums of session and
single data files.
* New read option isoburn_ropt_nomd5 allows to read those MD5 sums when
importing an ISO image.
xorriso novelties:
* New option -md5, new -as mkisofs option --md5 allow to record in the image
MD5 checksums for the whole session and for each single data file.
* New options -check_md5, -check_md5_r allow to verify the whole session or
single files by comparing their image data with their MD5 sums.
* Options -compare, -compare_r, -update, update_r now can use recorded MD5.
* New -find actions check_md5, get_md5, make_md5 allow to check, to display or
to recompute MD5 checksums of data files. New find test -has_md5
distinguishes data files which have recorded MD5 from files which have none.
* New -find test -has_any_xattr and action get_any_xattr allow to inspect the
libisofs specific attributes of namespace "isofs".
* Options -lsl and lsdl now display correct link counts if -hardlinks is on.
* New option -calm_drive allows to reduce drive noise if no data reading is
intended for a while.
* New option -list_profiles allows to inquire and process the list of supported
media types.
* Bug fix: xorriso -as mkisofs did not understand the -C option of growisofs
any more. (Already fixed by release 0.4.0.pl01, 20 Jul 2009)
libisoburn-0.4.0.pl01.tar.gz Mon Jul 20 2009
===============================================================================
xorriso novelties:
* New option -hardlinks enables recording and restoring of hard link relations.
* Improved reading performance with -update_r and -extract.
* New option -for_backup as shortcut for -acl -xattr -hardlinks
* Operators with option -find : -not, -or, -and, (, ), -if, -then, -else
* New -find tests -wholename, -prune
* Bug fix: SIGSEGV with option -status and no search string
* Bug fix: -load volid did not perform pattern search
* Bug fix: Copies of overwriteable media on sequential were mistaken in ROM
drives
Libisoburn 0.4.0.pl01 release notes:
* Bug fix: xorriso -as mkisofs did not understand the -C option of growisofs
any more
libisoburn-0.3.8.pl00.tar.gz Sun Apr 19 2009
===============================================================================
libisoburn novelties:
* New API calls isoburn_ropt_set_auto_incharset() and
isoburn_ropt_get_auto_incharset()
xorriso novelties:
* New options -set_filter, -set_filter_r, -find -exec set_filter allow to
manipulate the content of data files on the fly.
* New option -zisofs, built-in filters --zisofs , --gzip , --gunzip enable
compression and decompression of data file content.
* New options -external_filter , -unregister_filter, -close_filter_list allow
arbitrary external processes to do content filtering.
* New options -show_stream, -show_stream_r allow to inspect the origin and the
filters of data files in an emerging image.
* New option -auto_charset based on xattr "isofs.cs" allows to tag an ISO
filesystem image with the character set name that is in use on the current
terminal.
libisoburn-0.3.6.pl00.tar.gz Mon Mar 16 2009
===============================================================================
xorriso novelties:
* Dummy MMC adapter of libburn allows compilation on systems other than Linux,
FreeBSD
* Default of -compliance has been changed to "old_rr", new rule "new_rr"
* New -stream_recording modes with start address or "data". "on" is now 32s.
libisoburn-0.3.4.pl00.tar.gz Sun Mar 01 2009
===============================================================================
* New isoburn_read_opts values: isoburn_ropt_noaaip, isoburn_ropt_noacl,
isoburn_ropt_noea
xorriso novelties:
* New option -acl enables ACL import and export
* New options -getfacl, -getfacl_r, -setfacl, -setfacl_r, -setfacl_list
* New find tests -has_acl, -has_no_acl , new find actions getfacl, setfacl
* New option -xattr enables import and export of Extended Attributes
* New options -getfattr, -getfattr_r, -setfattr, -setfattr_r, -setfattr_list
* New find tests -has_xattr, -has_aaip, new find actions getfattr, setfattr
* New -as mkisofs options --acl and --xattr
* New option -disk_dev_ino accelerates incremental backups
libisoburn-0.3.2.pl00.tar.gz Tue Jan 06 2009
===============================================================================
* New API function isoburn_get_mount_params()
* Now depending on libburn-0.6.0 which supports BD-R media
xorriso novelties:
* Bug fix: Options -extract and -extract_single were enabled with -osirrox off
* New options -mount , -mount_cmd , -session_string
* New -format modes by_size_ and fast_by_size_
* New option -assert_volid
* New option -drive_class for safety management of pseudo-drive access
libisoburn-0.3.0.pl00.tar.gz Tue Dec 2 2008
===============================================================================
* Now depending on libisofs-0.6.12 and libburn-0.5.6 to ensure use of their
recent bug fixes
xorriso novelties:
* New options -quoted_path_list, -quoted_not_list
* New option -backslash_codes for weird file names and terminal safety
* New options -charset, -in_charset, -out_charset
* New option -local_charset allows to override locale
* New option -application_id
* New option -compliance allows certain deviations from standards
* Suitable ISOLINUX boot images are made alternatively bootable via an MBR
* Bug fix: Forgot exit value registration to -return_with.
Thanks to Steve Dodd.
* Bug fix: -format as_needed did not recognize unformatted BD-RE
* Bug fix: disk patterns with relative addresses were not properly resolved
libisoburn-0.2.8.pl00.tar.gz Wed Oct 15 2008
===============================================================================
* Now depending on libisofs-0.6.10 and libburn-0.5.4 to ensure use of their
recent bug fixes
xorriso novelties:
* Ability to write and maintain bootable ISO images based on ISOLINUX
* New ./configure option --disable-libreadline to make binary more portable
* Bug fix: -as mkisofs -iso-level was accused to be an unknown option
* Bug fix: -follow link attributed random target filenames to looping links
libisoburn-0.2.6.pl00.tar.gz Sat Sep 20 2008
===============================================================================
xorriso novelties:
* Capability to insert and extract files far larger than 4 GB
* New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
* New option -extract_cut
* New -error_behavior "file_extraction" behavior "best_effort"
* New option -check_media_defaults
* New option -list_delimiter
* Bug fix: -format full did not re-format already formatted DVD+RW
libisoburn-0.2.4.pl00.tar.gz Mo Aug 25 2008
===============================================================================
xorriso novelties:
* New option -check_media
* New -find test -damaged, new -find actions "report_damage", "report_lba"
* New -error_behavior occasion "file_extraction"
libisoburn-0.2.2.pl01.tar.gz Fr Jul 25 2008
===============================================================================
Libisoburn 0.2.2 release notes (Jul 19 2008)
* New API function isoburn_prepare_blind_grow()
* New flag bits with isoburn_set_msc1(), isoburn_read_iso_head()
xorriso novelties:
* New option -grow_blindly
* Options -C and -M for -as mkisofs emulation
* Options for -as cdrecord emulation: -multi, -msinfo, -isosize, tsize, --
grow_overwriteable_iso, write_start_address,
* New option -pacifier, more compatible pacifier with -as mkisofs
* make install creates aliases as symbolic links: osirrox, xorrisofs, xorrecord
* Can serve growisofs if started as xorrisofs, genisofs, mkisofs, genisoimage
pl01 changes (Jul 25 2008):
* Bug fix: Variable DESTDIR was not properly respected during make install
libisoburn-0.2.0.pl00.tar.gz Mon Jun 23 2008
===============================================================================
Libisoburn 0.2.0 release notes:
* New API functions isoburn_set_msgs_submit(), isoburn_drive_set_msgs_submit()
xorriso novelties:
* Bug fix: -chmod unintentionally performed o-x as first operation
* New options -cpax, -cp_rx, -cp_rax, -extract to restore files and trees from
ISO image to disk filesystem.
* New option -paste_in to copy ISO files into parts of disk files
* New options -map_l, -compare_l, -update_l, -extract_l
libisoburn-0.1.8.pl00.tar.gz Tue Jun 3 2008
===============================================================================
* Bug fix: Major,minor numbers of device files appeared as 0,1 in next session
* Bug fix: modifying to overwriteable target yielded unmountable results
xorriso novelties:
* New option -stream_recording for full speed with DVD-RAM and BD-RE
* New options -osirrox and -cpx allow to extract single files from ISO image
libisoburn-0.1.6.pl00.tar.gz Mon May 19 2008
===============================================================================
* Support for BD-RE (by depending on libburn-0.4.8)
* New API wrapper calls isoburn_toc_*() around libburn TOC inquiry calls
* New API call isoburn_read_iso_head() identifies ISO 9660 filesystems
* New API call isoburn_set_msc1() (like mount -o sbsector=)
xorriso novelties:
* Bug fix: -update_r and others did not work properly with relative paths
* New options -map and -map_single
* New options -not_paths, -not_leaf, -not_list, -not_mgt, -as mkisofs -m
* Emulated -toc on overwriteable media, new -toc layout with volume id
* New option -load makes alternative sessions accessible
* New -blank and -format modes 'as_needed'
* New option -list_formats and -format mode 'by_index_'
libisoburn-0.1.4.pl00.tar.gz Wed Apr 30 2008
===============================================================================
* Improved performance with reading directory trees
* xorriso: Improved attribute transfer from disk for target
* xorriso: Incremental backup functionality by new option -update_r
* xorriso: Options -cut_out and split_size map byte intervals of oversized
files into ISO files
* xorriso: Emulation of some basic mkisofs and cdrecord options
* Dynamically linkable with release version 0.6.4 of libisofs
Version 0.1.2 was not released as libisoburn
but only as xorriso standalone version. Wed Mar 12 2008
===============================================================================
* Bug fix: -report_about HINT or higher did not report at all
* Bug fix: speed=number without unit or media type letter was always CD speed
* Bug fix: it was possible to write to appendable media which was not -indev
* Bug fix: -follow param did not work for adding non-directory symbolic links
* Bug fix: It was not possible to -add /THIS=a /b=THIS
* Improved attribute transfer from disk for implicit target directories
* New option -as "cdrecord" emulates a narrow set of cdrecord gestures
* New option -as "mkisofs" emulates a narrow set of mkisofs gestures
* New option -publisher
* New option -errfile_log
* Support for DVD+R/DL media
* New options -compare, -compare_r and according -find -exec action
* New options -update, -update_r and according -find -exec action
* New -find actions "rm", "rm_r", new -findx -type "m" -exec "empty_iso_dir"
* New option -cut_out
libisoburn-0.1.0.pl01.tar.gz Fri Feb 15 2008
===============================================================================
* Initial release of libisoburn/xorriso
* libisoburn connects libisofs and libburn
* libisoburn emulates multi-session on media without session history
* xorriso is an integrated multi-session tool for ISO 9660 Rock Ridge images
* due to a subtle mistake in ABI usage with libisofs this release had to be
restricted to dynamic linking with exactly libisofs-0.6.2 where the mistake
does no harm. A version of libisoburn which is open to all future libisofs
versions will be released shortly after libisofs.0.6.4.

View File

@ -129,6 +129,7 @@ install-exec-hook:
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
$(LIBBURNIA_LDCONFIG_CMD) "$(DESTDIR)$(libdir)" || echo 'NOTE: Explicite dynamic library configuration failed. If needed, configure manually for:' "$(DESTDIR)$(libdir)"
# Alternative to the disabled .PHONY above.
@ -183,7 +184,9 @@ doc/html: doc/doxygen.conf
doc-upload: doc/html
scp -r $</* $(webhost):$(webpath)
all: doc
## Not by default any more.
## It is unclear who is supposed to create file ./doc/doc.lock
# all: doc
install-data-local:
if [ -f ./doc/doc.lock ]; then \
@ -225,12 +228,15 @@ EXTRA_DIST = \
version.h.in \
doc/comments \
doc/doxygen.conf.in \
doc/partition_offset.wiki \
README \
AUTHORS \
CONTRIBUTORS \
COPYRIGHT \
COPYING \
INSTALL \
ChangeLog \
libisoburn/libisoburn.ver \
xorriso/changelog.txt \
xorriso/xorriso_buildstamp_none.h \
xorriso/README_gnu_xorriso \

45
README
View File

@ -4,7 +4,7 @@
libisoburn and xorriso. By Vreixo Formoso <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburnia-project.org.
http://files.libburnia-project.org/releases/libisoburn-0.6.0.pl00.tar.gz
http://files.libburnia-project.org/releases/libisoburn-0.6.4.pl00.tar.gz
Copyright (C) 2006-2010 Vreixo Formoso, Thomas Schmitt.
Provided under GPL version 2 or later.
------------------------------------------------------------------------------
@ -34,17 +34,17 @@ By using this software you agree to the disclaimer at the end of this text:
Compilation, First Glimpse, Installation
Dynamic library and compile time header requirements for libisoburn-0.6.0 :
- libburn.so.4 , version libburn-0.8.4 or higher
- libisofs.so.6 , version libisofs-0.6.34 or higher
Dynamic library and compile time header requirements for libisoburn-0.6.4 :
- libburn.so.4 , version libburn-0.8.8 or higher
- libisofs.so.6 , version libisofs-0.6.38 or higher
libisoburn and xorriso will not start with libraries which are older than their
headers seen at compile time.
include headers seen at compile time.
Obtain libisoburn-0.6.0.pl00.tar.gz, take it to a directory of your choice
Obtain libisoburn-0.6.4.pl00.tar.gz, take it to a directory of your choice
and do:
tar xzf libisoburn-0.6.0.pl00.tar.gz
cd libisoburn-0.6.0
tar xzf libisoburn-0.6.4.pl00.tar.gz
cd libisoburn-0.6.4
Within that directory execute:
@ -55,11 +55,18 @@ Then become superuser and execute
make install
which will make available libisoburn.so.1 and the program xorriso.
For the API concepts and calls see
./libisoburn/libisoburn.h
as well as
/usr/lib/libisofs/libisofs.h
/usr/lib/libburn/libburn.h
On GNU/Linux it will try to run program ldconfig with the library installation
directory as only argument. Failure to do so will not abort installation.
One may disable ldconfig by ./configure option --disable-ldconfig-at-install .
By use of a version script, the libisoburn.so library exposes no other function
names but those of the API definitions in <libisoburn/libisoburn.h> and
<libisoburn/xorriso.h>.
If -Wl,--version-script=... makes problems with the local compiler, then
disable this encapsulation feature by
./configure --disable-versioned-libs
make clean ; make
xorriso
@ -89,6 +96,7 @@ Other deliberate dependency reduction options of ./configure are:
--disable-libacl avoid use of ACL functions like acl_to_text()
--disable-xattr avoid use of xattr functions like listxattr()
--disable-zlib avoid use of zlib functions like compress2()
--disable-libjte avoid use of libjte for -jigdo command
xorriso allows to use external processes as file content filters. This is
a potential security risk which may be avoided by ./configure option
@ -103,6 +111,15 @@ if 64 KB rather than 32 KB are transmitted in each write operation.
--enable-dvd-obs-64k
libisoburn, libisofs, and libburn C language API
For the lower API concepts and calls see
./libisoburn/libisoburn.h
as well as
/usr/include/libisofs/libisofs.h
/usr/include/libburn/libburn.h
xorriso C language API
Actually the dynamically linked xorriso binary is only a small start program
@ -119,7 +136,7 @@ The header file xorriso.h gets installed suitable for
#include <libisoburn/xorriso.h>
So after installation of a binary libisoburn package you may find it e.g. as
/usr/local/include/libisoburn/xorriso.h
/usr/include/libisoburn/xorriso.h
Drives and Disk File Objects

View File

@ -5,6 +5,8 @@ freebsd*)
LDFLAGS="$LDFLAGS -L/usr/local/lib"
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
;;
solaris*)
LDFLAGS="$LDFLAGS -L/usr/local/lib"
esac
])
@ -16,10 +18,12 @@ AC_DEFUN([TARGET_SHIZZLE],
AC_MSG_CHECKING([target operating system])
LIBBURNIA_LDCONFIG_CMD="echo 'No ldconfig run performed. If needed, configure manually for:'"
case $target in
*-*-linux*)
ARCH=linux
LIBBURN_ARCH_LIBS=
LIBBURNIA_LDCONFIG_CMD=ldconfig
;;
*-*-freebsd*)
ARCH=freebsd
@ -191,6 +195,21 @@ AC_DEFUN([LIBBURNIA_ASSERT_READLINE],
])
dnl LIBISOBURN_ASSERT_VERS_LIBS is by Thomas Schmitt, libburnia project
dnl It tests whether -Wl,--version-script=... works with the compiler
AC_DEFUN([LIBISOBURN_ASSERT_VERS_LIBS],
[
libburnia_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -Wl,--version-script=libisoburn/libisoburn.ver"
AC_TRY_LINK([#include <stdio.h>], [printf("Hello\n");],
[vers_libs_test="yes"], [vers_libs_test="no"])
if test x$vers_libs_test = xno
then
LDFLAGS="$libburnia_save_LDFLAGS"
fi
])
dnl LIBBURNIA_SET_PKGCONFIG is by Thomas Schmitt, libburnia project
dnl It determines the install directory for the *.pc file.
dnl Important: Must be performed _after_ TARGET_SHIZZLE

View File

@ -1,4 +1,4 @@
AC_INIT([libisoburn], [0.6.0], [http://libburnia-project.org])
AC_INIT([libisoburn], [0.6.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -23,7 +23,7 @@ dnl
dnl These three are only copies to provide libtool with unused LT_RELEASE
ISOBURN_MAJOR_VERSION=0
ISOBURN_MINOR_VERSION=6
ISOBURN_MICRO_VERSION=0
ISOBURN_MICRO_VERSION=4
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
@ -36,16 +36,16 @@ dnl Libtool versioning
dnl Generate libisoburn.so.1.x.y
dnl SONAME will become LT_CURRENT - LT_AGE
dnl
dnl ts B00702
dnl This is the release version 0.6.0 = libisoburn.so.1.49.0
dnl ts B01026
dnl This is the release version 0.6.4 = libisoburn.so.1.53.0
dnl ### This is the development version after above stable release
dnl LT_CURRENT++, LT_AGE++ have not happened yet.
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
dnl
dnl SONAME = 50 - 49 = 1 . Library name = libisoburn.so.1.49.0
dnl SONAME = 54 - 53 = 1 . Library name = libisoburn.so.1.53.0
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
LT_CURRENT=50
LT_AGE=49
LT_CURRENT=54
LT_AGE=53
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -195,6 +195,17 @@ else
fi
AC_SUBST(ZLIB_DEF)
dnl ts B00928
AC_ARG_ENABLE(libjte,
[ --enable-libjte Enable use of libjte by xorriso, default=yes],
, enable_libjte=yes)
if test "x$enable_libjte" = xyes; then
LIBJTE_DEF="-DXorriso_with_libjtE"
AC_CHECK_HEADER(libjte/libjte.h, AC_CHECK_LIB(jte, libjte_new, , LIBJTE_DEF= ), LIBJTE_DEF= )
else
LIBJTE_DEF=
fi
AC_SUBST(LIBJTE_DEF)
dnl ts B00107
dnl Just for the case that it is necessary to give link option -lcdio not only
@ -241,7 +252,7 @@ AC_SUBST(EXTF_SUID_DEF)
AC_ARG_ENABLE(dvd-obs-64k,
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD/BD writing, default=no],
, enable_fifo_odirect=no)
, enable_dvd_obs_64=no)
if test x$enable_dvd_obs_64k = xyes; then
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
echo "enabled xorriso write size default 64 KB on DVD and BD"
@ -251,6 +262,38 @@ else
fi
AC_SUBST(XORRISO_DVD_OBS_64K)
# Library versioning normally serves a complex purpose.
# Since libisoburn obeys strict ABI backward compatibility, it needs only the
# simple feature to declare function names "global:" or "local:". Only the
# global ones are visible to applications at library load time.
AC_ARG_ENABLE(versioned-libs,
[ --enable-versioned-libs Enable strict symbol encapsulation , default=yes],
, enable_versioned_libs=yes)
if test x$enable_versioned_libs = xyes; then
vers_libs_test=no
LIBISOBURN_ASSERT_VERS_LIBS
if test x$vers_libs_test = xno
then
echo "disabled strict symbol encapsulation (test failed)"
else
echo "enabled strict symbol encapsulation"
fi
else
echo "disabled strict symbol encapsulation"
fi
AC_ARG_ENABLE(ldconfig-at-install,
[ --enable-ldconfig-at-install On GNU/Linux run ldconfig, default=yes],
, ldconfig_at_install=yes)
if test x$ldconfig_at_install = xyes; then
dummy=dummy
else
LIBBURNIA_LDCONFIG_CMD="echo 'NOTE: ldconfig is disabled. If needed, configure manually for:'"
echo "disabled run of ldconfig during installation on GNU/Linux"
fi
AC_SUBST(LIBBURNIA_LDCONFIG_CMD)
AC_CHECK_HEADER(libburn/libburn.h)
AC_CHECK_HEADER(libisofs/libisofs.h)
@ -259,8 +302,8 @@ AC_CHECK_HEADER(libisofs/libisofs.h)
# ------- Visible mark in configure : Start of library check
dnl Check for proper library versions
LIBBURN_REQUIRED=0.8.4
LIBISOFS_REQUIRED=0.6.34
LIBBURN_REQUIRED=0.8.8
LIBISOFS_REQUIRED=0.6.38
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
@ -301,7 +344,7 @@ else
CFLAGS="$CFLAGS -DDEBUG"
fi
CFLAGS="$CFLAGS $READLINE_DEF $LIBACL_DEF $XATTR_DEF $EXTF_DEF $EXTF_SUID_DEF $ZLIB_DEF $XORRISO_DVD_OBS_64K"
CFLAGS="$CFLAGS $READLINE_DEF $LIBACL_DEF $XATTR_DEF $EXTF_DEF $EXTF_SUID_DEF $ZLIB_DEF $LIBJTE_DEF $XORRISO_DVD_OBS_64K"
AC_CONFIG_FILES([
Makefile

View File

@ -10,7 +10,7 @@ optical discs. This page is about its capability to read, manipulate, and
write ISO 9660 filesystems with Rock Ridge extensions. Media can be optical
media or filesystem objects.
Our scope is currently Linux 2.4 and 2.6, or FreeBSD .
Our scope is currently Linux 2.4 and 2.6, or FreeBSD, or OpenSolaris.
libisoburn is an add-on to libburn and libisofs which coordinates both and
also allows to grow ISO-9660 filesystem images on multi-session media as well
@ -21,7 +21,9 @@ xorriso is an application of all three libraries which creates, loads,
manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
Manipulation is not only adding or overwriting of files but also deletion,
renaming, and attribute changing. An incremental backup feature is provided.
See xorriso/README for more
The xorriso features are accessible via built-in command interpreters and
via a C language API.
SONAME:
libisoburn.so.1 (since 0.1.0, February 2008).
@ -32,7 +34,7 @@ libisoburn.so.1 (since 0.1.0, February 2008).
Our build system is based on autotools.
User experience tells us that you will need at least autotools version 1.7.
To build libisoburn go into its toplevel directory and execute
To build libisoburn go into its toplevel directory and execute:
- ./bootstrap (needed if you downloaded from SVN)
@ -40,14 +42,28 @@ To build libisoburn go into its toplevel directory and execute
- make
To make the libraries accessible for running resp. developing applications
To make the library and the xorriso application accessible for running resp.
software development:
- make install
Read libisoburn/libisoburn.h for a description of the API.
See also README, xorriso/README, and the man page xorriso/xorriso.1 which
gives an idea of the capabilities provided by Libburnia.
For direct use as command line tool use the xorriso binary which among many
other features provides a mkisofs emulation via command "-as mkisofs".
See man page xorriso/xorriso.1 or GNU info document xorriso/xorriso.info.
If you want to link an own application with libisoburn, you have
two alternative APIs for choice:
- libisoburn, together with libburn and libisofs.
- xorriso, a complete representation of xorriso command line options.
It encapsulates the three lower level libraries.
Calls of both API families shall not be mixed.
For a description of the lbisoburn API read libisoburn/libisoburn.h
See file README for download and installation of a release tarball.
You will also have to install and understand the two libraries of the
Libburnia project which provide fundamental services:
libburn is the library by which preformatted data get onto optical media.
@ -55,4 +71,15 @@ See libburn/libburn.h for its API description.
libisofs is the library to handle ISO 9660 filesystems with Rock Ridge
extensions. Its API is described in libisofs/libisofs.h .
For xorriso features see its man page xorriso/xorriso.1 or
its GNU info document xorriso/xorriso.info.
For the corresponding C language API see libisoburn/xorriso.h (resp.
xorriso/xorriso.h in the build directory).
The implementation this API is part of libisoburn.
The xorriso command line tool gets installed as dynamically linked
binary together with libisoburn.
There is also a statically linked release named GNU xorriso.
See xorriso/README_gnu_xorriso for its download and installation.
*/

View File

@ -154,13 +154,6 @@ QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = YES
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
# will output the detailed description near the top, like JavaDoc.
# If set to NO, the detailed description appears after the member
# documentation.
DETAILS_AT_TOP = YES
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
@ -495,7 +488,9 @@ INPUT_ENCODING = UTF-8
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
FILE_PATTERNS =
FILE_PATTERNS = libisoburn.h \
xorriso.h \
comments
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.

191
doc/partition_offset.wiki Normal file
View File

@ -0,0 +1,191 @@
The partition offset feature of libisofs can produce ISO 9660 images which bear
a quite conventional partition table if copied onto a USB stick. The first
partition marks the size of the ISO image but starts at a non-zero address.
Thus it marks a small part of the device as unclaimed by partitions and
available for storing boot loader code.
Nevertheless the USB stick is mountable via its overall device file as well as
via the partition device file. E.g. on GNU/Linux: /dev/sdb and /dev/sdb1.
This is achieved by two distinct sets of meta-data which refer to the same
file content.
The dual-mount feature supports Rock Ridge and eventually Joliet too.
It is capable of multi-session.
Currently only offset 32 kB seems to make sense. Smaller offsets are prohibited
by fundamental assumptions of libisofs and libisoburn. Larger offsets would
extend the unclaimed area into vital blocks of the ISO image.
--------------------------------------------------------------------------
Example:
Testing mountability and ISOLINUX bootability from USB stick and CD.
Overview:
The test image was derived from one year old RIPLinux-9.3-non-X.iso which
has an isohybrid MBR. Syslinux version seems to be 3.82. That MBR and the file
tree from the mounted RIPLinux image was used to build a new ISO image
with 16 * 2kB partition offset. Isohybrid MBR patching was done by xorriso.
Details:
The first 32 kB of an ISO 9660 image are called System Area and may host any
byte pattern. In the case of RIPLinux-9.3-non-X.iso only the first 512 bytes
are non-zero. But to avoid any assumptions, all 32 kB get copied here.
{{{
dd if=RIPLinux-9.3-non-X.iso bs=1K count=32 of=RIPLinux-9.3-non-X.sysarea
}}}
The files of the image are made accessible for reading
{{{
mount -o loop RIPLinux-9.3-non-X.iso /mnt
}}}
A new ISO image gets composed. The first three lines of arguments are taken
from the prescriptions of ISOLINUX wiki and adapted to the names used in
RIPLinux-9.3-non-X.iso.
Option -isohybrid-mbr imports the copied System Area and patches the MBR
according to rules published by hpa on Syslinux mailing list.
Option -partition_offset 16 causes the first partition to start at 2 kB block
number 16. It also prepares the image to be mountable by this partition, too.
{{{
xorriso -as mkisofs \
-o new_image.iso \
-b boot/isolinux/isolinux.bin -c boot/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-isohybrid-mbr RIPLinux-9.3-non-X.sysarea \
-partition_offset 16 \
/mnt
}}}
The image was copied onto a USB stick
{{{
dd if=new_image.iso of=/dev/sdc
}}}
and plugged into a Debian system.
{{{
fdisk -lu /dev/sdb
}}}
yields
{{{
Device Boot Start End Blocks Id System
/dev/sdb1 * 64 119215 59576 17 Hidden HPFS/NTFS
}}}
I can mount /dev/sdb and /dev/sdb1 alike:
{{{
mount /dev/sdb1 /mnt1
mount -o loop /dev/sdb /mnt
}}}
-o loop avoids failure with "mount: /dev/sdb already mounted or /mnt busy".
A comparison by
{{{
diff -r /mnt /mnt1
}}}
reports no difference.
Human readable files look ok.
Test-reading all content by
{{{
tar cf - /mnt | wc
}}}
yields a reasonable byte count of 60743680 and no errors.
The machine boots RIPLinux from this USB stick with no visible problems.
It can then mount /dev/sdb as well as /dev/sdb1.
The ISO image boots from CD too.
Mounting the partition can be simulated with an image file on hard disk by
cutting off the first partition_offset blocks of 2 KB:
{{{
dd if=new_image.iso of=partition_image.iso bs=2048 skip=16
mount -o loop partition_image.iso /mnt1
}}}
--------------------------------------------------------------------------
Another test was made with GRUB 2 by downloading
{{{
bzr branch http://bzr.savannah.gnu.org/r/grub/trunk/grub
}}}
Before building GRUB 2, the file
{{{
util/grub-mkrescue.in
}}}
was edited to replace in the options of the xorriso command:
{{{
--protective-msdos-label
}}}
by
{{{
-partition_offset 16 -no-pad --no-emul-toc
}}}
Then GRUB 2 was built and installed.
The resulting image from
{{{
./grub-mkrescue -o image.iso
}}}
was put onto USB stick. It passed the same tests on Debian
as above RIPLinux example. It boots to a GRUB prompt.
Due to options -no-pad --no-emul-toc the image is about 300 kB smaller than
the image produced by original grub-mkrescue. Else it would have grown by
about 130 kB.
--------------------------------------------------------------------------
Open questions:
- Shall the partition of an isohybrid image be marked bootable ?
Currently xorriso keeps the 0x80 mark of an eventually imported MBR
resp. the 0x80 mark which xorriso eventually sets by its own MBR
preparations.
- If not to be marked bootable:
What equipment would the partition need to justify having the mark ?
- I am still puzzled by the cylinder-head-sector ambiguity. How does a reader
of the partition table determine the numbers for heads/cylinder and
sectors/head ?
fdisk tells about my /dev/sdb
{{{
105 heads, 17 sectors/track, 2193 cylinders, total 3915776 sectors
}}}
My partiton table rather was computed with 255 heads/cylinder, 63 sectors/head
Debian does not mind the difference. (It uses the 32 bit LBAs, i assume.)
------------------------------------------------------------------------
Application:
The partition offset feature can be controlled by libisofs API call
{{{
int iso_write_opts_set_part_offset(IsoWriteOpts *opts,
uint32_t block_offset_2k,
int secs_512_per_head,
int heads_per_cyl);
}}}
resp. by libisoburn calls
{{{
int isoburn_igopt_set_part_offset(struct isoburn_imgen_opts *opts,
uint32_t block_offset_2k,
int secs_512_per_head, int heads_per_cyl);
int isoburn_igopt_get_part_offset(struct isoburn_imgen_opts *opts,
uint32_t *block_offset_2k,
int *secs_512_per_head, int *heads_per_cyl);
}}}
resp. by xorriso options
{{{
-boot_image any partition_offset=(2kb_block_adr)
-boot_image any partition_sec_hd=(number)
-boot_image any partition_hd_cyl=(number)
-as mkisofs ... -partition_offset (2kb_block_adr) ...
}}}
As stated above, an offset larger than 16 would expose vital parts of the
ISO image as unclaimed space. Values smaller than 16 are not accepted.
So use either an offset of 16 blocks or keep the feature disabled by
offset 0.

View File

@ -31,17 +31,21 @@
#include <time.h>
#include <regex.h>
#ifndef Xorriso_standalonE
#include <libburn/libburn.h>
#include <libisofs/libisofs.h>
#ifdef Xorriso_with_libjtE
#include <libjte/libjte.h>
#endif
#else /* ! Xorriso_standalonE */
#include "../libisofs/libisofs.h"
#include "../libburn/libburn.h"
#ifdef Xorriso_with_libjtE
#include "../libjte/libjte.h"
#endif
#endif /* Xorriso_standalonE */
@ -69,10 +73,10 @@ static int isoburn_emulate_toc(struct burn_drive *d, int flag);
int isoburn_initialize(char msg[1024], int flag)
{
int major, minor, micro, bad_match= 0;
int major, minor, micro, bad_match= 0, no_iso_init= 0;
/* First two ugly compile time checks for header version compatibility.
/* First the ugly compile time checks for header version compatibility.
If everthing matches, then they produce no C code. In case of mismatch,
intentionally faulty C code will be inserted.
*/
@ -108,7 +112,7 @@ int isoburn_initialize(char msg[1024], int flag)
#ifdef Isoburn_libisofs_dot_h_too_olD
LIBISOFS_MISCONFIGURATION = 0;
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_h = 0;
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_c = 0;
LIBISOFS_MISCONFIGURATION_ = 0;
#endif
@ -149,15 +153,63 @@ INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libburn_dot_h_TOO_OLD__SEE_libisobu
LIBBURN_MISCONFIGURATION_ = 0;
#endif
#ifdef Xorriso_with_libjtE
/* The minimum requirement of libisoburn towards the libjte header
at compile time is the same as the one of a usable libisfs itowards libjte.
So the requirement is defined in libisofs/libisofs.h :
iso_libjte_req_major , iso_libjte_req_minor , iso_libjte_req_micro
*/
/* The indendation is an advise of man gcc to help old compilers ignoring */
#if iso_libjte_req_major > LIBJTE_VERSION_MAJOR
#define Libisofs_libjte_dot_h_too_olD 1
#endif
#if iso_libjte_req_major == LIBJTE_VERSION_MAJOR && iso_libjte_req_minor > LIBJTE_VERSION_MINOR
#define Libisofs_libjte_dot_h_too_olD 1
#endif
#if iso_libjte_req_minor == LIBJTE_VERSION_MINOR && iso_libjte_req_micro > LIBJTE_VERSION_MICRO
#define Libisofs_libjte_dot_h_too_olD 1
#endif
#ifdef Libisofs_libjte_dot_h_too_olD
LIBJTE_MISCONFIGURATION = 0;
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libjte_dot_h_TOO_OLD__SEE_libisofs_dot_h_AND_burn_wrap.c_c = 0;
LIBJTE_MISCONFIGURATION_ = 0;
#endif
#endif /* Xorriso_with_libjtE */
/* End of ugly compile time tests (scroll up for explanation) */
msg[0]= 0;
#ifdef Xorriso_with_libjtE
libjte__version(&major, &minor, &micro);
sprintf(msg + strlen(msg), "libjte-%d.%d.%d ", major, minor, micro);
if (libjte__is_compatible(LIBJTE_VERSION_MAJOR, LIBJTE_VERSION_MINOR,
LIBJTE_VERSION_MICRO, 0)) {
sprintf(msg+strlen(msg), "ok, ");
} else {
sprintf(msg + strlen(msg),
"- TOO OLD -, need at least libjte-%d.%d.%d ,\n",
LIBJTE_VERSION_MAJOR, LIBJTE_VERSION_MINOR,
LIBJTE_VERSION_MICRO);
bad_match= 1;
no_iso_init= 1; /* iso_init() will fail anyway */
}
#endif /* Xorriso_with_libjtE */
if(!no_iso_init) {
if(iso_init()<0) {
sprintf(msg+strlen(msg), "Cannot initialize libisofs\n");
return(0);
}
}
iso_lib_version(&major, &minor, &micro);
sprintf(msg+strlen(msg), "libisofs-%d.%d.%d ", major, minor, micro);
#ifdef iso_lib_header_version_major
@ -233,6 +285,20 @@ int isoburn_libburn_req(int *major, int *minor, int *micro)
}
/* API @since 0.6.4 */
int isoburn_libjte_req(int *major, int *minor, int *micro)
{
#ifdef Xorriso_with_libjtE
*major= LIBJTE_VERSION_MAJOR;
*minor= LIBJTE_VERSION_MINOR;
*micro= LIBJTE_VERSION_MICRO;
#else
*major= *minor= *micro= 0;
#endif /* ! Xorriso_with_libjtE */
return(1);
}
int isoburn_set_msgs_submit(int (*msgs_submit)(void *handle, int error_code,
char msg_text[], int os_errno,
char severity[], int flag),
@ -1192,7 +1258,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
ret= isoburn_read_iso_head(d, lba, &image_size, NULL, 0);
if(ret<=0)
{ret= 0; goto failure;}
lba= Libisoburn_overwriteable_starT;
lba= o->target_iso_head_size / 2048;
with_enclosure= 1;
if((flag & 16) && o->emulation_mode == 1) {
ret= 1;
@ -1219,7 +1285,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
/* growisofs aligns to 16 rather than 32. Overwriteable TOC emulation
relies on not accidentially seeing inter-session trash data.
But one can safely access 16 blocks earlier because a xorriso header
would have overwritten with the unused 16 blocks at its start.
would have been overwritten with the unused 16 blocks at its start.
If libisoburn alignment would increase, then this would not be
possible any more.
*/

View File

@ -115,7 +115,7 @@ struct isoburn *isoburn_list_start= NULL;
int isoburn_new(struct isoburn **objpt, int flag)
{
struct isoburn *o;
int i, ret;
int ret;
*objpt= o= (struct isoburn *) malloc(sizeof(struct isoburn));
if(o==NULL) {
@ -137,8 +137,9 @@ int isoburn_new(struct isoburn **objpt, int flag)
o->fabricated_disc_status= BURN_DISC_UNREADY;
o->toc= NULL;
o->wrote_well= -1;
for(i=0;i<Libisoburn_target_head_sizE;i++)
o->target_iso_head[i]= 0;
o->loaded_partition_offset= 0;
o->target_iso_head_size= Libisoburn_target_head_sizE;
o->target_iso_head= NULL;
o->image= NULL;
o->iso_data_source= NULL;
o->read_pacifier= NULL;
@ -148,9 +149,15 @@ int isoburn_new(struct isoburn **objpt, int flag)
o->msgs_submit_flag= 0;
o->prev= NULL;
o->next= NULL;
o->target_iso_head= calloc(1, o->target_iso_head_size);
if(o->target_iso_head == NULL) {
isoburn_report_iso_error(ISO_OUT_OF_MEM, "Cannot allocate overwrite buffer",
0, "FATAL", 0);
goto failed;
}
ret= iso_image_new("ISOIMAGE", &o->image);
if(ret<0) {
isoburn_report_iso_error(ret, "Cannot create image", 0, "FATAL", 0);
isoburn_report_iso_error(ret, "Cannot create image object", 0, "FATAL", 0);
goto failed;
}
isoburn_link(o, isoburn_list_start, 1);
@ -188,6 +195,8 @@ int isoburn_destroy(struct isoburn **objpt, int flag)
burn_source_free(o->iso_source);
if(o->iso_data_source!=NULL)
iso_data_source_unref(o->iso_data_source);
if(o->target_iso_head != NULL)
free(o->target_iso_head);
free((char *) o);
*objpt= NULL;
return(1);
@ -346,6 +355,36 @@ int isoburn_msgs_submit(struct isoburn *o, int error_code, char msg_text[],
}
/** Check whether the size of target_iso_head matches the given partition
offset. Eventually adjust size.
*/
int isoburn_adjust_target_iso_head(struct isoburn *o,
uint32_t offst, int flag)
{
uint8_t *new_buf;
uint32_t new_size;
if(o->target_iso_head_size == Libisoburn_target_head_sizE + 2048 * offst)
return(1);
new_size= Libisoburn_target_head_sizE + 2048 * offst;
new_buf= calloc(1, new_size);
if(new_buf == NULL) {
isoburn_msgs_submit(o, 0x00060000,
"Cannot re-allocate overwrite buffer", 0, "FATAL", 0);
return(-1);
}
memcpy(new_buf, o->target_iso_head,
o->target_iso_head_size < new_size ? o->target_iso_head_size : new_size);
free(o->target_iso_head);
o->target_iso_head= new_buf;
o->target_iso_head_size= new_size;
if(o->nwa == o->zero_nwa)
o->nwa= Libisoburn_overwriteable_starT + offst;
o->zero_nwa= Libisoburn_overwriteable_starT + offst;
return(1);
}
/* @param flag bit0= modifying rather than growing
bit1= prepare for early release of input drive:
wait until input and then disable image data source
@ -398,6 +437,12 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
0, "FAILURE", 0);
{ret= -2; goto ex;}
}
if (state != BURN_DISC_BLANK && opts->libjte_handle != NULL) {
isoburn_msgs_submit(out_o, 0x00060000,
"Jigdo Template Extraction works only on blank target media",
0, "FAILURE", 0);
{ret= -2; goto ex;}
}
fifo_chunks= 32;
if(opts->fifo_size >= 64*1024 && opts->fifo_size <= 1024.0 * 1024.0 * 1024.0){
@ -415,16 +460,9 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
iso_write_opts_set_rockridge(wopts, opts->rockridge);
iso_write_opts_set_joliet(wopts, opts->joliet);
iso_write_opts_set_iso1999(wopts, opts->iso1999);
/* <<< #ifdef shall be removed when libisofs-0.6.20 is released */
#ifdef Libisofs_hardlink_prooF
iso_write_opts_set_hardlinks(wopts, opts->hardlinks);
if(opts->hardlinks)
iso_write_opts_set_rrip_1_10_px_ino(wopts, 1);
#endif
iso_write_opts_set_aaip(wopts, opts->aaip);
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths);
@ -464,11 +502,16 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
opts->vol_creation_time, opts->vol_modification_time,
opts->vol_expiration_time, opts->vol_effective_time,
opts->vol_uuid);
iso_write_opts_attach_jte(wopts, opts->libjte_handle);
if(opts->no_emul_toc) {
ret= isoburn_adjust_target_iso_head(out_o, opts->partition_offset, 0);
if(ret <= 0)
{ret= -1; goto ex;}
if(opts->no_emul_toc || opts->libjte_handle != NULL) {
if(out_o->nwa == out_o->zero_nwa &&
out_o->zero_nwa == Libisoburn_overwriteable_starT &&
out_o->emulation_mode == 1) {
out_o->zero_nwa == Libisoburn_overwriteable_starT
+ opts->partition_offset
&& out_o->emulation_mode == 1) {
out_o->nwa= 0;
out_o->zero_nwa= 0;
out_o->min_start_byte= 0;
@ -486,6 +529,22 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
iso_write_opts_set_appendable(wopts, !new_img);
iso_write_opts_set_overwrite_buf(wopts,
nwa>0 ? out_o->target_iso_head : NULL);
iso_write_opts_set_part_offset(wopts, opts->partition_offset,
opts->partition_secs_per_head,
opts->partition_heads_per_cyl);
iso_write_opts_set_tail_blocks(wopts, opts->tail_blocks);
for(i= 0; i < 4; i++) {
if(opts->appended_partitions[i] == NULL)
continue;
ret= iso_write_opts_set_partition_img(wopts, i + 1,
opts->appended_part_types[i],
opts->appended_partitions[i], 0);
if(ret < 0) {
isoburn_report_iso_error(ret, "Cannot set path for appended partition",
0, "FAILURE", 0);
{ret= -1; goto ex;}
}
}
ret = iso_image_create_burn_source(in_o->image, wopts, &wsrc);
if (ret < 0) {
@ -836,6 +895,7 @@ int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
{
struct isoburn_imgen_opts *o;
int i;
o= (*new_o)= calloc(1, sizeof(struct isoburn_imgen_opts));
if(o==NULL) {
@ -877,18 +937,32 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->data_start_lba= -1;
o->system_area_data= NULL;
o->system_area_options= 0;
o->partition_offset= 0;
o->partition_secs_per_head= 0;
o->partition_heads_per_cyl= 0;
o->vol_creation_time= 0;
o->vol_modification_time= 0;
o->vol_expiration_time= 0;
o->vol_effective_time= 0;
o->libjte_handle= NULL;
o->tail_blocks= 0;
for(i= 0; i < 4; i++) {
o->appended_partitions[i]= NULL;
o->appended_part_types[i]= 0;
}
return(1);
}
int isoburn_igopt_destroy(struct isoburn_imgen_opts **o, int flag)
{
int i;
if(*o==NULL)
return(0);
for(i= 0; i < 4; i++)
if((*o)->appended_partitions[i] != NULL)
free((*o)->appended_partitions[i]);
free(*o);
*o= NULL;
return(1);
@ -1112,7 +1186,7 @@ int isoburn_igopt_set_system_area(struct isoburn_imgen_opts *opts,
}
memcpy(opts->system_area_data, data, 32768);
}
opts->system_area_options = options & 3;
opts->system_area_options = options & 0xff;
return(1);
}
@ -1157,3 +1231,101 @@ int isoburn_igopt_get_pvd_times(struct isoburn_imgen_opts *opts,
}
int isoburn_igopt_set_part_offset(struct isoburn_imgen_opts *opts,
uint32_t block_offset_2k,
int secs_512_per_head, int heads_per_cyl)
{
if (block_offset_2k > 0 && block_offset_2k < 16)
return(0);
opts->partition_offset = block_offset_2k;
opts->partition_secs_per_head = secs_512_per_head;
opts->partition_heads_per_cyl = heads_per_cyl;
return(1);
}
int isoburn_igopt_get_part_offset(struct isoburn_imgen_opts *opts,
uint32_t *block_offset_2k,
int *secs_512_per_head, int *heads_per_cyl)
{
*block_offset_2k = opts->partition_offset;
*secs_512_per_head = opts->partition_secs_per_head;
*heads_per_cyl = opts->partition_heads_per_cyl;
return 1;
}
int isoburn_igopt_attach_jte(struct isoburn_imgen_opts *opts,
void *libjte_handle)
{
opts->libjte_handle = libjte_handle;
return 1;
}
int isoburn_igopt_detach_jte(struct isoburn_imgen_opts *opts,
void **libjte_handle)
{
if(libjte_handle != NULL)
*libjte_handle = opts->libjte_handle;
opts->libjte_handle = NULL;
return 1;
}
int isoburn_igopt_set_tail_blocks(struct isoburn_imgen_opts *opts,
uint32_t num_blocks)
{
opts->tail_blocks = num_blocks;
return 1;
}
int isoburn_igopt_get_tail_blocks(struct isoburn_imgen_opts *opts,
uint32_t *num_blocks)
{
*num_blocks = opts->tail_blocks;
return 1;
}
int isoburn_igopt_set_partition_img(struct isoburn_imgen_opts *opts,
int partition_number, uint8_t partition_type,
char *image_path)
{
if (partition_number < 1 || partition_number > 4) {
isoburn_msgs_submit(NULL, 0x00060000,
"Partition number is out of range (1...4)",
0, "FAILURE", 0);
return(0);
}
if (opts->appended_partitions[partition_number - 1] != NULL)
free(opts->appended_partitions[partition_number - 1]);
opts->appended_partitions[partition_number - 1] = strdup(image_path);
if (opts->appended_partitions[partition_number - 1] == NULL)
return(-1);
opts->appended_part_types[partition_number - 1] = partition_type;
return(1);
}
int isoburn_igopt_get_partition_img(struct isoburn_imgen_opts *opts,
int num_entries,
uint8_t partition_types[],
char *image_paths[])
{
int i, max_entry= 0;
for(i= 0; i < num_entries; i++)
image_paths[i]= NULL;
for(i= 0; i < 4; i++) {
if(opts->appended_partitions[i] == NULL)
continue;
if(i < num_entries) {
image_paths[i]= opts->appended_partitions[i];
partition_types[i]= opts->appended_part_types[i];
}
max_entry= i + 1;
}
return(max_entry);
}

View File

@ -36,11 +36,15 @@ int isoburn_toc_entry_new(struct isoburn_toc_entry **objpt,
int isoburn_toc_entry_destroy(struct isoburn_toc_entry **o, int flag);
/* Size of target_iso_head which is to be written during
isoburn_activate_session()
/* Minimal size of target_iso_head which is to be written during
isoburn_activate_session().
Within this size there is everything that is needed for image access with
no partition offset. The actual target_iso_head buffer must be larger by
the evential partition offset.
*/
#define Libisoburn_target_head_sizE (32*2048)
struct isoburn {
@ -104,9 +108,14 @@ struct isoburn {
int wrote_well;
/* Buffered ISO head from media (should that become part of
ecma119_read_opts ?) */
uint8_t target_iso_head[Libisoburn_target_head_sizE];
/* ISO head buffer to be filled by write run */
int target_iso_head_size;
uint8_t *target_iso_head;
/* The 2k offset which was read from a loaded image.
*/
uint32_t loaded_partition_offset;
/* Libisofs image context */
IsoImage *image;
@ -243,6 +252,12 @@ isoburn_data_source_new(struct burn_drive *d);
int isoburn_data_source_shutdown(IsoDataSource *src, int flag);
/** Check whether the size of target_iso_head matches the given partition
offset. Eventually adjust size.
*/
int isoburn_adjust_target_iso_head(struct isoburn *o,
uint32_t offst, int flag);
/**
* Options for image reading.
(Comments here may be outdated. API getter/setter function descriptions
@ -520,6 +535,30 @@ struct isoburn_imgen_opts {
and timezone 0 */
char vol_uuid[17];
/* The number of unclaimed 2K blocks before start of partition 1 as of
the MBR in system area. If not 0 this will cause double volume
descriptor sets and double tree.
*/
uint32_t partition_offset;
/* Partition table parameter: 1 to 63, 0= disabled/default */
int partition_secs_per_head;
/* 1 to 255, 0= disabled/default */
int partition_heads_per_cyl;
/* Parameters and state of Jigdo Template Export environment.
*/
void *libjte_handle;
/* A trailing padding of zero bytes which belongs to the image
*/
uint32_t tail_blocks;
/* Eventual disk file paths of prepared images which shall be appended
after the ISO image and described by partiton table entries in a MBR.
*/
char *appended_partitions[4];
uint8_t appended_part_types[4];
};
@ -555,6 +594,9 @@ struct isoburn_imgen_opts {
written by random access before they were written sequentially.
In this case, no copy of the session 1 header is maintained and no TOC
will be possible. Thus writing begins sequentially at LBA 0.
IMPORTANT: This macro gives the minimal size of an image header.
It has to be enlarged by the eventual partition offset.
*/
#define Libisoburn_overwriteable_starT \
((off_t) (Libisoburn_target_head_sizE/2048))

View File

@ -32,8 +32,8 @@
#endif /* Xorriso_standalonE */
#include "isoburn.h"
#include "libisoburn.h"
#include "isoburn.h"
#define BP(a,b) [(b) - (a) + 1]
@ -299,12 +299,109 @@ int isoburn_activate_session(struct burn_drive *drive)
return 1;
ret = burn_random_access_write(drive, (off_t) 0, (char*)o->target_iso_head,
Libisoburn_target_head_sizE, 1);
o->target_iso_head_size, 1);
return ret;
}
/** API @since 0.6.2
*/
int isoburn_get_img_partition_offset(struct burn_drive *drive,
uint32_t *block_offset_2k)
{
int ret;
struct isoburn *o;
ret = isoburn_find_emulator(&o, drive, 0);
if(ret < 0 || o == NULL)
return -1;
*block_offset_2k= o->loaded_partition_offset;
if(o->loaded_partition_offset == 0)
return(0);
if(o->target_iso_head_size == (off_t) Libisoburn_target_head_sizE
+ (off_t) 2048 * (off_t) o->loaded_partition_offset)
return(1);
return(2);
}
/* Check for MBR signature and a first partition that starts at a 2k block
and ends where the image ends.
If not too large or too small, accept its start as partition offset.
*/
static int isoburn_inspect_partition(struct isoburn *o, uint32_t img_size,
int flag)
{
uint8_t *mbr, *part, buf[2048];
uint32_t offst, numsec;
struct ecma119_pri_vol_desc *pvm;
off_t data_count;
int ret;
char msg[160];
static int max_offst= 512 - 32;
mbr= o->target_iso_head;
part= mbr + 446;
if(mbr[510] != 0x55 || mbr[511] != 0xAA)
return(2); /* not an MBR */
/* Does the first partition entry look credible ? */
if(part[0] != 0x80 && part[0] != 0x00)
return(2); /* Invalid partition status */
if(part[1] == 0 && part[2] == 0 && part[3] == 0)
return(2); /* Zero C/H/S start address */
/* Does it match the normal ISO image ? */
offst= iso_read_lsb(part + 8, 4);
numsec= iso_read_lsb(part + 12, 4);
if(offst < 64)
return(2); /* Zero or unusably small partition start */
if((offst % 4) || (numsec % 4))
return(2); /* Not aligned to 2k */
if(numsec < 72)
return(2); /* No room for volume descriptors */
offst/= 4;
numsec/= 4;
if(offst + numsec != img_size)
return(2); /* Partition end does not match image end */
/* Is there a PVD at the partition start ? */
ret = burn_read_data(o->drive, (off_t) (offst + 16) * (off_t) 2048,
(char*) buf, 2048, &data_count, 2);
if(ret <= 0)
return(2);
pvm = (struct ecma119_pri_vol_desc *) buf;
if (strncmp((char*) pvm->std_identifier, "CD001", 5) != 0)
return(2); /* not a PVD */
if (pvm->vol_desc_type[0] != 1 || pvm->vol_desc_version[0] != 1
|| pvm->file_structure_version[0] != 1 )
return(2); /* failed sanity check */
if(iso_read_lsb(pvm->vol_space_size, 4) + offst != img_size)
return(2); /* Image ends do not match */
/* Now it is credible. Not yet clear is whether it is acceptable. */
o->loaded_partition_offset= offst;
/* If the partition start is too large: Report but do not accept. */
if(offst > max_offst) { /* Not more than 1 MB of .target_iso_head */
sprintf(msg,
"Detected partition offset of %.f blocks. Maximum for load buffer is %d",
(double) offst, max_offst);
isoburn_msgs_submit(NULL, 0x00060000, msg, 0, "WARNING", 0);
return(3);
}
/* Accept partition start and adjust buffer size */
ret= isoburn_adjust_target_iso_head(o, offst, 0);
if(ret <= 0)
return(ret);
return(1);
}
/** Initialize the emulation of multi-session on random access media.
The need for emulation is confirmed already.
@param o A freshly created isoburn object. isoburn_create_data_source() was
@ -337,8 +434,8 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
if (capacity > 0 || role == 2) {
/* Might be a block device on a system where libburn cannot determine its
size. Try to read anyway. */
memset(o->target_iso_head, 0, Libisoburn_target_head_sizE);
to_read = Libisoburn_target_head_sizE;
to_read = o->target_iso_head_size;
memset(o->target_iso_head, 0, to_read);
if(capacity > 0 && (off_t) capacity * (off_t) 2048 < to_read)
to_read = (off_t) capacity * (off_t) 2048;
ret = burn_read_data(drive, (off_t) 0, (char*)o->target_iso_head,
@ -370,7 +467,7 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
pvm = (struct ecma119_pri_vol_desc *)(o->target_iso_head + 16 * 2048);
if (!strncmp((char*)pvm->std_identifier, "CD001", 5)) {
if (strncmp((char*)pvm->std_identifier, "CD001", 5) == 0) {
off_t size;
/* sanity check */
@ -383,6 +480,9 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
/* ok, PVM found, set size */
size = (off_t) iso_read_lsb(pvm->vol_space_size, 4);
ret= isoburn_inspect_partition(o, (uint32_t) size, 0);
if (ret <= 0)
return ret;
size *= (off_t) 2048; /* block size in bytes */
isoburn_set_start_byte(o, size, 0);
o->fabricated_disc_status= BURN_DISC_APPENDABLE;
@ -395,6 +495,7 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
/* treat any disc in an unknown format as full */
o->fabricated_disc_status= BURN_DISC_FULL;
}
return 1;
}

View File

@ -146,6 +146,10 @@ size.
*/
/* Important: If you add a public API function then add its name to file
libisoburn/libisoburn.ver
*/
/* API functions */
@ -220,7 +224,7 @@ void isoburn_version(int *major, int *minor, int *micro);
*/
#define isoburn_libisofs_req_major 0
#define isoburn_libisofs_req_minor 6
#define isoburn_libisofs_req_micro 34
#define isoburn_libisofs_req_micro 38
/** The minimum version of libburn to be used with this version of libisoburn
at compile time.
@ -228,8 +232,16 @@ void isoburn_version(int *major, int *minor, int *micro);
*/
#define isoburn_libburn_req_major 0
#define isoburn_libburn_req_minor 8
#define isoburn_libburn_req_micro 4
#define isoburn_libburn_req_micro 8
/** The minimum compile time requirements of libisoburn towards libjte are
the same as of a suitable libisofs towards libjte.
So use these macros from libisofs.h :
iso_libjte_req_major
iso_libjte_req_minor
iso_libjte_req_micro
@since 0.6.4
*/
/** The minimum version of libisofs to be used with this version of libisoburn
at runtime. This is checked already in isoburn_initialize() which will
@ -244,6 +256,17 @@ void isoburn_version(int *major, int *minor, int *micro);
int isoburn_libisofs_req(int *major, int *minor, int *micro);
/** The minimum version of libjte to be used with this version of libisoburn
at runtime. The use of libjte is optional and depends on configure
tests. It can be prevented by ./configure option --disable-libjte .
This is checked already in isoburn_initialize() which will refuse on
outdated version. So this call is for information purposes after
successful startup only.
@since 0.6.4
*/
int isoburn_libjte_req(int *major, int *minor, int *micro);
/** The minimum version of libburn to be used with this version of libisoburn
at runtime. This is checked already in isoburn_initialize() which will
refuse on outdated version. So this call is for information purposes after
@ -264,7 +287,7 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
*/
#define isoburn_header_version_major 0
#define isoburn_header_version_minor 6
#define isoburn_header_version_micro 0
#define isoburn_header_version_micro 4
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.
@ -1169,7 +1192,7 @@ int isoburn_igopt_get_data_start(struct isoburn_imgen_opts *o, int *lba);
/** Set resp. get 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 isoburn_disc_track_lba_nwa. The scdbackup tag can be used
to verify the image by command scdbackup_verify <device> -auto_end.
to verify the image by command scdbackup_verify $device -auto_end.
See scdbackup/README appendix VERIFY for its inner details.
@since 0.4.4
@param o The option set to work on
@ -1211,6 +1234,16 @@ int isoburn_igopt_get_scdbackup_tag(struct isoburn_imgen_opts *o,
SYSLINUX plus an ISOLINUX boot image (see
iso_image_set_boot_image()) and only if not bit0
is set.
bit2-7= System area type
0= with bit0 or bit1: MBR
else: unspecified type
@since 0.6.4
1= MIPS Big Endian Volume Header
>>> EXPERIMENTAL:
Submit MIPS boot image files as El Torito Boot image to
iso_image_set_boot_image() , iso_image_add_boot_image().
No El Torito info will be produced with system area type 1.
@return 1 success, 0 no data to get, <0 failure
*/
int isoburn_igopt_set_system_area(struct isoburn_imgen_opts *o,
@ -1218,20 +1251,59 @@ int isoburn_igopt_set_system_area(struct isoburn_imgen_opts *o,
int isoburn_igopt_get_system_area(struct isoburn_imgen_opts *o,
char data[32768], int *options);
/** Control production of a second set of volume descriptors (superblock)
and directory trees, together with a partition table in the MBR where the
first partition has non-zero start address and the others are zeroed.
The first partition stretches to the end of the whole ISO image.
The additional volume descriptor set and trees will allow to mount the
ISO image at the start of the first partition, while it is still possible
to mount it via the normal first volume descriptor set and tree at the
start of the image resp. storage device.
This makes few sense on optical media. But on USB sticks it creates a
conventional partition table which makes it mountable on e.g. Linux via
/dev/sdb and /dev/sdb1 alike.
@since 0.6.2
@param opts
The option set to be manipulated.
@param block_offset_2k
The offset of the partition start relative to device start.
This is counted in 2 kB blocks. The partition table will show the
according number of 512 byte sectors.
Default is 0 which causes no second set and trees.
If it is not 0 then it must not be smaller than 16.
@param secs_512_per_head
Number of 512 byte sectors per head. 1 to 63. 0=automatic.
@param heads_per_cyl
Number of heads per cylinder. 1 to 255. 0=automatic.
@return 1 success, <=0 failure
*/
int isoburn_igopt_set_part_offset(struct isoburn_imgen_opts *opts,
uint32_t block_offset_2k,
int secs_512_per_head, int heads_per_cyl);
int isoburn_igopt_get_part_offset(struct isoburn_imgen_opts *opts,
uint32_t *block_offset_2k,
int *secs_512_per_head, int *heads_per_cyl);
/** Explicitely set the four timestamps of the emerging ISO image.
Default with all parameters is 0.
@since 0.5.4
ECMA-119 defines the timestamps in the Primary Volume Descriptor as:
@param opts
The option set to work on
@param creation_time
ECMA-119 Volume Creation Date and Time
When "the information in the volume was created."
A value of 0 means that the timepoint of write start is to be used.
@param modification_time
ECMA-119 Volume Modification Date and Time
When "the informationin the volume was last modified."
A value of 0 means that the timepoint of write start is to be used.
@param expiration_time
ECMA-119 Volume Expiration Date and Time
When "the information in the volume may be regarded as obsolete."
A value of 0 means that the information never shall expire.
@param effective_time
ECMA-119 Volume Effective Date and Time
When "the information in the volume may be used."
A value of 0 means that not such retention is intended.
@param uuid
@ -1251,6 +1323,106 @@ int isoburn_igopt_get_pvd_times(struct isoburn_imgen_opts *opts,
time_t *expiration_time, time_t *effective_time,
char uuid[17]);
/** Associate a libjte environment object to the upcomming write run.
libjte implements Jigdo Template Extraction as of Steve McIntyre and
Richard Atterer.
A non-NULL libjte_handle will cause failure to write if libjte was not
enabled in libisofs at compile time.
@since 0.6.4
@param opts
The option set to work on
@param libjte_handle
Pointer to a struct libjte_env e.g. created by libjte_new().
It must stay existent from the start of image writing by
isoburn_prepare_*() until the write thread has ended.
E.g. until libburn indicates the end of its write run.
@return 1 success, <=0 failure
*/
int isoburn_igopt_attach_jte(struct isoburn_imgen_opts *opts,
void *libjte_handle);
/** Remove eventual association to a libjte environment handle.
@since 0.6.4
@param opts
The option set to work on
@param libjte_handle
If not submitted as NULL, this will return the previously set
libjte handle.
@return 1 success, <=0 failure
*/
int isoburn_igopt_detach_jte(struct isoburn_imgen_opts *opts,
void **libjte_handle);
/** Set resp. get the number of trailing zero byte blocks to be written by
libisofs. The image size counter of the emerging ISO image will include
them. Eventual checksums will take them into respect.
They will be written immediately before the eventual image checksum area
which is at the very end of the image.
For a motivation see iso_write_opts_set_tail_blocks() in libisofs.h .
@since 0.6.4
@param opts
The option set to work on
@aram num_blocks
Number of extra 2 kB blocks to be written by libisofs.
@return 1 success, <=0 failure
*/
int isoburn_igopt_set_tail_blocks(struct isoburn_imgen_opts *opts,
uint32_t num_blocks);
int isoburn_igopt_get_tail_blocks(struct isoburn_imgen_opts *opts,
uint32_t *num_blocks);
/** Cause an arbitrary data file to be appended to the ISO image and to be
described by a partition table entry in an MBR 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.
@since 0.6.4
@param opts
The option set to be manipulated.
@param partition_number
Depicts the partition table entry which shall describe the
appended image. Range 1 to 4.
1 will cause the whole ISO image to be unclaimable space before
partition 1.
@param image_path
File address in the local file system.
@param image_type
The partition type. E.g. FAT12 = 0x01 , FAT16 = 0x06,
Linux Native Partition = 0x83. See fdisk command L.
@return
<=0 = error, 1 = success
*/
int isoburn_igopt_set_partition_img(struct isoburn_imgen_opts *opts,
int partition_number, uint8_t partition_type,
char *image_path);
/** Inquire the current settings made by isoburn_igopt_set_partition_img().
@since 0.6.4
@param opts
The option set to be inquired.
@param num_entries
Number of array elements in partition_types[] and image_paths[].
@param partition_types
The partition type associated with the partition. Valid only if
image_paths[] of the same index is not NULL.
@param image_paths
Its elements get filled with either NULL or a pointer to a string
with a file address,
@return
<0 = error
0 = no partition image set
>0 highest used partition number
*/
int isoburn_igopt_get_partition_img(struct isoburn_imgen_opts *opts,
int num_entries,
uint8_t partition_types[],
char *image_paths[]);
/* ----------------------------------------------------------------------- */
/* End of Options for image generation */
/* ----------------------------------------------------------------------- */
@ -1313,6 +1485,23 @@ int isoburn_set_read_pacifier(struct burn_drive *drive,
int (*read_pacifier)(IsoImage*, IsoFileSource*),
void *app_handle);
/** Inquire the partition offset of the loaded image. The first 512 bytes of
the image get examined whether they bear an MBR signature and a first
partition table entry which matches the size of the image. In this case
the start address is recorded as partition offset and internal buffers
get adjusted.
See also isoburn_igopt_set_part_offset().
@since 0.6.2
@param drive The drive with the loaded image
@param block_offset_2k returns the recognized partition offset
@return <0 = error
0 = no partition offset recognized
1 = acceptable non-zero offset, buffers are adjusted
2 = offset is credible but not acceptable for buffer size
*/
int isoburn_get_img_partition_offset(struct burn_drive *drive,
uint32_t *block_offset_2k);
/** Set the IsoImage to be used with a drive. This eventually releases
the reference to the old IsoImage attached to the drive.
@ -1611,3 +1800,7 @@ void isoburn_finish(void);
int isoburn_needs_emulation(struct burn_drive *d);
/* ---------------------------- Test area ----------------------------- */
/* no tests active, currently */

264
libisoburn/libisoburn.ver Normal file
View File

@ -0,0 +1,264 @@
LIBISOBURN1 {
global:
isoburn_activate_session;
isoburn_attach_image;
isoburn_cancel_prepared_write;
isoburn_disc_available_space;
isoburn_disc_erasable;
isoburn_disc_erase;
isoburn_disc_get_msc1;
isoburn_disc_get_status;
isoburn_disc_track_lba_nwa;
isoburn_disc_write;
isoburn_drive_aquire;
isoburn_drive_grab;
isoburn_drive_release;
isoburn_drive_scan_and_grab;
isoburn_drive_set_msgs_submit;
isoburn_drive_wrote_well;
isoburn_finish;
isoburn_get_attached_image;
isoburn_get_fifo_status;
isoburn_get_min_start_byte;
isoburn_get_mount_params;
isoburn_igopt_attach_jte;
isoburn_igopt_destroy;
isoburn_igopt_detach_jte;
isoburn_igopt_get_data_start;
isoburn_igopt_get_effective_lba;
isoburn_igopt_get_extensions;
isoburn_igopt_get_fifo_size;
isoburn_igopt_get_level;
isoburn_igopt_get_out_charset;
isoburn_igopt_get_over_mode;
isoburn_igopt_get_over_ugid;
isoburn_igopt_get_partition_img;
isoburn_igopt_get_pvd_times;
isoburn_igopt_get_relaxed;
isoburn_igopt_get_scdbackup_tag;
isoburn_igopt_get_sort_files;
isoburn_igopt_get_system_area;
isoburn_igopt_get_tail_blocks;
isoburn_igopt_new;
isoburn_igopt_set_extensions;
isoburn_igopt_set_fifo_size;
isoburn_igopt_set_level;
isoburn_igopt_set_out_charset;
isoburn_igopt_set_over_mode;
isoburn_igopt_set_over_ugid;
isoburn_igopt_set_partition_img;
isoburn_igopt_set_pvd_times;
isoburn_igopt_set_relaxed;
isoburn_igopt_set_scdbackup_tag;
isoburn_igopt_set_sort_files;
isoburn_igopt_set_system_area;
isoburn_igopt_set_tail_blocks;
isoburn_initialize;
isoburn_is_compatible;
isoburn_libburn_req;
isoburn_libisofs_req;
isoburn_libjte_req;
isoburn_needs_emulation;
isoburn_prepare_blind_grow;
isoburn_prepare_disc;
isoburn_prepare_new_image;
isoburn_read_image;
isoburn_read_iso_head;
isoburn_ropt_destroy;
isoburn_ropt_get_auto_incharset;
isoburn_ropt_get_default_dirperms;
isoburn_ropt_get_default_perms;
isoburn_ropt_get_extensions;
isoburn_ropt_get_input_charset;
isoburn_ropt_get_size_what;
isoburn_ropt_new;
isoburn_ropt_set_auto_incharset;
isoburn_ropt_set_default_dirperms;
isoburn_ropt_set_default_perms;
isoburn_ropt_set_extensions;
isoburn_ropt_set_input_charset;
isoburn_set_msc1;
isoburn_set_msgs_submit;
isoburn_set_read_pacifier;
isoburn_sync_after_write;
isoburn_toc_disc_free;
isoburn_toc_disc_get_sectors;
isoburn_toc_disc_get_sessions;
isoburn_toc_drive_get_disc;
isoburn_toc_session_get_leadout_entry;
isoburn_toc_session_get_sectors;
isoburn_toc_session_get_tracks;
isoburn_toc_track_get_emul;
isoburn_toc_track_get_entry;
isoburn_version;
Xorriso_change_is_pending;
Xorriso_destroy;
Xorriso_dialog;
Xorriso_eval_problem_status;
Xorriso_execute_option;
Xorriso__get_patch_level_text;
Xorriso_get_problem_status;
Xorriso_interpreter;
Xorriso__is_compatible;
Xorriso_lst_destroy_all;
Xorriso_lst_get_next;
Xorriso_lst_get_prev;
Xorriso_lst_get_text;
Xorriso_make_return_value;
Xorriso_msgs_submit;
Xorriso_msgs_submit_void;
Xorriso_new;
Xorriso_option_abort_on;
Xorriso_option_abstract_file;
Xorriso_option_acl;
Xorriso_option_add;
Xorriso_option_add_plainly;
Xorriso_option_alter_date;
Xorriso_option_append_partition;
Xorriso_option_application_id;
Xorriso_option_as;
Xorriso_option_assert_volid;
Xorriso_option_auto_charset;
Xorriso_option_backslash_codes;
Xorriso_option_ban_stdio_write;
Xorriso_option_biblio_file;
Xorriso_option_blank;
Xorriso_option_boot_image;
Xorriso_option_calm_drive;
Xorriso_option_cdi;
Xorriso_option_cdx;
Xorriso_option_charset;
Xorriso_option_check_md5;
Xorriso_option_check_media;
Xorriso_option_check_media_defaults;
Xorriso_option_chgrpi;
Xorriso_option_chmodi;
Xorriso_option_chowni;
Xorriso_option_close;
Xorriso_option_close_filter_list;
Xorriso_option_commit;
Xorriso_option_commit_eject;
Xorriso_option_compare;
Xorriso_option_compliance;
Xorriso_option_copyright_file;
Xorriso_option_cpri;
Xorriso_option_cpx;
Xorriso_option_cut_out;
Xorriso_option_dev;
Xorriso_option_devices;
Xorriso_option_dialog;
Xorriso_option_disk_dev_ino;
Xorriso_option_disk_pattern;
Xorriso_option_drive_class;
Xorriso_option_dummy;
Xorriso_option_dvd_obs;
Xorriso_option_eject;
Xorriso_option_end;
Xorriso_option_errfile_log;
Xorriso_option_error_behavior;
Xorriso_option_external_filter;
Xorriso_option_extract;
Xorriso_option_extract_cut;
Xorriso_option_file_size_limit;
Xorriso_option_find;
Xorriso_option_follow;
Xorriso_option_fs;
Xorriso_option_getfacli;
Xorriso_option_gid;
Xorriso_option_grow_blindly;
Xorriso_option_hardlinks;
Xorriso_option_help;
Xorriso_option_hide;
Xorriso_option_history;
Xorriso_option_iso_rr_pattern;
Xorriso_option_jigdo;
Xorriso_option_joliet;
Xorriso_option_list_delimiter;
Xorriso_option_list_formats;
Xorriso_option_list_profiles;
Xorriso_option_load;
Xorriso_option_logfile;
Xorriso_option_lsi;
Xorriso_option_lsx;
Xorriso_option_map;
Xorriso_option_map_l;
Xorriso_option_mark;
Xorriso_option_md5;
Xorriso_option_mkdiri;
Xorriso_option_mount;
Xorriso_option_mount_opts;
Xorriso_option_mvi;
Xorriso_option_no_rc;
Xorriso_option_not_leaf;
Xorriso_option_not_list;
Xorriso_option_not_mgt;
Xorriso_option_not_paths;
Xorriso_option_options_from_file;
Xorriso_option_osirrox;
Xorriso_option_overwrite;
Xorriso_option_pacifier;
Xorriso_option_padding;
Xorriso_option_page;
Xorriso_option_paste_in;
Xorriso_option_path_list;
Xorriso_option_pathspecs;
Xorriso_option_pkt_output;
Xorriso_option_preparer_id;
Xorriso_option_print;
Xorriso_option_print_size;
Xorriso_option_prog;
Xorriso_option_prog_help;
Xorriso_option_prompt;
Xorriso_option_publisher;
Xorriso_option_pvd_info;
Xorriso_option_pwdi;
Xorriso_option_pwdx;
Xorriso_option_read_mkisofsrc;
Xorriso_option_reassure;
Xorriso_option_report_about;
Xorriso_option_return_with;
Xorriso_option_rmi;
Xorriso_option_rollback;
Xorriso_option_rom_toc_scan;
Xorriso_option_scdbackup_tag;
Xorriso_option_scsi_log;
Xorriso_option_session_log;
Xorriso_option_setfacli;
Xorriso_option_setfacl_listi;
Xorriso_option_setfattri;
Xorriso_option_setfattr_listi;
Xorriso_option_set_filter;
Xorriso_option_speed;
Xorriso_option_split_size;
Xorriso_option_status;
Xorriso_option_status_history_max;
Xorriso_option_stdio_sync;
Xorriso_option_stream_recording;
Xorriso_option_system_id;
Xorriso_option_tell_media_space;
Xorriso_option_temp_mem_limit;
Xorriso_option_toc;
Xorriso_option_uid;
Xorriso_option_unregister_filter;
Xorriso_option_update;
Xorriso_option_use_readline;
Xorriso_option_version;
Xorriso_option_volid;
Xorriso_option_volset_id;
Xorriso_option_volume_date;
Xorriso_option_xattr;
Xorriso_option_zisofs;
Xorriso_prescan_args;
Xorriso__preset_signal_behavior;
Xorriso_process_errfile;
Xorriso_process_msg_queues;
Xorriso_program_arg_bsl;
Xorriso_pull_outlists;
Xorriso_push_outlists;
Xorriso_read_rc;
Xorriso_set_problem_status;
Xorriso_startup_libraries;
Xorriso__version;
local: *;
};

View File

@ -3,4 +3,13 @@ Ben Jansens
Thomas Schmitt
Mario Danic
Vreixo Formoso Lopes
Colin Plumb
Tatu Ylonen
Jim Kingdon
Scott G. Miller
Ulrich Drepper
Richard Atterer
Steve McIntyre
George Danchev
and possibly others who gave their copyright to Free Software Foundation, Inc.

View File

@ -3,15 +3,22 @@ Ben Jansens <xor@orodu.net>
Thomas Schmitt <scdbackup@gmx.net>
Mario Danic <mario.danic@gmail.com>,
Vreixo Formoso <metalpain2002@yahoo.es>
Steve McIntyre <steve@einval.com>
George Danchev <danchev@spnet.net>
GNU xorriso is a compilation of
GNU xorriso is a compilation of modules from libburnia-project.org :
xorriso Copyright (C) 2007-2010 Thomas Schmitt
libisoburn Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
libisofs Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic, Thomas Schmitt
libburn Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
2006-2010 Mario Danic, Thomas Schmitt
from libburnia-project.org with a license derived from GPLv2+.
Further included is :
libjte Copyright (C) 2000-2007 Free Software Foundation, Inc.
2004-2010 Steve McIntyre
2010-2010 George Danchev, Thomas Schmitt
Originally they all are licensed directly or indirectly as GPLv2+.
GNU xorriso is licensed by the following statement:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3

View File

@ -4,7 +4,7 @@
GNU xorriso. By Thomas Schmitt <scdbackup@gmx.net>
Derived from and supported by libburnia-project.org, published via:
http://www.gnu.org/software/xorriso/xorriso_eng.html
ftp://ftp.gnu.org/gnu/xorriso/xorriso-0.6.0.tar.gz
ftp://ftp.gnu.org/gnu/xorriso/xorriso-0.6.4.tar.gz
Provided under GPL version 3 or later. No warranty.
------------------------------------------------------------------------------
@ -46,10 +46,10 @@ Optional at compile time are:
If they were present at compile time, then the optional libraries have to
be present at runtime, too.
Obtain xorriso-0.6.0.tar.gz, take it to a directory of your choice and do:
Obtain xorriso-0.6.4.tar.gz, take it to a directory of your choice and do:
tar xzf xorriso-0.6.0.tar.gz
cd xorriso-0.6.0
tar xzf xorriso-0.6.4.tar.gz
cd xorriso-0.6.4
Within that directory execute:
@ -99,6 +99,7 @@ Other deliberate dependency reduction options of ./configure are:
--disable-libacl avoid use of ACL functions like acl_to_text()
--disable-xattr avoid use of xattr functions like listxattr()
--disable-zlib avoid use of zlib functions like compress2()
this also avoids the use of libjte and option -jigdo.
xorriso brings own system adapters which allow burning optical media on
GNU/Linux, FreeBSD, Solaris.
@ -290,9 +291,9 @@ and a matching dynamically linked xorriso binary.
This binary is very lean but depends on properly installed libraries of
suitable revision.
Dynamic library and compile time header requirements for libisoburn-0.6.0 :
- libburn.so.4 , version libburn-0.8.4 or higher
- libisofs.so.6 , version libisofs-0.6.34 or higher
Dynamic library and compile time header requirements for libisoburn-0.6.4 :
- libburn.so.4 , version libburn-0.8.8 or higher
- libisofs.so.6 , version libisofs-0.6.38 or higher
libisoburn and xorriso will not start with libraries which are older than their
headers seen at compile time. So compile in the oldest possible installation
setup unless you have reason to enforce a newer bug fix level.
@ -417,6 +418,12 @@ of old
Libburn. By Derek Foreman <derek@signalmarketing.com> and
Ben Jansens <xor@orodu.net>
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
GNU xorriso contains libjte
Copyright (C) 2000-2007 Free Software Foundation, Inc.
2004-2010 Steve McIntyre
2010-2010 George Danchev, Thomas Schmitt
------------------------------------------------------------------------------
This text itself is

View File

@ -640,6 +640,16 @@ int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag)
}
int Xorriso_lst_get_last(struct Xorriso_lsT *entry, struct Xorriso_lsT **last,
int flag)
{
*last= NULL;
if(entry != NULL)
for((*last)= entry; (*last)->next != NULL; (*last)= (*last)->next);
return(1);
}
/* --------------------------- End Xorriso_lsT ---------------------------- */

View File

@ -130,6 +130,8 @@ char *Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag);
int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag);
int Xorriso_lst_get_last(struct Xorriso_lsT *entry, struct Xorriso_lsT **last,
int flag);
int Exclusions_new(struct ExclusionS **o, int flag);

View File

@ -25,6 +25,21 @@
#include <sys/time.h>
#include <time.h>
#include <errno.h>
#include <stdint.h>
#ifdef Xorriso_standalonE
#ifdef Xorriso_with_libjtE
#include "../libjte/libjte.h"
#endif
#else
#ifdef Xorriso_with_libjtE
#include <libjte/libjte.h>
#endif
#endif /* ! Xorriso_standalonE */
#include "xorriso.h"
#include "xorriso_private.h"
@ -125,6 +140,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->loaded_volid[0]= 0;
m->assert_volid[0]= 0;
m->assert_volid_sev[0]= 0;
m->preparer_id[0]= 0;
m->publisher[0]= 0;
m->application_id[0]= 0;
m->system_id[0]= 0;
@ -206,11 +222,25 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->system_area_disk_path[0]= 0;
m->system_area_options= 0;
m->patch_system_area= 0;
m->partition_offset= 0;
m->partition_secs_per_head= 0;
m->partition_heads_per_cyl= 0;
for(i= 0; i < 4; i++) {
m->appended_partitions[i][0]= 0;
m->appended_part_types[i]= 0;
}
m->vol_creation_time= 0;
m->vol_modification_time= 0;
m->vol_expiration_time= 0;
m->vol_effective_time= 0;
m->vol_uuid[0]= 0;
#ifdef Xorriso_with_libjtE
m->libjte_handle= NULL;
#endif
m->jigdo_params= NULL;
m->jigdo_values= NULL;
m->loaded_boot_bin_lba= 0;
m->loaded_boot_cat_path[0]= 0;
m->allow_graft_points= 0;
@ -352,6 +382,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
ret= Xorriso_lst_new(&(m->drive_greylist), "/dev", m->drive_greylist, 1);
if(ret <= 0)
goto failure;
Xorriso_preparer_string(m, m->preparer_id, 1); /* avoids library calls */
return(1);
failure:;
@ -412,6 +443,13 @@ int Xorriso_destroy(struct XorrisO **xorriso, int flag)
Xorriso_destroy_hln_array(m, 0);
Xorriso_destroy_di_array(m, 0);
#ifdef Xorriso_with_libjtE
if(m->libjte_handle)
libjte_destroy(&(m->libjte_handle));
#endif
Xorriso_lst_destroy_all(&(m->jigdo_params), 0);
Xorriso_lst_destroy_all(&(m->jigdo_values), 0);
Xorriso_detach_libraries(m, flag&1);
free((char *) m);

View File

@ -8235,7 +8235,7 @@ xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.0
02 Jul 2010 []
02 Jul 2010 [3319]
xorriso/changelog.txt
Documented changes and release timestamp
@ -8253,13 +8253,811 @@ New -as mkisofs option --boot-catalog-hide
Implemented -as mkisofs options -dir-mode, -file-mode
Implemented -as mkisofs options -abstract, -biblio, -copyright
------------------------------------ cycle - xorriso-0.5.9 -
------------------------------------ cycle - xorriso-0.5.9 -
2010.07.02.195907 [3320]
configure.ac
README
libisoburn/libisoburn.h
xorriso/README_gnu_xorriso
xorriso/xorriso.h
xorriso/xorrisoburn.h
xorriso/xorriso_main.c
xorriso/xorriso_eng.html
xorriso/make_xorriso_standalone.sh
xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.1
2 Jul 2010 [3321]
xorriso/changelog.txt
Documented changes and release timestamp
2 Jul 2010 [3322]
svn move -m Promoted branch to tag
http://svn.libburnia-project.org/libisoburn/branches/ZeroSixZero
http://svn.libburnia-project.org/libisoburn/tags/ZeroSixZero
------------------------------------ cycle - xorriso-0.6.1 - 2010.07.02.195907
4 Jul 2010 [3324]
acinclude.m4
Added -L/usr/local/lib to libisoburn LDFLAGS for Solaris
2010.07.05.090409 [3327]
xorriso/xorriso.h
Removed definition of phantom xorriso options
2010.07.05.122901 [3328]
configure.ac
Makefile.am
README
+ libisoburn/libisoburn.ver
Hiding all non-API symbols from the linker by use of --version-script
2010.07.06.114102 [3331]
configure.ac
acinclude.m4
Let configure perform linker test with --version-script if enabled
2010.07.06.114503 [3332]
libisoburn/libisoburn.h
xorriso/xorriso.h
Mentioned that public API calls must be in libisofs/libisofs.ver
2010.07.08.155900 [3333]
xorriso/emulators.c
Made behavior of -as mkisofs with unknown options more similar to original
------------------------------------ cycle - xorriso-0.6.1 - 2010.07.08.155900
* Made behavior of -as mkisofs with unknown options more similar to original
2010.07.29.164843 [3338]
Makefile.am
Detached make target "doc" from target "all".
29 Jul 2010 [3339]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Corrected manual text about -read_mkisofsrc
2010.07.30.155123 [3340]
libisoburn/libisoburn.ver
xorriso/xorriso.h
xorriso/xorriso_private.h
xorriso/xorrisoburn.h
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/parse_exec.c
xorriso/opts_a_c.c
xorriso/opts_p_z.c
xorriso/emulators.c
xorriso/text_io.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New option -preparer_id, -as mkisofs options -p and -preparer
30 Jul 2010 [3342]
doc/doxygen.conf.in
Removed problematic DETAILS_AT_TOP to silence warning of Debian buildd
30 Jul 2010 [3343]
doc/doxygen.conf.in
Corrected FILE_PATTERNS
2010.07.31.085437 [3344]
xorriso/cmp_update.c
Missing device,inode numbers caused -compare_r to report a difference
------------------------------------ cycle - xorriso-0.6.1 - 2010.07.31.085437
* New option -preparer_id, -as mkisofs options -p and -preparer
2010.08.09.092037 [3351]
libisoburn/libisoburn.h
doc/comments
Hopefully silenced warnings of doxygen on Debian buildd
2010.08.18.102709 [3353]
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs option -e from Fedora genisoimage
2010.08.18.181640 [3354]
xorriso/xorriso_private.h
xorriso/opts_a_c.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -boot_image specifier emul_type=none|hard_disk|floppy
2010.08.18.181855 [3355]
xorriso/emulators.c
New -as mkisofs option -hard-disk-boot, enabled -b without -no-emul-boot
2010.08.21.103003 [3357]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
xorriso/xorriso_eng.html
Mentioned support for DVD-R DL as single-session media
2010.09.04.100823 [3359]
xorriso/iso_manip.c
This was obviously forgotten to commit with rev 3289
2010.09.05.113621 [3360]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
New API function isoburn_igopt_set_part_offset(), requiring libisofs 0.6.35
2010.09.05.113655 [3361]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/opts_a_c.c
xorriso/text_io.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New boot_image boot specs partition_offset, partition_hd_cyl, partition_sec_hd
2010.09.05.113945 [3362]
xorriso/emulators.c
New -as mkisofs options -partition_offset, -partition_hd_cyl, -partition_sec_hd
------------------------------------ cycle - xorriso-0.6.1 - 2010.09.05.113945
* New API function isoburn_igopt_set_part_offset()
* New -boot_image specifier emul_type=none|hard_disk|floppy
* New -as mkisofs option -hard-disk-boot, enabled -b without -no-emul-boot
* New -as mkisofs option -e from Fedora genisoimage
* New boot_image boot specs partition_offset, partition_hd_cyl, partition_sec_hd
* New -as mkisofs options -partition_offset, -partition_hd_cyl, -partition_sec_hd
2010.09.06.103347 [3363]
libisoburn/isoburn.c
Bug fix: Re-enabled use of iso_write_opts_set_rrip_1_10_px_ino()
2010.09.10.170925 [3364]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/isofs_wrap.c
libisoburn/burn_wrap.c
Enabled multi-session with partition offset
2010.09.10.171223 [3365]
xorriso/drive_mgt.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Enabled multi-session with partition offset
2010.09.11.125002 [3366]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/isofs_wrap.c
Removed development marks
2010.09.11.125039 [3367]
xorriso/xorriso_private.h
Removed development marks
------------------------------------ cycle - xorriso-0.6.1 - 2010.09.11.125039
* Bug fix: Regression with -hardlinks and -compliance old_rr, 0.4.2, Aug 2009
2010.09.15.065722 [3370]
Makefile.am
ChangeLog
Meaningful change log file derived by George Danchev from web site
2010.09.15.091546 [3371]
configure.ac
libisoburn/libisoburn.h
Requiring libisofs-0.6.36 now
2010.09.15.092023 [3372]
xorriso/configure_ac.txt
Version leap to 0.6.37
17 Sep 2010 [3380]
xorriso/configure_ac.txt
Version leap to libburn-0.8.7
18 Sep 2010 [3382]
svn copy -m Branching for libisoburn release 0.6.0
http://svn.libburnia-project.org/libisoburn/trunk
http://svn.libburnia-project.org/libisoburn/branches/ZeroSixZero
18 Sep 2010 [3383]
svn delete http://svn.libburnia-project.org/libisoburn/branches/ZeroSixZero
Removed falsely named branch
18 Sep 2010 [3384]
svn copy -m Branching for libisoburn release 0.6.2
http://svn.libburnia-project.org/libisoburn/trunk
http://svn.libburnia-project.org/libisoburn/branches/ZeroSixTwo
2010.09.18.120001 [3385]
configure.ac
README
libisoburn/libisoburn.h
xorriso/README_gnu_xorriso
xorriso/xorriso.h
xorriso/xorrisoburn.h
xorriso/xorriso_main.c
xorriso/xorriso_eng.html
xorriso/make_xorriso_standalone.sh
xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.2
18 Sep 2010 [3386]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
2010.09.18.210001 [3387]
libisoburn/isoburn.c
Fixed a bug with uninitialized variable introduced by rev 3364
19 Sep 2010 [3388]
xorriso/changelog.txt
Documented changes and release timestamp
----------------------------------- release - xorriso-0.6.2 - 2010.09.18.210001
libisoburn novelties:
* New API function isoburn_igopt_set_part_offset()
* Hiding all non-API symbols from the linker by use of --version-script
* Now with history of release notes in ./ChangeLog file.
xorriso novelties:
* Bug fix: Regression with -hardlinks and -compliance old_rr, 0.4.2, Aug 2009
* New option -preparer_id, -as mkisofs options -p and -preparer
* New -boot_image specifier emul_type=none|hard_disk|floppy
* New boot_image boot specs partition_offset, partition_hd_cyl, partition_sec_hd
* Made behavior of -as mkisofs with unknown options more similar to original
* New -as mkisofs option -hard-disk-boot, enabled -b without -no-emul-boot
* New -as mkisofs option -e from Fedora genisoimage
* New -as mkisofs options -partition_offset,-partition_hd_cyl,-partition_sec_hd
2010.09.19.134042 [3389]
configure.ac
README
libisoburn/libisoburn.h
xorriso/README_gnu_xorriso
xorriso/xorriso.h
xorriso/xorrisoburn.h
xorriso/xorriso_main.c
xorriso/xorriso_eng.html
xorriso/make_xorriso_standalone.sh
xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.3
2010.09.19.135354 [3390]
libisoburn/isoburn.c
Fixed a bug with uninitialized variable introduced by rev 3364
19 Sep 2010 [3391]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - xorriso-0.6.3 - 2010.09.19.135354
19 Sep 2010 [3392]
svn move -m Promoted branch to tag
http://svn.libburnia-project.org/libisoburn/branches/ZeroSixTwo
http://svn.libburnia-project.org/libisoburn/tags/ZeroSixTwo
2010.09.21.142424 [3393]
acinclude.m4
configure.ac
Makefile.am
On Linux: Run ldconfig during make install,if not --disable-ldconfig-at-install
2010.09.21.150325 [3394]
acinclude.m4
configure.ac
Makefile.am
On Linux: More tolerance towards failures of ldconfig
22 Sep 2009 [3396]
README
Mentioned --disable-ldconfig-at-install
2010.09.23.135551 [3400]
Makefile.am
xorriso/make_xorriso_standalone.sh
+ doc/partition_offset.wiki
Explaining the partition offset feature
2010.09.24.110727 [3406]
configure.ac
libisoburn/libisoburn.h
Requiring libburn-0.8.7 now
2010.09.24.110841 [3407]
xorriso/drive_mgt.c
Reporting BD spare area info with -list_formats
29 Sep 2010 [3409]
doc/partition_offset.wiki
Updated partition offset wike about GRUB experiment
2010.09.29.091541 [3410]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/libisoburn.ver
ChangeLog
New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte()
2010.09.29.092348 [3411]
configure.ac
xorriso/xorriso.h
libisoburn/libisoburn.ver
xorriso/xorriso_private.h
xorriso/xorrisoburn.h
xorriso/base_obj.c
xorriso/parse_exec.c
xorriso/opts_i_o.c
xorriso/emulators.c
xorriso/lib_mgt.c
xorriso/write_run.c
ChangeLog
New -as mkisofs options -jigdo-* and -md5-list as of genisoimage
2010.09.29.092537 [3412]
xorriso/configure_ac.txt
Enabled use of libjte for GNU xorriso
2010.09.29.124423 [3413]
xorriso/write_run.c
Avoided trailing 64 kB alignment with -compliance no_emul_toc
2010.09.29.152827 [3414]
xorriso/parse_exec.c
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/lib_mgt.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
xorriso/convert_man_to_html.sh
ChangeLog
New option -jigdo
2010.09.29.164121 [3415]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/text_io.c
xorriso/aux_objects.h
xorriso/aux_objects.c
Enabled -status -jigdo
2010.09.30.074208 [3416]
xorriso/lib_mgt.c
Switched from old libjte API names to new ones
2010.10.01.190235 [3417]
xorriso/xorriso_private.h
xorriso/base_obj.c
Made two non-public parameters independent of Xorriso_with_libjtE
------------------------------------ cycle - xorriso-0.6.3 - 2010.10.01.190235
* New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte()
* New -as mkisofs options -jigdo-* and -md5-list as of genisoimage
* New option -jigdo
2010.10.02.121147 [3418]
xorriso/emulators.c
xorriso/lib_mgt.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs option -jigdo-template-compress
2010.10.02.150240 [3419]
xorriso/lib_mgt.c
Added a blank to xorriso Preparer Id string
2010.10.02.164306 [3420]
configure.ac
libisoburn/libisoburn.h
Requiring libisofs-0.6.37 now
2010.10.02.210023 [3421]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/libisoburn.ver
ChangeLog
New API call isoburn_igopt_set_tail_blocks()
2010.10.02.210305 [3422]
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Letting libisofs do the padding with -jigdo, rather than disabling padding
2010.10.03.082304 [3423]
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/lib_mgt.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs options -checksum_algorithm_iso, -checksum_algorithm_template
03 Oct 2010 [3424]
ChangeLog
Forgot to commit ChangeLog
2010.10.03.171305 [3425]
xorriso/lib_mgt.c
Reacting with FATAL event on failure to create libjte_handle
03 Oct 2010 [3426]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Corrected xorriso docs about meaning of -jigdo-map and .md5 file addresses
------------------------------------ cycle - xorriso-0.6.3 - 2010.10.03.171305
* New API call isoburn_igopt_set_tail_blocks()
* New -as mkisofs options -checksum_algorithm_iso, -checksum_algorithm_template
2010.10.04.112234 [3427]
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/lib_mgt.c
xorriso/write_run.c
Enabled use of libjte message list
2010.10.04.113140 [3428]
xorriso/lib_mgt.c
Silenced compiler warning about unused variable
2010.10.04.155110 [3429]
libisoburn/libisoburn.h
libisoburn/burn_wrap.c
libisoburn/libisoburn.ver
ChangeLog
Tests for version of libjte, new API call isoburn_libjte_req()
2010.10.04.155226 [3430]
xorriso/lib_mgt.c
Reporting libjte version with option -version
2010.10.05.180016 [3431]
xorriso/iso_manip.c
Fixed a potential SIGSEGV by pointer offset -1. Detected by valgrind.
2010.10.06.162230 [3432]
xorriso/write_run.c
Fixed a theoretically possible race condition of burn end and ISO generator end
2010.10.07.114916 [3433]
libisoburn/burn_wrap.c
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/write_run.c
Preparing for GNU xorriso to include libjte source
7 Oct 2010 [3434]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Enhanced xorriso docs about meaning of .md5 file addresses
2010.10.07.180935 [3435]
libisoburn/burn_wrap.c
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/write_run.c
Corrected compile problems introduced with rev 3433
2010.10.08.093338 [3436]
libisoburn/burn_wrap.c
Fixed inability to compile without enabled libjte. Introduced by rev 3429.
8 Oct 2010 [3437]
COPYRIGHT
Removed unrelated copyright statements from libisoburn COPYRIGHT
2010.10.12.103027 [3438]
libisoburn/libisoburn.h
libisoburn/isoburn.c
Allowed to set System Area type via isoburn_igopt_set_system_area()
2010.10.12.103157 [3439]
xorriso/xorriso_private.h
xorriso/opts_a_c.c
xorriso/emulators.c
Provisorily: -boot_image mips_path= , -as mkisofs -mips-boot. No Eltorito then.
2010.10.12.183125 [3440]
xorriso/xorriso_private.h
xorriso/xorrisoburn.h
xorriso/opts_a_c.c
xorriso/emulators.c
xorriso/iso_img.c
Lifted the ban to combine MIPS Big Endian boot with El Torito
2010.10.13.170641 [3441]
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/iso_img.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Polished and documented MIPS booting option
2010.10.15.112050 [3442]
xorriso/xorriso_private.h
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/iso_img.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
-boot_image mipsel_path= , -as mkisofs -mipsel-boot.
2010.10.15.121533 [3443]
xorriso/make_xorriso_standalone.sh
xorriso/configure_ac.txt
xorriso/xorriso_makefile_am.txt
xorriso/COPYRIGHT_gnu_xorriso
xorriso/README_gnu_xorriso
xorriso/AUTHORS_gnu_xorriso
xorriso/xorriso_eng.html
Included libjte in GNU xorriso
2010.10.15.125440 [3444]
libisoburn/burn_wrap.c
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/configure_ac.txt
United macro Xorriso_jte_standalonE with macro Xorriso_standalonE
------------------------------------ cycle - xorriso-0.6.3 - 2010.10.15.125440
* New API call isoburn_libjte_req()
* New bootspecs mips_path= and mipsel_path= for Debian MIPS releases
* New -as mkisofs options -mips-boot and -mipsel-boot
2010.10.18.155353 [3446]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/libisoburn.ver
New API calls isoburn_igopt_set_partition_img, isoburn_igopt_get_partition_img
2010.10.18.160132 [3448]
xorriso/xorriso.h
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/parse_exec.c
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/emulators.c
xorriso/iso_img.c
xorriso/write_run.c
libisoburn/libisoburn.ver
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New option -append_partition, -as mkisofs -append_partition
------------------------------------ cycle - xorriso-0.6.3 - 2010.10.18.160132
* New option -append_partition, -as mkisofs -append_partition
2010.10.19.104814 [3449]
xorriso/xorriso.h
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Minor adjustments
------------------------------------ cycle - xorriso-0.6.3 - 2010.10.19.104814
2010.10.19.170704 [3451]
ChangeLog
xorriso/write_run.c
Avoiding potential endless write pacifier loop. Introduced with rev 3432.
2010.10.20.075221 [3452]
xorriso/write_run.c
Cancelling libisofs write thread in case of early libburn end
2010.10.20.170430 [3461]
xorriso/configure_ac.txt
Version leap to libburn-0.8.9
2010.10.20.170546 [3462]
configure.ac
libisoburn/libisoburn.h
Requiring libburn-0.8.8 now
2010.10.21.180343 [3463]
xorriso/drive_mgt.c
Corrected -check_media handling of last track on BD-R resp. BD-ROM
2010.10.23.162213 [3464]
configure.ac
libisoburn/libisoburn.h
Requiring libisofs-0.6.38 now
2010.10.23.162302 [3465]
xorriso/configure_ac.txt
Adapted GNU xorriso to version leap libisofs-0.6.39
26 Oct 2010 [3466]
svn copy -m Branching for libisoburn release 0.6.4
http://svn.libburnia-project.org/libisoburn/trunk
http://svn.libburnia-project.org/libisoburn/branches/ZeroSixFour
2010.10.26.100001 [3467]
configure.ac
README
libisoburn/libisoburn.h
xorriso/README_gnu_xorriso
xorriso/xorriso.h
xorriso/xorrisoburn.h
xorriso/xorriso_main.c
xorriso/xorriso_eng.html
xorriso/make_xorriso_standalone.sh
xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.2
26 Oct 2010 []
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
----------------------------------- release - xorriso-0.6.4 - 2010.10.26.100001
* New API call isoburn_libjte_req()
* New API calls isoburn_igopt_attach_jte() and isoburn_igopt_detach_jte()
* New API call isoburn_igopt_set_tail_blocks()
* New API call isoburn_libjte_req()
* New option -jigdo
* New -as mkisofs options -jigdo-* and -md5-list as of genisoimage
* New -as mkisofs options -checksum_algorithm_iso, -checksum_algorithm_template
* New bootspecs mips_path= and mipsel_path= for Debian MIPS releases
* New -as mkisofs options -mips-boot and -mipsel-boot
* New option -append_partition, -as mkisofs -append_partition
------------------------------------ cycle - xorriso-0.6.5 -
------------------------------------ cycle - xorriso-0.6.5 -
**********************************************************************
Important: When adding a public API function then add its name to file
libisoburn/libisoburn.ver
**********************************************************************
===============================================================================
TODO
===============================================================================
- If libburn ends reading before libisofs is done and without canceling
burn source, then xorriso pacifier finally has to give up waiting
- Does isoburn_cancel_prepared_write() guarantee wait until it is done ?
- Does ecma119.c:bs_cancel() guarantee this ?
/sbin/mkfs.msdos -n Bla -C /dvdbuffer/test.fat 8192
dd if=/dvdbuffer/RIPLinux-9.3-non-X.iso bs=1K count=32 \
of=/dvdbuffer/RIPLinux-9.3-non-X.sysarea
mount -o loop /dvdbuffer/RIPLinux-9.3-non-X.iso /mnt
../jte/bin/jigdo-gen-md5-list /mnt >/dvdbuffer/riplinux-9.3-non-X.md5
r -as mkisofs \
-o /dvdbuffer/riplinux-9.3-non-X.iso \
-b boot/isolinux/isolinux.bin -c boot/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-isohybrid-mbr /dvdbuffer/RIPLinux-9.3-non-X.sysarea \
-partition_offset 16 \
-append_partition 2 0x01 /dvdbuffer/test.fat \
\
-R -V 'RIPLinux_9_3' \
-jigdo-template-compress gzip \
-checksum_algorithm_iso md5,sha1,sha256,sha512 \
-checksum_algorithm_template all \
-jigdo-jigdo /dvdbuffer/riplinux-9.3-non-X.jigdo \
-jigdo-template /dvdbuffer/riplinux-9.3-non-X.template \
-jigdo-map Debian=/mnt/ \
-jigdo-exclude boot/syslinux \
-md5-list /dvdbuffer/riplinux-9.3-non-X.md5 \
-jigdo-min-file-size 0 \
-J -joliet-long -cache-inodes \
\
/mnt
On debian:
$ jigit-mkimage \
-t ~/test/test_jte.template \
-j ~/test/test_jte.jigdo \
-m Debian=/home/thomas/projekte/libburn_dir/cdrskin-0.7.2/ \
-o ~/test/test_jte.rebuilt
r -as mkisofs \
-jigdo-template-compress gzip \
-checksum_algorithm_iso md5,sha1,sha256,sha512 \
-checksum_algorithm_template md5,sha512 \
-R -V 'Debian 5.0.6 amd64 Bin-1' \
-o /home/test/test_jte.iso \
-jigdo-jigdo /home/test/test_jte.jigdo \
-jigdo-template /home/test/test_jte.template \
-jigdo-map Debian=/home/test/cdrskin-0.7.2/ \
-jigdo-exclude xorriso-0.5.6 \
-md5-list /home/test/test_jte.md5 \
-jigdo-min-file-size 0 \
-jigdo-exclude 'README*' \
-jigdo-exclude /doc/ \
-jigdo-exclude /md5sum.txt \
-jigdo-exclude /.disk/ \
-jigdo-exclude /pics/ \
-jigdo-exclude 'Release*' \
-jigdo-exclude 'Packages*' \
-jigdo-exclude 'Sources*' \
-J -J -joliet-long -cache-inodes \
-b libburn/libdax_audioxtr.h \
-c libburn/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
/home/test/xorriso-0.5.6 \
/home/test/cdrskin-0.7.2 \
? jte-develop/bin/jigdo-gen-md5-list
? jte-develop/doc/jigdo-gen-md5-list.1
- Should iso_write() buffer up to full 2k blocks ?
Currently it forwards many small chunks to .template.
------------------------------------------------- For Debian:
- Need specs for the exotic boot options
-mips-boot is implemented
- recognize at load time and build boot file list
-mipsel-boot is implemented
- recognize at load time and build boot file list
-sparc-boot
# Make the firmware volume.
tmpdir="$(mktemp -d)"
firmware_volume_file="$tmpdir/fat"
mkfs.msdos -n "$firmware_volume_name" -C "$firmware_volume_file" \
$(expr $firmware_volume_size_M \* 1024)
------------------------------------------------- For Solaris
(The mount command needs to be adapted to Solaris.
@ -8294,19 +9092,39 @@ Implemented -as mkisofs options -abstract, -biblio, -copyright
- try
qemu -m 256 -cdrom /tmp/R.iso -boot d
>>> does not do anything recognizable. Not even fails.
------------------------------------------------- bugs
- Make first pass of -as mkisofs fool proof.
Currently it would accept arguments of unhandled options as options.
- Empty boot image file
-boot_image any bin_path=/with_bytes
-boot_image any next
-boot_image any bin_path=/empty_file
reports no problems during write but causes strange load messages
xorriso : NOTE : Loading ISO image tree from LBA 0
libisofs: WARNING : More than one ISO node has been found for the same boot image.
xorriso : UPDATE : 3905 nodes read in 1 seconds
libisofs: WARNING : More than one ISO node has been found for the same boot image.
libisofs: WARNING : Found hidden El-Torito image. Its size could not be figure out, so image modify or boot image patching may lead to bad results.
-boot_image any show_status
yields
Boot record : El Torito
Boot catalog : '/u/boot.cat'
Boot image : '/u/x'
Boot image : -not-found-any-more-
- xorriso ... -b ... -c does/not/exist/in/image ...
yields riddling error message:
libisofs: FAILURE : A requested node does not exist
xorriso : FAILURE : Could not attach El-Torito boot image to ISO 9660 image
- one-time delimiter which overrides -list_delimiter for only the
next command.
E.g. for --back_to_xorriso in emulations
- An ISO image as first file of a stdout stream might start at LBA 32
and thus look like a session. It has not the proper ofsset, though.
and thus look like a session. It has not the proper offset, though.
- reduce xorriso -abort_on default to FAILURE ?
or increase "Not a known option" to FATAL ?
- xorriso_eng.html on www.gnu.org it should rather be xorriso.html
@ -8336,8 +9154,6 @@ xorriso : UPDATE : 3691 MB written (fifo 78%) [buf 100%] 2.3x.
- options -print_info , -print_mark
- (ECMA-119 names in: -copyright_id , -abstract_id , -biblio_id)
- Mark data blocks of -check_md5 matching files as valid in sector map ?
- tree of name nodes to represent the cached paths of hardlink candidates.
@ -8352,6 +9168,10 @@ xorriso : UPDATE : 3691 MB written (fifo 78%) [buf 100%] 2.3x.
- what about differently filtered streams ?
It is not wrong but a waste to update them as siblings.
- one-time delimiter which overrides -list_delimiter for only the
next command.
E.g. for --back_to_xorriso in emulations
- sudo and setuid chapter in man page
@ -8439,21 +9259,6 @@ xorriso : UPDATE : 3691 MB written (fifo 78%) [buf 100%] 2.3x.
very slow with high workload.
Some hash accelerator would be nice.
- isohybrid
- as of syslinux-3.81pre10/utils/isohybrid.in :
- new signature {0xf7, 0xe3, 0xef, 0x0d}
- read $id from previous session: byte 440, 4 bytes,
if not {0,0,0,0} write the same byte string to new MBR byte 440
- user adjustable parameters
- $pentry {1..4} = 1
- $fstype {0...255} = 0x17
- $offset {0...64} = 0
- $h {1...256} = 64
- $s {1...63} = 32
- $id {0...0xffffffff]
- $hd0 {0...2} = 0
- $partok {0...1} = 0
- A dummy option in IsoWriteOpts which causes iso_image_create_burn_source()
to end before actually data get written. (For -print_size)

View File

@ -297,7 +297,7 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
{
struct stat s1, s2, stbuf;
int ret, missing= 0, is_split= 0, i, was_error= 0, diff_count= 0;
int content_shortcut= 0;
int content_shortcut= 0, mask;
char *respt;
char a[5*SfileadrL], sfe[5*SfileadrL];
char ttx1[40], ttx2[40];
@ -636,8 +636,12 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
}
if(was_error)
ret= -1;
else
ret= (((*result) & ~((1 << 17) | (1 << 18) | (1 << 23)))==0);
else {
mask= ~((1 << 17) | (1 << 18) | (1 << 22) | (1 << 23));
if(xorriso->do_aaip & 32)
mask|= 1 << 22;
ret= (((*result) & mask)==0);
}
ex:;
if(split_parts!=NULL)
Splitparts_destroy(&split_parts, split_count, 0);

View File

@ -3,7 +3,7 @@
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
# Provided under GPL version 2 or later.
AC_INIT([xorriso], [0.6.0], [http://libburnia-project.org])
AC_INIT([xorriso], [0.6.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
AC_CANONICAL_HOST
@ -22,14 +22,14 @@ AC_DEFINE([Xorriso_standalonE], [])
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=8
BURN_MICRO_VERSION=5
BURN_MICRO_VERSION=9
AC_SUBST(BURN_MAJOR_VERSION)
AC_SUBST(BURN_MINOR_VERSION)
AC_SUBST(BURN_MICRO_VERSION)
LIBISOFS_MAJOR_VERSION=0
LIBISOFS_MINOR_VERSION=6
LIBISOFS_MICRO_VERSION=35
LIBISOFS_MICRO_VERSION=39
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)
@ -215,7 +215,8 @@ then
fi
AH_TEMPLATE([Libisofs_with_zliB], [Define to use compression via libz])
AH_TEMPLATE([Libisofs_with_zliB], [Define to use compression via zlib])
AH_TEMPLATE([LIBJTE_WITH_ZLIB], [Allow libjte to use zlib])
AC_ARG_ENABLE(zlib,
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
, enable_zlib=yes)
@ -225,14 +226,68 @@ dnl If not, erase this macro which would enable use of compress2() and others.
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
dnl compressBound(). So compressBound is the more modern thing to test.
dnl The empty parameter after "compressBound" causes -lz.
ZLIB_DEF="-DLibisofs_with_zliB"
ZLIB_DEF=yes
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
else
ZLIB_DEF=
fi
if test x$ZLIB_DEF = x-DLibisofs_with_zliB
if test x$ZLIB_DEF = xyes
then
AC_DEFINE([Libisofs_with_zliB], [])
AC_DEFINE([LIBJTE_WITH_ZLIB], [])
fi
# libjte source is included in GNU xorriso. Enable it if zlib is enabled.
AH_TEMPLATE([Xorriso_with_libjtE],
[Define to use Jigdo Template Extraction via libjte])
AH_TEMPLATE([Libisofs_with_libjtE],
[Define to use Jigdo Template Extraction via libjte])
if test x$ZLIB_DEF = xyes
then
AC_DEFINE([Xorriso_with_libjtE], [])
AC_DEFINE([Libisofs_with_libjtE], [])
LIBJTE_DEF=yes
echo "enabled built-in libjte"
else
LIBJTE_DEF=
echo "disabled libjte because zlib not enabled or not available"
fi
AH_TEMPLATE([THREADED_CHECKSUMS],
[Define to use multi-threading in built-in libjte])
AC_ARG_ENABLE(jtethreads,
[ --enable-jtethreads Enable multi-threading in libjte, default=yes],
, enable_jtethreads=yes)
if test x$LIBJTE_DEF = xyes
then
if test "x$enable_jtethreads" = xyes; then
AC_DEFINE([THREADED_CHECKSUMS], [])
echo "enabled multi-threading in libjte"
else
echo "disabled multi-threading in libjte"
fi
fi
AH_TEMPLATE([LIBJTE_WITH_LIBBZ2],
[Define to use libbz2 by built-in libjte])
AC_ARG_ENABLE(libbz2,
[ --enable-libbz2 Enable use of libbz2 by libjte, default=yes],
, enable_libbz2=yes)
if test "x$enable_libbz2" = xyes -a x$LIBJTE_DEF = xyes ; then
dnl Check whether there is the header for libbz2.
BZIP2_DEF=yes
AC_CHECK_HEADER(bzlib.h, AC_CHECK_LIB(bz2, BZ2_bzCompressInit, , BZIP2_DEF= ), BZIP2_DEF= )
else
BZIP2_DEF=
fi
if test x$BZIP2_DEF = xyes
then
AC_DEFINE([LIBJTE_WITH_LIBBZ2], [])
BZIP2_DEF="-DLIBJTE_WITH_LIBBZ2"
fi

View File

@ -72,6 +72,7 @@ then
-e 's/<b>Character sets:<\/b>/\&nbsp;<BR><b>Character sets:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Exception processing:<\/b>/\&nbsp;<BR><b>Exception processing:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>El Torito bootable ISO images:<\/b>/\&nbsp;<BR><b>El Torito bootable ISO images:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Jigdo Template Extraction:<\/b>/\&nbsp;<BR><b>Jigdo Template Extraction:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Dialog mode control:<\/b>/\&nbsp;<BR><b>Dialog mode control:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Drive and media related inquiry actions:<\/b>/\&nbsp;<BR><b>Drive and media related inquiry actions:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Navigation in ISO image/\&nbsp;<BR><b>Navigation in ISO image/' \

View File

@ -155,7 +155,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
{
int ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba, ext;
int lba, track, session, params_flag, adr_mode, read_ret;
uint32_t size;
uint32_t size, offst;
struct burn_drive_info *dinfo= NULL, *out_dinfo, *in_dinfo;
struct burn_drive *drive= NULL, *out_drive, *in_drive;
enum burn_disc_status state;
@ -233,6 +233,16 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
state= isoburn_disc_get_status(dinfo[0].drive);
ret= isoburn_get_img_partition_offset(dinfo[0].drive, &offst);
if((state == BURN_DISC_APPENDABLE || state == BURN_DISC_FULL) && ret == 1) {
sprintf(xorriso->info_text,
"ISO image bears MBR with -boot_image any partition_offset=%lu",
(unsigned long) offst);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
}
if(flag&1)
if(xorriso->image_start_mode&(1<<31)) /* used up setting */
xorriso->image_start_mode= 0; /* no need to perform auto setting */
@ -242,6 +252,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
xorriso->outdev_is_exclusive= xorriso->drives_exclusive;
}
drive= dinfo[0].drive;
state= isoburn_disc_get_status(drive);
Xorriso_process_msg_queues(xorriso,0);
if(flag&1) {
if(xorriso->image_start_mode&(1<<31)) /* used up setting */
xorriso->image_start_mode&= ~0xffff; /* perform auto setting */
@ -279,8 +291,6 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
xorriso->image_start_mode|= (1<<31); /* mark as used up */
}
}
state= isoburn_disc_get_status(drive);
Xorriso_process_msg_queues(xorriso,0);
if(flag&1) {
volset= isoburn_get_attached_image(drive);
if(volset != NULL) { /* The image object is already created */
@ -1147,7 +1157,7 @@ int Xorriso_tell_media_space(struct XorrisO *xorriso,
*/
int Xorriso_list_formats(struct XorrisO *xorriso, int flag)
{
int ret, i, status, num_formats, profile_no, type;
int ret, i, status, num_formats, profile_no, type, alloc_blocks, free_blocks;
off_t size;
unsigned dummy;
char status_text[80], profile_name[90], *respt;
@ -1196,6 +1206,12 @@ int Xorriso_list_formats(struct XorrisO *xorriso, int flag)
sprintf(status_text, "illegal status according to MMC-5");
sprintf(respt, "Format status: %s\n", status_text);
Xorriso_result(xorriso,0);
ret= burn_disc_get_bd_spare_info(drive, &alloc_blocks, &free_blocks, 0);
if(ret == 1) {
sprintf(respt, "BD Spare Area: %d blocks consumed, %d blocks available\n",
alloc_blocks - free_blocks, free_blocks);
Xorriso_result(xorriso,0);
}
for (i= 0; i < num_formats; i++) {
ret= burn_disc_get_format_descr(drive, i, &type, &size, &dummy);
@ -1993,8 +2009,8 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
int media_blocks= 0, read_chunk= 16, ret, mode, start_lba= 0;
int blocks, os_errno, i, j, last_track_end= -1, track_blocks, track_lba;
int num_sessions, num_tracks, declare_untested= 0, md5_start;
int read_capacity= -1, end_lba, hret, count, quality;
char *toc_info= NULL;
int read_capacity= -1, end_lba, hret, count, quality, profile_no;
char *toc_info= NULL, profile_name[80];
struct burn_drive *drive;
struct burn_drive_info *dinfo;
struct isoburn_toc_disc *isoburn_disc= NULL;
@ -2053,6 +2069,9 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
ret= burn_get_read_capacity(drive, &read_capacity, 0);
if(ret <= 0)
read_capacity= -1;
ret = burn_disc_get_profile(drive, &profile_no, profile_name);
if(ret <= 0)
profile_no= 0;
if(job->max_lba >= 0) {
blocks= job->max_lba + 1 - start_lba;
@ -2077,6 +2096,16 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
continue;
track_lba= isoburn_entry.start_lba;
track_blocks= isoburn_entry.track_blocks;
/* The last track of an appendable BD-R reports more blocks than the
read capacity allows. All BD-R track sizes are multiple of 64 kB.
*/
if (i == num_sessions - 1 &&
(track_lba + track_blocks > read_capacity &&
track_lba + track_blocks < read_capacity + 32 &&
(profile_no == 0x41 || profile_no == 0x40)))
track_blocks= read_capacity - track_lba;
md5_start= track_lba;
if(i == 0 && j == 0) {
if(track_lba == 32) {

View File

@ -494,6 +494,120 @@ ex:;
}
/* This function shall know all options of mkisofs, genisoimage, xorrisofs, ...
and the number of arguments which they expect and consume.
*/
int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
int *count, int flag)
{
int i;
char *cmd;
static char partial_options[][41]= {
"errctl=",
"isolinux_mbr=", "--modification-date=",
""
};
static char arg0_options[][41]= {
"-allow-leading-dots", "-ldots", "-allow-lowercase", "-allow-multidot",
"-cache-inodes", "-no-cache-inodes", "-eltorito-alt-boot",
"-hard-disk-boot", "-no-emul-boot", "-no-boot", "-boot-info-table",
"-check-oldnames", "-d", "-D", "-dvd-video", "-f", "-gui", "-graft-points",
"-hide-joliet-trans-tbl", "-hide-rr-moved", "-J", "-joliet-long", "-l",
"-L", "-max-iso9660-filenames", "-N", "-nobak", "-no-bak",
"-no-limit-pathtables", "-force-rr", "-no-rr",
"-no-split-symlink-components", "-no-split-symlink-fields", "-pad",
"-no-pad", "-posix-H", "-posix-L", "-posix-P", "-print-size",
"-quiet", "-R", "-r", "-relaxed-filenames", "-rrip110", "-rrip112",
"-split-output", "-T", "-UDF", "-udf", "-udf-symlinks", "-no-udf-symlinks",
"-U", "-no-iso-translate", "-v", "-XA", "-xa", "-z",
"-hfs", "-no-hfs", "-apple", "-probe", "-no-desktop", "-mac-name",
"-part", "-icon-position", "-chrp-t", "-hfs-unlock", "--cap", "--netatalk",
"--double", "--ethershare", "--ushare", "--exchange", "--sgi", "--xinet",
"--macbin", "--single", "--dave", "--sfm", "--osx-double", "--osx-hfs",
"-debug", "-omit-period", "-disable-deep-relocation", "-joliet",
"-full-iso9660-filenames", "-follow-links", "-help",
"-transparent-compression",
"-omit-version-number", "-rational-rock", "-rock", "-translation-table",
"-untranslated-filenames", "-verbose", "-version", "-g", "-h",
"-no-mac-files", "-chrp-boot",
"--hardlinks", "--acl", "--xattr", "--md5", "--for_backup",
"--protective-msdos-label", "--boot-catalog-hide", "--no-emul-toc",
""
};
static char arg1_options[][41]= {
"-abstract", "-A", "-appid", "-biblio", "-b", "-B", "-boot-load-seg",
"-boot-load-size", "-C", "-c", "-check-session", "-copyright",
"-dir-mode", "-file-mode", "-G", "-gid", "-hide", "-hide-list",
"-hidden", "-hidden-list", "-hide-joliet", "-hide-joliet-list",
"-hide-udf", "-hide-udf-list", "-input-charset", "-output-charset",
"-iso-level", "-jcharset", "-log-file", "-m", "-exclude-list", "-M",
"-dev", "-new-dir-mode", "-o", "-p", "-preparer",
"-path-list", "-publisher", "-root",
"-old-root", "-s", "-sectype", "-sort", "-sparc-boot", "-sparc-label",
"-stream-media-size", "-stream-file-name", "-sunx86-boot", "-sunx86-label",
"-sysid", "-table-name", "-ucs-level", "-uid", "-V", "-volset",
"-volset-size", "-volset-seqno", "-x", "-P",
"-map", "-magic", "-hfs-creator", "-hfs-type", "-boot-hfs-file", "-auto",
"-cluster-size", "-hide-hfs", "-hide-hfs-list", "-hfs-volid",
"-root-info", "-prep-boot", "-input-hfs-charset", "-output-hfs-charset",
"-hfs-bless", "-hfs-parms",
"-eltorito-boot", "-generic-boot", "-eltorito-catalog", "-cdrecord-params",
"-errctl", "-exclude", "-prev-session", "-output", "-use-fileversion",
"-volid", "-old-exclude",
"-alpha-boot", "-hppa-cmdline", "-hppa-kernel-32", "-hppa-kernel-64",
"-hppa-bootloader", "-hppa-ramdisk", "-mips-boot", "-mipsel-boot",
"-jigdo-jigdo", "-jigdo-template", "-jigdo-min-file-size",
"-jigdo-force-md5", "-jigdo-exclude", "-jigdo-map", "-md5-list",
"-jigdo-template-compress",
"-checksum_algorithm_iso", "-checksum_algorithm_template",
"--stdio_sync", "--quoted_path_list", "--efi-boot", "--embedded-boot",
"-isohybrid-mbr", "-e", "-partition_offset", "-partition_hd_cyl",
"-partition_sec_hd",
""
};
static char arg2_options[][41]= {
"--scdbackup_tag", "--sort-weight",
""
};
static char arg3_options[][41]= {
"-append_partition",
""
};
static char final_options[][41]= {
"-find",
""
};
cmd= argv[0];
*count= 0;
for(i=0; partial_options[i][0]!=0; i++)
if(strncmp(partial_options[i], cmd, strlen(partial_options[i]))==0)
return(1);
for(i=0; arg0_options[i][0]!=0; i++)
if(strcmp(arg0_options[i], cmd)==0)
return(1);
*count= 1;
for(i=0; arg1_options[i][0]!=0; i++)
if(strcmp(arg1_options[i], cmd)==0)
return(1);
*count= 2;
for(i=0; arg2_options[i][0]!=0; i++)
if(strcmp(arg2_options[i], cmd)==0)
return(1);
*count= 3;
for(i=0; arg3_options[i][0]!=0; i++)
if(strcmp(arg3_options[i], cmd)==0)
return(1);
*count= argc - 1;
for(i=0; final_options[i][0]!=0; i++)
if(strcmp(final_options[i], cmd)==0)
return(1);
*count= 0;
return(0);
}
/* @param flag bit0= do not report eventual ignore decision
*/
int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
@ -509,7 +623,7 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
""
};
static char ignored_arg1_options[][41]= {
"-check-session", "-hide-hfs", "-hide-hfs-list", "-p", "-preparer", "-root",
"-check-session", "-hide-hfs", "-hide-hfs-list", "-root",
"-old-root", "-table-name", "-volset-seqno", "-volset-size",
""
};
@ -536,23 +650,19 @@ no_volunteer:;
int Xorriso_genisofs_add_boot(struct XorrisO *xorriso, char *whom,
int *option_b, int *no_emul_boot, int flag)
int *option_b, int *emul_boot, int flag)
{
int ret;
if(*option_b && !*no_emul_boot) {
xorriso->boot_image_bin_path[0]= 0;
sprintf(xorriso->info_text,
"-as %s: Option -b is supported only if option -no-emul-boot is given",
whom);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
if(*option_b)
xorriso->boot_image_emul= *emul_boot;
else
xorriso->boot_image_emul= 0;
ret= Xorriso_attach_boot_image(xorriso, 0);
if(ret <= 0)
xorriso->boot_image_bin_path[0]= 0;
*option_b= 0;
*no_emul_boot= 1;
*emul_boot= 2;
return(ret);
}
@ -611,18 +721,41 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -abstract FILE Set Abstract filename",
" -biblio FILE Set Bibliographic filename",
" -copyright FILE Set Copyright filename",
" -p PREP, -preparer PREP Set Volume preparer",
" -jigdo-jigdo FILE Produce a jigdo .jigdo file as well as the .iso",
" -jigdo-template FILE Produce a jigdo .template file as well as the .iso",
" -jigdo-min-file-size SIZE Minimum size for a file to be listed in the jigdo file",
" -jigdo-force-md5 PATTERN Pattern(s) where files MUST match an externally-supplied MD5sum",
" -jigdo-exclude PATTERN Pattern(s) to exclude from the jigdo file",
" -jigdo-map PATTERN1=PATTERN2",
" Pattern(s) to map paths (e.g. Debian=/mirror/debian)",
" -md5-list FILE File containing MD5 sums of the files that should be checked",
" -jigdo-template-compress ALGORITHM",
" Choose to use gzip or bzip2 compression for template data; default is gzip",
" -checksum_algorithm_iso alg1,alg2,...",
" Specify the checksum types desired for the output image (in .jigdo)",
" -checksum_algorithm_template alg1,alg2,...",
" Specify the checksum types desired for the output jigdo template"
" -b FILE, -eltorito-boot FILE",
" Set El Torito boot image name",
" -eltorito-alt-boot Start specifying alternative El Torito boot parameters",
" --efi-boot FILE Set El Torito EFI boot image name and type",
" -e FILE Set EFI boot image name (more rawly)",
" -c FILE, -eltorito-catalog FILE",
" Set El Torito boot catalog name",
" --boot-catalog-hide Hide boot catalog from ISO9660/RR and Joliet",
" -boot-load-size # Set numbers of load sectors",
" -hard-disk-boot Boot image is a hard disk image",
" -no-emul-boot Boot image is 'no emulation' image",
" -boot-info-table Patch boot image with info table",
" -G FILE, -generic-boot FILE Set generic boot image name",
" --protective-msdos-label Patch System Area by partition table",
" -partition_offset LBA Make image mountable by first partition, too",
" -partition_sec_hd NUMBER Define number of sectors per head",
" -partition_hd_cyl NUMBER Define number of heads per cylinder",
" -mips-boot FILE Set mips boot image name (relative to image root)",
" -append_partition NUMBER TYPE FILE",
" Append FILE after image. TYPE is hex: 0x..",
" --modification-date=YYYYMMDDhhmmsscc",
" Override date of creation and modification",
" -isohybrid-mbr FILE Set SYSLINUX mbr/isohdp[fp]x*.bin for isohybrid",
@ -738,9 +871,9 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int argc, char **argv, int flag)
{
int ret, i, j, was_path= 0, was_other_option= 0, mem_graft_points, mem;
int do_print_size= 0, fd, idx, iso_level= 0, no_emul_boot= 0;
int do_print_size= 0, fd, idx, iso_level= 0, emul_boot= 2;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1;
int dir_mode= -1, file_mode= -1, count;
mode_t mode_and, mode_or;
int with_boot_image= 0, with_cat_path= 0;
int *weight_list= NULL, weight_count= 0;
@ -907,7 +1040,9 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
Xorriso_option_stdio_sync(xorriso, argv[i], 0);
} else
was_other_option= 1;
ret= Xorriso_genisofs_count_args(xorriso, argc - i, argv + i, &count, 0);
if(ret > 0)
i+= count; /* skip eventual arguments of known option */
continue; /* regular bottom of loop */
problem_handler_1:;
was_failure= 1;
@ -1038,6 +1173,7 @@ not_enough_args:;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-V")==0 || strcmp(argv[i], "-volid")==0 ||
strcmp(argv[i], "-volset")==0 ||
strcmp(argv[i], "-p")==0 || strcmp(argv[i], "-preparer")==0 ||
strcmp(argv[i], "-P")==0 || strcmp(argv[i], "-publisher")==0 ||
strcmp(argv[i], "-A")==0 || strcmp(argv[i], "-appid")==0 ||
strcmp(argv[i], "-sysid")==0 ||
@ -1052,6 +1188,9 @@ not_enough_args:;
ret= Xorriso_option_volid(xorriso, argv[i], 0);
else if(strcmp(argv[i - 1], "-volset")==0)
ret= Xorriso_option_volset_id(xorriso, argv[i], 0);
else if(strcmp(argv[i - 1], "-p")==0 ||
strcmp(argv[i - 1], "-preparer")==0)
ret= Xorriso_option_preparer_id(xorriso, argv[i], 0);
else if(strcmp(argv[i - 1], "-P")==0 ||
strcmp(argv[i - 1], "-publisher")==0)
ret= Xorriso_option_publisher(xorriso, argv[i], 0);
@ -1092,13 +1231,15 @@ not_enough_args:;
xorriso->do_disk_pattern= mem;
if(ret<=0)
goto problem_handler_2;
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-quiet")==0) {
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-verbose")==0 ||
strcmp(argv[i], "-quiet")==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-iso-level")==0) {
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-no-emul-boot")==0 ||
strcmp(argv[i], "-hard-disk-boot")==0 ||
strcmp(argv[i], "-boot-info-table")==0 ||
strncmp(argv[i], "isolinux_mbr=", 13)==0 ||
strcmp(argv[i], "-eltorito-alt-boot")==0 ||
@ -1108,12 +1249,18 @@ not_enough_args:;
} else if(strcmp(argv[i], "-b") == 0 ||
strcmp(argv[i], "-eltorito-boot") == 0 ||
strcmp(argv[i], "--efi-boot") == 0 ||
strcmp(argv[i], "-e") == 0 ||
strcmp(argv[i], "-mips-boot") == 0 ||
strcmp(argv[i], "-mipsel-boot") == 0 ||
strcmp(argv[i], "-c") == 0 ||
strcmp(argv[i], "-eltorito-catalog") == 0 ||
strcmp(argv[i], "-boot-load-size") == 0 ||
strcmp(argv[i], "--embedded-boot")==0 ||
strcmp(argv[i], "-generic-boot")==0 ||
strcmp(argv[i], "-G") == 0 ||
strcmp(argv[i], "-partition_offset") == 0 ||
strcmp(argv[i], "-partition_hd_cyl") == 0 ||
strcmp(argv[i], "-partition_sec_hd") == 0 ||
strcmp(argv[i], "-isohybrid-mbr")==0) {
if(i+1>=argc)
goto not_enough_args;
@ -1192,13 +1339,39 @@ not_enough_args:;
if(ret<=0)
goto problem_handler_2;
file_mode= mode_or;
} else if(strcmp(argv[i], "-jigdo-jigdo") == 0 ||
strcmp(argv[i], "-jigdo-template") == 0 ||
strcmp(argv[i], "-jigdo-min-file-size") == 0 ||
strcmp(argv[i], "-jigdo-exclude") == 0 ||
strcmp(argv[i], "-jigdo-force-md5") == 0 ||
strcmp(argv[i], "-jigdo-map") == 0 ||
strcmp(argv[i], "-jigdo-template-compress") == 0 ||
strcmp(argv[i], "-checksum_algorithm_iso") == 0 ||
strcmp(argv[i], "-checksum_algorithm_template") == 0 ||
strcmp(argv[i], "-md5-list") == 0) {
i++;
ret= Xorriso_option_jigdo(xorriso, argv[i - 1], argv[i], 0);
if(ret <= 0)
goto problem_handler_2;
} else if(strcmp(argv[i], "-append_partition") == 0) {
i+= 3;
ret= Xorriso_option_append_partition(xorriso, argv[i - 2], argv[i - 1],
argv[i], 0);
if(ret <= 0)
goto problem_handler_2;
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
sprintf(xorriso->info_text, "-as %s: Unknown option %s",
ret= Xorriso_genisofs_count_args(xorriso, argc - i, argv + i, &count, 1);
if(ret > 0) {
sprintf(xorriso->info_text, "-as %s: Unsupported option %s",
whom, Text_shellsafe(argv[i], sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
i+= count;
goto problem_handler_2;
} else
goto is_pathspec_2;
} else {
int zero= 0;
is_pathspec_2:;
/* implementing mkisofs tendency to map single-path pathspecs to / */
if((!xorriso->allow_graft_points) ||
Fileliste__target_source_limit(argv[i], '=', &ept, 0)<=0) {
@ -1225,6 +1398,7 @@ not_enough_args:;
add_pt= argv[i];
mem_graft_points= xorriso->allow_graft_points;
xorriso->allow_graft_points= 1;
zero= 0;
ret= Xorriso_option_add(xorriso, 1, &add_pt, &zero, was_path<<1);
xorriso->allow_graft_points= mem_graft_points;
if(ret<=0)
@ -1292,27 +1466,36 @@ problem_handler_2:;
for(j= 0; j < delay_opt_count; j++) {
i= delay_opt_list[j];
if(strcmp(argv[i], "-no-emul-boot")==0) {
no_emul_boot= 1;
emul_boot= xorriso->boot_image_emul= 0;
} else if(strcmp(argv[i], "-hard-disk-boot")==0) {
emul_boot= xorriso->boot_image_emul= 1;
} else if(strcmp(argv[i], "-boot-info-table")==0) {
xorriso->patch_isolinux_image= 1;
} else if(strcmp(argv[i], "-b") == 0 ||
strcmp(argv[i], "-eltorito-boot") == 0 ||
strcmp(argv[i], "--efi-boot") == 0) {
strcmp(argv[i], "--efi-boot") == 0 ||
strcmp(argv[i], "-e") == 0) {
i++;
if(strcmp(argv[i - 1], "--efi-boot") == 0) {
if(xorriso->boot_image_bin_path[0]) {
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &no_emul_boot, 0);
&option_b, &emul_boot, 0);
if(ret <= 0)
goto problem_handler_boot;
}
boot_path= xorriso->boot_image_bin_path;
xorriso->boot_efi_default= 1;
emul_boot= xorriso->boot_image_emul= 0;
} else {
boot_path= xorriso->boot_image_bin_path;
if(strcmp(argv[i - 1], "-e") == 0)
xorriso->boot_platform_id= 0xef;
else
xorriso->boot_platform_id= 0x00;
xorriso->boot_efi_default= 0;
option_b= 1;
xorriso->boot_image_emul= emul_boot;
}
boot_path[0]= 0;
if(argv[i][0] != '/')
@ -1322,8 +1505,9 @@ problem_handler_2:;
goto ex;
if(xorriso->boot_efi_default && xorriso->boot_image_bin_path[0]) {
option_b= 0;
emul_boot= 0;
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &no_emul_boot, 0);
&option_b, &emul_boot, 0);
if(ret <= 0)
goto problem_handler_boot;
}
@ -1356,7 +1540,7 @@ problem_handler_2:;
goto problem_handler_boot;
} else if(strcmp(argv[i], "-eltorito-alt-boot")==0) {
ret= Xorriso_genisofs_add_boot(xorriso, whom,
&option_b, &no_emul_boot, 0);
&option_b, &emul_boot, 0);
if(ret <= 0)
goto problem_handler_boot;
} else if(strcmp(argv[i], "--embedded-boot")==0 ||
@ -1375,6 +1559,34 @@ problem_handler_2:;
xorriso->system_area_options= (xorriso->system_area_options & ~3) | 1;
} else if(strcmp(argv[i], "--boot-catalog-hide")==0) {
xorriso->boot_image_cat_hidden|= 3;
} else if(strcmp(argv[i], "-partition_offset") == 0 ||
strcmp(argv[i], "-partition_sec_hd") == 0 ||
strcmp(argv[i], "-partition_dh_cyl") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
sprintf(sfe, "%s=%.16s", argv[i-1] + 1, argv[i]);
ret= Xorriso_option_boot_image(xorriso, "any", sfe, 0);
if(ret <= 0)
goto problem_handler_boot;
} else if(strcmp(argv[i], "-mips-boot") == 0 ||
strcmp(argv[i], "-mipsel-boot") == 0) {
if(i + 1 >= argc)
goto not_enough_args;
i++;
if(strcmp(argv[i - 1], "-mipsel-boot") == 0)
strcpy(sfe, "mipsel_path=");
else
strcpy(sfe, "mips_path=");
ret= Sfile_str(sfe, argv[i], 1);
if(ret <= 0)
goto ex;
ret = Xorriso_option_boot_image(xorriso, "any", sfe, 0);
if(ret <= 0)
goto problem_handler_boot;
}
continue; /* regular bottom of loop */
problem_handler_boot:;
@ -1388,7 +1600,7 @@ problem_handler_boot:;
if(with_boot_image && with_cat_path == 0)
strcpy(xorriso->boot_image_cat_path, "/boot.catalog");
if(xorriso->boot_image_bin_path[0]) {
ret= Xorriso_genisofs_add_boot(xorriso, whom, &option_b, &no_emul_boot, 0);
ret= Xorriso_genisofs_add_boot(xorriso, whom, &option_b, &emul_boot, 0);
if(ret <= 0)
goto ex;
}

View File

@ -376,7 +376,7 @@ int Xorriso_boot_item_status(struct XorrisO *xorriso, char *cat_path,
strcpy(bspec, "dir=/boot/isolinux");
memset(zeros, 0, 28);
if(bspec[0] && platform_id == 0 && patch_isolinux &&
load_size == 2048 && is_default_id) {
load_size == 2048 && is_default_id && emul == 0) {
sprintf(line, "-boot_image isolinux %s\n", bspec);
Xorriso_status_result(xorriso,filter,fp,flag&2);
return(1);
@ -388,7 +388,7 @@ int Xorriso_boot_item_status(struct XorrisO *xorriso, char *cat_path,
file_size= ((stbuf.st_size / (off_t) 512) +
!!(stbuf.st_size % (off_t) 512)) * 512;
if(platform_id == 0xef && !patch_isolinux &&
load_size == file_size && is_default_id) {
load_size == file_size && is_default_id && emul == 0) {
sprintf(line, "-boot_image any efi_path=");
Text_shellsafe(bin_path, line, 1);
strcat(line, "\n");
@ -404,6 +404,12 @@ int Xorriso_boot_item_status(struct XorrisO *xorriso, char *cat_path,
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (emul == 0);
sprintf(line, "-boot_image %s emul_type=%s\n",
form, emul == 2 ? "diskette" : emul == 1 ? "hard_disk" : "no_emulation");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (platform_id == 0 || (flag & 4));
sprintf(line, "-boot_image %s platform_id=0x%-2.2x\n", form, platform_id);
if(!(is_default && no_defaults))
@ -449,6 +455,57 @@ int Xorriso_boot_item_status(struct XorrisO *xorriso, char *cat_path,
}
/*
bit0= do only report non-default settings
bit1= do only report to fp
*/
int Xorriso_boot_status_mips(struct XorrisO *xorriso, IsoImage *image,
char *filter, FILE *fp, int flag)
{
int i, num_boots, sa_type;
char *paths[15], *line;
line= xorriso->result_line;
sa_type= (xorriso->system_area_options & 0xfc) >> 2;
num_boots= iso_image_get_mips_boot_files(image, paths, 0);
Xorriso_process_msg_queues(xorriso, 0);
if(num_boots <= 0)
return(num_boots);
if(sa_type == 2)
num_boots= 1;
for(i= 0; i < num_boots; i++) {
sprintf(line, "-boot_image any mips%s_path=", sa_type ==2 ? "el" : "");
Text_shellsafe(paths[i], line, 1);
strcat(line, "\n");
Xorriso_status_result(xorriso, filter, fp, flag & 2);
}
return(num_boots);
}
/*
bit0= do only report non-default settings
bit1= do only report to fp
*/
int Xorriso_append_part_status(struct XorrisO *xorriso, IsoImage *image,
char *filter, FILE *fp, int flag)
{
int i;
for(i= 0; i < 4; i++) {
if(xorriso->appended_partitions[i][0] == 0)
continue;
sprintf(xorriso->result_line, "-append_partition %d 0x%2.2x ",
i + 1, (unsigned int) xorriso->appended_part_types[i]);
Text_shellsafe(xorriso->appended_partitions[i], xorriso->result_line, 1);
strcat(xorriso->result_line, "\n");
Xorriso_status_result(xorriso, filter, fp, flag & 2);
}
return(1);
}
/*
bit0= do only report non-default settings
bit1= do only report to fp
@ -471,7 +528,21 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
line= xorriso->result_line;
no_defaults= flag & 1;
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
"on attempt to print boot info", 2 | 16);
if(ret<=0)
goto no_image;
image= isoburn_get_attached_image(drive);
Xorriso_process_msg_queues(xorriso,0);
if(image == NULL)
goto no_image;
ret= Xorriso_boot_status_mips(xorriso, image, filter, fp, flag & 3);
if(ret < 0) /* == 0 is normal */
{ret= 0; goto ex;}
if(xorriso->boot_count == 0 && xorriso->boot_image_bin_path[0] == 0) {
no_image:;
if(xorriso->patch_isolinux_image & 1) {
sprintf(line, "-boot_image %s patch\n",
xorriso->patch_isolinux_image & 2 ? "grub" : form);
@ -485,17 +556,9 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
}
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
ret= 1; goto ex;
ret= 1; goto after_el_torito;
}
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
"on attempt to print boot info", 16);
if(ret<=0)
{ret= 0; goto ex;}
image= isoburn_get_attached_image(drive);
Xorriso_process_msg_queues(xorriso,0);
if(image == NULL)
{ret= 0; goto ex;}
if(xorriso->boot_image_bin_path[0] || xorriso->boot_count > 0)
bin_path_in_use= 1;
@ -531,6 +594,12 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
load_size= el_torito_get_load_size(boots[i]) * 512;
el_torito_get_id_string(boots[i], id_string);
el_torito_get_selection_crit(boots[i], sel_crit);
if(media_type == ELTORITO_FLOPPY_EMUL)
media_type= 2;
else if(media_type == ELTORITO_HARD_DISC_EMUL)
media_type= 1;
else
media_type= 0;
ret= Xorriso_boot_item_status(xorriso, xorriso->boot_image_cat_path,
path, platform_id, patch & 1, media_type,
load_size, id_string, sel_crit, "any",
@ -577,6 +646,11 @@ int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
if(ret <= 0)
goto ex;
after_el_torito:;
ret = Xorriso_append_part_status(xorriso, image, filter, fp, flag & 3);
if(ret <= 0)
goto ex;
ret= 1;
ex:
if(boots != NULL)
@ -959,3 +1033,81 @@ ex:;
return(ret);
}
/* @param flag bit0= give up all boot file paths
bit1= refuse if already a path is added
*/
int Xorriso_add_mips_boot_file(struct XorrisO *xorriso, char *path, int flag)
{
int ret;
IsoImage *image;
char *paths[15];
ret= Xorriso_get_volume(xorriso, &image, 0);
if(ret <= 0)
return ret;
if(flag & 1) {
iso_image_give_up_mips_boot(image, 0);
Xorriso_process_msg_queues(xorriso,0);
return(1);
}
if(flag & 2) {
ret= iso_image_get_mips_boot_files(image, paths, 0);
Xorriso_process_msg_queues(xorriso,0);
if(ret < 0)
goto report_error;
if(ret > 0) {
Xorriso_msgs_submit(xorriso, 0,
"There is already a boot image file registered.",
0, "FAILURE", 0);
return(0);
}
}
ret = iso_image_add_mips_boot_file(image, path, 0);
Xorriso_process_msg_queues(xorriso,0);
if (ret < 0) {
report_error:;
Xorriso_report_iso_error(xorriso, "", ret,
"Error when adding MIPS boot file",
0, "FAILURE", 1);
return(0);
}
return(1);
}
int Xorriso_coordinate_system_area(struct XorrisO *xorriso, int sa_type,
int options, char *cmd, int flag)
{
int old_type, old_options;
static char *type_names[3] = {
"MBR", "MIPS Big Endian Volume Header", "MIPS Little Endian Boot Block"};
old_type= (xorriso->system_area_options & 0xfc) >> 2;
old_options= xorriso->system_area_options & ~0xfc;
if((old_type != 0 || old_options != 0) &&
(old_type != sa_type || (old_options != 0 && old_options != options))) {
sprintf(xorriso->info_text, "%s : First sector already occupied by %s",
cmd, old_type < 2 ? type_names[old_type] : "other boot facility");
if(old_type == 0 && old_options == 2)
strcat(xorriso->info_text, " for ISOLINUX isohybrid");
if(old_type == 0 && old_options == 1)
strcat(xorriso->info_text, " for partition table");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto hint_revoke;
}
xorriso->system_area_options= ((sa_type << 2) & 0xfc) | (options & ~0xfc);
if(sa_type == 0)
xorriso->patch_system_area= xorriso->system_area_options;
return(1);
hint_revoke:;
if(old_type == 0)
sprintf(xorriso->info_text, "Revokable by -boot_image any discard");
else if(old_type == 1 || old_type == 2)
sprintf(xorriso->info_text, "Revokable by -boot_image any mips_discard");
if(old_type < 2)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
return(0);
}

View File

@ -33,6 +33,7 @@
#include "iso_tree.h"
#include "iso_manip.h"
#include "sort_cmp.h"
#include "parse_exec.h"
@ -149,6 +150,8 @@ int Xorriso_graft_split(struct XorrisO *xorriso, IsoImage *volume,
/*
@param flag bit3= cut_out_node: offset and size are valid
bit8= hide in iso_rr
bit9= hide in joliet
*/
int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
IsoDir *dir, char *disk_path, char *img_name,
@ -199,7 +202,11 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
goto ex;
}
}
if(flag & (256 | 512)) {
ret= Xorriso_set_hidden(xorriso, (void *) *node, "", (flag >> 8) & 3, 0);
if(ret <= 0)
goto ex;
}
if(stbuf_valid && ((xorriso->do_aaip & 16) || !(xorriso->ino_behavior & 2))) {
ret= Xorriso_record_dev_inode(xorriso, disk_path,
stbuf.st_dev, stbuf.st_ino, (void *) *node, "", 1);
@ -224,6 +231,8 @@ ex:;
bit1= do not report added files
bit6= do not delete eventually existing node from di_array
bit7= no special handling of split file directories
bit8= hide in iso_rr
bit9= hide in joliet
*/
int Xorriso_add_tree(struct XorrisO *xorriso, IsoDir *dir,
char *img_dir_path, char *disk_dir_path,
@ -232,7 +241,7 @@ int Xorriso_add_tree(struct XorrisO *xorriso, IsoDir *dir,
IsoImage *volume;
IsoNode *node;
int ret, target_is_dir, source_is_dir, source_is_link, fret, was_failure= 0;
int do_not_dive, target_is_split= 0;
int do_not_dive, target_is_split= 0, hide_attrs;
struct DirseQ *dirseq= NULL;
char *name, *img_name, *srcpt, *stbuf_src= "";
struct stat stbuf, hstbuf;
@ -295,8 +304,10 @@ cannot_open_dir:;
name= disk_path+strlen(disk_path);
if(Sfile_str(img_path, img_dir_path, 0)<=0)
{ret= -1; goto ex;}
if(img_path[0] || img_path[strlen(img_path)-1]!='/')
strcat(img_path,"/");
if(img_path[0] == 0)
strcat(img_path, "/");
else if(img_path[strlen(img_path) - 1] != '/')
strcat(img_path, "/");
img_name= img_path+strlen(img_path);
while(1) { /* loop over directory content */
@ -313,12 +324,21 @@ cannot_open_dir:;
{ret= -1; goto ex;}
}
/* compare exclusions against disk_path resp. name */
/* Compare exclusions against disk_path resp. name */
ret= Xorriso_path_is_excluded(xorriso, disk_path, 0); /* (is never param) */
if(ret<0)
{ret= -1; goto ex;}
if(ret>0)
continue;
/* Check for mkisofs-style hidings */
hide_attrs= (flag >> 8) & 3;
if(hide_attrs != 3) {
ret= Xorriso_path_is_hidden(xorriso, disk_path, 0);
if(ret<0)
return(ret);
if(ret>=0)
hide_attrs|= ret;
}
strcpy(img_name, name);
if(Xorriso_much_too_long(xorriso, strlen(img_path), 0)<=0)
@ -409,7 +429,7 @@ cannot_lstat:;
if(node==NULL) {
ret= Xorriso_tree_graft_node(xorriso, volume, dir, srcpt, img_name,
"", img_path, (off_t) 0, (off_t) 0,
&node, 0);
&node, (hide_attrs << 8));
}
if(node==NULL) {
Xorriso_process_msg_queues(xorriso,0);
@ -470,11 +490,12 @@ ex:
/* @param flag bit0= cut_out mode : base on leaf parent directory
bit1= do not check and perform hidings
*/
int Xorriso_copy_implicit_properties(struct XorrisO *xorriso, IsoDir *dir,
char *full_img_path, char *img_path, char *full_disk_path, int flag)
{
int ret, nfic, nic, nfdc, d, i;
int ret, nfic, nic, nfdc, d, i, hide_attrs;
char nfi[SfileadrL], ni[SfileadrL], nfd[SfileadrL], *cpt;
char sfe[5*SfileadrL];
struct stat stbuf;
@ -516,6 +537,20 @@ int Xorriso_copy_implicit_properties(struct XorrisO *xorriso, IsoDir *dir,
" from %s", Text_shellsafe(nfd, sfe, 0));
if(!((flag&1) && d==0))
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
if(!(flag & 2)) {
/* Check for mkisofs-style hidings */
hide_attrs= 0;
ret= Xorriso_path_is_hidden(xorriso, nfd, 0);
if(ret<0)
return(ret);
if(ret>=0) {
/* Hide dir */
ret= Xorriso_set_hidden(xorriso, (void *) dir, "", ret, 0);
if(ret <= 0)
return(ret);
}
}
return(1);
}
@ -558,6 +593,8 @@ int Xorriso_copy_properties(struct XorrisO *xorriso,
bit5= if directory then do not add sub tree
bit6= do not delete eventually existing node from di_array
bit7= no special handling of split file directories
bit8= hide in iso_rr
bit9= hide in joliet
@return <=0 = error , 1 = added simple node , 2 = added directory ,
3 = rejected
*/
@ -571,7 +608,7 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
IsoDir *dir, *hdir;
IsoNode *node;
int done= 0, is_dir= 0, l, ret, target_is_dir, source_is_dir, resolve_link= 0;
int target_is_split;
int target_is_split, hide_attrs;
struct stat stbuf;
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
@ -580,6 +617,16 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
if(ret>0)
return(3*!!(flag&16));
/* Check for mkisofs-style hidings */
hide_attrs= (flag >> 8) & 3;
if(hide_attrs != 3) {
ret= Xorriso_path_is_hidden(xorriso, disk_path, 0);
if(ret<0)
return(ret);
if(ret>=0)
hide_attrs|= ret;
}
for(cpt= img_path; 1; cpt++) {
cpt= strstr(cpt,"/.");
if(cpt==NULL)
@ -731,9 +778,10 @@ handle_path_node:;
iso_node_set_gid((IsoNode *) dir, getegid());
if(disk_path!=NULL && !done)
/* This not only copies disk directory properties
but also sets eventual hide_attrs */
Xorriso_copy_implicit_properties(xorriso, dir, img_path, path, disk_path,
!!(flag&8));
}
if(done) {
attach_source:;
@ -759,8 +807,8 @@ attach_source:;
disk_path_pt= disk_path;
ret= Xorriso_tree_graft_node(xorriso, volume, dir, disk_path_pt, apt,
disk_path, img_path,
offset, cut_size, &node, flag&8);
disk_path, img_path, offset, cut_size,
&node, (flag&8) | (hide_attrs << 8));
if(ret<=0) {
sprintf(xorriso->info_text, "Grafting failed: %s = %s",
Text_shellsafe(img_path,sfe,0), Text_shellsafe(disk_path,sfe2,0));
@ -2649,14 +2697,11 @@ int Xorriso_perform_attr_from_list(struct XorrisO *xorriso, char *path,
}
value_lengths= calloc(num_attr, sizeof(size_t));
if(value_lengths== NULL) {
free(names);
Xorriso_no_malloc_memory(xorriso, NULL, 0);
ret= -1; goto ex;
}
values= calloc(num_attr, sizeof(char *));
if(values== NULL) {
free(names);
free(value_lengths);
Xorriso_no_malloc_memory(xorriso, NULL, 0);
ret= -1; goto ex;
}

View File

@ -23,11 +23,25 @@
#include <sys/time.h>
#include <time.h>
#include <errno.h>
#include <stdint.h>
/* for -charset */
#include <iconv.h>
#include <langinfo.h>
#ifdef Xorriso_standalonE
#ifdef Xorriso_with_libjtE
#include "../libjte/libjte.h"
#endif
#else
#ifdef Xorriso_with_libjtE
#include <libjte/libjte.h>
#endif
#endif /* ! Xorriso_standalonE */
#include "xorriso.h"
#include "xorriso_private.h"
@ -181,6 +195,10 @@ LIBISOBURN_MISCONFIGURATION_ = 0;
xorriso->zlib_level= xorriso->zlib_level_default=
zisofs_ctrl.compression_level;
}
/* Second initialization. This time with libs. */
Xorriso_preparer_string(xorriso, xorriso->preparer_id, 0);
Xorriso_process_msg_queues(xorriso,0);
if(reason[0]) {
sprintf(xorriso->info_text, "%s", reason);
@ -271,6 +289,16 @@ int Xorriso_report_lib_versions(struct XorrisO *xorriso, int flag)
"libisofs in use : %d.%d.%d (min. %d.%d.%d)\n",
major, minor, micro, req_major, req_minor, req_micro);
Xorriso_result(xorriso, 0);
#ifdef Xorriso_with_libjtE
libjte__version(&major, &minor, &micro);
isoburn_libjte_req(&req_major, &req_minor, &req_micro);
sprintf(xorriso->result_line,
"libjte in use : %d.%d.%d (min. %d.%d.%d)\n",
major, minor, micro, req_major, req_minor, req_micro);
Xorriso_result(xorriso, 0);
#endif
burn_version(&major, &minor, &micro);
isoburn_libburn_req(&req_major, &req_minor, &req_micro);
sprintf(xorriso->result_line,
@ -409,14 +437,36 @@ cannot:;
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
{
int ret, error_code= 0, os_errno= 0, count= 0, pass, imgid, tunneled;
int name_prefix_code;
char severity[80];
#ifdef Xorriso_with_libjtE
char *msg;
#endif
if(!xorriso->libs_are_started)
return(1);
for(pass= 0; pass< 2; pass++) {
for(pass= 0; pass< 3; pass++) {
while(1) {
tunneled= 0;
if(pass==0)
if(pass==0) {
ret= 0;
#ifdef Xorriso_with_libjtE
if(xorriso->libjte_handle != NULL) {
msg= libjte_get_next_message(xorriso->libjte_handle);
if(msg != NULL) {
sprintf(xorriso->info_text, "%1.4095s", msg);
free(msg);
strcpy(severity, "NOTE");
error_code= 0;
os_errno= 0;
ret= 1;
}
}
#endif /* Xorriso_with_libjtE */
} else if(pass==1)
ret= iso_obtain_msgs("ALL", &error_code, &imgid,
xorriso->info_text, severity);
else {
@ -440,8 +490,12 @@ int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
else if(error_code==0x51001)
strcpy(severity, "ERRFILE");
if(pass == 0)
name_prefix_code= 0;
else
name_prefix_code= pass + tunneled;
Xorriso_msgs_submit(xorriso, error_code, xorriso->info_text, os_errno,
severity, ((pass+tunneled)+1)<<2);
severity, name_prefix_code << 2);
count++;
}
}
@ -486,3 +540,190 @@ int Xorriso_md5_end(struct XorrisO *xorriso, void **ctx, char md5[16],
return(1);
}
/* @param flag bit0= avoid library calls
*/
int Xorriso_preparer_string(struct XorrisO *xorriso, char xorriso_id[129],
int flag)
{
int major, minor, micro;
xorriso_id[0]= 0;
sprintf(xorriso_id, "XORRISO-%d.%d.%d ",
Xorriso_header_version_majoR, Xorriso_header_version_minoR,
Xorriso_header_version_micrO);
if(strlen(xorriso_id) + strlen(Xorriso_timestamP) < 128)
strcat(xorriso_id, Xorriso_timestamP);
if(flag & 1)
return(1);
isoburn_version(&major, &minor, &micro);
if(strlen(xorriso_id) < 100)
sprintf(xorriso_id + strlen(xorriso_id),
", LIBISOBURN-%d.%d.%d", major, minor, micro);
iso_lib_version(&major, &minor, &micro);
if(strlen(xorriso_id) < 100)
sprintf(xorriso_id + strlen(xorriso_id),
", LIBISOFS-%d.%d.%d", major, minor, micro);
burn_version(&major, &minor, &micro);
if(strlen(xorriso_id) < 100)
sprintf(xorriso_id + strlen(xorriso_id),
", LIBBURN-%d.%d.%d", major, minor, micro);
return(1);
}
#ifdef Xorriso_with_libjtE
int Xorriso_assert_jte_handle(struct XorrisO *xorriso, int flag)
{
int ret;
if(xorriso->libjte_handle == NULL) {
ret= libjte_new(&(xorriso->libjte_handle), 0);
if(ret <= 0 || xorriso->libjte_handle == NULL) {
sprintf(xorriso->info_text,
"-jigdo: Failed to create libjte environment object");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
return(-1);
}
/* no stderr, no exit() */
libjte_set_error_behavior(xorriso->libjte_handle, 0, 0);
}
return(1);
}
#endif /* Xorriso_with_libjtE */
int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
int flag)
{
#ifdef Xorriso_with_libjtE
int ret, num;
struct libjte_env *jte;
char *msg = NULL;
if(strcmp(aspect, "clear") == 0) {
if(xorriso->libjte_handle != NULL)
libjte_destroy(&(xorriso->libjte_handle));
Xorriso_lst_destroy_all(&(xorriso->jigdo_params), 0);
Xorriso_lst_destroy_all(&(xorriso->jigdo_values), 0);
return(1);
}
ret= Xorriso_assert_jte_handle(xorriso, 0);
if(ret <= 0)
return(ret);
jte= xorriso->libjte_handle;
if(strcmp(aspect, "verbose") == 0) {
if(strcmp(arg, "on") == 0) {
libjte_set_verbose(jte, 1);
/* Direct libjte messages to stderr, rather than message list */
libjte_set_error_behavior(xorriso->libjte_handle, 1, 0);
} else if(strcmp(arg, "off") == 0) {
libjte_set_verbose(jte, 0);
libjte_set_error_behavior(xorriso->libjte_handle, 0, 0);
} else
goto bad_arg;
} else if(strcmp(aspect, "template_path") == 0 ||
strcmp(aspect, "-jigdo-template") == 0) {
ret= libjte_set_template_path(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "jigdo_path") == 0 ||
strcmp(aspect, "-jigdo-jigdo") == 0) {
ret= libjte_set_jigdo_path(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "md5_path") == 0 ||
strcmp(aspect, "-md5-list") == 0) {
ret= libjte_set_md5_path(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "min_size") == 0 ||
strcmp(aspect, "-jigdo-min-file-size") == 0) {
num= Scanf_io_size(arg, 0);
ret= libjte_set_min_size(jte, num);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "checksum_iso") == 0 ||
strcmp(aspect, "-checksum_algorithm_iso") == 0) {
ret= libjte_set_checksum_iso(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "checksum_template") == 0 ||
strcmp(aspect, "-checksum_algorithm_template") == 0) {
ret= libjte_set_checksum_template(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "compression") == 0 ||
strcmp(aspect, "-jigdo-template-compress") == 0) {
ret= libjte_set_compression(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "exclude") == 0 ||
strcmp(aspect, "-jigdo-exclude") == 0) {
ret= libjte_add_exclude(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "demand_md5") == 0 ||
strcmp(aspect, "-jigdo-force-md5") == 0) {
ret= libjte_add_md5_demand(jte, arg);
if(ret <= 0)
goto jte_failed;
} else if(strcmp(aspect, "mapping") == 0 ||
strcmp(aspect, "-jigdo-map") == 0) {
ret= libjte_add_mapping(jte, arg);
if(ret <= 0)
goto jte_failed;
} else {
sprintf(xorriso->info_text, "-jigdo: unknown aspect '%s'", aspect);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
ret= Xorriso_lst_new(&(xorriso->jigdo_params), aspect, xorriso->jigdo_params,
1);
if(ret > 0)
ret= Xorriso_lst_new(&(xorriso->jigdo_values), arg, xorriso->jigdo_values,
1);
if(ret <= 0) {
Xorriso_no_malloc_memory(xorriso, NULL, 0);
return(-1);
}
Xorriso_process_msg_queues(xorriso, 0);
return(1);
bad_arg:
sprintf(xorriso->info_text, "-jigdo %s : unknown argument '%s'", aspect, arg);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
jte_failed:
while(1) {
msg= libjte_get_next_message(xorriso->libjte_handle);
if(msg == NULL)
break;
sprintf(xorriso->info_text, "%1.4095s", msg);
free(msg);
msg= NULL;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
}
sprintf(xorriso->info_text, "Experienced libjte failure with: -jigdo %s %s",
aspect, arg);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
#else /* Xorriso_with_libjtE */
sprintf(xorriso->info_text,
"Jigdo Template Extraction was not enabled at compile time");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
#endif /* ! Xorriso_with_libjtE */
}

View File

@ -7,9 +7,9 @@
#
# This is a development tool which expects a special setup of directories.
# It is to be executed in a common parent of the directories
# nglibisofs-develop libburn-develop libisoburn-develop
# nglibisofs-develop jte-develop libburn-develop libisoburn-develop
# where tarballs or repository copies have been installed of
# libisofs libburn libisoburn
# libisofs jte libburn libisoburn
# obtained according to instructions on http://libburnia-project.org.
#
# It creates a new directory tree
@ -40,7 +40,7 @@ create_gnu_xorriso="yes"
current_dir=$(pwd)
lone_dir="$current_dir"/"xorriso-standalone"
xorriso_rev=0.6.0
xorriso_rev=0.6.4
# For unstable uploads and patch level 0 of stable releases:
xorriso_pl=""
# For higher patch levels of stable releases:
@ -120,10 +120,6 @@ copy_files xorriso/configure_ac.txt "$lone_dir"/configure.ac
copy_files xorriso/xorriso_makefile_am.txt "$lone_dir"/Makefile.am
# copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
# echo "See end of xorriso/changelog.txt" >"$lone_dir"/TODO
# libisoburn
@ -131,6 +127,7 @@ create_dir "$lone_dir"/libisoburn
copy_files \
libisoburn/*.[ch] \
"$lone_dir"/libisoburn
copy_files COPYRIGHT "$lone_dir"/libisoburn
xorriso/convert_man_to_html.sh
@ -198,12 +195,16 @@ copy_files \
xorriso/xorriso.1 \
xorriso/man_1_xorriso.html \
"$lone_dir"/xorriso
copy_files COPYRIGHT "$lone_dir"/xorriso
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp.h
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp_none.h
create_dir "$lone_dir"/doc
copy_files doc/partition_offset.wiki "$lone_dir"/doc
create_dir "$lone_dir"/test
copy_files \
test/compare_file.c \
@ -214,13 +215,13 @@ copy_files \
create_dir "$lone_dir"/libisofs
create_dir "$lone_dir"/libisofs/filters
create_dir "$lone_dir"/doc
goto_dir "$current_dir"/nglibisofs-develop
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
copy_files doc/zisofs_format.txt "$lone_dir"/doc
copy_files doc/checksums.txt "$lone_dir"/doc
copy_files doc/boot_sectors.txt "$lone_dir"/doc
copy_files COPYRIGHT "$lone_dir"/libisofs
test -e CONTRIBUTORS && cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
@ -228,35 +229,12 @@ test -e CONTRIBUTORS && cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
cat version.h.in >> "$lone_dir"/version.h.in
# <<< obsoleted patchings
if test 1 = 0
then
# Change GNU macro name to POSIX name
sed -e 's/FNM_FILE_NAME/FNM_PATHNAME/g' \
<libisofs/tree.c >"$lone_dir"/libisofs/tree.c
# Filter out the semi-illegal TODO comments
( cd "$lone_dir"/libisofs && grep '^[[:space:]]*//' *.[ch] | less )
echo "Is it ok delete all shown //-lines ?"
read yesno
if test "$yesno" = "y" -o "$yesno" = "1"
then
for i in "$lone_dir"/libisofs/*.[ch]
do
# first copy attributes
cp "$i" "$lone_dir"/libisofs/tmpfile
# now filter away // lines
grep -v '^[[:space:]]*//' <"$i" >"$lone_dir"/libisofs/tmpfile && \
mv "$lone_dir"/libisofs/tmpfile "$i"
done
fi
echo "Remaining // lines:"
( cd "$lone_dir"/libisofs && grep '//' *.[ch] )
fi
# libjte
create_dir "$lone_dir"/libjte
goto_dir "$current_dir"/jte-develop
copy_files *.[ch] "$lone_dir"/libjte
copy_files COPYRIGHT "$lone_dir"/libjte
# libburn

View File

@ -255,6 +255,55 @@ ex:;
}
/* Option -append_partition */
int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text,
char *type_text, char *image_path, int flag)
{
int partno = 0, type_code= -1, i;
unsigned int unum;
char *tpt;
static char *part_type_names[] = {"FAT12", "FAT16", "Linux", NULL};
static int part_type_codes[] = { 0x01, 0x06, 0x83};
sscanf(partno_text, "%d", &partno);
if(partno < 1 || partno > 4) {
sprintf(xorriso->info_text,
"-append_partition: Partition number '%s' is out of range (1...4)",
partno_text);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
for(i= 0; part_type_names[i] != NULL; i++)
if(strcmp(part_type_names[i], type_text) == 0)
break;
if(part_type_names[i] != NULL)
type_code= part_type_codes[i];
if(type_code < 0) {
tpt= type_text;
if(strncmp(tpt, "0x", 2) == 0)
tpt+= 2;
else
goto bad_type;
unum= 0xffffffff;
sscanf(tpt, "%X", &unum);
if(unum > 0xff) {
bad_type:;
sprintf(xorriso->info_text,
"-append_partition: Partition type '%s' is out of range (0x00...0xff)",
type_text);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
type_code= unum;
}
if(Sfile_str(xorriso->appended_partitions[partno - 1], image_path, 0) <= 0)
return(-1);
xorriso->appended_part_types[partno - 1]= type_code;
return(1);
}
/* Option -application_id */
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag)
@ -263,6 +312,9 @@ int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
(int) sizeof(xorriso->application_id),
"-application_id", 0) <= 0)
return(0);
if(strcmp(name, "@xorriso@") == 0)
Xorriso_preparer_string(xorriso, xorriso->application_id, 0);
else
strcpy(xorriso->application_id,name);
Xorriso_set_change_pending(xorriso, 1);
return(1);
@ -564,7 +616,7 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
{
int was_ok= 1, ret, isolinux_grub= 0, count;
unsigned int u;
char *formpt, *treatpt;
char *formpt, *treatpt, eff_path[SfileadrL];
double num;
formpt= form;
@ -611,6 +663,8 @@ treatment_patch:;
xorriso->patch_isolinux_image= 0;
xorriso->boot_image_bin_path[0]= 0;
xorriso->patch_system_area= 0;
if((xorriso->system_area_options & 0xfc ) == 0)
xorriso->system_area_options= 0; /* Reset eventual type 0 flags */
if(xorriso->boot_count > 0) {
ret= Xorriso_attach_boot_image(xorriso, 2); /* dispose boot images */
if(ret <= 0)
@ -727,6 +781,37 @@ treatment_patch:;
xorriso->keep_boot_image= 0;
xorriso->boot_efi_default= 1;
} else if(strncmp(treatpt, "mips_path=", 10) == 0) {
sprintf(eff_path, "-boot_image %s mips_path=", formpt);
ret= Xorriso_coordinate_system_area(xorriso, 1, 0, eff_path, 0);
if(ret <= 0)
return(ret);
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 10,
eff_path, 2);
if(ret <= 0)
return(ret);
ret= Xorriso_add_mips_boot_file(xorriso, eff_path, 0);
if(ret <= 0)
return(ret);
} else if(strncmp(treatpt, "mipsel_path=", 12) == 0) {
sprintf(eff_path, "-boot_image %s mipsel_path=", formpt);
ret= Xorriso_coordinate_system_area(xorriso, 2, 0, eff_path, 0);
if(ret <= 0)
return(ret);
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 12,
eff_path, 2);
if(ret <= 0)
return(ret);
ret= Xorriso_add_mips_boot_file(xorriso, eff_path, 2);
if(ret <= 0)
return(ret);
} else if(strcmp(treatpt, "mips_discard") == 0 ||
strcmp(treatpt, "mipsel_discard") == 0) {
xorriso->system_area_options&= ~0xfc; /* system area type 0 */
Xorriso_add_mips_boot_file(xorriso, "", 1); /* give up MIPS boot files */
} else if(strncmp(treatpt, "boot_info_table=", 16)==0) {
if(strcmp(treatpt + 16, "off") == 0)
xorriso->patch_isolinux_image= 0;
@ -768,26 +853,64 @@ treatment_patch:;
}
} else if(strncmp(treatpt, "system_area=", 12) == 0) {
if(strcmp(formpt, "isolinux")==0) {
ret= Xorriso_coordinate_system_area(xorriso, 0, 2,
"-boot_image isolinux system_area=", 0);
if(ret <= 0)
return(ret);
}
ret= Xorriso_set_system_area_path(xorriso, treatpt + 12, 0);
if(ret <= 0)
return(ret);
if(strcmp(formpt, "isolinux")==0)
xorriso->system_area_options= (xorriso->system_area_options & ~3) | 2;
} else if(strncmp(treatpt, "partition_table=", 16)==0) {
if(strcmp(treatpt + 16, "off") == 0) {
xorriso->system_area_options&= ~3;
xorriso->patch_system_area= xorriso->system_area_options;
} else if(strcmp(treatpt + 16, "on") == 0) {
xorriso->system_area_options&= ~3;
sprintf(eff_path, "-boot_image %s partition_table=", formpt);
if(strcmp(formpt, "isolinux")==0)
xorriso->system_area_options|= 2;
ret= Xorriso_coordinate_system_area(xorriso, 0, 2, eff_path, 0);
else
xorriso->system_area_options|= 1;
xorriso->patch_system_area= xorriso->system_area_options;
ret= Xorriso_coordinate_system_area(xorriso, 0, 1, eff_path, 0);
if(ret <= 0)
return(ret);
} else
was_ok= 0;
} else if(strncmp(treatpt, "partition_offset=", 17)==0) {
u= 0;
sscanf(treatpt + 17, "%u", &u);
if(u > 0 && u < 16) {
sprintf(xorriso->info_text,
"-boot_image %s partition_offset= : Non-zero number too small (<16).",
formpt);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
xorriso->partition_offset= u;
} else if(strncmp(treatpt, "partition_hd_cyl=", 17)==0) {
u= 0;
sscanf(treatpt + 17, "%u", &u);
if(u > 255) {
sprintf(xorriso->info_text,
"-boot_image %s partition_hd_cyl= : Number too large (>255).", formpt);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
xorriso->partition_heads_per_cyl= u;
} else if(strncmp(treatpt, "partition_sec_hd=", 17)==0) {
u= 0;
sscanf(treatpt + 17, "%u", &u);
if(u > 63) {
sprintf(xorriso->info_text,
"-boot_image %s partition_sec_hd= : Number too large (>63).", formpt);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
xorriso->partition_secs_per_head= u;
} else if(strncmp(treatpt, "platform_id=", 12)==0) {
if(strncmp(treatpt + 12, "0x", 2) == 0)
sscanf(treatpt + 14, "%x", &u);
@ -802,6 +925,23 @@ treatment_patch:;
}
xorriso->boot_platform_id= u;
} else if(strncmp(treatpt, "emul_type=", 10)==0) {
if(strcmp(treatpt + 10, "none") == 0 ||
strcmp(treatpt + 10, "no_emulation") == 0) {
xorriso->boot_image_emul= 0;
} else if(strcmp(treatpt + 10, "hard_disk") == 0) {
xorriso->boot_image_emul= 1;
} else if(strcmp(treatpt + 10, "floppy") == 0 ||
strcmp(treatpt + 10, "diskette") == 0) {
xorriso->boot_image_emul= 2;
} else {
sprintf(xorriso->info_text,
"-boot_image %s : Unknown media_type : %s",
formpt, treatpt + 10);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
} else if(strncmp(treatpt, "isohybrid=", 10) == 0 &&
strcmp(formpt, "isolinux")==0) {

View File

@ -1376,6 +1376,13 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Specifies the name of the Abstract File. (37 chars)",
" -joliet \"on\"|\"off\"",
" Generate Joliet info additional to Rock Ridge info.",
" -jigdo \"clear\"|\"template_path\"|\"jigdo_path\"|\"md5_path\"",
" |\"min_size\"|\"checksum_iso\"|\"checksum_template\"",
" |\"compression\"|\"exclude\"|\"demand_md5\"|\"mapping\"",
" |\"checksum_iso\"|\"checksum_template\"",
" value",
" Clear Jigdo Template Extraction parameter list or add a",
" parameter with its value to that list.",
" -compliance rule[:rule...]",
" Allow more or less harmless deviations from strict standards",
" compliance.",
@ -1383,6 +1390,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" |\"discard\"|\"keep\"|\"patch\"|\"dir=\"|\"bin_path=\"",
" |\"cat_path=\"|\"cat_hidden=on|iso_rr|joliet|off\"",
" |\"load_size=\"|\"system_area=\"|\"partition_table=on|off\"",
" |\"mips_path=\"|\"mipsel_path=\"|\"mips_discard\"",
" |\"show_status\"",
" Whether to discard or keep an exiting El Torito boot image.",
" ISOLINUX can be made bootable by dir=/ or dir=/isolinux",
" or dir=/boot/isolinux. Others, like GRUB, by bin_path=...",
@ -1391,6 +1400,12 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" ISO image by the usual commands like -map or -add.",
" system_area= and partition_table= are for MBR based booting",
" from USB stick. The system_area= file needs not to be added.",
" mips_path= adds Big Endian MIPS boot files. mipsel_path=",
" sets one Little Endian MIPS boot file. Both are mutually",
" exclusive and exclusive to MBR production.",
" -append_partition partition_number type_code disk_path",
" Append a prepared filesystem image after the end of the",
" ISO image. Caution: Will be overwritten by multi-session.",
"",
" -uid uid User id to be used for the whole multi-session ISO image.",
" -gid gid Group id for the same purpose.",

View File

@ -47,6 +47,17 @@ int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,int flag)
}
/* Option -jigdo aspect argument */
int Xorriso_option_jigdo(struct XorrisO *xorriso, char *aspect, char *arg,
int flag)
{
int ret;
ret= Xorriso_jigdo_interpreter(xorriso, aspect, arg, 0);
return(ret);
}
/* Option -joliet "on"|"off" */
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag)
{

View File

@ -218,6 +218,22 @@ int Xorriso_option_pkt_output(struct XorrisO *xorriso, char *mode, int flag)
}
/* Option -preparer_id */
int Xorriso_option_preparer_id(struct XorrisO *xorriso, char *name, int flag)
{
if(Xorriso_check_name_len(xorriso, name,
(int) sizeof(xorriso->preparer_id),
"-preparer_id", 0) <= 0)
return(0);
if(strcmp(name, "@xorriso@") == 0)
Xorriso_preparer_string(xorriso, xorriso->preparer_id, 0);
else
strcpy(xorriso->preparer_id, name);
Xorriso_set_change_pending(xorriso, 1);
return(1);
}
/* Option -print */
int Xorriso_option_print(struct XorrisO *xorriso, char *text, int flag)
{

View File

@ -465,7 +465,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"list_delimiter","list_profiles","local_charset",
"mark","md5","mount_opts","not_leaf","not_list","not_mgt",
"options_from_file","osirrox","outdev","out_charset","overwrite",
"pacifier","padding","path_list","pathspecs","pkt_output","print","prompt",
"pacifier","padding","path_list","pathspecs","pkt_output",
"preparer_id","print","prompt",
"prog","prog_help","publisher","quoted_not_list","quoted_path_list",
"reassure","report_about","rom_toc_scan","scsi_log",
"session_log","speed","split_size","status","status_history_max",
@ -477,11 +478,15 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
static char arg2_commands[][40]= {
"assert_volid","boot_image","compare","compare_r","drive_class",
"errfile_log","error_behavior","extract","extract_single",
"load","logfile",
"jigdo","load","logfile",
"map","map_single","page","return_with",
"scdbackup_tag","update","update_r","volume_date",
""
};
static char arg3_commands[][40]= {
"append_partition",
""
};
static char arg4_commands[][40]= {
"cut_out","extract_cut","mount","mount_cmd","paste_in","session_string",
""
@ -529,6 +534,10 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
for(i=0; arg2_commands[i][0]!=0; i++)
if(strcmp(arg2_commands[i], cmd)==0)
return(1);
*count= 3;
for(i=0; arg3_commands[i][0]!=0; i++)
if(strcmp(arg3_commands[i], cmd)==0)
return(1);
*count= 4;
for(i=0; arg4_commands[i][0]!=0; i++)
if(strcmp(arg4_commands[i], cmd)==0)
@ -647,6 +656,11 @@ next_command:;
ret= Xorriso_option_alter_date(xorriso, arg1, arg2, argc, argv, idx,
strlen(cmd)>10);
} else if(strcmp(cmd,"append_partition")==0) {
(*idx)+= 3;
ret= Xorriso_option_append_partition(xorriso, arg1, arg2, argv[*idx - 1],
0);
} else if(strcmp(cmd,"application_id")==0) {
(*idx)++;
ret= Xorriso_option_application_id(xorriso, arg1, 0);
@ -947,6 +961,10 @@ next_command:;
(*idx)++;
ret= Xorriso_option_iso_rr_pattern(xorriso, arg1, 0);
} else if(strcmp(cmd,"jigdo")==0) {
(*idx)+= 2;
ret= Xorriso_option_jigdo(xorriso, arg1, arg2, 0);
} else if(strcmp(cmd,"joliet")==0) {
(*idx)++;
ret= Xorriso_option_joliet(xorriso, arg1, 0);
@ -1114,6 +1132,10 @@ next_command:;
(*idx)++;
ret= Xorriso_option_pkt_output(xorriso, arg1, 0);
} else if(strcmp(cmd,"preparer_id")==0) {
(*idx)++;
ret= Xorriso_option_preparer_id(xorriso, arg1, 0);
} else if(strcmp(cmd,"print")==0) {
(*idx)++;
ret= Xorriso_option_print(xorriso, arg1, 0);

View File

@ -512,7 +512,7 @@ int Xorriso_write_to_channel(struct XorrisO *xorriso,
bit15= with bit1 or bit2: close depicted log file
*/
{
char *rpt, *npt, *text;
char *rpt, *npt, *text= NULL;
int ret= 1, info_redirected= 0, result_redirected= 0;
char prefix[16];
FILE *logfile_fp, *pktlog_fp;
@ -520,11 +520,11 @@ bit15= with bit1 or bit2: close depicted log file
static int num_channels= 4;
static char channel_prefixes[4][4]= {".","R","I","M"};
text= in_text; /* might change due to backslash encoding */
if(channel_no<0 || channel_no>=num_channels)
{ret= -1; goto ex;}
text= in_text; /* might change due to backslash encoding */
/* Logfiles */
logfile_fp= xorriso->logfile_fp[channel_no];
pktlog_fp= xorriso->pktlog_fp;
@ -1087,11 +1087,11 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int part_table_implicit= 0;
char *line, sfe[5 * SfileadrL + 80], mode[80], *form, *treatment;
char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt;
char *dev_filter= NULL;
char *dev_filter= NULL, xorriso_id[129];
static char channel_prefixes[4][4]= {".","R","I","M"};
static char load_names[][20]= {"auto", "session", "track", "lba", "volid"};
static int max_load_mode= 4;
struct Xorriso_lsT *paths, *leafs, *s;
struct Xorriso_lsT *paths, *leafs, *s, *plst, *vlst;
no_defaults= flag&1;
line= xorriso->result_line;
@ -1278,7 +1278,25 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
Text_shellsafe(xorriso->system_area_disk_path, sfe, 0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
if(xorriso->system_area_disk_path[0] || !part_table_implicit) {
is_default= (xorriso->partition_offset == 0);
sprintf(line,"-boot_image any partition_offset=%lu\n",
(unsigned long int) xorriso->partition_offset);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->partition_secs_per_head == 0);
sprintf(line,"-boot_image any partition_sec_hd=%lu\n",
(unsigned long int) xorriso->partition_secs_per_head);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->partition_heads_per_cyl == 0);
sprintf(line,"-boot_image any partition_hd_cyl=%lu\n",
(unsigned long int) xorriso->partition_heads_per_cyl);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
if((xorriso->system_area_disk_path[0] || !part_table_implicit) &&
(xorriso->partition_offset == 0 || (xorriso->system_area_options & 2))) {
is_default= ((xorriso->system_area_options & 3) == 0);
sprintf(line,"-boot_image %s partition_table=%s\n",
xorriso->system_area_options & 2 ? "isolinux" : "grub",
@ -1382,6 +1400,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
Xorriso_status_result(xorriso,filter,fp,flag&2);
}
Xorriso_preparer_string(xorriso, xorriso_id, 0);
is_default= (strcmp(xorriso->preparer_id, xorriso_id) == 0);
sprintf(line,"-preparer_id %s\n",Text_shellsafe(xorriso->preparer_id,sfe,0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->publisher[0]==0);
sprintf(line,"-publisher %s\n",Text_shellsafe(xorriso->publisher,sfe,0));
if(!(is_default && no_defaults))
@ -1460,6 +1484,22 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
Xorriso_lst_get_last(xorriso->jigdo_params, &plst, 0);
Xorriso_lst_get_last(xorriso->jigdo_values, &vlst, 0);
if(plst == NULL || vlst == NULL) {
is_default= 1;
sprintf(line,"-jigdo clear 'all'\n");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);
}
while(plst != NULL && vlst != NULL) {
sprintf(line,"-jigdo %s %s\n", Xorriso_lst_get_text(plst, 0),
Text_shellsafe(Xorriso_lst_get_text(vlst, 0), sfe, 0));
Xorriso_status_result(xorriso, filter, fp, flag & 2);
plst= Xorriso_lst_get_prev(plst, 0);
vlst= Xorriso_lst_get_prev(vlst, 0);
}
if(xorriso->do_global_uid) {
sprintf(line,"-uid %lu\n", (unsigned long) xorriso->global_uid);
Xorriso_status_result(xorriso,filter,fp,flag&2);

View File

@ -25,6 +25,21 @@
#include <errno.h>
#include <fcntl.h>
#include <stdint.h>
#ifdef Xorriso_standalonE
#ifdef Xorriso_with_libjtE
#include "../libjte/libjte.h"
#endif
#else
#ifdef Xorriso_with_libjtE
#include <libjte/libjte.h>
#endif
#endif /* ! Xorriso_standalonE */
#include "xorriso.h"
#include "xorriso_private.h"
@ -117,7 +132,7 @@ no_track:;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
}
}
if(xorriso->alignment == 0) {
if(xorriso->alignment == 0 && ! (xorriso->no_emul_toc & 1)) {
ret= isoburn_needs_emulation(drive);
if(ret > 0) {
/* Take care that the session is padded up to the future NWA.
@ -138,6 +153,12 @@ no_track:;
} else if(padding < xorriso->alignment)
padding= xorriso->alignment;
}
#ifdef Xorriso_with_libjtE
if(xorriso->libjte_handle != NULL)
padding= 0; /* JTE : no multi-session, no_emul_toc, padding in libisofs */
#endif /* ! Xorriso_with_libjtE */
burn_track_define_data(tracks[0], 0, padding * 2048, 0, BURN_MODE1);
Xorriso_process_msg_queues(xorriso,0);
@ -213,6 +234,8 @@ int Xorriso_set_system_area(struct XorrisO *xorriso, struct burn_drive *drive,
unsigned char *ub;
ElToritoBootImage *bootimg;
IsoFile *bootimg_node;
uint32_t offst;
enum burn_disc_status state;
system_area_options= xorriso->system_area_options;
memset(buf, 0, 32768);
@ -308,6 +331,27 @@ do_set:;
0, "FAILURE", 1);
{ret= 0; goto ex;}
}
offst= xorriso->partition_offset;
state= isoburn_disc_get_status(drive);
if(state == BURN_DISC_APPENDABLE) {
ret= isoburn_get_img_partition_offset(drive, &offst);
if(ret == 1) {
sprintf(xorriso->info_text,
"Preserving in ISO image: -boot_image any partition_offset=%lu",
(unsigned long) offst);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
} else
offst= xorriso->partition_offset;
}
ret= isoburn_igopt_set_part_offset(sopts, offst,
xorriso->partition_secs_per_head,
xorriso->partition_heads_per_cyl);
if(ret != ISO_SUCCESS) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when setting partition offset", 0, "FAILURE", 1);
{ret= 0; goto ex;}
}
ret= 1;
ex:;
if(fp != NULL && fp != stdin)
@ -487,7 +531,7 @@ ex:;
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
{
int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0;
int major, minor, micro, freshly_bootable= 0, hide_attr;
int freshly_bootable= 0, hide_attr;
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs;
struct isoburn_imgen_opts *sopts= NULL;
struct burn_drive_info *dinfo, *source_dinfo;
@ -522,6 +566,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
"on attempt to write", 2);
if(ret<=0)
return(0);
if(xorriso->out_drive_handle == xorriso->in_drive_handle) {
source_drive= drive;
} else {
@ -691,23 +736,14 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
isoburn_igopt_set_scdbackup_tag(sopts, xorriso->scdbackup_tag_name,
xorriso->scdbackup_tag_time,
xorriso->scdbackup_tag_written);
for(i= 0; i < 4; i++) {
if(xorriso->appended_partitions[i][0] == 0)
continue;
ret= isoburn_igopt_set_partition_img(sopts, i + 1,
xorriso->appended_part_types[i], xorriso->appended_partitions[i]);
}
if(image!=NULL && 12+strlen(Xorriso_timestamP)<80) {
sprintf(xorriso_id, "XORRISO-%d.%d.%d %s",
Xorriso_header_version_majoR, Xorriso_header_version_minoR,
Xorriso_header_version_micrO, Xorriso_timestamP);
isoburn_version(&major, &minor, &micro);
if(strlen(xorriso_id)<80)
sprintf(xorriso_id+strlen(xorriso_id),
", LIBISOBURN-%d.%d.%d", major, minor, micro);
iso_lib_version(&major, &minor, &micro);
if(strlen(xorriso_id)<80)
sprintf(xorriso_id+strlen(xorriso_id),
", LIBISOFS-%d.%d.%d", major, minor, micro);
burn_version(&major, &minor, &micro);
if(strlen(xorriso_id)<80)
sprintf(xorriso_id+strlen(xorriso_id),
", LIBBURN-%d.%d.%d", major, minor, micro);
xorriso_id[128]= 0;
strcpy(xorriso_id, xorriso->preparer_id);
img_id= (char *) iso_image_get_data_preparer_id(image);
if(img_id!=NULL) {
for(i= strlen(img_id)-1; i>=0 && img_id[i]==' '; i--);
@ -724,6 +760,23 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
xorriso->vol_expiration_time, xorriso->vol_effective_time,
xorriso->vol_uuid);
#ifdef Xorriso_with_libjtE
if(xorriso->libjte_handle) {
ret= libjte_set_outfile(xorriso->libjte_handle, xorriso->outdev);
Xorriso_process_msg_queues(xorriso, 0);
if(ret <= 0)
goto ex;
/* >>> Check whether the mandatory parameters are set */;
isoburn_igopt_attach_jte(sopts, xorriso->libjte_handle);
/* Padding to be done by libisofs, not by libburn */
isoburn_igopt_set_tail_blocks(sopts, (uint32_t) (xorriso->padding / 2048));
}
#endif /* Xorriso_with_libjtE */
/* Make final abort check before starting expensive activities */
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
if(ret<0)
@ -934,6 +987,8 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
int flag)
{
int ret, size, free_bytes, i, aborting= 0, emul, buffer_fill= 50, last_sector;
int iso_wait_counter= 0, iso_cancel_limit= 5, iso_break_limit= 20;
int iso_cancelled= 0;
struct burn_progress progress;
char *status_text, date_text[80], *speed_unit, mem_text[8];
enum burn_drive_status drive_status;
@ -942,6 +997,9 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
double first_base_count= 0.0, norm= 0.0, now_time, fract_offset= 0.0;
double measured_speed, speed_factor= 1385000, quot;
time_t time_prediction;
IsoImage *image= NULL;
image= isoburn_get_attached_image(drive);
start_time= Sfile_microtime(0);
while(burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING)
@ -966,8 +1024,33 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
last_time= current_time;
last_sector= progress.sector;
drive_status= burn_drive_get_status(drive, &progress);
if(drive_status == BURN_DRIVE_IDLE)
if(drive_status == BURN_DRIVE_IDLE) {
/* To avoid a race condition between burn_source and libisofs
writer thread: Wait for ISO generator thread to have finished.
*/
if(image == NULL)
break;
if(!iso_image_generator_is_running(image))
break;
iso_wait_counter++;
if(iso_wait_counter > iso_cancel_limit && !iso_cancelled) {
isoburn_cancel_prepared_write(drive, NULL, 0);
iso_cancelled= 1;
} else if(iso_wait_counter > iso_break_limit) {
/* >>> This can be dangerous. xorriso will free memory objects which
might be in use in the unstoppable libisofs thread.
The current implementation of ecma119.c:bs_cancel() seems to
wait for the writer thread to end. Probably one should make
this a part of the libisofs API specs and break the loop
directly after isoburn_cancel_prepared_write().
*/
break;
}
}
current_time= Sfile_microtime(0);
if(drive_status == BURN_DRIVE_WRITING && progress.sectors > 0) {
if(current_time-last_time>0.2)

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Jun 27, 2010"
.TH XORRISO 1 "Oct 18, 2010"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -168,6 +168,10 @@ There are two families of media in the MMC standard:
unformatted DVD-RW. These media provide a table of content which
describes their existing sessions. See option \fB\-toc\fR.
.br
Similar to multi-session media are DVD-R DL and minimally blanked DVD-RW.
They allow only a single session of which the size must be known in advance.
xorriso will write onto them only if option -close is set to "on".
.br
\fBOverwriteable media\fR are DVD-RAM, DVD+RW, BD-RE, and formatted DVD-RW.
They allow random write access but do not provide information about their
session history. If they contain one or more ISO 9660 sessions and if the
@ -241,7 +245,7 @@ The write method of \fBmodifying\fR produces compact filesystem
images with no outdated files or directory trees. Modifying can write its
images to target media which are completely unsuitable for multi-session
operations. E.g. DVD-RW which were treated with -blank deformat_quickest,
named pipes, character devices, sockets.
DVD-R DL, named pipes, character devices, sockets.
On the other hand modified sessions cannot be written to appendable media
but to blank media only.
.br
@ -2043,6 +2047,10 @@ Set the application id string to be written with the next -commit. This may
identify the specification of how the data are recorded.
Permissible are up to 128 characters. This setting gets overridden by
image loading.
.br
The special text "@xorriso@" gets converted to the id string of xorriso
which is normally written as -preparer_id. It is a wrong tradition to write
the program id as -application_id.
.TP
\fB\-system_id\fR text
Set the system id string to be written with the next -commit. This may
@ -2099,6 +2107,18 @@ records.
Permissible are up to 37 characters. This setting gets overridden by
image loading.
.TP
\fB\-preparer_id\fR
Set the preparer id string to be written with the next -commit. This may
identify the person or other entity which controls the preparation of the data
which shall be recorded. Normally this should be the id of xorriso and not
of the person or program which operates xorriso. Please avoid to change it.
Permissible are up to 128 characters.
.br
The special text "@xorriso@" gets converted to the id string of xorriso
which is default at program startup.
.br
Unlike other id strings, this setting is not influenced by image loading.
.TP
\fB\-out_charset\fR character_set_name
Set the character set to which file names get converted when writing an
image. See paragraph "Character sets" for more explanations.
@ -2201,7 +2221,7 @@ xorriso adds the traditional 300k of padding by default to all images.
.br
For images which will never get to a CD it is safe to use -padding 0 .
.TP
.B El Torito bootable ISO images:
.B Bootable ISO images:
.PP
Contrary to published specifications many BIOSes will load an El Torito
record from the first session on media and not from the last one, which
@ -2218,6 +2238,14 @@ it is advised to patch it
when a follow-up session gets written. But one should not rely on the
capability to influence the bootability of the existing sessions, unless one
can assume overwriteable media.
.br
There are booting mechanisms which do not use an El Torito record but rather
start at the first bytes of the image: PC-BIOS MBR for hard-disk-like devices,
MIPS Volume Header for old SGI computers, DEC Boot Block for old DECstation.
.br
The boot firmware EFI may use programs which are located in a FAT filesystem
and announced by an MBR partition table entry.
.br
.TP
\fB\-boot_image\fR "any"|"isolinux"|"grub"
.br
@ -2289,13 +2317,6 @@ which bundles these individual settings:
.br
-boot_image any boot_info_table=on
.br
\fBbin_path=\fR depicts the boot image file, a binary program which is to be
started by the hardware boot facility (e.g. the BIOS) at boot time.
.br
\fBefi_path=\fR depicts a boot image file that is ready for EFI booting.
Its load_size is determined automatically, no boot info table gets
written, platform_id is 0xef.
.br
An El Torito boot catalog file gets inserted into the ISO image with address
\fBcat_path=\fR at -commit time.
It is subject to normal -overwrite and -reassure processing if there is already
@ -2305,6 +2326,17 @@ one of the boot images. But it is not necessary that it appears in the
directory tree at all. One may hide it in all trees by \fBcat_hidden=on\fR.
Other possible values are "iso_rr", "joliet", and the default "off".
.br
\fBbin_path=\fR depicts a boot image file, a binary program which is to be
started by the hardware boot facility (e.g. the BIOS) at boot time.
.br
\fBefi_path=\fR depicts a boot image file that is ready for EFI booting.
Its load_size is determined automatically, no boot info table gets
written, no boot media gets emulated, platform_id is 0xef.
.br
\fBemul_type=\fR can be one of "no_emulation", "hard_disk", "diskette".
It controls the boot media emulation code of a boot image.
The default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD cdboot.
.br
\fBload_size=\fR is a value which depends on the boot image.
Default 2048 should be overridden only if a better value is known.
.br
@ -2369,6 +2401,159 @@ then those parameters get updated when the new System Area is written.
Special "system_area=/dev/zero" causes 32k of NUL-bytes.
Use this to discard an MBR which eventually was loaded with the ISO image.
.br
\fBpartition_offset=\fR2kb_block_adr causes a partition table with a single
partition that begins at the given block address. This is counted in 2048 byte
blocks, not in 512 byte blocks. If the block address is non-zero then it must
be at least 16. A non-zero partition offset causes two superblocks to be
generated and two sets of directory trees. The image is then mountable from its
absolute start as well as from the partition start.
.br
The offset value of an ISO image gets preserved when a new session is added.
So the value defined here is only in effect if a new ISO image gets written.
.br
\fBpartition_sec_hd=\fRnumber gives the number of sectors per head for
partition offset. 0 chooses a default value.
.br
\fBpartition_hd_cyl=\fRnumber gives the number of heads per cylinder for
partition offset. 0 chooses a default value.
.br
\fBmips_path=\fRiso_rr_path declares a data file in the image to be a
MIPS Big Endian boot file. Enable production of a MIPS Big Endian Volume
Header. This is mutually exclusive with MBR production and mipsel_path=.
It will overwrite the first 512 bytes of any data eventually provided by
system_area=.
Up to 15 boot files can be declared by mips_path=.
.br
\fBmipsel_path=\fRiso_rr_path declares a data file in the image to be the
MIPS Little Endian boot file. This is mutually exclusive with MBR production
and mips_path=. It will overwrite the first 512 bytes of any data eventually
provided by system_area=.
Only a single boot file can be declared by mipsel_path=.
.br
\fBmips_discard\fR revokes any boot file declarations made by mips_path=.
This removes the ban on MBR production.
.br
.br
.TP
\fB\-append_partition\fR partition_number type_code disk_path
Cause a prepared filesystem image to be appended to the ISO image and to be
described by a partition table entry in an MBR at the start of the emerging
ISO image. The partition entry will bear the size of the submitted file
rounded up to the next multiple of 2048 bytes.
.br
Beware of subsequent multi-session runs. The appended partition will get
overwritten.
.br
partition_number may be 1 to 4. Number 1 will put the whole ISO image into
the unclaimed space before partition 1. So together with most xorriso MBR
features, number 2 would be the most natural choice.
.br
The type_code may be "FAT12", "FAT16", "Linux",
or a hexadecimal number between 0x00 and 0xff. Not all those numbers will
yield usable results. For a list of codes search the Internet for
"Partition Types" or run fdisk command "L".
.br
The disk_path must provide the necessary data bytes at commit time.
An empty disk_path disables this feature for the given partition number.
.TP
.B Jigdo Template Extraction:
.PP
From man genisoimage:
"Jigdo is a tool to help in the distribution of large files like CD and
DVD images; see http://atterer.net/jigdo/ for more details. Debian CDs
and DVD ISO images are published on the web in jigdo format to allow
end users to download them more efficiently."
.br
xorriso can produce a .jigdo and a .template file together with a
single-session ISO image.
The .jigdo file contains checksums and symbolic file addresses.
The .template file contains the compressed ISO image with reference tags
instead of the content bytes of the listed files.
.br
Input for this process are the normal arguments for a xorriso session
on a blank -outdev, and a .md5 file which lists those data files which may be
listed in the .jigdo file and externally referenced in the .template file.
Each designated file is represented in the .md5 file by a single text line:
.br
MD5 as 32 hex digits, 2 blanks, size as 12 decimal digits or blanks, 2 blanks,
symbolic file address
.br
The file address in an .md5 line has to bear the same basename as the
disk_path of the file which it shall match. The directory path of
the file address is decisive for To=From mapping, not for file recognition.
After eventual To=From mapping, the file address gets written into the .jigdo
file. Jigdo restore tools will convert these addresses into really
reachable data source addresses from which they can read.
.br
If the list of jigdo parameters is not empty, then xorriso will refuse to
write to non-blank targets, it will disable multi-session emulation, and
eventual padding will be counted as part of the ISO image.
.br
.TP
\fB\-jigdo\fR parameter_name value
Clear Jigdo Template Extraction parameter list or add a parameter to that list.
The alias names are the corresponding genisoimage options. They are accepted
as parameter names as well. Especially they are recognized by the -as mkisofs
emulation command.
.br
Parameter \fBclear\fR with any value empties the whole list.
No .jigdo and .template file will be produced.
.br
\fBtemplate_path\fR sets the disk_path for the .template file with the
holed and compressed ISO image copy.
.br
Alias: -jigdo-template
.br
\fBjigdo_path\fR sets the disk_path for the .jigdo file with the checksums
and download addresses for filling the holes in .template.
.br
Alias: -jigdo-jigdo
.br
\fBmd5_path\fR sets the disk_path where to find the .md5 input file.
.br
Alias: -md5-list
.br
\fBmin_size\fR sets the minimum size for a data file to be listed
in the .jigdo file and being a hole in the .template file.
.br
Alias: -jigdo-min-file-size
.br
\fBexclude\fR adds a regular expression pattern which will get compared
with the absolute disk_path of any data file. A match causes the file to
stay in .template in any case.
.br
Alias: -jigdo-exclude
.br
\fBdemand_md5\fR adds a regular expression pattern which will get compared
with the absolute disk_path of any data file that was not found in the .md5
list. A match causes a MISHAP event.
.br
Alias: -jigdo-force-md5
.br
\fBmapping\fR adds a string pair of the form To=From to the parameter list.
If a data file gets listed in the .jigdo file, then it is referred by the
file address from its line in the .md5 file. This file address gets checked
whether it begins with the From string. If so, then this string will be
replaced by the To string and a ':' character, before it goes into the .jigdo
file. The From string should end by a '/' character.
.br
Alias: -jigdo-map
.br
\fBcompression\fR chooses one of "bzip2" or "gzip" for the compression of
the template file. The jigdo file is put out uncompressed.
.br
Alias: -jigdo-template-compress
.br
\fBchecksum_iso\fR chooses one or more of "md5", "sha1", "sha256", "sha512"
for the auxiliary "# Image Hex" checksums in the jigdo file. The value may e.g.
look like "md5,sha1,sha512". Value "all" chooses all available algorithms.
Note that MD5 stays always enabled.
.br
Alias: -checksum_algorithm_iso
.br
\fBchecksum_template\fR is like checksum_iso but for "# Template Hex".
.br
Alias: -checksum_algorithm_template
.TP
.B Character sets:
.PP
@ -3251,8 +3436,12 @@ of all regular files underneath directory iso_rr_path.
Adopted from grub-mkisofs are --protective-msdos-label
(see -boot_image grub partition_table=on) and
--modification-date=YYYYMMDDhhmmsscc
(see -volume_date uuid). For EFI bootable GRUB boot images use --efi-boot.
It performs -boot_image grub efi_path= surrounded by two -boot_image any next.
(see -volume_date uuid). For EFI bootable GRUB boot images use
--efi-boot.
It performs -boot_image grub efi_path= surrounded by two
-boot_image "any" "next".
Alternative option -e from Fedora genisoimage sets bin_path and
platform_id for EFI, but performs no "next".
.br
For MBR bootable ISOLINUX images there is -isohybrid-mbr FILE, where
FILE is one of the Syslinux files mbr/isohdp[fp]x*.bin . Use this
@ -3260,6 +3449,20 @@ instead of -G to apply the effect of -boot_image isolinux partition_table=on.
.br
--boot-catalog-hide is -boot_image any cat_hidden=on.
.br
-mips-boot is the same as -boot_image any mips_path= .
.br
-mipsel-boot leads to mipsel_path= .
.br
-partition_offset number is
-boot_image any partition_offset=number.
.br
Option -append_partition is supported.
.br
The options of genisoimage Jigdo Template Extraction are recognized and
performed via xorriso option -jigdo. See the "Alias:" names there for the
meaning of the genisoimage options.
.br
Personalites "\fBxorrisofs\fR", "\fBgenisoimage\fR",
and "\fBgenisofs\fR" are aliases for "mkisofs".
.br
@ -3315,11 +3518,11 @@ From then on, options are interpreted as xorriso options.
.TP
\fB\-read_mkisofsrc\fR
Try one by one to open for reading:
./.mkisofsrc , $MKISOFSRC , $HOME/.mkisofsrc , $(basename $0)/.mkisofs
./.mkisofsrc , $MKISOFSRC , $HOME/.mkisofsrc , $(dirname $0)/.mkisofsrc
.br
On success interpret the file content as of man mkisofs CONFIGURATION,
and end this command. Do not try further files.
The last address is used only if start argument 0 has a non-trivial basename.
The last address is used only if start argument 0 has a non-trivial dirname.
.br
The reader currently interprets the following NAME=VALUE pairs:
APPI (-application_id) , PUBL (-publisher) , SYSI (-system_id) ,

View File

@ -32,6 +32,11 @@
libisoburn.h. One should not mix those calls with the ones of xorriso.h .
*/
/* Important: If you add a public API function then add its name to file
libisoburn/libisoburn.ver
*/
#ifndef Xorriso_includeD
#define Xorriso_includeD yes
@ -56,7 +61,7 @@ struct XorrisO;
*/
#define Xorriso_header_version_majoR 0
#define Xorriso_header_version_minoR 6
#define Xorriso_header_version_micrO 0
#define Xorriso_header_version_micrO 4
/** Eventually something like ".pl01" to indicate a bug fix. Normally empty.
@ -110,7 +115,7 @@ void Xorriso__version(int *major, int *minor, int *micro);
@param flag Bitfield for control purposes. Unused yet. Submit 0.
@return 1= library can work for caller
0= library is not usable in some aspects. Caller must restrict
itself to an earlier API version or must not use this libray
itself to an earlier API version or must not use this library
at all.
*/
int Xorriso__is_compatible(int major, int minor, int micro, int flag);
@ -185,7 +190,7 @@ int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
functions from the Options API.
Wenn all desired activities are done, you may check whether there are
uncommited chages pending, compute an exit value, destroy the XorrisO
uncommited changes pending, compute an exit value, destroy the XorrisO
object, and exit your program.
*/
@ -290,8 +295,9 @@ int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
be at least 1, argv[*idx] must be a command.
*idx will iterate over commands and parameters until this
function aborts or until argc is reached.
@param flag bit0= recursion
bit1= these are the main() program start arguments
@param flag bit0= reserved. Indicates recursion. Submit 0.
bit1= Indicates that these are the main() program start
arguments
@return <=0 = error
1 = success
2 = problem event ignored
@ -348,8 +354,9 @@ int Xorriso_dialog(struct XorrisO *xorriso, int flag);
A final newline character gets appended automatically.
@param os_errno Eventual errno related to the message. Submit 0 if
the message is not related to a operating system error.
@param severity One of "ABORT", "FATAL", "SORRY", "WARNING", "HINT",
"NOTE", "UPDATE", "DEBUG". Defaults to "FATAL".
@param severity One of "ABORT", "FATAL", "FAILURE", "MISHAP", "SORRY",
"WARNING", "HINT", "NOTE", "UPDATE", "DEBUG".
Defaults to "FATAL".
@param flag Bitfield for control purposes
bit0= use pager (as with result)
bit1= permission to suppress output
@ -555,15 +562,15 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
Xorriso_eval_problem_status()
One should follow its eventual advice to abort.
Options with a varying number of arguments get them passed like
Options with a varying number of arguments get then passed like
Xorriso_interpreter(). E.g.:
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
They begin to read the arguments at position *idx and will see the list
end either at the next argv which contains the -list_delimiter text or
at argv[argc-1]. After the call, *idx will be the index of the first not
yet interpreted argv.
The option functions will begin to read the arguments at position *idx
and will see the list end either at the next argv which contains the
-list_delimiter text or at argv[argc-1].
After the call, *idx will be the index of the first not yet interpreted
argv.
*/
@ -596,6 +603,10 @@ int Xorriso_option_alter_date(struct XorrisO *xorriso,
char *time_type, char *timestring,
int argc, char **argv, int *idx, int flag);
/* Option -append_partition */
int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text,
char *type_text, char *image_path, int flag);
/* Option -application_id */
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag);
@ -847,6 +858,10 @@ int Xorriso_option_history(struct XorrisO *xorriso, char *line, int flag);
int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -jigdo aspect argument */
int Xorriso_option_jigdo(struct XorrisO *xorriso, char *aspect, char *arg,
int flag);
/* Option -joliet "on"|"off" */
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
@ -995,6 +1010,9 @@ int Xorriso_option_pathspecs(struct XorrisO *xorriso, char *mode, int flag);
/* Option -pkt_output */
int Xorriso_option_pkt_output(struct XorrisO *xorriso, char *mode, int flag);
/* Option -preparer_id */
int Xorriso_option_preparer_id(struct XorrisO *xorriso, char *name, int flag);
/* Option -print */
int Xorriso_option_print(struct XorrisO *xorriso, char *text, int flag);
@ -1030,10 +1048,6 @@ int Xorriso_option_read_mkisofsrc(struct XorrisO *xorriso, int flag);
/* Option -reassure "on"|"tree"|"off" */
int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag);
/* Option -relax_compliance */
int Xorriso_option_relax_compliance(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -report_about */
int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
int flag);
@ -1042,9 +1056,6 @@ int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
int Xorriso_option_return_with(struct XorrisO *xorriso, char *severity,
int exit_value, int flag);
/* Option -revoke_exclusions */
int Xorriso_option_revoke_exclusions(struct XorrisO *xorriso, int flag);
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,

View File

@ -149,6 +149,10 @@ There are two families of media in the MMC standard:
*Multi-session media* are CD-R, CD-RW, DVD-R, DVD+R, DVD+R/DL, BD-R, and
unformatted DVD-RW. These media provide a table of content which
describes their existing sessions. See option *-toc*.
Similar to multi-session media are DVD-R DL and minimally blanked
DVD-RW. They allow only a single session of which the size must be
known in advance. xorriso will write onto them only if option -close
is set to "on".
*Overwriteable media* are DVD-RAM, DVD+RW, BD-RE, and formatted DVD-RW.
They allow random write access but do not provide information about
their session history. If they contain one or more ISO 9660 sessions
@ -221,9 +225,9 @@ Growing is achieved by option -dev.
with no outdated files or directory trees. Modifying can write its
images to target media which are completely unsuitable for multi-session
operations. E.g. DVD-RW which were treated with -blank
deformat_quickest, named pipes, character devices, sockets. On the
other hand modified sessions cannot be written to appendable media but
to blank media only.
deformat_quickest, DVD-R DL, named pipes, character devices, sockets.
On the other hand modified sessions cannot be written to appendable
media but to blank media only.
So for this method one needs either two optical drives or has to work
with filesystem objects as source and/or target media.
Modifying takes place if input drive and output drive are not the same
@ -498,7 +502,8 @@ inner dashes are interpreted as underscores.
* Filter:: Filters for data file content
* Writing:: Writing the result, drive control
* SetWrite:: Settings for result writing
* Bootable:: El Torito bootable ISO images
* Bootable:: Bootable ISO images
* Jigdo:: Jigdo Template Extraction
* Charset:: Character sets
* Exception:: Exception processing
* DialogCtl:: Dialog mode control
@ -1830,6 +1835,9 @@ will be written according to the setting of option -acl.
This may identify the specification of how the data are recorded.
Permissible are up to 128 characters. This setting gets overridden
by image loading.
The special text "@xorriso@" gets converted to the id string of
xorriso which is normally written as -preparer_id. It is a wrong
tradition to write the program id as -application_id.
-system_id text
Set the system id string to be written with the next -commit. This
@ -1849,7 +1857,7 @@ will be written according to the setting of option -acl.
literally. It must consist of 16 decimal digits which form
YYYYMMDDhhmmsscc, with YYYY between 1970 and 2999. Time zone is
GMT. It is supposed to match this GRUB line:
search -fs-uuid -set YYYY-MM-DD-hh-mm-ss-cc
search --fs-uuid --set YYYY-MM-DD-hh-mm-ss-cc
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
Timestrings for the other types may be given as with option
-alter_date. They are prone to timezone computations. The
@ -1876,6 +1884,18 @@ will be written according to the setting of option -acl.
bibliographic records. Permissible are up to 37 characters. This
setting gets overridden by image loading.
-preparer_id
Set the preparer id string to be written with the next -commit.
This may identify the person or other entity which controls the
preparation of the data which shall be recorded. Normally this
should be the id of xorriso and not of the person or program which
operates xorriso. Please avoid to change it. Permissible are up
to 128 characters.
The special text "@xorriso@" gets converted to the id string of
xorriso which is default at program startup.
Unlike other id strings, this setting is not influenced by image
loading.
-out_charset character_set_name
Set the character set to which file names get converted when
writing an image. See paragraph "Character sets" for more
@ -1969,10 +1989,10 @@ will be written according to the setting of option -acl.
0 .

File: xorriso.info, Node: Bootable, Next: Charset, Prev: SetWrite, Up: Options
File: xorriso.info, Node: Bootable, Next: Jigdo, Prev: SetWrite, Up: Options
9.10 El Torito bootable ISO images
==================================
9.10 Bootable ISO images
========================
Contrary to published specifications many BIOSes will load an El Torito
record from the first session on media and not from the last one, which
@ -1986,6 +2006,12 @@ If a boot image from ISOLINUX or GRUB is known to be present on media
then it is advised to patch it when a follow-up session gets written.
But one should not rely on the capability to influence the bootability
of the existing sessions, unless one can assume overwriteable media.
There are booting mechanisms which do not use an El Torito record but
rather start at the first bytes of the image: PC-BIOS MBR for
hard-disk-like devices, MIPS Volume Header for old SGI computers, DEC
Boot Block for old DECstation.
The boot firmware EFI may use programs which are located in a FAT
filesystem and announced by an MBR partition table entry.
-boot_image "any"|"isolinux"|"grub"
"discard"|"keep"|"patch"|"show_status"|bootspec|"next"
@ -2039,12 +2065,6 @@ of the existing sessions, unless one can assume overwriteable media.
-boot_image isolinux cat_path=/boot/isolinux/boot.cat
-boot_image isolinux load_size=2048
-boot_image any boot_info_table=on
*bin_path=* depicts the boot image file, a binary program which is
to be started by the hardware boot facility (e.g. the BIOS) at
boot time.
*efi_path=* depicts a boot image file that is ready for EFI
booting. Its load_size is determined automatically, no boot info
table gets written, platform_id is 0xef.
An El Torito boot catalog file gets inserted into the ISO image
with address *cat_path=* at -commit time. It is subject to normal
-overwrite and -reassure processing if there is already a file
@ -2053,6 +2073,17 @@ of the existing sessions, unless one can assume overwriteable media.
not necessary that it appears in the directory tree at all. One
may hide it in all trees by *cat_hidden=on*. Other possible
values are "iso_rr", "joliet", and the default "off".
*bin_path=* depicts a boot image file, a binary program which is
to be started by the hardware boot facility (e.g. the BIOS) at
boot time.
*efi_path=* depicts a boot image file that is ready for EFI
booting. Its load_size is determined automatically, no boot info
table gets written, no boot media gets emulated, platform_id is
0xef.
*emul_type=* can be one of "no_emulation", "hard_disk", "diskette".
It controls the boot media emulation code of a boot image. The
default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD
cdboot.
*load_size=* is a value which depends on the boot image. Default
2048 should be overridden only if a better value is known.
*boot_info_table=on* may be used to apply patching to a boot image
@ -2105,11 +2136,138 @@ of the existing sessions, unless one can assume overwriteable media.
when the new System Area is written.
Special "system_area=/dev/zero" causes 32k of NUL-bytes. Use this
to discard an MBR which eventually was loaded with the ISO image.
*partition_offset=*2kb_block_adr causes a partition table with a
single partition that begins at the given block address. This is
counted in 2048 byte blocks, not in 512 byte blocks. If the block
address is non-zero then it must be at least 16. A non-zero
partition offset causes two superblocks to be generated and two
sets of directory trees. The image is then mountable from its
absolute start as well as from the partition start.
The offset value of an ISO image gets preserved when a new session
is added. So the value defined here is only in effect if a new
ISO image gets written.
*partition_sec_hd=*number gives the number of sectors per head for
partition offset. 0 chooses a default value.
*partition_hd_cyl=*number gives the number of heads per cylinder
for partition offset. 0 chooses a default value.
*mips_path=*iso_rr_path declares a data file in the image to be a
MIPS Big Endian boot file. Enable production of a MIPS Big Endian
Volume Header. This is mutually exclusive with MBR production and
mipsel_path=. It will overwrite the first 512 bytes of any data
eventually provided by system_area=. Up to 15 boot files can be
declared by mips_path=.
*mipsel_path=*iso_rr_path declares a data file in the image to be
the MIPS Little Endian boot file. This is mutually exclusive with
MBR production and mips_path=. It will overwrite the first 512
bytes of any data eventually provided by system_area=. Only a
single boot file can be declared by mipsel_path=.
*mips_discard* revokes any boot file declarations made by
mips_path=. This removes the ban on MBR production.
-append_partition partition_number type_code disk_path
Cause a prepared filesystem image to be appended to the ISO image
and to be described by a partition table entry in an MBR at the
start of the emerging ISO image. The partition entry will bear the
size of the submitted file rounded up to the next multiple of 2048
bytes.
Beware of subsequent multi-session runs. The appended partition
will get overwritten.
partition_number may be 1 to 4. Number 1 will put the whole ISO
image into the unclaimed space before partition 1. So together
with most xorriso MBR features, number 2 would be the most natural
choice.
The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal
number between 0x00 and 0xff. Not all those numbers will yield
usable results. For a list of codes search the Internet for
"Partition Types" or run fdisk command "L".
The disk_path must provide the necessary data bytes at commit time.
An empty disk_path disables this feature for the given partition
number.

File: xorriso.info, Node: Charset, Next: Exception, Prev: Bootable, Up: Options
File: xorriso.info, Node: Jigdo, Next: Charset, Prev: Bootable, Up: Options
9.11 Character sets
9.11 Jigdo Template Extraction
==============================
From man genisoimage: "Jigdo is a tool to help in the distribution of
large files like CD and DVD images; see http://atterer.net/jigdo/ for
more details. Debian CDs and DVD ISO images are published on the web in
jigdo format to allow end users to download them more efficiently."
xorriso can produce a .jigdo and a .template file together with a
single-session ISO image. The .jigdo file contains checksums and
symbolic file addresses. The .template file contains the compressed
ISO image with reference tags instead of the content bytes of the
listed files.
Input for this process are the normal arguments for a xorriso session
on a blank -outdev, and a .md5 file which lists those data files which
may be listed in the .jigdo file and externally referenced in the
.template file. Each designated file is represented in the .md5 file
by a single text line:
MD5 as 32 hex digits, 2 blanks, size as 12 decimal digits or blanks, 2
blanks, symbolic file address
The file address in an .md5 line has to bear the same basename as the
disk_path of the file which it shall match. The directory path of the
file address is decisive for To=From mapping, not for file recognition.
After eventual To=From mapping, the file address gets written into the
.jigdo file. Jigdo restore tools will convert these addresses into
really reachable data source addresses from which they can read.
If the list of jigdo parameters is not empty, then xorriso will refuse
to write to non-blank targets, it will disable multi-session emulation,
and eventual padding will be counted as part of the ISO image.
-jigdo parameter_name value
Clear Jigdo Template Extraction parameter list or add a parameter
to that list. The alias names are the corresponding genisoimage
options. They are accepted as parameter names as well. Especially
they are recognized by the -as mkisofs emulation command.
Parameter *clear* with any value empties the whole list. No
.jigdo and .template file will be produced.
*template_path* sets the disk_path for the .template file with the
holed and compressed ISO image copy.
Alias: -jigdo-template
*jigdo_path* sets the disk_path for the .jigdo file with the
checksums and download addresses for filling the holes in
.template.
Alias: -jigdo-jigdo
*md5_path* sets the disk_path where to find the .md5 input file.
Alias: -md5-list
*min_size* sets the minimum size for a data file to be listed in
the .jigdo file and being a hole in the .template file.
Alias: -jigdo-min-file-size
*exclude* adds a regular expression pattern which will get compared
with the absolute disk_path of any data file. A match causes the
file to stay in .template in any case.
Alias: -jigdo-exclude
*demand_md5* adds a regular expression pattern which will get
compared with the absolute disk_path of any data file that was not
found in the .md5 list. A match causes a MISHAP event.
Alias: -jigdo-force-md5
*mapping* adds a string pair of the form To=From to the parameter
list. If a data file gets listed in the .jigdo file, then it is
referred by the file address from its line in the .md5 file. This
file address gets checked whether it begins with the From string.
If so, then this string will be replaced by the To string and a
':' character, before it goes into the .jigdo file. The From
string should end by a '/' character.
Alias: -jigdo-map
*compression* chooses one of "bzip2" or "gzip" for the compression
of the template file. The jigdo file is put out uncompressed.
Alias: -jigdo-template-compress
*checksum_iso* chooses one or more of "md5", "sha1", "sha256",
"sha512" for the auxiliary "# Image Hex" checksums in the jigdo
file. The value may e.g. look like "md5,sha1,sha512". Value "all"
chooses all available algorithms. Note that MD5 stays always
enabled.
Alias: -checksum_algorithm_iso
*checksum_template* is like checksum_iso but for "# Template Hex".
Alias: -checksum_algorithm_template

File: xorriso.info, Node: Charset, Next: Exception, Prev: Jigdo, Up: Options
9.12 Character sets
===================
File names are strings of non-zero bytes with 8 bit each. Unfortunately
@ -2161,7 +2319,7 @@ display on your terminal.

File: xorriso.info, Node: Exception, Next: DialogCtl, Prev: Charset, Up: Options
9.12 Exception processing
9.13 Exception processing
=========================
Since the tasks of xorriso are manifold and prone to external
@ -2250,7 +2408,7 @@ failed unexpectedly.

File: xorriso.info, Node: DialogCtl, Next: Inquiry, Prev: Exception, Up: Options
9.13 Dialog mode control
9.14 Dialog mode control
========================
-dialog "on"|"off"|"single_line"
@ -2301,7 +2459,7 @@ File: xorriso.info, Node: DialogCtl, Next: Inquiry, Prev: Exception, Up: Opt

File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Options
9.14 Drive and media related inquiry actions
9.15 Drive and media related inquiry actions
============================================
-devices
@ -2384,7 +2542,7 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Opti

File: xorriso.info, Node: Navigate, Next: Verify, Prev: Inquiry, Up: Options
9.15 Navigation in ISO image and disk filesystem
9.16 Navigation in ISO image and disk filesystem
================================================
-cd iso_rr_path
@ -2558,7 +2716,7 @@ File: xorriso.info, Node: Navigate, Next: Verify, Prev: Inquiry, Up: Options

File: xorriso.info, Node: Verify, Next: Restore, Prev: Navigate, Up: Options
9.16 Evaluation of readability and recovery
9.17 Evaluation of readability and recovery
===========================================
It is not uncommon that optical media produce read errors. The reasons
@ -2721,7 +2879,7 @@ transmission errors.

File: xorriso.info, Node: Restore, Next: Emulation, Prev: Verify, Up: Options
9.17 osirrox ISO-to-disk restore options
9.18 osirrox ISO-to-disk restore options
========================================
Normally xorriso only writes to disk files which were given as stdio:
@ -2850,7 +3008,7 @@ The directory permissions on disk have to allow rwx.

File: xorriso.info, Node: Emulation, Next: Scripting, Prev: Restore, Up: Options
9.18 Command compatibility emulations (cdrtools)
9.19 Command compatibility emulations (cdrtools)
================================================
Writing of ISO 9660 on CD is traditionally done by program mkisofs as
@ -2905,13 +3063,24 @@ programs trigger comparable actions.
Adopted from grub-mkisofs are --protective-msdos-label (see
-boot_image grub partition_table=on) and
--modification-date=YYYYMMDDhhmmsscc (see -volume_date uuid). For
EFI bootable GRUB boot images use -efi-boot. It performs
-boot_image grub efi_path= surrounded by two -boot_image any next.
EFI bootable GRUB boot images use --efi-boot. It performs
-boot_image grub efi_path= surrounded by two -boot_image "any"
"next". Alternative option -e from Fedora genisoimage sets
bin_path and platform_id for EFI, but performs no "next".
For MBR bootable ISOLINUX images there is -isohybrid-mbr FILE,
where FILE is one of the Syslinux files mbr/isohdp[fp]x*.bin . Use
this instead of -G to apply the effect of -boot_image isolinux
partition_table=on.
-boot-catalog-hide is -boot_image any cat_hidden=on.
--boot-catalog-hide is -boot_image any cat_hidden=on.
-mips-boot is the same as -boot_image any mips_path= .
-mipsel-boot leads to mipsel_path= .
-partition_offset number is -boot_image any
partition_offset=number.
Option -append_partition is supported.
The options of genisoimage Jigdo Template Extraction are
recognized and performed via xorriso option -jigdo. See the
"Alias:" names there for the meaning of the genisoimage options.
Personalites "*xorrisofs*", "*genisoimage*", and "*genisofs*" are
aliases for "mkisofs".
If xorriso is started with one of the leafnames "xorrisofs",
@ -2955,11 +3124,11 @@ programs trigger comparable actions.
-read_mkisofsrc
Try one by one to open for reading: ./.mkisofsrc , $MKISOFSRC ,
$HOME/.mkisofsrc , $(basename $0)/.mkisofs
$HOME/.mkisofsrc , $(dirname $0)/.mkisofsrc
On success interpret the file content as of man mkisofs
CONFIGURATION, and end this command. Do not try further files.
The last address is used only if start argument 0 has a
non-trivial basename.
non-trivial dirname.
The reader currently interprets the following NAME=VALUE pairs:
APPI (-application_id) , PUBL (-publisher) , SYSI (-system_id) ,
VOLI (-volid) , VOLS (-volset_id)
@ -2989,7 +3158,7 @@ programs trigger comparable actions.

File: xorriso.info, Node: Scripting, Next: Frontend, Prev: Emulation, Up: Options
9.19 Scripting, dialog and program control features
9.20 Scripting, dialog and program control features
===================================================
-no_rc
@ -3121,7 +3290,7 @@ File: xorriso.info, Node: Scripting, Next: Frontend, Prev: Emulation, Up: Op

File: xorriso.info, Node: Frontend, Next: ExDevices, Prev: Scripting, Up: Options
9.20 Support for frontend programs via stdin and stdout
9.21 Support for frontend programs via stdin and stdout
=======================================================
-pkt_output "on"|"off"
@ -3711,21 +3880,23 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* # starts a comment line: Scripting. (line 128)
* -abort_on controls abort on error: Exception. (line 27)
* -abstract_file sets abstract file name: SetWrite. (line 128)
* -abstract_file sets abstract file name: SetWrite. (line 131)
* -acl controls handling of ACLs: Loading. (line 123)
* -add inserts one or more paths: Insert. (line 42)
* -add_plainly inserts one or more paths: Insert. (line 61)
* -alter_date sets timestamps in ISO image: Manip. (line 146)
* -alter_date_r sets timestamps in ISO image: Manip. (line 166)
* -append_partition adds arbitrary file after image end: Bootable.
(line 178)
* -application_id sets application id: SetWrite. (line 90)
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 65)
* -auto_charset learns character set from image: Loading. (line 80)
* -backslash_codes enables backslash conversion: Scripting. (line 45)
* -ban_stdio_write demands real drive: Loading. (line 220)
* -biblio_file sets biblio file name: SetWrite. (line 135)
* -biblio_file sets biblio file name: SetWrite. (line 138)
* -blank erases media: Writing. (line 45)
* -boot_image controls bootability: Bootable. (line 20)
* -boot_image controls bootability: Bootable. (line 26)
* -calm_drive reduces drive activity: Loading. (line 209)
* -cd sets working directory in ISO: Navigate. (line 7)
* -cdx sets working directory on disk: Navigate. (line 16)
@ -3740,7 +3911,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chmod_r sets permissions in ISO image: Manip. (line 70)
* -chown sets ownership in ISO image: Manip. (line 42)
* -chown_r sets ownership in ISO image: Manip. (line 47)
* -close controls media closing: SetWrite. (line 218)
* -close controls media closing: SetWrite. (line 233)
* -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 13)
* -commit_eject writes and ejects: Writing. (line 40)
@ -3748,7 +3919,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -compare_l reports ISO/disk differences: Navigate. (line 152)
* -compare_r reports ISO/disk differences: Navigate. (line 147)
* -compliance controls standard compliance: SetWrite. (line 14)
* -copyright_file sets copyright file name: SetWrite. (line 122)
* -copyright_file sets copyright file name: SetWrite. (line 125)
* -cp_rx copies file trees to disk: Restore. (line 104)
* -cpax copies files to disk: Restore. (line 100)
* -cpr inserts like with cp -r: Insert. (line 152)
@ -3761,11 +3932,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -disk_pattern controls pattern expansion: Insert. (line 31)
* -drive_class controls drive accessability: Loading. (line 35)
* -du show directory size in ISO image: Navigate. (line 88)
* -dummy controls write simulation: SetWrite. (line 207)
* -dummy controls write simulation: SetWrite. (line 222)
* -dus show directory size in ISO image: Navigate. (line 92)
* -dusx show directory size on disk: Navigate. (line 101)
* -dux show directory size on disk: Navigate. (line 96)
* -dvd_obs set write block size: SetWrite. (line 194)
* -dvd_obs set write block size: SetWrite. (line 209)
* -eject ejects drive tray: Writing. (line 36)
* -end writes pending session and ends program: Scripting. (line 122)
* -errfile_log logs problematic disk files: Scripting. (line 84)
@ -3782,12 +3953,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -follow softlinks and mount points: SetInsert. (line 76)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 158)
* -format formats media: Writing. (line 69)
* -fs sets size of fifo: SetWrite. (line 211)
* -fs sets size of fifo: SetWrite. (line 226)
* -getfacl shows ACL in ISO image: Navigate. (line 69)
* -getfacl_r shows ACL in ISO image: Navigate. (line 76)
* -getfattr shows xattr in ISO image: Navigate. (line 80)
* -getfattr_r shows xattr in ISO image: Navigate. (line 84)
* -gid sets global ownership: SetWrite. (line 151)
* -gid sets global ownership: SetWrite. (line 166)
* -grow_blindly overides next writeable address: AqDrive. (line 44)
* -hardlinks controls handling of hard links: Loading. (line 91)
* -help prints help text: Scripting. (line 16)
@ -3796,6 +3967,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -in_charset sets input character set: Loading. (line 73)
* -indev aquires a drive for input: AqDrive. (line 22)
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
* -jigdo clears JTE or sets input/output character set: Jigdo.
(line 33)
* -joliet enables production of Joliet tree: SetWrite. (line 10)
* -list_delimiter replaces '--': Scripting. (line 38)
* -list_formats lists available formats: Writing. (line 107)
@ -3828,16 +4001,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -not_paths sets absolute exclusion paths: SetInsert. (line 55)
* -options_from_file reads commands from file: Scripting. (line 12)
* -osirrox enables ISO-to-disk copying: Restore. (line 18)
* -out_charset sets output character set: SetWrite. (line 141)
* -out_charset sets output character set: SetWrite. (line 156)
* -outdev aquires a drive for output: AqDrive. (line 29)
* -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 119)
* -padding sets amount of image padding: SetWrite. (line 224)
* -pacifier controls pacifier text form: Emulation. (line 130)
* -padding sets amount of image padding: SetWrite. (line 239)
* -page set terminal geometry: DialogCtl. (line 15)
* -paste_in copies file into disk file: Restore. (line 117)
* -path_list inserts paths from disk file: Insert. (line 75)
* -pathspecs sets meaning of = with -add: SetInsert. (line 118)
* -pkt_output consolidates text output: Frontend. (line 7)
* -preparer_id sets preparer id: SetWrite. (line 144)
* -print prints text line: Scripting. (line 77)
* -print_size predicts image size: Inquiry. (line 69)
* -prog sets program name: Frontend. (line 29)
@ -3850,7 +4024,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -quoted_not_list sets exclusions: SetInsert. (line 72)
* -quoted_path_list inserts paths from disk file: Insert. (line 80)
* -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
(line 107)
(line 118)
* -reassure enables confirmation question: DialogCtl. (line 28)
* -report_about controls verbosity: Exception. (line 55)
* -return_with controls exit value: Exception. (line 39)
@ -3860,7 +4034,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 125)
* -rom_toc_scan searches for sessions: Loading. (line 184)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 129)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 140)
* -scsi_log reports SCSI commands: Scripting. (line 113)
* -session_log logs written sessions: Scripting. (line 104)
* -session_string composes session info line: Inquiry. (line 56)
@ -3874,17 +4048,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -setfattr_r sets xattr in ISO image: Manip. (line 123)
* -show_stream shows data source and filters: Navigate. (line 157)
* -show_stream_r shows data source and filters: Navigate. (line 172)
* -speed set write speed: SetWrite. (line 167)
* -speed set write speed: SetWrite. (line 182)
* -split_size enables large file splitting: SetInsert. (line 140)
* -status shows current settings: Scripting. (line 25)
* -status_history_max curbs -status history: Scripting. (line 34)
* -stdio_sync controls stdio buffer: SetWrite. (line 201)
* -stream_recording controls defect management: SetWrite. (line 182)
* -system_id sets system id: SetWrite. (line 96)
* -stdio_sync controls stdio buffer: SetWrite. (line 216)
* -stream_recording controls defect management: SetWrite. (line 197)
* -system_id sets system id: SetWrite. (line 99)
* -tell_media_space reports free space: Inquiry. (line 74)
* -temp_mem_limit curbs memory consumption: Scripting. (line 70)
* -toc shows list of sessions: Inquiry. (line 18)
* -uid sets global ownership: SetWrite. (line 147)
* -uid sets global ownership: SetWrite. (line 162)
* -update inserts path if different: Insert. (line 99)
* -update_l inserts paths if different: Insert. (line 121)
* -update_r inserts paths if different: Insert. (line 110)
@ -3892,9 +4066,9 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -version prints help text: Scripting. (line 19)
* -volid sets volume id: SetWrite. (line 60)
* -volset_id sets volume set id: SetWrite. (line 79)
* -volume_date sets volume timestamp: SetWrite. (line 103)
* -volume_date sets volume timestamp: SetWrite. (line 106)
* -xattr controls handling of xattr (EA): Loading. (line 131)
* -zisofs controls zisofs production: SetWrite. (line 155)
* -zisofs controls zisofs production: SetWrite. (line 170)

File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -3912,22 +4086,23 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* ACL, set in ISO image, -setfacl_r: Manip. (line 97)
* ACL, show in ISO image, -getfacl: Navigate. (line 69)
* ACL, show in ISO image, -getfacl_r: Navigate. (line 76)
* Appendable media, _definition: Media. (line 34)
* Appendable media, _definition: Media. (line 38)
* Appended Filesystem Image, -append_partition: Bootable. (line 178)
* Backslash Interpretation, _definition: Processing. (line 49)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 163)
* Backup, enable features, -for_backup: Loading. (line 158)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 129)
* Blank media, _definition: Media. (line 25)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 140)
* Blank media, _definition: Media. (line 29)
* Blind growing, _definition: Methods. (line 40)
* Bootability, control, -boot_image: Bootable. (line 20)
* cdrecord, Emulation: Emulation. (line 74)
* Bootability, control, -boot_image: Bootable. (line 26)
* cdrecord, Emulation: Emulation. (line 85)
* Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 73)
* Character Set, for input/output, -charset: Charset. (line 43)
* Character Set, for output, -out_charset: SetWrite. (line 141)
* Character Set, for output, -out_charset: SetWrite. (line 156)
* Character set, learn from image, -auto_charset: Loading. (line 80)
* Character Set, of terminal, -local_charset: Charset. (line 47)
* Closed media, _definition: Media. (line 39)
* Closed media, _definition: Media. (line 43)
* Comment, #: Scripting. (line 128)
* Create, new ISO image, _definiton: Methods. (line 6)
* Delete, from ISO image, -rm: Manip. (line 21)
@ -3955,10 +4130,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Drive, write and eject, -commit_eject: Writing. (line 40)
* El Torito, _definiton: Extras. (line 19)
* Emulation, -as: Emulation. (line 13)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 107)
* Emulation, cdrecord, -as: Emulation. (line 74)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 118)
* Emulation, cdrecord, -as: Emulation. (line 85)
* Emulation, mkisofs, -as: Emulation. (line 16)
* Emulation, pacifier form, -pacifier: Emulation. (line 119)
* Emulation, pacifier form, -pacifier: Emulation. (line 130)
* Examples: Examples. (line 6)
* Filter, _definition: Filter. (line 6)
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
@ -3968,8 +4143,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Filter, show chain, -show_stream: Navigate. (line 157)
* Filter, show chains of tree, -show_stream_r: Navigate. (line 172)
* Filter, unregister, -unregister_filter: Filter. (line 48)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 155)
* Group, global in ISO image, -gid: SetWrite. (line 151)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 170)
* Group, global in ISO image, -gid: SetWrite. (line 166)
* Group, in ISO image, -chgrp: Manip. (line 50)
* Group, in ISO image, -chgrp_r: Manip. (line 55)
* Growing, _definition: Methods. (line 19)
@ -3978,15 +4153,16 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Image, _definition: Model. (line 9)
* Image, demand volume id, -assert_volid: Loading. (line 65)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, set abstract file name, -abstract_file: SetWrite. (line 128)
* Image, set abstract file name, -abstract_file: SetWrite. (line 131)
* Image, set application id, -application_id: SetWrite. (line 90)
* Image, set biblio file name, -biblio_file: SetWrite. (line 135)
* Image, set copyright file name, -copyright_file: SetWrite. (line 122)
* Image, set biblio file name, -biblio_file: SetWrite. (line 138)
* Image, set copyright file name, -copyright_file: SetWrite. (line 125)
* Image, set preparer id, -preparer_id: SetWrite. (line 144)
* Image, set publisher id, -publisher: SetWrite. (line 84)
* Image, set system id, -system_id: SetWrite. (line 96)
* Image, set system id, -system_id: SetWrite. (line 99)
* Image, set volume id, -volid: SetWrite. (line 60)
* Image, set volume set id, -volset_id: SetWrite. (line 79)
* Image, set volume timestamp, -volume_date: SetWrite. (line 103)
* Image, set volume timestamp, -volume_date: SetWrite. (line 106)
* Image, show id strings, -pvd_info: Inquiry. (line 78)
* Insert, enable overwriting, -overwrite: SetInsert. (line 127)
* Insert, file exclusion absolute, -not_paths: SetInsert. (line 55)
@ -4011,13 +4187,16 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Insert, pathspecs, -add: Insert. (line 42)
* Insert, piece of data file, -cut_out: Insert. (line 126)
* iso_rr_path, _definition: Insert. (line 7)
* Jigdo Template Extraction, -jigdo: Jigdo. (line 33)
* Jigdo Template Extraction, _definition: Jigdo. (line 6)
* List delimiter, _definiton: Processing. (line 8)
* MBR, _definiton: Extras. (line 26)
* MBR, set, -boot_image system_area=: Bootable. (line 112)
* MBR, set, -boot_image system_area=: Bootable. (line 123)
* MD5, control handling, -md5: Loading. (line 136)
* Media, erase, -blank: Writing. (line 45)
* Media, format, -format: Writing. (line 69)
* Media, list formats, -list_formats: Writing. (line 107)
* MIPS boot file, activation: Bootable. (line 162)
* mkisofs, Emulation: Emulation. (line 16)
* Modifying, _definition: Methods. (line 27)
* Multi-session media, _definition: Media. (line 7)
@ -4039,11 +4218,12 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Navigate, tell disk working directory, -pwdx: Navigate. (line 23)
* Navigate, tell ISO working directory, -pwd: Navigate. (line 20)
* Next writeable address, -grow_blindly: AqDrive. (line 44)
* Overwriteable media, _definition: Media. (line 10)
* Ownership, global in ISO image, -uid: SetWrite. (line 147)
* Overwriteable media, _definition: Media. (line 14)
* Ownership, global in ISO image, -uid: SetWrite. (line 162)
* Ownership, in ISO image, -chown: Manip. (line 42)
* Ownership, in ISO image, -chown_r: Manip. (line 47)
* Partition table, _definiton: Bootable. (line 119)
* Partition offset, _definiton: Bootable. (line 148)
* Partition table, _definiton: Bootable. (line 130)
* Pathspec, _definition: SetInsert. (line 120)
* Pattern expansion, _definition: Processing. (line 22)
* Pattern expansion, for disk paths, -disk_pattern: Insert. (line 31)
@ -4094,7 +4274,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Session, mount command line, -mount_cmd: Inquiry. (line 31)
* Session, mount parameters, -mount_opts: Inquiry. (line 47)
* Session, select as input, -load: Loading. (line 11)
* System area, _definiton: Bootable. (line 112)
* System area, _definiton: Bootable. (line 123)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 184)
* Table-of-content, show, -toc: Inquiry. (line 18)
* Timestamps, set in ISO image, -alter_date: Manip. (line 146)
@ -4108,22 +4288,22 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Verify, file checksum, -check_md5: Verify. (line 144)
* Verify, file tree checksums, -check_md5_r: Verify. (line 160)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
* Write, block size, -dvd_obs: SetWrite. (line 194)
* Write, bootability, -boot_image: Bootable. (line 20)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 201)
* Write, close media, -close: SetWrite. (line 218)
* Write, block size, -dvd_obs: SetWrite. (line 209)
* Write, bootability, -boot_image: Bootable. (line 26)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 216)
* Write, close media, -close: SetWrite. (line 233)
* Write, compliance to specs, -compliance: SetWrite. (line 14)
* Write, defect management, -stream_recording: SetWrite. (line 182)
* Write, defect management, -stream_recording: SetWrite. (line 197)
* Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 211)
* Write, fifo size, -fs: SetWrite. (line 226)
* Write, free space, -tell_media_space: Inquiry. (line 74)
* Write, log problematic disk files, -errfile_log: Scripting. (line 84)
* Write, log written sessions, -session_log: Scripting. (line 104)
* Write, padding image, -padding: SetWrite. (line 224)
* Write, padding image, -padding: SetWrite. (line 239)
* Write, pending ISO image, -commit: Writing. (line 13)
* Write, predict image size, -print_size: Inquiry. (line 69)
* Write, set speed, -speed: SetWrite. (line 167)
* Write, simulation, -dummy: SetWrite. (line 207)
* Write, set speed, -speed: SetWrite. (line 182)
* Write, simulation, -dummy: SetWrite. (line 222)
* xattr, _definiton: Extras. (line 51)
* xattr, control handling, -xattr: Loading. (line 131)
* xattr, set in ISO image, -setfattr: Manip. (line 110)
@ -4139,53 +4319,54 @@ Node: Top420
Node: Overview1324
Node: Model3209
Node: Media6089
Node: Methods8519
Node: Drives11066
Node: Extras14372
Node: Processing17799
Node: Dialog21295
Node: Options22952
Node: AqDrive24520
Node: Loading27426
Node: Insert39605
Node: SetInsert47962
Node: Manip56529
Node: CmdFind65210
Node: Filter75161
Node: Writing79510
Node: SetWrite85799
Node: Bootable96961
Node: Charset104913
Node: Exception107667
Node: DialogCtl112182
Node: Inquiry114527
Node: Navigate118657
Node: Verify126255
Node: Restore134675
Node: Emulation141331
Node: Scripting148929
Node: Frontend154491
Node: Examples155692
Node: ExDevices156861
Node: ExCreate157495
Node: ExDialog158769
Node: ExGrowing160031
Node: ExModifying160833
Node: ExBootable161334
Node: ExCharset161881
Node: ExPseudo162709
Node: ExCdrecord163603
Node: ExMkisofs163918
Node: ExGrowisofs164921
Node: ExException166045
Node: ExTime166499
Node: ExIncBackup166958
Node: ExRestore170430
Node: ExRecovery171399
Node: Files171965
Node: Seealso173193
Node: Legal173717
Node: CommandIdx174639
Node: ConceptIdx188372
Node: Methods8739
Node: Drives11295
Node: Extras14601
Node: Processing18028
Node: Dialog21524
Node: Options23181
Node: AqDrive24789
Node: Loading27695
Node: Insert39874
Node: SetInsert48231
Node: Manip56798
Node: CmdFind65479
Node: Filter75430
Node: Writing79779
Node: SetWrite86068
Node: Bootable98019
Node: Jigdo109361
Node: Charset113619
Node: Exception116370
Node: DialogCtl120885
Node: Inquiry123230
Node: Navigate127360
Node: Verify134958
Node: Restore143378
Node: Emulation150034
Node: Scripting158181
Node: Frontend163743
Node: Examples164944
Node: ExDevices166113
Node: ExCreate166747
Node: ExDialog168021
Node: ExGrowing169283
Node: ExModifying170085
Node: ExBootable170586
Node: ExCharset171133
Node: ExPseudo171961
Node: ExCdrecord172855
Node: ExMkisofs173170
Node: ExGrowisofs174173
Node: ExException175297
Node: ExTime175751
Node: ExIncBackup176210
Node: ExRestore179682
Node: ExRecovery180651
Node: Files181217
Node: Seealso182445
Node: Legal182969
Node: CommandIdx183891
Node: ConceptIdx197977

End Tag Table

View File

@ -44,7 +44,7 @@
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Jun 27, 2010"
@c man .TH XORRISO 1 "Oct 19, 2010"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -264,6 +264,10 @@ There are two families of media in the MMC standard:
unformatted DVD-RW. These media provide a table of content which
describes their existing sessions. See option @strong{-toc}.
@*
Similar to multi-session media are DVD-R DL and minimally blanked DVD-RW.
They allow only a single session of which the size must be known in advance.
xorriso will write onto them only if option -close is set to "on".
@*
@cindex Overwriteable media, _definition
@strong{Overwriteable media} are DVD-RAM, DVD+RW, BD-RE, and formatted DVD-RW.
They allow random write access but do not provide information about their
@ -353,7 +357,7 @@ The write method of @strong{modifying} produces compact filesystem
images with no outdated files or directory trees. Modifying can write its
images to target media which are completely unsuitable for multi-session
operations. E.g. DVD-RW which were treated with -blank deformat_quickest,
named pipes, character devices, sockets.
DVD-R DL, named pipes, character devices, sockets.
On the other hand modified sessions cannot be written to appendable media
but to blank media only.
@*
@ -710,7 +714,8 @@ inner dashes are interpreted as underscores.
* Filter:: Filters for data file content
* Writing:: Writing the result, drive control
* SetWrite:: Settings for result writing
* Bootable:: El Torito bootable ISO images
* Bootable:: Bootable ISO images
* Jigdo:: Jigdo Template Extraction
* Charset:: Character sets
* Exception:: Exception processing
* DialogCtl:: Dialog mode control
@ -2461,6 +2466,10 @@ Set the application id string to be written with the next -commit. This may
identify the specification of how the data are recorded.
Permissible are up to 128 characters. This setting gets overridden by
image loading.
@*
The special text "@@xorriso@@" gets converted to the id string of xorriso
which is normally written as -preparer_id. It is a wrong tradition to write
the program id as -application_id.
@c man .TP
@item -system_id text
@kindex -system_id sets system id
@ -2490,7 +2499,7 @@ It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999. Time zone is GMT.
It is supposed to match this GRUB line:
@*
search --fs-uuid --set YYYY-MM-DD-hh-mm-ss-cc
search @minus{}@minus{}fs-uuid @minus{}@minus{}set YYYY-MM-DD-hh-mm-ss-cc
@*
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
@*
@ -2527,6 +2536,20 @@ records.
Permissible are up to 37 characters. This setting gets overridden by
image loading.
@c man .TP
@item -preparer_id
@kindex -preparer_id sets preparer id
@cindex Image, set preparer id, -preparer_id
Set the preparer id string to be written with the next -commit. This may
identify the person or other entity which controls the preparation of the data
which shall be recorded. Normally this should be the id of xorriso and not
of the person or program which operates xorriso. Please avoid to change it.
Permissible are up to 128 characters.
@*
The special text "@@xorriso@@" gets converted to the id string of xorriso
which is default at program startup.
@*
Unlike other id strings, this setting is not influenced by image loading.
@c man .TP
@item -out_charset character_set_name
@kindex -out_charset sets output character set
@cindex Character Set, for output, -out_charset
@ -2654,9 +2677,9 @@ xorriso adds the traditional 300k of padding by default to all images.
For images which will never get to a CD it is safe to use -padding 0 .
@end table
@c man .TP
@c man .B El Torito bootable ISO images:
@node Bootable, Charset, SetWrite, Options
@section El Torito bootable ISO images
@c man .B Bootable ISO images:
@node Bootable, Jigdo, SetWrite, Options
@section Bootable ISO images
@c man .PP
Contrary to published specifications many BIOSes will load an El Torito
record from the first session on media and not from the last one, which
@ -2673,6 +2696,14 @@ it is advised to patch it
when a follow-up session gets written. But one should not rely on the
capability to influence the bootability of the existing sessions, unless one
can assume overwriteable media.
@*
There are booting mechanisms which do not use an El Torito record but rather
start at the first bytes of the image: PC-BIOS MBR for hard-disk-like devices,
MIPS Volume Header for old SGI computers, DEC Boot Block for old DECstation.
@*
The boot firmware EFI may use programs which are located in a FAT filesystem
and announced by an MBR partition table entry.
@*
@table @asis
@sp 1
@c man .TP
@ -2752,13 +2783,6 @@ which bundles these individual settings:
@*
-boot_image any boot_info_table=on
@*
@strong{bin_path=} depicts the boot image file, a binary program which is to be
started by the hardware boot facility (e.g. the BIOS) at boot time.
@*
@strong{efi_path=} depicts a boot image file that is ready for EFI booting.
Its load_size is determined automatically, no boot info table gets
written, platform_id is 0xef.
@*
An El Torito boot catalog file gets inserted into the ISO image with address
@strong{cat_path=} at -commit time.
It is subject to normal -overwrite and -reassure processing if there is already
@ -2768,6 +2792,17 @@ one of the boot images. But it is not necessary that it appears in the
directory tree at all. One may hide it in all trees by @strong{cat_hidden=on}.
Other possible values are "iso_rr", "joliet", and the default "off".
@*
@strong{bin_path=} depicts a boot image file, a binary program which is to be
started by the hardware boot facility (e.g. the BIOS) at boot time.
@*
@strong{efi_path=} depicts a boot image file that is ready for EFI booting.
Its load_size is determined automatically, no boot info table gets
written, no boot media gets emulated, platform_id is 0xef.
@*
@strong{emul_type=} can be one of "no_emulation", "hard_disk", "diskette".
It controls the boot media emulation code of a boot image.
The default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD cdboot.
@*
@strong{load_size=} is a value which depends on the boot image.
Default 2048 should be overridden only if a better value is known.
@*
@ -2835,10 +2870,178 @@ then those parameters get updated when the new System Area is written.
Special "system_area=/dev/zero" causes 32k of NUL-bytes.
Use this to discard an MBR which eventually was loaded with the ISO image.
@*
@cindex Partition offset, _definiton
@strong{partition_offset=}2kb_block_adr causes a partition table with a single
partition that begins at the given block address. This is counted in 2048 byte
blocks, not in 512 byte blocks. If the block address is non-zero then it must
be at least 16. A non-zero partition offset causes two superblocks to be
generated and two sets of directory trees. The image is then mountable from its
absolute start as well as from the partition start.
@*
The offset value of an ISO image gets preserved when a new session is added.
So the value defined here is only in effect if a new ISO image gets written.
@*
@strong{partition_sec_hd=}number gives the number of sectors per head for
partition offset. 0 chooses a default value.
@*
@strong{partition_hd_cyl=}number gives the number of heads per cylinder for
partition offset. 0 chooses a default value.
@*
@cindex MIPS boot file, activation
@strong{mips_path=}iso_rr_path declares a data file in the image to be a
MIPS Big Endian boot file. Enable production of a MIPS Big Endian Volume
Header. This is mutually exclusive with MBR production and mipsel_path=.
It will overwrite the first 512 bytes of any data eventually provided by
system_area=.
Up to 15 boot files can be declared by mips_path=.
@*
@strong{mipsel_path=}iso_rr_path declares a data file in the image to be the
MIPS Little Endian boot file. This is mutually exclusive with MBR production
and mips_path=. It will overwrite the first 512 bytes of any data eventually
provided by system_area=.
Only a single boot file can be declared by mipsel_path=.
@*
@strong{mips_discard} revokes any boot file declarations made by mips_path=.
This removes the ban on MBR production.
@*
@end table
@*
@table @asis
@sp 1
@c man .TP
@item -append_partition partition_number type_code disk_path
@kindex -append_partition adds arbitrary file after image end
@cindex Appended Filesystem Image, -append_partition
Cause a prepared filesystem image to be appended to the ISO image and to be
described by a partition table entry in an MBR at the start of the emerging
ISO image. The partition entry will bear the size of the submitted file
rounded up to the next multiple of 2048 bytes.
@*
Beware of subsequent multi-session runs. The appended partition will get
overwritten.
@*
partition_number may be 1 to 4. Number 1 will put the whole ISO image into
the unclaimed space before partition 1. So together with most xorriso MBR
features, number 2 would be the most natural choice.
@*
The type_code may be "FAT12", "FAT16", "Linux",
or a hexadecimal number between 0x00 and 0xff. Not all those numbers will
yield usable results. For a list of codes search the Internet for
"Partition Types" or run fdisk command "L".
@*
The disk_path must provide the necessary data bytes at commit time.
An empty disk_path disables this feature for the given partition number.
@end table
@c man .TP
@c man .B Jigdo Template Extraction:
@node Jigdo, Charset, Bootable, Options
@section Jigdo Template Extraction
@c man .PP
@cindex Jigdo Template Extraction, _definition
From man genisoimage:
"Jigdo is a tool to help in the distribution of large files like CD and
DVD images; see http://atterer.net/jigdo/ for more details. Debian CDs
and DVD ISO images are published on the web in jigdo format to allow
end users to download them more efficiently."
@*
xorriso can produce a .jigdo and a .template file together with a
single-session ISO image.
The .jigdo file contains checksums and symbolic file addresses.
The .template file contains the compressed ISO image with reference tags
instead of the content bytes of the listed files.
@*
Input for this process are the normal arguments for a xorriso session
on a blank -outdev, and a .md5 file which lists those data files which may be
listed in the .jigdo file and externally referenced in the .template file.
Each designated file is represented in the .md5 file by a single text line:
@*
MD5 as 32 hex digits, 2 blanks, size as 12 decimal digits or blanks, 2 blanks,
symbolic file address
@*
The file address in an .md5 line has to bear the same basename as the
disk_path of the file which it shall match. The directory path of
the file address is decisive for To=From mapping, not for file recognition.
After eventual To=From mapping, the file address gets written into the .jigdo
file. Jigdo restore tools will convert these addresses into really
reachable data source addresses from which they can read.
@*
If the list of jigdo parameters is not empty, then xorriso will refuse to
write to non-blank targets, it will disable multi-session emulation, and
eventual padding will be counted as part of the ISO image.
@*
@table @asis
@sp 1
@c man .TP
@item -jigdo parameter_name value
@kindex -jigdo clears JTE or sets input/output character set
@cindex Jigdo Template Extraction, -jigdo
Clear Jigdo Template Extraction parameter list or add a parameter to that list.
The alias names are the corresponding genisoimage options. They are accepted
as parameter names as well. Especially they are recognized by the -as mkisofs
emulation command.
@*
Parameter @strong{clear} with any value empties the whole list.
No .jigdo and .template file will be produced.
@*
@strong{template_path} sets the disk_path for the .template file with the
holed and compressed ISO image copy.
@*
Alias: -jigdo-template
@*
@strong{jigdo_path} sets the disk_path for the .jigdo file with the checksums
and download addresses for filling the holes in .template.
@*
Alias: -jigdo-jigdo
@*
@strong{md5_path} sets the disk_path where to find the .md5 input file.
@*
Alias: -md5-list
@*
@strong{min_size} sets the minimum size for a data file to be listed
in the .jigdo file and being a hole in the .template file.
@*
Alias: -jigdo-min-file-size
@*
@strong{exclude} adds a regular expression pattern which will get compared
with the absolute disk_path of any data file. A match causes the file to
stay in .template in any case.
@*
Alias: -jigdo-exclude
@*
@strong{demand_md5} adds a regular expression pattern which will get compared
with the absolute disk_path of any data file that was not found in the .md5
list. A match causes a MISHAP event.
@*
Alias: -jigdo-force-md5
@*
@strong{mapping} adds a string pair of the form To=From to the parameter list.
If a data file gets listed in the .jigdo file, then it is referred by the
file address from its line in the .md5 file. This file address gets checked
whether it begins with the From string. If so, then this string will be
replaced by the To string and a ':' character, before it goes into the .jigdo
file. The From string should end by a '/' character.
@*
Alias: -jigdo-map
@*
@strong{compression} chooses one of "bzip2" or "gzip" for the compression of
the template file. The jigdo file is put out uncompressed.
@*
Alias: -jigdo-template-compress
@*
@strong{checksum_iso} chooses one or more of "md5", "sha1", "sha256", "sha512"
for the auxiliary "# Image Hex" checksums in the jigdo file. The value may e.g.
look like "md5,sha1,sha512". Value "all" chooses all available algorithms.
Note that MD5 stays always enabled.
@*
Alias: -checksum_algorithm_iso
@*
@strong{checksum_template} is like checksum_iso but for "# Template Hex".
@*
Alias: -checksum_algorithm_template
@end table
@c man .TP
@c man .B Character sets:
@node Charset, Exception, Bootable, Options
@node Charset, Exception, Jigdo, Options
@section Character sets
@c man .PP
@cindex Character Set, _definition
@ -3885,15 +4088,34 @@ of all regular files underneath directory iso_rr_path.
Adopted from grub-mkisofs are @minus{}@minus{}protective-msdos-label
(see -boot_image grub partition_table=on) and
@minus{}@minus{}modification-date=YYYYMMDDhhmmsscc
(see -volume_date uuid). For EFI bootable GRUB boot images use --efi-boot.
It performs -boot_image grub efi_path= surrounded by two -boot_image any next.
(see -volume_date uuid). For EFI bootable GRUB boot images use
@minus{}@minus{}efi-boot.
It performs @minus{}boot_image grub efi_path= surrounded by two
@minus{}boot_image "any" "next".
Alternative option @minus{}e from Fedora genisoimage sets bin_path and
platform_id for EFI, but performs no "next".
@*
For MBR bootable ISOLINUX images there is -isohybrid-mbr FILE, where
FILE is one of the Syslinux files mbr/isohdp[fp]x*.bin . Use this
instead of -G to apply the effect of -boot_image isolinux partition_table=on.
@*
--boot-catalog-hide is -boot_image any cat_hidden=on.
@minus{}@minus{}boot-catalog-hide is -boot_image any cat_hidden=on.
@*
@minus{}mips-boot is the same as -boot_image any mips_path= .
@*
@minus{}mipsel-boot leads to mipsel_path= .
@*
@minus{}partition_offset number is
@minus{}boot_image any partition_offset=number.
@*
Option @minus{}append_partition is supported.
@*
The options of genisoimage Jigdo Template Extraction are recognized and
performed via xorriso option -jigdo. See the "Alias:" names there for the
meaning of the genisoimage options.
@*
@sp 1
Personalites "@strong{xorrisofs}", "@strong{genisoimage}",
and "@strong{genisofs}" are aliases for "mkisofs".
@*
@ -3954,11 +4176,11 @@ From then on, options are interpreted as xorriso options.
@kindex -read_mkisofsrc searches and reads .mkisofsrc file
@cindex Emulation, .mkisofsrc, -read_mkisofsrc
Try one by one to open for reading:
./.mkisofsrc , $MKISOFSRC , $HOME/.mkisofsrc , $(basename $0)/.mkisofs
./.mkisofsrc , $MKISOFSRC , $HOME/.mkisofsrc , $(dirname $0)/.mkisofsrc
@*
On success interpret the file content as of man mkisofs CONFIGURATION,
and end this command. Do not try further files.
The last address is used only if start argument 0 has a non-trivial basename.
The last address is used only if start argument 0 has a non-trivial dirname.
@*
The reader currently interprets the following NAME=VALUE pairs:
APPI (-application_id) , PUBL (-publisher) , SYSI (-system_id) ,

View File

@ -59,7 +59,7 @@ Images or add-on sessions may be written to about any kind of file object.
<DD>With kernel 2.6 ide-scsi is not needed.</DD>
<DT>or FreeBSD, libc, libpthread :</DT>
<DD>PATA/IDE drives need atapicam running.</DD>
<DD>SATA drives need atapicam or ahci running.</DD>
<DD>SATA drives need atapicam running or need to be driven by ahci.</DD>
<DD>libcam has to be installed.</DD>
<DD>libiconv has to be installed.</DD>
<DT>or Solaris, libc, libpthread :</DT>
@ -82,7 +82,9 @@ but rather not with CD, DVD-R, DVD+R, BD-R.
<DT>libacl and libacl-devel</DT>
<DD>eventually allow on GNU/Linux to get and set ACLs.</DD>
<DT>zlib and zlib-devel</DT>
<DD>eventually allow zisofs and gzip compression.</DD>
<DD>eventually allow zisofs, gzip compression, and Jigdo file production.</DD>
<DT>libbz2 and libbz2-devel</DT>
<DD>eventually allow bzip2 compression of Jigdo template files.</DD>
</DL>
</P>
@ -142,7 +144,8 @@ Scans for optical drives, blanks re-useable optical media, formats media.
</LI>
<LI>
Suitable for:
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-R, BD-RE.
CD-R, CD-RW, DVD-R, DVD-R DL, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM,
BD-R, BD-RE.
</LI>
<LI>
Reads its instructions from command line arguments, dialog, and batch files.
@ -439,19 +442,19 @@ files or trees to disk:
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
<DD><A HREF="xorriso-0.6.0.tar.gz">xorriso-0.6.0.tar.gz</A>
(1650 KB).
<DD><A HREF="xorriso-0.6.4.tar.gz">xorriso-0.6.4.tar.gz</A>
(1670 KB).
</DD>
<DD>(Released 02 Jul 2010)</DD>
<DD><A HREF="xorriso-0.6.0.tar.gz.sig">xorriso-0.6.0.tar.gz.sig</A></DD>
<DD>(Released 26 Oct 2010)</DD>
<DD><A HREF="xorriso-0.6.4.tar.gz.sig">xorriso-0.6.4.tar.gz.sig</A></DD>
<DD>
(detached GPG signature for verification by
<KBD>gpg --verify xorriso-0.6.0.tar.gz.sig xorriso-0.6.0.tar.gz</KBD>).
<KBD>gpg --verify xorriso-0.6.4.tar.gz.sig xorriso-0.6.4.tar.gz</KBD>).
</DD>
<DD>
Also on <A HREF="http://www.gnu.org/prep/ftp.html">
mirrors of ftp://ftp.gnu.org/gnu/ </A>
as xorriso/xorriso-0.6.0.tar.gz
as xorriso/xorriso-0.6.4.tar.gz
</DD>
</DL>
</DD>
@ -479,10 +482,9 @@ as xorriso/xorriso-0.6.0.tar.gz
<HR>
<P>
Bug fixes towards xorriso-0.5.8:
Bug fixes towards xorriso-0.6.2:
<UL>
<LI>-check_media patch_lba0= could install wrong image size</LI>
<LI>-as mkisofs option -volset was wrongly interpreted like -volid</LI>
<LI>- none -</LI>
<!--
<LI>- none -</LI>
-->
@ -500,26 +502,23 @@ Bug fixes in .pl01 towards xorriso-:
-->
<P>
Enhancements towards previous stable version xorriso-0.5.8:
Enhancements towards previous stable version xorriso-0.6.2:
<UL>
<LI>Enabled use of libreadline on Solaris</LI>
<LI>New find test -disk_name</LI>
<LI>New option -hide, -find action -hide, -find test -hidden</LI>
<LI>New -boot_image bootspec cat_hidden=on</LI>
<LI>
New options -copyright_file , -biblio_file , -abstract_file
New option -jigdo
</LI>
<LI>
New option -read_mkisofsrc interprets .mkisofsrc
New -as mkisofs options -jigdo-* , -md5-list , -checksum_algorithm_* as of genisoimage
</LI>
<LI>
Implemented -as mkisofs options -hide, -hide-joliet, -hide-list, -hide-joliet-list
New bootspecs mips_path= and mipsel_path= for Debian MIPS releases
</LI>
<LI>
New -as mkisofs option --boot-catalog-hide
New -as mkisofs options -mips-boot and -mipsel-boot
</LI>
<LI>
Implemented -as mkisofs options -dir-mode, -file-mode, -abstract, -biblio, -copyright
New option -append_partition, -as mkisofs -append_partition
</LI>
<!--
@ -532,34 +531,38 @@ Implemented -as mkisofs options -dir-mode, -file-mode, -abstract, -biblio, -copy
<P>
<H3>
Libburnia software copies included in GNU xorriso:
Software copies included in GNU xorriso:
</H3>
<DL>
<DT>
GNU xorriso is feature-wise equivalent to the dynamic compilation of
<A HREF="http://libburnia-project.org/"> libburnia </A>
libraries and libburnia program xorriso.
libraries, libjte, and libburnia program xorriso.
It restricts itself to a technical form where the legal commitments of the
libburnia project and the legal intentions of
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
</DT>
<DD>&nbsp;</DD>
<DT>libburn-0.8.5</DT>
<DT>libburn-0.8.9</DT>
<DD>reads and writes data from and to CD, DVD, BD.</DD>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)</DD>
<DT>libisofs-0.6.35</DT>
<DT>libisofs-0.6.39</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libisoburn-0.6.0</DT>
<DT>libisoburn-0.6.4</DT>
<DD>coordinates libburn and libisofs, emulates multi-session where needed,
and hosts the original source code of program xorriso.</DD>
<DD>It provides the complete functionality of xorriso via
a C language API.</DD>
<DD>(By Vreixo Formoso and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libjte-0.1.1</DT>
<DD>produces jigdo and template file together with the emerging ISO image.</DD>
<DD>(By Free Software Foundation, Steve McIntyre, George Danchev,
Thomas Schmitt)</DD>
<DD>&nbsp;</DD>
<DT>The source code of this software is independent of
cdrecord and mkisofs.</DT>
@ -570,8 +573,8 @@ cdrecord and mkisofs.</DT>
<P>
<DL>
<DT><H3>Development snapshot, version 0.6.1 :</H3></DT>
<DD>Bug fixes towards xorriso-0.6.0:
<DT><H3>Development snapshot, version 0.6.5 :</H3></DT>
<DD>Bug fixes towards xorriso-0.6.4:
<UL>
<LI>- none yet -</LI>
<!--
@ -579,18 +582,22 @@ cdrecord and mkisofs.</DT>
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.6.0:
<DD>Enhancements towards stable version 0.6.4:
<UL>
<LI>- none yet -</LI>
<!--
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.6.1</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.6.1 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.6.1)</A></DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.6.5</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.6.5 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.6.5)</A></DD>
<DD>&nbsp;</DD>
<DT>If you want to distribute development versions of xorriso, then use
this tarball which produces static linking between xorriso and the
@ -600,14 +607,15 @@ libburnia libraries.
installation see README)
</DD>
<DD>
<A HREF="xorriso-0.6.1.tar.gz">xorriso-0.6.1.tar.gz</A>
(1650 KB).
<A HREF="xorriso-0.6.5.tar.gz">xorriso-0.6.5.tar.gz</A>
(1750 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of
<A HREF="http://libburnia-project.org"> libburnia-project.org</A>.
xorriso is part of libisoburn/trunk and will get built by its "make".
</DT>
<DT>Be warned that the libraries in SVN and bzr are development versions with
possibly unstable API/ABI enhancements. Do not distribute development
versions for dynamic linking. Only release versions are safe for that.
@ -629,6 +637,18 @@ versions for dynamic linking. Only release versions are safe for that.
But after the run of <KBD>./bootstrap</KBD>, only
vanilla tools like make and gcc are needed.
</DT>
<DT>GNU xorriso contains a copy of libjte-0.1.1
which produces jigdo and template file together with the emerging ISO image.
(By Free Software Foundation, Steve McIntyre, George Danchev,
Thomas Schmitt)
</DT>
<DD>Important: If desired, libjte has to be already installed when libisofs
and libisoburn get built.</DD>
<DD>Download: <KBD><B>svn co http://svn.openfmi.net/dev/people/danchev/jte libjte</B>
</KBD></DD>
<DD>Install: <KBD><B>cd libjte ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DD>&nbsp;</DD>
</DL>
</P>

View File

@ -44,6 +44,7 @@
The following overview is relevant for development but not for usage of
xorriso. An application programmer should read xorriso.h and man xorriso
resp. info xorriso, rather than diving into its source code.
For examples see the functions main() and check_compatibility() below.
--------------------------------------------------------------------------
The xorriso source is divided in two groups:
@ -110,7 +111,7 @@
*/
#define Xorriso_req_majoR 0
#define Xorriso_req_minoR 6
#define Xorriso_req_micrO 0
#define Xorriso_req_micrO 4
static void yell_xorriso()

View File

@ -32,18 +32,6 @@ xorriso_xorriso_CFLAGS =
xorriso_xorriso_LDADD = $(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
# This looks quite ugly with make install: xorriso.c is compiled twice again
#
# Trying to create a build timestamp file
#
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
# phony targets get rebuilt every time
# .PHONY: xorriso/xorriso_buildstamp.h
# xorriso/xorriso_buildstamp.h:
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
# cat xorriso/xorriso_buildstamp.h
xorriso_xorriso_SOURCES = \
\
xorriso/xorriso.h \
@ -164,6 +152,26 @@ xorriso_xorriso_SOURCES = \
libisofs/md5.h \
libisofs/md5.c \
\
libjte/libjte.h \
libjte/libjte_private.h \
libjte/libjte.c \
libjte/jte.h \
libjte/jte.c \
libjte/checksum.h \
libjte/checksum.c \
libjte/endian.c \
libjte/endianconv.h \
libjte/md5.h \
libjte/md5.c \
libjte/rsync.h \
libjte/rsync.c \
libjte/sha1.h \
libjte/sha1.c \
libjte/sha256.h \
libjte/sha256.c \
libjte/sha512.h \
libjte/sha512.c \
\
libburn/async.c \
libburn/async.h \
libburn/back_hacks.h \
@ -253,7 +261,6 @@ install-exec-hook:
# Alternative to the disabled .PHONY above.
# Trying to create a build timestamp file semi-manually: make buildstamped
#
buildstamp:
@ -283,8 +290,6 @@ indent: $(indent_files)
## ========================================================================= ##
# Extra things
# nodist_pkgconfig_DATA = \
# xorriso.pc
man_MANS = xorriso/xorriso.1

View File

@ -19,6 +19,10 @@
#define Xorriso_private_includeD yes
/* for uint32_t */
#include <stdint.h>
/** The source code release timestamp */
#include "xorriso_timestamp.h"
#ifndef Xorriso_timestamP
@ -169,6 +173,8 @@ struct XorrisO { /* the global context of xorriso */
char assert_volid[SfileadrL];
char assert_volid_sev[80];
char preparer_id[129];
char publisher[129];
char application_id[129];
char system_id[33];
@ -277,8 +283,8 @@ struct XorrisO { /* the global context of xorriso */
int boot_platform_id;
int patch_isolinux_image; /* bit0= boot-info-table , bit1= not with EFI */
int boot_image_emul; /* 0=no emulation
(1=emulation as hard disk)
(2=emulation as floppy)
1=emulation as hard disk
2=emulation as floppy
*/
off_t boot_image_load_size;
unsigned char boot_id_string[29];
@ -294,12 +300,32 @@ struct XorrisO { /* the global context of xorriso */
(a simple partition table)
bit1= isohybrid boot image pointer
and partition table
bit2-7= System area type
0= with bit0 or bit1: MBR
else: unspecified type
1= MIPS Big Endian Volume Header
2= MIPS Little Endian Boot Block
*/
int patch_system_area; /* Bits as of system_area_options.
to be applied to the loaded system
area of the image, if no
system_area_disk_path is set.
*/
/* The number of unclaimed 2K blocks before start of partition 1 as of
the MBR in system area.
If not 0 this will cause double volume descriptor sets and double tree.
*/
uint32_t partition_offset;
/* Partition table parameter: 1 to 63, 0= disabled/default */
int partition_secs_per_head;
/* 1 to 255, 0= disabled/default */
int partition_heads_per_cyl;
/* Path and type of image files to be appended as MBR partitions */
char appended_partitions[4][SfileadrL];
uint8_t appended_part_types[4];
/* User settable PVD time stamps */
time_t vol_creation_time;
time_t vol_modification_time;
@ -309,6 +335,16 @@ struct XorrisO { /* the global context of xorriso */
and timezone 0 */
char vol_uuid[17];
#ifdef Xorriso_with_libjtE
/* Parameters and state of Jigdo Template Export environment */
struct libjte_env *libjte_handle;
#endif
/* List of -jigdo parameters since the most recent -jigdo clear */
struct Xorriso_lsT *jigdo_params;
struct Xorriso_lsT *jigdo_values;
/* LBA of boot image after image loading */
int loaded_boot_bin_lba;
/* Path of the catalog node after image loading */

View File

@ -1 +1 @@
#define Xorriso_timestamP "2010.07.02.090001"
#define Xorriso_timestamP "2010.10.26.100001"

View File

@ -19,7 +19,7 @@
*/
#define xorriso_libisoburn_req_major 0
#define xorriso_libisoburn_req_minor 6
#define xorriso_libisoburn_req_micro 0
#define xorriso_libisoburn_req_micro 4
struct SpotlisT; /* List of intervals with different read qualities */
@ -512,12 +512,21 @@ int Xorriso_attach_boot_image(struct XorrisO *xorriso, int flag);
int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
int Xorriso_add_mips_boot_file(struct XorrisO *xorriso, char *path, int flag);
int Xorriso_coordinate_system_area(struct XorrisO *xorriso, int sa_type,
int options, char *cmd, int flag);
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
For now take the highest possible value.
*/
#define Xorriso_IFBOOT S_IFMT
int Exprtest_match(struct XorrisO *xorriso, struct ExprtesT *ftest,
void *node_pt, char *name, char *path,
struct stat *boss_stbuf, struct stat *stbuf, int flag);
@ -534,5 +543,14 @@ int Xorriso_set_system_area_path(struct XorrisO *xorriso, char *path,
int Xorriso_set_hidden(struct XorrisO *xorriso, void *in_node, char *path,
int hide_state, int flag);
/* @param flag bit0= avoid library calls
*/
int Xorriso_preparer_string(struct XorrisO *xorriso, char xorriso_id[129],
int flag);
int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
int flag);
#endif /* Xorrisoburn_includeD */