Compare commits

...

70 Commits
1.0.0 ... 1.0.4

Author SHA1 Message Date
2119d66078 Promoted branch to tag 2011-03-10 14:41:02 +00:00
c5dde8b6e8 Documented changes and release timestamp 2011-03-10 10:38:09 +00:00
19e16130b0 Version leap to libisoburn-1.0.4 2011-03-10 10:34:11 +00:00
9e8098becd Branching for libisoburn release 1.0.4 2011-03-10 09:30:32 +00:00
c8fcb2fb3d HTML version of man xorrisofs 2011-03-10 07:15:51 +00:00
c1a24e71f1 Corrections and updates of documentation 2011-03-09 12:48:21 +00:00
0577b487d9 Marked options introduced since 0.5.8 by the promised @since tags 2011-03-09 12:38:37 +00:00
f7c8dbe10e Updated partition offset wiki 2011-03-09 11:01:48 +00:00
060484494d New -md5 modes load_check_off and load_check_on 2011-03-09 07:14:49 +00:00
a08a753967 New isoburn_ropt_set_extensions() option isoburn_ropt_nomd5tag 2011-03-09 07:13:12 +00:00
ed27d542e0 Updated change log and web page 2011-03-07 12:36:30 +00:00
52c641d93c Bug fix: -as mkisofs did not properly unescape target part of pathspecs 2011-03-07 10:15:39 +00:00
1c1e86f168 Polished xorrisofs documentation 2011-03-06 18:37:52 +00:00
ab8265b042 Helptext of -as mkisofs now points to man xorrisofs 2011-03-06 15:37:30 +00:00
9c5b98ae5c Mentioned man xorrisofs in man xorriso 2011-03-05 17:42:25 +00:00
5cc7fe5315 Own man page and info document for xorrisofs 2011-03-05 14:15:32 +00:00
91f8c60f5b New -as mkisofs and -as cdrecord option --no_rc 2011-03-05 09:04:23 +00:00
b9d8bbb9bb Updated change log and web page 2011-03-04 14:21:13 +00:00
fcd2f36fb8 Clarifications about cylinder size and alignment 2011-03-04 10:46:40 +00:00
7a7f234b69 Updated documentation 2011-03-03 18:20:12 +00:00
8c9c620700 New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align 2011-03-03 18:18:41 +00:00
558e2314ee New bits 8 and 9 with options of isoburn_igopt_set_system_area() 2011-03-03 18:16:18 +00:00
d666142388 Updated change log and web page 2011-03-02 10:09:40 +00:00
52988adee6 Updated documentation 2011-03-02 09:45:02 +00:00
de078d2749 New -padding modes "included" and "excluded" 2011-03-02 09:40:37 +00:00
65ca294357 Counting padding as part of the image with -as mkisofs 2011-03-02 09:30:10 +00:00
508adfd2f4 Installed a test against non-zero msc1 on blank input drives 2011-03-01 15:22:05 +00:00
452c9685e7 Bug fix: -as mkisofs -C attempts to read volume header of blank media 2011-03-01 14:51:17 +00:00
39c3fc6da1 When producing man page from texi: substitute @minus{} within @item 2011-02-28 21:36:25 +00:00
475e8fdea0 Bug fix: -as mkisofs -partition_hd_cyl had no effect 2011-02-28 19:08:33 +00:00
420535c275 Bug fix: -as mkisofs -old-root did not work with -graft-points 2011-02-26 10:01:52 +00:00
9049784c1c Corrected flaws found by George Danchev with cpp 2011-02-24 19:20:17 +00:00
963d139093 Corrected a flaw found by George Danchev with cpp 2011-02-24 19:18:58 +00:00
32ee757c91 Documented changes and release timestamp 2011-02-23 20:32:22 +00:00
cd74e84fb8 Version leap to libisoburn-1.0.3 2011-02-23 20:31:01 +00:00
bae04a58a9 Updated change log 2011-02-22 19:56:13 +00:00
aed7a2cf05 New -as mkisofs option -max-iso9660-filenames 2011-02-22 14:31:23 +00:00
df52dd1333 Made -as mkisofs ignore option -disable-deep-relocation rather than failing 2011-02-22 12:39:16 +00:00
15a93611c6 Corrected a bug that prevented -as mkisofs option -output 2011-02-22 07:36:42 +00:00
4aa7c45c42 Issueing messages with -clone and -cp_clone 2011-02-22 07:34:56 +00:00
79bf6a4a4e Correction about -as mkisofs --old-root-no-ino 2011-02-21 13:07:33 +00:00
58f4c2e9d6 info document and man page for recent texi corrections 2011-02-19 11:48:43 +00:00
e0754219aa Updated change log 2011-02-19 11:47:51 +00:00
700d1eaf7f Corrections in xorriso man page 2011-02-19 11:25:33 +00:00
cf986cf5d1 Updated copyright 2011-02-19 11:24:32 +00:00
bf199a105c Small adjustments in mkisofs emulation 2011-02-19 11:22:44 +00:00
ed804db458 Updated change log 2011-02-14 17:48:47 +00:00
1ad7e71e24 Closed memory leaks detected by valgrind 2011-02-14 13:15:04 +00:00
37688470e1 Reacted on compiler warning about uninitialized variable 2011-02-12 17:29:20 +00:00
26a6a24093 New -find actions update_merge, rm_merge, clear_merge. -cp_clone now merges. 2011-02-12 17:14:23 +00:00
4642148e6f -as mkisofs: Enabled reading of xattr and md5 before image loading 2011-02-08 13:36:42 +00:00
92b0079a23 Some corrections of the previous commit 2011-02-07 20:28:50 +00:00
0431d89738 New -as mkisofs options -root , -old-root, --old-root-no-md5, --old-root-no-ino, --old-root-dev 2011-02-07 18:43:06 +00:00
08e439c48d Do not regard file as changed just because no ino was recorded 2011-02-07 18:29:41 +00:00
ddecb74f6e New option -cp_clone 2011-02-04 19:19:24 +00:00
435cd88e83 Disallowed -clone to overwrite existing nodes 2011-02-02 17:41:52 +00:00
aae50b2d16 New option -clone 2011-02-01 18:58:27 +00:00
1ceb1097e1 Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer 2011-01-31 14:05:58 +00:00
b8788e5f9e New -as mkisofs option --old-empty 2011-01-26 21:04:15 +00:00
b4be60ecb3 Followed name change in the yet unstable part of libisofs API 2011-01-26 18:44:24 +00:00
e0bb9195d8 Requiring libisofs-1.0.1 now 2011-01-26 13:32:31 +00:00
96433fd145 New -compliance option old_empty 2011-01-26 13:31:05 +00:00
c4c52cf0e9 New isoburn_igopt_set_extensions() option isoburn_igopt_old_empty 2011-01-26 13:28:42 +00:00
be691d4f81 Mentioned missing mkisofs -old-root functionality in man page 2011-01-19 11:41:45 +00:00
cb0f18cc0a Small change in FAQ wiki text 2011-01-18 21:39:41 +00:00
5b386c57a3 Avoiding <stdint.h> if not available. Trying to use <inttypes.h> in that case. 2011-01-18 15:47:18 +00:00
2e447207a8 Avoiding <stdint.h> if not available. Trying to use <inttypes.h> in that case. 2011-01-18 15:44:44 +00:00
62e5f84fc5 Documented changes and release timestamp 2011-01-17 09:27:09 +00:00
509d00149f Version leap to libisoburn-1.0.1 2011-01-17 09:25:21 +00:00
02e15f015f Updated copyright messages to 2011 2011-01-16 19:33:24 +00:00
56 changed files with 8276 additions and 679 deletions

View File

@ -1,4 +1,44 @@
SVN trunk (to become libisoburn-0.6.8.pl00.tar.gz)
SVN trunk (to become libisoburn-1.0.6.pl00.tar.gz)
===============================================================================
- no novelties yet
libisoburn-1.0.4.pl00.tar.gz Thu Mar 10 2011
===============================================================================
libisoburn novelties:
* New isoburn_ropt_set_extensions() option isoburn_ropt_nomd5tag
xorriso novelties:
* Bug fix: xorrisofs did not work under growisofs -M (version 1.0.0 was ok)
* Bug fix: -as mkisofs -C attempted to read volume header of blank media
* Bug fix: -as mkisofs -old-root did not work with -graft-points
* Bug fix: -as mkisofs -partition_hd_cyl had no effect
* Bug fix: -as mkisofs did not properly unescape target part of pathspecs
* Bug fix: isohybrid image size was not aligned to cylinder boundary
* Bug fix: Compilation without zlib failed
* New -padding modes "included" and "appended"
* New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align
* New -as mkisofs and -as cdrecord option --no_rc
* Own man page and info document for xorrisofs
libisoburn-1.0.2.pl00.tar.gz Mon Feb 23 2011
===============================================================================
libisoburn novelties:
* Removed compiler obstacles of GNU xorriso on Solaris 9
* New isoburn_igopt_set_extensions() option isoburn_igopt_old_empty
xorriso novelties:
* Bug fix: Images produced with -for_backup might be unreadable and
also fail -check_md5 verification.
* Bug fix: mkisofs emulation options -l , -full-iso9660-filenames did not work.
* Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer
* Bug fix: ECMA-119 standards violation with Volume Descriptor Set Terminator
* New options -clone and -cp_clone
* New -find actions update_merge, rm_merge, clear_merge
* New -as mkisofs option -max-iso9660-filenames
* New -as mkisofs option --old-empty
* New -as mkisofs options -root , -old-root
* New -as mkisofs options --old-root-no-md5, --old-root-no-ino, --old-root-dev
libisoburn-1.0.0.pl00.tar.gz Mon Jan 17 2011
===============================================================================
libisoburn novelties:
* New API call isoburn_igopt_set_untranslated_name_len()
@ -68,7 +108,7 @@ xorriso novelties:
* 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 options -copyright_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

View File

@ -219,9 +219,13 @@ indent: $(indent_files)
nodist_pkgconfig_DATA = \
libisoburn-1.pc
man_MANS = xorriso/xorriso.1
man_MANS = \
xorriso/xorriso.1 \
xorriso/xorrisofs.1
info_TEXINFOS = xorriso/xorriso.texi
info_TEXINFOS = \
xorriso/xorriso.texi \
xorriso/xorrisofs.texi
EXTRA_DIST = \
libisoburn-1.pc.in \

19
README
View File

@ -4,8 +4,8 @@
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.6.pl00.tar.gz
Copyright (C) 2006-2010 Vreixo Formoso, Thomas Schmitt.
http://files.libburnia-project.org/releases/libisoburn-1.0.4.pl00.tar.gz
Copyright (C) 2006-2011 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.6 :
- libburn.so.4 , version libburn-0.8.8 or higher
- libisofs.so.6 , version libisofs-0.6.40 or higher
Dynamic library and compile time header requirements for libisoburn-1.0.4 :
- libburn.so.4 , version libburn-1.0.4 or higher
- libisofs.so.6 , version libisofs-1.0.4 or higher
libisoburn and xorriso will not start with libraries which are older than their
include headers seen at compile time.
Obtain libisoburn-0.6.6.pl00.tar.gz, take it to a directory of your choice
Obtain libisoburn-1.0.4.pl00.tar.gz, take it to a directory of your choice
and do:
tar xzf libisoburn-0.6.6.pl00.tar.gz
cd libisoburn-0.6.6
tar xzf libisoburn-1.0.4.pl00.tar.gz
cd libisoburn-1.0.4
Within that directory execute:
@ -81,6 +81,7 @@ xorriso binary depending on libburn.so, libisofs.so, libisoburn.so.
After installation documentation is available via
man xorriso
man xorrisofs
Several alias links point to the xorriso binary:
xorrisofs starts xorriso with -as mkisofs emulation already enabled
@ -224,7 +225,7 @@ libburnia-project.org
By Mario Danic <mario.danic@gmail.com>,
Vreixo Formoso <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
Copyright (C) 2006-2010 Mario Danic, Vreixo Formoso, Thomas Schmitt.
Copyright (C) 2006-2011 Mario Danic, Vreixo Formoso, Thomas Schmitt.
We will not raise any legal protest to dynamic linking of our libraries
with applications that are not under GPL, as long as they fulfill

View File

@ -1,4 +1,4 @@
AC_INIT([libisoburn], [0.6.7], [http://libburnia-project.org])
AC_INIT([libisoburn], [1.0.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -21,9 +21,9 @@ dnl configure.ac only rules the libtool revision numbering about
dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
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=7
ISOBURN_MAJOR_VERSION=1
ISOBURN_MINOR_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 B01212
dnl ### This is the release version 0.6.6 = libisoburn.so.1.55.0
dnl This is the development version after above stable release
dnl ts B10103
dnl This is the release version 1.0.4 = libisoburn.so.1.61.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 = 56 - 55 = 1 . Library name = libisoburn.so.1.55.0
dnl SONAME = 62 - 61 = 1 . Library name = libisoburn.so.1.61.0
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
LT_CURRENT=56
LT_AGE=55
LT_CURRENT=62
LT_AGE=61
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -302,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=1.0.0
LIBISOFS_REQUIRED=1.0.0
LIBBURN_REQUIRED=1.0.4
LIBISOFS_REQUIRED=1.0.4
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)

View File

@ -18,7 +18,7 @@ Imaging:
[#boot_arch For which architectures xorriso is able to create bootable images ?]
[#isohybrid What is isohybrid MBR useful for ?]
[#isohybrid How to enable booting from USB stick ?]
[#partition_offset What is partition offset feature all about?]
@ -43,7 +43,7 @@ Miscellaneous:
===== What is the difference between cdrskin and xorriso ? ===== #diff_cdrskin_xorriso
[wiki:Cdrskin cdrskin] is a dedicated emulator of program cdrecord, based on
libburn. It tries to be as similar as cdrecord as is possible under that
libburn. It tries to be as similar to cdrecord as is possible under that
premise.
[wiki:Xorriso xorriso] is an integrated tool which creates, loads, manipulates,
@ -79,9 +79,9 @@ Machines which support EFI may either boot via El Torito or use the files
of the ISO image directly. It is possible to append to the ISO image a
writeable FAT12 partition where files for EFI may be stored and changed.
===== What is isohybrid MBR useful for ? ===== #isohybrid
===== How to enable booting from USB stick ? ===== #isohybrid
The ISOLINUX boot manager system is normally started from CD, DVD or BD media
The ISOLINUX boot loader is normally started from CD, DVD or BD media
by a PC-BIOS via an El Torito boot record. But if the ISO image resides on an
USB stick or another hard-disk-like device, then PC-BIOS ignores El Torito
and rather expects a Master Boot Record (MBR). Both boot record types can

View File

@ -46,6 +46,10 @@ 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
}}}
Normally the System Area file with its MBR is provided by the Syslinux
installation under the name isohdp[fp]x*.bin .
E.g. /usr/lib/syslinux/isohdpfx.bin
The files of the image are made accessible for reading
{{{
mount -o loop RIPLinux-9.3-non-X.iso /mnt
@ -78,7 +82,7 @@ and plugged into a Debian system.
yields
{{{
Device Boot Start End Blocks Id System
/dev/sdb1 * 64 119215 59576 17 Hidden HPFS/NTFS
/dev/sdb1 * 64 120831 60384 17 Hidden HPFS/NTFS
}}}
I can mount /dev/sdb and /dev/sdb1 alike:
@ -154,16 +158,6 @@ 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:

View File

@ -6,7 +6,7 @@
*/
/* libburn wrappers for libisoburn
Copyright 2007 - 2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007 - 2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
*/
@ -1723,6 +1723,7 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
static int max_mode_names= 4;
regex_t re;
regmatch_t match[1];
enum burn_disc_status s;
ret= isoburn_find_emulator(&o, d, 0);
if(ret<0)
@ -1783,6 +1784,14 @@ not_found:;
} else if(adr_mode==3) {
o->fabricated_msc1= adr_num;
s= isoburn_disc_get_status(d);
if(o->fabricated_msc1 > 0 && s != BURN_DISC_FULL
&& s != BURN_DISC_APPENDABLE) {
isoburn_msgs_submit(o, 0x00060000,
"Non-zero load offset given with blank input media",
0, "FAILURE", 0);
ret= 0; goto ex;
}
if((flag & 1) && o->fabricated_msc1 >= 16) {
/* adr_num is possibly 16 blocks too high */
ret= isoburn_read_iso_head(d, o->fabricated_msc1, &size,volid, 1|(1<<14));

View File

@ -465,6 +465,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
if(opts->hardlinks)
iso_write_opts_set_rrip_1_10_px_ino(wopts, 1);
iso_write_opts_set_aaip(wopts, opts->aaip);
iso_write_opts_set_old_empty(wopts, !!opts->old_empty);
iso_write_opts_set_untranslated_name_len(wopts, opts->untranslated_name_len);
iso_write_opts_set_allow_dir_id_ext(wopts, opts->allow_dir_id_ext);
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
@ -790,7 +791,7 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
o->noacl= !!(ext & 64);
o->noea= !!(ext & 128);
o->noino= !!(ext & 256);
o->nomd5= !!(ext & 512);
o->nomd5= (ext >> 9) & 3;
return(1);
}
@ -800,7 +801,7 @@ int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext)
*ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) |
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) |
((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) |
((!!o->noino) << 8) | ((!!o->nomd5) << 9);
((!!o->noino) << 8) | ((o->nomd5 & 3) << 9);
return(1);
}
@ -934,6 +935,10 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->iso1999= 0;
o->hardlinks= 0;
o->aaip = 0;
o->session_md5= 0;
o->file_md5= 0;
o->no_emul_toc= 0;
o->old_empty= 0;
o->untranslated_name_len = 0;
o->allow_dir_id_ext = 0;
o->omit_version_numbers= 0;
@ -1020,6 +1025,7 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
o->file_md5= (ext & (128 | 256)) >> 7;
o->no_emul_toc= !!(ext & 512);
o->will_cancel= !!(ext & 1024);
o->old_empty= !!(ext & 2048);
return(1);
}
@ -1029,7 +1035,8 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext)
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) |
((!!o->hardlinks) << 3) | ((!!o->aaip) << 5) |
((!!o->session_md5) << 6) | ((o->file_md5 & 3) << 7) |
((!!o->no_emul_toc) << 9) | ((o->will_cancel) << 10);
((!!o->no_emul_toc) << 9) | ((o->will_cancel) << 10) |
((!!o->old_empty) << 11);
return(1);
}
@ -1253,7 +1260,7 @@ int isoburn_igopt_set_system_area(struct isoburn_imgen_opts *opts,
}
memcpy(opts->system_area_data, data, 32768);
}
opts->system_area_options = options & 0xff;
opts->system_area_options = options & 0x3ff;
return(1);
}

View File

@ -2,7 +2,7 @@
/*
Class struct of libisoburn.
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007 - 2011 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
Provided under GPL version 2 or later.
*/
@ -12,7 +12,13 @@
/* for uint8_t */
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#endif
/* For emulated TOC of overwriteable media.
Provides minimal info for faking a struct burn_toc_entry.
@ -292,7 +298,7 @@ struct isoburn_read_opts {
unsigned int noino:1; /* Discard eventual PX inode numbers */
/* ts A90810 */
unsigned int nomd5:1; /* Do not read eventual MD5 array */
unsigned int nomd5:2; /* Do not read eventual MD5 array */
unsigned int preferjoliet:1;
/*< When both Joliet and RR extensions are present, the RR
@ -370,7 +376,7 @@ struct isoburn_imgen_opts {
unsigned int session_md5 :1;
/* Produce and write MD5 checksums for each single IsoFile.
See parameter files of iso_write_opts_set_record_md5().
See parameter "files" of iso_write_opts_set_record_md5().
*/
unsigned int file_md5 :2;
@ -379,6 +385,13 @@ struct isoburn_imgen_opts {
*/
unsigned int no_emul_toc :1;
/* For empty files, symbolic links, and devices use the old ECMA-119 block
addresses in the range [0,31] rather than the address of the dedicated
empty block.
*/
unsigned int old_empty :1;
/* relaxed constraints */
/*

View File

@ -158,6 +158,8 @@ create_blank_image:;
isoburn_report_iso_error(ret, "Cannot create image", 0, "FATAL", 0);
return ret;
}
iso_image_set_ignore_aclea(*image,
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
} else {
/* Blank new image for the drive */
iso_image_unref(o->image);
@ -166,13 +168,13 @@ create_blank_image:;
isoburn_report_iso_error(ret, "Cannot create image", 0, "FATAL", 0);
return ret;
}
if (image) {
if (image != NULL) {
*image = o->image;
iso_image_ref(*image); /*protects object from premature free*/
}
}
iso_image_set_ignore_aclea(*image,
iso_image_set_ignore_aclea(o->image,
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
}
return 1;
}
@ -226,8 +228,13 @@ displacement_rollover:;
iso_read_opts_set_start_block(ropts, ms_block);
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
iso_read_opts_set_no_md5(ropts, read_opts->nomd5);
if(read_opts->nomd5 == 2)
int_num= 2;
else if(read_opts->nomd5 == 1)
int_num= 1;
else
int_num= 0;
iso_read_opts_set_no_md5(ropts, int_num);
iso_read_opts_set_new_inos(ropts, read_opts->noino);
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);

View File

@ -2,7 +2,7 @@
/*
Lower level API definition of libisoburn.
Copyright 2007-2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007-2011 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
Provided under GPL version 2 or later.
*/
@ -224,7 +224,7 @@ void isoburn_version(int *major, int *minor, int *micro);
*/
#define isoburn_libisofs_req_major 1
#define isoburn_libisofs_req_minor 0
#define isoburn_libisofs_req_micro 0
#define isoburn_libisofs_req_micro 4
/** The minimum version of libburn to be used with this version of libisoburn
at compile time.
@ -232,7 +232,7 @@ void isoburn_version(int *major, int *minor, int *micro);
*/
#define isoburn_libburn_req_major 1
#define isoburn_libburn_req_minor 0
#define isoburn_libburn_req_micro 0
#define isoburn_libburn_req_micro 4
/** The minimum compile time requirements of libisoburn towards libjte are
the same as of a suitable libisofs towards libjte.
@ -285,9 +285,9 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
time.
@since 0.1.0
*/
#define isoburn_header_version_major 0
#define isoburn_header_version_minor 6
#define isoburn_header_version_micro 7
#define isoburn_header_version_major 1
#define isoburn_header_version_minor 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.
@ -770,6 +770,11 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
bit9= nomd5
@since 0.4.2
Do not load the eventual MD5 checksum array.
Do not check eventual session_md5 tags.
bit10= nomd5tag
@since 1.0.4
Do not check eventual session_md5 tags although bit9
is not set.
@return 1 success, <=0 failure
*/
#define isoburn_ropt_norock 1
@ -782,6 +787,7 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
#define isoburn_ropt_noea 128
#define isoburn_ropt_noino 256
#define isoburn_ropt_nomd5 512
#define isoburn_ropt_nomd5tag 1024
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
@ -984,7 +990,8 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
can encode ACL and XFS-style Extended Attributes.
bit6= session_md5
@since 0.4.2
Produce and write a MD5 checksum of the whole session stream.
Produce and write MD5 checksum tags of superblock, directory
tree, and the whole session stream.
bit7= file_md5
@since 0.4.2
Produce and write MD5 checksums for each single IsoFile.
@ -1006,6 +1013,15 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
and that the write thread will be cancelled by
isoburn_cancel_prepared_write() before actual image writing
occurs. Without this, cancellation can cause a MISHAP event.
bit11= old_empty
@since 1.0.2
Let symbolic links and device files point to block 0, and let
empty data files point to the address of the Volume Descriptor
Set Terminator. This was done by libisofs in the past.
By default there is now a single dedicated block of zero bytes
after the end of the directory trees, of which the address
is used for all files without own content.
@return 1 success, <=0 failure
*/
#define isoburn_igopt_rockridge 1
@ -1018,6 +1034,7 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
#define isoburn_igopt_file_stability 256
#define isoburn_igopt_no_emul_toc 512
#define isoburn_igopt_will_cancel 1024
#define isoburn_igopt_old_empty 2048
int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext);
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
@ -1097,7 +1114,7 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
ISO level 1 by allowing DOS style 8.3 names rather than
only 8 characters.
(mkisofs and its clones obviously do this violation.)
@since 0.6.8
@since 1.0.0
@return 1 success, <=0 failure
*/
#define isoburn_igopt_omit_version_numbers 1
@ -1131,7 +1148,7 @@ int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax);
Currently the length limit is 96 characters, because an ECMA-119 directory
record may at most have 254 bytes and up to 158 other bytes must fit into
the record. Probably 96 more bytes can be made free for the name in future.
@since 0.6.8
@since 1.0.0
@param o The option set to work on
@param len 0 = disable this feature and perform name translation
according to other settings.
@ -1326,6 +1343,13 @@ int isoburn_igopt_get_scdbackup_tag(struct isoburn_imgen_opts *o,
numbers 2 to 8.
This will overwrite the first 512 bytes of
the submitted data.
bit8-9= Only with System area type 0 = MBR
@since 1.0.4
Cylinder alignment mode eventually pads the image
to make it end at a cylinder boundary.
0 = auto (align if bit1)
1 = always align to cylinder boundary
2 = never align to cylinder boundary
@return 1 success, 0 no data to get, <0 failure
*/

View File

@ -140,6 +140,7 @@ Xorriso_option_check_media_defaults;
Xorriso_option_chgrpi;
Xorriso_option_chmodi;
Xorriso_option_chowni;
Xorriso_option_clone;
Xorriso_option_close;
Xorriso_option_close_filter_list;
Xorriso_option_commit;
@ -147,6 +148,7 @@ Xorriso_option_commit_eject;
Xorriso_option_compare;
Xorriso_option_compliance;
Xorriso_option_copyright_file;
Xorriso_option_cp_clone;
Xorriso_option_cpri;
Xorriso_option_cpx;
Xorriso_option_cut_out;

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.7.tar.gz
ftp://ftp.gnu.org/gnu/xorriso/xorriso-1.0.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.7.tar.gz, take it to a directory of your choice and do:
Obtain xorriso-1.0.4.tar.gz, take it to a directory of your choice and do:
tar xzf xorriso-0.6.7.tar.gz
cd xorriso-0.6.7
tar xzf xorriso-1.0.4.tar.gz
cd xorriso-1.0.4
Within that directory execute:
@ -72,17 +72,15 @@ or you may execute as superuser:
For general concepts, options and usage examples see
info xorriso
or
info xorrisofs
man 1 xorriso
man 1 xorrisofs
The documents are part of the tarball as
xorriso/xorriso.info
xorriso/xorriso.1
Original source text of both is
xorriso/xorriso.texi
You may get a first glimpse by
info ./xorriso/xorriso.info
info ./xorriso/xorrisofs.info
man ./xorriso/xorriso.1
man ./xorriso/xorrisofs.1
The installation creates several alias links pointing to the xorriso binary:
xorrisofs starts xorriso with -as mkisofs emulation already enabled
@ -291,9 +289,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.6 :
- libburn.so.4 , version libburn-0.8.8 or higher
- libisofs.so.6 , version libisofs-0.6.40 or higher
Dynamic library and compile time header requirements for libisoburn-1.0.4 :
- libburn.so.4 , version libburn-1.0.4 or higher
- libisofs.so.6 , version libisofs-1.0.4 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.
@ -411,7 +409,7 @@ By Mario Danic <mario.danic@gmail.com>, libburn, libisofs
Vreixo Formoso <metalpain2002@yahoo.es>, libisofs, libisoburn
Thomas Schmitt <scdbackup@gmx.net>, libburn, libisofs,
libisoburn, xorriso
Copyright (C) 2006-2010 Mario Danic, Vreixo Formoso, Thomas Schmitt.
Copyright (C) 2006-2011 Mario Danic, Vreixo Formoso, Thomas Schmitt.
libburnia-project.org is inspired by and in libburn still containing parts
of old
@ -422,12 +420,12 @@ 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
2010-2011 George Danchev, Thomas Schmitt
------------------------------------------------------------------------------
This text itself is
Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
Copyright (c) 2007 - 2011 Thomas Schmitt <scdbackup@gmx.net>
and is freely distributable.
It shall only be modified in sync with the technical properties of xorriso.
If you make use of the license to derive modified versions of xorriso

View File

@ -25,7 +25,14 @@
#include <sys/time.h>
#include <time.h>
#include <errno.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#endif
#ifdef Xorriso_standalonE
@ -125,6 +132,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->do_aaip= 0;
m->do_md5= 0;
m->no_emul_toc= 0;
m->do_old_empty= 0;
m->scdbackup_tag_name[0]= 0;
m->scdbackup_tag_time[0]= 0;
m->scdbackup_tag_written[0]= 0;
@ -200,6 +208,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->speed= 0;
m->fs= 4*512; /* 4 MiB */
m->padding= 300*1024;
m->do_padding_by_libisofs= 0;
m->alignment= 0;
m->do_stream_recording= 0;
m->dvd_obs= 0;
@ -355,6 +364,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->perm_stack= NULL;
m->update_flags= 0;
m->result_line[0]= 0;
m->result_line_counter= 0;
m->result_page_counter= 0;
@ -437,6 +448,10 @@ int Xorriso_destroy(struct XorrisO **xorriso, int flag)
m= *xorriso;
if(m==NULL)
return(0);
/* Give up drives and image to unref all connected xorriso objects */
Xorriso_give_up_drive(m, 3);
if(m->in_charset!=NULL)
free(m->in_charset);
if(m->out_charset!=NULL)

View File

@ -9258,18 +9258,799 @@ xorriso/configure_ac.txt
xorriso/xorriso_timestamp.h
Version leap to libisoburn-0.6.7
12 Dec 2010 []
12 Dec 2010 [3520]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
12 Dec 2010 [3521]
svn move -m Promoted branch to tag
ttp://svn.libburnia-project.org/libisoburn/branches/ZeroSixSix
http://svn.libburnia-project.org/libisoburn/tags/ZeroSixSix
------------------------------------ cycle - xorriso-0.6.7 - 2010.12.12.120823
2010.12.13.123226 [3523]
configure.ac
xorriso/configure_ac.txt
Prepending ./configure generated options to CFLAGS rather than appending them
2010.12.22.133742 [3524]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/libisoburn.ver
New API call isoburn_igopt_set_untranslated_name_len()
2010.12.22.133936 [3525]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -compliance options untranslated_names , untranslated_name_len=
2010.12.22.151542 [3526]
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs option -untranslated_name_len
23 Dec 2010 [3527]
+ doc/faq.wiki
Took source file of libburnia-project.org/wiki/FAQ into SVN
2010.12.23.190134 [3529]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/emulators.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
ChangeLog
New -compliance option iso_9660_1999, -as mkisofs option -iso-level 4
------------------------------------ cycle - xorriso-0.6.7 -
------------------------------------ cycle - xorriso-0.6.7 -
* New API call isoburn_igopt_set_untranslated_name_len()
* New -compliance options untranslated_names , untranslated_name_len=
* New -as mkisofs option -untranslated_name_len
* New -compliance option iso_9660_1999, -as mkisofs option -iso-level 4
24 Dec 2010 [3530]
doc/faq.wiki
New q in faq
2010.12.24.135515 [3531]
libisoburn/libisoburn.h
Mentioned ISO 9660 level 3 in libisoburn API
2010.12.25.071212 [3532]
configure.ac
libisoburn/libisoburn.h
Requiring libisofs-0.6.41 now
2010.12.25.071522 [3533]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/write_run.c
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -compliance option iso_9660_level=number
2010.12.25.091515 [3534]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
New isoburn_igopt_set_relaxed() option isoburn_igopt_allow_dir_id_ext
2010.12.25.092828 [3535]
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -compliance option allow_dir_id_ext
2010.12.25.094309 [3536]
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs option -disallow_dir_id_ext, allow_dir_id_ext is default
------------------------------------ cycle - xorriso-0.6.7 - 2010.12.25.094309
* New -compliance option iso_9660_level=number
* New -compliance option allow_dir_id_ext
* New -as mkisofs option -disallow_dir_id_ext
2010.12.28.093144 [3538]
xorriso/write_run.c
Made -print_size take into account the toc emulation on blank overwriteables
2010.12.28.123348 [3539]
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Disabled TOC emulation with -as mkisofs. May be re-enabled by --emul-toc.
------------------------------------ cycle - xorriso-0.6.7 - 2010.12.28.123348
* Disabled TOC emulation with -as mkisofs. May be re-enabled by --emul-toc.
2010.12.29.104047 [3540]
xorriso/emulators.c
Bug fix: -as mkisofs -print-size did not account for -partition_offset
------------------------------------ cycle - xorriso-0.6.7 - 2010.12.29.104047
* Bug fix: -as mkisofs -print-size did not account for -partition_offset
30 Dec 2010 [3541]
doc/partition_offset.wiki
Mentioned Debian daily and weekly builds as examples of partiton_offset
2011.01.04.193042 [3543]
xorriso/xorriso.h
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/opts_a_c.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Default -abort_on value is now "FAILURE", for dialog it stays "FATAL"
2011.01.06.111034 [3544]
xorriso/parse_exec.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Changed dialog default -abort_on value to "NEVER"
6 Jan 2011 [3545]
ChangeLog
Updated change log
------------------------------------ cycle - xorriso-0.6.7 - 2011.01.06.111034
* Default -abort_on value is now "FAILURE" with batch and "NEVER" with dialog
2011.01.16.182558 [3557]
configure.ac
libisoburn/libisoburn.h
Requiring libisofs-1.0.0 and libburn-1.0.0 now
16 Jan 2011 [3558]
xorriso/configure_ac.txt
Adapted GNU xorriso to version leap libisofs-1.0.1 , libburn-1.0.1
16 Jan 2011 [3559]
doc/partition_offset.wiki
Updated partition offset wiki text about --no-emul-toc
16 Jan 2011 [3560]
svn copy -m "Branching for libisoburn release 1.0.0" \
http://svn.libburnia-project.org/libisoburn/trunk \
http://svn.libburnia-project.org/libisoburn/branches/1.0.0
2011.01.16.193257 [3562]
xorriso/emulators.c
xorriso/opts_p_z.c
Updated copyright messages to 2011
2011.01.16.200001 [3563]
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-1.0.0
16 Jan 2011 [3564]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
----------------------------------- release - xorriso-1.0.0 - 2011.01.16.200001
* New API call isoburn_igopt_set_untranslated_name_len()
* New -compliance options untranslated_names , untranslated_name_len=
* New -as mkisofs option -untranslated_name_len
* New -compliance option iso_9660_1999, -as mkisofs option -iso-level 4
* New -compliance option iso_9660_level=number
* New -compliance option allow_dir_id_ext
* New -as mkisofs option -disallow_dir_id_ext
* Disabled TOC emulation with -as mkisofs. May be re-enabled by --emul-toc.
* Default -abort_on value is now "FAILURE" with batch and "NEVER" with dialog
* Bug fix: -as mkisofs -print-size did not account for -partition_offset
2011.01.16.193257 [3561]
xorriso/emulators.c
xorriso/opts_p_z.c
Updated copyright messages to 2011
2011.01.17.092111 [3565]
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-1.0.1
17 Jan 2011 [3566]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
17 Jan 2011 [3567]
svn move -m Promoted branch to tag
http://svn.libburnia-project.org/libisoburn/branches/1.0.0
http://svn.libburnia-project.org/libisoburn/tags/1.0.0
------------------------------------ cycle - xorriso-1.0.1 - 2011.01.17.092111
2011.01.18.154443 [3568]
libisoburn/isoburn.h
Avoiding <stdint.h> if not available. Trying to use <inttypes.h> in that case.
2011.01.18.154717 [3569]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/lib_mgt.c
xorriso/write_run.c
Avoiding <stdint.h> if not available. Trying to use <inttypes.h> in that case.
------------------------------------ cycle - xorriso-1.0.1 - 2011.01.18.154717
* Removed compiler obstacles of GNU xorriso on Solaris 9
18 Jan 2011 [3571]
doc/faq.wiki
Small change in FAQ wiki text
19 Jan 2011 [3572]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Mentioned missing mkisofs -old-root functionality in man page
------------------------------------ cycle - xorriso-1.0.1 - 2011.01.24.141621
* Bug fix: ECMA-119 standards violation with Volume Descriptor Set Terminator
2011.01.26.132843 [3573]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
New isoburn_igopt_set_extensions() option isoburn_igopt_old_empty
2011.01.26.133107 [3574]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/write_run.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -compliance option old_empty
26 Jan 2011 [3575]
configure.ac
Requiring libisofs-1.0.1 now
------------------------------------ cycle - xorriso-1.0.1 - 2011.01.26.133107
* New isoburn_igopt_set_extensions() option isoburn_igopt_old_empty
2011.01.26.184140 [3576]
libisoburn/isoburn.c
Followed name change in the yet unstable part of libisofs API
2011.01.26.210359 [3577]
xorriso/emulators.c
New -as mkisofs option --old-empty
------------------------------------ cycle - xorriso-1.0.1 -
* New -as mkisofs option --old-empty
2011.01.31.135917 [3578]
xorriso/iso_manip.c
Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer
2011.02.01.185830 [3579]
xorriso/xorriso.h
xorriso/xorrisoburn.h
xorriso/parse_exec.c
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/iso_manip.c
libisoburn/libisoburn.ver
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
xorriso/xorriso_eng.html
ChangeLog
New option -clone
2011.02.02.174154 [3580]
xorriso/xorrisoburn.h
xorriso/iso_manip.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Disallowed -clone to overwrite existing nodes
2011.02.04.191922 [3581]
xorriso/xorriso.h
xorriso/parse_exec.c
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/iso_manip.c
xorriso/sfile.c
libisoburn/libisoburn.ver
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New option -cp_clone
2011.02.07.182947 [3582]
xorriso/cmp_update.c
xorriso/sort_cmp.c
Do not regard file as changed just because no ino was recorded
2011.02.07.184304 [3583]
xorriso/xorrisoburn.h
xorriso/opts_p_z.c
xorriso/emulators.c
xorriso/iso_tree.h
xorriso/iso_tree.c
xorriso/iso_manip.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs options -root , -old-root, --old-root-no-md5, --old-root-no-ino, --old-root-dev
2011.02.07.202851 [3584]
xorriso/emulators.c
xorriso/iso_manip.c
xorriso/sort_cmp.c
xorriso/iso_tree.h
xorriso/iso_tree.c
Some corrections of the previous commit
2011.02.08.133624 [3585]
xorriso/emulators.c
-as mkisofs: Enabled reading of xattr and md5 before image loading
2011.02.12.171423 [3587]
xorriso/xorriso_private.h
xorriso/xorrisoburn.h
xorriso/base_obj.c
xorriso/opts_a_c.c
xorriso/opts_d_h.c
xorriso/opts_p_z.c
xorriso/emulators.c
xorriso/cmp_update.h
xorriso/cmp_update.c
xorriso/disk_ops.c
xorriso/iso_manip.h
xorriso/iso_manip.c
xorriso/findjob.h
xorriso/lib_mgt.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -find actions update_merge, rm_merge, clear_merge. -cp_clone now merges.
2011.02.12.172930 [3588]
xorriso/cmp_update.c
Reacted on compiler warning about uninitialized variable
2011.02.14.090737 [3590]
xorriso/base_obj.c
xorriso/parse_exec.c
xorriso/filters.c
xorriso/write_run.c
Closed memory leaks detected by valgrind
14 Feb 2011 [3591]
xorriso/xorriso_eng.html
ChangeLog
Updated change log
------------------------------------ cycle - xorriso-1.0.1 - 2011.02.14.090737
* Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer
* New options -clone and -cp_clone
* New -find actions update_merge, rm_merge, clear_merge
* New -as mkisofs options -root , -old-root
* New -as mkisofs options --old-root-no-md5, --old-root-no-ino, --old-root-dev
2011.02.19.112243 [3593]
xorriso/emulators.c
Small adjustments in mkisofs emulation
Bug fix: -as mkisofs -l resp. -full-iso9660-filenames did not work
2011.02.19.112439 [3594]
xorriso/filters.c
Updated copyright
2011.02.19.112541 [3595]
xorriso/xorriso.texi
Corrections in xorriso man page
19 Feb 2011 [3596]
xorriso/xorriso_eng.html
ChangeLog
Updated change log
19 Feb 2011 [3597]
xorriso/xorriso.info
xorriso/xorriso.1
info document and man page for recent texi corrections
------------------------------------ cycle - xorriso-1.0.1 - 2011.02.19.112541
* Bug fix in libisofs:
Images produced with -for_backup might be unreadable and
also fail -check_md5 verification.
* Bug fix: mkisofs emulation options -l , -full-iso9660-filenames did not work.
2011.02.21.130729 [3598]
xorriso/emulators.c
Correction about -as mkisofs --old-root-no-ino
2011.02.22.073504 [3599]
xorriso/opts_a_c.c
xorriso/iso_manip.c
Issueing messages with -clone and -cp_clone
2011.02.22.073641 [3600]
xorriso/emulators.c
Corrected a bug that prevented -as mkisofs option -output
2011.02.22.123730 [3601]
xorriso/emulators.c
Made -as mkisofs ignore option -disable-deep-relocation rather than failing
2011.02.22.143131 [3602]
xorriso/emulators.c
New -as mkisofs option -max-iso9660-filenames
22 Feb 2011 [3603]
xorriso/xorriso_eng.html
ChangeLog
Updated change log
------------------------------------ cycle - xorriso-1.0.1 - 2011.02.22.143131
* New -as mkisofs option -max-iso9660-filenames
23 Feb 2011 [3608]
svn copy -m Branching for libisoburn release 1.0.2
http://svn.libburnia-project.org/libisoburn/trunk
http://svn.libburnia-project.org/libisoburn/branches/1.0.2
2011.02.23.140001 [3609]
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-1.0.2
23 Feb 2011 [3610]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
----------------------------------- release - xorriso-1.0.2 - 2011.02.23.140001
* Bug fix: Images produced with -for_backup might be unreadable and
also fail -check_md5 verification.
* Bug fix: mkisofs emulation options -l , -full-iso9660-filenames did not work.
* Bug fix: Option -mkdir yielded SIGSEGV due to a NULL pointer
* Bug fix: ECMA-119 standards violation with Volume Descriptor Set Terminator
* Removed compiler obstacles of GNU xorriso on Solaris 9
* New isoburn_igopt_set_extensions() option isoburn_igopt_old_empty
* New options -clone and -cp_clone
* New -find actions update_merge, rm_merge, clear_merge
* New -as mkisofs option -max-iso9660-filenames
* New -as mkisofs option --old-empty
* New -as mkisofs options -root , -old-root
* New -as mkisofs options --old-root-no-md5, --old-root-no-ino, --old-root-dev
2011.02.23.202632 [3616]
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-1.0.3
23 Feb 2011 [3617]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
------------------------------------ cycle - xorriso-1.0.3 - 2011.02.23.202632
23 Feb 2011 [3618]
svn move -m Promoted branch to tag
http://svn.libburnia-project.org/libisoburn/branches/1.0.2
http://svn.libburnia-project.org/libisoburn/tags/1.0.2
2011.02.24.191908 [3620]
libisoburn/isofs_wrap.c
Corrected a flaw found by George Danchev with cpp
2011.02.24.192029 [3621]
xorriso/opts_d_h.c
xorriso/text_io.c
xorriso/filters.c
Corrected flaws found by George Danchev with cpp
2011.02.26.100158 [3622]
xorriso/emulators.c
Bug fix: -as mkisofs -old-root did not work with -graft-points
2011.02.28.190842 [3623]
xorriso/emulators.c
Bug fix: -as mkisofs -partition_hd_cyl had no effect
28 Feb 2011 [3624]
xorriso/make_xorriso_1.c
When producing man page from texi: substitute @minus{} within @item
2011.03.01.145125 [3626]
libisoburn/burn_wrap.c
Bug fix: -as mkisofs -C attempts to read volume header of blank media
2011.03.01.152159 [3627]
libisoburn/burn_wrap.c
Installed a test against non-zero msc1 on blank input drives
2011.03.02.093009 [3628]
xorriso/xorriso_private.h
xorriso/base_obj.c
xorriso/emulators.c
xorriso/write_run.c
Counting padding as part of the image with -as mkisofs
2011.03.02.094049 [3629]
xorriso/opts_d_h.c
xorriso/opts_p_z.c
xorriso/text_io.c
New -padding modes "included" and "excluded"
02 Mar 2011 [3630]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Updated documentation
02 Mar 2011 [3631]
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------ cycle - xorriso-1.0.3 - 2011.03.02.094049
* Bug fix: -as mkisofs -old-root did not work with -graft-points
* Bug fix: -as mkisofs -partition_hd_cyl had no effect
* Bug fix: -as mkisofs -C attempted to read volume header of blank media
* Bug fix: isohybrid image size was not aligned to cylinder boundary
* New -padding modes "included" and "appended"
2011.03.03.181601 [3632]
libisoburn/libisoburn.h
libisoburn/isoburn.c
New bits 8 and 9 with options of isoburn_igopt_set_system_area()
2011.03.03.181850 [3633]
xorriso/xorriso_private.h
xorriso/opts_a_c.c
xorriso/emulators.c
xorriso/text_io.c
New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align
03 Mar 2011 [3634]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Updated documentation
04 Mar 2011 [3635]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Clarifications about cylinder size and alignment
04 Mar 2011 [3626]
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------ cycle - xorriso-1.0.3 - 2011.03.03.181850
* New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align
2011.03.05.090434 [3637]
xorriso/parse_exec.c
xorriso/emulators.c
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
New -as mkisofs and -as cdrecord option --no_rc
2011.03.05.141534 [3638]
+ xorriso/xorrisofs.texi
+ xorriso/xorrisofs.info
+ xorriso/xorrisofs.1
Makefile.am
xorriso/make_xorriso_standalone.sh
xorriso/xorriso_makefile_am.txt
xorriso/make_docs.sh
Own man page and info document for xorrisofs
05 Mar 2011 [3639]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
Mentioned man xorrisofs in man xorriso
2011.03.06.153741 [3640]
xorriso/emulators.c
Helptext of -as mkisofs now points to man xorrisofs
06 Mar 2011 [3641]
xorriso/xorrisofs.texi
xorriso/xorrisofs.info
xorriso/xorrisofs.1
Polished xorrisofs documentation
2011.03.07.101547 [3642]
xorriso/opts_a_c.c
xorriso/emulators.c
Bug fix: -as mkisofs did not properly unescape target part of pathspecs
07 Mar 2011 [3643]
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------ cycle - xorriso-1.0.3 - 2011.03.07.101547
* New -as mkisofs and -as cdrecord option --no_rc
* Own man page and info document for xorrisofs
* Bug fix: -as mkisofs did not properly unescape target part of pathspecs
2011.03.09.071325 [3644]
libisoburn/libisoburn.h
libisoburn/isoburn.h
libisoburn/isoburn.c
libisoburn/isofs_wrap.c
New isoburn_ropt_set_extensions() option isoburn_ropt_nomd5tag
2011.03.09.071502 [3645]
xorriso/xorriso_private.h
xorriso/opts_i_o.c
xorriso/emulators.c
xorriso/text_io.c
xorriso/drive_mgt.c
New -md5 modes load_check_off and load_check_on
08 Mar 2011 [3646]
doc/partition_offset.wiki
Updated partition offset wiki
2011.03.09.123847 [3647]
xorriso/xorriso.h
Marked options introduced since 0.5.8 by the promised @since tags
09 Mar 2011 [3648]
xorriso/xorriso.texi
xorriso/xorriso.info
xorriso/xorriso.1
xorriso/xorrisofs.texi
xorriso/xorrisofs.info
xorriso/xorrisofs.1
Corrections and updates of documentation
10 Mar 2011 [3649]
xorriso/README_gnu_xorriso
xorriso/make_xorriso_standalone.sh
xorriso/convert_man_to_html.sh
+ xorriso/man_xorrisofs_to_html.sh
+ xorriso/man_xorriso_to_html.sh
xorriso/xorrisofs.texi
xorriso/xorrisofs.info
xorriso/xorrisofs.1
xorriso/xorriso_eng.html
HTML version of man xorrisofs
10 Mar 2011 [3654]
svn copy -m Branching for libisoburn release 1.0.4
http://svn.libburnia-project.org/libisoburn/trunk
http://svn.libburnia-project.org/libisoburn/branches/1.0.4
2011.03.10.110001 [3655]
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-1.0.4
[]
ChangeLog
xorriso/changelog.txt
Documented changes and release timestamp
----------------------------------- release - xorriso-1.0.4 - 2011.03.10.110001
* New isoburn_ropt_set_extensions() option isoburn_ropt_nomd5tag
* Bug fix: xorrisofs did not work under growisofs -M (version 1.0.0 was ok)
* Bug fix: -as mkisofs -C attempted to read volume header of blank media
* Bug fix: -as mkisofs -old-root did not work with -graft-points
* Bug fix: -as mkisofs -partition_hd_cyl had no effect
* Bug fix: -as mkisofs did not properly unescape target part of pathspecs
* Bug fix: isohybrid image size was not aligned to cylinder boundary
* Bug fix: Compilation without zlib failed
* New -padding modes "included" and "appended"
* New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align
* New -as mkisofs and -as cdrecord option --no_rc
* Own man page and info document for xorrisofs
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------ cycle - xorriso-1.0.5 -
xorriso/xorriso_eng.html
ChangeLog
Updated change log and web page
------------------------------------ cycle - xorriso-1.0.5 -
**********************************************************************
@ -9281,76 +10062,22 @@ Important: When adding a public API function then add its name to file
TODO
===============================================================================
- The return values of the fwrite() calls in libisofs/demo/demo.c are ignored
/sbin/mkfs.msdos -n Bla -C /dvdbuffer/test.fat 8192
- Keshav P.R. <skodabenz@rocketmail.com>:
Allow double dashes with all long options.
dd if=/dvdbuffer/RIPLinux-9.3-non-X.iso bs=1K count=32 \
of=/dvdbuffer/RIPLinux-9.3-non-X.sysarea
- Zhang Weiwu:
>>> ask for test of -old-root
mount -o loop /dvdbuffer/RIPLinux-9.3-non-X.iso /mnt
- xorrecord.texi
../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
- man_1_xorrisofs.html , man_1_xorrecord.html
- make possible -joliet-long in libisofs:
Up to 103 leafname characters in Joliet.
Name length restriction in libisofs/util.c:iso_j_file_id seems
to be hardcoded.
------------------------------------------------- For Debian:
@ -9362,9 +10089,9 @@ r -as mkisofs \
- recognize at load time and build boot file list
-sparc-boot is implemented
- recognize at load time
r -abort_on NEVER -report_about ALL -dialog on -page 20 80 -as mkisofs -o /dvdbuffer/pseudo_drive /u/gruenbeck -G /u/x -B ... -sparc-label 'xorriso test'
-chrp-boot
- needs HFS
- where to get specs ?
------------------------------------------------- For Solaris
@ -9407,9 +10134,6 @@ r -abort_on NEVER -report_about ALL -dialog on -page 20 80 -as mkisofs -o /dvdbu
- 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 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
- DVD-ROM drives report CD tracks with size up to the next track start.
@ -9433,6 +10157,7 @@ xorriso : UPDATE : 3691 MB written (fifo 78%) [buf 100%] 2.3x.
------------------------------------------------- important
- introduce a read offset for displaced ISO images
- coordinate -displacement with image growing

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -284,6 +284,7 @@ ex:;
bit1= compare ctime
bit2= check only existence of both file objects
count one or both missing as "difference"
bit26= do not issue message about missing disk file
bit27= for Xorriso_path_is_excluded(): bit0
bit28= examine eventual disk_path link target rather than link
bit29= do not issue pacifier messages
@ -320,7 +321,7 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
sprintf(respt , "? %s (DISK) : exluded by %s\n",
Text_shellsafe(disk_adr, sfe, 0),
(ret==1 ? "-not_paths" : "-not_leaf"));
if(!(flag&(1<<31)))
if(! (flag & ((1 << 31) | (1 << 26))))
Xorriso_result(xorriso,0);
missing= 1;
(*result)|= 1;
@ -334,7 +335,7 @@ int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
if(ret==-1) {
sprintf(respt , "? %s (DISK) : cannot lstat() : %s\n",
Text_shellsafe(disk_adr, sfe, 0), strerror(errno));
if(!(flag&(1<<31)))
if(! (flag & ((1 << 31) | (1 << 26))))
Xorriso_result(xorriso,0);
missing= 1;
(*result)|= 1;
@ -681,10 +682,11 @@ int Xorriso_pfx_disk_path(struct XorrisO *xorriso, char *iso_path,
Set to NULL if calling this function from outside ISO world
@param flag bit0= update rather than compare
bit1= find[ix] is in recursion
bit2= update_merge : do not delete but mark visited and found
@return <=0 error, 1= ok , 2= iso_path was deleted
3=ok, do not dive into directory (e.g. because it is a split file)
*/
int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter,
int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter, void *node,
char *iso_path, char *iso_prefix, char *disk_prefix,
int flag)
{
@ -709,22 +711,24 @@ int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter,
follow_links= (xorriso->do_follow_links ||
(xorriso->do_follow_param && !(flag&2))) <<28;
ret= Xorriso_compare_2_files(xorriso, disk_path, iso_path, "", &result,
2 | follow_links | ((!(flag&2))<<27) | ((flag&1)<<31));
2 | follow_links | ((!!(flag & 4)) << 26)
| ((!(flag&2))<<27) | ((flag&1)<<31));
/* was once: | ((!(flag&1))<<29) */
if(ret<xorriso->find_compare_result)
xorriso->find_compare_result= ret;
if(flag&1) {
if(ret<=0) {
if(ret<0)
if(Xorriso_eval_problem_status(xorriso, ret, 1|2)<0)
return(ret);
uret= Xorriso_update_interpreter(xorriso, boss_iter, result,
disk_path, iso_path, (flag&2)<<1);
if(uret<=0)
ret= 0;
if(uret==2)
deleted= 1;
}
if(ret<0)
if(Xorriso_eval_problem_status(xorriso, ret, 1|2)<0)
return(ret);
if(ret > 0)
result= 0;
uret= Xorriso_update_interpreter(xorriso, boss_iter, node, result,
disk_path, iso_path,
((flag & 2) << 1) | ((flag & 4) >> 1));
if(uret<=0)
ret= 0;
if(uret==2)
deleted= 1;
}
if(ret<0)
return(ret);
@ -742,15 +746,19 @@ int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter,
Do not call Xorriso_hardlink_update()
Overwrite exactly if normal mode would not,
else do nothing
bit1= do not delete files which are not found under
disk_path, but rather mark visited files and mark
files which were found.
bit2= -follow: this is not a command parameter
@return <=0 error, 1= ok , 2= iso_rr_path node object has been deleted ,
3= no action taken
*/
int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
int Xorriso_update_interpreter(struct XorrisO *xorriso,
void *boss_iter, void *node,
int compare_result, char *disk_path,
char *iso_rr_path, int flag)
{
int ret, deleted= 0, is_split= 0, i, loop_count, late_hardlink_update= 0;
int ret= 1, deleted= 0, is_split= 0, i, loop_count, late_hardlink_update= 0;
char sfe[5*SfileadrL];
struct stat stbuf;
struct SplitparT *split_parts= NULL;
@ -767,6 +775,15 @@ int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
ret= 3; goto ex;
}
if((flag & 2) && !(compare_result & 2)) {
ret= Xorriso_mark_update_merge(xorriso, iso_rr_path, node,
!(compare_result & 1));
if(ret <= 0)
goto ex;
}
if(compare_result == 0)
{ret= 1; goto ex;}
if(compare_result&((1<<11)|(1<<13))) {
if(flag & 1)
{ret= 3; goto ex;}
@ -788,7 +805,8 @@ int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
} else {
/* Hard link relation has changed resp. was not recorded. */
ret= Xorriso_hardlink_update(xorriso, &compare_result,
disk_path, iso_rr_path, flag & 4);
disk_path, iso_rr_path,
(flag & 4) | ((compare_result >> 21) & 2));
if(ret < 0)
goto ex;
if(ret == 2)
@ -805,15 +823,24 @@ int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
deleted= 1;
ret= Xorriso_graft_in(xorriso, boss_iter, disk_path, iso_rr_path,
(off_t) 0, (off_t) 0, 2|(flag&4));
if(ret <= 0)
goto ex;
if(flag & 2) {
ret= Xorriso_mark_update_merge(xorriso, iso_rr_path, NULL, 1);
if(ret <= 0)
goto ex;
}
}
sprintf(xorriso->info_text, "Deleted and re-added ");
} else if(compare_result&(1)) {
delete:;
/* disk_adr not existing */
ret= Xorriso_rmi(xorriso, boss_iter, (off_t) 0, iso_rr_path, 1);
deleted= 1;
sprintf(xorriso->info_text, "Deleted ");
if(!(flag & 2)) {
ret= Xorriso_rmi(xorriso, boss_iter, (off_t) 0, iso_rr_path, 1);
deleted= 1;
sprintf(xorriso->info_text, "Deleted ");
}
} else if(compare_result&(2|128|(1<<12)|(1<<14)|(1<<15))) {
/* iso_adr not existing, size, cannot open iso file, early eof of iso file
@ -894,6 +921,11 @@ overwrite:;
if(ret < 0)
goto ex;
}
if(flag & 2) {
ret= Xorriso_mark_update_merge(xorriso, iso_rr_path, NULL, 1);
if(ret <= 0)
goto ex;
}
if(flag & 1)
sprintf(xorriso->info_text, "Widened hard link ");
else

View File

@ -23,16 +23,21 @@ int Xorriso_pfx_disk_path(struct XorrisO *xorriso, char *iso_path,
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
@param node Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
@param flag bit0= update rather than compare
*/
int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter,
int Xorriso_find_compare(struct XorrisO *xorriso, void *boss_iter, void *node,
char *iso_path, char *iso_prefix, char *disk_prefix,
int flag);
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
@param @node Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
*/
int Xorriso_update_interpreter(struct XorrisO *xorriso, void *boss_iter,
int Xorriso_update_interpreter(struct XorrisO *xorriso,
void *boss_iter, void *node,
int compare_result, char *disk_path,
char *iso_rr_path, int flag);

View File

@ -1,9 +1,9 @@
# configure.ac stems from xorriso/configure_ac.txt and leads to ./configure
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
# Copyright (c) 2007 - 2011 Thomas Schmitt <scdbackup@gmx.net>
# Provided under GPL version 2 or later.
AC_INIT([xorriso], [0.6.7], [http://libburnia-project.org])
AC_INIT([xorriso], [1.0.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
AC_CANONICAL_HOST
@ -22,14 +22,14 @@ AC_DEFINE([Xorriso_standalonE], [])
BURN_MAJOR_VERSION=1
BURN_MINOR_VERSION=0
BURN_MICRO_VERSION=1
BURN_MICRO_VERSION=4
AC_SUBST(BURN_MAJOR_VERSION)
AC_SUBST(BURN_MINOR_VERSION)
AC_SUBST(BURN_MICRO_VERSION)
LIBISOFS_MAJOR_VERSION=1
LIBISOFS_MINOR_VERSION=0
LIBISOFS_MICRO_VERSION=1
LIBISOFS_MICRO_VERSION=4
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)

View File

@ -1,118 +1,13 @@
#!/bin/sh
#
# convert_man_to_html.sh - ts A80118
# convert_man_to_html.sh - ts B10309
#
# Generates a HTML version of man page xorriso.1
# Generates a HTML version of man pages xorriso.1 , xorrisofs.1
#
# To be executed in the libisoburn toplevel directory (eg. ./libisoburn-0.1.0)
# To be executed in the libisoburn toplevel directory (eg. ./libisoburn-1.0.4)
#
# set -x
xorriso/man_xorriso_to_html.sh
xorriso/man_xorrisofs_to_html.sh
man_dir=$(pwd)"/xorriso"
export MANPATH="$man_dir"
manpage="xorriso"
raw_html=$(pwd)/"xorriso/raw_man_1_xorriso.html"
htmlpage=$(pwd)/"xorriso/man_1_xorriso.html"
if test -r "$man_dir"/"$manpage".1
then
dummy=dummy
else
echo "Cannot find readable man page source $1" >&2
exit 1
fi
if test -e "$man_dir"/man1
then
dummy=dummy
else
ln -s . "$man_dir"/man1
fi
if test "$1" = "-work_as_filter"
then
# set -x
sed \
-e 's/<meta name="generator" content="groff -Thtml, see www.gnu.org">/<meta name="generator" content="groff -Thtml, via man -H, via xorriso\/convert_man_to_html.sh">/' \
-e 's/<meta name="Content-Style" content="text\/css">/<meta name="Content-Style" content="text\/css"><META NAME="description" CONTENT="man page of xorriso"><META NAME="keywords" CONTENT="man xorriso, manual, xorriso, CD, CD-RW, CD-R, burning, cdrecord, compatible"><META NAME="robots" CONTENT="follow">/' \
-e 's/<title>XORRISO<\/title>/<title>man 1 xorriso<\/title>/' \
-e 's/<h1 align=center>XORRISO<\/h1>/<h1 align=center>man 1 xorriso<\/h1>/' \
-e 's/<body>/<body BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>/' \
-e 's/<b>Overview of features:<\/b>/\&nbsp;<BR><b>Overview of features:<\/b>/' \
-e 's/<b>General information paragraphs:<\/b>/\&nbsp;<BR><b>General information paragraphs:<\/b>/' \
-e 's/have a look at section EXAMPLES/have a look at section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<b>Session model:<\/b>/\&nbsp;<BR><b>Session model:<\/b>/' \
-e 's/<b>Media types and states:<\/b>/\&nbsp;<BR><b>Media types and states:<\/b>/' \
-e 's/<b>Creating, Growing, Modifying, Blind/\&nbsp;<BR><b>Creating, Growing, Modifying, Blind/' \
-e 's/<b>Libburn drives:<\/b>/\&nbsp;<BR><b>Libburn drives:<\/b>/' \
-e 's/^-dev /\&nbsp;\&nbsp;-dev /' \
-e 's/^-devices /\&nbsp;\&nbsp;-devices /' \
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\&nbsp;<BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
-e 's/<b>Command processing:<\/b>/\&nbsp;<BR><b>Command processing:<\/b>/' \
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\&nbsp;<BR><b>Dialog, Readline, Result pager:<\/b>/' \
-e 's/<b>Aquiring source and target drive:<\/b>/\&nbsp;<BR><b>Aquiring source and target drive:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Influencing the behavior of image/\&nbsp;<BR><b>Influencing the behavior of image/' \
-e 's/<b>Inserting files into ISO image:<\/b>/\&nbsp;<BR><b>Inserting files into ISO image:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>File manipulations:<\/b>/\&nbsp;<BR><b>File manipulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Tree traversal command -find:<\/b>/\&nbsp;<BR><b>Tree traversal command -find:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;iso_rr_pattern/<p>\&nbsp;<BR><b>\&minus;iso_rr_pattern/' \
-e 's/EXAMPLES):<br>/<A HREF="#EXAMPLES">EXAMPLES<\/A>):<br>/' \
-e 's/<b>Filters for data file content:<\/b>/\&nbsp;<BR><b>Filters for data file content:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Writing the result, drive control:<\/b>/\&nbsp;<BR><b>Writing the result, drive control:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^-find \/ /\&nbsp;\&nbsp;-find \/ /' \
-e 's/<b>Settings for file insertion:<\/b>/\&nbsp;<BR><b>Settings for file insertion:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^$<\/b> ln -s/\&nbsp;\&nbsp;$<\/b> ln -s/' \
-e 's/<b>Settings for result writing:<\/b>/\&nbsp;<BR><b>Settings for result writing:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^706k = 706kB/\&nbsp;\&nbsp;706k = 706kB/' \
-e 's/^5540k = 5540kB/\&nbsp;\&nbsp;5540k = 5540kB/' \
-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/' \
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Evaluation of readability and recovery:<\/b>/\&nbsp;<BR><b>Evaluation of readability and recovery:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>osirrox ISO-to-disk restore options:<\/b>/\&nbsp;<BR><b>osirrox ISO-to-disk restore options:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Command compatibility emulations:<\/b>/\&nbsp;<BR><b>Command compatibility emulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;as</<p>\&nbsp;<BR><b>\&minus;as</' \
-e 's/<b>Scripting, dialog and/\&nbsp;<BR><b>Scripting, dialog and/' \
-e 's/^features:<\/b>/features:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Support for frontend/\&nbsp;<BR><b>Support for frontend/' \
-e 's/^listening at stdout:<\/b>/listening at stdout:<\/b><BR>\&nbsp;<BR>/' \
-e 's/xorriso -outdev \/dev\/sr2 \\ -blank fast \\ -pathspecs on/xorriso -outdev \/dev\/sr2 -blank fast -pathspecs on/' \
-e 's/\\ -add \\ \/sounds=\/home\/me\/sounds \\ \/pictures \\ -- \\ -rm_r \\/ -add \/sounds=\/home\/me\/sounds \/pictures -- -rm_r /' \
-e 's/\/sounds\/indecent \\ \&rsquo;\/pictures\/\*private\*\&rsquo; \\/\/sounds\/indecent \&rsquo;\/pictures\/*private*\&rsquo; /' \
-e 's/\/pictures\/confidential \\ -- \\ -add \\/\/pictures\/confidential -- -add/' \
-e 's/xorriso -dev \/dev\/sr2 \\ -rm_r \/sounds -- \\ -mv \\/xorriso -dev \/dev\/sr2 -rm_r \/sounds -- -mv /' \
-e 's/\/pictures\/confidential \\ \/pictures\/restricted \\ -- \\ -chmod/\/pictures\/confidential \/pictures\/restricted -- -chmod/' \
-e 's/go-rwx \/pictures\/restricted -- \\ -pathsspecs on \\ -add \\/go-rwx \/pictures\/restricted -- -pathsspecs on -add /' \
-e 's/\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy /\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy/' \
-e 's/\/movies=\/home\/me\/prepared_for_dvd\/movies \\ -- \\ -commit/\/movies=\/home\/me\/prepared_for_dvd\/movies -- -commit/' \
-e 's/xorriso -indev \/dev\/sr2 \\ -rm_r \/sounds -- \\/xorriso -indev \/dev\/sr2 -rm_r \/sounds -- /' \
-e 's/-outdev \/dev\/sr0 -blank fast \\ -commit -eject all/-outdev \/dev\/sr0 -blank fast -commit -eject all/' \
-e 's/See section FILES/See section <A HREF="#FILES">FILES<\/A>/' \
-e 's/See section EXAMPLES/See section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<\/body>/<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT><\/body>/' \
<"$2" >"$htmlpage"
set +x
chmod u+rw,go+r,go-w "$htmlpage"
echo "Emerged file:"
ls -lL "$htmlpage"
else
export BROWSER='cp "%s" '"$raw_html"
man -H "$manpage"
"$0" -work_as_filter "$raw_html"
rm "$raw_html"
rm "$man_dir"/man1
fi

View File

@ -1132,8 +1132,8 @@ int Xorriso_findx_action(struct XorrisO *xorriso, struct FindjoB *job,
if(ret<xorriso->find_compare_result)
xorriso->find_compare_result= ret;
if(ret==0) {
uret= Xorriso_update_interpreter(xorriso, NULL, compare_result,
abs_path, iso_path, (flag&1)<<2);
uret= Xorriso_update_interpreter(xorriso, NULL, NULL, compare_result,
abs_path, iso_path, ((flag&1)<<2) | 2);
if(uret<=0)
ret= 0;
}

View File

@ -368,11 +368,10 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
ext|= isoburn_ropt_noea;
if(xorriso->ino_behavior & 1)
ext|= isoburn_ropt_noino;
#ifdef isoburn_ropt_nomd5
if(!(xorriso->do_md5 & 1))
ext|= isoburn_ropt_nomd5;
#endif
if(xorriso->do_md5 & 32)
ext|= isoburn_ropt_nomd5tag;
isoburn_ropt_set_extensions(ropts, ext);
@ -422,8 +421,11 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, sev, 0);
if(read_ret == ISO_SB_TREE_CORRUPTED && (xorriso->do_md5 & 1)) {
Xorriso_msgs_submit(xorriso, 0,
"You might get a questionable ISO image tree by option -md5 'off'.",
0, "HINT", 0);
"This might be false MD5 alarm if an add-on session was written by growisofs.",
0, "HINT", 0);
Xorriso_msgs_submit(xorriso, 0,
"In this case you get an ISO image tree by option -md5 'load_check_off'",
0, "HINT", 0);
} else if(xorriso->img_read_error_mode!=0) {
Xorriso_msgs_submit(xorriso, 0, "You might get a partial or altered ISO image tree by option -error_behavior 'image_loading' 'best_effort' if -abort_on is set to be tolerant enough.",
0, "HINT", 0);

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -62,6 +62,7 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
"\tstream_recording=on|number\ttry to get full speed on DVD-RAM, BD",
"\tdvd_obs=default|32k|64k\t\tbytes per DVD/BD write operation",
"\tstdio_sync=on|off|number\twhether to fsync output to \"stdio:\"",
"\t--no_rc\t\tDo not execute xorriso startup files",
"\t-help\t\tprint this text to stderr and exit emulation",
"Actually this is the integrated ISO RockRidge filesystem manipulator xorriso",
"lending its libburn capabilities to a very limited cdrecord emulation. Only",
@ -259,6 +260,8 @@ no_volunteer:;
do_multi= 1;
} else if(strcmp(argv[i], "-nopad")==0) {
xorriso->padding= 0;
} else if(strcmp(argv[i], "--no_rc")==0) {
/* already performed in Xorriso_prescan_args */;
} else if(strcmp(argv[i], "-pad")==0) {
xorriso->padding= 15*2048;
} else if(strncmp(argv[i], "-padsize=", 9)==0 ||
@ -359,7 +362,7 @@ no_volunteer:;
/* Perform actions */
Xorriso_option_report_about(xorriso, "NOTE", 0);
if(do_version) {
sprintf(xorriso->result_line, "Cdrecord 2.01-Emulation Copyright (C) 2010 see libburnia-project.org xorriso\n");
sprintf(xorriso->result_line, "Cdrecord 2.01-Emulation Copyright (C) 2011 see libburnia-project.org xorriso\n");
Xorriso_result(xorriso, 1);
Xorriso_option_version(xorriso, 0);
ret= 1; goto ex;
@ -533,7 +536,9 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
"-no-mac-files", "-chrp-boot",
"--hardlinks", "--acl", "--xattr", "--md5", "--for_backup",
"--protective-msdos-label", "--boot-catalog-hide", "--no-emul-toc",
"--emul-toc", "-disallow_dir_id_ext",
"--emul-toc", "-disallow_dir_id_ext", "--old-empty",
"--old-root-no-md5", "--old-root-devno", "--old-root-no-ino",
"--no_rc",
""
};
static char arg1_options[][41]= {
@ -564,7 +569,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv,
"-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", "-untranslated_name_len",
"-partition_sec_hd", "-partition_cyl_align", "-untranslated_name_len",
""
};
static char arg2_options[][41]= {
@ -618,16 +623,17 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
static char ignored_arg0_options[][41]= {
"-allow-leading-dots", "-ldots", "-allow-multidot",
"-cache-inodes", "-no-cache-inodes", "-check-oldnames", "-D",
"-L", "-max-iso9660-filenames", "-nobak",
"-disable-deep-relocation",
"-L", "-nobak",
"-no-bak", "-force-rr", "-relaxed-filenames", "-T",
"-no-iso-translate",
""
};
static char ignored_arg1_options[][41]= {
"-check-session", "-hide-hfs", "-hide-hfs-list", "-root",
"-old-root", "-table-name", "-volset-seqno", "-volset-size",
"-check-session", "-hide-hfs", "-hide-hfs-list",
"-table-name", "-volset-seqno", "-volset-size",
""
};
}; /* "-root", "-old-root", */
int k, idx_offset= 0;
char sfe[5*SfileadrL];
@ -672,7 +678,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
{
static char helptext[][160]= {
"Usage: xorriso -as mkisofs [options] file...",
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorriso",
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorrisofs",
"Options:",
" -f, -follow-links Follow symbolic links",
" -graft-points Allow to use graft points for filenames",
@ -692,6 +698,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -allow-lowercase Allow lower case characters in addition to the current character set (violates ISO9660)",
" -d, -omit-period Omit trailing periods from filenames (violates ISO9660)",
" -l, -full-iso9660-filenames Allow full 31 character filenames for ISO9660 names",
" -max-iso9660-filenames Allow 37 character filenames for ISO9660 names (violates ISO9660)",
" -N, -omit-version-number Omit version number from ISO9660 filename (violates ISO9660)",
" -o FILE, -output FILE Set output file name",
" -m GLOBFILE, -exclude GLOBFILE",
@ -722,10 +729,10 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -publisher PUB Set Volume publisher",
" -A ID, -appid ID Set Application ID",
" -sysid ID Set System ID",
" -p PREP, -preparer PREP Set Volume preparer",
" -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",
@ -739,7 +746,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -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"
" 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",
@ -753,10 +760,12 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -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",
" --embedded-boot FILE Alias of -G",
" --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",
" -partition_cyl_align MODE Control cylinder alignment: off, on, auto",
" -mips-boot FILE Set mips boot image name (relative to image root)",
" -mipsel-boot FILE Set mipsel boot image name (relative to image root)",
" -B FILES, -sparc-boot FILES Set sparc boot image names",
@ -773,12 +782,20 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" --stdio_sync on|off|number Control forced output to disk files",
" --no-emul-toc Save 64 kB size on random access output files",
" --emul-toc Multi-session history on such output files",
" --old-empty Use old style block addresses for empty files",
" -z, -transparent-compression",
" Enable transparent compression of files",
" -root DIR Set root directory for all new files and directories",
" -old-root DIR Set root directory in previous session that is searched for files",
" --old-root-no-md5 Do not record and use MD5 with -old-root",
" --old-root-no-ino Do not use disk inode numbers with -old-root",
" --old-root-devno Use disk device numbers with -old-root",
" --no_rc Do not execute startup files",
" -v, -verbose Verbose",
" -version Print the current version",
"@End_of_helptexT@"
};
char ra_text[80];
int i;
@ -882,15 +899,23 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
int do_print_size= 0, fd, idx, iso_level= 1, emul_boot= 2;
int option_b= 0, was_failure= 0, fret, lower_r= 0, zero= 0;
int dir_mode= -1, file_mode= -1, count, partition_number, allow_dir_id_ext= 1;
int root_seen= 0, do_md5_mem;
mode_t mode_and, mode_or;
int with_boot_image= 0, with_cat_path= 0, with_emul_toc= 0;
int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1;
int *weight_list= NULL, weight_count= 0;
int *delay_opt_list= NULL, delay_opt_count= 0;
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
char *boot_path, partno_text[8];
char old_root[SfileadrL];
char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt, *rpt, *wpt;
char *rm_merge_args[3];
/* >>> This should not be static. Why is it ? */
static char *sort_weight_args[4]= {"", "-exec", "sort_weight", ""};
struct stat stbuf;
strcpy(ra_text, xorriso->report_about_text);
weight_list= TSOB_FELD(int, (argc / 3) + 1);
@ -907,14 +932,14 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
if(xorriso->boot_image_cat_path[0])
with_cat_path= -1;
adr[0]= indev[0]= msc[0]= 0;
adr[0]= indev[0]= msc[0]= old_root[0]= 0;
for(i= 0; i<argc; i++) {
ret= Xorriso_genisofs_ignore(xorriso, whom, argv, &i, 1);
if(ret == 1)
continue;
if(strcmp(argv[i], "-version")==0) {
sprintf(xorriso->result_line,
"mkisofs 2.01-Emulation Copyright (C) 2010 see libburnia-project.org xorriso\n"
"mkisofs 2.01-Emulation Copyright (C) 2011 see libburnia-project.org xorriso\n"
);
fd= xorriso->dev_fd_1;
if(fd<0)
@ -1021,6 +1046,33 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
if(ret <= 0)
goto problem_handler_1;
} else if(strcmp(argv[i], "-root") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
/* Always absolute */
strcpy(eff_path, "/");
if(Sfile_str(eff_path, argv[i], argv[i][0] != '/') <= 0)
{ret= -1; goto ex;}
strcpy(xorriso->wdi, eff_path);
root_seen= 1;
} else if(strcmp(argv[i], "-old-root") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
/* Always absolute */
strcpy(old_root, "/");
if(Sfile_str(old_root, argv[i], argv[i][0] != '/') <= 0)
{ret= -1; goto ex;}
} else if(strcmp(argv[i], "--old-root-no-md5")==0) {
old_root_md5= 0;
} else if(strcmp(argv[i], "--old-root-devno")==0) {
old_root_dev= 1;
} else if(strcmp(argv[i], "--old-root-no-ino")==0) {
old_root_ino= 0;
} else if(strcmp(argv[i], "--hardlinks")==0) {
Xorriso_option_hardlinks(xorriso, "on", 0);
} else if(strcmp(argv[i], "--acl")==0) {
@ -1126,8 +1178,22 @@ illegal_c:;
if(ret<=0)
goto ex;
}
if(old_root[0] || root_seen) {
Xorriso_option_md5(xorriso, old_root_md5 ? "on" : "off", 0);
Xorriso_option_disk_dev_ino(xorriso,
old_root_dev && old_root_ino ? "on" :
old_root_ino ? "ino_only" : "off", 0);
if(!old_root_ino)
Xorriso_option_hardlinks(xorriso, "without_update", 0);
}
if(indev[0]) {
do_md5_mem= xorriso->do_md5;
if(xorriso->do_md5 & 1) /* MD5 loading is enabled */
xorriso->do_md5|= 32; /* Do not check tags of superblock,tree,session
because growisofs preserves the first sb tag.*/
ret= Xorriso_option_dev(xorriso, indev, 1);
xorriso->do_md5= do_md5_mem;
if(ret<=0)
goto ex;
}
@ -1135,6 +1201,24 @@ illegal_c:;
if(!was_other_option)
{ret= 1; goto ex;}
if(old_root[0]) {
ret= Xorriso_iso_lstat(xorriso, old_root, &stbuf, 0);
if(ret >= 0) {
if(root_seen) {
ret= Xorriso_mkdir(xorriso, xorriso->wdi, 1 | 2);
if(ret < 0)
{ret= -(ret != -1); goto ex;}
} else {
strcpy(xorriso->wdi, "/");
}
if(strcmp(old_root, xorriso->wdi) != 0) {
ret= Xorriso_clone_under(xorriso, old_root, xorriso->wdi, 0);
if(ret <= 0)
goto ex;
}
}
}
xorriso->padding= 300*1024;
for(i= 0; i<argc; i++) {
@ -1183,7 +1267,7 @@ not_enough_args:;
xorriso->padding= 0;
} else if(strcmp(argv[i], "-print-size")==0) {
do_print_size= 1;
} else if(strcmp(argv[i], "-o")==0) {
} else if(strcmp(argv[i], "-o")==0 || strcmp(argv[i], "-output") == 0) {
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-M")==0 || strcmp(argv[i], "-dev")==0 ||
@ -1286,6 +1370,7 @@ not_enough_args:;
strcmp(argv[i], "-partition_offset") == 0 ||
strcmp(argv[i], "-partition_hd_cyl") == 0 ||
strcmp(argv[i], "-partition_sec_hd") == 0 ||
strcmp(argv[i], "-partition_cyl_align") == 0 ||
strcmp(argv[i], "-isohybrid-mbr")==0) {
if(i+1>=argc)
goto not_enough_args;
@ -1323,7 +1408,7 @@ not_enough_args:;
} else if(strcmp(argv[i], "-U") == 0 ||
strcmp(argv[i], "-untranslated-filenames") == 0) {
Xorriso_relax_compliance(xorriso,
"no_force_dots:long_paths:omit_version:full_ascii:lowercase", 0);
"no_force_dots:long_paths:long_names:omit_version:full_ascii:lowercase", 0);
} else if(strcmp(argv[i], "-untranslated_name_len") == 0) {
if(i+1>=argc)
goto not_enough_args;
@ -1336,8 +1421,9 @@ not_enough_args:;
strcmp(argv[i], "-omit-version-number") == 0) {
Xorriso_relax_compliance(xorriso, "omit_version", 0);
} else if(strcmp(argv[i], "-l") == 0 ||
strcmp(argv[i], "-full-iso9660-filenames") == 0) {
Xorriso_relax_compliance(xorriso, "long_paths", 0);
strcmp(argv[i], "-full-iso9660-filenames") == 0 ||
strcmp(argv[i], "-max-iso9660-filenames") == 0) {
Xorriso_relax_compliance(xorriso, "long_names", 0);
} else if(strcmp(argv[i], "-d") == 0 ||
strcmp(argv[i], "-omit-period") == 0) {
Xorriso_relax_compliance(xorriso, "no_force_dots", 0);
@ -1352,6 +1438,16 @@ not_enough_args:;
goto not_enough_args;
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-root") == 0 ||
strcmp(argv[i], "-old-root") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "--old-root-no-md5")==0 ||
strcmp(argv[i], "--old-root-devno")==0 ||
strcmp(argv[i], "--old-root-no-ino")==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-dir-mode") == 0) {
if(i+1>=argc)
goto not_enough_args;
@ -1454,9 +1550,15 @@ not_enough_args:;
strcmp(argv[i], "--no-emul-toc")==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "--old-empty")==0) {
xorriso->do_old_empty= 1;
} else if(strcmp(argv[i], "-disallow_dir_id_ext")==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "--no_rc")==0) {
/* was already handled in Xorriso_prescan_args */;
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
ret= Xorriso_genisofs_count_args(xorriso, argc - i, argv + i, &count, 1);
if(ret > 0) {
@ -1490,16 +1592,57 @@ is_pathspec_2:;
pathspec[0]= 0;
}
strcat(pathspec, eff_path);
add_pt= pathspec;
} else
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;
Sfile_str(pathspec, argv[i], 0);
add_pt= pathspec;
if(old_root[0]) {
/* Split pathspec */
ret= Fileliste__target_source_limit(add_pt, '=', &ept, 0);
if(ret > 0) {
*ept= 0;
iso_rr_pt= add_pt;
disk_pt= ept + 1;
} else {
iso_rr_pt= "/";
disk_pt= add_pt;
}
/* Unescape iso_rr_pt */
strcpy(eff_path, iso_rr_pt);
iso_rr_pt= eff_path;
for(wpt= rpt= iso_rr_pt; *rpt != 0; rpt++) {
if(*rpt == '\\') {
if(*(rpt + 1) == '\\')
rpt++;
else if(*(rpt + 1) == '=')
continue;
}
*(wpt++) = *rpt;
}
*wpt= 0;
if(root_seen) {
ret= Sfile_prepend_path(xorriso->wdi, iso_rr_pt, 0);
if(ret<=0) {
Xorriso_msgs_submit(xorriso, 0, "Effective path gets much too long",
0, "FAILURE", 0);
goto problem_handler_2;
}
}
/* update_merge */
ret= Xorriso_option_update(xorriso, disk_pt, iso_rr_pt, 1 | 8 | 32);
} else {
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) | (root_seen << 2) | 8);
xorriso->allow_graft_points= mem_graft_points;
}
if(ret<=0)
goto problem_handler_2;
was_path= 1;
/* Enforce odd mkisofs defaults on first pathspec */
@ -1526,6 +1669,21 @@ problem_handler_2:;
continue;
goto ex;
}
if(old_root[0]) {
/* Delete all visited nodes which were not found on disk */
if(root_seen)
rm_merge_args[0]= xorriso->wdi;
else
rm_merge_args[0]= "/";
rm_merge_args[1]= "-exec";
rm_merge_args[2]= "rm_merge";
zero= 0;
ret= Xorriso_option_find(xorriso, 3, rm_merge_args, &zero, 2);
if(ret<=0)
goto ex;
}
if(lower_r) {
static char *lower_r_args[3]= {"/", "-exec", "mkisofs_r"};
zero= 0;
@ -1668,7 +1826,8 @@ problem_handler_2:;
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) {
strcmp(argv[i], "-partition_hd_cyl") == 0 ||
strcmp(argv[i], "-partition_cyl_align") == 0) {
if(i+1>=argc)
goto not_enough_args;
i++;
@ -1720,6 +1879,9 @@ problem_handler_boot:;
was_failure= 1;
}
if(xorriso->no_emul_toc & 1)
xorriso->do_padding_by_libisofs= 1;
if(do_print_size) {
ret= Xorriso_option_print_size(xorriso, 1);
goto ex;
@ -1727,7 +1889,7 @@ problem_handler_boot:;
ret= !was_failure;
ex:;
if(was_path && !do_print_size)
if(was_path && (!do_print_size) && !old_root[0])
Xorriso_pacifier_callback(xorriso, "files added", xorriso->pacifier_count,
xorriso->pacifier_total, "", 1);
if(do_print_size && xorriso->volset_change_pending == 1)

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -118,6 +118,8 @@ int Xorriso_extf_destroy(struct XorrisO *xorriso, struct Xorriso_extF **filter,
if(cmd != NULL) {
if(cmd->refcount > 0)
return(0);
if(cmd->path != NULL)
free(cmd->path);
if(cmd->suffix != NULL)
free(cmd->suffix);
if(cmd->argv != NULL) {
@ -128,6 +130,7 @@ int Xorriso_extf_destroy(struct XorrisO *xorriso, struct Xorriso_extF **filter,
}
if(cmd->name != NULL)
free(cmd->name);
free((char *) cmd);
}
free((char *) *filter);
*filter= NULL;
@ -395,7 +398,7 @@ int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
sprintf(xorriso->info_text,
"-set_filter: UID and EUID differ. Will not run external programs.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
return(0);
ret= 0; goto ex;
}
#endif /* ! Xorriso_allow_extf_suiD */

View File

@ -155,6 +155,9 @@ struct FindjoB {
38= sort_weight number
39= hide on|iso_rr|joliet|off
40= estimate_size
41= update_merge disk_equiv
42= rm_merge
43= clear_merge
*/
int action;
int prune;

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -126,6 +126,11 @@ int Xorriso_graft_split(struct XorrisO *xorriso, IsoImage *volume,
if(ret<0)
return(ret);
*node= (IsoNode *) new_dir;
if(xorriso->update_flags & 1) {
ret= Xorriso_mark_update_merge(xorriso, img_name, node, 1);
if(ret <= 0)
return(0);
}
total_parts= size / xorriso->split_size;
if(size % xorriso->split_size)
total_parts++;
@ -213,6 +218,11 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
if(ret <= 0)
goto ex;
}
if(xorriso->update_flags & 1) {
ret= Xorriso_mark_update_merge(xorriso, img_name, *node, 1);
if(ret <= 0)
goto ex;
}
ex:;
if(ret<0) {
@ -611,20 +621,30 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
int target_is_split, hide_attrs;
struct stat stbuf;
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
if(ret<0)
return(ret);
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 (disk_path == NULL && !(flag & 1)) {
Xorriso_msgs_submit(xorriso, 0,
"Program error: Xorriso_graft_in(): disk_path == NULL && !(flag & 1)",
0, "ABORT", 0);
return(-1);
}
if (disk_path == NULL) {
disk_path= "";
} else {
ret= Xorriso_path_is_excluded(xorriso, disk_path, !(flag&4));
if(ret<0)
return(ret);
if(ret>=0)
hide_attrs|= ret;
if(ret>0)
return(3*!!(flag&16));
/* Check for mkisofs-style hidings */
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++) {
@ -638,10 +658,14 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
break;
}
if(cpt!=NULL) {
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
if(disk_path[0])
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
sprintf(xorriso->info_text,
"Unsupported relative addressing in iso_rr_path %s (disk: %s)",
Text_shellsafe(img_path, sfe, 0), Text_shellsafe(disk_path, sfe2, 0));
"Unsupported relative addressing in iso_rr_path %s",
Text_shellsafe(img_path, sfe, 0));
if(disk_path[0])
sprintf(xorriso->info_text + strlen(xorriso->info_text),
" (disk: %s)", Text_shellsafe(disk_path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE", 0);
return(0);
}
@ -740,7 +764,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
return(ret);
if(ret==3) {
sprintf(xorriso->info_text, "User revoked adding of: %s",
Text_shellsafe(disk_path, sfe, 0));
disk_path[0] ? Text_shellsafe(disk_path, sfe, 0)
: Text_shellsafe(img_path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
return(3*!!(flag&16));
}
@ -748,7 +773,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
goto handle_path_node;
}
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
if (disk_path[0])
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
sprintf(xorriso->info_text,
"While grafting '%s' : '%s' exists and may not be overwritten",
img_path, path);
@ -763,7 +789,8 @@ handle_path_node:;
ret= iso_tree_add_new_dir(dir, apt, &hdir);
if(ret<0) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
if(disk_path[0])
Xorriso_msgs_submit(xorriso, 0, disk_path, 0, "ERRFILE", 0);
Xorriso_report_iso_error(xorriso, img_path, ret,
"Cannot create directory", 0, "FAILURE", 1);
sprintf(xorriso->info_text,
@ -771,13 +798,19 @@ handle_path_node:;
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
if(xorriso->update_flags & 1) {
ret= Xorriso_mark_update_merge(xorriso, path, (IsoNode *) hdir, 1);
if(ret <= 0)
return(0);
}
dir= hdir;
Xorriso_set_change_pending(xorriso, 0);
iso_node_set_ctime((IsoNode *) dir, time(NULL));
iso_node_set_uid((IsoNode *) dir, geteuid());
iso_node_set_gid((IsoNode *) dir, getegid());
if(disk_path!=NULL && !done)
if(disk_path[0] && !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,
@ -899,6 +932,7 @@ unsupported_type:;
/* @param flag bit0= do not produce info message on success
bit1= do not raise protest if directory already exists
@return 1=success,
0=was already directory, -1=was other type, -2=other error
*/
@ -911,8 +945,10 @@ int Xorriso_mkdir(struct XorrisO *xorriso, char *path, int flag)
if(ret<0)
return(-2);
if(ret>0) {
if(ret == 2 && (flag & 2))
return(0);
sprintf(xorriso->info_text,"-mkdir: Address already existing %s",
Text_shellsafe(eff_path, sfe, 0));
Text_shellsafe(eff_path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0,
(ret==2 ? "WARNING" : "FAILURE"), 0);
return(-1+(ret==2));
@ -1187,6 +1223,38 @@ ex:;
}
int Xorriso_overwrite_dest(struct XorrisO *xorriso, void *boss_iter,
char *eff_dest, int dest_ret, char *activity,
int flag)
{
int ret;
char sfe[5*SfileadrL];
if(dest_ret==2 && xorriso->do_overwrite!=1) {
sprintf(xorriso->info_text, "%s: May not overwrite directory: %s",
activity, Text_shellsafe(eff_dest, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
} else if (dest_ret==1 && !xorriso->do_overwrite) {
sprintf(xorriso->info_text, "%s: May not overwite: %s",
activity, Text_shellsafe(eff_dest, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
} else if(dest_ret>0) {
ret= Xorriso_rmi(xorriso, boss_iter, (off_t) 0, eff_dest, 1|8);
if(ret<=0)
return(0);
if(ret==3) {
sprintf(xorriso->info_text, "%s: User revoked removal of: %s",
activity, Text_shellsafe(eff_dest, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
return(0);
}
}
return(1);
}
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
*/
@ -1249,27 +1317,10 @@ int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter,
}
/* Check whether destination exists and may be not overwriteable */
if(dest_ret==2 && xorriso->do_overwrite!=1) {
sprintf(xorriso->info_text, "Renaming may not overwrite directory: %s",
Text_shellsafe(eff_dest, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
} else if (dest_ret==1 && !xorriso->do_overwrite) {
sprintf(xorriso->info_text, "Renaming may not overwite: %s",
Text_shellsafe(eff_dest, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
} else if(dest_ret>0) {
ret= Xorriso_rmi(xorriso, boss_iter, (off_t) 0, eff_dest, 1|8);
if(ret<=0)
return(0);
if(ret==3) {
sprintf(xorriso->info_text, "User revoked renaming of: %s",
Text_shellsafe(eff_origin, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
return(0);
}
}
ret= Xorriso_overwrite_dest(xorriso, boss_iter,
eff_dest, dest_ret, "Renaming", 0);
if(ret <= 0)
return(ret);
/* Ensure existence of destination directory */
strcpy(dir_adr, eff_dest);
@ -1345,6 +1396,175 @@ int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter,
}
int Xorriso_cannot_clone(struct XorrisO *xorriso, char *eff_origin,
char *eff_dest, int iso_error, int flag)
{
Xorriso_report_iso_error(xorriso, eff_dest, iso_error, "Cannot clone",
0, "FAILURE", 1);
sprintf(xorriso->info_text, "Failed to clone ");
Text_shellsafe(eff_origin, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
/* @param flag bit0= for iso_tree_clone() : merge directories
bit1= do not issue NOTE message
*/
int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter,
char *origin, char *dest, int flag)
{
int ret, dest_ret, l;
char eff_dest[SfileadrL], eff_origin[SfileadrL], dir_adr[SfileadrL];
char *leafname;
IsoImage *volume;
IsoDir *new_parent;
IsoNode *origin_node, *dir_node, *new_node;
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret <= 0)
return(ret);
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, origin, eff_origin, 0);
if(ret<=0)
return(ret);
ret= Xorriso_node_from_path(xorriso, volume, eff_origin, &origin_node, 0);
if(ret <= 0)
return(ret);
dest_ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, dest, eff_dest,1);
if(dest_ret<0)
return(dest_ret);
if(dest_ret > 0) {
if(eff_dest[0] == 0)
strcpy(eff_dest, "/");
sprintf(xorriso->info_text,
"Cloning: Copy address already exists: ");
Text_shellsafe(eff_dest, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
} else {
/* obtain eff_dest address despite it does not exist */
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, dest, eff_dest, 2);
if(ret<=0)
return(ret);
}
/* Obtain parent path and leaf name */
strcpy(dir_adr, eff_dest);
for(l= strlen(dir_adr); l > 0; ) {
if(dir_adr[l - 1] == '/')
dir_adr[--l]= 0;
else
break;
}
leafname= strrchr(dir_adr, '/');
if(leafname == NULL) {
leafname= dir_adr;
if (leafname[0] == 0) {
Xorriso_msgs_submit(xorriso, 0, "Empty file name as clone destination",
0, "FAILURE", 0);
return(0);
}
} else {
*leafname= 0;
leafname++;
if(dir_adr[0] != 0) {
/* Ensure existence of destination directory */
ret= Xorriso_graft_in(xorriso, boss_iter, NULL, dir_adr,
(off_t) 0, (off_t) 0, 1);
if(ret <= 0)
return(ret);
}
}
ret= Xorriso_node_from_path(xorriso, volume, dir_adr, &dir_node, 0);
if(ret <= 0)
return(ret);
new_parent= (IsoDir *) dir_node;
ret = iso_tree_clone(origin_node, new_parent, leafname, &new_node, flag & 1);
Xorriso_process_msg_queues(xorriso,0);
if(ret < 0) {
Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, ret, 0);
return(0);
}
Xorriso_set_change_pending(xorriso, 0);
if(!(flag & 2)) {
strcpy(xorriso->info_text, "Cloned in ISO image: ");
Text_shellsafe(eff_origin, xorriso->info_text, 1);
strcat(xorriso->info_text, " to ");
Text_shellsafe(eff_dest, xorriso->info_text, 1);
strcat(xorriso->info_text, "\n");
Xorriso_info(xorriso, 0);
}
return(1);
}
int Xorriso_clone_under(struct XorrisO *xorriso, char *origin, char *dest,
int flag)
{
int ret, pass;
char eff_dest[SfileadrL], eff_origin[SfileadrL], *namept;
IsoDir *origin_dir, *dest_dir;
IsoDirIter *iter= NULL;
IsoNode *origin_node, *new_node;
IsoImage *volume;
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret <= 0)
return(ret);
ret= Xorriso_dir_from_path(xorriso, "Copy source", origin, &origin_dir, 0);
if(ret <= 0)
return(ret);
ret= Xorriso_dir_from_path(xorriso, "Copy destination", dest, &dest_dir, 0);
if(ret <= 0)
return(ret);
for(pass= 0; pass < 2; pass++) {
ret= iso_dir_get_children(origin_dir, &iter);
if(ret < 0) {
Xorriso_cannot_create_iter(xorriso, ret, 0);
{ret= -1; goto ex;}
}
Xorriso_process_msg_queues(xorriso,0);
while(iso_dir_iter_next(iter, &origin_node) == 1) {
namept= (char *) iso_node_get_name(origin_node);
sprintf(eff_origin, "%s/%s", origin, namept);
sprintf(eff_dest, "%s/%s", dest, namept);
if(pass == 0) {
ret= Xorriso_node_from_path(xorriso, volume, eff_dest, &new_node, 1);
if(ret < 0)
goto ex;
if(ret > 0) {
sprintf(xorriso->info_text, "Cloning: Copy address already exists: ");
Text_shellsafe(eff_dest, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
} else {
ret = iso_tree_clone(origin_node, dest_dir, namept, &new_node, 1);
Xorriso_process_msg_queues(xorriso,0);
if(ret < 0) {
Xorriso_cannot_clone(xorriso, eff_origin, eff_dest, ret, 0);
ret= 0; goto ex;
}
}
}
iso_dir_iter_free(iter);
iter= NULL;
}
Xorriso_set_change_pending(xorriso, 0);
ret= 1;
ex:;
if(iter != NULL)
iso_dir_iter_free(iter);
Xorriso_process_msg_queues(xorriso,0);
return(ret);
}
int Xorriso_set_st_mode(struct XorrisO *xorriso, char *in_path,
mode_t mode_and, mode_t mode_or, int flag)
{
@ -1656,8 +1876,8 @@ int Xorriso_widen_hardlink(struct XorrisO *xorriso, void * boss_iter,
/* >>> compare_result bit17 = is_split */;
ret= Xorriso_update_interpreter(xorriso, boss_iter, compare_result, disk_path,
abs_path, 1);
ret= Xorriso_update_interpreter(xorriso, boss_iter, NULL,
compare_result, disk_path, abs_path, 1);
if(ret <= 0)
return(ret);
return(ret);
@ -1886,10 +2106,13 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
Findjob_set_start_path(subjob, abs_path, 0);
ret= Xorriso_findi(xorriso, subjob, boss_iter, boss_mem, NULL,
abs_path, &dir_stbuf, depth, 1);
} else if(action==14 || action==17) { /* compare , update */
} else if(action==14 || action==17 || action == 41) {
/* compare , update , update_merge */
Findjob_get_start_path(job, &iso_prefix, 0);
ret= Xorriso_find_compare(xorriso, (void *) boss_iter, abs_path,
iso_prefix, target, (action==17)|((flag&1)<<1));
ret= Xorriso_find_compare(xorriso, (void *) boss_iter, (void *) node,
abs_path, iso_prefix, target,
(action == 17 || action == 41)
| ((flag&1)<<1) | ((action == 41) << 2));
if(ret==2)
deleted= 1;
if(ret==3)
@ -1970,6 +2193,17 @@ int Xorriso_findi_action(struct XorrisO *xorriso, struct FindjoB *job,
if(ret > 0)
ret= Xorriso_estimate_file_size(xorriso, job, basename, stbuf.st_mode,
stbuf.st_size, 0);
} else if(action == 42) { /* rm_merge */
ret= Xorriso_mark_update_merge(xorriso, show_path, node, 2 | 4);
if(ret == 2) {
ret= Xorriso_rmi(xorriso, boss_iter, boss_mem, abs_path, 1|hflag);
sprintf(xorriso->info_text, "Deleted ");
Text_shellsafe(show_path, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
deleted= 1;
}
} else if(action == 43) { /* clear_merge */
ret= Xorriso_mark_update_merge(xorriso, show_path, node, 2 | 4);
} else { /* includes : 15 in_iso */
sprintf(xorriso->result_line, "%s\n", Text_shellsafe(show_path, sfe, 0));
Xorriso_result(xorriso, 0);
@ -2372,9 +2606,10 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
mem= boss_mem;
hflag= 1;
if(action==1 || action==2 || action==3 || action==17 || action == 28 ||
action == 32)
action == 32 || action == 41 || action == 42)
hflag|= 2; /* need freedom to manipulate image */
if(action==14 || action==17 || action == 28 || action == 35 || action == 36)
if(action==14 || action==17 || action == 28 || action == 35 || action == 36 ||
action == 41)
hflag|= 4; /* need LBA sorted iteration for good data reading performance */
ret= Xorriso_findi_iter(xorriso, dir_node, &mem,
&iter, &node_array, &node_count, &node_idx,
@ -2786,3 +3021,92 @@ ex:;
return(ret);
}
int Xorriso__mark_update_xinfo(void *data, int flag)
{
/* data is an int disguised as pointer. It does not point to memory. */
return(1);
}
int Xorriso__mark_update_cloner(void *old_data, void **new_data, int flag)
{
*new_data= NULL;
if(flag)
return(ISO_XINFO_NO_CLONE);
if(old_data == NULL)
return(0);
/* data is an int disguised as pointer. It does not point to memory. */
*new_data= old_data;
return(0);
}
/* @param flag bit0= found on disk
bit1= inquire visit-found status:
1=not visited, 2=not found, 3=found
bit2= with bit1: delete xinfo before returning status
*/
int Xorriso_mark_update_merge(struct XorrisO *xorriso, char *path,
void *in_node, int flag)
{
int ret;
void *xipt= NULL;
IsoNode *node;
if(in_node == NULL) {
ret= Xorriso_node_from_path(xorriso, NULL, path, &node, 0);
if(ret <= 0)
return(ret);
} else
node= (IsoNode *) in_node;
ret= iso_node_get_xinfo(node, Xorriso__mark_update_xinfo, &xipt);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when looking for update_merge xinfo",
0, "FAILURE", 1);
return(0);
}
if(flag & 2) { /* Inquire status and optionally delete xinfo */
if(ret == 0)
return(1);
if(flag & 4) {
ret= iso_node_remove_xinfo(node, Xorriso__mark_update_xinfo);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when removing update_merge xinfo",
0, "FAILURE", 1);
return(0);
}
}
if(((char *) &xipt)[0])
return(3);
return(2);
}
/* xipt is a byte value disguised as void pointer */
if(ret == 1) {
if(((char *) &xipt)[0])
return(1);
if(!(flag & 1))
return(1);
} else
((char *) &xipt)[0]= 0;
if(flag & 1)
((char *) &xipt)[0]= 1;
ret= iso_node_remove_xinfo(node, Xorriso__mark_update_xinfo);
if(ret < 0)
goto set_error;
ret= iso_node_add_xinfo(node, Xorriso__mark_update_xinfo, xipt);
if(ret <= 0) {
set_error:;
Xorriso_process_msg_queues(xorriso,0);
Xorriso_report_iso_error(xorriso, "", ret,
"Error when trying to set update_merge xinfo",
0, "FAILURE", 1);
return(0);
}
return(1);
}

View File

@ -67,6 +67,8 @@ int Xorriso_all_node_array(struct XorrisO *xorriso, int addon_nodes, int flag);
int Xorriso__file_start_lba(IsoNode *node, int *lba, int flag);
int Xorriso__mark_update_xinfo(void *data, int flag);
int Xorriso__mark_update_cloner(void *old_data, void **new_data, int flag);
#endif /* ! Xorriso_pvt_iso_manip_includeD */

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -1472,36 +1472,19 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
*/
int Xorriso_ls(struct XorrisO *xorriso, int flag)
{
int ret, is_dir= 0, i, filec= 0, failed_at, no_sort= 0;
int ret, i, filec= 0, failed_at, no_sort= 0;
IsoNode *node, **node_array= NULL;
IsoDir *dir_node;
IsoImage *volume;
IsoDirIter *iter= NULL;
char sfe[5*SfileadrL], sfe2[5*SfileadrL], link_target[SfileadrL], *npt, *rpt;
struct stat stbuf;
rpt= xorriso->result_line;
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret<=0)
return(ret);
ret= Xorriso_node_from_path(xorriso, volume, xorriso->wdi, &node, 0);
if(ret<=0)
goto wdi_is_not_a_dir;
if(LIBISO_ISDIR(node))
is_dir= 1;
if(!is_dir) {
wdi_is_not_a_dir:;
sprintf(xorriso->info_text,
"Working directory path does not lead to a directory in ISO image");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
if(flag&2)
{ret= 1; goto ex;}
dir_node= (IsoDir *) node;
ret= Xorriso_dir_from_path(xorriso, "Working directory", xorriso->wdi,
&dir_node, 0);
if(ret <= 0)
goto ex;
ret= iso_dir_get_children(dir_node, &iter);
if(ret<0) {
cannot_create_iter:;
@ -2153,6 +2136,34 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
}
int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose,
char *path, IsoDir **dir_node, int flag)
{
IsoImage *volume;
IsoNode *node;
int ret, is_dir= 0;
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret<=0)
return(ret);
ret= Xorriso_node_from_path(xorriso, volume, path, &node, 0);
if(ret<=0)
goto wdi_is_not_a_dir;
if(LIBISO_ISDIR(node))
is_dir= 1;
if(!is_dir) {
wdi_is_not_a_dir:;
sprintf(xorriso->info_text,
"%s path does not lead to a directory in ISO image", purpose);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
*dir_node= (IsoDir *) node;
return(1);
}
/*
@param flag bit0= do not remove leading slash
bit1= append flatly to result_line and put out

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -35,6 +35,9 @@ int Xorriso_get_node_by_path(struct XorrisO *xorriso,
char *in_path, char *eff_path,
IsoNode **node, int flag);
int Xorriso_dir_from_path(struct XorrisO *xorriso, char *purpose,
char *path, IsoDir **dir_node, int flag);
int Xorriso_node_get_dev(struct XorrisO *xorriso, IsoNode *node,
char *path, dev_t *dev, int flag);

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -23,7 +23,14 @@
#include <sys/time.h>
#include <time.h>
#include <errno.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#endif
/* for -charset */
#include <iconv.h>
@ -48,6 +55,7 @@
#include "xorrisoburn.h"
#include "lib_mgt.h"
#include "iso_manip.h"
int Xorriso_abort(struct XorrisO *xorriso, int flag)
@ -196,6 +204,9 @@ LIBISOBURN_MISCONFIGURATION_ = 0;
zisofs_ctrl.compression_level;
}
iso_node_xinfo_make_clonable(Xorriso__mark_update_xinfo,
Xorriso__mark_update_cloner, 0);
/* Second initialization. This time with libs. */
Xorriso_preparer_string(xorriso, xorriso->preparer_id, 0);

View File

@ -1,10 +1,13 @@
#!/bin/sh
#
# Produce man page xorriso/xorriso.1 and info file xorriso/xorriso.info
# from base file xorris/xorriso.texi.
# from base file xorriso/xorriso.texi.
# Same for xorriso/xorrisofs.texi.
( cd xorriso ; makeinfo ./xorriso.texi )
( cd xorriso ; makeinfo ./xorrisofs.texi )
xorriso/make_xorriso_1 -auto
xorriso/make_xorriso_1 -auto -xorrisofs

View File

@ -3,11 +3,12 @@
( cd xorriso ; cc -g -Wall -o make_xorriso_1 make_xorriso_1.c )
*/
/*
Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1.
Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1
resp. from xorriso/xorrisofs.texi to xorriso/xorrisofs.1
The conversion rules are described at the beginning of xorriso/xorriso.texi
Copyright 2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2010 - 2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
*/
@ -228,10 +229,20 @@ int Mx1_convert(struct Mx1 *m, char line_in[256], char line_out[256], int flag)
}
strcat(buf, "\\");
}
/* Substitute option text */
raw= strlen(buf);
strcat(buf, word);
ret= Mx1_substitute(m, buf, line_out, raw, 0);
if(ret <= 0)
return(-1);
strcpy(buf, line_out);
strcat(buf, "\\fR");
raw= strlen(buf);
strcat(buf, remainder);
/* Substitute arguments text */
ret= Mx1_substitute(m, buf, line_out, raw, 0);
if(ret <= 0)
return(-1);
@ -271,8 +282,8 @@ int main(int argc, char **argv)
{
int ret, l, as_filter= 0, i;
char line_in[256], line_out[256], *got;
static char name_in[]= {"xorriso/xorriso.texi"};
static char name_out[]= {"xorriso/xorriso.1"};
static char name_in[1024]= {"xorriso/xorriso.texi"};
static char name_out[1024]= {"xorriso/xorriso.1"};
struct Mx1 m;
FILE *fp_in= stdin, *fp_out= stdout;
@ -280,9 +291,10 @@ int main(int argc, char **argv)
if(argc < 2) {
usage:;
fprintf(stderr, "usage: %s -auto|-filter\n", argv[0]);
fprintf(stderr, " -auto xorriso/xorriso.texi -> xorriso/xorriso.1\n");
fprintf(stderr, " -filter stdin -> stdout\n");
fprintf(stderr, "usage: %s -auto|-filter|[-xorrisofs]\n", argv[0]);
fprintf(stderr, " -auto xorriso/xorriso.texi -> xorriso/xorriso.1\n");
fprintf(stderr, " -filter stdin -> stdout\n");
fprintf(stderr, " -xorrisofs process xorriso/xorrisofs.texi\n");
exit(2);
}
for(i= 1; i < argc; i++) {
@ -290,7 +302,10 @@ usage:;
as_filter= 1;
else if(strcmp(argv[i], "-auto") == 0)
as_filter= 0;
else {
else if(strcmp(argv[i], "-xorrisofs") == 0) {
strcpy(name_in, "xorriso/xorrisofs.texi");
strcpy(name_out, "xorriso/xorrisofs.1");
} else {
fprintf(stderr, "%s : unknown option %s\n", argv[0], argv[i]);
goto usage;
}

View File

@ -1,7 +1,7 @@
#!/bin/sh
# make_xorriso_standalone.sh
# Copyright 2008 - 2010 Thomas Schmitt, scdbackup@gmx.net, GPLv2+
# Copyright 2008 - 2011 Thomas Schmitt, scdbackup@gmx.net, GPLv2+
#
# Not intended for general use in production installations !
#
@ -40,7 +40,7 @@ create_gnu_xorriso="yes"
current_dir=$(pwd)
lone_dir="$current_dir"/"xorriso-standalone"
xorriso_rev=0.6.7
xorriso_rev=1.0.4
# For unstable uploads and patch level 0 of stable releases:
xorriso_pl=""
# For higher patch levels of stable releases:
@ -189,11 +189,16 @@ copy_files \
\
xorriso/changelog.txt \
xorriso/xorriso_eng.html \
xorriso/make_docs.sh \
xorriso/xorriso.texi \
xorriso/xorriso.info \
xorriso/xorrisofs.texi \
xorriso/xorrisofs.info \
xorriso/make_xorriso_1.c \
xorriso/xorriso.1 \
xorriso/xorrisofs.1 \
xorriso/man_1_xorriso.html \
xorriso/man_1_xorrisofs.html \
"$lone_dir"/xorriso
copy_files COPYRIGHT "$lone_dir"/xorriso
@ -263,7 +268,7 @@ then
copy_files xorriso/COPYING_gnu_xorriso "$lone_dir"/COPYING
copy_files xorriso/AUTHORS_gnu_xorriso "$lone_dir"/AUTHORS
# patch xorriso/xorriso.c to be GNU xorriso
# patch xorriso/xorriso.h to be GNU xorriso
sed -e's/define Xorriso_libburnia_xorrisO/define Xorriso_GNU_xorrisO/' \
-e's/This may be changed to Xorriso_GNU_xorrisO in order to c/C/' \
<xorriso/xorriso.h >"$lone_dir"/xorriso/xorriso.h

118
xorriso/man_xorriso_to_html.sh Executable file
View File

@ -0,0 +1,118 @@
#!/bin/sh
#
# man_xorriso_to_html.sh - ts A80118 , B10309
#
# Generates a HTML version of man page xorriso.1
#
# To be executed in the libisoburn toplevel directory (eg. ./libisoburn-0.1.0)
#
# set -x
man_dir=$(pwd)"/xorriso"
export MANPATH="$man_dir"
manpage="xorriso"
raw_html=$(pwd)/"xorriso/raw_man_1_xorriso.html"
htmlpage=$(pwd)/"xorriso/man_1_xorriso.html"
if test -r "$man_dir"/"$manpage".1
then
dummy=dummy
else
echo "Cannot find readable man page source $1" >&2
exit 1
fi
if test -e "$man_dir"/man1
then
dummy=dummy
else
ln -s . "$man_dir"/man1
fi
if test "$1" = "-work_as_filter"
then
# set -x
sed \
-e 's/<meta name="generator" content="groff -Thtml, see www.gnu.org">/<meta name="generator" content="groff -Thtml, via man -H, via xorriso\/convert_man_to_html.sh">/' \
-e 's/<meta name="Content-Style" content="text\/css">/<meta name="Content-Style" content="text\/css"><META NAME="description" CONTENT="man page of xorriso"><META NAME="keywords" CONTENT="man xorriso, manual, xorriso, CD, CD-RW, CD-R, burning, cdrecord, compatible"><META NAME="robots" CONTENT="follow">/' \
-e 's/<title>XORRISO<\/title>/<title>man 1 xorriso<\/title>/' \
-e 's/<h1 align=center>XORRISO<\/h1>/<h1 align=center>man 1 xorriso<\/h1>/' \
-e 's/<body>/<body BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>/' \
-e 's/<b>Overview of features:<\/b>/\&nbsp;<BR><b>Overview of features:<\/b>/' \
-e 's/<b>General information paragraphs:<\/b>/\&nbsp;<BR><b>General information paragraphs:<\/b>/' \
-e 's/have a look at section EXAMPLES/have a look at section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<b>Session model:<\/b>/\&nbsp;<BR><b>Session model:<\/b>/' \
-e 's/<b>Media types and states:<\/b>/\&nbsp;<BR><b>Media types and states:<\/b>/' \
-e 's/<b>Creating, Growing, Modifying, Blind/\&nbsp;<BR><b>Creating, Growing, Modifying, Blind/' \
-e 's/<b>Libburn drives:<\/b>/\&nbsp;<BR><b>Libburn drives:<\/b>/' \
-e 's/^-dev /\&nbsp;\&nbsp;-dev /' \
-e 's/^-devices /\&nbsp;\&nbsp;-devices /' \
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\&nbsp;<BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
-e 's/<b>Command processing:<\/b>/\&nbsp;<BR><b>Command processing:<\/b>/' \
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\&nbsp;<BR><b>Dialog, Readline, Result pager:<\/b>/' \
-e 's/<b>Aquiring source and target drive:<\/b>/\&nbsp;<BR><b>Aquiring source and target drive:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Influencing the behavior of image/\&nbsp;<BR><b>Influencing the behavior of image/' \
-e 's/<b>Inserting files into ISO image:<\/b>/\&nbsp;<BR><b>Inserting files into ISO image:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>File manipulations:<\/b>/\&nbsp;<BR><b>File manipulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Tree traversal command -find:<\/b>/\&nbsp;<BR><b>Tree traversal command -find:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;iso_rr_pattern/<p>\&nbsp;<BR><b>\&minus;iso_rr_pattern/' \
-e 's/EXAMPLES):<br>/<A HREF="#EXAMPLES">EXAMPLES<\/A>):<br>/' \
-e 's/<b>Filters for data file content:<\/b>/\&nbsp;<BR><b>Filters for data file content:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Writing the result, drive control:<\/b>/\&nbsp;<BR><b>Writing the result, drive control:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^-find \/ /\&nbsp;\&nbsp;-find \/ /' \
-e 's/<b>Settings for file insertion:<\/b>/\&nbsp;<BR><b>Settings for file insertion:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^$<\/b> ln -s/\&nbsp;\&nbsp;$<\/b> ln -s/' \
-e 's/<b>Settings for result writing:<\/b>/\&nbsp;<BR><b>Settings for result writing:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^706k = 706kB/\&nbsp;\&nbsp;706k = 706kB/' \
-e 's/^5540k = 5540kB/\&nbsp;\&nbsp;5540k = 5540kB/' \
-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/' \
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Evaluation of readability and recovery:<\/b>/\&nbsp;<BR><b>Evaluation of readability and recovery:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>osirrox ISO-to-disk restore options:<\/b>/\&nbsp;<BR><b>osirrox ISO-to-disk restore options:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Command compatibility emulations:<\/b>/\&nbsp;<BR><b>Command compatibility emulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;as</<p>\&nbsp;<BR><b>\&minus;as</' \
-e 's/<b>Scripting, dialog and/\&nbsp;<BR><b>Scripting, dialog and/' \
-e 's/^features:<\/b>/features:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Support for frontend/\&nbsp;<BR><b>Support for frontend/' \
-e 's/^listening at stdout:<\/b>/listening at stdout:<\/b><BR>\&nbsp;<BR>/' \
-e 's/xorriso -outdev \/dev\/sr2 \\ -blank fast \\ -pathspecs on/xorriso -outdev \/dev\/sr2 -blank fast -pathspecs on/' \
-e 's/\\ -add \\ \/sounds=\/home\/me\/sounds \\ \/pictures \\ -- \\ -rm_r \\/ -add \/sounds=\/home\/me\/sounds \/pictures -- -rm_r /' \
-e 's/\/sounds\/indecent \\ \&rsquo;\/pictures\/\*private\*\&rsquo; \\/\/sounds\/indecent \&rsquo;\/pictures\/*private*\&rsquo; /' \
-e 's/\/pictures\/confidential \\ -- \\ -add \\/\/pictures\/confidential -- -add/' \
-e 's/xorriso -dev \/dev\/sr2 \\ -rm_r \/sounds -- \\ -mv \\/xorriso -dev \/dev\/sr2 -rm_r \/sounds -- -mv /' \
-e 's/\/pictures\/confidential \\ \/pictures\/restricted \\ -- \\ -chmod/\/pictures\/confidential \/pictures\/restricted -- -chmod/' \
-e 's/go-rwx \/pictures\/restricted -- \\ -pathsspecs on \\ -add \\/go-rwx \/pictures\/restricted -- -pathsspecs on -add /' \
-e 's/\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy /\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy/' \
-e 's/\/movies=\/home\/me\/prepared_for_dvd\/movies \\ -- \\ -commit/\/movies=\/home\/me\/prepared_for_dvd\/movies -- -commit/' \
-e 's/xorriso -indev \/dev\/sr2 \\ -rm_r \/sounds -- \\/xorriso -indev \/dev\/sr2 -rm_r \/sounds -- /' \
-e 's/-outdev \/dev\/sr0 -blank fast \\ -commit -eject all/-outdev \/dev\/sr0 -blank fast -commit -eject all/' \
-e 's/See section FILES/See section <A HREF="#FILES">FILES<\/A>/' \
-e 's/See section EXAMPLES/See section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<\/body>/<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT><\/body>/' \
<"$2" >"$htmlpage"
set +x
chmod u+rw,go+r,go-w "$htmlpage"
echo "Emerged file:"
ls -lL "$htmlpage"
else
export BROWSER='cp "%s" '"$raw_html"
man -H "$manpage"
"$0" -work_as_filter "$raw_html"
rm "$raw_html"
rm "$man_dir"/man1
fi

View File

@ -0,0 +1,79 @@
#!/bin/sh
#
# man_xorrisofs_to_html.sh - ts A80118 , B10309
#
# Generates a HTML version of man page xorrisofs.1
#
# To be executed in the libisoburn toplevel directory (eg. ./libisoburn-0.1.0)
#
# set -x
man_dir=$(pwd)"/xorriso"
export MANPATH="$man_dir"
manpage="xorrisofs"
raw_html=$(pwd)/"xorriso/raw_man_1_xorrisofs.html"
htmlpage=$(pwd)/"xorriso/man_1_xorrisofs.html"
if test -r "$man_dir"/"$manpage".1
then
dummy=dummy
else
echo "Cannot find readable man page source $1" >&2
exit 1
fi
if test -e "$man_dir"/man1
then
dummy=dummy
else
ln -s . "$man_dir"/man1
fi
if test "$1" = "-work_as_filter"
then
# set -x
sed \
-e 's/<meta name="generator" content="groff -Thtml, see www.gnu.org">/<meta name="generator" content="groff -Thtml, via man -H, via xorriso\/convert_man_to_html.sh">/' \
-e 's/<meta name="Content-Style" content="text\/css">/<meta name="Content-Style" content="text\/css"><META NAME="description" CONTENT="man page of xorriso"><META NAME="keywords" CONTENT="man xorrisofs, manual, xorrisofs, ISO 9660, mkisofs, compatible"><META NAME="robots" CONTENT="follow">/' \
-e 's/<title>XORRISOFS<\/title>/<title>man 1 xorrisofs<\/title>/' \
-e 's/<h1 align=center>XORRISOFS<\/h1>/<h1 align=center>man 1 xorrisofs<\/h1>/' \
-e 's/<body>/<body BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>/' \
-e 's/<b>ISO 9660, Rock Ridge, Joliet:<\/b>/\&nbsp;<BR><b>ISO 9660, Rock Ridge, Joliet:<\/b>/' \
-e 's/<b>Inserting files into the ISO image:<\/b>/\&nbsp;<BR><b>Inserting files into the ISO image:<\/b>/' \
-e 's/<b>Relation to program xorriso:<\/b>/\&nbsp;<BR><b>Relation to program xorriso:<\/b>/' \
-e 's/EXAMPLES):<br>/<A HREF="#EXAMPLES">EXAMPLES<\/A>):<br>/' \
-e 's/<b>Image loading:<\/b>/\&nbsp;<BR><b>Image loading:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Settings for file insertion:<\/b>/\&nbsp;<BR><b>Settings for file insertion:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Settings for image production:<\/b>/\&nbsp;<BR><b>Settings for image production:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Settings for standards compliance:<\/b>/\&nbsp;<BR><b>Settings for standards compliance:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Settings for standards extensions:<\/b>/\&nbsp;<BR><b>Settings for standards extensions:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Settings for file hiding:<\/b>/\&nbsp;<BR><b>Settings for file hiding:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>ISO image ID strings:<\/b>/\&nbsp;<BR><b>ISO image ID strings:<\/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>System Area, MBR, other boot blocks:<\/b>/\&nbsp;<BR><b>System Area, MBR, other boot blocks:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Character sets:<\/b>/\&nbsp;<BR><b>Character sets:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Jigdo Template Extraction:<\/b>/\&nbsp;<BR><b>Jigdo Template Extraction:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Miscellaneous options:<\/b>/\&nbsp;<BR><b>Miscellaneous options:<\/b><BR>\&nbsp;<BR>/' \
\
-e 's/<\/body>/<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT><\/body>/' \
<"$2" >"$htmlpage"
set +x
chmod u+rw,go+r,go-w "$htmlpage"
echo "Emerged file:"
ls -lL "$htmlpage"
else
export BROWSER='cp "%s" '"$raw_html"
man -H "$manpage"
"$0" -work_as_filter "$raw_html"
rm "$raw_html"
rm "$man_dir"/man1
fi

View File

@ -94,6 +94,8 @@ int Xorriso_option_acl(struct XorrisO *xorriso, char *mode, int flag)
/* Option -add */
/* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message
bit2= prepend ISO working directory in any case
bit3= unescape \\
*/
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag)
@ -127,19 +129,26 @@ int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
else
rpt= wpt= source;
for(; *rpt!=0; rpt++) {
if(*rpt=='\\')
if(*rpt=='\\') {
if(*(rpt+1)=='=')
continue;
if((flag & 8) && *(rpt + 1) == '\\')
rpt++;
}
*(wpt++)= *rpt;
}
*wpt= 0;
}
if(split==0) {
if(split==0)
strcpy(target, source);
} else if(target[0]!='/') {
if(flag & 4) {
ret= Sfile_prepend_path(xorriso->wdi, target, 0);
if(ret<=0)
if(ret<=0) {
sprintf(xorriso->info_text, "Effective path gets much too long (%d)",
(int) (strlen(xorriso->wdi)+strlen(target)+1));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto problem_handler;
}
}
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, target, eff_path, 2);
@ -927,6 +936,23 @@ treatment_patch:;
}
xorriso->partition_secs_per_head= u;
} else if(strncmp(treatpt, "partition_cyl_align=", 20)==0) {
if(strcmp(treatpt + 20, "auto") == 0)
xorriso->system_area_options= (xorriso->system_area_options & ~0x300);
else if(strcmp(treatpt + 20, "on") == 0)
xorriso->system_area_options=
(xorriso->system_area_options & ~0x300) | 0x100;
else if(strcmp(treatpt + 20, "off") == 0)
xorriso->system_area_options=
(xorriso->system_area_options & ~0x300) | 0x200;
else {
sprintf(xorriso->info_text,
"-boot_image %s partition_cyl_align: unknown mode : %s",
formpt, treatpt + 20);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
} else if(strncmp(treatpt, "platform_id=", 12)==0) {
if(strncmp(treatpt + 12, "0x", 2) == 0)
sscanf(treatpt + 14, "%x", &u);
@ -1672,6 +1698,17 @@ ex:;
}
/* Option -clone */
int Xorriso_option_clone(struct XorrisO *xorriso, char *origin, char *dest,
int flag)
{
int ret;
ret= Xorriso_clone_tree(xorriso, NULL, origin, dest, 0);
return(ret);
}
/* Option -close "on"|"off" */
int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag)
{
@ -1876,6 +1913,102 @@ int Xorriso_option_copyright_file(struct XorrisO *xorriso, char *name, int flag)
}
/* Option -cp_clone */
int Xorriso_option_cp_clone(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag)
{
int i, end_idx_dummy, ret, is_dir= 0, was_failure= 0, fret, pass;
char eff_origin[SfileadrL], eff_dest[SfileadrL], dest_dir[SfileadrL];
char leafname[SfileadrL];
int optc= 0;
char **optv= NULL;
struct stat stbuf;
ret= Xorriso_cpmv_args(xorriso, "-cp_clone", argc, argv, idx,
&optc, &optv, eff_dest, 1);
if(ret<=0)
goto ex;
if(ret == 1 && optc > 1) {
nondir_exists:;
sprintf(xorriso->info_text,
"-cp_clone: Copy address already exists and is not a directory: ");
Text_shellsafe(eff_dest, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
{ret= 0; goto ex;}
}
strcpy(dest_dir, eff_dest);
if(optc == 1) {
ret= Xorriso_iso_lstat(xorriso, eff_dest, &stbuf, 0);
if(ret >= 0) {
if(S_ISDIR(stbuf.st_mode))/* target directory exists */
is_dir= 1;
else
goto nondir_exists;
}
} else {
is_dir= 1;
ret= Xorriso_mkdir(xorriso, dest_dir, 1 | 2);
if(ret < 0)
{ret= -(ret != -1); goto ex;}
}
/* Pass 0 checks whether the way is clear, pass 1 does the cloning */
for(pass= 0; pass < 2; pass++) {
for(i= 0; i<optc; i++) {
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi,
optv[i], eff_origin, !!pass);
if(ret<=0 || xorriso->request_to_abort)
goto problem_handler;
if(is_dir) {
ret= Sfile_leafname(eff_origin, leafname, 0);
if(ret<=0)
goto problem_handler;
strcpy(eff_dest, dest_dir);
ret= Sfile_add_to_path(eff_dest, leafname, 0);
if(ret<=0) {
sprintf(xorriso->info_text, "Effective path gets much too long (%d)",
(int) (strlen(eff_dest)+strlen(leafname)+1));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto problem_handler;
}
}
ret= Xorriso_iso_lstat(xorriso, eff_dest, &stbuf, 0);
if(pass == 0) {
/* It is ok if both are directories */;
if(ret >= 0 && S_ISDIR(stbuf.st_mode)) {
ret= Xorriso_iso_lstat(xorriso, eff_origin, &stbuf, 0);
if (ret >= 0 && S_ISDIR(stbuf.st_mode))
ret= -1;
}
if(ret >= 0) {
sprintf(xorriso->info_text, "Cloning: May not overwrite: ");
Text_shellsafe(eff_dest, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
goto problem_handler;
}
} else {
ret= Xorriso_clone_tree(xorriso, NULL, eff_origin, eff_dest, 1);
if(ret <= 0)
goto problem_handler;
}
continue; /* regular bottom of loop */
problem_handler:;
was_failure= 1;
fret= Xorriso_eval_problem_status(xorriso, ret, 1|2);
if(fret>=0)
continue;
goto ex;
}
}
ret= !was_failure;
ex:;
Xorriso_opt_args(xorriso, "-cp_clone",
argc, argv, *idx, &end_idx_dummy, &optc, &optv, 256);
return(ret);
}
/* Option -cpr alias -cpri */
int Xorriso_option_cpri(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag)

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -399,6 +399,8 @@ int Xorriso_option_errfile_log(struct XorrisO *xorriso,
sprintf(xorriso->info_text, "-errfile_log: Unknown mode %s",
Text_shellsafe(mode, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
if(fp != NULL)
fclose(fp);
return(0);
}
@ -875,15 +877,22 @@ not_enough_exec_arguments:;
job= new_job;
} else if(strcmp(cpt, "compare")==0 || strcmp(cpt, "update")==0 ||
strcmp(cpt, "widen_hardlinks")==0) {
strcmp(cpt, "widen_hardlinks")==0 ||
strcmp(cpt, "update_merge")==0) {
if(i+1>=end_idx)
goto not_enough_exec_arguments;
i++;
action= 14;
if(strcmp(cpt, "update")==0)
action= 17;
if(strcmp(cpt, "widen_hardlinks")==0)
else if(strcmp(cpt, "widen_hardlinks")==0)
action= 32;
else if(strcmp(cpt, "update_merge") == 0) {
action= 41;
/* Enter update_merge mode for node adding */
xorriso->update_flags|= 1;
}
ret= Xorriso_make_abs_adr(xorriso, xorriso->wdx, argv[i],
other_path_start, 1|2|4|8);
if(ret<=0)
@ -1009,6 +1018,12 @@ not_enough_exec_arguments:;
Findjob_set_action_type(job, 39, type, 0);
} else if(strcmp(cpt, "estimate_size")==0) {
Findjob_set_action_target(job, 40, NULL, 0);
} else if(strcmp(cpt, "rm_merge")==0) {
Findjob_set_action_target(job, 42, NULL, 0);
xorriso->update_flags&= ~1; /* End update_merge mode for node adding */
} else if(strcmp(cpt, "clear_merge")==0) {
Findjob_set_action_target(job, 43, NULL, 0);
xorriso->update_flags&= ~1; /* End update_merge mode for node adding */
} else {
sprintf(xorriso->info_text, "-find -exec: unknown action %s",
Text_shellsafe(argv[i], sfe, 0));
@ -1599,6 +1614,11 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Create empty directories if they do not exist yet.",
" -rmdir iso_rr_path [***]",
" Delete empty directories.",
" -clone iso_rr_path_original iso_rr_path_copy",
" Create an ISO copy of an ISO file or ISO directory tree.",
" -cp_clone iso_rr_path_original [***] iso_rr_path_dest",
" Create ISO to ISO copies according to the rules of cp -r.",
"",
" -- Default list delimiter marking the end of action argument",
" list. It may be changed by option -list_delimiter.",
"",
@ -1670,7 +1690,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Give up any unejected drive afterwards.",
" -close \"on\"|\"off\"",
" If \"on\" then mark the written media as not appendable.",
" -padding number[\"k\"|\"m\"]",
" -padding number[\"k\"|\"m\"]|\"included\"|\"appended\"",
" Append extra bytes to image stream. (Default is 300k)",
" -dummy \"on\"|\"off\"",
" If \"on\" simulate burning. Refuse if media cannot simulate.",

View File

@ -641,6 +641,10 @@ int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag)
xorriso->do_md5|= 8;
else if(l == 19 && strncmp(cpt, "stability_check_off", l) == 0)
xorriso->do_md5&= ~8;
else if(l == 13 && strncmp(cpt, "load_check_on", l) == 0)
xorriso->do_md5&= ~32;
else if(l == 14 && strncmp(cpt, "load_check_off", l) == 0)
xorriso->do_md5|= 32;
else {
sprintf(xorriso->info_text, "-md5: unknown mode ");
Text_shellsafe(cpt, xorriso->info_text, 1);

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -54,7 +54,19 @@ int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
int Xorriso_option_padding(struct XorrisO *xorriso, char *size, int flag)
{
double num;
if(strcmp(size, "included") == 0) {
xorriso->do_padding_by_libisofs= 1;
return(1);
} else if(strcmp(size, "excluded") == 0 || strcmp(size, "appended") == 0) {
xorriso->do_padding_by_libisofs= 0;
return(1);
} else if(size[0] < '0' || size[0] > '9') {
sprintf(xorriso->info_text, "-padding: unrecognized non-numerical mode ");
Text_shellsafe(size, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
num= Scanf_io_size(size, 0);
if(num < 0 || num > 1024.0 * 1024.0 * 1024.0) {
sprintf(xorriso->info_text, "-padding: wrong size %.f (allowed: %.f - %.f)",
@ -1361,6 +1373,9 @@ int Xorriso_option_uid(struct XorrisO *xorriso, char *uid, int flag)
bit2= do not issue pacifier messages at all
bit3= recursive: -update_r
bit4= do not establish and dispose xorriso->di_array
bit5= do not delete files which are not found under
disk_path, but rather mark visited files and mark
files which were found.
*/
int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
char *iso_path, int flag)
@ -1447,7 +1462,10 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
if(ret >= 0) {
argv[0]= eff_dest;
argv[1]= "-exec";
argv[2]= "update";
if(flag & 32)
argv[2]= "update_merge";
else
argv[2]= "update";
argv[3]= eff_origin;
zero= 0;
ret= Xorriso_option_find(xorriso, 4, argv, &zero,
@ -1468,7 +1486,18 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
argv[3]= eff_dest;
zero= 0;
ret= Xorriso_option_find(xorriso, 4, argv, &zero, 1|2); /* -findx */
if(ret>0 && !xorriso->do_follow_mount) {
if(ret>0 && (!xorriso->do_follow_mount) && !(flag & 32)) {
/* >>> ??? what about mount points with (flag & 32) ?
empty_iso_dir shall delete those which already existed
and are freshly excluded. (E.g. by mounting at a non-empty
directory, or by new follow rules.)
This deletion does not match the idea of merging.
For determining the foreign files in a directory which is
target of a mount point, one would have to enter that mount
point directory. Somewhat contrary to do-not-follow.
*/
argv[0]= eff_origin;
argv[1]= "-type";
argv[2]= "m";
@ -1495,13 +1524,17 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
ret= -1;
}
} else {
if(flag & 32)
xorriso->update_flags|= 1; /* Enter update_merge mode for node adding */
/* compare ctime too, no filename reporting, eventually silent */
follow_links= (xorriso->do_follow_links || xorriso->do_follow_param) <<28;
ret= Xorriso_compare_2_files(xorriso, eff_origin, eff_dest, "", &result,
2 | follow_links | ((flag&4)<<27) | (3<<30));
if(ret==0) {
uret= Xorriso_update_interpreter(xorriso, NULL, result, eff_origin,
eff_dest, 0);
if(ret == 0 || (ret > 0 && (flag & 32))) {
if(ret > 0)
result= 0;
uret= Xorriso_update_interpreter(xorriso, NULL, NULL, result, eff_origin,
eff_dest, (!!(flag & 32)) << 1);
if(uret<=0)
ret= -1;
if(uret==3)
@ -1509,7 +1542,7 @@ int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
}
}
xorriso->pacifier_interval= mem_pci;
if(mem_lut!=xorriso->last_update_time && !(flag&2))
if(mem_lut!=xorriso->last_update_time && !(flag & (2 | 4)))
Xorriso_pacifier_callback(xorriso, "content bytes read",
xorriso->pacifier_count, 0, "", 1);
report_outcome:;
@ -1560,7 +1593,7 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag)
sprintf(xorriso->result_line,
"ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program\n");
sprintf(xorriso->result_line+strlen(xorriso->result_line),
"Copyright (C) 2010, Thomas Schmitt <scdbackup@gmx.net>, libburnia project.\n");
"Copyright (C) 2011, Thomas Schmitt <scdbackup@gmx.net>, libburnia project.\n");
Xorriso_result(xorriso, 0);
sprintf(xorriso->result_line,
"xorriso version : %d.%d.%d%s\n",

View File

@ -181,9 +181,9 @@ no_memory:;
ret= 1;
ex:;
if(patterns!=NULL)
free((char *) patterns);
if(ret<=0) {
if(patterns!=NULL)
free((char *) patterns);
Sfile_destroy_argv(&filec, &filev, 0);
} else {
*optc= filec;
@ -314,8 +314,9 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
if(ret==2 || ((flag&1) && *optc > 1 && ret==0)) {
is_dir= 1;
} else if(*optc > 1) {
for(i= 0; i<*optc; i++)
Xorriso_msgs_submit(xorriso, 0, (*optv)[i], 0, "ERRFILE", 0);
if(flag & 2)
for(i= 0; i<*optc; i++)
Xorriso_msgs_submit(xorriso, 0, (*optv)[i], 0, "ERRFILE", 0);
sprintf(xorriso->info_text,
"%s: more than one origin given, destination is a non-directory: %s",
cmd, Text_shellsafe(destv[0], sfe, 0));
@ -477,7 +478,7 @@ 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",
"assert_volid","boot_image","clone","compare","compare_r","drive_class",
"errfile_log","error_behavior","extract","extract_single",
"jigdo","load","logfile",
"map","map_single","page","return_with",
@ -497,7 +498,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"check_md5","check_md5_r","check_media","check_media_defaults",
"chgrp","chgrpi","chgrp_r","chgrp_ri","chmod","chmodi",
"chmod_r","chmod_ri","chown","chowni","chown_r","chown_ri",
"compare_l","cpr","cpri","cp_rax","cp_rx","cpax","cpx",
"compare_l","cp_clone","cp_rax","cp_rx","cpr","cpri", "cpax","cpx",
"du","dui","dus","dusi","dux","dusx","external_filter","extract_l",
"file_size_limit","find","findi","finds","findx",
"getfacl","getfacli","getfacl_r","getfacl_ri",
@ -748,6 +749,10 @@ next_command:;
(*idx)+= 1;
ret= Xorriso_option_chowni(xorriso, arg1, argc, argv, idx, 0);
} else if(strcmp(cmd,"clone")==0) {
(*idx)+= 2;
ret= Xorriso_option_clone(xorriso, arg1, arg2, 1);
} else if(strcmp(cmd,"close")==0) {
(*idx)++;
ret= Xorriso_option_close(xorriso, arg1, 0);
@ -781,13 +786,16 @@ next_command:;
(*idx)++;
Xorriso_option_copyright_file(xorriso, arg1, 0);
} else if(strcmp(cmd,"cpr")==0 || strcmp(cmd,"cpri")==0) {
ret= Xorriso_option_cpri(xorriso, argc, argv, idx, 0);
} else if(strcmp(cmd,"cp_clone") == 0) {
ret= Xorriso_option_cp_clone(xorriso, argc, argv, idx, 0);
} else if(strcmp(cmd,"cp_rx")==0 || strcmp(cmd,"cp_rax")==0) {
ret= Xorriso_option_cpx(xorriso, argc, argv, idx,
1|((strcmp(cmd,"cp_rax")==0)<<1));
} else if(strcmp(cmd,"cpr")==0 || strcmp(cmd,"cpri")==0) {
ret= Xorriso_option_cpri(xorriso, argc, argv, idx, 0);
} else if(strcmp(cmd,"cpx")==0 || strcmp(cmd,"cpax")==0) {
ret= Xorriso_option_cpx(xorriso, argc, argv, idx,
(strcmp(cmd,"cpax")==0)<<1);
@ -1312,7 +1320,6 @@ next_command:;
ret= Xorriso_option_temp_mem_limit(xorriso, arg1, 0);
} else if(strcmp(cmd,"test")==0) { /* This option does not exist. */
/* install temporary test code here */;
} else if(strcmp(cmd,"toc")==0) {
@ -1569,7 +1576,9 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
ret= Xorriso_option_no_rc(xorriso, 0);
if(ret<=0)
goto ex;
} else if(xorriso->argument_emulation >= 1 &&
xorriso->argument_emulation <= 2) {
{ret= 1; goto ex;}
} else if((strcmp(cmd,"dev")==0 || strcmp(cmd,"outdev")==0 ||
strcmp(cmd,"indev")==0) &&
(strcmp(arg1,"stdio:/dev/fd/1")==0 || strcmp(arg1,"-")==0) &&

View File

@ -148,9 +148,24 @@ int Sfile_add_to_path(char path[SfileadrL], char *addon, int flag)
int Sfile_prepend_path(char *prefix, char path[SfileadrL], int flag)
{
int l, i;
int l, i, slashes, prefix_len, path_len;
l= strlen(path)+strlen(prefix)+1;
l= strlen(prefix);
if(l == 0)
return(1);
/* Do not copy slashes between both parts */
for(prefix_len= l; prefix_len > 0; prefix_len--)
if(prefix[prefix_len - 1] != '/')
break;
if(prefix_len == 0)
prefix_len= strlen(prefix) - 1;
path_len= strlen(path);
for(slashes= 0; slashes < path_len; slashes++)
if(path[slashes] != '/')
break;
l= (strlen(path) - slashes) + prefix_len + 1;
if(l>=SfileadrL) {
#ifdef Not_yeT
@ -164,10 +179,16 @@ int Sfile_prepend_path(char *prefix, char path[SfileadrL], int flag)
return(-1);
}
l-= strlen(path);
for(i= strlen(path)+1; i>=0; i--)
path[i+l]= path[i];
strcpy(path,prefix);
path[l-1]= '/';
if(l < 0) {
for(i= slashes; i <= path_len + 1; i++)
path[i+l]= path[i];
} else if(l > 0) {
for(i= path_len + 1; i >= slashes; i--)
path[i+l]= path[i];
}
if(prefix_len > 0)
memcpy(path, prefix, prefix_len);
path[l - 1 + slashes]= '/';
return(1);
}

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -548,6 +548,7 @@ ex:;
/*
@param flag bit0= iso_rr_path is freshly added and up to date
bit1= do not mark as changed content (implied by bit0 too)
bit2= -follow: this is not a command parameter
@return -1= severe error
0= not applicable for hard links
@ -582,7 +583,7 @@ int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
it must be updated now, even if it has currently no siblings
which it leaves or which it joins.
*/
if(!(flag & 1))
if(!(flag & (1 | 2)))
do_overwrite= 1;
Xorriso__get_di(node, &old_dev, &old_ino, 0);

View File

@ -106,7 +106,7 @@ get_single:;
l= strlen(cpt);
if(l >= linesize - base_length - 1) {
strncpy(linept, cpt, linesize - 1);
line[sizeof(line)-1]= 0;
line[linesize - 1]= 0;
sprintf(xorriso->info_text,"Input line too long !");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
goto new_empty;
@ -1295,6 +1295,13 @@ 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);
ret= (xorriso->system_area_options & 0x300) >> 8;
is_default= (ret == 0);
sprintf(line,"-boot_image any partition_cyl_align=%s\n",
ret == 0 ? "auto" : ret == 1 ? "on" : "off");
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);
@ -1616,6 +1623,11 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
sprintf(line,"-padding %dk\n", xorriso->padding/1024);
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->do_padding_by_libisofs == 0);
sprintf(line,"-padding %s\n",
xorriso->do_padding_by_libisofs ? "included" : "appended");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (strcmp(xorriso->report_about_text,"UPDATE")==0);
sprintf(line,"-report_about %s\n",xorriso->report_about_text);
@ -1791,14 +1803,16 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
is_default= ((xorriso->do_md5 & 31) == 0);
sprintf(line, "-md5 ");
if(xorriso->do_md5 & 1) {
if((xorriso->do_md5 & (8)) == (8)) {
strcat(line, "all\n");
if((xorriso->do_md5 & 8) == 8) {
strcat(line, "all");
} else {
strcat(line, "on");
if(xorriso->do_md5 & 8)
strcat(line, ":stability_check_on");
strcat(line, "\n");
}
if(xorriso->do_md5 & 32)
strcat(line, ":load_check_off");
strcat(line, "\n");
} else
strcat(line, "off\n");
if(!(is_default && no_defaults))

View File

@ -2,7 +2,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -25,7 +25,14 @@
#include <errno.h>
#include <fcntl.h>
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#endif
#ifdef Xorriso_standalonE
@ -91,7 +98,7 @@ int Xorriso_make_write_options(
/* @param flag bit0= do not write but only prepare and return size in sectors
bit1= do not use isoburn wrappers
bit1= do not use isoburn wrappers, do not assume libisofs
*/
int Xorriso_sanitize_image_size(struct XorrisO *xorriso,
struct burn_drive *drive, struct burn_disc *disc,
@ -141,7 +148,6 @@ no_track:;
sessions survive and confuse -rom_toc_scan.
*/
xorriso->alignment= 32;
s= isoburn_disc_get_status(drive);
if(s == BURN_DISC_BLANK) {
/* Count blocks before nwa as part of the image */;
@ -152,6 +158,19 @@ no_track:;
}
}
}
if(!(flag & 2)) {
#ifdef Xorriso_with_libjtE
/* JTE : no multi-session, no_emul_toc, padding in libisofs */
if(xorriso->libjte_handle != NULL)
padding= 0;
#endif /* ! Xorriso_with_libjtE */
if(xorriso->do_padding_by_libisofs)
padding= 0;
}
if(xorriso->alignment > 0) {
if(img_sectors > 0) {
ret= isoburn_disc_track_lba_nwa(drive, burn_options, 0, &lba, &nwa);
@ -160,15 +179,9 @@ no_track:;
lba= (nwa + img_sectors + padding) % xorriso->alignment;
if(lba > 0)
padding+= xorriso->alignment - lba;
} 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);
@ -541,7 +554,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 freshly_bootable= 0, hide_attr;
int freshly_bootable= 0, hide_attr, pad_by_libisofs= 0;
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs, *part_image;
struct isoburn_imgen_opts *sopts= NULL;
struct burn_drive_info *dinfo, *source_dinfo;
@ -558,6 +571,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
int profile_number;
char profile_name[80];
IsoBoot *bootcat_node;
uint32_t padding;
ret= Xorriso_finish_hl_update(xorriso, 0);
if(ret <= 0)
@ -741,6 +755,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
((!!(xorriso->do_md5 & 2)) * isoburn_igopt_session_md5) |
((!!(xorriso->do_md5 & 4)) * isoburn_igopt_file_md5) |
((!!(xorriso->do_md5 & 8)) * isoburn_igopt_file_stability) |
((!!xorriso->do_old_empty) * isoburn_igopt_old_empty) |
((flag & 1) * isoburn_igopt_will_cancel);
if(xorriso->no_emul_toc & 1)
ext|= isoburn_igopt_no_emul_toc;
@ -801,12 +816,22 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
if(ret <= 0)
goto ex;
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));
pad_by_libisofs= 1;
}
#endif /* Xorriso_with_libjtE */
if(xorriso->do_padding_by_libisofs || pad_by_libisofs) {
/* Padding to be done by libisofs, not by libburn.
*/
padding= xorriso->padding / 2048;
if(xorriso->padding > padding * 2048)
padding++;
/*
fprintf(stderr, "XORRISO_DEBUG: isoburn_igopt_set_tail_blocks(%d)\n",
(int) padding);
*/
isoburn_igopt_set_tail_blocks(sopts, padding / 2048);
}
/* Make final abort check before starting expensive activities */
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
@ -1207,6 +1232,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
break;
}
}
iso_image_unref(image);
return(1);
}
@ -1998,6 +2024,12 @@ int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
xorriso->relax_compliance= was;
return(0);
} else if((l == 9 && strncmp(cpt, "old_empty", l) == 0) ||
(l == 12 && strncmp(cpt, "old_empty_on", l) == 0)) {
xorriso->do_old_empty= 1;
} else if(l == 13 && strncmp(cpt, "old_empty_off", l) == 0) {
xorriso->do_old_empty= 0;
} else {
if(l<SfileadrL)
sprintf(xorriso->info_text, "-compliance: unknown rule '%s'",
@ -2070,6 +2102,8 @@ int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
xorriso->untranslated_name_len);
if(xorriso->do_iso1999)
sprintf(mode + strlen(mode), ":iso_9660_1999");
if(xorriso->do_old_empty)
sprintf(mode + strlen(mode), ":old_empty");
return(1 +
(r == Xorriso_relax_compliance_defaulT && !(xorriso->no_emul_toc & 1)
&& xorriso->untranslated_name_len == 0 && !xorriso->do_iso1999 &&
@ -2142,7 +2176,6 @@ int Xorriso_set_isolinux_options(struct XorrisO *xorriso,
if(make_isohybrid_mbr) {
sprintf(xorriso->info_text, "Will write isohybrid MBR.");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
xorriso->alignment= 512;
}
ret= el_torito_set_isolinux_options(bootimg,
patch_table | (make_isohybrid_mbr << 1),0);

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 "Jan 06, 2011"
.TH XORRISO 1 "Mar 09, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -757,6 +757,7 @@ are both in effect. This restricts hard linking to other files restored by
the same single extract command. -hardlinks "normal_extract" re-enables
wide and expensive hardlink accumulation.
.br
.TP
\fB\-acl\fR "on"|"off"
Enable or disable processing of ACLs.
If enabled, then xorriso will obtain ACLs from disk file objects,
@ -770,7 +771,7 @@ Enable or disable processing of xattr attributes in user namespace.
If enabled, then xorriso will handle xattr similar to ACL.
See also options -getfattr, -setfattr and above paragraph about xattr.
.TP
\fB\-md5\fR "on"|"all"|"off"
\fB\-md5\fR "on"|"all"|"off"|"load_check_off"
Enable or disable processing of MD5 checksums for the overall session and for
each single data file. If enabled then images get loaded only if eventual
checksums tags of superblock and directory tree match properly. The MD5
@ -791,6 +792,15 @@ Mode "all" will additionally check during image generation whether the checksum
of a data file changed between the time when its reading began and the time
when it ended. This implies reading every file twice.
.br
Mode "load_check_off" together with "on" or "all" will load recorded MD5 sums
but not test the recorded checksum tags of superblock and directory tree.
This is necessary if growisofs was used as burn program, because it does
not overwrite the superblock checksum tag of the first session.
Therefore load_check_off is in effect when xorriso -as mkisofs option -M
is performed.
.br
The test can be re-enabled by mode "load_check_on".
.br
Checksums can be exploited via options -check_md5, -check_md5_r, via find
actions get_md5, check_md5, and via -check_media.
.TP
@ -1050,6 +1060,31 @@ Create empty directories if they do not exist yet.
Existence as directory generates a WARNING event, existence as
other file causes a FAILURE event.
.TP
\fB\-clone\fR iso_rr_path_original iso_rr_path_copy
Create a copy of the ISO file object iso_rr_path_original with the new
address iso_rr_path_copy. If the original is a directory then copy all
files and directories underneath. An eventual boot catalog file gets
not copied but is silently ignored.
.br
The copied ISO file objects have the same attributes. Copied data files
refer to the same content source as their originals.
The copies may then be manipulated independendly of their originals.
.br
This command will refuse execution if the address iso_rr_path_copy
already exists in the ISO tree.
.TP
\fB\-cp_clone\fR iso_rr_path_original [***] iso_rr_path_dest
Create copies of one or more ISO file objects as with command -clone.
Eventually merge directories with existing ones, but do not overwrite
existing ISO file objects.
.br
The rules for generating the copy addresses are the same as with
command -cpr (see above) resp. shell command cp -r. Other than with -cpr,
relative iso_rr_path_original will get prepended the -cd path and not
the -cdx path. Consider to -mkdir iso_rr_path_dest before -cp_clone
so the copy address does not depend on the number of iso_rr_path_original
arguments.
.TP
.B Settings for file insertion:
.TP
\fB\-file_size_limit\fR value [value [...]] --
@ -1625,6 +1660,16 @@ performs command -update with the found file address as
iso_rr_path. The corresponding file address is determined like with above
action "compare".
.br
\fBupdate_merge\fR
is like update but does not delete the found file if it is missing on disk.
It may be run several times and records with all visited files whether their
counterpart on disk has already been seen by one of the update_merge runs.
Finally, a -find run with action "rm_merge" may remove all files that
saw no counterpart on disk.
.br
Up to the next "rm_merge" or "clear_merge" all newly inserted files will
get marked as having a disk counterpart.
.br
\fBrm\fR
removes the found iso_rr_path from the image if it is not a directory
with files in it. I.e. this "rm" includes "rmdir".
@ -1633,6 +1678,14 @@ with files in it. I.e. this "rm" includes "rmdir".
removes the found iso_rr_path from the image, including whole
directory trees.
.br
\fBrm_merge\fR
removes the found iso_rr_path if it was visited by one or more previous actions
"update_merge" and saw no counterpart on disk in any of them. The marking from
the update actions is removed in any case.
.br
\fBclear_merge\fR
removes an eventual marking from action "update_merge".
.br
\fBreport_damage\fR
classifies files whether they hit a data block that is
marked as damaged. The result is printed together with the eventual address
@ -2056,6 +2109,10 @@ but makes the image incapable of displaying its session history.
compliant to ISO 9660:1999. It can record long filenames for readers which
do not understand Rock Ridge.
.br
"old_empty" uses the old way of of giving block addresses in the range
of [0,31] to files with no own data content. The new way is to have
a dedicated block to which all such files will point.
.br
Default setting is
.br
"clear:only_iso_version:deep_paths:long_paths:no_j_force_dots:
@ -2266,7 +2323,7 @@ any more (if possible at all with the given type of target media).
This is the contrary of cdrecord, wodim, cdrskin option -multi,
and is one aspect of growisofs option -dvd-compat.
.TP
\fB\-padding\fR number["k"|"m"]
\fB\-padding\fR number["k"|"m"]|"included"|"appended"
Append the given number of extra bytes to the image stream.
This is a traditional remedy for a traditional bug in block
device read drivers. Needed only for CD recordings in TAO mode.
@ -2274,6 +2331,13 @@ Since one can hardly predict on what media an image might end up,
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 .
.br
Normally padding is not written as part of the ISO image but appended
after the image end. This is -padding mode "appended".
.br
Emulation command -as "mkisofs" and command -jigdo cause padding to be
written as part of the image.
The same effect is achieved by -padding mode "included".
.TP
.B Bootable ISO images:
.PP
@ -2466,11 +2530,29 @@ 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.
.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.
the partition table. 0 chooses a default value. Maximum is 255.
.br
\fBpartition_sec_hd=\fRnumber gives the number of sectors per head for
the partition table. 0 chooses a default value. Maximum is 63.
.br
The product partition_sec_hd * partition_hd_cyl * 512 is the cylinder size.
It should be divisible by 2048 in order to allow exact alignment.
If it is too small to describe the image size by at most 1024 cylinders,
then appropriate values of partition_hd_cyl are chosen with
partition_sec_hd 32 or 63. If the image is larger than 8,422,686,720 bytes,
then the cylinder size constraints cannot be fulfilled.
.br
\fBpartition_cyl_align=\fRmode controls image size alignment to an integer
number of cylinders. It is prescribed by isohybrid specs and it seems to
please program fdisk. Cylinder size must be divisible by 2048.
Images larger than 8,323,596,288 bytes cannot be aligned.
.br
Mode "auto" is default. Alignment by padding happens only with
"isolinux" "partition_table=on".
.br
Mode "on" causes alignment by padding with "partition_table=on" for any type.
Mode "off" disables alignment for any type.
.br
\fBmips_path=\fRiso_rr_path declares a data file in the image to be a
MIPS Big Endian boot file and causes production of a MIPS Big Endian Volume
@ -2945,8 +3027,8 @@ Print the foreseeable consumption of 2048 byte blocks
by next -commit. This can last a while as a -commit gets
prepared and only in last moment is revoked by this option.
The result depends on several settings and also on the kind of output device.
If no -jidgo options are given, then -padding (300 kB by default) is not
counted as part of the image size.
If no -jidgo options are given and not command -as "mkisofs" was used,
then -padding (300 kB by default) is not counted as part of the image size.
.TP
\fB\-tell_media_space\fR
Print available space on output media and the free space after
@ -3090,7 +3172,7 @@ not exist in the ISO image. The report format is the same as with command
.br
\fBadd_missing\fR iso_rr_path_start
adds the counterpart if it does not yet
exist in the ISO image.
exist in the ISO image and marks it for "rm_merge" as non-removable.
.br
E.g.: -findx /home/thomas -exec add_missing /thomas_on_cd --
.br
@ -3491,10 +3573,9 @@ file paths and pathspecs.
A lot of options are not supported and lead to failure of the mkisofs
emulation. Some are ignored, but better do not rely on this tolerance.
.br
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
are interpreted differently than with xorriso option -add. Directories get
merged with the root directory of the ISO image, other filetypes get mapped
into that root directory.
The supported options are documented in detail in xorrisofs.info
and in man xorrisofs. The description here is focused on the effect
of mkisofs emulation in the context of a xorriso run.
.br
Other than with the "cdrecord" personality there is no automatic -commit at
the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
@ -3502,6 +3583,11 @@ the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
persists until things happen like -commit, -rollback, -dev, or end of xorriso.
-pacifier gets set to "mkisofs" if files are added to the image.
.br
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
are interpreted differently than with xorriso option -add. Directories get
merged with the root directory of the ISO image, other filetypes get mapped
into that root directory.
.br
If pathspecs are given and if no output file was chosen before or during the
"mkisofs" option list, then standard output (-outdev "-") will get into effect.
If -o points to a regular file, then it will be truncated to 0 bytes
@ -3516,11 +3602,22 @@ standard output.
-print-size inhibits automatic image production at program end. This ban is
lifted only if the pending image changes get discarded.
.br
Eventual padding is counted as part of the ISO image if not option --emul-toc
is given.
.br
If no -iso-level is given, then level 1 is chosen when the first file or
directory is added to the image. At the same occasion directory names get
allowed to violate the standard by -compliance option allow_dir_id_ext.
This may be avoided by option -disallow_dir_id_ext.
.br
Option -root is supported. Option -old-root is implemented by xorriso
commands -mkdir, -cp_clone, -find update_merge, and -find rm_merge.
-root and -old-root set command -disk_dev_ino to "ino_only" and -md5 to "on",
by default.
-disk_dev_ino can be set to "off" by --old-root-no-ino
resp. to "on" by --old-root-devno .
-md5 can be set to "off" by --old-root-no-md5 .
.br
Not original mkisofs options are --quoted_path_list ,
--hardlinks , --acl ,
--xattr , --md5 , --stdio_sync .
@ -3566,12 +3663,14 @@ Option -append_partition is supported.
-untranslated_name_len number is
-compliance untranslated_name_len=number.
.br
--old-empty is -compliance old_empty.
.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",
Personalities "\fBxorrisofs\fR", "\fBgenisoimage\fR",
and "\fBgenisofs\fR" are aliases for "mkisofs".
.br
If xorriso is started with one of the leafnames "xorrisofs", "genisofs",
@ -3581,6 +3680,9 @@ I.e. all arguments will be interpreted mkisofs style until "--"
is encountered.
From then on, options are interpreted as xorriso options.
.br
--no_rc as first argument of such a program start
prevents interpretation of startup files. See section FILES below.
.br
Personality "\fBcdrecord\fR" accepts the options listed with:
.br
@ -3623,6 +3725,9 @@ If xorriso is started with one of the leafnames "xorrecord", "cdrskin",
to the command line arguments. I.e. all arguments will be interpreted cdrecord
style until "--" is encountered and an eventual commit happens.
From then on, options are interpreted as xorriso options.
.br
--no_rc as first argument of such a program start
prevents interpretation of xorriso startup files. See section FILES below.
.TP
\fB\-read_mkisofsrc\fR
Try one by one to open for reading:
@ -4123,6 +4228,8 @@ $ xorriso -as mkisofs prepared_for_iso/tree1 | \\
.br
Follow-up sessions are written like this:
.br
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
.br
$ m=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
.br
$ xorriso -as mkisofs -M /dev/sr0 -C $m prepared_for_iso/tree2 | \\
@ -4130,8 +4237,13 @@ $ xorriso -as mkisofs -M /dev/sr0 -C $m prepared_for_iso/tree2 | \\
xorriso -as cdrecord -v dev=/dev/sr0 -waiti -multi -eject -
.br
Always eject the drive tray between sessions. The old sessions
get read via stdio:/dev/sr0 and thus are prone to device driver
peculiarities.
get read via /dev/sr0. Its device driver might not be aware
of the changed content before it loads the media again.
In this case the previous session would not be loaded and the
new session would contain only the newly added files.
.br
For the same reason do not let xorriso -as cdrecord load the media,
but rather do this manually or by a program that reads from /dev/sr0.
.br
This example works for multi-session media only.
Add cdrskin option --grow_overwriteable_iso
@ -4238,7 +4350,7 @@ $ xorriso \\
.br
-not_leaf '*.o' -not_leaf '*.swp' \\
.br
-update_r /home/thomas/open_source_projects /open_source_projects \\
-update_r /home/thomas/projects /projects \\
.br
-update_r /home/thomas/personal_mail /personal_mail \\
.br
@ -4281,12 +4393,27 @@ older sessions in the table-of-content. E.g. as superuser:
.br
# osirrox -mount /dev/sr0 "volid" '*2008_12_05*' /mnt
.br
.sp 1
Above example produces a result similar to -root / -old-root / with mkisofs.
For getting the session trees accumulated in the new sessions, let all -update
commands use a common parent directory and clone it after updating is done:
.br
-update_r /home/thomas/projects /current/projects \\
.br
-update_r /home/thomas/personal_mail /current/personal_mail \\
.br
-clone /current /"$(date '+%Y_%m_%d_%H%M%S')" \\
.br
The cloned tree will have a name like /2011_02_12_155700.
.br
.sp 1
Sessions on multi-session media are separated by several MB of unused blocks.
So with small sessions the payload capacity can become substantially lower
than the overall media capacity. If the remaining space on media does not
suffice for the next gap, the drive is supposed to close the media
automatically.
.br
.sp 1
\fBBetter do not use your youngest backup for -update_r\fR.
Have at least two media which you use alternatingly. So only older backups
get endangered by the new write operation, while the newest backup is
@ -4381,6 +4508,9 @@ The default setting of -check_media abort_file= is:
.br
.SH SEE ALSO
.TP
For the mkisofs emulation of xorriso
.BR xorrisofs(1)
.TP
For mounting xorriso generated ISO 9660 images (-t iso9660)
.BR mount(8)
.TP
@ -4410,7 +4540,7 @@ Thomas Schmitt <scdbackup@gmx.net>
.br
for libburnia-project.org
.SH COPYRIGHT
Copyright (c) 2007 - 2010 Thomas Schmitt
Copyright (c) 2007 - 2011 Thomas Schmitt
.br
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make use

View File

@ -59,9 +59,9 @@ struct XorrisO;
at build time.
@since 0.5.8
*/
#define Xorriso_header_version_majoR 0
#define Xorriso_header_version_minoR 6
#define Xorriso_header_version_micrO 7
#define Xorriso_header_version_majoR 1
#define Xorriso_header_version_minoR 0
#define Xorriso_header_version_micrO 4
/** Eventually something like ".pl01" to indicate a bug fix. Normally empty.
@ -586,6 +586,7 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag);
/* Option -abstract_file */
/* @since 0.6.0 */
int Xorriso_option_abstract_file(struct XorrisO *xorriso, char *name,
int flag);
@ -612,6 +613,7 @@ int Xorriso_option_alter_date(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Option -append_partition */
/* @since 0.6.4 */
int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text,
char *type_text, char *image_path, int flag);
@ -641,6 +643,7 @@ int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag);
/* Option -biblio_file */
/* @since 0.6.0 */
int Xorriso_option_biblio_file(struct XorrisO *xorriso, char *name, int flag);
/* Option -blank and -format */
@ -703,6 +706,11 @@ int Xorriso_option_chmodi(struct XorrisO *xorriso, char *mode,
int Xorriso_option_chowni(struct XorrisO *xorriso, char *uid,
int argc, char **argv, int *idx, int flag);
/* Option -clone */
/* @since 1.0.2 */
int Xorriso_option_clone(struct XorrisO *xorriso, char *origin, char *dest,
int flag);
/* Option -close "on"|"off" */
int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag);
@ -735,9 +743,15 @@ int Xorriso_option_compare(struct XorrisO *xorriso, char *disk_path,
int Xorriso_option_compliance(struct XorrisO *xorriso, char *mode, int flag);
/* Option -copyright_file */
/* @since 0.6.0 */
int Xorriso_option_copyright_file(struct XorrisO *xorriso, char *name,
int flag);
/* Option -cp_clone */
/* @since 1.0.2 */
int Xorriso_option_cp_clone(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -cpr alias -cpri */
int Xorriso_option_cpri( struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
@ -774,6 +788,7 @@ int Xorriso_option_disk_dev_ino(struct XorrisO *xorriso, char *mode, int flag);
int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag);
/* Option -displacement [-]offset */
/* @since 0.6.6 */
int Xorriso_option_displacement(struct XorrisO *xorriso, char *value,
int flag);
@ -860,6 +875,7 @@ int Xorriso_option_hardlinks(struct XorrisO *xorriso, char *mode, int flag);
int Xorriso_option_help(struct XorrisO *xorriso, int flag);
/* Option -hide */
/* @since 0.6.0 */
int Xorriso_option_hide(struct XorrisO *xorriso, char *hide_state,
int argc, char **argv, int *idx, int flag);
@ -871,6 +887,7 @@ int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -jigdo aspect argument */
/* @since 0.6.4 */
int Xorriso_option_jigdo(struct XorrisO *xorriso, char *aspect, char *arg,
int flag);
@ -1023,6 +1040,7 @@ int Xorriso_option_pathspecs(struct XorrisO *xorriso, char *mode, int flag);
int Xorriso_option_pkt_output(struct XorrisO *xorriso, char *mode, int flag);
/* Option -preparer_id */
/* @since 0.6.2 */
int Xorriso_option_preparer_id(struct XorrisO *xorriso, char *name, int flag);
/* Option -print */
@ -1055,6 +1073,7 @@ int Xorriso_option_pwdi(struct XorrisO *xorriso, int flag);
int Xorriso_option_pwdx(struct XorrisO *xorriso, int flag);
/* Option -read_mkisofsrc */
/* @since 0.6.0 */
int Xorriso_option_read_mkisofsrc(struct XorrisO *xorriso, int flag);
/* Option -reassure "on"|"tree"|"off" */

View File

@ -728,7 +728,7 @@ activate them only after image loading.
If enabled, then xorriso will handle xattr similar to ACL. See
also options -getfattr, -setfattr and above paragraph about xattr.
-md5 "on"|"all"|"off"
-md5 "on"|"all"|"off"|"load_check_off"
Enable or disable processing of MD5 checksums for the overall
session and for each single data file. If enabled then images get
loaded only if eventual checksums tags of superblock and directory
@ -747,6 +747,13 @@ activate them only after image loading.
the checksum of a data file changed between the time when its
reading began and the time when it ended. This implies reading
every file twice.
Mode "load_check_off" together with "on" or "all" will load
recorded MD5 sums but not test the recorded checksum tags of
superblock and directory tree. This is necessary if growisofs was
used as burn program, because it does not overwrite the superblock
checksum tag of the first session. Therefore load_check_off is in
effect when xorriso -as mkisofs option -M is performed.
The test can be re-enabled by mode "load_check_on".
Checksums can be exploited via options -check_md5, -check_md5_r,
via find actions get_md5, check_md5, and via -check_media.
@ -987,6 +994,28 @@ filesystem.
directory generates a WARNING event, existence as other file
causes a FAILURE event.
-clone iso_rr_path_original iso_rr_path_copy
Create a copy of the ISO file object iso_rr_path_original with the
new address iso_rr_path_copy. If the original is a directory then
copy all files and directories underneath. An eventual boot
catalog file gets not copied but is silently ignored.
The copied ISO file objects have the same attributes. Copied data
files refer to the same content source as their originals. The
copies may then be manipulated independendly of their originals.
This command will refuse execution if the address iso_rr_path_copy
already exists in the ISO tree.
-cp_clone iso_rr_path_original [***] iso_rr_path_dest
Create copies of one or more ISO file objects as with command
-clone. Eventually merge directories with existing ones, but do
not overwrite existing ISO file objects.
The rules for generating the copy addresses are the same as with
command -cpr (see above) resp. shell command cp -r. Other than
with -cpr, relative iso_rr_path_original will get prepended the
-cd path and not the -cdx path. Consider to -mkdir
iso_rr_path_dest before -cp_clone so the copy address does not
depend on the number of iso_rr_path_original arguments.

File: xorriso.info, Node: SetInsert, Next: Manip, Prev: Insert, Up: Options
@ -1478,12 +1507,28 @@ File: xorriso.info, Node: CmdFind, Next: Filter, Prev: Manip, Up: Options
performs command -update with the found file address as
iso_rr_path. The corresponding file address is determined
like with above action "compare".
update_merge
is like update but does not delete the found file if it is
missing on disk. It may be run several times and records
with all visited files whether their counterpart on disk has
already been seen by one of the update_merge runs. Finally,
a -find run with action "rm_merge" may remove all files that
saw no counterpart on disk.
Up to the next "rm_merge" or "clear_merge" all newly inserted
files will get marked as having a disk counterpart.
rm
removes the found iso_rr_path from the image if it is not a
directory with files in it. I.e. this "rm" includes "rmdir".
rm_r
removes the found iso_rr_path from the image, including whole
directory trees.
rm_merge
removes the found iso_rr_path if it was visited by one or
more previous actions "update_merge" and saw no counterpart
on disk in any of them. The marking from the update actions
is removed in any case.
clear_merge
removes an eventual marking from action "update_merge".
report_damage
classifies files whether they hit a data block that is marked
as damaged. The result is printed together with the eventual
@ -1846,6 +1891,9 @@ will be written according to the setting of option -acl.
"iso_9660_1999" causes the production of an additional directory
tree compliant to ISO 9660:1999. It can record long filenames for
readers which do not understand Rock Ridge.
"old_empty" uses the old way of of giving block addresses in the
range of [0,31] to files with no own data content. The new way is
to have a dedicated block to which all such files will point.
Default setting is
"clear:only_iso_version:deep_paths:long_paths:no_j_force_dots:
always_gmt:old_rr".
@ -2031,7 +2079,7 @@ will be written according to the setting of option -acl.
This is the contrary of cdrecord, wodim, cdrskin option -multi,
and is one aspect of growisofs option -dvd-compat.
-padding number["k"|"m"]
-padding number["k"|"m"]|"included"|"appended"
Append the given number of extra bytes to the image stream. This
is a traditional remedy for a traditional bug in block device read
drivers. Needed only for CD recordings in TAO mode. Since one can
@ -2039,6 +2087,11 @@ will be written according to the setting of option -acl.
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 .
Normally padding is not written as part of the ISO image but
appended after the image end. This is -padding mode "appended".
Emulation command -as "mkisofs" and command -jigdo cause padding
to be written as part of the image. The same effect is achieved
by -padding mode "included".

File: xorriso.info, Node: Bootable, Next: Jigdo, Prev: SetWrite, Up: Options
@ -2198,10 +2251,26 @@ filesystem and announced by an MBR partition table entry.
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.
for the partition table. 0 chooses a default value. Maximum is 255.
*partition_sec_hd=*number gives the number of sectors per head for
the partition table. 0 chooses a default value. Maximum is 63.
The product partition_sec_hd * partition_hd_cyl * 512 is the
cylinder size. It should be divisible by 2048 in order to allow
exact alignment. If it is too small to describe the image size by
at most 1024 cylinders, then appropriate values of
partition_hd_cyl are chosen with partition_sec_hd 32 or 63. If the
image is larger than 8,422,686,720 bytes, then the cylinder size
constraints cannot be fulfilled.
*partition_cyl_align=*mode controls image size alignment to an
integer number of cylinders. It is prescribed by isohybrid specs
and it seems to please program fdisk. Cylinder size must be
divisible by 2048. Images larger than 8,323,596,288 bytes cannot
be aligned.
Mode "auto" is default. Alignment by padding happens only with
"isolinux" "partition_table=on".
Mode "on" causes alignment by padding with "partition_table=on"
for any type. Mode "off" disables alignment for any type.
*mips_path=*iso_rr_path declares a data file in the image to be a
MIPS Big Endian boot file and causes production of a MIPS Big
Endian Volume Header. This is mutually exclusive with production
@ -2602,8 +2671,9 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Opti
-commit. This can last a while as a -commit gets prepared and only
in last moment is revoked by this option. The result depends on
several settings and also on the kind of output device. If no
-jidgo options are given, then -padding (300 kB by default) is not
counted as part of the image size.
-jidgo options are given and not command -as "mkisofs" was used,
then -padding (300 kB by default) is not counted as part of the
image size.
-tell_media_space
Print available space on output media and the free space after
@ -2739,7 +2809,7 @@ File: xorriso.info, Node: Navigate, Next: Verify, Prev: Inquiry, Up: Options
image. The report format is the same as with command -compare.
add_missing iso_rr_path_start
adds the counterpart if it does not yet exist in the ISO
image.
image and marks it for "rm_merge" as non-removable.
E.g.: -findx /home/thomas -exec add_missing /thomas_on_cd --
is_full_in_iso
reports if the counterpart in the ISO image contains files.
@ -3114,16 +3184,19 @@ programs trigger comparable actions.
-hide-joliet-list, file paths and pathspecs. A lot of options are
not supported and lead to failure of the mkisofs emulation. Some
are ignored, but better do not rely on this tolerance.
-graft-points is equivalent to -pathspecs on. Note that pathspecs
without "=" are interpreted differently than with xorriso option
-add. Directories get merged with the root directory of the ISO
image, other filetypes get mapped into that root directory.
The supported options are documented in detail in xorrisofs.info
and in man xorrisofs. The description here is focused on the effect
of mkisofs emulation in the context of a xorriso run.
Other than with the "cdrecord" personality there is no automatic
-commit at the end of a "mkisofs" option list. Verbosity settings
-v (= "UPDATE") and -quiet (= "SORRY") persist. The output file,
eventually chosen with -o, persists until things happen like
-commit, -rollback, -dev, or end of xorriso. -pacifier gets set
to "mkisofs" if files are added to the image.
-graft-points is equivalent to -pathspecs on. Note that pathspecs
without "=" are interpreted differently than with xorriso option
-add. Directories get merged with the root directory of the ISO
image, other filetypes get mapped into that root directory.
If pathspecs are given and if no output file was chosen before or
during the "mkisofs" option list, then standard output (-outdev
"-") will get into effect. If -o points to a regular file, then
@ -3136,11 +3209,19 @@ programs trigger comparable actions.
drive to standard output.
-print-size inhibits automatic image production at program end.
This ban is lifted only if the pending image changes get discarded.
Eventual padding is counted as part of the ISO image if not option
-emul-toc is given.
If no -iso-level is given, then level 1 is chosen when the first
file or directory is added to the image. At the same occasion
directory names get allowed to violate the standard by -compliance
option allow_dir_id_ext. This may be avoided by option
-disallow_dir_id_ext.
Option -root is supported. Option -old-root is implemented by
xorriso commands -mkdir, -cp_clone, -find update_merge, and -find
rm_merge. -root and -old-root set command -disk_dev_ino to
"ino_only" and -md5 to "on", by default. -disk_dev_ino can be set
to "off" by --old-root-no-ino resp. to "on" by --old-root-devno .
-md5 can be set to "off" by --old-root-no-md5 .
Not original mkisofs options are --quoted_path_list , --hardlinks
, --acl , --xattr , --md5 , --stdio_sync . They work like the
xorriso options with the same name and hardcoded argument "on",
@ -3172,11 +3253,12 @@ programs trigger comparable actions.
Option -append_partition is supported.
-untranslated_name_len number is -compliance
untranslated_name_len=number.
--old-empty is -compliance old_empty.
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
Personalities "*xorrisofs*", "*genisoimage*", and "*genisofs*" are
aliases for "mkisofs".
If xorriso is started with one of the leafnames "xorrisofs",
"genisofs", "mkisofs", or "genisoimage", then it performs
@ -3184,6 +3266,8 @@ programs trigger comparable actions.
arguments. I.e. all arguments will be interpreted mkisofs style
until "--" is encountered. From then on, options are interpreted
as xorriso options.
--no_rc as first argument of such a program start prevents
interpretation of startup files. See section FILES below.
Personality "*cdrecord*" accepts the options listed with:
-as cdrecord -help --
@ -3216,6 +3300,8 @@ programs trigger comparable actions.
will be interpreted cdrecord style until "--" is encountered and
an eventual commit happens. From then on, options are interpreted
as xorriso options.
--no_rc as first argument of such a program start prevents
interpretation of xorriso startup files. See section FILES below.
-read_mkisofsrc
Try one by one to open for reading: ./.mkisofsrc , $MKISOFSRC ,
@ -3667,12 +3753,18 @@ xorriso -as cdrecord -v dev=/dev/sr0 blank=fast -multi -eject -
Follow-up sessions are written like this:
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
$ m=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
$ xorriso -as mkisofs -M /dev/sr0 -C $m prepared_for_iso/tree2 | \
xorriso -as cdrecord -v dev=/dev/sr0 -waiti -multi -eject -
Always eject the drive tray between sessions. The old sessions get read
via stdio:/dev/sr0 and thus are prone to device driver peculiarities.
via /dev/sr0. Its device driver might not be aware of the changed
content before it loads the media again. In this case the previous
session would not be loaded and the new session would contain only the
newly added files.
For the same reason do not let xorriso -as cdrecord load the media, but
rather do this manually or by a program that reads from /dev/sr0.
This example works for multi-session media only. Add cdrskin option
--grow_overwriteable_iso to all -as cdrecord runs in order to enable
@ -3774,7 +3866,7 @@ $ xorriso \
-dev /dev/sr0 \
-volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \
-not_leaf '*.o' -not_leaf '*.swp' \
-update_r /home/thomas/open_source_projects /open_source_projects \
-update_r /home/thomas/projects /projects \
-update_r /home/thomas/personal_mail /personal_mail \
-commit -toc -check_md5 FAILURE -- -eject all
@ -3812,6 +3904,15 @@ commands for older sessions in the table-of-content. E.g. as superuser:
# osirrox -mount /dev/sr0 "volid" '*2008_12_05*' /mnt
Above example produces a result similar to -root / -old-root / with
mkisofs. For getting the session trees accumulated in the new
sessions, let all -update commands use a common parent directory and
clone it after updating is done:
-update_r /home/thomas/projects /current/projects \
-update_r /home/thomas/personal_mail /current/personal_mail \
-clone /current /"$(date '+%Y_%m_%d_%H%M%S')" \
The cloned tree will have a name like /2011_02_12_155700.
Sessions on multi-session media are separated by several MB of unused
blocks. So with small sessions the payload capacity can become
substantially lower than the overall media capacity. If the remaining
@ -3917,6 +4018,9 @@ File: xorriso.info, Node: Seealso, Next: Legal, Prev: Files, Up: Top
12 See also
***********
For the mkisofs emulation of xorriso
xorrisofs(1)
For mounting xorriso generated ISO 9660 images (-t iso9660)
mount(8)
@ -3950,7 +4054,7 @@ for libburnia-project.org
13.2 Copyright
==============
Copyright (c) 2007 - 2010 Thomas Schmitt
Copyright (c) 2007 - 2011 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make
use of the license to derive modified versions of xorriso then you are
@ -3977,24 +4081,24 @@ 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 155)
* -abstract_file sets abstract file name: SetWrite. (line 158)
* -acl controls handling of ACLs: Loading. (line 142)
* -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 186)
* -application_id sets application id: SetWrite. (line 114)
(line 202)
* -application_id sets application id: SetWrite. (line 117)
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
* -assert_volid rejects undesired images: Loading. (line 84)
* -auto_charset learns character set from image: Loading. (line 99)
* -backslash_codes enables backslash conversion: Scripting. (line 45)
* -ban_stdio_write demands real drive: Loading. (line 239)
* -biblio_file sets biblio file name: SetWrite. (line 162)
* -ban_stdio_write demands real drive: Loading. (line 246)
* -biblio_file sets biblio file name: SetWrite. (line 165)
* -blank erases media: Writing. (line 45)
* -boot_image controls bootability: Bootable. (line 26)
* -calm_drive reduces drive activity: Loading. (line 228)
* -calm_drive reduces drive activity: Loading. (line 235)
* -cd sets working directory in ISO: Navigate. (line 7)
* -cdx sets working directory on disk: Navigate. (line 16)
* -charset sets input/output character set: Charset. (line 43)
@ -4008,7 +4112,8 @@ 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 257)
* -clone copies ISO directory tree: Insert. (line 171)
* -close controls media closing: SetWrite. (line 260)
* -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)
@ -4016,7 +4121,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -compare_l reports ISO/disk differences: Navigate. (line 157)
* -compare_r reports ISO/disk differences: Navigate. (line 152)
* -compliance controls standard compliance: SetWrite. (line 14)
* -copyright_file sets copyright file name: SetWrite. (line 149)
* -copyright_file sets copyright file name: SetWrite. (line 152)
* -cp_clone copies ISO directory tree: Insert. (line 182)
* -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)
@ -4025,17 +4131,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -dev aquires one drive for input and output: AqDrive. (line 10)
* -devices gets list of drives: Inquiry. (line 7)
* -dialog enables dialog mode: DialogCtl. (line 7)
* -disk_dev_ino fast incremental backup: Loading. (line 182)
* -disk_dev_ino fast incremental backup: Loading. (line 189)
* -disk_pattern controls pattern expansion: Insert. (line 31)
* -displacement compensate altered image start address: Loading.
(line 35)
* -drive_class controls drive accessability: Loading. (line 54)
* -du show directory size in ISO image: Navigate. (line 88)
* -dummy controls write simulation: SetWrite. (line 246)
* -dummy controls write simulation: SetWrite. (line 249)
* -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 233)
* -dvd_obs set write block size: SetWrite. (line 236)
* -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)
@ -4050,14 +4156,14 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -find traverses and alters ISO tree: CmdFind. (line 7)
* -findx traverses disk tree: Navigate. (line 105)
* -follow softlinks and mount points: SetInsert. (line 76)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 177)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 184)
* -format formats media: Writing. (line 69)
* -fs sets size of fifo: SetWrite. (line 250)
* -fs sets size of fifo: SetWrite. (line 253)
* -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 190)
* -gid sets global ownership: SetWrite. (line 193)
* -grow_blindly overides next writeable address: AqDrive. (line 44)
* -hardlinks controls handling of hard links: Loading. (line 110)
* -help prints help text: Scripting. (line 16)
@ -4066,8 +4172,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -in_charset sets input character set: Loading. (line 92)
* -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)
* -jigdo clears JTE or or adds parameter to JTE: 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)
@ -4100,30 +4205,30 @@ 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 180)
* -out_charset sets output character set: SetWrite. (line 183)
* -outdev aquires a drive for output: AqDrive. (line 29)
* -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 142)
* -padding sets amount of image padding: SetWrite. (line 263)
* -pacifier controls pacifier text form: Emulation. (line 158)
* -padding sets amount or mode of image padding: SetWrite. (line 266)
* -page set terminal geometry: DialogCtl. (line 19)
* -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 168)
* -preparer_id sets preparer id: SetWrite. (line 171)
* -print prints text line: Scripting. (line 77)
* -print_size predicts image size: Inquiry. (line 69)
* -prog sets program name: Frontend. (line 30)
* -prog_help prints help text: Frontend. (line 33)
* -prompt prompts for enter key: Scripting. (line 80)
* -publisher sets publisher id: SetWrite. (line 108)
* -pvd_info shows image id strings: Inquiry. (line 81)
* -publisher sets publisher id: SetWrite. (line 111)
* -pvd_info shows image id strings: Inquiry. (line 82)
* -pwd tells working directory in ISO: Navigate. (line 20)
* -pwdx tells working directory on disk: Navigate. (line 23)
* -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 130)
(line 146)
* -reassure enables confirmation question: DialogCtl. (line 32)
* -report_about controls verbosity: Exception. (line 55)
* -return_with controls exit value: Exception. (line 39)
@ -4132,8 +4237,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -rmdir deletes ISO directory: Manip. (line 32)
* -rollback discards pending changes: Writing. (line 9)
* -rollback_end ends program without writing: Scripting. (line 125)
* -rom_toc_scan searches for sessions: Loading. (line 203)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 152)
* -rom_toc_scan searches for sessions: Loading. (line 210)
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168)
* -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)
@ -4147,27 +4252,27 @@ 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 162)
* -show_stream_r shows data source and filters: Navigate. (line 177)
* -speed set write speed: SetWrite. (line 206)
* -speed set write speed: SetWrite. (line 209)
* -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 240)
* -stream_recording controls defect management: SetWrite. (line 221)
* -system_id sets system id: SetWrite. (line 123)
* -tell_media_space reports free space: Inquiry. (line 77)
* -stdio_sync controls stdio buffer: SetWrite. (line 243)
* -stream_recording controls defect management: SetWrite. (line 224)
* -system_id sets system id: SetWrite. (line 126)
* -tell_media_space reports free space: Inquiry. (line 78)
* -temp_mem_limit curbs memory consumption: Scripting. (line 70)
* -toc shows list of sessions: Inquiry. (line 18)
* -uid sets global ownership: SetWrite. (line 186)
* -uid sets global ownership: SetWrite. (line 189)
* -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)
* -use_readline enables readline for dialog: DialogCtl. (line 28)
* -version prints help text: Scripting. (line 19)
* -volid sets volume id: SetWrite. (line 84)
* -volset_id sets volume set id: SetWrite. (line 103)
* -volume_date sets volume timestamp: SetWrite. (line 130)
* -volid sets volume id: SetWrite. (line 87)
* -volset_id sets volume set id: SetWrite. (line 106)
* -volume_date sets volume timestamp: SetWrite. (line 133)
* -xattr controls handling of xattr (EA): Loading. (line 150)
* -zisofs controls zisofs production: SetWrite. (line 194)
* -zisofs controls zisofs production: SetWrite. (line 197)

File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -4186,24 +4291,26 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* ACL, show in ISO image, -getfacl: Navigate. (line 69)
* ACL, show in ISO image, -getfacl_r: Navigate. (line 76)
* Appendable media, _definition: Media. (line 38)
* Appended Filesystem Image, -append_partition: Bootable. (line 186)
* Appended Filesystem Image, -append_partition: Bootable. (line 202)
* Backslash Interpretation, _definition: Processing. (line 49)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 182)
* Backup, enable features, -for_backup: Loading. (line 177)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 152)
* Backup, enable fast incremental, -disk_dev_ino: Loading. (line 189)
* Backup, enable features, -for_backup: Loading. (line 184)
* Backup, scdbackup checksum tag, -scdbackup: Emulation. (line 168)
* Blank media, _definition: Media. (line 29)
* Blind growing, _definition: Methods. (line 40)
* Bootability, control, -boot_image: Bootable. (line 26)
* cdrecord, Emulation: Emulation. (line 97)
* cdrecord, Emulation: Emulation. (line 111)
* Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 92)
* Character Set, for input/output, -charset: Charset. (line 43)
* Character Set, for output, -out_charset: SetWrite. (line 180)
* Character Set, for output, -out_charset: SetWrite. (line 183)
* Character set, learn from image, -auto_charset: Loading. (line 99)
* Character Set, of terminal, -local_charset: Charset. (line 47)
* Closed media, _definition: Media. (line 43)
* Comment, #: Scripting. (line 128)
* Create, new ISO image, _definiton: Methods. (line 6)
* Cylinder alignment, _definiton: Bootable. (line 169)
* Cylinder size, _definiton: Bootable. (line 158)
* Delete, from ISO image, -rm: Manip. (line 21)
* Delete, from ISO image, -rm_r: Manip. (line 28)
* Delete, ISO directory, -rmdir: Manip. (line 32)
@ -4212,27 +4319,29 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Dialog, enable dialog mode, -dialog: DialogCtl. (line 7)
* Dialog, line editing, -use_readline: DialogCtl. (line 28)
* Dialog, terminal geometry, -page: DialogCtl. (line 19)
* Directories, copy, -cp_clone: Insert. (line 182)
* Directory, copy, -clone: Insert. (line 171)
* Directory, create, -mkdir: Insert. (line 166)
* Directory, delete, -rmdir: Manip. (line 32)
* disk_path, _definition: Insert. (line 6)
* Drive, _definiton: Drives. (line 6)
* Drive, accessability, -drive_class: Loading. (line 54)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 239)
* Drive, demand real MMC, -ban_stdio_write: Loading. (line 246)
* Drive, eject tray, -eject: Writing. (line 36)
* Drive, for input and output, -dev: AqDrive. (line 10)
* Drive, for input, -indev: AqDrive. (line 22)
* Drive, for output, -outdev: AqDrive. (line 29)
* Drive, get drive list, -devices: Inquiry. (line 7)
* Drive, list supported media, -list_profiles: Writing. (line 119)
* Drive, reduce activity, -calm_drive: Loading. (line 228)
* Drive, reduce activity, -calm_drive: Loading. (line 235)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 113)
* 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 130)
* Emulation, cdrecord, -as: Emulation. (line 97)
* Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 146)
* Emulation, cdrecord, -as: Emulation. (line 111)
* Emulation, mkisofs, -as: Emulation. (line 16)
* Emulation, pacifier form, -pacifier: Emulation. (line 142)
* Emulation, pacifier form, -pacifier: Emulation. (line 158)
* Examples: Examples. (line 6)
* Filter, _definition: Filter. (line 6)
* Filter, apply to file tree, -set_filter_r: Filter. (line 84)
@ -4242,8 +4351,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Filter, show chain, -show_stream: Navigate. (line 162)
* Filter, show chains of tree, -show_stream_r: Navigate. (line 177)
* Filter, unregister, -unregister_filter: Filter. (line 48)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 194)
* Group, global in ISO image, -gid: SetWrite. (line 190)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 197)
* Group, global in ISO image, -gid: SetWrite. (line 193)
* Group, in ISO image, -chgrp: Manip. (line 50)
* Group, in ISO image, -chgrp_r: Manip. (line 55)
* Growing, _definition: Methods. (line 19)
@ -4252,17 +4361,17 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Image, _definition: Model. (line 9)
* Image, demand volume id, -assert_volid: Loading. (line 84)
* Image, discard pending changes, -rollback: Writing. (line 9)
* Image, set abstract file name, -abstract_file: SetWrite. (line 155)
* Image, set application id, -application_id: SetWrite. (line 114)
* Image, set biblio file name, -biblio_file: SetWrite. (line 162)
* Image, set copyright file name, -copyright_file: SetWrite. (line 149)
* Image, set preparer id, -preparer_id: SetWrite. (line 168)
* Image, set publisher id, -publisher: SetWrite. (line 108)
* Image, set system id, -system_id: SetWrite. (line 123)
* Image, set volume id, -volid: SetWrite. (line 84)
* Image, set volume set id, -volset_id: SetWrite. (line 103)
* Image, set volume timestamp, -volume_date: SetWrite. (line 130)
* Image, show id strings, -pvd_info: Inquiry. (line 81)
* Image, set abstract file name, -abstract_file: SetWrite. (line 158)
* Image, set application id, -application_id: SetWrite. (line 117)
* Image, set biblio file name, -biblio_file: SetWrite. (line 165)
* Image, set copyright file name, -copyright_file: SetWrite. (line 152)
* Image, set preparer id, -preparer_id: SetWrite. (line 171)
* Image, set publisher id, -publisher: SetWrite. (line 111)
* Image, set system id, -system_id: SetWrite. (line 126)
* Image, set volume id, -volid: SetWrite. (line 87)
* Image, set volume set id, -volset_id: SetWrite. (line 106)
* Image, set volume timestamp, -volume_date: SetWrite. (line 133)
* Image, show id strings, -pvd_info: Inquiry. (line 82)
* Insert, enable overwriting, -overwrite: SetInsert. (line 127)
* Insert, file exclusion absolute, -not_paths: SetInsert. (line 55)
* Insert, file exclusion from file, -not_list: SetInsert. (line 67)
@ -4295,7 +4404,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* 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)
* MIPS boot file, activation: Bootable. (line 178)
* mkisofs, Emulation: Emulation. (line 16)
* Modifying, _definition: Methods. (line 27)
* Multi-session media, _definition: Media. (line 7)
@ -4318,7 +4427,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Navigate, tell ISO working directory, -pwd: Navigate. (line 20)
* Next writeable address, -grow_blindly: AqDrive. (line 44)
* Overwriteable media, _definition: Media. (line 14)
* Ownership, global in ISO image, -uid: SetWrite. (line 186)
* Ownership, global in ISO image, -uid: SetWrite. (line 189)
* Ownership, in ISO image, -chown: Manip. (line 42)
* Ownership, in ISO image, -chown_r: Manip. (line 47)
* Partition offset, _definiton: Bootable. (line 148)
@ -4374,10 +4483,10 @@ 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)
* SUN Disk Label, production: Bootable. (line 173)
* SUN SPARC boot images, activation: Bootable. (line 207)
* SUN Disk Label, production: Bootable. (line 189)
* SUN SPARC boot images, activation: Bootable. (line 223)
* System area, _definiton: Bootable. (line 123)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 203)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 210)
* Table-of-content, show, -toc: Inquiry. (line 18)
* Timestamps, set in ISO image, -alter_date: Manip. (line 146)
* Timestamps, set in ISO image, -alter_date_r: Manip. (line 166)
@ -4390,22 +4499,22 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Verify, file checksum, -check_md5: Verify. (line 146)
* Verify, file tree checksums, -check_md5_r: Verify. (line 162)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
* Write, block size, -dvd_obs: SetWrite. (line 233)
* Write, block size, -dvd_obs: SetWrite. (line 236)
* Write, bootability, -boot_image: Bootable. (line 26)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 240)
* Write, close media, -close: SetWrite. (line 257)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 243)
* Write, close media, -close: SetWrite. (line 260)
* Write, compliance to specs, -compliance: SetWrite. (line 14)
* Write, defect management, -stream_recording: SetWrite. (line 221)
* Write, defect management, -stream_recording: SetWrite. (line 224)
* Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 250)
* Write, free space, -tell_media_space: Inquiry. (line 77)
* Write, fifo size, -fs: SetWrite. (line 253)
* Write, free space, -tell_media_space: Inquiry. (line 78)
* 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 263)
* Write, padding image, -padding: SetWrite. (line 266)
* Write, pending ISO image, -commit: Writing. (line 13)
* Write, predict image size, -print_size: Inquiry. (line 69)
* Write, set speed, -speed: SetWrite. (line 206)
* Write, simulation, -dummy: SetWrite. (line 246)
* Write, set speed, -speed: SetWrite. (line 209)
* Write, simulation, -dummy: SetWrite. (line 249)
* xattr, _definiton: Extras. (line 52)
* xattr, control handling, -xattr: Loading. (line 150)
* xattr, set in ISO image, -setfattr: Manip. (line 110)
@ -4429,46 +4538,46 @@ Node: Dialog21570
Node: Options23227
Node: AqDrive24835
Node: Loading27741
Node: Insert40885
Node: SetInsert49242
Node: Manip57809
Node: CmdFind66490
Node: Filter76914
Node: Writing81263
Node: SetWrite87552
Node: Bootable100954
Node: Jigdo113261
Node: Charset117519
Node: Exception120270
Node: DialogCtl124785
Node: Inquiry127372
Node: Navigate131705
Node: Verify139600
Node: Restore148189
Node: Emulation154845
Node: Scripting163677
Node: Frontend169239
Node: Examples170534
Node: ExDevices171703
Node: ExCreate172337
Node: ExDialog173611
Node: ExGrowing174873
Node: ExModifying175675
Node: ExBootable176176
Node: ExCharset176723
Node: ExPseudo177551
Node: ExCdrecord178445
Node: ExMkisofs178760
Node: ExGrowisofs179763
Node: ExException180887
Node: ExTime181341
Node: ExIncBackup181800
Node: ExRestore185290
Node: ExRecovery186259
Node: Files186825
Node: Seealso188053
Node: Legal188577
Node: CommandIdx189499
Node: ConceptIdx203725
Node: Insert41367
Node: SetInsert50986
Node: Manip59553
Node: CmdFind68234
Node: Filter79534
Node: Writing83883
Node: SetWrite90172
Node: Bootable104113
Node: Jigdo117431
Node: Charset121689
Node: Exception124440
Node: DialogCtl128955
Node: Inquiry131542
Node: Navigate135919
Node: Verify143859
Node: Restore152448
Node: Emulation159104
Node: Scripting168940
Node: Frontend174502
Node: Examples175797
Node: ExDevices176966
Node: ExCreate177600
Node: ExDialog178874
Node: ExGrowing180136
Node: ExModifying180938
Node: ExBootable181439
Node: ExCharset181986
Node: ExPseudo182814
Node: ExCdrecord183708
Node: ExMkisofs184023
Node: ExGrowisofs185359
Node: ExException186483
Node: ExTime186937
Node: ExIncBackup187396
Node: ExRestore191317
Node: ExRecovery192286
Node: Files192852
Node: Seealso194080
Node: Legal194660
Node: CommandIdx195582
Node: ConceptIdx209889

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 "Jan 06, 2011"
@c man .TH XORRISO 1 "Mar 09, 2011"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -965,6 +965,7 @@ are both in effect. This restricts hard linking to other files restored by
the same single extract command. -hardlinks "normal_extract" re-enables
wide and expensive hardlink accumulation.
@*
@c man .TP
@item -acl "on"|"off"
@kindex -acl controls handling of ACLs
@cindex ACL, control handling, -acl
@ -982,7 +983,7 @@ Enable or disable processing of xattr attributes in user namespace.
If enabled, then xorriso will handle xattr similar to ACL.
See also options -getfattr, -setfattr and above paragraph about xattr.
@c man .TP
@item -md5 "on"|"all"|"off"
@item -md5 "on"|"all"|"off"|"load_check_off"
@kindex -md5 controls handling of MD5 sums
@cindex MD5, control handling, -md5
Enable or disable processing of MD5 checksums for the overall session and for
@ -1005,6 +1006,15 @@ Mode "all" will additionally check during image generation whether the checksum
of a data file changed between the time when its reading began and the time
when it ended. This implies reading every file twice.
@*
Mode "load_check_off" together with "on" or "all" will load recorded MD5 sums
but not test the recorded checksum tags of superblock and directory tree.
This is necessary if growisofs was used as burn program, because it does
not overwrite the superblock checksum tag of the first session.
Therefore load_check_off is in effect when xorriso -as mkisofs option -M
is performed.
@*
The test can be re-enabled by mode "load_check_on".
@*
Checksums can be exploited via options -check_md5, -check_md5_r, via find
actions get_md5, check_md5, and via -check_media.
@c man .TP
@ -1311,6 +1321,35 @@ If the iso_rr_path does not begin with '/' then -cd is prepended.
Create empty directories if they do not exist yet.
Existence as directory generates a WARNING event, existence as
other file causes a FAILURE event.
@c man .TP
@item -clone iso_rr_path_original iso_rr_path_copy
@kindex -clone copies ISO directory tree
@cindex Directory, copy, -clone
Create a copy of the ISO file object iso_rr_path_original with the new
address iso_rr_path_copy. If the original is a directory then copy all
files and directories underneath. An eventual boot catalog file gets
not copied but is silently ignored.
@*
The copied ISO file objects have the same attributes. Copied data files
refer to the same content source as their originals.
The copies may then be manipulated independendly of their originals.
@*
This command will refuse execution if the address iso_rr_path_copy
already exists in the ISO tree.
@c man .TP
@item -cp_clone iso_rr_path_original [***] iso_rr_path_dest
@kindex -cp_clone copies ISO directory tree
@cindex Directories, copy, -cp_clone
Create copies of one or more ISO file objects as with command -clone.
Eventually merge directories with existing ones, but do not overwrite
existing ISO file objects.
@*
The rules for generating the copy addresses are the same as with
command -cpr (see above) resp. shell command cp -r. Other than with -cpr,
relative iso_rr_path_original will get prepended the -cd path and not
the -cdx path. Consider to -mkdir iso_rr_path_dest before -cp_clone
so the copy address does not depend on the number of iso_rr_path_original
arguments.
@end table
@c man .TP
@c man .B Settings for file insertion:
@ -1985,6 +2024,16 @@ performs command -update with the found file address as
iso_rr_path. The corresponding file address is determined like with above
action "compare".
@*
@item update_merge
is like update but does not delete the found file if it is missing on disk.
It may be run several times and records with all visited files whether their
counterpart on disk has already been seen by one of the update_merge runs.
Finally, a -find run with action "rm_merge" may remove all files that
saw no counterpart on disk.
@*
Up to the next "rm_merge" or "clear_merge" all newly inserted files will
get marked as having a disk counterpart.
@*
@item rm
removes the found iso_rr_path from the image if it is not a directory
with files in it. I.e. this "rm" includes "rmdir".
@ -1993,6 +2042,14 @@ with files in it. I.e. this "rm" includes "rmdir".
removes the found iso_rr_path from the image, including whole
directory trees.
@*
@item rm_merge
removes the found iso_rr_path if it was visited by one or more previous actions
"update_merge" and saw no counterpart on disk in any of them. The marking from
the update actions is removed in any case.
@*
@item clear_merge
removes an eventual marking from action "update_merge".
@*
@item report_damage
classifies files whether they hit a data block that is
marked as damaged. The result is printed together with the eventual address
@ -2464,6 +2521,10 @@ but makes the image incapable of displaying its session history.
compliant to ISO 9660:1999. It can record long filenames for readers which
do not understand Rock Ridge.
@*
"old_empty" uses the old way of of giving block addresses in the range
of [0,31] to files with no own data content. The new way is to have
a dedicated block to which all such files will point.
@*
Default setting is
@*
"clear:only_iso_version:deep_paths:long_paths:no_j_force_dots:
@ -2716,8 +2777,8 @@ any more (if possible at all with the given type of target media).
This is the contrary of cdrecord, wodim, cdrskin option -multi,
and is one aspect of growisofs option -dvd-compat.
@c man .TP
@item -padding number["k"|"m"]
@kindex -padding sets amount of image padding
@item -padding number["k"|"m"]|"included"|"appended"
@kindex -padding sets amount or mode of image padding
@cindex Write, padding image, -padding
Append the given number of extra bytes to the image stream.
This is a traditional remedy for a traditional bug in block
@ -2726,6 +2787,13 @@ Since one can hardly predict on what media an image might end up,
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 .
@*
Normally padding is not written as part of the ISO image but appended
after the image end. This is -padding mode "appended".
@*
Emulation command -as "mkisofs" and command -jigdo cause padding to be
written as part of the image.
The same effect is achieved by -padding mode "included".
@end table
@c man .TP
@c man .B Bootable ISO images:
@ -2933,11 +3001,31 @@ 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.
@*
@cindex Cylinder size, _definiton
@strong{partition_hd_cyl=}number gives the number of heads per cylinder for
partition offset. 0 chooses a default value.
the partition table. 0 chooses a default value. Maximum is 255.
@*
@strong{partition_sec_hd=}number gives the number of sectors per head for
the partition table. 0 chooses a default value. Maximum is 63.
@*
The product partition_sec_hd * partition_hd_cyl * 512 is the cylinder size.
It should be divisible by 2048 in order to allow exact alignment.
If it is too small to describe the image size by at most 1024 cylinders,
then appropriate values of partition_hd_cyl are chosen with
partition_sec_hd 32 or 63. If the image is larger than 8,422,686,720 bytes,
then the cylinder size constraints cannot be fulfilled.
@*
@cindex Cylinder alignment, _definiton
@strong{partition_cyl_align=}mode controls image size alignment to an integer
number of cylinders. It is prescribed by isohybrid specs and it seems to
please program fdisk. Cylinder size must be divisible by 2048.
Images larger than 8,323,596,288 bytes cannot be aligned.
@*
Mode "auto" is default. Alignment by padding happens only with
"isolinux" "partition_table=on".
@*
Mode "on" causes alignment by padding with "partition_table=on" for any type.
Mode "off" disables alignment for any type.
@*
@cindex MIPS boot file, activation
@strong{mips_path=}iso_rr_path declares a data file in the image to be a
@ -3051,7 +3139,7 @@ eventual padding will be counted as part of the ISO image.
@sp 1
@c man .TP
@item -jigdo parameter_name value
@kindex -jigdo clears JTE or sets input/output character set
@kindex -jigdo clears JTE or or adds parameter to JTE
@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
@ -3479,8 +3567,8 @@ Print the foreseeable consumption of 2048 byte blocks
by next -commit. This can last a while as a -commit gets
prepared and only in last moment is revoked by this option.
The result depends on several settings and also on the kind of output device.
If no -jidgo options are given, then -padding (300 kB by default) is not
counted as part of the image size.
If no -jidgo options are given and not command -as "mkisofs" was used,
then -padding (300 kB by default) is not counted as part of the image size.
@c man .TP
@item -tell_media_space
@kindex -tell_media_space reports free space
@ -3676,7 +3764,7 @@ not exist in the ISO image. The report format is the same as with command
@*
@item add_missing iso_rr_path_start
adds the counterpart if it does not yet
exist in the ISO image.
exist in the ISO image and marks it for "rm_merge" as non-removable.
@*
E.g.: -findx /home/thomas -exec add_missing /thomas_on_cd @minus{}@minus{}
@*
@ -4142,10 +4230,9 @@ file paths and pathspecs.
A lot of options are not supported and lead to failure of the mkisofs
emulation. Some are ignored, but better do not rely on this tolerance.
@*
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
are interpreted differently than with xorriso option -add. Directories get
merged with the root directory of the ISO image, other filetypes get mapped
into that root directory.
The supported options are documented in detail in xorrisofs.info
and in man xorrisofs. The description here is focused on the effect
of mkisofs emulation in the context of a xorriso run.
@*
Other than with the "cdrecord" personality there is no automatic -commit at
the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
@ -4153,6 +4240,11 @@ the end of a "mkisofs" option list. Verbosity settings -v (= "UPDATE") and
persists until things happen like -commit, -rollback, -dev, or end of xorriso.
-pacifier gets set to "mkisofs" if files are added to the image.
@*
-graft-points is equivalent to -pathspecs on. Note that pathspecs without "="
are interpreted differently than with xorriso option -add. Directories get
merged with the root directory of the ISO image, other filetypes get mapped
into that root directory.
@*
If pathspecs are given and if no output file was chosen before or during the
"mkisofs" option list, then standard output (-outdev "-") will get into effect.
If -o points to a regular file, then it will be truncated to 0 bytes
@ -4167,11 +4259,22 @@ standard output.
-print-size inhibits automatic image production at program end. This ban is
lifted only if the pending image changes get discarded.
@*
Eventual padding is counted as part of the ISO image if not option --emul-toc
is given.
@*
If no -iso-level is given, then level 1 is chosen when the first file or
directory is added to the image. At the same occasion directory names get
allowed to violate the standard by -compliance option allow_dir_id_ext.
This may be avoided by option -disallow_dir_id_ext.
@*
Option -root is supported. Option -old-root is implemented by xorriso
commands -mkdir, -cp_clone, -find update_merge, and -find rm_merge.
-root and -old-root set command -disk_dev_ino to "ino_only" and -md5 to "on",
by default.
@minus{}disk_dev_ino can be set to "off" by @minus{}@minus{}old-root-no-ino
resp. to "on" by @minus{}@minus{}old-root-devno .
@minus{}md5 can be set to "off" by @minus{}@minus{}old-root-no-md5 .
@*
Not original mkisofs options are @minus{}@minus{}quoted_path_list ,
@minus{}@minus{}hardlinks , @minus{}@minus{}acl ,
@minus{}@minus{}xattr , @minus{}@minus{}md5 , @minus{}@minus{}stdio_sync .
@ -4217,13 +4320,15 @@ Option @minus{}append_partition is supported.
@minus{}untranslated_name_len number is
@minus{}compliance untranslated_name_len=number.
@*
@minus{}@minus{}old-empty is -compliance old_empty.
@*
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}",
Personalities "@strong{xorrisofs}", "@strong{genisoimage}",
and "@strong{genisofs}" are aliases for "mkisofs".
@*
If xorriso is started with one of the leafnames "xorrisofs", "genisofs",
@ -4233,6 +4338,9 @@ I.e. all arguments will be interpreted mkisofs style until "@minus{}@minus{}"
is encountered.
From then on, options are interpreted as xorriso options.
@*
@minus{}@minus{}no_rc as first argument of such a program start
prevents interpretation of startup files. See section FILES below.
@*
@sp 1
@cindex Emulation, cdrecord, -as
@ -4278,6 +4386,9 @@ If xorriso is started with one of the leafnames "xorrecord", "cdrskin",
to the command line arguments. I.e. all arguments will be interpreted cdrecord
style until "@minus{}@minus{}" is encountered and an eventual commit happens.
From then on, options are interpreted as xorriso options.
@*
@minus{}@minus{}no_rc as first argument of such a program start
prevents interpretation of xorriso startup files. See section FILES below.
@c man .TP
@item -read_mkisofsrc
@kindex -read_mkisofsrc searches and reads .mkisofsrc file
@ -4933,6 +5044,8 @@ $ xorriso -as mkisofs prepared_for_iso/tree1 | \
Follow-up sessions are written like this:
@*
@sp 1
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
@*
$ m=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
@*
$ xorriso -as mkisofs -M /dev/sr0 -C $m prepared_for_iso/tree2 | \
@ -4941,8 +5054,13 @@ $ xorriso -as mkisofs -M /dev/sr0 -C $m prepared_for_iso/tree2 | \
@*
@sp 1
Always eject the drive tray between sessions. The old sessions
get read via stdio:/dev/sr0 and thus are prone to device driver
peculiarities.
get read via /dev/sr0. Its device driver might not be aware
of the changed content before it loads the media again.
In this case the previous session would not be loaded and the
new session would contain only the newly added files.
@*
For the same reason do not let xorriso -as cdrecord load the media,
but rather do this manually or by a program that reads from /dev/sr0.
@*
@sp 1
This example works for multi-session media only.
@ -5088,7 +5206,7 @@ $ xorriso \
@*
-not_leaf '*.o' -not_leaf '*.swp' \
@*
-update_r /home/thomas/open_source_projects /open_source_projects \
-update_r /home/thomas/projects /projects \
@*
-update_r /home/thomas/personal_mail /personal_mail \
@*
@ -5138,6 +5256,21 @@ older sessions in the table-of-content. E.g. as superuser:
# osirrox -mount /dev/sr0 "volid" '*2008_12_05*' /mnt
@*
@sp 1
@c man .sp 1
Above example produces a result similar to -root / -old-root / with mkisofs.
For getting the session trees accumulated in the new sessions, let all -update
commands use a common parent directory and clone it after updating is done:
@*
-update_r /home/thomas/projects /current/projects \
@*
-update_r /home/thomas/personal_mail /current/personal_mail \
@*
-clone /current /"$(date '+%Y_%m_%d_%H%M%S')" \
@*
The cloned tree will have a name like /2011_02_12_155700.
@*
@sp 1
@c man .sp 1
Sessions on multi-session media are separated by several MB of unused blocks.
So with small sessions the payload capacity can become substantially lower
than the overall media capacity. If the remaining space on media does not
@ -5145,6 +5278,7 @@ suffice for the next gap, the drive is supposed to close the media
automatically.
@*
@sp 1
@c man .sp 1
@strong{Better do not use your youngest backup for -update_r}.
Have at least two media which you use alternatingly. So only older backups
get endangered by the new write operation, while the newest backup is
@ -5258,6 +5392,9 @@ The default setting of -check_media abort_file= is:
@*
@c man .SH SEE ALSO
@c man .TP
@c man For the mkisofs emulation of xorriso
@c man .BR xorrisofs(1)
@c man .TP
@c man For mounting xorriso generated ISO 9660 images (-t iso9660)
@c man .BR mount(8)
@c man .TP
@ -5286,6 +5423,8 @@ The default setting of -check_media abort_file= is:
@node Seealso, Legal, Files, Top
@chapter See also
@table @asis
@item For the mkisofs emulation of xorriso
xorrisofs(1)
@item For mounting xorriso generated ISO 9660 images (-t iso9660)
mount(8)
@item Libreadline, a comfortable input line facility
@ -5316,7 +5455,7 @@ Thomas Schmitt <scdbackup@@gmx.net>
for libburnia-project.org
@c man .SH COPYRIGHT
@section Copyright
Copyright (c) 2007 - 2010 Thomas Schmitt
Copyright (c) 2007 - 2011 Thomas Schmitt
@*
Permission is granted to distribute this text freely. It shall only be
modified in sync with the technical properties of xorriso. If you make use

View File

@ -446,19 +446,21 @@ This can bring effective read performance near to the raw media reading speed.
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
<DD><A HREF="xorriso-0.6.6.tar.gz">xorriso-0.6.6.tar.gz</A>
(1765 KB).
<DD><A HREF="xorriso-1.0.4.tar.gz">xorriso-1.0.4.tar.gz</A>
(1885 KB).
</DD>
<DD>(Released 12 Dec 2010)</DD>
<DD><A HREF="xorriso-0.6.6.tar.gz.sig">xorriso-0.6.6.tar.gz.sig</A></DD>
<DD>(Released 10 Mar 2011)</DD>
<DD><A HREF="xorriso-1.0.4.tar.gz.sig">xorriso-1.0.4.tar.gz.sig</A></DD>
<DD>
(detached GPG signature for verification by
<KBD>gpg --verify xorriso-0.6.6.tar.gz.sig xorriso-0.6.6.tar.gz</KBD>).
<KBD>gpg --verify xorriso-1.0.4.tar.gz.sig xorriso-1.0.4.tar.gz</KBD>
<BR>
after eventual <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</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.6.tar.gz
as xorriso/xorriso-1.0.4.tar.gz
</DD>
</DL>
</DD>
@ -466,7 +468,14 @@ as xorriso/xorriso-0.6.6.tar.gz
<DL><DT>Documentation:</DT>
<DD><A HREF="README_xorriso">README</A> about installation and drive setup</DD>
<DD><A HREF="xorriso_help">xorriso -help</A> gives an overview of options</DD>
<DD><A HREF="xorrisofs_help">xorriso -as mkisofs -help</A>
supported options of mkisofs emulation
</DD>
<DD><A HREF="xorrecord_help">xorriso -as cdrecord -help</A>
supported options of cdrecord emulation</DD>
<DD><A HREF="man_1_xorriso.html">man xorriso</A> is the manual page</DD>
<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs</A>
describes the mkisofs emulation</DD>
</DL>
<A NAME="contact"></A>
<DL><DT>Contact:</DT>
@ -486,10 +495,22 @@ as xorriso/xorriso-0.6.6.tar.gz
<HR>
<P>
Bug fixes towards xorriso-0.6.4:
Bug fixes towards xorriso-1.0.2:
<UL>
<LI>-as mkisofs -print-size printed the size but also produced ISO image</LI>
<LI>Build problem fix on Linux 2.4</LI>
<LI>xorrisofs did not work under growisofs -M (version 1.0.0 was still ok)
</LI>
<LI>-as mkisofs -C attempted to read volume header of blank media
</LI>
<LI>-as mkisofs -old-root did not work with -graft-points
</LI>
<LI>-as mkisofs -partition_hd_cyl had no effect
</LI>
<LI>-as mkisofs did not properly unescape target part of pathspecs
</LI>
<LI>isohybrid image size was not aligned to cylinder boundary
</LI>
<LI>Compilation without zlib failed
</LI>
<!--
<LI>- none -</LI>
-->
@ -507,16 +528,18 @@ Bug fixes in .pl01 towards xorriso-:
-->
<P>
Enhancements towards previous stable version xorriso-0.6.4:
Enhancements towards previous stable version xorriso-1.0.2:
<UL>
<LI>New -as mkisofs option -joliet-long</LI>
<LI>
New bootspec sparc_label=, new -as mkisofs options -sparc-boot , -sparc-label
for SUN SPARC systems.
<LI>New -padding modes "included" and "appended"
</LI>
<LI>
New action estimate_size for -find and -findx
New bootspec partition_cyl_align=, new -as mkisofs option -partition_cyl_align
</LI>
<LI>
New -as mkisofs and -as cdrecord option --no_rc
</LI>
<LI>
Own man page and info document for xorrisofs
</LI>
<!--
@ -541,16 +564,16 @@ libburnia project and the legal intentions of
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
</DT>
<DD>&nbsp;</DD>
<DT>libburn-0.9.1</DT>
<DT>libburn-1.0.4</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.41</DT>
<DT>libisofs-1.0.4</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.6</DT>
<DT>libisoburn-1.0.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
@ -571,8 +594,8 @@ cdrecord and mkisofs.</DT>
<P>
<DL>
<DT><H3>Development snapshot, version 0.6.7 :</H3></DT>
<DD>Bug fixes towards xorriso-0.6.6:
<DT><H3>Development snapshot, version 1.0.5 :</H3></DT>
<DD>Bug fixes towards xorriso-1.0.4:
<UL>
<LI>- none yet -</LI>
<!--
@ -580,10 +603,11 @@ cdrecord and mkisofs.</DT>
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.6.6:
<DD>Enhancements towards stable version 1.0.4:
<UL>
<LI>- none yet -</LI>
<!--
<LI>- none yet -</LI>
-->
</UL>
@ -591,9 +615,12 @@ cdrecord and mkisofs.</DT>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.6.7</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.6.7 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.6.7)</A></DD>
<DD><A HREF="README_xorriso_devel">README 1.0.5</A>
<DD><A HREF="xorriso_help_devel">xorriso-1.0.5 -help</A></DD>
<DD><A HREF="xorrisofs_help_devel">xorriso-1.0.5 -as mkisofs -help</A></DD>
<DD><A HREF="xorrecord_help_devel">xorriso-1.0.5 -as cdrecord -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 1.0.5)</A></DD>
<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs (as of 1.0.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
@ -603,8 +630,8 @@ libburnia libraries.
installation see README)
</DD>
<DD>
<A HREF="xorriso-0.6.7.tar.gz">xorriso-0.6.7.tar.gz</A>
(1765 KB).
<A HREF="xorriso-1.0.5.tar.gz">xorriso-1.0.5.tar.gz</A>
(1885 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of
@ -701,7 +728,7 @@ scdbackup, multi volume CD/DVD/BD backup</A></DD>
<BR>
Legal statement: This website does not serve any commercial purpose.
<BR><BR>
Copyright &copy; 2008 - 2010 Thomas Schmitt.
Copyright &copy; 2008 - 2011 Thomas Schmitt.
<BR>
This text is freely distributable. It shall only be modified in sync with
the factual properties of xorriso and its public storage locations.

View File

@ -2,7 +2,7 @@
/* xorriso - Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Initial code of this program was derived from program src/askme.c out
of scdbackup-0.8.8, Copyright 2007 Thomas Schmitt, BSD-License.
@ -109,9 +109,9 @@
/* The minimum version of libisoburn xorriso API to be used with this
version of xorriso.
*/
#define Xorriso_req_majoR 0
#define Xorriso_req_minoR 6
#define Xorriso_req_micrO 7
#define Xorriso_req_majoR 1
#define Xorriso_req_minoR 0
#define Xorriso_req_micrO 4
static void yell_xorriso()

View File

@ -291,9 +291,13 @@ indent: $(indent_files)
# Extra things
man_MANS = xorriso/xorriso.1
man_MANS = \
xorriso/xorriso.1 \
xorriso/xorrisofs.1
info_TEXINFOS = xorriso/xorriso.texi
info_TEXINFOS = \
xorriso/xorriso.texi \
xorriso/xorrisofs.texi
EXTRA_DIST = \
xorriso.pc.in \

View File

@ -20,7 +20,13 @@
/* for uint32_t */
#ifdef HAVE_STDINT_H
#include <stdint.h>
#else
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#endif
/** The source code release timestamp */
@ -144,12 +150,18 @@ struct XorrisO { /* the global context of xorriso */
bit2= write MD5 for each data file
bit3= make file content stability check by double reading
bit4= use recorded MD5 as proxy of ISO file
bit5= with bit0: do not check tags of superblock,tree,session
*/
int no_emul_toc; /* bit0= On overwriteables:
write first session to LBA 0 rather than 32.
*/
int do_old_empty; /* See -compliance old_empty
own data content: range [0,31]. The new way is to have
a dedicated block to which all such files will point.
*/
char scdbackup_tag_name[81];
char scdbackup_tag_time[19];
char scdbackup_tag_written[512];
@ -284,10 +296,13 @@ struct XorrisO { /* the global context of xorriso */
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
int padding; /* number of bytes to add after ISO 9660 image */
int do_padding_by_libisofs; /* 0= by libburn , 1= by libisofs */
int alignment; /* if > 0 : image size alignment in 2048 byt blocks */
/* <<< not sure whether to keep this after libisofs will have
learned to pad up MBR images to full MB */
int alignment; /* if > 0 : output size alignment in 2048 byte blocks.
This is always done by libburn, i.e. attached
outside the image. Eventual inner alignment of
the image end happens first.
*/
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
>=16 means yes with number as start LBA */
@ -327,6 +342,12 @@ struct XorrisO { /* the global context of xorriso */
else: unspecified type
1= MIPS Big Endian Volume Header
2= MIPS Little Endian Boot Block
3= SUN Disk Label for SUN SPARC
bit8-9= Only with System area type 0
Cylinder alignment mode
0 = auto (align if bit1)
1 = always align
2 = never align
*/
int patch_system_area; /* Bits as of system_area_options.
to be applied to the loaded system
@ -571,6 +592,10 @@ struct XorrisO { /* the global context of xorriso */
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
/* bit0= update_merge active: mark all newly added nodes as visited+found
*/
int update_flags;
/* result (stdout, R: ) */
char result_line[10*SfileadrL];
int result_line_counter;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2011.01.16.182558"
#define Xorriso_timestamP "2011.03.10.110001"

View File

@ -4,7 +4,7 @@
a command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -17,9 +17,9 @@
/* The minimum version of libisoburn to be used with this version of xorriso
*/
#define xorriso_libisoburn_req_major 0
#define xorriso_libisoburn_req_minor 6
#define xorriso_libisoburn_req_micro 7
#define xorriso_libisoburn_req_major 1
#define xorriso_libisoburn_req_minor 0
#define xorriso_libisoburn_req_micro 4
struct SpotlisT; /* List of intervals with different read qualities */
@ -112,6 +112,9 @@ int Xorriso_blank_as_needed(struct XorrisO *xorriso, int flag);
bit1= remove empty directory: rmdir
bit2= recursion: do not reassure in mode 2 "tree"
bit3= this is for overwriting and not for plain removal
bit4= count deleted files in xorriso->pacifier_count
bit5= with bit0 only remove directory content, not the directory
bit6= do not delete eventually existing node from di_array
@return <=0 = error
1 = removed simple node
2 = removed directory or tree
@ -120,6 +123,7 @@ int Xorriso_blank_as_needed(struct XorrisO *xorriso, int flag);
int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, off_t boss_mem,
char *path, int flag);
/* @param flag bit0= long format
bit1= do not print count of nodes
bit2= du format
@ -556,5 +560,15 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg,
int Xorriso_estimate_file_size(struct XorrisO *xorriso, struct FindjoB *job,
char *basename, mode_t st_mode, off_t st_size, int flag);
int Xorriso_clone_tree(struct XorrisO *xorriso, void *boss_iter,
char *origin, char *dest, int flag);
int Xorriso_clone_under(struct XorrisO *xorriso, char *origin, char *dest,
int flag);
int Xorriso_mark_update_merge(struct XorrisO *xorriso, char *path,
void *node, int flag);
#endif /* Xorrisoburn_includeD */

1501
xorriso/xorrisofs.1 Normal file

File diff suppressed because it is too large Load Diff

1809
xorriso/xorrisofs.info Normal file

File diff suppressed because it is too large Load Diff

2040
xorriso/xorrisofs.texi Normal file

File diff suppressed because it is too large Load Diff