Branching for libisoburn release 0.5.4
This commit is contained in:
parent
04c5aa191c
commit
9842f382fe
3
libisoburn/branches/ZeroFiveFour/AUTHORS
Normal file
3
libisoburn/branches/ZeroFiveFour/AUTHORS
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Thomas Schmitt
|
||||||
|
Vreixo Formoso Lopes
|
||||||
|
|
0
libisoburn/branches/ZeroFiveFour/CONTRIBUTORS
Normal file
0
libisoburn/branches/ZeroFiveFour/CONTRIBUTORS
Normal file
280
libisoburn/branches/ZeroFiveFour/COPYING
Normal file
280
libisoburn/branches/ZeroFiveFour/COPYING
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
22
libisoburn/branches/ZeroFiveFour/COPYRIGHT
Normal file
22
libisoburn/branches/ZeroFiveFour/COPYRIGHT
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Mario Danic <mario.danic@gmail.com>,
|
||||||
|
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||||
|
Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
libisoburn is Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
|
||||||
|
xorriso is Copyright (C) 2007-2010 Thomas Schmitt
|
||||||
|
libisofs (if included) is Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic
|
||||||
|
libburn (if included) is Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
|
||||||
|
and Copyright (C) 2006-2010 Mario Danic, Thomas Schmitt
|
||||||
|
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2
|
||||||
|
or later as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
237
libisoburn/branches/ZeroFiveFour/INSTALL
Normal file
237
libisoburn/branches/ZeroFiveFour/INSTALL
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
|
||||||
|
See file README for libisoburn and xorriso specific installation instructions.
|
||||||
|
This file here is rather a manual for advanced usage of ./configure
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||||
|
2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
Briefly, the shell commands `./configure; make; make install' should
|
||||||
|
configure, build, and install this package. The following
|
||||||
|
more-detailed instructions are generic; see the `README' file for
|
||||||
|
instructions specific to this package.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||||
|
you want to change it or regenerate `configure' using a newer version
|
||||||
|
of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system.
|
||||||
|
|
||||||
|
Running `configure' might take a while. While running, it prints
|
||||||
|
some messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that the
|
||||||
|
`configure' script does not know about. Run `./configure --help' for
|
||||||
|
details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
With a non-GNU `make', it is safer to compile the package for one
|
||||||
|
architecture at a time in the source code directory. After you have
|
||||||
|
installed the package for one architecture, use `make distclean' before
|
||||||
|
reconfiguring for another architecture.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out automatically,
|
||||||
|
but needs to determine by the type of machine the package will run on.
|
||||||
|
Usually, assuming the package is built to be run on the _same_
|
||||||
|
architectures, `configure' can figure that out, but if it prints a
|
||||||
|
message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share, you
|
||||||
|
can create a site shell script called `config.site' that gives default
|
||||||
|
values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script).
|
||||||
|
|
||||||
|
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||||
|
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||||
|
|
||||||
|
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
188
libisoburn/branches/ZeroFiveFour/Makefile.am
Normal file
188
libisoburn/branches/ZeroFiveFour/Makefile.am
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
|
||||||
|
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||||
|
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||||
|
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||||
|
|
||||||
|
libincludedir=$(includedir)/libisoburn
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libisoburn/libisoburn.la
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Build libraries
|
||||||
|
libisoburn_libisoburn_la_LDFLAGS = \
|
||||||
|
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||||
|
libisoburn_libisoburn_la_SOURCES = \
|
||||||
|
libisoburn/burn_wrap.c \
|
||||||
|
libisoburn/data_source.c \
|
||||||
|
libisoburn/isoburn.c \
|
||||||
|
libisoburn/isoburn.h \
|
||||||
|
libisoburn/isofs_wrap.c \
|
||||||
|
libisoburn/libisoburn.h \
|
||||||
|
version.h
|
||||||
|
|
||||||
|
libisoburn_libisoburn_la_LIBADD = \
|
||||||
|
-lisofs \
|
||||||
|
-lburn
|
||||||
|
|
||||||
|
libinclude_HEADERS = \
|
||||||
|
libisoburn/libisoburn.h
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
|
||||||
|
# This is the reference application of libisoburn. See man xorriso/xorriso.1
|
||||||
|
#
|
||||||
|
bin_PROGRAMS = \
|
||||||
|
xorriso/xorriso
|
||||||
|
|
||||||
|
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||||
|
#
|
||||||
|
# Trying to create a build timestamp file
|
||||||
|
#
|
||||||
|
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||||
|
#
|
||||||
|
# phony targets get rebuilt every time
|
||||||
|
#
|
||||||
|
# .PHONY: xorriso/xorriso_buildstamp.h
|
||||||
|
# xorriso/xorriso_buildstamp.h:
|
||||||
|
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
# cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
|
||||||
|
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN \
|
||||||
|
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||||
|
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||||
|
$(XORRISO_DVD_OBS_64K)
|
||||||
|
|
||||||
|
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||||
|
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||||
|
|
||||||
|
xorriso_xorriso_SOURCES = \
|
||||||
|
xorriso/xorriso.h \
|
||||||
|
xorriso/xorriso_private.h \
|
||||||
|
xorriso/xorriso.c \
|
||||||
|
xorriso/xorrisoburn.h \
|
||||||
|
xorriso/xorrisoburn.c \
|
||||||
|
xorriso/xorriso_timestamp.h \
|
||||||
|
xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
|
||||||
|
# Install symbolic links to the xorriso binary
|
||||||
|
#
|
||||||
|
install-exec-hook:
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
|
||||||
|
|
||||||
|
|
||||||
|
# Alternative to the disabled .PHONY above.
|
||||||
|
# Trying to create a build timestamp file semi-manually: make buildstamped
|
||||||
|
#
|
||||||
|
buildstamp:
|
||||||
|
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
# For now make buildstamped has to be performed explicitely.
|
||||||
|
buildstamped: buildstamp
|
||||||
|
make
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Build companion applications
|
||||||
|
noinst_PROGRAMS = \
|
||||||
|
test/compare_file \
|
||||||
|
xorriso/make_xorriso_1
|
||||||
|
|
||||||
|
# A program to compare two files in mirrored trees in mounted filesystems
|
||||||
|
# To compare tree /media/dvd and /original/dir :
|
||||||
|
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
|
||||||
|
#
|
||||||
|
test_compare_file_CPPFLAGS =
|
||||||
|
test_compare_file_CFLAGS =
|
||||||
|
test_compare_file_LDADD =
|
||||||
|
test_compare_file_SOURCES = test/compare_file.c
|
||||||
|
|
||||||
|
# Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1
|
||||||
|
#
|
||||||
|
xorriso_make_xorriso_1_CPPFLAGS =
|
||||||
|
xorriso_make_xorriso_1_CFLAGS =
|
||||||
|
xorriso_make_xorriso_1_LDADD =
|
||||||
|
xorriso_make_xorriso_1_SOURCES = xorriso/make_xorriso_1.c
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
## Build documentation (You need Doxygen for this to work)
|
||||||
|
webhost = http://libburn-api.pykix.org
|
||||||
|
webpath = /
|
||||||
|
docdir = $(DESTDIR)$(prefix)/share/doc/$(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
doc: doc/html
|
||||||
|
|
||||||
|
doc/html: doc/doxygen.conf
|
||||||
|
if [ -f ./doc/doc.lock ]; then \
|
||||||
|
$(RM) -r doc/html; \
|
||||||
|
doxygen doc/doxygen.conf; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
doc-upload: doc/html
|
||||||
|
scp -r $</* $(webhost):$(webpath)
|
||||||
|
|
||||||
|
all: doc
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
if [ -f ./doc/doc.lock ]; then \
|
||||||
|
$(mkinstalldirs) $(docdir)/html; \
|
||||||
|
$(INSTALL_DATA) doc/html/* $(docdir)/html; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
rm -rf $(docdir)
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Indent source files
|
||||||
|
indent_files = \
|
||||||
|
$(libisoburn_libisoburn_la_SOURCES)
|
||||||
|
|
||||||
|
|
||||||
|
indent: $(indent_files)
|
||||||
|
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
|
||||||
|
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
|
||||||
|
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
|
||||||
|
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
|
||||||
|
$^
|
||||||
|
|
||||||
|
.PHONY: indent
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Extra things
|
||||||
|
nodist_pkgconfig_DATA = \
|
||||||
|
libisoburn-1.pc
|
||||||
|
|
||||||
|
man_MANS = xorriso/xorriso.1
|
||||||
|
|
||||||
|
info_TEXINFOS = xorriso/xorriso.texi
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
libisoburn-1.pc.in \
|
||||||
|
version.h.in \
|
||||||
|
doc/comments \
|
||||||
|
doc/doxygen.conf.in \
|
||||||
|
README \
|
||||||
|
AUTHORS \
|
||||||
|
CONTRIBUTORS \
|
||||||
|
COPYRIGHT \
|
||||||
|
COPYING \
|
||||||
|
INSTALL \
|
||||||
|
xorriso/changelog.txt \
|
||||||
|
xorriso/xorriso_buildstamp_none.h \
|
||||||
|
xorriso/README_gnu_xorriso \
|
||||||
|
xorriso/make_docs.sh \
|
||||||
|
$(man_MANS)
|
||||||
|
|
||||||
|
|
197
libisoburn/branches/ZeroFiveFour/README
Normal file
197
libisoburn/branches/ZeroFiveFour/README
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
------------------------------------------------------------------------------
|
||||||
|
http:libburnia-project.org
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
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.5.2.pl00.tar.gz
|
||||||
|
Copyright (C) 2006-2010 Vreixo Formoso, Thomas Schmitt.
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||||
|
creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported
|
||||||
|
by libburn. This includes media like DVD+RW, which do not support multi-session
|
||||||
|
management on media level and even plain disk files or block devices.
|
||||||
|
|
||||||
|
The price for that is thorough specialization on data files in ISO-9660
|
||||||
|
filesystem images. So libisoburn is not suitable for audio (CD-DA) or any
|
||||||
|
other CD layout which does not entirely consist of ISO-9660 sessions.
|
||||||
|
|
||||||
|
xorriso is a command line application of libisoburn, libisofs, and libburn.
|
||||||
|
|
||||||
|
Currently they are fully supported on Linux with kernels >= 2.4 and on
|
||||||
|
FreeBSD versions with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||||||
|
On other X/Open compliant systems libburn will only offer POSIX i/o with disk
|
||||||
|
file objects, but no direct MMC operation on CD/DVD/BD drives.
|
||||||
|
|
||||||
|
By using this software you agree to the disclaimer at the end of this text:
|
||||||
|
"... without even the implied warranty ..."
|
||||||
|
|
||||||
|
|
||||||
|
Compilation, First Glimpse, Installation
|
||||||
|
|
||||||
|
Dynamic library and compile time header requirements for libisoburn-0.5.2 :
|
||||||
|
- libburn.so.4 , version libburn-0.7.8 or higher
|
||||||
|
- libisofs.so.6 , version libisofs-0.6.28 or higher
|
||||||
|
libisoburn and xorriso will not start with libraries which are older than their
|
||||||
|
headers seen at compile time.
|
||||||
|
|
||||||
|
Obtain libisoburn-0.5.2.pl00.tar.gz, take it to a directory of your choice
|
||||||
|
and do:
|
||||||
|
|
||||||
|
tar xzf libisoburn-0.5.2.pl00.tar.gz
|
||||||
|
cd libisoburn-0.5.2
|
||||||
|
|
||||||
|
Within that directory execute:
|
||||||
|
|
||||||
|
./configure --prefix=/usr
|
||||||
|
make
|
||||||
|
|
||||||
|
Then become superuser and execute
|
||||||
|
make install
|
||||||
|
which will make available libisoburn.so.1 and the program xorriso.
|
||||||
|
|
||||||
|
For the API concepts and calls see
|
||||||
|
./libisoburn/libisoburn.h
|
||||||
|
as well as
|
||||||
|
/usr/lib/libisofs/libisofs.h
|
||||||
|
/usr/lib/libburn/libburn.h
|
||||||
|
|
||||||
|
|
||||||
|
xorriso
|
||||||
|
|
||||||
|
libisoburn comes with a command line and dialog application named xorriso,
|
||||||
|
which offers a substantial part of libisoburn features to shell scripts and
|
||||||
|
users. Its file xorriso/README_gnu_xorriso describes the tarball of the
|
||||||
|
derived package GNU xorriso as first preference for a statically linked
|
||||||
|
xorriso installation.
|
||||||
|
The libisoburn installation described above produces a dynamically linked
|
||||||
|
xorriso binary depending on libburn.so, libisofs.so, libisoburn.so.
|
||||||
|
|
||||||
|
After installation documentation is available via
|
||||||
|
man xorriso
|
||||||
|
|
||||||
|
Several alias links point to the xorriso binary:
|
||||||
|
xorrisofs starts xorriso with -as mkisofs emulation already enabled
|
||||||
|
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||||
|
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||||
|
|
||||||
|
By default xorriso will depend on libreadline if the readline-dev headers
|
||||||
|
are present. This dependcy can be avoided by running
|
||||||
|
./configure --prefix=/usr --disable-libreadline
|
||||||
|
make clean ; make
|
||||||
|
Never omit the "make clean" command after switching libreadline enabling.
|
||||||
|
Other deliberate dependency reduction options of ./configure are:
|
||||||
|
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||||||
|
--disable-xattr avoid use of xattr functions like listxattr()
|
||||||
|
--disable-zlib avoid use of zlib functions like compress2()
|
||||||
|
|
||||||
|
xorriso allows to use external processes as file content filters. This is
|
||||||
|
a potential security risk which may be avoided by ./configure option
|
||||||
|
--disable-external-filters
|
||||||
|
By default the filter feature is disabled if effective user id and real
|
||||||
|
user id differ. This ban can be lifted by
|
||||||
|
--enable-external-filters-setuid
|
||||||
|
|
||||||
|
In some situations Linux may deliver a better write performance to DVD drives
|
||||||
|
if 64 KB rather than 32 KB are transmitted in each write operation.
|
||||||
|
64k can be made default at configure time by:
|
||||||
|
--enable-dvd-obs-64k
|
||||||
|
|
||||||
|
|
||||||
|
Drives and Disk File Objects
|
||||||
|
|
||||||
|
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
|
||||||
|
drives which shall be used, even if only reading is intended.
|
||||||
|
A list of rw-accessible drives can be obtained by
|
||||||
|
xorriso -devices
|
||||||
|
resp. by libburn API call
|
||||||
|
burn_drive_scan()
|
||||||
|
|
||||||
|
|
||||||
|
A possible source of problems are hald or other automounters.
|
||||||
|
If you can spot a process "hald-addon-storage" with the address of
|
||||||
|
your desired drive, then consider to kill it.
|
||||||
|
|
||||||
|
If you cannot get rid of the automounter that easily, try whether it helps
|
||||||
|
to always load the drive tray manually before starting a write run of
|
||||||
|
xorriso. Wait until the drive light is off.
|
||||||
|
Better try to unmount an eventually mounted media before a write run.
|
||||||
|
|
||||||
|
|
||||||
|
Besides true optical drives, libisoburn can also address disk files as input or
|
||||||
|
output drives. The addresses of the disk files have to be preceded by "stdio:".
|
||||||
|
Like:
|
||||||
|
"stdio:/tmp/pseudo_drive"
|
||||||
|
|
||||||
|
Note: xorriso by default prefixes "stdio:" to addresses outside the /dev tree
|
||||||
|
if they do not lead to an optical drive device file.
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
|
||||||
|
We are quite sure that libisofs produces accurate representations of the disk
|
||||||
|
files. This opinion is founded on a lot of test burns and checks by a little
|
||||||
|
test program which compares files from the mounted image with the orignals
|
||||||
|
on disk. It uses the normal POSIX filesystem calls, i.e. no libburnia stuff.
|
||||||
|
|
||||||
|
This program is not installed systemwide but stays in the installation
|
||||||
|
directory of the libisoburn tarball as test/compare_file . Usually it is
|
||||||
|
run as -exec payload of a find command. It demands at least three arguments:
|
||||||
|
The path of the file to compare, the prefix1 to be cut off from path
|
||||||
|
and the prefix2 which gets prepended afterwards to obtain the path of the
|
||||||
|
second file to compare.
|
||||||
|
As further argument there can be -no_ctime which suppresses the comparison
|
||||||
|
of ctime date stamps.
|
||||||
|
The exit value is 0 if no difference was detected, non-0 else.
|
||||||
|
|
||||||
|
Example: After
|
||||||
|
xorriso ... -pathspecs on -add /=/original/dir --
|
||||||
|
mount /media/dvd
|
||||||
|
cd test
|
||||||
|
compare tree /media/dvd with tree /original/dir :
|
||||||
|
find /original/dir -exec ./compare_file '{}' /original/dir /media/dvd ';' \
|
||||||
|
| less
|
||||||
|
and vice versa:
|
||||||
|
find /media/dvd -exec ./compare_file '{}' /media/dvd /original/dir ';' \
|
||||||
|
| less
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 2 or later
|
||||||
|
as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Based on and sub project of:
|
||||||
|
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.
|
||||||
|
|
||||||
|
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
|
||||||
|
the condition of offering the library source code used, whether
|
||||||
|
altered or unaltered, under the GPLv2+, along with the application.
|
||||||
|
Nevertheless, the safest legal position is not to link libburn with
|
||||||
|
non-GPL compatible programs.
|
||||||
|
|
||||||
|
libburnia-project.org is inspired by and in other components still containing
|
||||||
|
parts of old
|
||||||
|
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||||
|
Ben Jansens <xor@orodu.net>
|
||||||
|
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||||
|
libisoburn does not stem from their code.
|
||||||
|
|
11
libisoburn/branches/ZeroFiveFour/TODO
Normal file
11
libisoburn/branches/ZeroFiveFour/TODO
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Task] Figure out how to use "Requires" in pc.in (libisoburn and libisofs would benefit)
|
||||||
|
[Task] Figure out the usage of Libs.private (used in libburn)
|
||||||
|
[Task] Improve build system
|
||||||
|
[Task] Investigate build system, so other libburnia components can benefit
|
||||||
|
[Task] Write Doxygen files
|
||||||
|
[Task] Explain to Thomas & Vreixo about NEWS importance (all libburnia components
|
||||||
|
will benefit
|
||||||
|
[Task] Write a document about ABI & API
|
||||||
|
[Task] Create following targets for make: Src, Indent, Docs, Test, All [Any other suggestions?)
|
||||||
|
|
||||||
|
All those tasks are currently assigned to Mario.
|
218
libisoburn/branches/ZeroFiveFour/acinclude.m4
Normal file
218
libisoburn/branches/ZeroFiveFour/acinclude.m4
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
AC_DEFUN([LIBBURNIA_SET_FLAGS],
|
||||||
|
[
|
||||||
|
case $target_os in
|
||||||
|
freebsd*)
|
||||||
|
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
||||||
|
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFUN([TARGET_SHIZZLE],
|
||||||
|
[
|
||||||
|
ARCH=""
|
||||||
|
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([target operating system])
|
||||||
|
|
||||||
|
case $target in
|
||||||
|
*-*-linux*)
|
||||||
|
ARCH=linux
|
||||||
|
LIBBURN_ARCH_LIBS=
|
||||||
|
;;
|
||||||
|
*-*-freebsd*)
|
||||||
|
ARCH=freebsd
|
||||||
|
LIBBURN_ARCH_LIBS=-lcam
|
||||||
|
|
||||||
|
# This may later be overridden by configure --enable-libdir-pkgconfig
|
||||||
|
LIBBURNIA_PKGCONFDIR=$(echo "$libdir" | sed 's/\/lib$/\/libdata/')/pkgconfig
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ARCH=
|
||||||
|
LIBBURN_ARCH_LIBS=
|
||||||
|
# AC_ERROR([You are attempting to compile for an unsupported platform])
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
AC_MSG_RESULT([$ARCH])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl LIBBURNIA_CHECK_ICONV is by Thomas Schmitt, libburnia project
|
||||||
|
dnl It is based on gestures from:
|
||||||
|
dnl iconv.m4 serial AM7 (gettext-0.18)
|
||||||
|
dnl Copyright (C) 2000-2002, 2007-2009 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([LIBBURNIA_CHECK_ICONV],
|
||||||
|
[
|
||||||
|
|
||||||
|
dnl Check whether it is allowed to link with -liconv
|
||||||
|
AC_MSG_CHECKING([for iconv() in separate -liconv ])
|
||||||
|
libburnia_liconv="no"
|
||||||
|
libburnia_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -liconv"
|
||||||
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
|
#include <iconv.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);],
|
||||||
|
[libburnia_liconv="yes"],
|
||||||
|
[LIBS="$libburnia_save_LIBS"]
|
||||||
|
)
|
||||||
|
AC_MSG_RESULT([$libburnia_liconv])
|
||||||
|
|
||||||
|
if test x"$libburnia_save_LIBS" = x"$LIBS"
|
||||||
|
then
|
||||||
|
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||||
|
dnl It is not tested whether this is detected by above macro.
|
||||||
|
AC_CHECK_LIB(iconv, libiconv, , )
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Check for iconv(..., const char **inbuf, ...)
|
||||||
|
AC_MSG_CHECKING([for const qualifier with iconv() ])
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <iconv.h>
|
||||||
|
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||||
|
], [], [libburnia_iconv_const=""], [libburnia_iconv_const="const"]
|
||||||
|
)
|
||||||
|
AC_DEFINE_UNQUOTED([ICONV_CONST], [$libburnia_iconv_const])
|
||||||
|
test -z "$libburnia_iconv_const" && libburnia_iconv_const="no"
|
||||||
|
AC_MSG_RESULT([$libburnia_iconv_const])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl LIBBURNIA_ASSERT_ICONV is by Thomas Schmitt, libburnia project
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([LIBBURNIA_ASSERT_ICONV],
|
||||||
|
[
|
||||||
|
if test x$XORRISO_ASSUME_ICONV = x
|
||||||
|
then
|
||||||
|
dnl Check for the essential gestures of libisofs/util.c
|
||||||
|
AC_MSG_CHECKING([for iconv() to be accessible now ])
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <iconv.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <langinfo.h>
|
||||||
|
#include <unistd.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);
|
||||||
|
], [iconv_test="yes"], [iconv_test="no"]
|
||||||
|
)
|
||||||
|
AC_MSG_RESULT([$iconv_test])
|
||||||
|
if test x$iconv_test = xno
|
||||||
|
then
|
||||||
|
echo >&2
|
||||||
|
echo "Cannot get function iconv() to work. Configuration aborted." >&2
|
||||||
|
echo "Check whether your system needs a separate libiconv installed." >&2
|
||||||
|
echo "If it is installed but not found, try something like" >&2
|
||||||
|
echo ' export LDFLAGS="$LDFLAGS -L/usr/local/lib"' >&2
|
||||||
|
echo ' export CPPFLAGS="$CPPFLAGS -I/usr/local/include"' >&2
|
||||||
|
echo ' export LIBS="$LIBS -liconv"' >&2
|
||||||
|
echo "You may override this test by exporting variable" >&2
|
||||||
|
echo " XORRISO_ASSUME_ICONV=yes" >&2
|
||||||
|
echo >&2
|
||||||
|
(exit 1); exit 1;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl LIBBURNIA_ASSERT_READLINE disables xorriso readline if not all needed
|
||||||
|
dnl functions are present
|
||||||
|
AC_DEFUN([LIBBURNIA_ASSERT_READLINE],
|
||||||
|
[
|
||||||
|
if test x$XORRISO_ASSUME_READLINE = x
|
||||||
|
then
|
||||||
|
dnl Check for the essential gestures of libisofs/util.c
|
||||||
|
AC_MSG_CHECKING([for desired functions in libreadline])
|
||||||
|
libburnia_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -lreadline"
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <readline/readline.h>
|
||||||
|
#include <readline/history.h>],
|
||||||
|
[HIST_ENTRY **hl;
|
||||||
|
readline("");
|
||||||
|
add_history("");
|
||||||
|
hl= history_list();
|
||||||
|
], [readline_test="yes"], [readline_test="no"]
|
||||||
|
)
|
||||||
|
AC_MSG_RESULT([$readline_test])
|
||||||
|
if test x$readline_test = xno
|
||||||
|
then
|
||||||
|
READLINE_DEF=
|
||||||
|
LIBS="$libburnia_save_LIBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl LIBBURNIA_SET_PKGCONFIG determines the install directory for the *.pc file.
|
||||||
|
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([LIBBURNIA_SET_PKGCONFIG],
|
||||||
|
[
|
||||||
|
### for testing --enable-libdir-pkgconfig on Linux
|
||||||
|
### LIBBURNIA_PKGCONFDIR="$libdir"data/pkgconfig
|
||||||
|
|
||||||
|
if test "x$LIBBURNIA_PKGCONFDIR" = "x$libdir"/pkgconfig
|
||||||
|
then
|
||||||
|
dummy=dummy
|
||||||
|
else
|
||||||
|
AC_ARG_ENABLE(libdir-pkgconfig,
|
||||||
|
[ --enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no],
|
||||||
|
, enable_libdir_pkgconfig="no")
|
||||||
|
AC_MSG_CHECKING([for --enable-libdir-pkgconfig])
|
||||||
|
if test "x$enable_libdir_pkgconfig" = xyes
|
||||||
|
then
|
||||||
|
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$enable_libdir_pkgconfig])
|
||||||
|
fi
|
||||||
|
|
||||||
|
libburnia_pkgconfig_override="no"
|
||||||
|
AC_ARG_ENABLE(pkgconfig-path,
|
||||||
|
[ --enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc],
|
||||||
|
libburnia_pkgconfig_override="yes" , enable_pkgconfig_path="none")
|
||||||
|
AC_MSG_CHECKING([for overridden pkgconfig directory path])
|
||||||
|
if test "x$enable_pkgconfig_path" = xno
|
||||||
|
then
|
||||||
|
libburnia_pkgconfig_override="no"
|
||||||
|
fi
|
||||||
|
if test "x$enable_pkgconfig_path" = x -o "x$enable_pkgconfig_path" = xyes
|
||||||
|
then
|
||||||
|
libburnia_pkgconfig_override="invalid argument"
|
||||||
|
fi
|
||||||
|
if test "x$libburnia_pkgconfig_override" = xyes
|
||||||
|
then
|
||||||
|
LIBBURNIA_PKGCONFDIR="$enable_pkgconfig_path"
|
||||||
|
AC_MSG_RESULT([$LIBBURNIA_PKGCONFDIR])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([$libburnia_pkgconfig_override])
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||||
|
|
||||||
|
dnl For debugging only
|
||||||
|
### AC_MSG_RESULT([LIBBURNIA_PKGCONFDIR = $LIBBURNIA_PKGCONFDIR])
|
||||||
|
|
||||||
|
])
|
||||||
|
|
7
libisoburn/branches/ZeroFiveFour/bootstrap
Executable file
7
libisoburn/branches/ZeroFiveFour/bootstrap
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
aclocal
|
||||||
|
libtoolize --copy --force
|
||||||
|
autoconf
|
||||||
|
automake --foreign --add-missing --copy --include-deps
|
||||||
|
|
304
libisoburn/branches/ZeroFiveFour/configure.ac
Normal file
304
libisoburn/branches/ZeroFiveFour/configure.ac
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
AC_INIT([libisoburn], [0.5.3], [http://libburnia-project.org])
|
||||||
|
AC_PREREQ([2.50])
|
||||||
|
dnl AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
AC_CANONICAL_TARGET
|
||||||
|
|
||||||
|
LIBBURNIA_SET_FLAGS
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([subdir-objects])
|
||||||
|
|
||||||
|
dnl Hint: Search list for version code aspects:
|
||||||
|
dnl /AC_INIT(
|
||||||
|
dnl /ISOBURN_.*_VERSION
|
||||||
|
dnl /LT_.*
|
||||||
|
dnl /LIB.*_REQUIRED
|
||||||
|
|
||||||
|
dnl The API version codes are defined in libisoburn/libisoburn.h
|
||||||
|
dnl #define isoburn_header_version_*
|
||||||
|
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=5
|
||||||
|
ISOBURN_MICRO_VERSION=3
|
||||||
|
|
||||||
|
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||||
|
|
||||||
|
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||||
|
AC_SUBST(ISOBURN_MINOR_VERSION)
|
||||||
|
AC_SUBST(ISOBURN_MICRO_VERSION)
|
||||||
|
dnl AC_SUBST(ISOBURN_VERSION)
|
||||||
|
|
||||||
|
dnl Libtool versioning
|
||||||
|
dnl Generate libisoburn.so.1.x.y
|
||||||
|
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||||
|
dnl
|
||||||
|
dnl ts B00329
|
||||||
|
dnl ### This is the release version 0.5.2 = libisoburn.so.1.41.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 = 42 - 41 = 1 . Library name = libisoburn.so.1.41.0
|
||||||
|
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||||
|
LT_CURRENT=42
|
||||||
|
LT_AGE=41
|
||||||
|
LT_REVISION=0
|
||||||
|
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||||
|
|
||||||
|
AC_SUBST(LT_RELEASE)
|
||||||
|
AC_SUBST(LT_CURRENT)
|
||||||
|
AC_SUBST(LT_REVISION)
|
||||||
|
AC_SUBST(LT_AGE)
|
||||||
|
AC_SUBST(LT_CURRENT_MINUS_AGE)
|
||||||
|
|
||||||
|
AC_PREFIX_DEFAULT([/usr/local])
|
||||||
|
test "$prefix" = "NONE" && prefix=$ac_default_prefix
|
||||||
|
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
AC_C_BIGENDIAN
|
||||||
|
|
||||||
|
dnl Large file support
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
AC_FUNC_FSEEKO
|
||||||
|
AC_CHECK_FUNC([fseeko])
|
||||||
|
if test ! $ac_cv_func_fseeko; then
|
||||||
|
AC_ERROR([Libburn requires largefile support.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$LIBISOBURN_OLD_ICONV_CONFIGURE = x
|
||||||
|
then
|
||||||
|
|
||||||
|
dnl ts B00410 : To detect the need for -liconv and const argument of iconv()
|
||||||
|
LIBBURNIA_CHECK_ICONV
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
dnl Outdated: produces double -liconv and warnings about parameter mismatch
|
||||||
|
dnl If iconv(3) is in an extra lib, then it gets added to variable LIBS.
|
||||||
|
dnl If not, then no -liconv will be added.
|
||||||
|
AC_CHECK_LIB(iconv, iconv, , )
|
||||||
|
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||||
|
AC_CHECK_LIB(iconv, libiconv, , )
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
AC_SUBST(LIBTOOL_DEPS)
|
||||||
|
LIBTOOL="$LIBTOOL --silent"
|
||||||
|
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS()
|
||||||
|
|
||||||
|
THREAD_LIBS=-lpthread
|
||||||
|
AC_SUBST(THREAD_LIBS)
|
||||||
|
|
||||||
|
TARGET_SHIZZLE
|
||||||
|
AC_SUBST(ARCH)
|
||||||
|
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||||
|
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
dnl Determine target directory for libisoburn-*.pc
|
||||||
|
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||||
|
dnl
|
||||||
|
LIBBURNIA_SET_PKGCONFIG
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(libreadline,
|
||||||
|
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||||
|
, enable_libreadline=yes)
|
||||||
|
if test x$enable_libreadline = xyes; then
|
||||||
|
dnl Check whether there is readline-devel and readline-runtime.
|
||||||
|
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||||
|
READLINE_DEF="-DXorriso_with_readlinE"
|
||||||
|
|
||||||
|
if test x$XORRISO_OLD_READLINE_CONFIGURE = x
|
||||||
|
then
|
||||||
|
|
||||||
|
dnl ts B00411 : To disable readline if not all needed functions are present
|
||||||
|
LIBBURNIA_ASSERT_READLINE
|
||||||
|
|
||||||
|
else
|
||||||
|
dnl The empty yes case obviously causes -lreadline to be linked
|
||||||
|
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||||
|
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||||
|
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
READLINE_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(READLINE_DEF)
|
||||||
|
|
||||||
|
dnl ts A90329
|
||||||
|
dnl ACL and xattr do not need to be enabled in libisoburn or xorriso source
|
||||||
|
dnl but without AC_CHECK_LIB() xorriso will not be linked with -lacl .
|
||||||
|
dnl On my Linux this does work with an ACL enabled libisofs but in general
|
||||||
|
dnl it seems not be right.
|
||||||
|
dnl So for now it seems to be best to do the same configuration for libisoburn
|
||||||
|
dnl and xorriso as for libisofs.
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(libacl,
|
||||||
|
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
|
||||||
|
, enable_libacl=yes)
|
||||||
|
if test x$enable_libacl = xyes; then
|
||||||
|
dnl Check whether there is libacl-devel and libacl-runtime.
|
||||||
|
dnl If not, erase this macro which would enable use of acl_to_text and others
|
||||||
|
LIBACL_DEF="-DLibisofs_with_aaip_acL"
|
||||||
|
dnl The empty yes case obviously causes -lacl to be linked
|
||||||
|
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
|
||||||
|
else
|
||||||
|
LIBACL_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBACL_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(xattr,
|
||||||
|
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
|
||||||
|
, enable_xattr=yes)
|
||||||
|
if test x$enable_xattr = xyes; then
|
||||||
|
dnl Check whether there is the header for Linux xattr.
|
||||||
|
dnl If not, erase this macro which would enable use of listxattr and others
|
||||||
|
XATTR_DEF="-DLibisofs_with_aaip_xattR"
|
||||||
|
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
|
||||||
|
else
|
||||||
|
XATTR_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(XATTR_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
dnl ts A90409
|
||||||
|
dnl Same situation as with xattr and ACL: libisoburn does not depend directly
|
||||||
|
dnl on zlib. But if it is enabled in libisofs then it seems wise to link it
|
||||||
|
dnl with libisoburn apps.
|
||||||
|
AC_ARG_ENABLE(zlib,
|
||||||
|
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
|
||||||
|
, enable_zlib=yes)
|
||||||
|
if test x$enable_zlib = xyes; then
|
||||||
|
dnl Check whether there is the header for zlib.
|
||||||
|
dnl If not, erase this macro which would enable use of compress2() and others.
|
||||||
|
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
|
||||||
|
dnl compressBound(). So compressBound is the more modern thing to test.
|
||||||
|
dnl The empty parameter after "compressBound" causes -lz.
|
||||||
|
ZLIB_DEF="-DLibisofs_with_zliB"
|
||||||
|
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
|
||||||
|
else
|
||||||
|
ZLIB_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(ZLIB_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
dnl ts B00107
|
||||||
|
dnl Just for the case that it is necessary to give link option -lcdio not only
|
||||||
|
dnl with libburn but also with libburn apps like xorriso.
|
||||||
|
dnl On SuSE 10.2 this is not needed. libburn finds libcdio on its own.
|
||||||
|
AC_ARG_ENABLE(libcdio,
|
||||||
|
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
|
||||||
|
, enable_libcdio=no)
|
||||||
|
if test x$enable_libcdio = xyes; then
|
||||||
|
dnl Check whether there is libcdio-devel and libcdio-runtime.
|
||||||
|
dnl If not, erase this macro
|
||||||
|
LIBCDIO_DEF="-DLibburn_use_libcdiO"
|
||||||
|
dnl The empty yes case obviously causes -lcdio to be linked
|
||||||
|
AC_CHECK_HEADER(cdio/cdio.h, AC_CHECK_LIB(cdio, mmc_last_cmd_sense, , LIBCDIO_DEF= ), LIBCDIO_DEF= )
|
||||||
|
else
|
||||||
|
LIBCDIO_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBCDIO_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(external-filters,
|
||||||
|
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
|
||||||
|
, enable_external_filters=yes)
|
||||||
|
if test x"$enable_external_filters" = xyes; then
|
||||||
|
EXTF_DEF="-DXorriso_allow_external_filterS"
|
||||||
|
echo "enabled xorriso external filter programs"
|
||||||
|
else
|
||||||
|
EXTF_DEF=
|
||||||
|
echo "disabled xorriso external filter programs"
|
||||||
|
fi
|
||||||
|
AC_SUBST(EXTF_DEF)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(external-filters-setuid,
|
||||||
|
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
|
||||||
|
, enable_external_filters_setuid=no)
|
||||||
|
if test x$enable_external_filters_setuid = xyes; then
|
||||||
|
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||||
|
echo "enabled xorriso external filter programs under setuid"
|
||||||
|
else
|
||||||
|
EXTF_SUID_DEF=
|
||||||
|
echo "disabled xorriso external filter programs under setuid"
|
||||||
|
fi
|
||||||
|
AC_SUBST(EXTF_SUID_DEF)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(dvd-obs-64k,
|
||||||
|
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD/BD writing, default=no],
|
||||||
|
, enable_fifo_odirect=no)
|
||||||
|
if test x$enable_dvd_obs_64k = xyes; then
|
||||||
|
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
|
||||||
|
echo "enabled xorriso write size default 64 KB on DVD and BD"
|
||||||
|
else
|
||||||
|
XORRISO_DVD_OBS_64K=
|
||||||
|
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||||
|
fi
|
||||||
|
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||||
|
|
||||||
|
|
||||||
|
AC_CHECK_HEADER(libburn/libburn.h)
|
||||||
|
AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||||
|
|
||||||
|
dnl Check for proper library versions
|
||||||
|
LIBBURN_REQUIRED=0.7.8
|
||||||
|
LIBISOFS_REQUIRED=0.6.30
|
||||||
|
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||||
|
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||||
|
|
||||||
|
if test x$LIBCDIO_DEF = x
|
||||||
|
then
|
||||||
|
if test x$enable_libcdio = xyes
|
||||||
|
then
|
||||||
|
echo "WARNING: could not enable use of libcdio as system adapter"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
|
||||||
|
|
||||||
|
dnl For some reason this check may not be done earlier or else pkg-config
|
||||||
|
dnl is not found.
|
||||||
|
LIBCDIO_REQUIRED=0.83
|
||||||
|
PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Add compiler-specific flags
|
||||||
|
|
||||||
|
dnl See if the user wants aggressive optimizations of the code
|
||||||
|
AC_ARG_ENABLE(debug,
|
||||||
|
[ --enable-debug Disable aggressive optimizations [default=yes]],
|
||||||
|
, enable_debug=yes)
|
||||||
|
if test x$enable_debug != xyes; then
|
||||||
|
if test x$GCC = xyes; then
|
||||||
|
CFLAGS="$CFLAGS -O3"
|
||||||
|
CFLAGS="$CFLAGS -fexpensive-optimizations"
|
||||||
|
fi
|
||||||
|
CFLAGS="$CFLAGS -DNDEBUG"
|
||||||
|
else
|
||||||
|
if test x$GCC = xyes; then
|
||||||
|
CFLAGS="$CFLAGS -g -pedantic -Wall"
|
||||||
|
fi
|
||||||
|
CFLAGS="$CFLAGS -DDEBUG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
doc/doxygen.conf
|
||||||
|
version.h
|
||||||
|
libisoburn-1.pc
|
||||||
|
])
|
||||||
|
AC_OUTPUT
|
58
libisoburn/branches/ZeroFiveFour/doc/comments
Normal file
58
libisoburn/branches/ZeroFiveFour/doc/comments
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/**
|
||||||
|
@author Mario Danic, Vreixo Formoso, Thomas Schmitt
|
||||||
|
|
||||||
|
@mainpage Libisoburn Documentation Index
|
||||||
|
|
||||||
|
@section intro Introduction
|
||||||
|
|
||||||
|
Libburnia is an open-source project for reading, mastering and writing
|
||||||
|
optical discs. This page is about its capability to read, manipulate, and
|
||||||
|
write ISO 9660 filesystems with Rock Ridge extensions. Media can be optical
|
||||||
|
media or filesystem objects.
|
||||||
|
|
||||||
|
Our scope is currently Linux 2.4 and 2.6, or FreeBSD .
|
||||||
|
|
||||||
|
libisoburn is an add-on to libburn and libisofs which coordinates both and
|
||||||
|
also allows to grow ISO-9660 filesystem images on multi-session media as well
|
||||||
|
as on overwriteable media via the same API.
|
||||||
|
All media peculiarities are handled automatically.
|
||||||
|
|
||||||
|
xorriso is an application of all three libraries which creates, loads,
|
||||||
|
manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
|
||||||
|
Manipulation is not only adding or overwriting of files but also deletion,
|
||||||
|
renaming, and attribute changing. An incremental backup feature is provided.
|
||||||
|
See xorriso/README for more
|
||||||
|
|
||||||
|
SONAME:
|
||||||
|
libisoburn.so.1 (since 0.1.0, February 2008).
|
||||||
|
|
||||||
|
|
||||||
|
@section using Using the libraries
|
||||||
|
|
||||||
|
Our build system is based on autotools.
|
||||||
|
User experience tells us that you will need at least autotools version 1.7.
|
||||||
|
|
||||||
|
To build libisoburn go into its toplevel directory and execute
|
||||||
|
|
||||||
|
- ./bootstrap (needed if you downloaded from SVN)
|
||||||
|
|
||||||
|
- ./configure
|
||||||
|
|
||||||
|
- make
|
||||||
|
|
||||||
|
To make the libraries accessible for running resp. developing applications
|
||||||
|
|
||||||
|
- make install
|
||||||
|
|
||||||
|
Read libisoburn/libisoburn.h for a description of the API.
|
||||||
|
See also README, xorriso/README, and the man page xorriso/xorriso.1 which
|
||||||
|
gives an idea of the capabilities provided by Libburnia.
|
||||||
|
|
||||||
|
You will also have to install and understand the two libraries of the
|
||||||
|
Libburnia project which provide fundamental services:
|
||||||
|
libburn is the library by which preformatted data get onto optical media.
|
||||||
|
See libburn/libburn.h for its API description.
|
||||||
|
libisofs is the library to handle ISO 9660 filesystems with Rock Ridge
|
||||||
|
extensions. Its API is described in libisofs/libisofs.h .
|
||||||
|
|
||||||
|
*/
|
1298
libisoburn/branches/ZeroFiveFour/doc/doxygen.conf.in
Normal file
1298
libisoburn/branches/ZeroFiveFour/doc/doxygen.conf.in
Normal file
File diff suppressed because it is too large
Load Diff
12
libisoburn/branches/ZeroFiveFour/libisoburn-1.pc.in
Normal file
12
libisoburn/branches/ZeroFiveFour/libisoburn-1.pc.in
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
libdir=@libdir@
|
||||||
|
includedir=@includedir@
|
||||||
|
|
||||||
|
Name: libisoburn
|
||||||
|
Description: Multi-session filesystem extension to libisofs, libburn.
|
||||||
|
Version: @VERSION@
|
||||||
|
Requires:
|
||||||
|
Libs: -L${libdir} -lisoburn
|
||||||
|
Cflags: -I${includedir}/libisoburn
|
||||||
|
|
1846
libisoburn/branches/ZeroFiveFour/libisoburn/burn_wrap.c
Normal file
1846
libisoburn/branches/ZeroFiveFour/libisoburn/burn_wrap.c
Normal file
File diff suppressed because it is too large
Load Diff
270
libisoburn/branches/ZeroFiveFour/libisoburn/data_source.c
Normal file
270
libisoburn/branches/ZeroFiveFour/libisoburn/data_source.c
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
/*
|
||||||
|
data source for libisoburn.
|
||||||
|
|
||||||
|
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||||
|
and Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef Xorriso_standalonE
|
||||||
|
|
||||||
|
#include <libburn/libburn.h>
|
||||||
|
|
||||||
|
#include <libisofs/libisofs.h>
|
||||||
|
|
||||||
|
#else /* ! Xorriso_standalonE */
|
||||||
|
|
||||||
|
#include "../libisofs/libisofs.h"
|
||||||
|
#include "../libburn/libburn.h"
|
||||||
|
|
||||||
|
#endif /* Xorriso_standalonE */
|
||||||
|
|
||||||
|
|
||||||
|
#include "isoburn.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Cached reading of image tree data */
|
||||||
|
/* Multi tile: 32 * 64 kB */
|
||||||
|
|
||||||
|
/* The size of a single tile.
|
||||||
|
Powers of 2 only ! Less than 16 makes not much sense.
|
||||||
|
*/
|
||||||
|
#define Libisoburn_tile_blockS 32
|
||||||
|
|
||||||
|
/* The number of tiles in the cache
|
||||||
|
*/
|
||||||
|
#define Libisoburn_cache_tileS 32
|
||||||
|
|
||||||
|
|
||||||
|
/* Debugging only: This reports cache loads on stderr.
|
||||||
|
#define Libisoburn_read_cache_reporT 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
struct isoburn_cache_tile {
|
||||||
|
char cache_data[Libisoburn_tile_blockS * 2048];
|
||||||
|
uint32_t cache_lba;
|
||||||
|
uint32_t last_error_lba;
|
||||||
|
uint32_t last_aligned_error_lba;
|
||||||
|
int cache_hits;
|
||||||
|
int age;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isoburn_cached_drive {
|
||||||
|
struct burn_drive *drive;
|
||||||
|
struct isoburn_cache_tile tiles[Libisoburn_cache_tileS];
|
||||||
|
int current_age;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define Libisoburn_max_agE 2000000000
|
||||||
|
|
||||||
|
static int ds_inc_age(struct isoburn_cached_drive *icd, int idx, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
||||||
|
{
|
||||||
|
int ret, i, oldest, oldest_age;
|
||||||
|
struct burn_drive *d;
|
||||||
|
off_t count;
|
||||||
|
uint32_t aligned_lba;
|
||||||
|
char msg[80];
|
||||||
|
struct isoburn_cache_tile *tiles;
|
||||||
|
struct isoburn_cached_drive *icd;
|
||||||
|
|
||||||
|
if(src == NULL || buffer == NULL)
|
||||||
|
/* It is not required by the specs of libisofs but implicitely assumed
|
||||||
|
by its current implementation that a data source read result <0 is
|
||||||
|
a valid libisofs error code.
|
||||||
|
*/
|
||||||
|
return ISO_NULL_POINTER;
|
||||||
|
|
||||||
|
icd = (struct isoburn_cached_drive *) src->data;
|
||||||
|
d = (struct burn_drive*) icd->drive;
|
||||||
|
|
||||||
|
if(d == NULL) {
|
||||||
|
/* This would happen if libisoburn saw output data in the fifo and
|
||||||
|
performed early drive release and afterwards libisofs still tries
|
||||||
|
to read data.
|
||||||
|
That would constitute a bad conceptual problem in libisoburn.
|
||||||
|
*/
|
||||||
|
isoburn_msgs_submit(NULL, 0x00060000,
|
||||||
|
"Programming error: Drive released while libisofs still attempts to read",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return ISO_ASSERT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
tiles = (struct isoburn_cache_tile *) icd->tiles;
|
||||||
|
|
||||||
|
aligned_lba= lba & ~(Libisoburn_tile_blockS - 1);
|
||||||
|
|
||||||
|
for(i=0; i<Libisoburn_cache_tileS; i++) {
|
||||||
|
if(aligned_lba == tiles[i].cache_lba && tiles[i].cache_lba != 0xffffffff) {
|
||||||
|
(tiles[i].cache_hits)++;
|
||||||
|
memcpy(buffer, tiles[i].cache_data + (lba - aligned_lba) * 2048, 2048);
|
||||||
|
count= 2048;
|
||||||
|
ds_inc_age(icd, i, 0);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* find oldest tile */
|
||||||
|
oldest_age= Libisoburn_max_agE;
|
||||||
|
oldest= 0;
|
||||||
|
for(i= 0; i<Libisoburn_cache_tileS; i++) {
|
||||||
|
if(tiles[i].cache_lba == 0xffffffff) {
|
||||||
|
oldest= i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(tiles[i].age<oldest_age) {
|
||||||
|
oldest_age= tiles[i].age;
|
||||||
|
oldest= i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tiles[oldest].cache_lba= 0xffffffff; /* invalidate cache */
|
||||||
|
if(tiles[oldest].last_aligned_error_lba == aligned_lba) {
|
||||||
|
ret = 0;
|
||||||
|
} else {
|
||||||
|
ret = burn_read_data(d, (off_t) aligned_lba * (off_t) 2048,
|
||||||
|
(char *) tiles[oldest].cache_data,
|
||||||
|
Libisoburn_tile_blockS * 2048, &count, 2);
|
||||||
|
}
|
||||||
|
if (ret <= 0 ) {
|
||||||
|
tiles[oldest].last_aligned_error_lba = aligned_lba;
|
||||||
|
|
||||||
|
/* Read-ahead failure ? Try to read 2048 directly. */
|
||||||
|
if(tiles[oldest].last_error_lba == lba)
|
||||||
|
ret = 0;
|
||||||
|
else
|
||||||
|
ret = burn_read_data(d, (off_t) lba * (off_t) 2048, (char *) buffer,
|
||||||
|
2048, &count, 0);
|
||||||
|
if (ret > 0)
|
||||||
|
return 1;
|
||||||
|
tiles[oldest].last_error_lba = lba;
|
||||||
|
|
||||||
|
#ifdef ISO_DATA_SOURCE_MISHAP
|
||||||
|
ret= ISO_DATA_SOURCE_MISHAP;
|
||||||
|
#else
|
||||||
|
/* <<< pre libisofs-0.6.7 */
|
||||||
|
/* It is not required by the specs of libisofs but implicitely assumed
|
||||||
|
...
|
||||||
|
But it is not possible to ignore FAILURE.
|
||||||
|
libisofs insists in original error codes, i.e. libisoburn cannot
|
||||||
|
change severity FAILURE associated with ISO_FILE_READ_ERROR.
|
||||||
|
So ISO_FILE_READ_ERROR is not an option and libisoburn has to
|
||||||
|
misuse ISO_FILE_CANT_WRITE, which is actually for image generation
|
||||||
|
and not for image reading.
|
||||||
|
This is quite wrong, although the error message text is unclear
|
||||||
|
enough to make it appear plausible.
|
||||||
|
*/
|
||||||
|
ret= ISO_FILE_CANT_WRITE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(ret >= 0)
|
||||||
|
ret = -1;
|
||||||
|
sprintf(msg, "ds_read_block(%lu) returns %d", (unsigned long) lba, ret);
|
||||||
|
isoburn_msgs_submit(NULL, 0x00060000, msg, 0, "DEBUG", 0);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef Libisoburn_read_cache_reporT
|
||||||
|
fprintf(stderr, "Tile %2.2d : After %3d hits, new load from %8x , count= %d\n",
|
||||||
|
oldest, tiles[oldest].cache_hits, aligned_lba, (int) count);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
tiles[oldest].cache_lba= aligned_lba;
|
||||||
|
tiles[oldest].cache_hits= 1;
|
||||||
|
ds_inc_age(icd, oldest, 0);
|
||||||
|
|
||||||
|
memcpy(buffer, tiles[oldest].cache_data + (lba - aligned_lba) * 2048, 2048);
|
||||||
|
count= 2048;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int ds_open(IsoDataSource *src)
|
||||||
|
{
|
||||||
|
/* nothing to do, device is always grabbed */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ds_close(IsoDataSource *src)
|
||||||
|
{
|
||||||
|
/* nothing to do, device is always grabbed */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ds_free_data(IsoDataSource *src)
|
||||||
|
{
|
||||||
|
/* nothing to do */;
|
||||||
|
if(src->data != NULL)
|
||||||
|
free(src->data);
|
||||||
|
src->data= NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int isoburn_data_source_shutdown(IsoDataSource *src, int flag)
|
||||||
|
{
|
||||||
|
struct isoburn_cached_drive *icd;
|
||||||
|
|
||||||
|
if(src==NULL)
|
||||||
|
return(0);
|
||||||
|
icd= (struct isoburn_cached_drive *) src->data;
|
||||||
|
icd->drive= NULL;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
IsoDataSource *isoburn_data_source_new(struct burn_drive *d)
|
||||||
|
{
|
||||||
|
IsoDataSource *ret;
|
||||||
|
struct isoburn_cached_drive *icd= NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (d==NULL)
|
||||||
|
return NULL;
|
||||||
|
ret = malloc(sizeof(IsoDataSource));
|
||||||
|
icd = calloc(1,sizeof(struct isoburn_cached_drive));
|
||||||
|
if (ret == NULL || icd == NULL)
|
||||||
|
return NULL;
|
||||||
|
ret->refcount = 1;
|
||||||
|
ret->read_block = ds_read_block;
|
||||||
|
ret->open = ds_open;
|
||||||
|
ret->close = ds_close;
|
||||||
|
ret->free_data = ds_free_data;
|
||||||
|
ret->data = icd;
|
||||||
|
icd->drive = d;
|
||||||
|
icd->current_age= 0;
|
||||||
|
for(i= 0; i<Libisoburn_cache_tileS; i++) {
|
||||||
|
icd->tiles[i].cache_lba = 0xffffffff;
|
||||||
|
icd->tiles[i].cache_hits = 0;
|
||||||
|
icd->tiles[i].last_error_lba = 0xffffffff;
|
||||||
|
icd->tiles[i].last_aligned_error_lba = 0xffffffff;
|
||||||
|
icd->tiles[i].age= 0;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int ds_inc_age(struct isoburn_cached_drive *icd, int idx, int flag)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
(icd->current_age)++;
|
||||||
|
if(icd->current_age>=Libisoburn_max_agE) { /* reset all ages (allow waste) */
|
||||||
|
for(i= 0; i<Libisoburn_cache_tileS; i++)
|
||||||
|
(icd->tiles)[i].age= 0;
|
||||||
|
icd->current_age= 1;
|
||||||
|
}
|
||||||
|
(icd->tiles)[idx].age= icd->current_age;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
1143
libisoburn/branches/ZeroFiveFour/libisoburn/isoburn.c
Normal file
1143
libisoburn/branches/ZeroFiveFour/libisoburn/isoburn.c
Normal file
File diff suppressed because it is too large
Load Diff
587
libisoburn/branches/ZeroFiveFour/libisoburn/isoburn.h
Normal file
587
libisoburn/branches/ZeroFiveFour/libisoburn/isoburn.h
Normal file
@ -0,0 +1,587 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
Class struct of libisoburn.
|
||||||
|
|
||||||
|
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||||
|
and Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef Isoburn_includeD
|
||||||
|
#define Isoburn_includeD
|
||||||
|
|
||||||
|
|
||||||
|
/* for uint8_t */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/* For emulated TOC of overwriteable media.
|
||||||
|
Provides minimal info for faking a struct burn_toc_entry.
|
||||||
|
*/
|
||||||
|
struct isoburn_toc_entry {
|
||||||
|
int session;
|
||||||
|
int track_no; /* point */
|
||||||
|
int start_lba;
|
||||||
|
int track_blocks;
|
||||||
|
|
||||||
|
char *volid; /* For caching a volume id from emulated toc on overwriteables */
|
||||||
|
|
||||||
|
struct isoburn_toc_entry *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
int isoburn_toc_entry_new(struct isoburn_toc_entry **objpt,
|
||||||
|
struct isoburn_toc_entry *boss, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= delete all subordinates too
|
||||||
|
*/
|
||||||
|
int isoburn_toc_entry_destroy(struct isoburn_toc_entry **o, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* Size of target_iso_head which is to be written during
|
||||||
|
isoburn_activate_session()
|
||||||
|
*/
|
||||||
|
#define Libisoburn_target_head_sizE (32*2048)
|
||||||
|
|
||||||
|
struct isoburn {
|
||||||
|
|
||||||
|
|
||||||
|
/* The libburn drive to which this isoburn object is related
|
||||||
|
Most isoburn calls will use a burn_drive as object handle */
|
||||||
|
struct burn_drive *drive;
|
||||||
|
|
||||||
|
/* -1= inappropriate media state detected
|
||||||
|
0= libburn multi-session media, resp. undecided yet
|
||||||
|
1= random access media */
|
||||||
|
int emulation_mode;
|
||||||
|
|
||||||
|
/* Although rarely used, libburn can operate on several
|
||||||
|
drives simultaneously. */
|
||||||
|
struct isoburn *prev;
|
||||||
|
struct isoburn *next;
|
||||||
|
|
||||||
|
|
||||||
|
/* If >= 0, this address is used as reply for isoburn_disc_get_msc1()
|
||||||
|
*/
|
||||||
|
int fabricated_msc1;
|
||||||
|
|
||||||
|
/* If >= 0, this address is used in isoburn_disc_track_lba_nwa()
|
||||||
|
as reply parameter nwa.
|
||||||
|
(The other nwa parameters below apply only to the effective write address
|
||||||
|
on random access media. msc2 is handed to libisofs but not to libburn.)
|
||||||
|
*/
|
||||||
|
int fabricated_msc2;
|
||||||
|
|
||||||
|
|
||||||
|
/* The nwa to be used for a first session on the present kind of overwriteable
|
||||||
|
media (usually Libisoburn_overwriteable_starT, but might be forced to 0)
|
||||||
|
*/
|
||||||
|
int zero_nwa;
|
||||||
|
|
||||||
|
/* Start address as given by image examination (bytes, not blocks) */
|
||||||
|
off_t min_start_byte;
|
||||||
|
|
||||||
|
/* Aligned start address to be used for processing (counted in blocks) */
|
||||||
|
int nwa;
|
||||||
|
|
||||||
|
|
||||||
|
/* Truncate to .nwa an eventual regular file serving as output drive */
|
||||||
|
int truncate;
|
||||||
|
|
||||||
|
/* Eventual freely fabricated isoburn_disc_get_status().
|
||||||
|
BURN_DISC_UNREADY means that this variable is disabled
|
||||||
|
and normally emulated status is in effect.
|
||||||
|
*/
|
||||||
|
enum burn_disc_status fabricated_disc_status;
|
||||||
|
|
||||||
|
/* Eventual emulated table of content read from the chain of ISO headers
|
||||||
|
on overwriteable media.
|
||||||
|
*/
|
||||||
|
struct isoburn_toc_entry *toc;
|
||||||
|
|
||||||
|
/* Indicator wether the most recent burn run worked :
|
||||||
|
-1 = undetermined, ask libburn , 0 = failure , 1 = success
|
||||||
|
To be inquired by isoburn_drive_wrote_well()
|
||||||
|
*/
|
||||||
|
int wrote_well;
|
||||||
|
|
||||||
|
|
||||||
|
/* Buffered ISO head from media (should that become part of
|
||||||
|
ecma119_read_opts ?) */
|
||||||
|
uint8_t target_iso_head[Libisoburn_target_head_sizE];
|
||||||
|
|
||||||
|
/* Libisofs image context */
|
||||||
|
IsoImage *image;
|
||||||
|
|
||||||
|
/* The block data source from which the existing image is read.
|
||||||
|
*/
|
||||||
|
IsoDataSource *iso_data_source;
|
||||||
|
|
||||||
|
/* The burn source which transfers data from libisofs to libburn.
|
||||||
|
It has its own fifo.
|
||||||
|
*/
|
||||||
|
struct burn_source *iso_source;
|
||||||
|
|
||||||
|
/* For iso_tree_set_report_callback() */
|
||||||
|
int (*read_pacifier)(IsoImage*, IsoFileSource*);
|
||||||
|
|
||||||
|
/* For iso_image_attach_data() */
|
||||||
|
void *read_pacifier_handle;
|
||||||
|
|
||||||
|
/* An application provided method to immediately deliver messages */
|
||||||
|
int (*msgs_submit)(void *handle, int error_code, char msg_text[],
|
||||||
|
int os_errno, char severity[], int flag);
|
||||||
|
void *msgs_submit_handle; /* specific to application method */
|
||||||
|
int msgs_submit_flag; /* specific to application method */
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Creation and disposal function */
|
||||||
|
int isoburn_new(struct isoburn **objpt, int flag);
|
||||||
|
int isoburn_destroy(struct isoburn **objpt, int flag);
|
||||||
|
|
||||||
|
/* Eventual readers for public attributes */
|
||||||
|
/* ( put into separate .h file then ) */
|
||||||
|
int isoburn_get_emulation_mode(struct isoburn *o, int *pt, int flag);
|
||||||
|
int isoburn_get_target_volset(struct isoburn *o, IsoImage **pt, int flag);
|
||||||
|
|
||||||
|
/* List management */
|
||||||
|
int isoburn_get_prev(struct isoburn *o, struct isoburn **pt, int flag);
|
||||||
|
int isoburn_get_next(struct isoburn *o, struct isoburn **pt, int flag);
|
||||||
|
int isoburn_destroy_all(struct isoburn **objpt, int flag);
|
||||||
|
int isoburn_link(struct isoburn *o, struct isoburn *link, int flag);
|
||||||
|
int isoburn_count(struct isoburn *o, int flag);
|
||||||
|
int isoburn_by_idx(struct isoburn *o, int idx, struct isoburn **pt, int flag);
|
||||||
|
int isoburn_find_by_drive(struct isoburn **pt, struct burn_drive *d, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* Non API inner interfaces */
|
||||||
|
|
||||||
|
/* Submit a libisofs error to the libburn messenger. An application message
|
||||||
|
reader shall recognize the error code range and attribute it to the
|
||||||
|
libisofs message channel to which one cannot submit via API.
|
||||||
|
@param iso_error_code return value <= 0 from a libisofs API call.
|
||||||
|
@param default_msg_text is to be put out if iso_error_code leads to no
|
||||||
|
error message
|
||||||
|
@param os_errno operating system errno, submit 0 if none is known
|
||||||
|
@param min_severity minimum severity, might be be increased if libisofs
|
||||||
|
error severity surpasses min_severity.
|
||||||
|
@param flag Bitfield, submit 0 for now
|
||||||
|
*/
|
||||||
|
int isoburn_report_iso_error(int iso_error_code, char default_msg_text[],
|
||||||
|
int os_errno, char min_severity[], int flag);
|
||||||
|
|
||||||
|
/* Calls from burn_wrap.c into isofs_wrap.c */
|
||||||
|
|
||||||
|
int isoburn_start_emulation(struct isoburn *o, int flag);
|
||||||
|
int isoburn_invalidate_iso(struct isoburn *o, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* Calls from isofs_wrap.c into burn_wrap.c */
|
||||||
|
|
||||||
|
/** Get an eventual isoburn object which is wrapped around the drive.
|
||||||
|
@param pt Eventually returns a pointer to the found object.
|
||||||
|
It is allowed to become NULL if return value is -1 or 0.
|
||||||
|
In this case, the drive is a genuine libburn drive
|
||||||
|
with no emulation activated by isoburn.
|
||||||
|
@param drive The drive to be searched for
|
||||||
|
@param flag unused yet
|
||||||
|
@return -1 unsuitable media, 0 generic media, 1 emulated media.
|
||||||
|
*/
|
||||||
|
int isoburn_find_emulator(struct isoburn **pt,
|
||||||
|
struct burn_drive *drive, int flag);
|
||||||
|
|
||||||
|
/* Deliver an event message. Either via a non-NULL o->msgs_submit() method
|
||||||
|
or via burn_msgs_submit() of libburn.
|
||||||
|
*/
|
||||||
|
int isoburn_msgs_submit(struct isoburn *o, int error_code, char msg_text[],
|
||||||
|
int os_errno, char severity[], int flag);
|
||||||
|
|
||||||
|
/** Set the start address for an emulated add-on session. The value will
|
||||||
|
be rounded up to the alignment necessary for the media. The aligned
|
||||||
|
value will be divided by 2048 and then put into o->nwa .
|
||||||
|
@param o The isoburn object to be programmed.
|
||||||
|
@param value The start address in bytes
|
||||||
|
@param flag unused yet
|
||||||
|
@return <=0 is failure , >0 success
|
||||||
|
*/
|
||||||
|
int isoburn_set_start_byte(struct isoburn *o, off_t value, int flag);
|
||||||
|
|
||||||
|
/** Obtains the image address offset to be used with image generation.
|
||||||
|
This is either the (emulated) drive nwa or a value set by
|
||||||
|
isoburn_prepare_blind_grow().
|
||||||
|
In any case this is the address to tell to iso_write_opts_set_ms_block().
|
||||||
|
@param o The isoburn object to be inquired
|
||||||
|
@param opts If not NULL: write parameters to be set on drive before query
|
||||||
|
@param msc2 The value to be used with iso_write_opts_set_ms_block()
|
||||||
|
@param flag unused yet
|
||||||
|
@return <=0 is failure , >0 success
|
||||||
|
*/
|
||||||
|
int isoburn_get_msc2(struct isoburn *o,
|
||||||
|
struct burn_write_opts *opts, int *msc2, int flag);
|
||||||
|
|
||||||
|
/** Get a data source suitable for read from a drive using burn_read_data()
|
||||||
|
function.
|
||||||
|
@param d drive to read from. Must be grabbed.
|
||||||
|
@return the data source, NULL on error. Must be freed with libisofs
|
||||||
|
iso_data_source_unref() function. Note: this doesn't release
|
||||||
|
the drive.
|
||||||
|
*/
|
||||||
|
IsoDataSource *
|
||||||
|
isoburn_data_source_new(struct burn_drive *d);
|
||||||
|
|
||||||
|
/** Disable read capabilities of a data source which was originally created
|
||||||
|
by isoburn_data_source_new(). After this any attempt to read will yield
|
||||||
|
a FATAL programming error event.
|
||||||
|
This is usually done to allow libburn to release the drive while libisofs
|
||||||
|
still holds a reference to the data source object. libisofs is not supposed
|
||||||
|
to use this object for reading any more, nevertheless. The disabled state
|
||||||
|
of the data source is a safety fence around this daring situation.
|
||||||
|
@param src The data source to be disabled
|
||||||
|
@param flag unused yet
|
||||||
|
@return <=0 is failure , >0 success
|
||||||
|
*/
|
||||||
|
int isoburn_data_source_shutdown(IsoDataSource *src, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options for image reading.
|
||||||
|
(Comments here may be outdated. API getter/setter function descriptions
|
||||||
|
may override the descriptions here. Any difference is supposed to be a
|
||||||
|
minor correction only.)
|
||||||
|
*/
|
||||||
|
struct isoburn_read_opts {
|
||||||
|
unsigned int norock:1; /*< Do not read Rock Ridge extensions */
|
||||||
|
unsigned int nojoliet:1; /*< Do not read Joliet extensions */
|
||||||
|
unsigned int noiso1999:1; /*< Do not read ISO 9660:1999 enhanced tree */
|
||||||
|
|
||||||
|
/* ts A90121 */
|
||||||
|
unsigned int noaaip:1; /* Do not read AAIP for ACL and EA */
|
||||||
|
unsigned int noacl:1; /* Do not read ACL from external file objects */
|
||||||
|
unsigned int noea:1; /* Do not read XFS-style EA from externals */
|
||||||
|
|
||||||
|
/* ts A90508 */
|
||||||
|
unsigned int noino:1; /* Discard eventual PX inode numbers */
|
||||||
|
|
||||||
|
/* ts A90810 */
|
||||||
|
unsigned int nomd5:1; /* Do not read eventual MD5 array */
|
||||||
|
|
||||||
|
unsigned int preferjoliet:1;
|
||||||
|
/*< When both Joliet and RR extensions are present, the RR
|
||||||
|
* tree is used. If you prefer using Joliet, set this to 1. */
|
||||||
|
uid_t uid; /**< Default uid when no RR */
|
||||||
|
gid_t gid; /**< Default uid when no RR */
|
||||||
|
mode_t mode; /**< Default mode when no RR (only permissions) */
|
||||||
|
mode_t dirmode; /**< Default mode for directories
|
||||||
|
when no RR (only permissions) */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input charset for RR file names. NULL to use default locale charset.
|
||||||
|
*/
|
||||||
|
char *input_charset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable methods to automatically choose an input charset.
|
||||||
|
* This eventually overrides input_charset.
|
||||||
|
*
|
||||||
|
* bit0= allow to set the input character set automatically from
|
||||||
|
* attribute "isofs.cs" of root directory
|
||||||
|
*/
|
||||||
|
int auto_input_charset;
|
||||||
|
|
||||||
|
/* modified by the function isoburn_read_image */
|
||||||
|
unsigned int hasRR:1; /*< It will be set to 1 if RR extensions are present,
|
||||||
|
to 0 if not. */
|
||||||
|
unsigned int hasJoliet:1; /*< It will be set to 1 if Joliet extensions are
|
||||||
|
present, to 0 if not. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It will be set to 1 if the image is an ISO 9660:1999, i.e. it has
|
||||||
|
* a version 2 Enhanced Volume Descriptor.
|
||||||
|
*/
|
||||||
|
unsigned int hasIso1999:1;
|
||||||
|
|
||||||
|
/** It will be set to 1 if El-Torito boot record is present, to 0 if not.*/
|
||||||
|
unsigned int hasElTorito:1;
|
||||||
|
|
||||||
|
uint32_t size; /**< Will be filled with the size (in 2048 byte block) of
|
||||||
|
* the image, as reported in the PVM. */
|
||||||
|
unsigned int pretend_blank:1; /* always create empty image */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options for image generation by libisofs and image transport to libburn.
|
||||||
|
(Comments here may be outdated. API getter/setter function descriptions
|
||||||
|
may override the descriptions here. Any difference is supposed to be a
|
||||||
|
minor correction only.)
|
||||||
|
*/
|
||||||
|
struct isoburn_imgen_opts {
|
||||||
|
|
||||||
|
/* Options for image generation */
|
||||||
|
|
||||||
|
int level; /**< ISO level to write at. */
|
||||||
|
|
||||||
|
/** Which extensions to support. */
|
||||||
|
unsigned int rockridge :1;
|
||||||
|
unsigned int joliet :1;
|
||||||
|
unsigned int iso1999 :1;
|
||||||
|
|
||||||
|
/* Whether to mark suitable IsoNode as hardlinks in RRIP PX */
|
||||||
|
unsigned int hardlinks :1;
|
||||||
|
|
||||||
|
/* Write eventual AAIP info containing ACL and EA */
|
||||||
|
unsigned int aaip :1;
|
||||||
|
|
||||||
|
/* Produce and write a MD5 checksum of the whole session stream. */
|
||||||
|
unsigned int session_md5 :1;
|
||||||
|
|
||||||
|
/* Produce and write MD5 checksums for each single IsoFile.
|
||||||
|
See parameter files of iso_write_opts_set_record_md5().
|
||||||
|
*/
|
||||||
|
unsigned int file_md5 :2;
|
||||||
|
|
||||||
|
/* relaxed constraints */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Relaxed constraints. Setting any of these to 1 break the specifications,
|
||||||
|
* but it is supposed to work on most moderns systems. Use with caution.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Omit the version number (";1") at the end of the ISO-9660 identifiers.
|
||||||
|
* Version numbers are usually not used.
|
||||||
|
* bit0= omit version number with ECMA-119 and Joliet
|
||||||
|
* bit1= omit version number with Joliet alone
|
||||||
|
*/
|
||||||
|
unsigned int omit_version_numbers :2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow ISO-9660 directory hierarchy to be deeper than 8 levels.
|
||||||
|
*/
|
||||||
|
unsigned int allow_deep_paths :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow path in the ISO-9660 tree to have more than 255 characters.
|
||||||
|
*/
|
||||||
|
unsigned int allow_longer_paths :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow a single file or directory hierarchy to have up to 37 characters.
|
||||||
|
* This is larger than the 31 characters allowed by ISO level 2, and the
|
||||||
|
* extra space is taken from the version number, so this also forces
|
||||||
|
* omit_version_numbers.
|
||||||
|
*/
|
||||||
|
unsigned int max_37_char_filenames :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ISO-9660 forces filenames to have a ".", that separates file name from
|
||||||
|
* extension. libisofs adds it if original filename doesn't has one. Set
|
||||||
|
* this to 1 to prevent this behavior
|
||||||
|
* bit0= no forced dot with ECMA-119
|
||||||
|
* bit1= no forced dot with Joliet
|
||||||
|
*/
|
||||||
|
unsigned int no_force_dots :2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow lowercase characters in ISO-9660 filenames. By default, only
|
||||||
|
* uppercase characters, numbers and a few other characters are allowed.
|
||||||
|
*/
|
||||||
|
unsigned int allow_lowercase :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow all ASCII characters to be appear on an ISO-9660 filename. Note
|
||||||
|
* that "/" and "\0" characters are never allowed, even in RR names.
|
||||||
|
*/
|
||||||
|
unsigned int allow_full_ascii :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow paths in the Joliet tree to have more than 240 characters.
|
||||||
|
*/
|
||||||
|
unsigned int joliet_longer_paths :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store timestamps as GMT rather than in local time.
|
||||||
|
*/
|
||||||
|
unsigned int always_gmt :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write Rock Ridge info as of specification RRIP-1.10 rather than
|
||||||
|
* RRIP-1.12: signature "RRIP_1991A" rather than "IEEE_1282",
|
||||||
|
* field PX without file serial number
|
||||||
|
*/
|
||||||
|
unsigned int rrip_version_1_10 :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store as ECMA-119 Directory Record timestamp the mtime
|
||||||
|
* of the source rather than the image creation time.
|
||||||
|
*/
|
||||||
|
unsigned int dir_rec_mtime :1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12.
|
||||||
|
* I.e. without announcing it by an ER field and thus without the need
|
||||||
|
* to preceed the RRIP fields by an ES and to preceed the AA field by ES.
|
||||||
|
*/
|
||||||
|
unsigned int aaip_susp_1_10 :1;
|
||||||
|
|
||||||
|
unsigned int sort_files:1;
|
||||||
|
/**< If files should be sorted based on their weight. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The following options set the default values for files and directory
|
||||||
|
* permissions, gid and uid. All these take one of three values: 0, 1 or 2.
|
||||||
|
* If 0, the corresponding attribute will be kept as set in the IsoNode.
|
||||||
|
* Unless you have changed it, it corresponds to the value on disc, so it
|
||||||
|
* is suitable for backup purposes. If set to 1, the corresponding attrib.
|
||||||
|
* will be changed by a default suitable value. Finally, if you set it to
|
||||||
|
* 2, the attrib. will be changed with the value specified in the options
|
||||||
|
* below. Note that for mode attributes, only the permissions are set, the
|
||||||
|
* file type remains unchanged.
|
||||||
|
*/
|
||||||
|
unsigned int replace_dir_mode :2;
|
||||||
|
unsigned int replace_file_mode :2;
|
||||||
|
unsigned int replace_uid :2;
|
||||||
|
unsigned int replace_gid :2;
|
||||||
|
|
||||||
|
mode_t dir_mode; /** Mode to use on dirs when replace_dir_mode == 2. */
|
||||||
|
mode_t file_mode; /** Mode to use on files when replace_file_mode == 2. */
|
||||||
|
uid_t uid; /** uid to use when replace_uid == 2. */
|
||||||
|
gid_t gid; /** gid to use when replace_gid == 2. */
|
||||||
|
|
||||||
|
char *output_charset; /**< NULL to use default charset */
|
||||||
|
|
||||||
|
|
||||||
|
/* Options for image transport */
|
||||||
|
|
||||||
|
/** The number of bytes to be used for the fifo which decouples libisofs
|
||||||
|
and libburn for better throughput and for reducing the risk of
|
||||||
|
interrupting signals hitting the libburn thread which operates the
|
||||||
|
MMC drive.
|
||||||
|
The size will be rounded up to the next full 2048.
|
||||||
|
Minimum is 64kiB, maximum is 1 GiB (but that is too much anyway).
|
||||||
|
*/
|
||||||
|
int fifo_size;
|
||||||
|
|
||||||
|
|
||||||
|
/** Output value: Block address of session start as evaluated from media
|
||||||
|
and other options by libisoburn and libburn.
|
||||||
|
If <0 : Invalid
|
||||||
|
If >=0: Valid block number. Block size is always 2 KiB.
|
||||||
|
*/
|
||||||
|
int effective_lba;
|
||||||
|
|
||||||
|
/** Output value: Block address of data section start as predicted by
|
||||||
|
libisofs.
|
||||||
|
If < 16: Invalid
|
||||||
|
If >=16: Valid block number. Block size is always 2 KiB.
|
||||||
|
*/
|
||||||
|
int data_start_lba;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If not empty: Parameters "name" and "timestamp" for a scdbackup stream
|
||||||
|
* checksum tag. See scdbackup/README appendix VERIFY.
|
||||||
|
* It makes sense only for single session images which start at LBA 0.
|
||||||
|
* Such a tag may be part of a libisofs checksum tag block after the
|
||||||
|
* session tag line. It then covers the whole session up to its own start
|
||||||
|
* position.
|
||||||
|
* If scdbackup_tag_written is not NULL then it is a pointer to an
|
||||||
|
* application provided array with at least 512 characters. The effectively
|
||||||
|
* written scdbackup tag will be copied to this memory location.
|
||||||
|
*/
|
||||||
|
char scdbackup_tag_name[81];
|
||||||
|
char scdbackup_tag_time[19];
|
||||||
|
char *scdbackup_tag_written;
|
||||||
|
|
||||||
|
|
||||||
|
/* Content of an embedded boot image. Valid if not NULL.
|
||||||
|
* In that case it must point to a memory buffer at least 32 kB.
|
||||||
|
*/
|
||||||
|
char *system_area_data;
|
||||||
|
/*
|
||||||
|
* bit0= make bytes 446 - 512 of the system area a partition
|
||||||
|
* table which reserves partition 1 from byte 63*512 to the
|
||||||
|
* end of the ISO image. Assumed are 63 secs/hed, 255 head/cyl.
|
||||||
|
* (GRUB protective msdos label.)
|
||||||
|
* This works with and without system_area_data.
|
||||||
|
*/
|
||||||
|
int system_area_options;
|
||||||
|
|
||||||
|
/* User settable PVD time stamps */
|
||||||
|
time_t vol_creation_time;
|
||||||
|
time_t vol_modification_time;
|
||||||
|
time_t vol_expiration_time;
|
||||||
|
time_t vol_effective_time;
|
||||||
|
/* To eventually override vol_modification_time by unconverted string
|
||||||
|
and timezone 0 */
|
||||||
|
char vol_uuid[17];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Alignment for session starts on overwriteable media.
|
||||||
|
(Increased from 16 to 32 blocks for aligning to BD-RE clusters.)
|
||||||
|
*/
|
||||||
|
#define Libisoburn_nwa_alignemenT 32
|
||||||
|
|
||||||
|
|
||||||
|
/* Alignment for outer session scanning with -ROM drives.
|
||||||
|
(E.g. my DVD-ROM drive shows any DVD type as 0x10 "DVD-ROM" with
|
||||||
|
more or less false capacity and TOC.)
|
||||||
|
*/
|
||||||
|
#define Libisoburn_toc_scan_alignemenT 16
|
||||||
|
|
||||||
|
/* Maximum gap to be bridged during a outer TOC scan. Gaps appear between the
|
||||||
|
end of a session and the start of the next session.
|
||||||
|
The longest gap found so far was about 38100 after the first session of a
|
||||||
|
DVD-R.
|
||||||
|
*/
|
||||||
|
#define Libisoburn_toc_scan_max_gaP 65536
|
||||||
|
|
||||||
|
|
||||||
|
/* Creating a chain of image headers which form a TOC:
|
||||||
|
|
||||||
|
The header of the first session is written after the LBA 0 header.
|
||||||
|
So it persists and can give the end of its session. By help of
|
||||||
|
Libisoburn_nwa_alignemenT it should be possible to predict the start
|
||||||
|
of the next session header.
|
||||||
|
The LBA 0 header is written by isoburn_activate_session() already
|
||||||
|
with the first session. So the media is mountable.
|
||||||
|
A problem arises with DVD-RW in Intermediate State. They cannot be
|
||||||
|
written by random access before they were written sequentially.
|
||||||
|
In this case, no copy of the session 1 header is maintained and no TOC
|
||||||
|
will be possible. Thus writing begins sequentially at LBA 0.
|
||||||
|
*/
|
||||||
|
#define Libisoburn_overwriteable_starT \
|
||||||
|
((off_t) (Libisoburn_target_head_sizE/2048))
|
||||||
|
|
||||||
|
|
||||||
|
/* Wrappers for emulation of TOC on overwriteable media */
|
||||||
|
|
||||||
|
struct isoburn_toc_track {
|
||||||
|
/* Either track or toc_entry are supposed to be NULL */
|
||||||
|
struct burn_track *track;
|
||||||
|
struct isoburn_toc_entry *toc_entry;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isoburn_toc_session {
|
||||||
|
/* Either session or tracks and toc_entry are supposed to be NULL */
|
||||||
|
struct burn_session *session;
|
||||||
|
struct isoburn_toc_track **track_pointers;
|
||||||
|
int track_count;
|
||||||
|
struct isoburn_toc_entry *toc_entry;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct isoburn_toc_disc {
|
||||||
|
/* Either disc or sessions and toc are supposed to be NULL */
|
||||||
|
struct burn_disc *disc;
|
||||||
|
struct isoburn_toc_session *sessions; /* storage array */
|
||||||
|
struct isoburn_toc_session **session_pointers; /* storage array */
|
||||||
|
struct isoburn_toc_track *tracks; /* storage array */
|
||||||
|
struct isoburn_toc_track **track_pointers; /* storage array */
|
||||||
|
int session_count;
|
||||||
|
int track_count;
|
||||||
|
struct isoburn_toc_entry *toc;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* Isoburn_includeD */
|
||||||
|
|
432
libisoburn/branches/ZeroFiveFour/libisoburn/isofs_wrap.c
Normal file
432
libisoburn/branches/ZeroFiveFour/libisoburn/isofs_wrap.c
Normal file
@ -0,0 +1,432 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
cc -g -c isofs_wrap.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
libisofs related functions of libisoburn.
|
||||||
|
|
||||||
|
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||||
|
Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifndef Xorriso_standalonE
|
||||||
|
|
||||||
|
#include <libburn/libburn.h>
|
||||||
|
|
||||||
|
#include <libisofs/libisofs.h>
|
||||||
|
|
||||||
|
#else /* ! Xorriso_standalonE */
|
||||||
|
|
||||||
|
#include "../libisofs/libisofs.h"
|
||||||
|
#include "../libburn/libburn.h"
|
||||||
|
|
||||||
|
#endif /* Xorriso_standalonE */
|
||||||
|
|
||||||
|
#include "isoburn.h"
|
||||||
|
#include "libisoburn.h"
|
||||||
|
|
||||||
|
#define BP(a,b) [(b) - (a) + 1]
|
||||||
|
|
||||||
|
struct ecma119_pri_vol_desc
|
||||||
|
{
|
||||||
|
uint8_t vol_desc_type BP(1, 1);
|
||||||
|
uint8_t std_identifier BP(2, 6);
|
||||||
|
uint8_t vol_desc_version BP(7, 7);
|
||||||
|
uint8_t unused1 BP(8, 8);
|
||||||
|
uint8_t system_id BP(9, 40);
|
||||||
|
uint8_t volume_id BP(41, 72);
|
||||||
|
uint8_t unused2 BP(73, 80);
|
||||||
|
uint8_t vol_space_size BP(81, 88);
|
||||||
|
uint8_t unused3 BP(89, 120);
|
||||||
|
uint8_t vol_set_size BP(121, 124);
|
||||||
|
uint8_t vol_seq_number BP(125, 128);
|
||||||
|
uint8_t block_size BP(129, 132);
|
||||||
|
uint8_t path_table_size BP(133, 140);
|
||||||
|
uint8_t l_path_table_pos BP(141, 144);
|
||||||
|
uint8_t opt_l_path_table_pos BP(145, 148);
|
||||||
|
uint8_t m_path_table_pos BP(149, 152);
|
||||||
|
uint8_t opt_m_path_table_pos BP(153, 156);
|
||||||
|
uint8_t root_dir_record BP(157, 190);
|
||||||
|
uint8_t vol_set_id BP(191, 318);
|
||||||
|
uint8_t publisher_id BP(319, 446);
|
||||||
|
uint8_t data_prep_id BP(447, 574);
|
||||||
|
uint8_t application_id BP(575, 702);
|
||||||
|
uint8_t copyright_file_id BP(703, 739);
|
||||||
|
uint8_t abstract_file_id BP(740, 776);
|
||||||
|
uint8_t bibliographic_file_id BP(777, 813);
|
||||||
|
uint8_t vol_creation_time BP(814, 830);
|
||||||
|
uint8_t vol_modification_time BP(831, 847);
|
||||||
|
uint8_t vol_expiration_time BP(848, 864);
|
||||||
|
uint8_t vol_effective_time BP(865, 881);
|
||||||
|
uint8_t file_structure_version BP(882, 882);
|
||||||
|
uint8_t reserved1 BP(883, 883);
|
||||||
|
uint8_t app_use BP(884, 1395);
|
||||||
|
uint8_t reserved2 BP(1396, 2048);
|
||||||
|
};
|
||||||
|
|
||||||
|
static
|
||||||
|
uint32_t iso_read_lsb(const uint8_t *buf, int bytes)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
uint32_t ret = 0;
|
||||||
|
|
||||||
|
for (i=0; i<bytes; i++) {
|
||||||
|
ret += ((uint32_t) buf[i]) << (i*8);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* API function. See libisoburn.h
|
||||||
|
*/
|
||||||
|
IsoImage *isoburn_get_attached_image(struct burn_drive *d)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct isoburn *o= NULL;
|
||||||
|
ret = isoburn_find_emulator(&o, d, 0);
|
||||||
|
if (ret < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (o == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
iso_image_ref(o->image);
|
||||||
|
return o->image;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void isoburn_idle_free_function(void *ignored)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* API function. See libisoburn.h
|
||||||
|
*/
|
||||||
|
int isoburn_read_image(struct burn_drive *d,
|
||||||
|
struct isoburn_read_opts *read_opts,
|
||||||
|
IsoImage **image)
|
||||||
|
{
|
||||||
|
int ret, int_num, dummy;
|
||||||
|
IsoReadOpts *ropts= NULL;
|
||||||
|
IsoReadImageFeatures *features= NULL;
|
||||||
|
uint32_t ms_block;
|
||||||
|
char msg[160];
|
||||||
|
enum burn_disc_status status= BURN_DISC_BLANK;
|
||||||
|
IsoDataSource *ds= NULL;
|
||||||
|
struct isoburn *o= NULL;
|
||||||
|
|
||||||
|
if(d != NULL) {
|
||||||
|
ret = isoburn_find_emulator(&o, d, 0);
|
||||||
|
if (ret < 0 || o == NULL)
|
||||||
|
return 0;
|
||||||
|
status = isoburn_disc_get_status(d);
|
||||||
|
}
|
||||||
|
if(read_opts==NULL) {
|
||||||
|
isoburn_msgs_submit(o, 0x00060000,
|
||||||
|
"Program error: isoburn_read_image: read_opts==NULL",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
if (d == NULL || status == BURN_DISC_BLANK || read_opts->pretend_blank) {
|
||||||
|
create_blank_image:;
|
||||||
|
/*
|
||||||
|
* Blank disc, we create a new image without files.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (d == NULL) {
|
||||||
|
/* New empty image without relation to a drive */
|
||||||
|
if (image==NULL) {
|
||||||
|
isoburn_msgs_submit(o, 0x00060000,
|
||||||
|
"Program error: isoburn_read_image: image==NULL",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
/* create a new image */
|
||||||
|
ret = iso_image_new("ISOIMAGE", image);
|
||||||
|
if (ret < 0) {
|
||||||
|
isoburn_report_iso_error(ret, "Cannot create image", 0, "FATAL", 0);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Blank new image for the drive */
|
||||||
|
iso_image_unref(o->image);
|
||||||
|
ret = iso_image_new("ISOIMAGE", &o->image);
|
||||||
|
if (ret < 0) {
|
||||||
|
isoburn_report_iso_error(ret, "Cannot create image", 0, "FATAL", 0);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
if (image) {
|
||||||
|
*image = o->image;
|
||||||
|
iso_image_ref(*image); /*protects object from premature free*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
iso_image_set_ignore_aclea(*image,
|
||||||
|
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (status != BURN_DISC_APPENDABLE && status != BURN_DISC_FULL) {
|
||||||
|
isoburn_msgs_submit(o, 0x00060000,
|
||||||
|
"Program error: isoburn_read_image: incorrect disc status",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset((char *) &ropts, 0, sizeof(ropts));
|
||||||
|
|
||||||
|
ret = isoburn_disc_get_msc1(d, &int_num);
|
||||||
|
if (ret <= 0)
|
||||||
|
return -2;
|
||||||
|
ms_block= int_num;
|
||||||
|
ret = isoburn_read_iso_head(d, int_num, &dummy, NULL, 0);
|
||||||
|
if (ret <= 0) {
|
||||||
|
sprintf(msg, "No ISO 9660 image at LBA %d. Creating blank image.", int_num);
|
||||||
|
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
|
||||||
|
goto create_blank_image;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* create the data source */
|
||||||
|
ret = iso_read_opts_new(&ropts, 0);
|
||||||
|
if (ret < 0) {
|
||||||
|
isoburn_report_iso_error(ret, "Cannot create write opts", 0, "FATAL", 0);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
/* Important: do not return until iso_read_opts_free() */
|
||||||
|
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);
|
||||||
|
|
||||||
|
iso_read_opts_set_new_inos(ropts, read_opts->noino);
|
||||||
|
|
||||||
|
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
|
||||||
|
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);
|
||||||
|
iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet);
|
||||||
|
iso_read_opts_set_default_permissions(ropts,
|
||||||
|
read_opts->mode, read_opts->dirmode);
|
||||||
|
iso_read_opts_set_default_uid(ropts, read_opts->uid);
|
||||||
|
iso_read_opts_set_default_gid(ropts, read_opts->gid);
|
||||||
|
iso_read_opts_set_input_charset(ropts, read_opts->input_charset);
|
||||||
|
iso_read_opts_auto_input_charset(ropts, read_opts->auto_input_charset);
|
||||||
|
iso_read_opts_load_system_area(ropts, 1);
|
||||||
|
|
||||||
|
ds = isoburn_data_source_new(d);
|
||||||
|
if(o->iso_data_source!=NULL)
|
||||||
|
iso_data_source_unref(o->iso_data_source);
|
||||||
|
o->iso_data_source= ds;
|
||||||
|
iso_image_attach_data(o->image, o->read_pacifier_handle,
|
||||||
|
isoburn_idle_free_function);
|
||||||
|
if(o->read_pacifier_handle==NULL)
|
||||||
|
iso_tree_set_report_callback(o->image, NULL);
|
||||||
|
else
|
||||||
|
iso_tree_set_report_callback(o->image, o->read_pacifier);
|
||||||
|
ret = iso_image_import(o->image, ds, ropts, &features);
|
||||||
|
iso_tree_set_report_callback(o->image, NULL);
|
||||||
|
iso_read_opts_free(ropts);
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
isoburn_report_iso_error(ret, "Cannot import image", 0, "FAILURE", 0);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
/* Important: do not return until free(features) */
|
||||||
|
if (image!=NULL) {
|
||||||
|
*image = o->image;
|
||||||
|
iso_image_ref(*image); /*protects object from premature free*/
|
||||||
|
}
|
||||||
|
read_opts->hasRR = iso_read_image_features_has_rockridge(features);
|
||||||
|
read_opts->hasJoliet = iso_read_image_features_has_joliet(features);
|
||||||
|
read_opts->hasIso1999 = iso_read_image_features_has_iso1999(features);
|
||||||
|
read_opts->hasElTorito = iso_read_image_features_has_eltorito(features);
|
||||||
|
read_opts->size = iso_read_image_features_get_size(features);
|
||||||
|
iso_read_image_features_destroy(features);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* API function. See libisoburn.h
|
||||||
|
*/
|
||||||
|
int isoburn_attach_image(struct burn_drive *d, IsoImage *image)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct isoburn *o;
|
||||||
|
|
||||||
|
ret = isoburn_find_emulator(&o, d, 0);
|
||||||
|
if (ret < 0 || o == NULL)
|
||||||
|
return 0;
|
||||||
|
if (image == NULL) {
|
||||||
|
isoburn_msgs_submit(o, 0x00060000,
|
||||||
|
"Program error: isoburn_attach_image: image==NULL",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if(o->image != NULL)
|
||||||
|
iso_image_unref(o->image);
|
||||||
|
o->image = image;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* API function. See libisoburn.h
|
||||||
|
*/
|
||||||
|
int isoburn_activate_session(struct burn_drive *drive)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct isoburn *o;
|
||||||
|
|
||||||
|
ret = isoburn_find_emulator(&o, drive, 0);
|
||||||
|
if (ret < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (o->emulation_mode != 1)
|
||||||
|
return 1; /* don't need to activate session */
|
||||||
|
if (o->fabricated_msc2 >= 0)
|
||||||
|
return 1; /* blind growing: do not alter anything outside the session */
|
||||||
|
|
||||||
|
if (!(o->fabricated_disc_status == BURN_DISC_APPENDABLE ||
|
||||||
|
(o->fabricated_disc_status == BURN_DISC_BLANK &&
|
||||||
|
o->zero_nwa > 0)))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
ret = burn_random_access_write(drive, (off_t) 0, (char*)o->target_iso_head,
|
||||||
|
Libisoburn_target_head_sizE, 1);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Initialize the emulation of multi-session on random access media.
|
||||||
|
The need for emulation is confirmed already.
|
||||||
|
@param o A freshly created isoburn object. isoburn_create_data_source() was
|
||||||
|
already called, nevertheless.
|
||||||
|
@return <=0 error , 1 = success
|
||||||
|
*/
|
||||||
|
int isoburn_start_emulation(struct isoburn *o, int flag)
|
||||||
|
{
|
||||||
|
int ret, i, capacity = -1, role;
|
||||||
|
off_t data_count, to_read;
|
||||||
|
struct burn_drive *drive;
|
||||||
|
struct ecma119_pri_vol_desc *pvm;
|
||||||
|
|
||||||
|
if(o==NULL) {
|
||||||
|
isoburn_msgs_submit(NULL, 0x00060000,
|
||||||
|
"Program error: isoburn_start_emulation: o==NULL",
|
||||||
|
0, "FATAL", 0);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
drive= o->drive;
|
||||||
|
|
||||||
|
/* We can assume 0 as start block for image.
|
||||||
|
The data there point to the most recent session.
|
||||||
|
*/
|
||||||
|
role = burn_drive_get_drive_role(drive);
|
||||||
|
ret = burn_get_read_capacity(drive, &capacity, 0);
|
||||||
|
if (ret <= 0)
|
||||||
|
capacity = -1;
|
||||||
|
if (capacity > 0 || role == 2) {
|
||||||
|
/* Might be a block device on a system where libburn cannot determine its
|
||||||
|
size. Try to read anyway. */
|
||||||
|
memset(o->target_iso_head, 0, Libisoburn_target_head_sizE);
|
||||||
|
to_read = Libisoburn_target_head_sizE;
|
||||||
|
if(capacity > 0 && (off_t) capacity * (off_t) 2048 < to_read)
|
||||||
|
to_read = (off_t) capacity * (off_t) 2048;
|
||||||
|
ret = burn_read_data(drive, (off_t) 0, (char*)o->target_iso_head,
|
||||||
|
to_read, &data_count, 2);
|
||||||
|
if (ret <= 0) {
|
||||||
|
/* an error means a disc with no ISO image */
|
||||||
|
if (capacity > 0)
|
||||||
|
o->fabricated_disc_status= BURN_DISC_FULL;
|
||||||
|
else
|
||||||
|
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* No read capacity means blank media */
|
||||||
|
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check first 64K. If 0's, the disc is treated as a blank disc, and thus
|
||||||
|
overwritten without extra check. */
|
||||||
|
i = Libisoburn_target_head_sizE;
|
||||||
|
while (i && !o->target_iso_head[i-1])
|
||||||
|
--i;
|
||||||
|
|
||||||
|
if (!i) {
|
||||||
|
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pvm = (struct ecma119_pri_vol_desc *)(o->target_iso_head + 16 * 2048);
|
||||||
|
|
||||||
|
if (!strncmp((char*)pvm->std_identifier, "CD001", 5)) {
|
||||||
|
off_t size;
|
||||||
|
|
||||||
|
/* sanity check */
|
||||||
|
if (pvm->vol_desc_type[0] != 1 || pvm->vol_desc_version[0] != 1
|
||||||
|
|| pvm->file_structure_version[0] != 1 ) {
|
||||||
|
/* TODO for now I treat this as a full disc */
|
||||||
|
o->fabricated_disc_status= BURN_DISC_FULL;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ok, PVM found, set size */
|
||||||
|
size = (off_t) iso_read_lsb(pvm->vol_space_size, 4);
|
||||||
|
size *= (off_t) 2048; /* block size in bytes */
|
||||||
|
isoburn_set_start_byte(o, size, 0);
|
||||||
|
o->fabricated_disc_status= BURN_DISC_APPENDABLE;
|
||||||
|
} else if (!strncmp((char*)pvm->std_identifier, "CDXX1", 5)) {
|
||||||
|
|
||||||
|
/* empty image */
|
||||||
|
isoburn_set_start_byte(o, o->zero_nwa * 2048, 0);
|
||||||
|
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||||
|
} else {
|
||||||
|
/* treat any disc in an unknown format as full */
|
||||||
|
o->fabricated_disc_status= BURN_DISC_FULL;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Alters and writes the first 64 kB of a "media" to invalidate
|
||||||
|
an ISO image. (It shall stay restorable by skilled humans, though).
|
||||||
|
The result shall especially keep libisoburn from accepting the media
|
||||||
|
image as ISO filesystem.
|
||||||
|
@param o A fully activated isoburn object. isoburn_start_emulation()
|
||||||
|
was already called.
|
||||||
|
@return <=0 error , 1 = success
|
||||||
|
*/
|
||||||
|
int isoburn_invalidate_iso(struct isoburn *o, int flag)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* replace CD001 with CDXX1 in PVM.
|
||||||
|
* I think this is enought for invalidating an iso image
|
||||||
|
*/
|
||||||
|
strncpy((char*)o->target_iso_head + 16 * 2048 + 1, "CDXX1", 5);
|
||||||
|
return isoburn_activate_session(o->drive);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* API @since 0.1.0 */
|
||||||
|
int isoburn_set_read_pacifier(struct burn_drive *drive,
|
||||||
|
int (*read_pacifier)(IsoImage*, IsoFileSource*),
|
||||||
|
void *read_handle)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct isoburn *o;
|
||||||
|
|
||||||
|
ret = isoburn_find_emulator(&o, drive, 0);
|
||||||
|
if(ret < 0 || o == NULL)
|
||||||
|
return -1;
|
||||||
|
o->read_pacifier_handle= read_handle;
|
||||||
|
o->read_pacifier= read_pacifier;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
1603
libisoburn/branches/ZeroFiveFour/libisoburn/libisoburn.h
Normal file
1603
libisoburn/branches/ZeroFiveFour/libisoburn/libisoburn.h
Normal file
File diff suppressed because it is too large
Load Diff
279
libisoburn/branches/ZeroFiveFour/test/compare_file.c
Normal file
279
libisoburn/branches/ZeroFiveFour/test/compare_file.c
Normal file
@ -0,0 +1,279 @@
|
|||||||
|
/*
|
||||||
|
Compare two copies of a file object in as many aspects as i can imagine
|
||||||
|
to make sense. (E.g.: comparing atime makes no sense.)
|
||||||
|
|
||||||
|
To compare tree /media/dvd and /original/dir :
|
||||||
|
find /media/dvd -exec compare_file '{}' /media/dvd /original/dir ';'
|
||||||
|
|
||||||
|
Copyright 2008 - 2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||||
|
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
|
||||||
|
|
||||||
|
cc -g -o compare_file compare_file.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= single letters */
|
||||||
|
char *Ftypetxt(mode_t st_mode, int flag)
|
||||||
|
{
|
||||||
|
if(flag&1)
|
||||||
|
goto single_letters;
|
||||||
|
if(S_ISDIR(st_mode))
|
||||||
|
return("directory");
|
||||||
|
else if(S_ISREG(st_mode))
|
||||||
|
return("regular_file");
|
||||||
|
else if(S_ISLNK(st_mode))
|
||||||
|
return("symbolic_link");
|
||||||
|
else if(S_ISBLK(st_mode))
|
||||||
|
return("block_device");
|
||||||
|
else if(S_ISCHR(st_mode))
|
||||||
|
return("char_device");
|
||||||
|
else if(S_ISFIFO(st_mode))
|
||||||
|
return("name_pipe");
|
||||||
|
else if(S_ISSOCK(st_mode))
|
||||||
|
return("unix_socket");
|
||||||
|
return("unknown");
|
||||||
|
single_letters:;
|
||||||
|
if(S_ISDIR(st_mode))
|
||||||
|
return("d");
|
||||||
|
else if(S_ISREG(st_mode))
|
||||||
|
return("-");
|
||||||
|
else if(S_ISLNK(st_mode))
|
||||||
|
return("l");
|
||||||
|
else if(S_ISBLK(st_mode))
|
||||||
|
return("b");
|
||||||
|
else if(S_ISCHR(st_mode))
|
||||||
|
return("c");
|
||||||
|
else if(S_ISFIFO(st_mode))
|
||||||
|
return("p");
|
||||||
|
else if(S_ISSOCK(st_mode))
|
||||||
|
return("s");
|
||||||
|
return("?");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *Ftimetxt(time_t t, char timetext[40], int flag)
|
||||||
|
{
|
||||||
|
char *rpt;
|
||||||
|
struct tm tms, *tmpt;
|
||||||
|
static char months[12][4]= { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||||
|
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||||
|
|
||||||
|
tmpt= localtime_r(&t, &tms);
|
||||||
|
rpt= timetext;
|
||||||
|
rpt[0]= 0;
|
||||||
|
if(tmpt==0)
|
||||||
|
sprintf(rpt+strlen(rpt), "%12.f", (double) t);
|
||||||
|
else if(time(NULL)-t < 180*86400 && time(NULL)-t >= 0)
|
||||||
|
sprintf(rpt+strlen(rpt), "%3s %2d %2.2d:%2.2d",
|
||||||
|
months[tms.tm_mon], tms.tm_mday, tms.tm_hour, tms.tm_min);
|
||||||
|
else
|
||||||
|
sprintf(rpt+strlen(rpt), "%3s %2d %4.4d",
|
||||||
|
months[tms.tm_mon], tms.tm_mday, 1900+tms.tm_year);
|
||||||
|
return(timetext);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= compare atime
|
||||||
|
bit1= compare ctime
|
||||||
|
*/
|
||||||
|
int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag)
|
||||||
|
{
|
||||||
|
struct stat s1, s2;
|
||||||
|
int ret, differs= 0, r1, r2, fd1= -1, fd2= -1, i, done;
|
||||||
|
char buf1[4096], buf2[4096], a[4096], ttx1[40], ttx2[40];
|
||||||
|
off_t r1count= 0, r2count= 0, diffcount= 0, first_diff= -1;
|
||||||
|
|
||||||
|
ret= lstat(adr1, &s1);
|
||||||
|
if(ret==-1) {
|
||||||
|
printf("? %s : cannot lstat() : %s\n", adr1, strerror(errno));
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
strcpy(a, Ftypetxt(s1.st_mode, 1));
|
||||||
|
strcat(a, " ");
|
||||||
|
if(adrc[0])
|
||||||
|
strcat(a, adrc);
|
||||||
|
else
|
||||||
|
strcat(a, ".");
|
||||||
|
|
||||||
|
ret= lstat(adr2, &s2);
|
||||||
|
if(ret==-1) {
|
||||||
|
printf("? %s : cannot lstat() : %s\n", adr2, strerror(errno));
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Attributes */
|
||||||
|
if(s1.st_mode != s2.st_mode) {
|
||||||
|
if((s1.st_mode&~S_IFMT)!=(s2.st_mode&~S_IFMT))
|
||||||
|
printf("%s : st_mode : %7.7o <> %7.7o\n", a,
|
||||||
|
(unsigned int) (s1.st_mode & ~S_IFMT),
|
||||||
|
(unsigned int) (s2.st_mode & ~S_IFMT));
|
||||||
|
if((s1.st_mode&S_IFMT)!=(s2.st_mode&S_IFMT))
|
||||||
|
printf("%s : type : %s <> %s\n",
|
||||||
|
a, Ftypetxt(s1.st_mode, 0), Ftypetxt(s2.st_mode, 0));
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
if(s1.st_uid != s2.st_uid) {
|
||||||
|
printf("%s : st_uid : %lu <> %lu\n",
|
||||||
|
a, (unsigned long) s1.st_uid, (unsigned long) s2.st_uid);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
if(s1.st_gid != s2.st_gid) {
|
||||||
|
printf("%s : st_gid : %lu <> %lu\n",
|
||||||
|
a, (unsigned long) s1.st_gid, (unsigned long) s2.st_gid);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
if((S_ISCHR(s1.st_mode) && S_ISCHR(s2.st_mode)) ||
|
||||||
|
(S_ISBLK(s1.st_mode) && S_ISBLK(s2.st_mode))) {
|
||||||
|
if(s1.st_rdev != s2.st_rdev) {
|
||||||
|
printf("%s : %s st_rdev : %lu <> %lu\n", a,
|
||||||
|
(S_ISCHR(s1.st_mode) ? "S_IFCHR" : "S_IFBLK"),
|
||||||
|
(unsigned long) s1.st_rdev, (unsigned long) s1.st_rdev);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(S_ISREG(s2.st_mode) && s1.st_size != s2.st_size) {
|
||||||
|
printf("%s : st_size : %.f <> %.f diff= %.f\n",
|
||||||
|
a, (double) s1.st_size, (double) s2.st_size,
|
||||||
|
((double) s1.st_size) - (double) s2.st_size);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
if(s1.st_mtime != s2.st_mtime) {
|
||||||
|
printf("%s : st_mtime : %s <> %s diff= %.f s\n",
|
||||||
|
a, Ftimetxt(s1.st_mtime, ttx1, 0),
|
||||||
|
Ftimetxt(s2.st_mtime, ttx2, 0),
|
||||||
|
((double) s1.st_mtime) - (double) s2.st_mtime);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
if(flag&1) {
|
||||||
|
if(s1.st_atime != s2.st_atime) {
|
||||||
|
printf("%s : st_atime : %s <> %s diff= %.f s\n",
|
||||||
|
a, Ftimetxt(s1.st_atime, ttx1, 0),
|
||||||
|
Ftimetxt(s2.st_atime, ttx2, 0),
|
||||||
|
((double) s1.st_atime) - (double) s2.st_atime);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(flag&2) {
|
||||||
|
if(s1.st_ctime != s2.st_ctime) {
|
||||||
|
printf("%s : st_ctime : %s <> %s diff= %.f s\n",
|
||||||
|
a, Ftimetxt(s1.st_ctime, ttx1, 0),
|
||||||
|
Ftimetxt(s2.st_ctime, ttx2, 0),
|
||||||
|
((double) s1.st_ctime) - (double) s2.st_ctime);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(S_ISREG(s1.st_mode) && S_ISREG(s2.st_mode)) {
|
||||||
|
fd1= open(adr1, O_RDONLY);
|
||||||
|
if(fd1==-1) {
|
||||||
|
printf("- %s : cannot open() : %s\n", adr1, strerror(errno));
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
fd2= open(adr2, O_RDONLY);
|
||||||
|
if(fd2==-1) {
|
||||||
|
printf("- %s : cannot open() : %s\n", adr2, strerror(errno));
|
||||||
|
close(fd1);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Content */
|
||||||
|
done= 0;
|
||||||
|
while(!done) {
|
||||||
|
r1= read(fd1, buf1, sizeof(buf1));
|
||||||
|
r2= read(fd2, buf2, sizeof(buf2));
|
||||||
|
if((r1==EOF && r2==EOF) || (r1==0 && r2==0))
|
||||||
|
break;
|
||||||
|
if(r1==EOF || r1==0) {
|
||||||
|
if(r1==EOF)
|
||||||
|
r1= 0;
|
||||||
|
if(s1.st_size > r1count + r1)
|
||||||
|
printf("- %s : early EOF after %.f bytes\n", adr1, (double) r1count);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
r1count+= r1;
|
||||||
|
if(r2==EOF || r2<r1) {
|
||||||
|
if(r2==EOF)
|
||||||
|
r2= 0;
|
||||||
|
if(s2.st_size > r2count + r2)
|
||||||
|
printf("- %s : early EOF after %.f bytes\n", adr2, (double) r2count);
|
||||||
|
differs= 1;
|
||||||
|
done= 1;
|
||||||
|
}
|
||||||
|
if(r2>r1) {
|
||||||
|
if(s1.st_size > r1count + r1)
|
||||||
|
printf("- %s : early EOF after %.f bytes\n", adr1, (double) r1count);
|
||||||
|
differs= 1;
|
||||||
|
done= 1;
|
||||||
|
}
|
||||||
|
r2count+= r2;
|
||||||
|
if(r1>r2)
|
||||||
|
r1= r2;
|
||||||
|
for(i= 0; i<r1; i++) {
|
||||||
|
if(buf1[i]!=buf2[i]) {
|
||||||
|
if(first_diff<0)
|
||||||
|
first_diff= i;
|
||||||
|
diffcount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(diffcount>0 || r1count!=r2count) {
|
||||||
|
if(first_diff<0)
|
||||||
|
first_diff= (r1count>r2count ? r2count : r1count);
|
||||||
|
printf("%s : %s : differs by at least %.f bytes. First at %.f\n", a,
|
||||||
|
(s1.st_mtime==s2.st_mtime ? "CONTENT":"content"),
|
||||||
|
(double) (diffcount + abs(r1count-r2count)), (double) first_diff);
|
||||||
|
differs= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(fd1!=-1)
|
||||||
|
close(fd1);
|
||||||
|
if(fd2!=-1)
|
||||||
|
close(fd2);
|
||||||
|
return(!differs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int ret, i, with_ctime= 1;
|
||||||
|
char adr1[4096], adr2[4096], adrc[4096];
|
||||||
|
|
||||||
|
if(argc<4) {
|
||||||
|
fprintf(stderr, "usage: %s path prefix1 prefix2\n", argv[0]);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
for(i= 4; i<argc; i++) {
|
||||||
|
if(strcmp(argv[i], "-no_ctime")==0)
|
||||||
|
with_ctime= 0;
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "%s : Option not recognized: '%s'\n", argv[0], argv[i]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strncmp(argv[1], argv[2], strlen(argv[2]))!=0) {
|
||||||
|
fprintf(stderr, "%s: path '%s' does not match prefix1 '%s'\n",
|
||||||
|
argv[0], argv[1], argv[2]);
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
strcpy(adr1, argv[1]);
|
||||||
|
strcpy(adrc, argv[1]+strlen(argv[2]));
|
||||||
|
sprintf(adr2, "%s%s%s",
|
||||||
|
argv[3], (adrc[0]=='/' || adrc[0]==0 ? "" : "/"), adrc);
|
||||||
|
|
||||||
|
ret= Compare_2_files(adr1, adr2, adrc, (with_ctime<<1));
|
||||||
|
exit(ret<=0);
|
||||||
|
}
|
||||||
|
|
312
libisoburn/branches/ZeroFiveFour/test/test.c
Normal file
312
libisoburn/branches/ZeroFiveFour/test/test.c
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
/*
|
||||||
|
Little test program for libisoburn.
|
||||||
|
It grows an iso filesystem on a disc.
|
||||||
|
|
||||||
|
Copyright 2007 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||||
|
and Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <err.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <libisofs/libisofs.h>
|
||||||
|
#include <libburn/libburn.h>
|
||||||
|
#include "../src/libisoburn.h"
|
||||||
|
|
||||||
|
const char * const optstring = "JRh";
|
||||||
|
extern char *optarg;
|
||||||
|
extern int optind;
|
||||||
|
|
||||||
|
|
||||||
|
/** Activates the usage of function graft_point() rather than
|
||||||
|
plain iso_tree_radd_dir() from libisofs
|
||||||
|
*/
|
||||||
|
#define With_graft_poinT 1
|
||||||
|
|
||||||
|
|
||||||
|
static int graft_point(struct iso_volume *volume, const char *disk_path,
|
||||||
|
const char *img_path, struct iso_tree_radd_dir_behavior *behav)
|
||||||
|
{
|
||||||
|
char path[4096], *apt, *npt;
|
||||||
|
struct iso_tree_node_dir *dir;
|
||||||
|
struct iso_tree_node *node;
|
||||||
|
int done= 0, is_dir= 0;
|
||||||
|
struct stat stbuf;
|
||||||
|
|
||||||
|
strncpy(path, img_path, sizeof(path)-1);
|
||||||
|
path[sizeof(path)-1]= 0;
|
||||||
|
apt= npt= path;
|
||||||
|
|
||||||
|
if(lstat(disk_path, &stbuf) == -1) {
|
||||||
|
fprintf(stderr, "Cannot determine attributes of '%s' : %s (%d)\n",
|
||||||
|
disk_path, (errno > 0 ? strerror(errno) : "unknown error"), errno);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
if(S_ISDIR(stbuf.st_mode))
|
||||||
|
is_dir= 1;
|
||||||
|
else if(!(S_ISREG(stbuf.st_mode) || S_ISLNK(stbuf.st_mode))) {
|
||||||
|
fprintf(stderr, "File object '%s' is of non-supported file type\n",
|
||||||
|
disk_path);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
dir= iso_volume_get_root(volume);
|
||||||
|
if(dir==NULL) {
|
||||||
|
fprintf(stderr, "While grafting '%s' : no root node available\n", img_path);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
for(npt= apt; !done; apt= npt+1) {
|
||||||
|
npt= strchr(apt, '/');
|
||||||
|
if(npt==NULL) {
|
||||||
|
npt= apt+strlen(apt);
|
||||||
|
done= 1;
|
||||||
|
} else
|
||||||
|
*npt= 0;
|
||||||
|
if(*apt==0) {
|
||||||
|
*apt= '/';
|
||||||
|
apt++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
node= iso_tree_volume_path_to_node(volume,path);
|
||||||
|
if(node!=NULL) {
|
||||||
|
if(iso_tree_node_get_type(node)!=LIBISO_NODE_DIR) {
|
||||||
|
fprintf(stderr, "While grafting '%s' : '%s' is not a directory\n",
|
||||||
|
img_path, path);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
dir= (struct iso_tree_node_dir *) node;
|
||||||
|
} else {
|
||||||
|
dir= iso_tree_add_dir(dir, apt);
|
||||||
|
if(dir==NULL) {
|
||||||
|
fprintf(stderr, "While grafting '%s' : could not insert '%s'\n",
|
||||||
|
img_path, path);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(done) {
|
||||||
|
if(is_dir) {
|
||||||
|
iso_tree_radd_dir(dir, disk_path, behav);
|
||||||
|
} else {
|
||||||
|
node= iso_tree_add_node(dir, disk_path);
|
||||||
|
if(node == NULL) {
|
||||||
|
fprintf(stderr, "While grafting '%s'='%s' : libisofs_errno = %d\n",
|
||||||
|
img_path, disk_path, libisofs_errno);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
*npt= '/';
|
||||||
|
}
|
||||||
|
fprintf(stderr, "NOTE: added %s '%s'='%s'\n", (is_dir ? "directory" : "node"),
|
||||||
|
img_path, disk_path);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
void usage()
|
||||||
|
{
|
||||||
|
printf("test [OPTIONS] DRIVE DIRECTORY\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void help()
|
||||||
|
{
|
||||||
|
printf(
|
||||||
|
"Options:\n"
|
||||||
|
" -J Add Joliet support\n"
|
||||||
|
" -R Add Rock Ridge support\n"
|
||||||
|
" -h Print this message\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
struct burn_drive_info *drives;
|
||||||
|
struct iso_volset *volset;
|
||||||
|
struct burn_drive *drive;
|
||||||
|
struct burn_disc *disc;
|
||||||
|
enum burn_disc_status state;
|
||||||
|
struct isoburn_read_opts ropts;
|
||||||
|
struct isoburn_source_opts sopts;
|
||||||
|
int c;
|
||||||
|
struct iso_tree_radd_dir_behavior behav = {0,0,0};
|
||||||
|
int flags=0;
|
||||||
|
int ret=0, i;
|
||||||
|
int size, free_bytes;
|
||||||
|
char *status_text;
|
||||||
|
|
||||||
|
while ((c = getopt(argc, argv, optstring)) != -1) {
|
||||||
|
switch(c) {
|
||||||
|
case 'h':
|
||||||
|
usage();
|
||||||
|
help();
|
||||||
|
exit(0);
|
||||||
|
break;
|
||||||
|
case 'J':
|
||||||
|
flags |= ECMA119_JOLIET;
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
flags |= ECMA119_ROCKRIDGE;
|
||||||
|
break;
|
||||||
|
case '?':
|
||||||
|
usage();
|
||||||
|
exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc < optind + 1) {
|
||||||
|
fprintf(stderr, "Please supply device name\n");
|
||||||
|
usage();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if (argc < optind + 2) {
|
||||||
|
fprintf(stderr, "Please supply directory to add to disc\n");
|
||||||
|
usage();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!isoburn_initialize()) {
|
||||||
|
fprintf(stderr, "Can't init libisoburn\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO change this. maybe we can add wrapp in libisoburn */
|
||||||
|
iso_msgs_set_severities("NEVER", "DEBUG", "libisofs : ");
|
||||||
|
burn_msgs_set_severities("NEVER", "DEBUG", "libburn : ");
|
||||||
|
burn_set_signal_handling("libisoburn/test/test : ", NULL, 0);
|
||||||
|
|
||||||
|
printf("Growing drive %s\n", argv[optind]);
|
||||||
|
|
||||||
|
if (isoburn_drive_scan_and_grab(&drives, argv[optind], 1) <= 0) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"Can't open device. Are you sure it is a valid drive?\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
drive = drives[0].drive;
|
||||||
|
|
||||||
|
/* check for invalid state */
|
||||||
|
state = isoburn_disc_get_status(drive);
|
||||||
|
if (state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
||||||
|
fprintf(stderr, "Unsuitable disc status\n");
|
||||||
|
goto exit_cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fill read opts */
|
||||||
|
memset(&ropts, sizeof(ropts), 0);
|
||||||
|
ropts.norock = 0;
|
||||||
|
ropts.nojoliet = 0;
|
||||||
|
ropts.preferjoliet = 0;
|
||||||
|
ropts.uid = 0;
|
||||||
|
ropts.gid = 0;
|
||||||
|
ropts.mode = 0555;
|
||||||
|
ropts.pretend_blank= 0;
|
||||||
|
|
||||||
|
if (isoburn_read_volset(drive, &ropts, &volset) <= 0) {
|
||||||
|
fprintf(stderr, "Can't read volset\n");
|
||||||
|
goto exit_cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef With_graft_poinT
|
||||||
|
for (i = optind + 1; i < argc; i++) {
|
||||||
|
if (graft_point(iso_volset_get_volume(volset, 0),
|
||||||
|
argv[i], argv[i], &behav) <= 0) {
|
||||||
|
fprintf(stderr, "Canot graft '%s'\n", argv[optind+1]);
|
||||||
|
goto exit_cleanup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
struct iso_tree_node_dir *root;
|
||||||
|
root = iso_volume_get_root(iso_volset_get_volume(volset, 0));
|
||||||
|
/* add a new dir */
|
||||||
|
iso_tree_radd_dir(root, argv[optind+1], &behav);
|
||||||
|
#endif /* ! With_graft_poinT */
|
||||||
|
|
||||||
|
|
||||||
|
sopts.level = 2;
|
||||||
|
sopts.flags = flags;
|
||||||
|
sopts.relaxed_constraints = 0;
|
||||||
|
sopts.copy_eltorito = 1;
|
||||||
|
sopts.no_cache_inodes = 0;
|
||||||
|
sopts.sort_files = 1;
|
||||||
|
sopts.default_mode = 0;
|
||||||
|
sopts.replace_dir_mode = 0;
|
||||||
|
sopts.replace_file_mode = 0;
|
||||||
|
sopts.replace_uid = 0;
|
||||||
|
sopts.replace_gid = 0;
|
||||||
|
sopts.dir_mode = 0555;
|
||||||
|
sopts.file_mode = 0444;
|
||||||
|
sopts.gid = 0;
|
||||||
|
sopts.uid = 0;
|
||||||
|
sopts.input_charset = NULL;
|
||||||
|
sopts.ouput_charset = NULL;
|
||||||
|
|
||||||
|
if (isoburn_prepare_disc(drive, &disc, &sopts) <= 0) {
|
||||||
|
fprintf(stderr, "Can't prepare disc\n");
|
||||||
|
goto volset_cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* a. write the new image */
|
||||||
|
printf("Adding new data...\n");
|
||||||
|
{
|
||||||
|
struct burn_write_opts *burn_options;
|
||||||
|
struct burn_progress progress;
|
||||||
|
|
||||||
|
burn_options = burn_write_opts_new(drive);
|
||||||
|
burn_drive_set_speed(drive, 0, 0);
|
||||||
|
burn_write_opts_set_underrun_proof(burn_options, 1);
|
||||||
|
|
||||||
|
/* ok, write the new track */
|
||||||
|
isoburn_disc_write(burn_options, disc);
|
||||||
|
burn_write_opts_free(burn_options);
|
||||||
|
|
||||||
|
while (burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING)
|
||||||
|
usleep(100002);
|
||||||
|
|
||||||
|
while (burn_drive_get_status(drive, &progress)
|
||||||
|
!= BURN_DRIVE_IDLE) {
|
||||||
|
|
||||||
|
printf("Writing: sector %d of %d",
|
||||||
|
progress.sector, progress.sectors);
|
||||||
|
ret = isoburn_get_fifo_status(drive, &size,
|
||||||
|
&free_bytes, &status_text);
|
||||||
|
if (ret > 0 )
|
||||||
|
printf(" [fifo %s, %2d%% fill]", status_text,
|
||||||
|
(int) (100.0 - 100.0 *
|
||||||
|
((double) free_bytes) /
|
||||||
|
(double) size));
|
||||||
|
printf("\n");
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* b. write the new vol desc */
|
||||||
|
printf("Writing the new vol desc...\n");
|
||||||
|
if (isoburn_activate_session(drive) <= 0) {
|
||||||
|
fprintf(stderr, "Ups, new vol desc write failed\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
ret= 0;
|
||||||
|
volset_cleanup:;
|
||||||
|
/*
|
||||||
|
iso_volset_free(volset);
|
||||||
|
*/
|
||||||
|
|
||||||
|
exit_cleanup:;
|
||||||
|
isoburn_drive_release(drive, 0);
|
||||||
|
isoburn_finish();
|
||||||
|
|
||||||
|
exit(ret);
|
||||||
|
}
|
||||||
|
|
6
libisoburn/branches/ZeroFiveFour/version.h.in
Normal file
6
libisoburn/branches/ZeroFiveFour/version.h.in
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
/* <<< this file is on its way out
|
||||||
|
#define ISOBURN_MAJOR_VERSION @ISOBURN_MAJOR_VERSION@
|
||||||
|
#define ISOBURN_MINOR_VERSION @ISOBURN_MINOR_VERSION@
|
||||||
|
#define ISOBURN_MICRO_VERSION @ISOBURN_MICRO_VERSION@
|
||||||
|
*/
|
@ -0,0 +1,6 @@
|
|||||||
|
Derek Foreman
|
||||||
|
Ben Jansens
|
||||||
|
Thomas Schmitt
|
||||||
|
Mario Danic
|
||||||
|
Vreixo Formoso Lopes
|
||||||
|
|
674
libisoburn/branches/ZeroFiveFour/xorriso/COPYING_gnu_xorriso
Normal file
674
libisoburn/branches/ZeroFiveFour/xorriso/COPYING_gnu_xorriso
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
@ -0,0 +1,27 @@
|
|||||||
|
Derek Foreman <derek@signalmarketing.com>
|
||||||
|
Ben Jansens <xor@orodu.net>
|
||||||
|
Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
Mario Danic <mario.danic@gmail.com>,
|
||||||
|
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||||
|
|
||||||
|
GNU xorriso is a compilation of
|
||||||
|
xorriso Copyright (C) 2007-2010 Thomas Schmitt
|
||||||
|
libisoburn Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
|
||||||
|
libisofs Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic, Thomas Schmitt
|
||||||
|
libburn Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
|
||||||
|
2006-2010 Mario Danic, Thomas Schmitt
|
||||||
|
from libburnia-project.org with a license derived from GPLv2+.
|
||||||
|
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 3
|
||||||
|
or later as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
343
libisoburn/branches/ZeroFiveFour/xorriso/README_gnu_xorriso
Normal file
343
libisoburn/branches/ZeroFiveFour/xorriso/README_gnu_xorriso
Normal file
@ -0,0 +1,343 @@
|
|||||||
|
------------------------------------------------------------------------------
|
||||||
|
Contribution of libburnia-project.org to the GNU Operating System
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
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.5.3.tar.gz
|
||||||
|
Provided under GPL version 3 or later. No warranty.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
xorriso is a program which copies file objects from POSIX compliant
|
||||||
|
filesystems into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||||||
|
session-wise manipulation of such filesystems. It can load the management
|
||||||
|
information of existing ISO images and it writes the session results to
|
||||||
|
optical media or to filesystem objects.
|
||||||
|
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
|
||||||
|
|
||||||
|
A special property of xorriso is that it needs neither an external ISO 9660
|
||||||
|
formatter program nor an external burn program for CD or DVD but rather
|
||||||
|
incorporates the libraries of libburnia-project.org .
|
||||||
|
|
||||||
|
Currently it is fully supported on GNU/Linux with kernels >= 2.4 and on
|
||||||
|
FreeBSD versions with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||||||
|
On other X/Open compliant systems there will only be POSIX i/o with disk
|
||||||
|
file objects, but no direct MMC operation on CD/DVD/BD drives.
|
||||||
|
|
||||||
|
By using this software you agree to the disclaimer at the end of this text:
|
||||||
|
"... without even the implied warranty ..."
|
||||||
|
|
||||||
|
|
||||||
|
Compilation, First Glimpse, Installation
|
||||||
|
|
||||||
|
The most simple way to get xorriso from source code is the GNU xorriso tarball.
|
||||||
|
|
||||||
|
Prerequisites:
|
||||||
|
The tarball contains everything that is needed except the following system
|
||||||
|
components:
|
||||||
|
libc, libpthread
|
||||||
|
plus on FreeBSD: libiconv, libcam, IDE and SATA drives need atapicam
|
||||||
|
Optional at compile time are:
|
||||||
|
libreadline and the readline-dev headers make dialog mode more convenient.
|
||||||
|
on GNU/Linux: libacl and libacl-devel allow getting and setting ACLs.
|
||||||
|
zlib and zlib-devel allow zisofs compression.
|
||||||
|
If they were present at compile time, then the optional libraries have to
|
||||||
|
be present at runtime, too.
|
||||||
|
|
||||||
|
Obtain xorriso-0.5.3.tar.gz, take it to a directory of your choice and do:
|
||||||
|
|
||||||
|
tar xzf xorriso-0.5.3.tar.gz
|
||||||
|
cd xorriso-0.5.3
|
||||||
|
|
||||||
|
Within that directory execute:
|
||||||
|
|
||||||
|
./configure --prefix=/usr
|
||||||
|
make
|
||||||
|
|
||||||
|
This will produce a binary named
|
||||||
|
./xorriso/xorriso
|
||||||
|
|
||||||
|
If you want xorriso to report a "Build timestamp" with its option -version :
|
||||||
|
make buildstamped
|
||||||
|
|
||||||
|
You may strip the binary to reduce it in size
|
||||||
|
strip ./xorriso/xorriso
|
||||||
|
|
||||||
|
You may copy or move it to a directory where it can be found by the shell,
|
||||||
|
or you may execute xorriso at the place where it was built,
|
||||||
|
or you may execute as superuser:
|
||||||
|
make install
|
||||||
|
|
||||||
|
For general concepts, options and usage examples see
|
||||||
|
info xorriso
|
||||||
|
or
|
||||||
|
man 1 xorriso
|
||||||
|
|
||||||
|
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
|
||||||
|
man ./xorriso/xorriso.1
|
||||||
|
|
||||||
|
The installation creates several alias links pointing to the xorriso binary:
|
||||||
|
xorrisofs starts xorriso with -as mkisofs emulation already enabled
|
||||||
|
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||||
|
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||||
|
|
||||||
|
|
||||||
|
If you want to avoid dependecy on libreadline although the libreadline
|
||||||
|
development package is installed, then rather build xorriso by:
|
||||||
|
./configure --prefix=/usr --disable-libreadline
|
||||||
|
make clean ; make
|
||||||
|
Never omit the "make clean" command after switching libreadline enabling.
|
||||||
|
Other deliberate dependency reduction options of ./configure are:
|
||||||
|
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||||||
|
--disable-xattr avoid use of xattr functions like listxattr()
|
||||||
|
--disable-zlib avoid use of zlib functions like compress2()
|
||||||
|
|
||||||
|
xorriso brings own system adapters which allow burning optical media on
|
||||||
|
GNU/Linux and FreeBSD. Alternatively it can use libcdio-0.83 or later for
|
||||||
|
sending commands to optical drives:
|
||||||
|
--enable-libcdio
|
||||||
|
|
||||||
|
xorriso allows to use external processes as file content filters. This is
|
||||||
|
a potential security risk which may be avoided by ./configure option
|
||||||
|
--disable-external-filters
|
||||||
|
|
||||||
|
By default the filter feature is disabled if effective user id and real
|
||||||
|
user id differ. This ban can be lifted by
|
||||||
|
--enable-external-filters-setuid
|
||||||
|
|
||||||
|
Sometimes xorriso will yield better write performance on GNU/Linux if 64 KB are
|
||||||
|
transmitted in each write operation rather than 32 KB. See option -dvd_obs .
|
||||||
|
64k can be made default at configure time by:
|
||||||
|
--enable-dvd-obs-64k
|
||||||
|
|
||||||
|
For xorriso -as cdrecord emulation only:
|
||||||
|
In some situations GNU/Linux may deliver a better write performance to drives
|
||||||
|
if the track input is read with O_DIRECT (see man 2 open). The included libburn
|
||||||
|
and the cdrecord emulation of xorriso can be told to use this peculiar read
|
||||||
|
mode by:
|
||||||
|
--enable-track-src-odirect
|
||||||
|
|
||||||
|
|
||||||
|
Drives and Disk File Objects
|
||||||
|
|
||||||
|
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
|
||||||
|
drives which shall be used, even if only reading is intended.
|
||||||
|
A list of rw-accessible drives can be obtained by
|
||||||
|
|
||||||
|
xorriso -devices
|
||||||
|
|
||||||
|
CD devices which offer no rw-permission are invisible to normal users.
|
||||||
|
The superuser should be able to see any usable drive and then set the
|
||||||
|
permissions as needed.
|
||||||
|
|
||||||
|
The output of xorriso -devices might look like
|
||||||
|
|
||||||
|
0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'
|
||||||
|
1 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'
|
||||||
|
|
||||||
|
Full and insecure enabling of both for everybody would look like
|
||||||
|
chmod a+rw /dev/sr0 /dev/hda
|
||||||
|
This is equivalent to the traditional setup chmod a+x,u+s cdrecord.
|
||||||
|
|
||||||
|
I strongly discourage to run xorriso with setuid root or via sudo !
|
||||||
|
It is not checked for the necessary degree of hacker safety.
|
||||||
|
|
||||||
|
Consider to put all authorized users into group "floppy", to chgrp the
|
||||||
|
device file to that group and to disallow w-access to others.
|
||||||
|
|
||||||
|
|
||||||
|
A possible source of problems are hald or other automounters.
|
||||||
|
If you can spot a process "hald-addon-storage" with the address of
|
||||||
|
your desired drive, then consider to kill it.
|
||||||
|
|
||||||
|
If you cannot get rid of the automounter that easily, try whether it helps
|
||||||
|
to always load the drive tray manually before starting a write run of
|
||||||
|
xorriso. Wait until the drive light is off.
|
||||||
|
Better try to unmount an eventually mounted media before a write run.
|
||||||
|
|
||||||
|
|
||||||
|
Besides true optical drives, xorriso can also address disk files as input or
|
||||||
|
output drives. By default paths to files under /dev are accepted only if the
|
||||||
|
device represents a real optical drive. Other device files may be addressed
|
||||||
|
by prepending "stdio:" to the path.
|
||||||
|
Like:
|
||||||
|
xorriso -dev stdio:/dev/sdb ...more arguments...
|
||||||
|
This rule may be changed by xorriso option -drive_class.
|
||||||
|
Prefix "mmc:" causes a path to be accepted only if it is a real optical drive
|
||||||
|
which is accessible by generic SCSI/MMC commands.
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
|
||||||
|
We are quite sure that libisofs produces accurate representations of the disk
|
||||||
|
files. This opinion is founded on a lot of test burns and checks by a little
|
||||||
|
test program which compares files from the mounted image with the orignals
|
||||||
|
on disk. It uses the normal POSIX filesystem calls, i.e. no libburnia stuff.
|
||||||
|
|
||||||
|
This program is not installed systemwide but stays in the installation
|
||||||
|
directory of the xorriso tarball as test/compare_file . Usually it is
|
||||||
|
run as -exec payload of a find command. It demands at least three arguments:
|
||||||
|
The path of the first file to compare, the prefix1 to be cut off from path
|
||||||
|
and the prefix2 which gets prepended afterwards to obtain the path of the
|
||||||
|
second file to compare.
|
||||||
|
As further argument there can be -no_ctime which suppresses the comparison
|
||||||
|
of ctime date stamps.
|
||||||
|
The exit value is 0 if no difference was detected, non-0 else.
|
||||||
|
|
||||||
|
Example: After
|
||||||
|
xorriso ... -pathspecs on -add /=/original/dir -- -commit_eject all
|
||||||
|
mount /media/dvd
|
||||||
|
cd test
|
||||||
|
compare tree /media/dvd with tree /original/dir :
|
||||||
|
find /original/dir -exec ./compare_file '{}' /original/dir /media/dvd ';' \
|
||||||
|
| less
|
||||||
|
and vice versa:
|
||||||
|
find /media/dvd -exec ./compare_file '{}' /media/dvd /original/dir ';' \
|
||||||
|
| less
|
||||||
|
|
||||||
|
|
||||||
|
File Formats
|
||||||
|
|
||||||
|
Sector Maps
|
||||||
|
|
||||||
|
Sector maps describe the valid and invalid blocks on a media or a disk copy of
|
||||||
|
a media. xorriso creates and reads these file with its option -check_media.
|
||||||
|
|
||||||
|
The file begins with 32 bytes of cleartext of which the last one is a
|
||||||
|
newline character. The first 25 say "xorriso sector bitmap v2 ", the
|
||||||
|
remaining six characters give the size of the info text as decimal number.
|
||||||
|
This number of bytes follows the first 32 and will not be interpreted
|
||||||
|
by xorriso. They are rather to inform a human reader about the media type
|
||||||
|
and its track layout.
|
||||||
|
After the info text there are two 4 byte signed integers, most significant
|
||||||
|
byte first. The first one, N, gives the number of bits in the following bitmap
|
||||||
|
and the second number S gives the number of 2 KiB blocks governed by a single
|
||||||
|
bit in the map. Then come the bits in form of 8-bit bytes.
|
||||||
|
Data block M is covered by bit B=M/S in the map, bit number B is stored in
|
||||||
|
byte B/8 as bit B%8. A valid readable data block has its bit set to 1.
|
||||||
|
|
||||||
|
Checksum Tags
|
||||||
|
|
||||||
|
Checksum tags are data blocks inside an ISO 9660 image which do not belong to
|
||||||
|
any file but rather tell the MD5 of a certain range of data blocks.
|
||||||
|
|
||||||
|
The superblock checksum tag is written after the ECMA-119 volume descriptors.
|
||||||
|
The tree checksum tag is written after the ECMA-119 directory entries.
|
||||||
|
The session checksum tag is written after all payload including the checksum
|
||||||
|
array. (Then follows eventual padding.)
|
||||||
|
|
||||||
|
The tags are single lines of printable text, padded by 0 bytes. They have
|
||||||
|
the following format:
|
||||||
|
|
||||||
|
Tag_id pos=# range_start=# range_size=# [session_start|next=#] md5=# self=#\n
|
||||||
|
|
||||||
|
Parameters md5= and self= are 32 digit hex, the others are decimal numbers.
|
||||||
|
|
||||||
|
Tag_id distinguishes the following tag types
|
||||||
|
"libisofs_rlsb32_checksum_tag_v1" Relocated 64 kB superblock tag
|
||||||
|
"libisofs_sb_checksum_tag_v1" Superblock tag
|
||||||
|
"libisofs_tree_checksum_tag_v1" Directory tree tag
|
||||||
|
"libisofs_checksum_tag_v1" Session end tag
|
||||||
|
|
||||||
|
A relocated superblock may appear at LBA 0 of an image which was produced for
|
||||||
|
being stored in a disk file or on overwriteable media (e.g. DVD+R, BD-RE).
|
||||||
|
xorriso records the first session at LBA 32. An eventual follow-up session
|
||||||
|
begins at the next block address which is divisible by 32 and higher than the
|
||||||
|
address of the previous session's end tag. Normally no session starts after the
|
||||||
|
address given by relocated superblock parameter session_start=.
|
||||||
|
Session oriented media like CD-R[W], DVD+R, BD-R will have no relocated
|
||||||
|
superblock but rather bear a table-of-content on media level.
|
||||||
|
|
||||||
|
A tag is valid if pos= tells its own block address and self= tells its own MD5
|
||||||
|
up to the last hex digit of md5=. range_start= tells the first block that is
|
||||||
|
covered by md5=, range_size= tells the number of blocks covered by md5=.
|
||||||
|
Relocated superblocks tell the block address of their session by session_start=.
|
||||||
|
Superblock and tree tag tell the block address of the next tag by next=.
|
||||||
|
The newline character at the end is mandatory.
|
||||||
|
|
||||||
|
|
||||||
|
libisoburn
|
||||||
|
|
||||||
|
xorriso is based on libisofs which does ISO 9600 filesystem aspects and on
|
||||||
|
libburn which does the input and output aspects. Parts of this foundation
|
||||||
|
are accessed via libisoburn, which is closely related to xorriso.
|
||||||
|
|
||||||
|
libisoburn provides two services:
|
||||||
|
- Encapsulation of coordination between libisofs and libburn.
|
||||||
|
- Emulation of ISO 9660 multi-session on overwriteable media
|
||||||
|
or random access files.
|
||||||
|
|
||||||
|
The sourcecode of all three libraries is included in the xorriso standalone
|
||||||
|
tarball. It is compiled with xorriso and linked statically.
|
||||||
|
But you may as well get and install releases of libburn and libisofs, in order
|
||||||
|
to be able to install a release of libisoburn which produces libisoburn.so.1
|
||||||
|
and a matching dynamically linked xorriso binary.
|
||||||
|
This binary is leaner but depends on properly installed libraries of suitable
|
||||||
|
revision.
|
||||||
|
|
||||||
|
Dynamic library and compile time header requirements for libisoburn-0.5.2 :
|
||||||
|
- libburn.so.4 , version libburn-0.7.8 or higher
|
||||||
|
- libisofs.so.6 , version libisofs-0.6.28 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.
|
||||||
|
|
||||||
|
GNU xorriso has less runtime dependencies and can be moved more freely.
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License version 3 or later
|
||||||
|
as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
GNU xorriso is feature-wise equivalent to the dynamic compilation of
|
||||||
|
libburnia libraries and libburnia program xorriso.
|
||||||
|
It restricts itself to a technical form where the legal commitments of the
|
||||||
|
libburnia project and the legal intentions of FSF match completely.
|
||||||
|
|
||||||
|
Libburnia project is committed to provide support for this copy in the same
|
||||||
|
way as for its own software releases. It is further committed to keep its
|
||||||
|
own licenses open for obtaining future copies under GPLv2+.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
libburnia program xorriso is based on and sub project of:
|
||||||
|
libburnia-project.org
|
||||||
|
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.
|
||||||
|
|
||||||
|
libburnia-project.org is inspired by and in libburn still containing parts
|
||||||
|
of old
|
||||||
|
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||||
|
Ben Jansens <xor@orodu.net>
|
||||||
|
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
This text itself is
|
||||||
|
Copyright (c) 2007 - 2010 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
|
||||||
|
then you are entitled to modify this text under that same license.
|
||||||
|
|
7413
libisoburn/branches/ZeroFiveFour/xorriso/changelog.txt
Normal file
7413
libisoburn/branches/ZeroFiveFour/xorriso/changelog.txt
Normal file
File diff suppressed because it is too large
Load Diff
183
libisoburn/branches/ZeroFiveFour/xorriso/compile_xorriso.sh
Executable file
183
libisoburn/branches/ZeroFiveFour/xorriso/compile_xorriso.sh
Executable file
@ -0,0 +1,183 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# compile_xorriso.sh
|
||||||
|
# Copyright 2005 - 2010 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
|
||||||
|
#
|
||||||
|
# Not intended for general use in production installations !
|
||||||
|
# Rather use: ./bootstrap ; ./configure ; make
|
||||||
|
#
|
||||||
|
# This is a development tool which expects a special setup of directories
|
||||||
|
# on a Linux system (e.g. SuSE 10.2).
|
||||||
|
# It is to be executed in a common parent of the directories given with
|
||||||
|
# $isofs $isoburn $burn $xorr
|
||||||
|
|
||||||
|
isofs=./nglibisofs-develop/libisofs/libisofs_libisofs_la-
|
||||||
|
isofs_filter=./nglibisofs-develop/libisofs/filters/libisofs_libisofs_la-
|
||||||
|
burn=./libburn-develop/libburn
|
||||||
|
isoburn=./libisoburn-develop/libisoburn
|
||||||
|
xorr=./libisoburn-develop/xorriso
|
||||||
|
|
||||||
|
debug_opts="-O2"
|
||||||
|
def_opts="-DXorriso_allow_external_filterS"
|
||||||
|
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
||||||
|
do_strip=0
|
||||||
|
static_opts=
|
||||||
|
warn_opts="-Wall"
|
||||||
|
nglibisofs=1
|
||||||
|
def_libreadline="-DXorriso_with_readlinE"
|
||||||
|
link_libreadline="-lreadline"
|
||||||
|
link_libcdio=
|
||||||
|
|
||||||
|
for i in "$@"
|
||||||
|
do
|
||||||
|
if test "$i" = "-do_diet"
|
||||||
|
then
|
||||||
|
def_opts="$def_opts -DXorriso_no_helP"
|
||||||
|
warn_opts=
|
||||||
|
elif test "$i" = "-do_strip"
|
||||||
|
then
|
||||||
|
do_strip=1
|
||||||
|
elif test "$i" = "-g"
|
||||||
|
then
|
||||||
|
debug_opts="-g -O0"
|
||||||
|
elif test "$i" = "-no_libreadline"
|
||||||
|
then
|
||||||
|
def_libreadline=""
|
||||||
|
link_libreadline=""
|
||||||
|
elif test "$i" = "-dvd_obs_64k"
|
||||||
|
then
|
||||||
|
def_opts="$def_opts -DXorriso_dvd_obs_default_64K"
|
||||||
|
elif test "$i" = "-use_libcdio"
|
||||||
|
then
|
||||||
|
link_libcdio="-lcdio"
|
||||||
|
elif test "$i" = "-help" -o "$i" = "--help" -o "$i" = "-h"
|
||||||
|
then
|
||||||
|
echo \
|
||||||
|
"$xorr/compile_xorriso.sh : to be executed above top level directories"
|
||||||
|
echo "Options:"
|
||||||
|
echo " -dvd_obs_64k 64 KB default size for DVD/BD writing."
|
||||||
|
echo " -no_libreadline do not compile for and link with libreadline."
|
||||||
|
echo " -use_libcdio link with -lcdio because libburn uses it."
|
||||||
|
echo " -do_diet produce capability reduced lean version."
|
||||||
|
echo " -do_strip apply program strip to compiled programs."
|
||||||
|
echo " -g produce debuggable programm."
|
||||||
|
echo " -static compile with cc option -static."
|
||||||
|
exit 0
|
||||||
|
elif test "$i" = "-static"
|
||||||
|
then
|
||||||
|
static_opts="-static"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
libisofs=
|
||||||
|
libisofs="$libisofs $isofs"buffer.o
|
||||||
|
libisofs="$libisofs $isofs"builder.o
|
||||||
|
libisofs="$libisofs $isofs"data_source.o
|
||||||
|
libisofs="$libisofs $isofs"ecma119.o
|
||||||
|
libisofs="$libisofs $isofs"ecma119_tree.o
|
||||||
|
libisofs="$libisofs $isofs"eltorito.o
|
||||||
|
libisofs="$libisofs $isofs"filesrc.o
|
||||||
|
libisofs="$libisofs $isofs"fs_image.o
|
||||||
|
libisofs="$libisofs $isofs"fs_local.o
|
||||||
|
libisofs="$libisofs $isofs"fsource.o
|
||||||
|
libisofs="$libisofs $isofs"image.o
|
||||||
|
libisofs="$libisofs $isofs"iso1999.o
|
||||||
|
libisofs="$libisofs $isofs"joliet.o
|
||||||
|
libisofs="$libisofs $isofs"libiso_msgs.o
|
||||||
|
libisofs="$libisofs $isofs"messages.o
|
||||||
|
libisofs="$libisofs $isofs"node.o
|
||||||
|
libisofs="$libisofs $isofs"rockridge.o
|
||||||
|
libisofs="$libisofs $isofs"rockridge_read.o
|
||||||
|
libisofs="$libisofs $isofs"stream.o
|
||||||
|
libisofs="$libisofs $isofs"tree.o
|
||||||
|
libisofs="$libisofs $isofs"util.o
|
||||||
|
libisofs="$libisofs $isofs"util_htable.o
|
||||||
|
libisofs="$libisofs $isofs"util_rbtree.o
|
||||||
|
libisofs="$libisofs $isofs"system_area.o
|
||||||
|
libisofs="$libisofs $isofs"make_isohybrid_mbr.o
|
||||||
|
libisofs="$libisofs $isofs"aaip_0_2.o
|
||||||
|
libisofs="$libisofs $isofs"filter.o
|
||||||
|
libisofs="$libisofs $isofs_filter"external.o
|
||||||
|
libisofs="$libisofs $isofs_filter"zisofs.o
|
||||||
|
libisofs="$libisofs $isofs_filter"gzip.o
|
||||||
|
libisofs="$libisofs $isofs"md5.o
|
||||||
|
|
||||||
|
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
|
||||||
|
|
||||||
|
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >"$xorr"/xorriso_buildstamp.h
|
||||||
|
echo "Build timestamp : $(sed -e 's/#define Xorriso_build_timestamP "//' -e 's/"$//' "$xorr"/xorriso_buildstamp.h)"
|
||||||
|
|
||||||
|
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts $link_libcdio"
|
||||||
|
cc -I. -DXorriso_with_maiN $def_libreadline \
|
||||||
|
$warn_opts \
|
||||||
|
$static_opts \
|
||||||
|
$debug_opts \
|
||||||
|
$def_opts \
|
||||||
|
$largefile_opts \
|
||||||
|
\
|
||||||
|
-o "$xorr"/xorriso \
|
||||||
|
\
|
||||||
|
"$xorr"/xorriso.c \
|
||||||
|
\
|
||||||
|
"$xorr"/xorrisoburn.c \
|
||||||
|
\
|
||||||
|
"$burn"/async.o \
|
||||||
|
"$burn"/debug.o \
|
||||||
|
"$burn"/drive.o \
|
||||||
|
"$burn"/file.o \
|
||||||
|
"$burn"/init.o \
|
||||||
|
"$burn"/options.o \
|
||||||
|
"$burn"/source.o \
|
||||||
|
"$burn"/structure.o \
|
||||||
|
\
|
||||||
|
"$burn"/sg.o \
|
||||||
|
"$burn"/write.o \
|
||||||
|
"$burn"/read.o \
|
||||||
|
"$burn"/libdax_audioxtr.o \
|
||||||
|
"$burn"/libdax_msgs.o \
|
||||||
|
"$burn"/cleanup.o \
|
||||||
|
\
|
||||||
|
"$burn"/mmc.o \
|
||||||
|
"$burn"/sbc.o \
|
||||||
|
"$burn"/spc.o \
|
||||||
|
"$burn"/util.o \
|
||||||
|
\
|
||||||
|
"$burn"/sector.o \
|
||||||
|
"$burn"/toc.o \
|
||||||
|
\
|
||||||
|
"$burn"/crc.o \
|
||||||
|
"$burn"/ecma130ab.o \
|
||||||
|
\
|
||||||
|
"$isoburn"/isoburn.o \
|
||||||
|
"$isoburn"/burn_wrap.o \
|
||||||
|
"$isoburn"/data_source.o \
|
||||||
|
"$isoburn"/isofs_wrap.o \
|
||||||
|
\
|
||||||
|
$libisofs \
|
||||||
|
\
|
||||||
|
$link_libreadline \
|
||||||
|
$link_libcdio \
|
||||||
|
\
|
||||||
|
-lpthread \
|
||||||
|
-lacl \
|
||||||
|
-lz
|
||||||
|
|
||||||
|
ret=$?
|
||||||
|
if test "$ret" = 0
|
||||||
|
then
|
||||||
|
dummy=dummy
|
||||||
|
else
|
||||||
|
echo >&2
|
||||||
|
echo "+++ FATAL : Compilation of xorriso failed" >&2
|
||||||
|
echo >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test "$do_strip" = 1
|
||||||
|
then
|
||||||
|
echo "stripping result $xorr/xorriso"
|
||||||
|
strip "$xorr"/xorriso
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 'done.'
|
295
libisoburn/branches/ZeroFiveFour/xorriso/configure_ac.txt
Normal file
295
libisoburn/branches/ZeroFiveFour/xorriso/configure_ac.txt
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
|
||||||
|
# configure.ac stems from xorriso/configure_ac.txt and leads to ./configure
|
||||||
|
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
# Provided under GPL version 2 or later.
|
||||||
|
|
||||||
|
AC_INIT([xorriso], [0.5.3], [http://libburnia-project.org])
|
||||||
|
AC_PREREQ([2.50])
|
||||||
|
dnl AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
AC_CANONICAL_TARGET
|
||||||
|
|
||||||
|
LIBBURNIA_SET_FLAGS
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([subdir-objects])
|
||||||
|
|
||||||
|
BURN_MAJOR_VERSION=0
|
||||||
|
BURN_MINOR_VERSION=8
|
||||||
|
BURN_MICRO_VERSION=1
|
||||||
|
AC_SUBST(BURN_MAJOR_VERSION)
|
||||||
|
AC_SUBST(BURN_MINOR_VERSION)
|
||||||
|
AC_SUBST(BURN_MICRO_VERSION)
|
||||||
|
|
||||||
|
LIBISOFS_MAJOR_VERSION=0
|
||||||
|
LIBISOFS_MINOR_VERSION=6
|
||||||
|
LIBISOFS_MICRO_VERSION=31
|
||||||
|
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||||
|
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||||
|
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||||
|
|
||||||
|
dnl The API version codes are defined in libisoburn/libisoburn.h
|
||||||
|
dnl #define isoburn_header_version_*
|
||||||
|
|
||||||
|
|
||||||
|
AC_PREFIX_DEFAULT([/usr/local])
|
||||||
|
test "$prefix" = "NONE" && prefix=$ac_default_prefix
|
||||||
|
|
||||||
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
AC_C_BIGENDIAN
|
||||||
|
|
||||||
|
dnl Large file support
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
AC_FUNC_FSEEKO
|
||||||
|
AC_CHECK_FUNC([fseeko])
|
||||||
|
if test ! $ac_cv_func_fseeko; then
|
||||||
|
AC_ERROR([Libburn requires largefile support.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test x$XORRISO_OLD_ICONV_CONFIGURE = x
|
||||||
|
then
|
||||||
|
|
||||||
|
dnl ts B00410 : To detect the need for -liconv and const argument of iconv()
|
||||||
|
LIBBURNIA_CHECK_ICONV
|
||||||
|
dnl ts B00411 : To abort configuration if iconv() still cannot be compiled
|
||||||
|
LIBBURNIA_ASSERT_ICONV
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
dnl Outdated: produces double -liconv and warnings about parameter mismatch
|
||||||
|
dnl If iconv(3) is in an extra libiconv, then it gets added to variable LIBS.
|
||||||
|
dnl If not, then no -liconv will be added.
|
||||||
|
AC_CHECK_LIB(iconv, iconv, , )
|
||||||
|
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||||
|
AC_CHECK_LIB(iconv, libiconv, , )
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
AC_SUBST(LIBTOOL_DEPS)
|
||||||
|
LIBTOOL="$LIBTOOL --silent"
|
||||||
|
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS()
|
||||||
|
|
||||||
|
AC_CHECK_MEMBER([struct tm.tm_gmtoff],
|
||||||
|
[AC_DEFINE(HAVE_TM_GMTOFF, 1,
|
||||||
|
[Define this if tm structure includes a tm_gmtoff entry.])],
|
||||||
|
,
|
||||||
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard timegm() function is available
|
||||||
|
AC_CHECK_DECL([timegm],
|
||||||
|
[AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])],
|
||||||
|
,
|
||||||
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard eaccess() function is available
|
||||||
|
AC_CHECK_DECL([eaccess],
|
||||||
|
[AC_DEFINE(HAVE_EACCESS, 1, [Define this if eaccess function is available])],
|
||||||
|
,
|
||||||
|
[#include <unistd.h>])
|
||||||
|
|
||||||
|
THREAD_LIBS=-lpthread
|
||||||
|
AC_SUBST(THREAD_LIBS)
|
||||||
|
|
||||||
|
TARGET_SHIZZLE
|
||||||
|
AC_SUBST(ARCH)
|
||||||
|
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||||
|
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||||
|
|
||||||
|
dnl ts A90303
|
||||||
|
dnl Check the preconditions for using statvfs() in sg-dummy
|
||||||
|
dnl (sg-linux and sg-freebsd use statvfs() unconditionally)
|
||||||
|
STATVFS_DEF=-DLibburn_os_has_statvfS
|
||||||
|
AC_CHECK_HEADER(sys/statvfs.h, X=, STATVFS_DEF=)
|
||||||
|
AC_CHECK_FUNC([statvfs], X=, STATVFS_DEF=)
|
||||||
|
CFLAGS="$CFLAGS $STATVFS_DEF"
|
||||||
|
|
||||||
|
|
||||||
|
dnl Add compiler-specific flags
|
||||||
|
|
||||||
|
dnl See if the user wants aggressive optimizations of the code
|
||||||
|
AC_ARG_ENABLE(debug,
|
||||||
|
[ --enable-debug Disable aggressive optimizations [default=yes]],
|
||||||
|
, enable_debug=yes)
|
||||||
|
if test x$enable_debug != xyes; then
|
||||||
|
if test x$GCC = xyes; then
|
||||||
|
CFLAGS="$CFLAGS -O3"
|
||||||
|
CFLAGS="$CFLAGS -fexpensive-optimizations"
|
||||||
|
fi
|
||||||
|
CFLAGS="$CFLAGS -DNDEBUG"
|
||||||
|
else
|
||||||
|
if test x$GCC = xyes; then
|
||||||
|
CFLAGS="$CFLAGS -g -pedantic -Wall"
|
||||||
|
fi
|
||||||
|
CFLAGS="$CFLAGS -DDEBUG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
dnl Determine target directory for libisoburn-*.pc
|
||||||
|
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||||
|
dnl
|
||||||
|
LIBBURNIA_SET_PKGCONFIG
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(libreadline,
|
||||||
|
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||||
|
, enable_libreadline=yes)
|
||||||
|
if test x$enable_libreadline = xyes; then
|
||||||
|
dnl Check whether there is readline-devel and readline-runtime.
|
||||||
|
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||||
|
READLINE_DEF="-DXorriso_with_readlinE"
|
||||||
|
|
||||||
|
if test x$XORRISO_OLD_READLINE_CONFIGURE = x
|
||||||
|
then
|
||||||
|
|
||||||
|
dnl ts B00411 : To disable readline if not all needed functions are present
|
||||||
|
LIBBURNIA_ASSERT_READLINE
|
||||||
|
|
||||||
|
else
|
||||||
|
dnl The empty yes case obviously causes -lreadline to be linked
|
||||||
|
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||||
|
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||||
|
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
READLINE_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(READLINE_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(libacl,
|
||||||
|
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
|
||||||
|
, enable_libacl=yes)
|
||||||
|
if test x$enable_libacl = xyes; then
|
||||||
|
dnl Check whether there is libacl-devel and libacl-runtime.
|
||||||
|
dnl If not, erase this macro which would enable use of acl_to_text and others
|
||||||
|
LIBACL_DEF="-DLibisofs_with_aaip_acL"
|
||||||
|
dnl The empty yes case obviously causes -lacl to be linked
|
||||||
|
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
|
||||||
|
else
|
||||||
|
LIBACL_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBACL_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(xattr,
|
||||||
|
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
|
||||||
|
, enable_xattr=yes)
|
||||||
|
if test x$enable_xattr = xyes; then
|
||||||
|
dnl Check whether there is the header for GNU/Linux xattr.
|
||||||
|
dnl If not, erase this macro which would enable use of listxattr and others
|
||||||
|
XATTR_DEF="-DLibisofs_with_aaip_xattR"
|
||||||
|
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
|
||||||
|
else
|
||||||
|
XATTR_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(XATTR_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(zlib,
|
||||||
|
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
|
||||||
|
, enable_zlib=yes)
|
||||||
|
if test x$enable_zlib = xyes; then
|
||||||
|
dnl Check whether there is the header for zlib.
|
||||||
|
dnl If not, erase this macro which would enable use of compress2() and others.
|
||||||
|
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
|
||||||
|
dnl compressBound(). So compressBound is the more modern thing to test.
|
||||||
|
dnl The empty parameter after "compressBound" causes -lz.
|
||||||
|
ZLIB_DEF="-DLibisofs_with_zliB"
|
||||||
|
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
|
||||||
|
else
|
||||||
|
ZLIB_DEF=
|
||||||
|
fi
|
||||||
|
AC_SUBST(ZLIB_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(libcdio,
|
||||||
|
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
|
||||||
|
, enable_libcdio=no)
|
||||||
|
if test x$enable_libcdio = xyes; then
|
||||||
|
dnl Check whether there is libcdio-devel and libcdio-runtime.
|
||||||
|
dnl If not, erase this macro
|
||||||
|
LIBCDIO_DEF="-DLibburn_use_libcdiO"
|
||||||
|
dnl The empty yes case obviously causes -lcdio to be linked
|
||||||
|
AC_CHECK_HEADER(cdio/cdio.h, AC_CHECK_LIB(cdio, mmc_last_cmd_sense, , LIBCDIO_DEF= ), LIBCDIO_DEF= )
|
||||||
|
else
|
||||||
|
LIBCDIO_DEF=
|
||||||
|
fi
|
||||||
|
if test x$LIBCDIO_DEF = x
|
||||||
|
then
|
||||||
|
if test x$enable_libcdio = xyes
|
||||||
|
then
|
||||||
|
echo "WARNING: could not enable use of libcdio as system adapter"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
|
||||||
|
|
||||||
|
LIBCDIO_REQUIRED=0.83
|
||||||
|
PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBCDIO_DEF)
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(external-filters,
|
||||||
|
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
|
||||||
|
, enable_external_filters=yes)
|
||||||
|
if test x"$enable_external_filters" = xyes; then
|
||||||
|
EXTF_DEF="-DXorriso_allow_external_filterS"
|
||||||
|
echo "enabled xorriso external filter programs"
|
||||||
|
else
|
||||||
|
EXTF_DEF=
|
||||||
|
echo "disabled xorriso external filter programs"
|
||||||
|
fi
|
||||||
|
AC_SUBST(EXTF_DEF)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(external-filters-setuid,
|
||||||
|
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
|
||||||
|
, enable_external_filters_setuid=no)
|
||||||
|
if test x$enable_external_filters_setuid = xyes; then
|
||||||
|
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||||
|
echo "enabled xorriso external filter programs under setuid"
|
||||||
|
else
|
||||||
|
EXTF_SUID_DEF=
|
||||||
|
echo "disabled xorriso external filter programs under setuid"
|
||||||
|
fi
|
||||||
|
AC_SUBST(EXTF_SUID_DEF)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(dvd-obs-64k,
|
||||||
|
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
|
||||||
|
, enable_dvd_obs=no)
|
||||||
|
if test x$enable_dvd_obs_64k = xyes; then
|
||||||
|
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
|
||||||
|
echo "enabled xorriso write size default 64 KB on DVD and BD"
|
||||||
|
else
|
||||||
|
XORRISO_DVD_OBS_64K=
|
||||||
|
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||||
|
fi
|
||||||
|
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(track-src-odirect,
|
||||||
|
[ --enable-track-src-odirect Enable use of O_DIRECT with -as cdrskin, default=no],
|
||||||
|
, enable_track_src_odirect=no)
|
||||||
|
if test x$enable_track_src_odirect = xyes; then
|
||||||
|
LIBBURN_O_DIRECT_DEF="-DLibburn_read_o_direcT"
|
||||||
|
echo "enabled use of O_DIRECT with input of -as cdrskin"
|
||||||
|
else
|
||||||
|
LIBBURN_O_DIRECT_DEF=
|
||||||
|
echo "disabled use of O_DIRECT with input of -as cdrskin"
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBBURN_O_DIRECT_DEF)
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([
|
||||||
|
Makefile
|
||||||
|
version.h
|
||||||
|
])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
# xorriso.pc
|
117
libisoburn/branches/ZeroFiveFour/xorriso/convert_man_to_html.sh
Executable file
117
libisoburn/branches/ZeroFiveFour/xorriso/convert_man_to_html.sh
Executable file
@ -0,0 +1,117 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# convert_man_to_html.sh - ts A80118
|
||||||
|
#
|
||||||
|
# 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>/\ <BR><b>Overview of features:<\/b>/' \
|
||||||
|
-e 's/<b>General information paragraphs:<\/b>/\ <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>/\ <BR><b>Session model:<\/b>/' \
|
||||||
|
-e 's/<b>Media types and states:<\/b>/\ <BR><b>Media types and states:<\/b>/' \
|
||||||
|
-e 's/<b>Creating, Growing, Modifying, Blind/\ <BR><b>Creating, Growing, Modifying, Blind/' \
|
||||||
|
-e 's/<b>Libburn drives:<\/b>/\ <BR><b>Libburn drives:<\/b>/' \
|
||||||
|
-e 's/^-dev /\ \ -dev /' \
|
||||||
|
-e 's/^-devices /\ \ -devices /' \
|
||||||
|
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\ <BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
|
||||||
|
-e 's/<b>Command processing:<\/b>/\ <BR><b>Command processing:<\/b>/' \
|
||||||
|
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\ <BR><b>Dialog, Readline, Result pager:<\/b>/' \
|
||||||
|
-e 's/<b>Aquiring source and target drive:<\/b>/\ <BR><b>Aquiring source and target drive:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Influencing the behavior of image/\ <BR><b>Influencing the behavior of image/' \
|
||||||
|
-e 's/<b>Inserting files into ISO image:<\/b>/\ <BR><b>Inserting files into ISO image:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>File manipulations:<\/b>/\ <BR><b>File manipulations:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Tree traversal command -find:<\/b>/\ <BR><b>Tree traversal command -find:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/^<p><b>−iso_rr_pattern/<p>\ <BR><b>\−iso_rr_pattern/' \
|
||||||
|
-e 's/EXAMPLES):<br>/<A HREF="#EXAMPLES">EXAMPLES<\/A>):<br>/' \
|
||||||
|
-e 's/<b>Filters for data file content:<\/b>/\ <BR><b>Filters for data file content:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Writing the result, drive control:<\/b>/\ <BR><b>Writing the result, drive control:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/^-find \/ /\ \ -find \/ /' \
|
||||||
|
-e 's/<b>Settings for file insertion:<\/b>/\ <BR><b>Settings for file insertion:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/^$<\/b> ln -s/\ \ $<\/b> ln -s/' \
|
||||||
|
-e 's/<b>Settings for result writing:<\/b>/\ <BR><b>Settings for result writing:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/^706k = 706kB/\ \ 706k = 706kB/' \
|
||||||
|
-e 's/^5540k = 5540kB/\ \ 5540k = 5540kB/' \
|
||||||
|
-e 's/<b>Character sets:<\/b>/\ <BR><b>Character sets:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Exception processing:<\/b>/\ <BR><b>Exception processing:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>El Torito bootable ISO images:<\/b>/\ <BR><b>El Torito bootable ISO images:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Dialog mode control:<\/b>/\ <BR><b>Dialog mode control:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Drive and media related inquiry actions:<\/b>/\ <BR><b>Drive and media related inquiry actions:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Navigation in ISO image/\ <BR><b>Navigation in ISO image/' \
|
||||||
|
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Evaluation of readability and recovery:<\/b>/\ <BR><b>Evaluation of readability and recovery:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>osirrox ISO-to-disk restore options:<\/b>/\ <BR><b>osirrox ISO-to-disk restore options:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Command compatibility emulations:<\/b>/\ <BR><b>Command compatibility emulations:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/^<p><b>−as</<p>\ <BR><b>\−as</' \
|
||||||
|
-e 's/<b>Scripting, dialog and/\ <BR><b>Scripting, dialog and/' \
|
||||||
|
-e 's/^features:<\/b>/features:<\/b><BR>\ <BR>/' \
|
||||||
|
-e 's/<b>Support for frontend/\ <BR><b>Support for frontend/' \
|
||||||
|
-e 's/^listening at stdout:<\/b>/listening at stdout:<\/b><BR>\ <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 \\ \’\/pictures\/\*private\*\’ \\/\/sounds\/indecent \’\/pictures\/*private*\’ /' \
|
||||||
|
-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
|
10
libisoburn/branches/ZeroFiveFour/xorriso/make_docs.sh
Executable file
10
libisoburn/branches/ZeroFiveFour/xorriso/make_docs.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Produce man page xorriso/xorriso.1 and info file xorriso/xorriso.info
|
||||||
|
# from base file xorris/xorriso.texi.
|
||||||
|
|
||||||
|
( cd xorriso ; makeinfo ./xorriso.texi )
|
||||||
|
|
||||||
|
xorriso/make_xorriso_1 -auto
|
||||||
|
|
||||||
|
|
9
libisoburn/branches/ZeroFiveFour/xorriso/make_timestamp.sh
Executable file
9
libisoburn/branches/ZeroFiveFour/xorriso/make_timestamp.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Create version timestamp xorriso/xorriso_timestamp.h
|
||||||
|
# to be executed within ./libisoburn-develop
|
||||||
|
|
||||||
|
timestamp="$(date -u '+%Y.%m.%d.%H%M%S')"
|
||||||
|
echo "Version timestamp : $timestamp"
|
||||||
|
echo '#define Xorriso_timestamP "'"$timestamp"'"' >xorriso/xorriso_timestamp.h
|
||||||
|
|
329
libisoburn/branches/ZeroFiveFour/xorriso/make_xorriso_1.c
Normal file
329
libisoburn/branches/ZeroFiveFour/xorriso/make_xorriso_1.c
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
( cd xorriso ; cc -g -Wall -o make_xorriso_1 make_xorriso_1.c )
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1.
|
||||||
|
|
||||||
|
The conversion rules are described at the beginning of xorriso/xorriso.texi
|
||||||
|
|
||||||
|
Copyright 2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||||
|
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* The conversion state
|
||||||
|
*/
|
||||||
|
struct Mx1 {
|
||||||
|
|
||||||
|
char prog[4096];
|
||||||
|
|
||||||
|
int count_in;
|
||||||
|
int count_out;
|
||||||
|
|
||||||
|
int skipping; /* <0 stacked skipping , 0= no , >0 counting down */
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int Mx1_init(struct Mx1 *m, char *prog, int flag)
|
||||||
|
{
|
||||||
|
strncpy(m->prog, prog, sizeof(m->prog) - 1);
|
||||||
|
m->prog[sizeof(m->prog) - 1]= 0;
|
||||||
|
m->count_in= 0;
|
||||||
|
m->count_out= 0;
|
||||||
|
m->skipping= 0;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Mx1_report_error(struct Mx1 *m, char *text, int flag)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s : line %d : %s\n", m->prog, m->count_in, text);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Mx1__get_word(char *line, char word[256], char **remainder, int flag)
|
||||||
|
{
|
||||||
|
char *cpt, *start;
|
||||||
|
int l;
|
||||||
|
|
||||||
|
word[0]= 0;
|
||||||
|
*remainder= NULL;
|
||||||
|
for(cpt= line; *cpt != 0 && isspace(*cpt); cpt++);
|
||||||
|
if(*cpt == 0)
|
||||||
|
return(0);
|
||||||
|
start= cpt;
|
||||||
|
for(cpt= line; *cpt != 0 && ! isspace(*cpt); cpt++);
|
||||||
|
l= cpt - start;
|
||||||
|
if(l > 0)
|
||||||
|
strncpy(word, start, l);
|
||||||
|
word[l]= 0;
|
||||||
|
*remainder= cpt;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int Mx1_substitute(struct Mx1 *m, char line_in[256], char line_out[256],
|
||||||
|
int raw, int flag)
|
||||||
|
{
|
||||||
|
char *rpt, *wpt, *ept;
|
||||||
|
int l;
|
||||||
|
|
||||||
|
wpt= line_out;
|
||||||
|
for(rpt= line_in; *rpt != 0; rpt++) {
|
||||||
|
if(rpt - line_in < raw) {
|
||||||
|
*(wpt++)= *rpt;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(*rpt == '@') {
|
||||||
|
if(strncmp(rpt, "@strong{", 8) == 0) {
|
||||||
|
/* @strong{-...} gets mapped to \fB\-...\fR . */;
|
||||||
|
/* @strong{... } gets mapped to \fB...\fR . */
|
||||||
|
ept= strchr(rpt, '}');
|
||||||
|
if(ept == NULL) {
|
||||||
|
Mx1_report_error(m, "No closing bracket found for '@strong{'", 0);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
l= ept - rpt - 8;
|
||||||
|
if((wpt - line_out) + l + 6 + (rpt[8] == '-') > 255)
|
||||||
|
goto overflow;
|
||||||
|
strcpy(wpt, "\\fB");
|
||||||
|
wpt+= 3;
|
||||||
|
if(rpt[8] == '-')
|
||||||
|
*(wpt++)= '\\';
|
||||||
|
strncpy(wpt, rpt + 8, l);
|
||||||
|
wpt+= l;
|
||||||
|
strcpy(wpt, "\\fR");
|
||||||
|
wpt+= 3;
|
||||||
|
rpt+= ept - rpt;
|
||||||
|
} else if(strncmp(rpt, "@minus{}", 8) == 0) {
|
||||||
|
/* @minus{} will become "-". */
|
||||||
|
if((wpt - line_out) + 1 > 255)
|
||||||
|
goto overflow;
|
||||||
|
*(wpt++)= '-';
|
||||||
|
rpt+= 7;
|
||||||
|
} else if(strncmp(rpt, "@@", 2) == 0 ||
|
||||||
|
strncmp(rpt, "@{", 2) == 0 ||
|
||||||
|
strncmp(rpt, "@}", 2) == 0) {
|
||||||
|
/* @@ , @{, @} will get stripped of their first @. */
|
||||||
|
*(wpt++)= *(rpt + 1);
|
||||||
|
rpt++;
|
||||||
|
}
|
||||||
|
} else if(*rpt == '\\') {
|
||||||
|
/* "\" becomes "\\" */
|
||||||
|
if((wpt - line_out) + 2 > 255)
|
||||||
|
goto overflow;
|
||||||
|
*(wpt++)= '\\';
|
||||||
|
*(wpt++)= '\\';
|
||||||
|
} else if((wpt - line_out) + 1 > 255) {
|
||||||
|
overflow:;
|
||||||
|
Mx1_report_error(m, "Line length overflow while text substitution", 0);
|
||||||
|
return(-1);
|
||||||
|
} else
|
||||||
|
*(wpt++)= *rpt;
|
||||||
|
}
|
||||||
|
*wpt= 0;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
@return 1= line_out is valid, 0= do not put out line_out, -1 = error
|
||||||
|
*/
|
||||||
|
int Mx1_convert(struct Mx1 *m, char line_in[256], char line_out[256], int flag)
|
||||||
|
{
|
||||||
|
int l, num, keep= 0, ret, raw;
|
||||||
|
char word[256], buf[256], *remainder;
|
||||||
|
|
||||||
|
m->count_in++;
|
||||||
|
l= strlen(line_in);
|
||||||
|
|
||||||
|
if(m->skipping > 0) {
|
||||||
|
m->skipping--;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The first line gets discarded. */
|
||||||
|
if(m->count_in == 1)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
/* Line start "@c man " will become "", the remainder is put out unaltered. */
|
||||||
|
if(strncmp(line_in, "@c man ", 7) == 0) {
|
||||||
|
strcpy(line_out, line_in + 7);
|
||||||
|
m->count_out++;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lines "@*" will be converted to ".br" */
|
||||||
|
if(strcmp(line_in, "@*") == 0) {
|
||||||
|
strcpy(line_out, ".br");
|
||||||
|
m->count_out++;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @c man-ignore-lines N will discard N following lines.
|
||||||
|
"@c man-ignore-lines begin" discards all following lines
|
||||||
|
up to "@c man-ignore-lines end".
|
||||||
|
*/
|
||||||
|
if(strncmp(line_in, "@c man-ignore-lines ", 20) == 0) {
|
||||||
|
if(strcmp(line_in + 20, "begin") == 0) {
|
||||||
|
m->skipping--;
|
||||||
|
return(0);
|
||||||
|
} else if(strcmp(line_in + 20, "end") == 0) {
|
||||||
|
if(m->skipping < 0)
|
||||||
|
m->skipping++;
|
||||||
|
return(0);
|
||||||
|
} else if(m->skipping == 0) {
|
||||||
|
num= 0;
|
||||||
|
sscanf(line_in + 20, "%d", &num);
|
||||||
|
if(num > 0) {
|
||||||
|
m->skipping= num;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Mx1_report_error(m, "Inappropriate use of '@c man-ignore-lines'", 0);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Line blocks of "@menu" "@end menu" will be discarded. */
|
||||||
|
if(strcmp(line_in, "@menu") == 0) {
|
||||||
|
m->skipping--;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
if(strcmp(line_in, "@end menu") == 0) {
|
||||||
|
if(m->skipping < 0)
|
||||||
|
m->skipping++;
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
if(m->skipping)
|
||||||
|
return(0);
|
||||||
|
|
||||||
|
/* "@item -word words" becomes "\fB\-word\fR words". */
|
||||||
|
/* "@item word words" becomes "\fBword\fR words". */
|
||||||
|
if(strncmp(line_in, "@item ", 6) == 0) {
|
||||||
|
ret= Mx1__get_word(line_in + 6, word, &remainder, 0);
|
||||||
|
if(ret <= 0) {
|
||||||
|
Mx1_report_error(m, "Found no word after @item", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
strcpy(buf, "\\fB");
|
||||||
|
if(word[0] == '-') {
|
||||||
|
if(l >= 255) {
|
||||||
|
Mx1_report_error(m, "Line length overflow while converting @item", 0);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
strcat(buf, "\\");
|
||||||
|
}
|
||||||
|
strcat(buf, word);
|
||||||
|
strcat(buf, "\\fR");
|
||||||
|
raw= strlen(buf);
|
||||||
|
strcat(buf, remainder);
|
||||||
|
ret= Mx1_substitute(m, buf, line_out, raw, 0);
|
||||||
|
if(ret <= 0)
|
||||||
|
return(-1);
|
||||||
|
m->count_out++;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @strong{-...} gets mapped to \fB\-...\fR . */
|
||||||
|
/* @strong{... } gets mapped to \fB...\fR . */
|
||||||
|
/* @minus{} will become "-". */
|
||||||
|
/* @@ , @{, @} will get stripped of their first @. */
|
||||||
|
/* "\" becomes "\\" */
|
||||||
|
if(line_in[0] != '@' ||
|
||||||
|
strncmp(line_in, "@strong{", 8) == 0 ||
|
||||||
|
strncmp(line_in, "@minus{}", 8) == 0 ||
|
||||||
|
strncmp(line_in, "@@", 2) == 0 ||
|
||||||
|
strncmp(line_in, "@{", 2) == 0 ||
|
||||||
|
strncmp(line_in, "@}", 2) == 0) {
|
||||||
|
keep= 1;
|
||||||
|
ret= Mx1_substitute(m, line_in, line_out, 0, 0);
|
||||||
|
if(ret <= 0)
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Other lines which begin by "@" will be discarded. */
|
||||||
|
if(! keep) {
|
||||||
|
if(line_in[0] == '@')
|
||||||
|
return(0);
|
||||||
|
strcpy(line_out, line_in);
|
||||||
|
}
|
||||||
|
m->count_out++;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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"};
|
||||||
|
struct Mx1 m;
|
||||||
|
FILE *fp_in= stdin, *fp_out= stdout;
|
||||||
|
|
||||||
|
Mx1_init(&m, argv[0], 0);
|
||||||
|
|
||||||
|
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");
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
for(i= 1; i < argc; i++) {
|
||||||
|
if(strcmp(argv[i], "-filter") == 0)
|
||||||
|
as_filter= 1;
|
||||||
|
else if(strcmp(argv[i], "-auto") == 0)
|
||||||
|
as_filter= 0;
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "%s : unknown option %s\n", argv[0], argv[i]);
|
||||||
|
goto usage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!as_filter) {
|
||||||
|
fp_in= fopen(name_in, "r");
|
||||||
|
if(fp_in == NULL) {
|
||||||
|
fprintf(stderr, "%s : failed to fopen( %s ,r) : %d %s\n",
|
||||||
|
argv[0], name_in, errno, strerror(errno));
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
fp_out= fopen(name_out, "w");
|
||||||
|
if(fp_out == NULL) {
|
||||||
|
fprintf(stderr, "%s : failed to fopen( %s ,w) : %d %s\n",
|
||||||
|
argv[0], name_out, errno, strerror(errno));
|
||||||
|
exit(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(1) {
|
||||||
|
got= fgets(line_in, sizeof(line_in), fp_in);
|
||||||
|
if(got == NULL)
|
||||||
|
break;
|
||||||
|
l= strlen(line_in);
|
||||||
|
while(l > 0) {
|
||||||
|
if(line_in[l - 1] == '\r' || line_in[l - 1] == '\n') {
|
||||||
|
line_in[l - 1] = 0;
|
||||||
|
l--;
|
||||||
|
} else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ret= Mx1_convert(&m, line_in, line_out, 0);
|
||||||
|
if(ret < 0)
|
||||||
|
exit(1);
|
||||||
|
if(ret == 0)
|
||||||
|
continue;
|
||||||
|
fprintf(fp_out, "%s\n", line_out);
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
299
libisoburn/branches/ZeroFiveFour/xorriso/make_xorriso_standalone.sh
Executable file
299
libisoburn/branches/ZeroFiveFour/xorriso/make_xorriso_standalone.sh
Executable file
@ -0,0 +1,299 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# make_xorriso_standalone.sh
|
||||||
|
# Copyright 2008 - 2010 Thomas Schmitt, scdbackup@gmx.net, GPLv2+
|
||||||
|
#
|
||||||
|
# Not intended for general use in production installations !
|
||||||
|
#
|
||||||
|
# This is a development tool which expects a special setup of directories.
|
||||||
|
# It is to be executed in a common parent of the directories
|
||||||
|
# nglibisofs-develop libburn-develop libisoburn-develop
|
||||||
|
# where tarballs or repository copies have been installed of
|
||||||
|
# libisofs libburn libisoburn
|
||||||
|
# obtained by following instructions on http://libburnia-project.org.
|
||||||
|
#
|
||||||
|
# It creates a new directory tree
|
||||||
|
# xorriso-standalone
|
||||||
|
# for building GNU xorriso.
|
||||||
|
#
|
||||||
|
# The ./bootstrap script gets applied and a source tarball
|
||||||
|
# is made.
|
||||||
|
#
|
||||||
|
# From that tree can be build a binary xorriso/xorriso which at runtime
|
||||||
|
# does not depend on installed libburnia libraries.
|
||||||
|
# Execute in xorriso-standalone :
|
||||||
|
#
|
||||||
|
# ./configure && make
|
||||||
|
#
|
||||||
|
|
||||||
|
# By the variable setting create_gnu_xorriso="yes"
|
||||||
|
# the result will become a GNU xorriso tarball under GPLv3+.
|
||||||
|
# Without this setting, the result is technically equivalent but
|
||||||
|
# stays under GPLv2+. In that case the files xorriso/*_gnu_xorriso
|
||||||
|
# are merely informative.
|
||||||
|
# Note that it is not permissible to revert the transition from
|
||||||
|
# GPLv2+ to GPLv3+. (Rather derive a new GPLv2+ from libburnia.)
|
||||||
|
|
||||||
|
create_gnu_xorriso="yes"
|
||||||
|
|
||||||
|
|
||||||
|
current_dir=$(pwd)
|
||||||
|
lone_dir="$current_dir"/"xorriso-standalone"
|
||||||
|
|
||||||
|
xorriso_rev=0.5.3
|
||||||
|
# For unstable uploads and patch level 0 of stable releases:
|
||||||
|
xorriso_pl=""
|
||||||
|
# For higher patch levels of stable releases:
|
||||||
|
## xorriso_pl=".pl01"
|
||||||
|
|
||||||
|
with_bootstrap_tarball=1
|
||||||
|
|
||||||
|
create_dir() {
|
||||||
|
if mkdir "$1"
|
||||||
|
then
|
||||||
|
dummy=dummy
|
||||||
|
else
|
||||||
|
echo "Failed to create : $1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
goto_dir() {
|
||||||
|
if cd "$1"
|
||||||
|
then
|
||||||
|
dummy=dummy
|
||||||
|
else
|
||||||
|
echo "Failed to cd $1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_files() {
|
||||||
|
if cp "$@"
|
||||||
|
then
|
||||||
|
dummy=dummy
|
||||||
|
else
|
||||||
|
echo "Failed to : cp " "$@" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if test -e "$lone_dir"
|
||||||
|
then
|
||||||
|
echo "Already existing : $lone_dir" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Top level directory
|
||||||
|
|
||||||
|
goto_dir "$current_dir"/libisoburn-develop
|
||||||
|
|
||||||
|
create_dir "$lone_dir"
|
||||||
|
|
||||||
|
copy_files \
|
||||||
|
AUTHORS \
|
||||||
|
CONTRIBUTORS \
|
||||||
|
COPYRIGHT \
|
||||||
|
COPYING \
|
||||||
|
INSTALL \
|
||||||
|
acinclude.m4 \
|
||||||
|
aclocal.m4 \
|
||||||
|
bootstrap \
|
||||||
|
compile \
|
||||||
|
config.guess \
|
||||||
|
config.status \
|
||||||
|
config.sub \
|
||||||
|
depcomp \
|
||||||
|
install-sh \
|
||||||
|
libtool \
|
||||||
|
ltmain.sh \
|
||||||
|
missing \
|
||||||
|
mkinstalldirs \
|
||||||
|
version.h.in \
|
||||||
|
\
|
||||||
|
"$lone_dir"
|
||||||
|
|
||||||
|
copy_files xorriso/configure_ac.txt "$lone_dir"/configure.ac
|
||||||
|
|
||||||
|
copy_files xorriso/xorriso_makefile_am.txt "$lone_dir"/Makefile.am
|
||||||
|
|
||||||
|
# copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
|
||||||
|
|
||||||
|
# echo "See end of xorriso/changelog.txt" >"$lone_dir"/TODO
|
||||||
|
|
||||||
|
|
||||||
|
# libisoburn
|
||||||
|
|
||||||
|
create_dir "$lone_dir"/libisoburn
|
||||||
|
copy_files \
|
||||||
|
libisoburn/*.[ch] \
|
||||||
|
"$lone_dir"/libisoburn
|
||||||
|
|
||||||
|
xorriso/convert_man_to_html.sh
|
||||||
|
|
||||||
|
create_dir "$lone_dir"/xorriso
|
||||||
|
copy_files \
|
||||||
|
xorriso/xorrisoburn.[ch] \
|
||||||
|
xorriso/xorriso.[ch] \
|
||||||
|
xorriso/xorriso_private.h \
|
||||||
|
\
|
||||||
|
xorriso/xorriso_timestamp.h \
|
||||||
|
\
|
||||||
|
xorriso/changelog.txt \
|
||||||
|
xorriso/xorriso_eng.html \
|
||||||
|
xorriso/xorriso.texi \
|
||||||
|
xorriso/xorriso.info \
|
||||||
|
xorriso/make_xorriso_1.c \
|
||||||
|
xorriso/xorriso.1 \
|
||||||
|
xorriso/man_1_xorriso.html \
|
||||||
|
"$lone_dir"/xorriso
|
||||||
|
|
||||||
|
copy_files xorriso/xorriso_buildstamp_none.h \
|
||||||
|
"$lone_dir"/xorriso/xorriso_buildstamp.h
|
||||||
|
copy_files xorriso/xorriso_buildstamp_none.h \
|
||||||
|
"$lone_dir"/xorriso/xorriso_buildstamp_none.h
|
||||||
|
|
||||||
|
create_dir "$lone_dir"/test
|
||||||
|
copy_files \
|
||||||
|
test/compare_file.c \
|
||||||
|
"$lone_dir"/test/compare_file.c
|
||||||
|
|
||||||
|
|
||||||
|
# nglibisofs
|
||||||
|
|
||||||
|
create_dir "$lone_dir"/libisofs
|
||||||
|
create_dir "$lone_dir"/libisofs/filters
|
||||||
|
create_dir "$lone_dir"/doc
|
||||||
|
goto_dir "$current_dir"/nglibisofs-develop
|
||||||
|
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
|
||||||
|
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
|
||||||
|
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
|
||||||
|
copy_files doc/zisofs_format.txt "$lone_dir"/doc
|
||||||
|
copy_files doc/checksums.txt "$lone_dir"/doc
|
||||||
|
copy_files COPYRIGHT "$lone_dir"/libisofs
|
||||||
|
test -e CONTRIBUTORS && cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
|
||||||
|
|
||||||
|
# To get a common version.h
|
||||||
|
cat version.h.in >> "$lone_dir"/version.h.in
|
||||||
|
|
||||||
|
|
||||||
|
# <<< obsoleted patchings
|
||||||
|
|
||||||
|
if test 1 = 0
|
||||||
|
then
|
||||||
|
|
||||||
|
# Change GNU macro name to POSIX name
|
||||||
|
sed -e 's/FNM_FILE_NAME/FNM_PATHNAME/g' \
|
||||||
|
<libisofs/tree.c >"$lone_dir"/libisofs/tree.c
|
||||||
|
|
||||||
|
# Filter out the semi-illegal TODO comments
|
||||||
|
( cd "$lone_dir"/libisofs && grep '^[[:space:]]*//' *.[ch] | less )
|
||||||
|
echo "Is it ok delete all shown //-lines ?"
|
||||||
|
read yesno
|
||||||
|
if test "$yesno" = "y" -o "$yesno" = "1"
|
||||||
|
then
|
||||||
|
for i in "$lone_dir"/libisofs/*.[ch]
|
||||||
|
do
|
||||||
|
# first copy attributes
|
||||||
|
cp "$i" "$lone_dir"/libisofs/tmpfile
|
||||||
|
# now filter away // lines
|
||||||
|
grep -v '^[[:space:]]*//' <"$i" >"$lone_dir"/libisofs/tmpfile && \
|
||||||
|
mv "$lone_dir"/libisofs/tmpfile "$i"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
echo "Remaining // lines:"
|
||||||
|
( cd "$lone_dir"/libisofs && grep '//' *.[ch] )
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# libburn
|
||||||
|
|
||||||
|
create_dir "$lone_dir"/libburn
|
||||||
|
goto_dir "$current_dir"/libburn-develop
|
||||||
|
copy_files libburn/*.[ch] "$lone_dir"/libburn
|
||||||
|
copy_files COPYRIGHT "$lone_dir"/libburn
|
||||||
|
cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
|
||||||
|
|
||||||
|
# Delete a source module of yet unclear ancestry.
|
||||||
|
# The build process will avoid to use it.
|
||||||
|
rm "$lone_dir"/libburn/crc.c
|
||||||
|
|
||||||
|
|
||||||
|
# To get a common version.h
|
||||||
|
cat version.h.in >> "$lone_dir"/version.h.in
|
||||||
|
|
||||||
|
# Decision about legal situation
|
||||||
|
goto_dir "$current_dir"/libisoburn-develop
|
||||||
|
if test "$create_gnu_xorriso" = "yes"
|
||||||
|
then
|
||||||
|
copy_files xorriso/README_gnu_xorriso "$lone_dir"/README
|
||||||
|
copy_files xorriso/COPYRIGHT_gnu_xorriso "$lone_dir"/COPYRIGHT
|
||||||
|
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
|
||||||
|
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.c >"$lone_dir"/xorriso/xorriso.c
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
copy_files README "$lone_dir"/README
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# tarball
|
||||||
|
|
||||||
|
if test "$with_bootstrap_tarball" = 1
|
||||||
|
then
|
||||||
|
|
||||||
|
tarball_dir="$current_dir"/xorriso-"$xorriso_rev""$xorriso_pl"
|
||||||
|
mv "$lone_dir" "$tarball_dir"
|
||||||
|
|
||||||
|
goto_dir "$tarball_dir"
|
||||||
|
|
||||||
|
./bootstrap
|
||||||
|
|
||||||
|
# Remove unneeded temporary data from ./bootstrap
|
||||||
|
rm -r ./autom4te.cache
|
||||||
|
|
||||||
|
# Repair non-portable shell code output of ./bootstrap
|
||||||
|
(
|
||||||
|
cd "$compile_dir" || exit 1
|
||||||
|
sed -e 's/^for ac_header in$/test -z 1 \&\& for ac_header in dummy/' \
|
||||||
|
< ./configure > ./configure-repaired
|
||||||
|
if test "$?" = 0
|
||||||
|
then
|
||||||
|
echo "$0: Empty 'for ac_header in' found in configure." >&2
|
||||||
|
fi
|
||||||
|
mv ./configure-repaired ./configure
|
||||||
|
chmod a+rx,go-w,u+w ./configure
|
||||||
|
)
|
||||||
|
|
||||||
|
if test "$create_gnu_xorriso" = "yes"
|
||||||
|
then
|
||||||
|
# ftp-upload@gnu.org rejects Makefile.in with a dangerous chmod on make dist
|
||||||
|
sed -e 's/-perm -777 -exec chmod a+rwx/-perm -755 -exec chmod u+rwx,go+rx/' \
|
||||||
|
< Makefile.in > new_Makefile.in
|
||||||
|
|
||||||
|
mv new_Makefile.in Makefile.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cd "$current_dir"
|
||||||
|
tar czf ./xorriso-"$xorriso_rev""$xorriso_pl".tar.gz $(basename "$tarball_dir")
|
||||||
|
|
||||||
|
ls -l $(pwd)/xorriso-"$xorriso_rev""$xorriso_pl".tar.gz
|
||||||
|
|
||||||
|
mv "$tarball_dir" "$lone_dir"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done"
|
||||||
|
echo "HINT: Now build xorriso/xorriso by:"
|
||||||
|
echo " cd '$lone_dir' && ./configure && make"
|
||||||
|
echo
|
@ -0,0 +1,197 @@
|
|||||||
|
|
||||||
|
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||||
|
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||||
|
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||||
|
|
||||||
|
libincludedir=$(includedir)/libisoburn
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libisoburn/libisoburn.la libxorriso/libxorriso.la
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Build libraries
|
||||||
|
libisoburn_libisoburn_la_LDFLAGS = \
|
||||||
|
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||||
|
libisoburn_libisoburn_la_SOURCES = \
|
||||||
|
libisoburn/burn_wrap.c \
|
||||||
|
libisoburn/data_source.c \
|
||||||
|
libisoburn/isoburn.c \
|
||||||
|
libisoburn/isoburn.h \
|
||||||
|
libisoburn/isofs_wrap.c \
|
||||||
|
libisoburn/libisoburn.h \
|
||||||
|
version.h
|
||||||
|
|
||||||
|
libisoburn_libisoburn_la_LIBADD = \
|
||||||
|
-lisofs \
|
||||||
|
-lburn
|
||||||
|
|
||||||
|
libxorriso_libxorriso_la_LDFLAGS = \
|
||||||
|
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||||
|
libxorriso_libxorriso_la_SOURCES = \
|
||||||
|
xorriso/xorriso.h \
|
||||||
|
xorriso/xorriso_private.h \
|
||||||
|
xorriso/xorriso.c \
|
||||||
|
xorriso/xorrisoburn.h \
|
||||||
|
xorriso/xorrisoburn.c \
|
||||||
|
xorriso/xorriso_timestamp.h \
|
||||||
|
xorriso/xorriso_buildstamp.h \
|
||||||
|
version.h
|
||||||
|
|
||||||
|
libxorriso_libxorriso_la_LIBADD = \
|
||||||
|
-lisofs \
|
||||||
|
-lburn \
|
||||||
|
-lisoburn
|
||||||
|
|
||||||
|
libinclude_HEADERS = \
|
||||||
|
libisoburn/libisoburn.h \
|
||||||
|
xorriso/xorriso.h
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
|
||||||
|
# This is the reference application of libisoburn. See man xorriso/xorriso.1
|
||||||
|
#
|
||||||
|
bin_PROGRAMS = \
|
||||||
|
xorriso/xorriso
|
||||||
|
|
||||||
|
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||||
|
#
|
||||||
|
# Trying to create a build timestamp file
|
||||||
|
#
|
||||||
|
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||||
|
#
|
||||||
|
# phony targets get rebuilt every time
|
||||||
|
#
|
||||||
|
# .PHONY: xorriso/xorriso_buildstamp.h
|
||||||
|
# xorriso/xorriso_buildstamp.h:
|
||||||
|
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
# cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
|
||||||
|
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN -DXorriso_without_subS \
|
||||||
|
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||||
|
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||||
|
$(XORRISO_DVD_OBS_64K)
|
||||||
|
|
||||||
|
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||||
|
libxorriso/libxorriso.la \
|
||||||
|
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||||
|
|
||||||
|
xorriso_xorriso_SOURCES = \
|
||||||
|
xorriso/xorriso.h \
|
||||||
|
xorriso/xorriso_private.h \
|
||||||
|
xorriso/xorriso.c \
|
||||||
|
xorriso/xorrisoburn.h \
|
||||||
|
xorriso/xorriso_timestamp.h \
|
||||||
|
xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
# xorriso/xorrisoburn.c \
|
||||||
|
#
|
||||||
|
|
||||||
|
# Install symbolic links to the xorriso binary
|
||||||
|
#
|
||||||
|
install-exec-hook:
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
|
||||||
|
|
||||||
|
|
||||||
|
# Alternative to the disabled .PHONY above.
|
||||||
|
# Trying to create a build timestamp file semi-manually: make buildstamped
|
||||||
|
#
|
||||||
|
buildstamp:
|
||||||
|
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
# For now make buildstamped has to be performed explicitely.
|
||||||
|
buildstamped: buildstamp
|
||||||
|
make
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Build test applications
|
||||||
|
noinst_PROGRAMS = \
|
||||||
|
test/compare_file
|
||||||
|
|
||||||
|
# A program to compare two files in mirrored trees in mounted filesystems
|
||||||
|
# To compare tree /media/dvd and /original/dir :
|
||||||
|
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
|
||||||
|
#
|
||||||
|
test_compare_file_CPPFLAGS =
|
||||||
|
test_compare_file_CFLAGS =
|
||||||
|
test_compare_file_LDADD =
|
||||||
|
test_compare_file_SOURCES = test/compare_file.c
|
||||||
|
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
## Build documentation (You need Doxygen for this to work)
|
||||||
|
webhost = http://libburn-api.pykix.org
|
||||||
|
webpath = /
|
||||||
|
docdir = $(DESTDIR)$(prefix)/share/doc/$(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
doc: doc/html
|
||||||
|
|
||||||
|
doc/html: doc/doxygen.conf
|
||||||
|
if [ -f ./doc/doc.lock ]; then \
|
||||||
|
$(RM) -r doc/html; \
|
||||||
|
doxygen doc/doxygen.conf; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
doc-upload: doc/html
|
||||||
|
scp -r $</* $(webhost):$(webpath)
|
||||||
|
|
||||||
|
all: doc
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
if [ -f ./doc/doc.lock ]; then \
|
||||||
|
$(mkinstalldirs) $(docdir)/html; \
|
||||||
|
$(INSTALL_DATA) doc/html/* $(docdir)/html; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
uninstall-local:
|
||||||
|
rm -rf $(docdir)
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Indent source files
|
||||||
|
indent_files = \
|
||||||
|
$(libisoburn_libisoburn_la_SOURCES)
|
||||||
|
|
||||||
|
|
||||||
|
indent: $(indent_files)
|
||||||
|
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
|
||||||
|
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
|
||||||
|
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
|
||||||
|
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
|
||||||
|
$^
|
||||||
|
|
||||||
|
.PHONY: indent
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Extra things
|
||||||
|
nodist_pkgconfig_DATA = \
|
||||||
|
libisoburn-1.pc
|
||||||
|
|
||||||
|
man_MANS = xorriso/xorriso.1
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
libisoburn-1.pc.in \
|
||||||
|
version.h.in \
|
||||||
|
doc/comments \
|
||||||
|
doc/doxygen.conf.in \
|
||||||
|
README \
|
||||||
|
AUTHORS \
|
||||||
|
CONTRIBUTORS \
|
||||||
|
COPYRIGHT \
|
||||||
|
COPYING \
|
||||||
|
INSTALL \
|
||||||
|
xorriso/changelog.txt \
|
||||||
|
xorriso/xorriso_buildstamp_none.h \
|
||||||
|
xorriso/README \
|
||||||
|
$(man_MANS)
|
||||||
|
|
3988
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.1
Normal file
3988
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.1
Normal file
File diff suppressed because it is too large
Load Diff
21347
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.c
Normal file
21347
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.c
Normal file
File diff suppressed because it is too large
Load Diff
1020
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.h
Normal file
1020
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.h
Normal file
File diff suppressed because it is too large
Load Diff
4079
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.info
Normal file
4079
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.info
Normal file
File diff suppressed because it is too large
Load Diff
4874
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.texi
Normal file
4874
libisoburn/branches/ZeroFiveFour/xorriso/xorriso.texi
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,3 @@
|
|||||||
|
#ifndef Xorriso_build_timestamP
|
||||||
|
#define Xorriso_build_timestamP "-none-given-"
|
||||||
|
#endif
|
@ -0,0 +1,3 @@
|
|||||||
|
#ifndef Xorriso_build_timestamP
|
||||||
|
#define Xorriso_build_timestamP "-none-given-"
|
||||||
|
#endif
|
673
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_eng.html
Normal file
673
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_eng.html
Normal file
@ -0,0 +1,673 @@
|
|||||||
|
<HTML>
|
||||||
|
|
||||||
|
<HEAD>
|
||||||
|
<META NAME="description" CONTENT="GNU xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
|
||||||
|
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, GNU/Linux, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, BD-R, scdbackup">
|
||||||
|
<META NAME="robots" CONTENT="follow">
|
||||||
|
<TITLE>GNU xorriso - GNU Project - Free Software Foundation</TITLE>
|
||||||
|
<LINK rev="made" href="mailto:webmasters@gnu.org">
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000 ALINK=#A000A0>
|
||||||
|
<FONT SIZE=+1>
|
||||||
|
|
||||||
|
<CENTER>
|
||||||
|
<P>
|
||||||
|
<H1>GNU xorriso</H1>
|
||||||
|
|
||||||
|
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for GNU/Linux and FreeBSD</H2>
|
||||||
|
</P>
|
||||||
|
</CENTER>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H2>Purpose:</H2>
|
||||||
|
xorriso copies file objects from POSIX compliant filesystems
|
||||||
|
into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||||||
|
session-wise manipulation of such filesystems. It can load the management
|
||||||
|
information of existing ISO images and it writes the session results to
|
||||||
|
optical media or to filesystem objects.
|
||||||
|
<BR>
|
||||||
|
Vice versa xorriso is able to copy file objects out of ISO 9660 filesystems.
|
||||||
|
</P>
|
||||||
|
<P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<A HREF="#download">Direct hop to download links -></A>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H2>Hardware requirements:</H2>
|
||||||
|
About any CD, DVD, or BD recorder produced in the recent ten years.
|
||||||
|
<BR>
|
||||||
|
<A HREF="http://libburnia-project.org">libburn</A>
|
||||||
|
supports recorders which are compliant to standards MMC-1 for CD and
|
||||||
|
MMC-5 for DVD or BD.
|
||||||
|
<BR>
|
||||||
|
GNU/Linux and FreeBSD allow to access drives connected
|
||||||
|
via SCSI, PATA (aka IDE, ATA), USB, or SATA.
|
||||||
|
<BR>
|
||||||
|
xorriso also operates on ISO images in data files or block devices.
|
||||||
|
Images or add-on sessions may be written to about any kind of file object.
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H2>Software requirements :</H2>
|
||||||
|
<DL>
|
||||||
|
<DT>GNU/Linux with kernel 2.4 or higher, libc, libpthread :</DT>
|
||||||
|
<DD>With kernel 2.4 a PATA/IDE drive has to be under ide-scsi emulation.</DD>
|
||||||
|
<DD>With kernel 2.6 ide-scsi is not needed.</DD>
|
||||||
|
<DT>or FreeBSD, libc, libpthread :</DT>
|
||||||
|
<DD>PATA/IDE drives need atapicam running.</DD>
|
||||||
|
<DD>SATA drives need atapicam or ahci running.</DD>
|
||||||
|
<DD>libcam has to be installed.</DD>
|
||||||
|
<DD>libiconv has to be installed.</DD>
|
||||||
|
<DT>or some other X/Open system, libc, libpthread :</DT>
|
||||||
|
<DD>
|
||||||
|
There will be no direct operation of optical drives, but only POSIX i/o
|
||||||
|
with objects of the local filesystem.
|
||||||
|
</DD>
|
||||||
|
<DD>
|
||||||
|
Might work with DVD-RAM, DVD+RW, BD-RE
|
||||||
|
but rather not with CD, DVD-R, DVD+R, BD-R.
|
||||||
|
</DD>
|
||||||
|
</DL>
|
||||||
|
|
||||||
|
<H3>Optional supporting software:</H2>
|
||||||
|
<DL>
|
||||||
|
<DT>libreadline and libreadline-dev</DT>
|
||||||
|
<DD>eventually make dialog more convenient.</DD>
|
||||||
|
<DT>libacl and libacl-devel</DT>
|
||||||
|
<DD>eventually allow on GNU/Linux to get and set ACLs.</DD>
|
||||||
|
<DT>zlib and zlib-devel</DT>
|
||||||
|
<DD>eventually allow zisofs and gzip compression.</DD>
|
||||||
|
</DL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
This program has been tested on GNU/Linux, FreeBSD, and Solaris systems.<BR>
|
||||||
|
For ports to other usable systems <A HREF="#contact">contact us</A>.
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H2>Special features:</H2>
|
||||||
|
<UL>
|
||||||
|
<LI>
|
||||||
|
ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Operates on an existing ISO image or creates a new one.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Copies files from filesystem into the ISO image and vice versa.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Changes file properties, renames or deletes file objects in the ISO image.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Updates ISO subtrees incrementally to match given disk subtrees.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can record and restore hard link relations, ACL, and xattr.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can attach MD5 checksums to each data file and the whole session.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
File content may get zisofs or gzip compressed or filtered by external
|
||||||
|
processes.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Writes result as completely new image or as add-on session
|
||||||
|
to optical media or filesystem objects.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can activate ISOLINUX and GRUB boot images by El Torito boot record.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can issue commands to mount older sessions on GNU/Linux or FreeBSD.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Can check media for damages and copy readable blocks to disk.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Scans for optical drives, blanks re-useable optical media, formats media.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Suitable for:
|
||||||
|
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-R, BD-RE.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Reads its instructions from command line arguments, dialog, and batch files.
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
Provides navigation commands for interactive ISO image manipulation.
|
||||||
|
</LI>
|
||||||
|
|
||||||
|
</UL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H2>Command Examples:</H2>
|
||||||
|
<DL>
|
||||||
|
|
||||||
|
<DT>Get an overview of drives and their addresses</DT>
|
||||||
|
<DD>#<KBD> xorriso -devices</KBD></DD>
|
||||||
|
<DD><KBD>...</KBD></DD>
|
||||||
|
<DD><KBD>0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'</KBD></DD>
|
||||||
|
<DD><KBD>1 -dev '/dev/scd1' rwrw-- : 'PHILIPS ' 'SPD3300L'</KBD></DD>
|
||||||
|
<DD><KBD>2 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'</KBD></DD>
|
||||||
|
<DD><KBD>...</KBD></DD>
|
||||||
|
<DT>Being superuser avoids permission problems with /dev/srN resp. /dev/hdX .
|
||||||
|
</DT>
|
||||||
|
<DT>Ordinary users should then get granted rw access to the /dev files
|
||||||
|
as listed by option -devices.</DT>
|
||||||
|
<DT> </DT>
|
||||||
|
|
||||||
|
<DT>Options are either performed as program arguments or as dialog input.
|
||||||
|
Some options have a parameter list of variable length. This list has to
|
||||||
|
be terminated by word '--' or by the end of the input line. Option -add
|
||||||
|
may accept pathspecs of form target=source as known from program mkisofs.</DT>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<DT>Get info about a particular drive and loaded media:</DT>
|
||||||
|
<DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD>
|
||||||
|
|
||||||
|
<DT>Make re-usable media writable again, delete any ISO 9660 image,
|
||||||
|
eventually prepare yet unused BD-RE:</DT>
|
||||||
|
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed -eject all</KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>Write some directories into a new or existing ISO 9660 image:</DT>
|
||||||
|
<DD>$<KBD> xorriso -dev /dev/sr0 -add /home/me/sounds /home/me/pictures
|
||||||
|
</KBD></DD>
|
||||||
|
|
||||||
|
<DT>Have a look at the result:</DT>
|
||||||
|
<DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>Create new ISO-9660 filesystem image, compose content,
|
||||||
|
adjust permissions to make it publicly read-only,
|
||||||
|
write it to media and immediately eject media without
|
||||||
|
previously reloading the written image.
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> cd /home/me</KBD></DD>
|
||||||
|
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
|
||||||
|
<DD><KBD> -map /home/me/sounds /sounds \</KBD></DD>
|
||||||
|
<DD><KBD> -map /home/me/pictures /pictures \</KBD></DD>
|
||||||
|
<DD><KBD> -rm_r /sounds/indecent '/pictures/*private*' -- \</KBD></DD>
|
||||||
|
<DD><KBD> -cd / \</KBD></DD>
|
||||||
|
<DD><KBD> -add pictures/private/horses* -- \</KBD></DD>
|
||||||
|
<DD><KBD> -chmod_r a+r,a-w / -- \</KBD></DD>
|
||||||
|
<DD><KBD> -find / -type d -exec chmod a+x -- \</KBD></DD>
|
||||||
|
<DD><KBD> -volid SOUNDS_PICS_2008_01_16 \</KBD></DD>
|
||||||
|
<DD><KBD> -commit_eject all</KBD></DD>
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>Load the previous session from media,
|
||||||
|
remove (i.e. hide) directory /sounds,
|
||||||
|
rename /pictures/private/horses,
|
||||||
|
add new directory trees /sounds and /movies,
|
||||||
|
disallow any access for group and others.
|
||||||
|
Finally write as additional session to media and eject:</DT>
|
||||||
|
<DD>$<KBD> xorriso -dev /dev/sr0 \</KBD></DD>
|
||||||
|
<DD><KBD> -rm_r /sounds -- \</KBD></DD>
|
||||||
|
<DD><KBD> -mv /pictures/private/horses /horse_show -- \</KBD></DD>
|
||||||
|
<DD><KBD> -map /home/me/prepared_for_dvd/sounds_dummy /sounds \</KBD></DD>
|
||||||
|
<DD><KBD> -map /home/me/prepared_for_dvd/movies /movies \</KBD></DD>
|
||||||
|
<DD><KBD> -chmod_r go-rwx / -- \</KBD></DD>
|
||||||
|
<DD><KBD> -volid SOUNDS_PICS_2008_01_17 \</KBD></DD>
|
||||||
|
<DD><KBD> -commit_eject all</KBD></DD>
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>Merge the various sessions from old readable media into a single session
|
||||||
|
on new writeable media,
|
||||||
|
cleaning out all invalidated files and session overhead.
|
||||||
|
Touch / in order to mark the image as worth to be written.
|
||||||
|
<BR>
|
||||||
|
Important: -indev and -outdev have to be different drives.
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -indev /dev/dvd \</KBD></DD>
|
||||||
|
<DD><KBD> -alter_date a +0 / -- \</KBD></DD>
|
||||||
|
<DD><KBD> -outdev /dev/sr0 -blank fast \</KBD></DD>
|
||||||
|
<DD><KBD> -commit_eject all</KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>Dialog mode accepts one or more options per line. An option and all its
|
||||||
|
arguments have to be given in one single line. Backslash may be used to mark
|
||||||
|
a line as incomplete so it gets continued by the next input line.
|
||||||
|
<BR>
|
||||||
|
Command -end stops the program run. It will write eventually pending changes
|
||||||
|
to media, if that has not already been done by a previous -commit.</DT>
|
||||||
|
<DD>$<KBD> xorriso -dialog on</KBD></DD>
|
||||||
|
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||||
|
<DD><KBD><B>-dev /dev/sr0</B></KBD></DD>
|
||||||
|
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||||
|
<DD><KBD><B>-map /home/me/prepared_for_dvd/sounds_dummy /sounds</B></KBD></DD>
|
||||||
|
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||||
|
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies \</B></KBD></DD>
|
||||||
|
<DD><KBD>Trailing backslash : Enter rest of line (or @@@ to clear it) :
|
||||||
|
</KBD></DD>
|
||||||
|
<DD><KBD><B> /movies</B></KBD></DD>
|
||||||
|
<DD>Available navigation commands: -cd, -ls, -du, -find</DD>
|
||||||
|
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||||
|
<DD><KBD><B>-commit</B></KBD></DD>
|
||||||
|
<DD>... perform further commands and finally do:</DD>
|
||||||
|
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||||
|
<DD><KBD><B>-end</B></KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>The following command performs incremental backup.
|
||||||
|
It can be run on blank media to create a copy of the mentioned disk
|
||||||
|
directory trees, and it can be run on appendable media to perform a
|
||||||
|
minimal set of change operations which update the old ISO copies
|
||||||
|
to match the new disk trees.
|
||||||
|
Older states can be retrieved by help of mount options like "sbsector="
|
||||||
|
or by help of xorriso option -mount.
|
||||||
|
<BR>
|
||||||
|
Eventual ACL, xattr and hardlink relations will be recorded. MD5 checksums
|
||||||
|
will be computed and recorded. Data comparison will be avoided by accelerator
|
||||||
|
option -disk_dev_ino. After writing, the new session will be checked
|
||||||
|
by its recorded MD5.
|
||||||
|
<BR>
|
||||||
|
Only blank media or media with volume id "PROJECTS_MAIL_..." will be accepted.
|
||||||
|
Files with names ending by ".o" or ".swp" are excluded by options -not_leaf.
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -for_backup -disk_dev_ino on \</KBD></DD>
|
||||||
|
<DD><KBD> -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD>
|
||||||
|
<DD><KBD> -dev /dev/sr0 \</KBD></DD>
|
||||||
|
<DD><KBD> -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD>
|
||||||
|
<DD><KBD> -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD>
|
||||||
|
<DD><KBD> -update_r /home/thomas/projects /projects \</KBD></DD>
|
||||||
|
<DD><KBD> -update_r /home/thomas/personal_mail /personal_mail \</KBD></DD>
|
||||||
|
<DD><KBD> -commit -toc -check_md5 FAILURE -- -eject all</KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
To apply zisofs compression to those data files which get newly copied from
|
||||||
|
the local filesystem, perform immediately before -commit :
|
||||||
|
<DD><KBD> -hardlinks perform_update \</KBD></DD>
|
||||||
|
<DD>
|
||||||
|
<KBD> -find / -type f -pending_data -exec set_filter --zisofs -- \</KBD></DD>
|
||||||
|
</DD>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
Operating systems usually mount the most recent session on media.
|
||||||
|
xorriso can issue the appropriate mount commands for older sessions.
|
||||||
|
First get an overview of the sessions on the media:
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -outdev /dev/sr0 -toc</KBD></DD>
|
||||||
|
<PRE>
|
||||||
|
TOC layout : Idx , sbsector , Size , Volume Id
|
||||||
|
ISO session : 1 , 0 , 104719s , PROJECTS_MAIL_2008_08_10_231435
|
||||||
|
ISO session : 2 , 106928 , 6785s , PROJECTS_MAIL_2008_08_14_184548
|
||||||
|
...
|
||||||
|
ISO session : 76 , 820384 , 11035s , PROJECTS_MAIL_2009_01_04_191150
|
||||||
|
</PRE>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
Then become superuser and let xorriso mount the session of August 14, 2008
|
||||||
|
to directory /mnt:
|
||||||
|
</DT>
|
||||||
|
<DD>#<KBD>
|
||||||
|
xorriso -osirrox on -mount /dev/sr0 volid '*_2008_08_14_*' /mnt
|
||||||
|
</KBD></DD>
|
||||||
|
<DT>
|
||||||
|
To be later unmounted by: <KBD>umount /mnt</KBD>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
After the user has already created a suitable file tree on disk
|
||||||
|
and copied the ISOLINUX files into subdirectory ./boot/isolinux of
|
||||||
|
that tree, xorriso can burn an El Torito bootable media:
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
|
||||||
|
<DD><KBD> -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD>
|
||||||
|
<DD><KBD> -boot_image isolinux dir=/boot/isolinux</KBD></DD>
|
||||||
|
<DT>
|
||||||
|
An additional MBR is generated if the file isolinux.bin is modern enough
|
||||||
|
(syslinux version 3.72) and ready for "isohybrid". An MBR enables booting
|
||||||
|
from hard disk or USB stick.
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>ISO images may not only be stored on optical media but also in
|
||||||
|
regular disk files or block devices for full multi-session operation.
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -dev /tmp/regular_file ...other.options...</DD>
|
||||||
|
<DT>
|
||||||
|
A default setting for safety reasons requires that files below /dev/
|
||||||
|
need prefix "stdio:" if they do not lead to MMC burner devices.
|
||||||
|
Be cautious not to overwrite your hard disk instead of your USB stick:
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> xorriso -dev stdio:/dev/sdb ...other.options...</DD>
|
||||||
|
|
||||||
|
<DT>Other file types are suitable only for writing but not for reading:</DT>
|
||||||
|
<DD>$<KBD> xorriso -outdev /tmp/named_pipe ...other.options...</DD>
|
||||||
|
|
||||||
|
<DT>In batch mode it is possible to operate xorriso in a pipeline
|
||||||
|
with an external consumer of the generated ISO image. Any message
|
||||||
|
output will be redirected to stderr in this case.
|
||||||
|
Examples for consumers are cdrecord or growisofs on operating systems
|
||||||
|
where xorriso cannot operate the burner drive directly,
|
||||||
|
or a ssh pipe to another system which has the desired drive
|
||||||
|
and a suitable burn program.</DT>
|
||||||
|
<DD>$<KBD> xorriso -outdev - ...other.options... | consumer</KBD></DD>
|
||||||
|
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
Let xorriso serve underneath growisofs via its alias name "xorrisofs"
|
||||||
|
which enables mkisofs emulation:
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> export MKISOFS="xorrisofs"</KBD></DD>
|
||||||
|
<DD>$<KBD> growisofs -Z /dev/dvd /some/files</KBD></DD>
|
||||||
|
<DD>$<KBD> growisofs -M /dev/dvd /more/files</KBD></DD>
|
||||||
|
<DT>
|
||||||
|
One may switch from mkisofs emulation to xorriso's own command mode:
|
||||||
|
</DT>
|
||||||
|
<DD>$<KBD> growisofs -M /dev/dvd -- outdev - -update_r /my/files /files
|
||||||
|
</KBD></DD>
|
||||||
|
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
<DT>If for any reason the reading operating system mishandles the ISO image
|
||||||
|
or some files in it, one may enable reverse operation of xorriso and copy
|
||||||
|
files or trees to disk:
|
||||||
|
<DD>$<KBD> xorriso -acl on -xattr on \</KBD></DD>
|
||||||
|
<DD><KBD> -indev /dev/sr0 \</KBD></DD>
|
||||||
|
<DD><KBD> -osirrox on \</KBD></DD>
|
||||||
|
<DD><KBD> -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD>
|
||||||
|
<DD><KBD> /home/her/buttercup_dir -- \</KBD>
|
||||||
|
<DD><KBD> -extract /sounds /home/her/sounds_from_me</KBD></DD>
|
||||||
|
</DD>
|
||||||
|
<DT>Consider to enter dialog mode and use commands like
|
||||||
|
<KBD>-cd , -du , -lsl , -find<KBD>.
|
||||||
|
<DT>
|
||||||
|
<HR>
|
||||||
|
</DT>
|
||||||
|
|
||||||
|
|
||||||
|
<DT>Get overview of the options:</DT>
|
||||||
|
<DD>$<KBD> <A HREF="xorriso_help">xorriso -help</A></KBD></DD>
|
||||||
|
|
||||||
|
<DT>Read the detailed manual page:</DT>
|
||||||
|
<DD>$<KBD> <A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD>
|
||||||
|
</DL>
|
||||||
|
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
<A NAME="download"></A>
|
||||||
|
<P>
|
||||||
|
<DL>
|
||||||
|
<DT><H3>Download as source code (see README):</H3></DT>
|
||||||
|
<DD><A HREF="xorriso-0.5.2.tar.gz">xorriso-0.5.2.tar.gz</A>
|
||||||
|
(1560 KB).
|
||||||
|
</DD>
|
||||||
|
<DD>(Released 29 Mar 2010)</DD>
|
||||||
|
<DD><A HREF="xorriso-0.5.2.tar.gz.sig">xorriso-0.5.2.tar.gz.sig</A></DD>
|
||||||
|
<DD>
|
||||||
|
(detached GPG signature for verification by
|
||||||
|
<KBD>gpg --verify xorriso-0.5.2.tar.gz.sig xorriso-0.5.2.tar.gz</KBD>).
|
||||||
|
</DD>
|
||||||
|
<DD>
|
||||||
|
Also on <A HREF="http://www.gnu.org/prep/ftp.html">
|
||||||
|
mirrors of ftp://ftp.gnu.org/gnu/ </A>
|
||||||
|
as xorriso/xorriso-0.5.2.tar.gz
|
||||||
|
</DD>
|
||||||
|
</DL>
|
||||||
|
</DD>
|
||||||
|
</DL>
|
||||||
|
<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="man_1_xorriso.html">man xorriso</A> is the manual page</DD>
|
||||||
|
</DL>
|
||||||
|
<A NAME="contact"></A>
|
||||||
|
<DL><DT>Contact:</DT>
|
||||||
|
<DD>GNU xorriso support mailing list,
|
||||||
|
<A HREF="mailto:bug-xorriso@gnu.org">bug-xorriso@gnu.org</A></DD>
|
||||||
|
<DD>libburnia development mailing list,
|
||||||
|
<A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD>
|
||||||
|
<DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD>
|
||||||
|
</DL>
|
||||||
|
<DL><DT>License:</DT>
|
||||||
|
<DD><A HREF="COPYING_xorriso">GPL version 3 or later.</A>
|
||||||
|
</DD>
|
||||||
|
<DD> </DD>
|
||||||
|
</DL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
Bug fixes towards xorriso-0.5.0:
|
||||||
|
<UL>
|
||||||
|
<LI>- none -</LI>
|
||||||
|
<!--
|
||||||
|
<LI>- none -</LI>
|
||||||
|
-->
|
||||||
|
</UL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<P>
|
||||||
|
Bug fixes towards xorriso-0.5.0:
|
||||||
|
<UL>
|
||||||
|
<LI>
|
||||||
|
</LI>
|
||||||
|
</UL>
|
||||||
|
</P>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<P>
|
||||||
|
Enhancements towards previous stable version xorriso-0.4.8.pl00:
|
||||||
|
<UL>
|
||||||
|
<LI>
|
||||||
|
Manual now based on hybrid format of Texinfo and man-page.
|
||||||
|
Copies included: xorriso.texi, xorriso.info , xorriso.1
|
||||||
|
</LI>
|
||||||
|
<LI>
|
||||||
|
On FreeBSD: support for upcomming SATA driver "ahci"
|
||||||
|
</LI>
|
||||||
|
<!--
|
||||||
|
<LI>- none -</LI>
|
||||||
|
-->
|
||||||
|
</UL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<H3>
|
||||||
|
Libburnia software copies included in GNU xorriso:
|
||||||
|
</H3>
|
||||||
|
<DL>
|
||||||
|
<DT>
|
||||||
|
GNU xorriso is feature-wise equivalent to the dynamic compilation of
|
||||||
|
<A HREF="http://libburnia-project.org/"> libburnia </A>
|
||||||
|
libraries and libburnia program xorriso.
|
||||||
|
It restricts itself to a technical form where the legal commitments of the
|
||||||
|
libburnia project and the legal intentions of
|
||||||
|
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
|
||||||
|
</DT>
|
||||||
|
<DD> </DD>
|
||||||
|
<DT>libburn-0.7.9</DT>
|
||||||
|
<DD>reads and writes data from and to CD, DVD, BD.</DD>
|
||||||
|
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||||
|
developed and maintained since August 2006 by
|
||||||
|
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||||
|
<DT>libisofs-0.6.29</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.5.2</DT>
|
||||||
|
<DD>coordinates libburn and libisofs, emulates multi-session where needed,
|
||||||
|
and hosts the original source code of program xorriso.</DD>
|
||||||
|
<DD>(By Vreixo Formoso and Thomas Schmitt
|
||||||
|
from team of libburnia-project.org)</DD>
|
||||||
|
<DD> </DD>
|
||||||
|
<DT>The source code of this software is independent of
|
||||||
|
cdrecord and mkisofs.</DT>
|
||||||
|
</DL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<DL>
|
||||||
|
<DT><H3>Development snapshot, version 0.5.3 :</H3></DT>
|
||||||
|
<DD>Bug fixes towards xorriso-0.5.2:
|
||||||
|
<UL>
|
||||||
|
<LI>- none yet -</LI>
|
||||||
|
<!--
|
||||||
|
<LI>- none yet -</LI>
|
||||||
|
-->
|
||||||
|
</UL>
|
||||||
|
</DD>
|
||||||
|
<DD>Enhancements towards stable version 0.5.2:
|
||||||
|
<UL>
|
||||||
|
|
||||||
|
<LI>- none yet -</LI>
|
||||||
|
<!--
|
||||||
|
<LI>- none yet -</LI>
|
||||||
|
-->
|
||||||
|
</UL>
|
||||||
|
</DD>
|
||||||
|
<DD> </DD>
|
||||||
|
<DD><A HREF="README_xorriso_devel">README 0.5.3</A>
|
||||||
|
<DD><A HREF="xorriso_help_devel">xorriso_0.5.3 -help</A></DD>
|
||||||
|
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.5.3)</A></DD>
|
||||||
|
<DD> </DD>
|
||||||
|
<DT>If you want to distribute development versions of xorriso, then use
|
||||||
|
this tarball which produces static linking between xorriso and the
|
||||||
|
libburnia libraries.
|
||||||
|
</DT>
|
||||||
|
<DD>Source (./bootstrap is already applied, build tested,
|
||||||
|
installation see README)
|
||||||
|
</DD>
|
||||||
|
<DD>
|
||||||
|
<A HREF="xorriso-0.5.3.tar.gz">xorriso-0.5.3.tar.gz</A>
|
||||||
|
(1560 KB).
|
||||||
|
</DD>
|
||||||
|
<DT>A dynamically linked development version of xorriso can be obtained
|
||||||
|
from repositories of
|
||||||
|
<A HREF="http://libburnia-project.org"> libburnia-project.org</A>.
|
||||||
|
xorriso is part of libisoburn/trunk and will get built by its "make".
|
||||||
|
</DT>
|
||||||
|
<DT>Be warned that the libraries in SVN and bzr are development versions with
|
||||||
|
possibly unstable API/ABI enhancements. Do not distribute development
|
||||||
|
versions for dynamic linking. Only release versions are safe for that.
|
||||||
|
</DT>
|
||||||
|
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libburn/trunk libburn</B>
|
||||||
|
</KBD></DD>
|
||||||
|
<DD>Install: <KBD><B>cd libburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
|
||||||
|
</KBD></DD>
|
||||||
|
<DD>Download:
|
||||||
|
<KBD><B>bzr branch lp:~libburnia-team/libisofs/scdbackup</B></KBD>
|
||||||
|
</DD>
|
||||||
|
<DD>Install: <KBD><B>cd libisofs ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
|
||||||
|
</KBD></DD>
|
||||||
|
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libisoburn/trunk libisoburn</B>
|
||||||
|
</KBD></DD>
|
||||||
|
<DD>Install: <KBD><B>cd libisoburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
|
||||||
|
</KBD></DD>
|
||||||
|
<DT>Build of SVN versions needs <A HREF="http://sources.redhat.com/autobook/">
|
||||||
|
autotools</A> of at least version 1.7 installed.
|
||||||
|
But after the run of <KBD>./bootstrap</KBD>, only
|
||||||
|
vanilla tools like make and gcc are needed.
|
||||||
|
</DT>
|
||||||
|
<DD> </DD>
|
||||||
|
</DL>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
Many thanks to Derek Foreman and Ben Jansens for starting libburn.
|
||||||
|
<BR>
|
||||||
|
Very special thanks to Andy Polyakov whose
|
||||||
|
<A HREF="http://fy.chalmers.se/~appro/linux/DVD+RW/tools">dvd+rw-tools</A>
|
||||||
|
provide the libburnia project with invaluable examples on how to deal
|
||||||
|
with DVD media and how to emulate multi-session on overwriteable media.
|
||||||
|
</P>
|
||||||
|
<HR>
|
||||||
|
|
||||||
|
<P>
|
||||||
|
<CENTER><FONT SIZE=+0>
|
||||||
|
<FONT SIZE=+0>Enjoying free hosting by<BR>
|
||||||
|
<A HREF="http://www.gnu.org">www.gnu.org</A><BR>
|
||||||
|
<A HREF="http://www.webframe.org">www.webframe.org</A><BR>
|
||||||
|
<A HREF="http://sourceforge.net">sourceforge.net</A><BR>
|
||||||
|
|
||||||
|
Enjoying a FreeBSD shell account with the opportunity to
|
||||||
|
build, install and test xorriso at<BR>
|
||||||
|
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
|
||||||
|
</FONT></CENTER>
|
||||||
|
</P>
|
||||||
|
|
||||||
|
<HR>
|
||||||
|
<DL>
|
||||||
|
<DT>Links to related free software projects of Thomas Schmitt:</DT>
|
||||||
|
<DD><A HREF=http://scdbackup.webframe.org/cdrskin_eng.html>
|
||||||
|
cdrskin, a cdrecord emulator</A></DD>
|
||||||
|
<DD><A HREF=http://scdbackup.webframe.org/main_eng.html>
|
||||||
|
scdbackup, multi volume CD/DVD/BD backup</A></DD>
|
||||||
|
<DL><DD><A HREF=http://scdbackup.sourceforge.net/main_eng.html>
|
||||||
|
(a second source of above)</A></DD></DL>
|
||||||
|
</DL>
|
||||||
|
<BR>
|
||||||
|
Legal statement: This website does not serve any commercial purpose.
|
||||||
|
<BR><BR>
|
||||||
|
Copyright © 2008 - 2010 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.
|
||||||
|
If you make use of the license to derive modified versions of xorriso
|
||||||
|
then you are entitled to modify this text under that same license.
|
||||||
|
<DL>
|
||||||
|
<DT>Contact for issues of this web page or the described program:</DT>
|
||||||
|
<DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD>
|
||||||
|
<DD>GNU xorriso support mailing list,
|
||||||
|
<A HREF="mailto:bug-xorriso@gnu.org">bug-xorriso@gnu.org</A></DD>
|
||||||
|
<DD>libburnia development mailing list,
|
||||||
|
<A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD>
|
||||||
|
</DL>
|
||||||
|
</FONT>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
273
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_makefile_am.txt
Normal file
273
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_makefile_am.txt
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
|
||||||
|
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
|
||||||
|
# Provided under GPL version 2 or later.
|
||||||
|
|
||||||
|
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||||
|
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||||
|
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||||
|
|
||||||
|
libincludedir=
|
||||||
|
|
||||||
|
lib_LTLIBRARIES =
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
libinclude_HEADERS =
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
bin_PROGRAMS = \
|
||||||
|
xorriso/xorriso
|
||||||
|
|
||||||
|
xorriso_xorriso_CPPFLAGS = -I./libburn -I./libisofs -I./libisoburn -I./xorriso
|
||||||
|
|
||||||
|
# No readline in the vanilla version because the necessary headers
|
||||||
|
# are in a separate readline-development package.
|
||||||
|
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN \
|
||||||
|
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||||
|
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||||
|
$(LIBCDIO_DEF) \
|
||||||
|
$(XORRISO_DVD_OBS_64K) $(LIBBURN_O_DIRECT_DEF)
|
||||||
|
|
||||||
|
xorriso_xorriso_LDADD = $(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||||
|
#
|
||||||
|
# Trying to create a build timestamp file
|
||||||
|
#
|
||||||
|
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||||
|
# phony targets get rebuilt every time
|
||||||
|
# .PHONY: xorriso/xorriso_buildstamp.h
|
||||||
|
# xorriso/xorriso_buildstamp.h:
|
||||||
|
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
# cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
|
||||||
|
xorriso_xorriso_SOURCES = \
|
||||||
|
\
|
||||||
|
xorriso/xorriso.h \
|
||||||
|
xorriso/xorriso_private.h \
|
||||||
|
xorriso/xorriso.c \
|
||||||
|
xorriso/xorrisoburn.h \
|
||||||
|
xorriso/xorrisoburn.c \
|
||||||
|
xorriso/xorriso_timestamp.h \
|
||||||
|
xorriso/xorriso_buildstamp.h \
|
||||||
|
\
|
||||||
|
libisoburn/libisoburn.h \
|
||||||
|
libisoburn/isoburn.h \
|
||||||
|
libisoburn/isoburn.c \
|
||||||
|
libisoburn/isofs_wrap.c \
|
||||||
|
libisoburn/burn_wrap.c \
|
||||||
|
libisoburn/data_source.c \
|
||||||
|
\
|
||||||
|
libisofs/libisofs.h \
|
||||||
|
libisofs/builder.h \
|
||||||
|
libisofs/builder.c \
|
||||||
|
libisofs/node.h \
|
||||||
|
libisofs/node.c \
|
||||||
|
libisofs/tree.h \
|
||||||
|
libisofs/tree.c \
|
||||||
|
libisofs/image.h \
|
||||||
|
libisofs/image.c \
|
||||||
|
libisofs/iso1999.h \
|
||||||
|
libisofs/iso1999.c \
|
||||||
|
libisofs/fsource.h \
|
||||||
|
libisofs/fsource.c \
|
||||||
|
libisofs/fs_local.c \
|
||||||
|
libisofs/fs_image.c \
|
||||||
|
libisofs/messages.h \
|
||||||
|
libisofs/messages.c \
|
||||||
|
libisofs/libiso_msgs.h \
|
||||||
|
libisofs/libiso_msgs.c \
|
||||||
|
libisofs/stream.h \
|
||||||
|
libisofs/stream.c \
|
||||||
|
libisofs/util.h \
|
||||||
|
libisofs/util.c \
|
||||||
|
libisofs/util_rbtree.c \
|
||||||
|
libisofs/util_htable.c \
|
||||||
|
libisofs/filesrc.h \
|
||||||
|
libisofs/filesrc.c \
|
||||||
|
libisofs/ecma119.h \
|
||||||
|
libisofs/ecma119.c \
|
||||||
|
libisofs/ecma119_tree.h \
|
||||||
|
libisofs/ecma119_tree.c \
|
||||||
|
libisofs/writer.h \
|
||||||
|
libisofs/buffer.h \
|
||||||
|
libisofs/buffer.c \
|
||||||
|
libisofs/rockridge.h \
|
||||||
|
libisofs/rockridge.c \
|
||||||
|
libisofs/rockridge_read.c \
|
||||||
|
libisofs/joliet.h \
|
||||||
|
libisofs/joliet.c \
|
||||||
|
libisofs/eltorito.h \
|
||||||
|
libisofs/eltorito.c \
|
||||||
|
libisofs/data_source.c \
|
||||||
|
libisofs/find.c \
|
||||||
|
libisofs/filter.h \
|
||||||
|
libisofs/filter.c \
|
||||||
|
libisofs/filters/external.c \
|
||||||
|
libisofs/filters/zisofs.c \
|
||||||
|
libisofs/filters/gzip.c \
|
||||||
|
libisofs/system_area.h \
|
||||||
|
libisofs/system_area.c \
|
||||||
|
libisofs/make_isohybrid_mbr.c \
|
||||||
|
libisofs/aaip_0_2.h \
|
||||||
|
libisofs/aaip_0_2.c \
|
||||||
|
libisofs/md5.h \
|
||||||
|
libisofs/md5.c \
|
||||||
|
\
|
||||||
|
libburn/async.c \
|
||||||
|
libburn/async.h \
|
||||||
|
libburn/back_hacks.h \
|
||||||
|
libburn/cleanup.c \
|
||||||
|
libburn/cleanup.h \
|
||||||
|
libburn/crc.h \
|
||||||
|
libburn/debug.c \
|
||||||
|
libburn/debug.h \
|
||||||
|
libburn/drive.c \
|
||||||
|
libburn/drive.h \
|
||||||
|
libburn/ecma130ab.c \
|
||||||
|
libburn/ecma130ab.h \
|
||||||
|
libburn/error.h \
|
||||||
|
libburn/file.c \
|
||||||
|
libburn/file.h \
|
||||||
|
libburn/init.c \
|
||||||
|
libburn/init.h \
|
||||||
|
libburn/libburn.h \
|
||||||
|
libburn/libdax_audioxtr.h \
|
||||||
|
libburn/libdax_audioxtr.c \
|
||||||
|
libburn/libdax_msgs.h \
|
||||||
|
libburn/libdax_msgs.c \
|
||||||
|
libburn/mmc.c \
|
||||||
|
libburn/mmc.h \
|
||||||
|
libburn/null.c \
|
||||||
|
libburn/null.h \
|
||||||
|
libburn/options.c \
|
||||||
|
libburn/options.h \
|
||||||
|
libburn/os.h \
|
||||||
|
libburn/read.c \
|
||||||
|
libburn/read.h \
|
||||||
|
libburn/sbc.c \
|
||||||
|
libburn/sbc.h \
|
||||||
|
libburn/sector.c \
|
||||||
|
libburn/sector.h \
|
||||||
|
libburn/sg.c \
|
||||||
|
libburn/sg.h \
|
||||||
|
libburn/source.h \
|
||||||
|
libburn/source.c \
|
||||||
|
libburn/spc.c \
|
||||||
|
libburn/spc.h \
|
||||||
|
libburn/structure.c \
|
||||||
|
libburn/structure.h \
|
||||||
|
libburn/toc.c \
|
||||||
|
libburn/toc.h \
|
||||||
|
libburn/transport.h \
|
||||||
|
libburn/util.c \
|
||||||
|
libburn/util.h \
|
||||||
|
libburn/write.c \
|
||||||
|
libburn/write.h \
|
||||||
|
\
|
||||||
|
version.h
|
||||||
|
|
||||||
|
# Disabled because unneeded and of unclear ancestry
|
||||||
|
# libburn/crc.c
|
||||||
|
|
||||||
|
noinst_PROGRAMS = \
|
||||||
|
test/compare_file \
|
||||||
|
xorriso/make_xorriso_1
|
||||||
|
|
||||||
|
# A program to compare two trees of files in mounted filesystems
|
||||||
|
# To compare tree /media/dvd and /original/dir :
|
||||||
|
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
|
||||||
|
#
|
||||||
|
test_compare_file_CPPFLAGS =
|
||||||
|
test_compare_file_CFLAGS =
|
||||||
|
test_compare_file_LDADD =
|
||||||
|
test_compare_file_SOURCES = test/compare_file.c
|
||||||
|
|
||||||
|
# Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1
|
||||||
|
#
|
||||||
|
xorriso_make_xorriso_1_CPPFLAGS =
|
||||||
|
xorriso_make_xorriso_1_CFLAGS =
|
||||||
|
xorriso_make_xorriso_1_LDADD =
|
||||||
|
xorriso_make_xorriso_1_SOURCES = xorriso/make_xorriso_1.c
|
||||||
|
|
||||||
|
|
||||||
|
# Install symbolic links to the xorriso binary
|
||||||
|
#
|
||||||
|
install-exec-hook:
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
|
||||||
|
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
|
||||||
|
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Alternative to the disabled .PHONY above.
|
||||||
|
# Trying to create a build timestamp file semi-manually: make buildstamped
|
||||||
|
#
|
||||||
|
buildstamp:
|
||||||
|
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||||
|
cat xorriso/xorriso_buildstamp.h
|
||||||
|
|
||||||
|
# For now make buildstamped has to be performed manually.
|
||||||
|
buildstamped: buildstamp
|
||||||
|
make
|
||||||
|
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Indent source files
|
||||||
|
indent_files =
|
||||||
|
|
||||||
|
|
||||||
|
indent: $(indent_files)
|
||||||
|
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
|
||||||
|
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
|
||||||
|
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
|
||||||
|
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
|
||||||
|
$^
|
||||||
|
|
||||||
|
.PHONY: indent
|
||||||
|
|
||||||
|
## ========================================================================= ##
|
||||||
|
|
||||||
|
# Extra things
|
||||||
|
# nodist_pkgconfig_DATA = \
|
||||||
|
# xorriso.pc
|
||||||
|
|
||||||
|
man_MANS = xorriso/xorriso.1
|
||||||
|
|
||||||
|
info_TEXINFOS = xorriso/xorriso.texi
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
xorriso.pc.in \
|
||||||
|
version.h.in \
|
||||||
|
README \
|
||||||
|
AUTHORS \
|
||||||
|
CONTRIBUTORS \
|
||||||
|
COPYRIGHT \
|
||||||
|
COPYING \
|
||||||
|
INSTALL \
|
||||||
|
xorriso/changelog.txt \
|
||||||
|
xorriso/xorriso_buildstamp_none.h \
|
||||||
|
xorriso/make_docs.sh \
|
||||||
|
$(man_MANS) \
|
||||||
|
doc/susp_aaip_2_0.txt \
|
||||||
|
doc/susp_aaip_isofs_names.txt \
|
||||||
|
doc/zisofs_format.txt \
|
||||||
|
libisofs/aaip-os-dummy.c \
|
||||||
|
libisofs/aaip-os-linux.c \
|
||||||
|
libisofs/aaip-os-freebsd.c \
|
||||||
|
libburn/os-dummy.h \
|
||||||
|
libburn/os-freebsd.h \
|
||||||
|
libburn/os-libcdio.h \
|
||||||
|
libburn/os-linux.h \
|
||||||
|
libburn/sg-dummy.c \
|
||||||
|
libburn/sg-freebsd.c \
|
||||||
|
libburn/sg-libcdio.c \
|
||||||
|
libburn/sg-linux.c
|
||||||
|
|
12
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_pc_in.txt
Normal file
12
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_pc_in.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
libdir=@libdir@
|
||||||
|
includedir=@includedir@
|
||||||
|
|
||||||
|
Name: xorriso
|
||||||
|
Description: ISO 9660 filesystem image manipulator
|
||||||
|
Version: @VERSION@
|
||||||
|
Requires:
|
||||||
|
Libs: -L${libdir} -lpthread
|
||||||
|
Cflags:
|
||||||
|
|
1350
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_private.h
Normal file
1350
libisoburn/branches/ZeroFiveFour/xorriso/xorriso_private.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1 @@
|
|||||||
|
#define Xorriso_timestamP "2010.04.18.141143"
|
13256
libisoburn/branches/ZeroFiveFour/xorriso/xorrisoburn.c
Normal file
13256
libisoburn/branches/ZeroFiveFour/xorriso/xorrisoburn.c
Normal file
File diff suppressed because it is too large
Load Diff
503
libisoburn/branches/ZeroFiveFour/xorriso/xorrisoburn.h
Normal file
503
libisoburn/branches/ZeroFiveFour/xorriso/xorrisoburn.h
Normal file
@ -0,0 +1,503 @@
|
|||||||
|
|
||||||
|
|
||||||
|
/* Adapter to libisoburn, libisofs and libburn for xorriso,
|
||||||
|
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>
|
||||||
|
|
||||||
|
Provided under GPL version 2 or later.
|
||||||
|
|
||||||
|
This file contains the inner isofs- and burn-library interface of xorriso.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef Xorrisoburn_includeD
|
||||||
|
#define Xorrisoburn_includeD yes
|
||||||
|
|
||||||
|
|
||||||
|
/* The minimum version of libisoburn to be used with this version of xorriso
|
||||||
|
*/
|
||||||
|
#define xorriso_libisoburn_req_major 0
|
||||||
|
#define xorriso_libisoburn_req_minor 5
|
||||||
|
#define xorriso_libisoburn_req_micro 3
|
||||||
|
|
||||||
|
|
||||||
|
struct SpotlisT; /* List of intervals with different read qualities */
|
||||||
|
struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= global shutdown of libraries */
|
||||||
|
int Xorriso_detach_libraries(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0=aquire as isoburn input drive
|
||||||
|
bit1=aquire as libburn output drive (as isoburn drive if bit0)
|
||||||
|
@return <=0 failure , 1=success , 2=neither readable or writeable
|
||||||
|
*/
|
||||||
|
int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag);
|
||||||
|
|
||||||
|
int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_write_session(struct XorrisO *xorriso, 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 flag bit0= mkdir: graft in as empty directory, not as copy from disk
|
||||||
|
bit1= do not report added files
|
||||||
|
@return <=0 = error , 1 = added simple node , 2 = added directory
|
||||||
|
*/
|
||||||
|
int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
||||||
|
char *disk_path, char *img_path,
|
||||||
|
off_t offset, off_t cut_size, int flag);
|
||||||
|
|
||||||
|
int Xorriso__text_to_sev(char *severity_name, int *severity_number,int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0=report about output drive
|
||||||
|
bit1=short report form
|
||||||
|
bit2=do not try to read ISO heads
|
||||||
|
bit3=report to info channel (else to result channel)
|
||||||
|
*/
|
||||||
|
int Xorriso_toc(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= no output if no boot record was found
|
||||||
|
bit3= report to info channel (else to result channel)
|
||||||
|
*/
|
||||||
|
int Xorriso_show_boot_info(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_show_devices(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_tell_media_space(struct XorrisO *xorriso,
|
||||||
|
int *media_space, int *free_space, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0=fast , bit1=deformat
|
||||||
|
@return 0=failure, did not touch media , -1=failure, altered media
|
||||||
|
1=success, altered media , 2=success, did not touch media
|
||||||
|
*/
|
||||||
|
int Xorriso_blank_media(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= try to achieve faster formatting
|
||||||
|
bit1= use parameter size (else use default size)
|
||||||
|
bit2= do not re-aquire drive
|
||||||
|
bit7= by_index mode:
|
||||||
|
bit8 to bit15 contain the index of the format to use.
|
||||||
|
@return 0=failure, did not touch media , -1=failure, altered media
|
||||||
|
1=success, altered media , 2=success, did not touch media
|
||||||
|
*/
|
||||||
|
int Xorriso_format_media(struct XorrisO *xorriso, off_t size, int flag);
|
||||||
|
|
||||||
|
/* @return <=0 error, 1 success
|
||||||
|
*/
|
||||||
|
int Xorriso_list_formats(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit1= obtain outdrive, else indrive
|
||||||
|
@return <=0 error, 1 success
|
||||||
|
*/
|
||||||
|
int Xorriso_list_profiles(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit2= formatting rather than blanking
|
||||||
|
@return 0=failure, did not touch media , -1=failure, altered media
|
||||||
|
1=success, altered media , 2=success, did not touch media
|
||||||
|
*/
|
||||||
|
int Xorriso_blank_as_needed(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param boss_iter Opaque internal handle. Use NULL outside xorrisoburn.c :
|
||||||
|
If not NULL then this is an iterator suitable for
|
||||||
|
iso_dir_iter_remove() which is then to be used instead
|
||||||
|
of iso_node_remove().
|
||||||
|
@param flag bit0= remove whole sub tree: rm -r
|
||||||
|
bit1= remove empty directory: rmdir
|
||||||
|
bit2= recursion: do not reassure in mode 2 "tree"
|
||||||
|
bit3= this is for overwriting and not for plain removal
|
||||||
|
@return <=0 = error
|
||||||
|
1 = removed simple node
|
||||||
|
2 = removed directory or tree
|
||||||
|
3 = did not remove on user revocation
|
||||||
|
*/
|
||||||
|
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
|
||||||
|
bit3= print directories as themselves (ls -d)
|
||||||
|
*/
|
||||||
|
int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||||
|
int filec, char **filev, off_t boss_mem, int flag);
|
||||||
|
|
||||||
|
/* This function needs less buffer memory than Xorriso_ls_filev() but cannot
|
||||||
|
perform structured pattern matching.
|
||||||
|
@param flag bit0= long format
|
||||||
|
bit1= only check for directory existence
|
||||||
|
bit2= do not apply search pattern but accept any file
|
||||||
|
bit3= just count nodes and return number
|
||||||
|
*/
|
||||||
|
int Xorriso_ls(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param wd Path to prepend in case img_path is not absolute
|
||||||
|
@param img_path Absolute or relative path to be normalized
|
||||||
|
@param eff_path returns resulting effective path.
|
||||||
|
Must provide at least SfileadrL bytes of storage.
|
||||||
|
@param flag bit0= do not produce problem events (unless faulty path format)
|
||||||
|
bit1= work purely literally, do not use libisofs
|
||||||
|
bit2= (with bit1) this is an address in the disk world
|
||||||
|
@return -1 = faulty path format, 0 = not found ,
|
||||||
|
1 = found simple node , 2 = found directory
|
||||||
|
*/
|
||||||
|
int Xorriso_normalize_img_path(struct XorrisO *xorriso, char *wd,
|
||||||
|
char *img_path, char eff_path[], 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
|
||||||
|
*/
|
||||||
|
int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter,
|
||||||
|
char *origin, char *dest, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= do not produce info message on success
|
||||||
|
@return 1=success, 0=was already directory, -1=was other type, -2=bad path
|
||||||
|
*/
|
||||||
|
int Xorriso_mkdir(struct XorrisO *xorriso, char *img_path, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= a match count !=1 is a SORRY event */
|
||||||
|
int Xorriso_expand_pattern(struct XorrisO *xorriso,
|
||||||
|
int num_patterns, char **patterns, int extra_filec,
|
||||||
|
int *filec, char ***filev, off_t *mem, int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_st_mode(struct XorrisO *xorriso, char *path,
|
||||||
|
mode_t mode_and, mode_t mode_or, int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_uid(struct XorrisO *xorriso, char *in_path, uid_t uid,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_gid(struct XorrisO *xorriso, char *in_path, gid_t gid,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @parm flag bit0= atime, bit1= ctime, bit2= mtime, bit8=no auto ctime */
|
||||||
|
int Xorriso_set_time(struct XorrisO *xorriso, char *in_path, time_t t,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= recursion
|
||||||
|
bit1= do not count deleted files with rm and rm_r
|
||||||
|
*/
|
||||||
|
int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
|
||||||
|
void *boss_iter, off_t boss_mem,
|
||||||
|
void *dir_node_generic, char *dir_path,
|
||||||
|
struct stat *dir_stbuf, int depth, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= do not dive into trees
|
||||||
|
bit1= do not perform job->action on resulting node array
|
||||||
|
*/
|
||||||
|
int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
|
||||||
|
off_t boss_mem, int filec, char **filev, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= do not mark image as changed */
|
||||||
|
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag);
|
||||||
|
|
||||||
|
int Xorriso_get_volid(struct XorrisO *xorriso, char volid[33], int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_report_lib_versions(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @return 0= stbuf content is valid ,
|
||||||
|
-1 = path not found , -2 = severe error occured
|
||||||
|
*/
|
||||||
|
int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= -inq
|
||||||
|
bit1= -checkdrive
|
||||||
|
*/
|
||||||
|
int Xorriso_atip(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param write_start_address is valid if >=0
|
||||||
|
@param tsize is valid if >0
|
||||||
|
@param flag bit0= grow_overwriteable_iso
|
||||||
|
bit1= do_isosize
|
||||||
|
*/
|
||||||
|
int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
||||||
|
char *track_source, off_t tsize, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit1= outdev rather than indev
|
||||||
|
@return <=0 = failure , 1= ok , 2= ok, is CD profile
|
||||||
|
*/
|
||||||
|
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
|
||||||
|
char profile_name[80], int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
|
||||||
|
bit1= dig out the most original stream for reading
|
||||||
|
*/
|
||||||
|
int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
||||||
|
void *node_pt, void **stream, int flag);
|
||||||
|
|
||||||
|
int Xorriso_iso_file_read(struct XorrisO *xorriso, void *stream, char *buf,
|
||||||
|
int count, int flag);
|
||||||
|
|
||||||
|
int Xorriso_iso_file_close(struct XorrisO *xorriso, void **stream, int flag);
|
||||||
|
|
||||||
|
/* @param bit0= copy link target properties rather than link properties
|
||||||
|
*/
|
||||||
|
int Xorriso_copy_properties(struct XorrisO *xorriso,
|
||||||
|
char *disk_path, char *img_path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_cut_out(struct XorrisO *xorriso, char *disk_path,
|
||||||
|
off_t startbyte, off_t bytecount, char *iso_rr_path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_paste_in(struct XorrisO *xorriso, char *disk_path,
|
||||||
|
off_t startbyte, off_t bytecount, char *iso_rr_path, int flag);
|
||||||
|
|
||||||
|
struct SplitparT;
|
||||||
|
|
||||||
|
/* @param flag bit0= in_node is valid, do not resolve iso_adr
|
||||||
|
*/
|
||||||
|
int Xorriso_identify_split(struct XorrisO *xorriso, char *iso_adr,
|
||||||
|
void *in_node,
|
||||||
|
struct SplitparT **parts, int *count,
|
||||||
|
struct stat *total_stbuf, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= node is valid, do not resolve path
|
||||||
|
bit1= insist in complete collection of part files
|
||||||
|
*/
|
||||||
|
int Xorriso_is_split(struct XorrisO *xorriso, char *path, void *node,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag
|
||||||
|
>>> bit0= mkdir: graft in as empty directory, not as copy from iso
|
||||||
|
bit1= do not report copied files
|
||||||
|
bit2= -follow, -not_*: this is not a command parameter
|
||||||
|
bit3= use offset and cut_size for -paste_in
|
||||||
|
bit4= return 3 on rejection by exclusion or user
|
||||||
|
bit5= if directory then do not add sub tree
|
||||||
|
bit6= this is a copy action: do not fake times and ownership
|
||||||
|
@return <=0 = error , 1 = added leaf file object , 2 = added directory ,
|
||||||
|
3 = rejected
|
||||||
|
*/
|
||||||
|
int Xorriso_restore(struct XorrisO *xorriso,
|
||||||
|
char *img_path, char *disk_path,
|
||||||
|
off_t offset, off_t cut_size, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit0= in_node is valid, do not resolve img_path
|
||||||
|
*/
|
||||||
|
int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
||||||
|
char *img_path, char *disk_path,
|
||||||
|
char type_text[5], int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the official libburn address of an address string. This may fail
|
||||||
|
if the string does not constitute a valid drive address.
|
||||||
|
@param official_adr must offer SfileadrL bytes of reply buffer
|
||||||
|
@return 1 = success , 0 = failure , -1 = severe error
|
||||||
|
*/
|
||||||
|
int Xorriso_libburn_adr(struct XorrisO *xorriso, char *address_string,
|
||||||
|
char official_adr[], int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag bit1= obtain info from outdev
|
||||||
|
*/
|
||||||
|
int Xorriso_msinfo(struct XorrisO *xorriso, int *msc1, int *msc2, int flag);
|
||||||
|
|
||||||
|
/*
|
||||||
|
@param flag bit0= obtain iso_lba from indev
|
||||||
|
bit1= head_buffer already contains a valid head
|
||||||
|
bit2= issue message about success
|
||||||
|
bit3= check whether source blocks are banned by in_sector_map
|
||||||
|
*/
|
||||||
|
int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize,
|
||||||
|
char *head_buffer, struct CheckmediajoB *job,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_get_local_charset(struct XorrisO *xorriso, char **name, int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_local_charset(struct XorrisO *xorriso, char *name, int flag);
|
||||||
|
|
||||||
|
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_destroy_hln_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_destroy_di_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_new_node_array(struct XorrisO *xorriso, off_t mem_limit,
|
||||||
|
int addon_nodes, int flag);
|
||||||
|
|
||||||
|
int Xorriso_sort_node_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_new_hln_array(struct XorrisO *xorriso, off_t mem_limit, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= allocate xorriso->node_targets too
|
||||||
|
*/
|
||||||
|
int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_check_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_check_session_md5(struct XorrisO *xorriso, char *severity,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_image_has_md5(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||||
|
struct CheckmediajoB *job, int flag);
|
||||||
|
|
||||||
|
int Xorriso_extract_cut(struct XorrisO *xorriso,
|
||||||
|
char *img_path, char *disk_path,
|
||||||
|
off_t img_offset, off_t bytes, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @return 1=ok 2=ok, is default setting */
|
||||||
|
int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param flag bit0= print mount command to result channel rather than
|
||||||
|
performing it
|
||||||
|
*/
|
||||||
|
int Xorriso_mount(struct XorrisO *xorriso, char *dev, int adr_mode,
|
||||||
|
char *adr_value, char *cmd, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int Xorriso_auto_driveadr(struct XorrisO *xorriso, char *adr, char *result,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param node Opaque handle to IsoNode which is to be inquired instead of
|
||||||
|
path if it is not NULL.
|
||||||
|
@param path is used as address if node is NULL.
|
||||||
|
@param acl_text if acl_text is not NULL, then *acl_text will be set to the
|
||||||
|
ACL text (without comments) of the file object. In this
|
||||||
|
case it finally has to be freed by the caller.
|
||||||
|
@param flag bit0= do not report to result but only retrieve ACL text
|
||||||
|
bit1= just check for existence of ACL, do not allocate and
|
||||||
|
set acl_text but return 1 or 2
|
||||||
|
@return 2 ok, no ACL available, eventual *acl_text will be NULL
|
||||||
|
1 ok, ACL available, eventual *acl_text stems from malloc()
|
||||||
|
<=0 error
|
||||||
|
*/
|
||||||
|
int Xorriso_getfacl(struct XorrisO *xorriso, void *node,
|
||||||
|
char *path, char **acl_text, int flag);
|
||||||
|
|
||||||
|
int Xorriso_getfattr(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
char **attr_text, int flag);
|
||||||
|
|
||||||
|
/* Calls iso_image_set_ignore_aclea() according to xorriso->do_aaip */
|
||||||
|
int Xorriso_set_ignore_aclea(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
/* @param node Opaque handle to IsoNode which is to be manipulated
|
||||||
|
instead of path if it is not NULL.
|
||||||
|
@param path is used as address if node is NULL.
|
||||||
|
@param access_text "access" ACL in long text form
|
||||||
|
@param default_text "default" ACL in long text form
|
||||||
|
@param flag Unused yet, submit 0
|
||||||
|
@return >0 success , <=0 failure
|
||||||
|
*/
|
||||||
|
int Xorriso_setfacl(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
char *access_text, char *default_text, int flag);
|
||||||
|
|
||||||
|
int Xorriso_get_attrs(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
size_t *num_attrs, char ***names,
|
||||||
|
size_t **value_lengths, char ***values, int flag);
|
||||||
|
|
||||||
|
int Xorriso_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
size_t num_attrs, char **names,
|
||||||
|
size_t *value_lengths, char **values, int flag);
|
||||||
|
|
||||||
|
int Xorriso_record_dev_inode(struct XorrisO *xorriso, char *disk_path,
|
||||||
|
dev_t dev, ino_t ino,
|
||||||
|
void *in_node, char *iso_path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_local_getfacl(struct XorrisO *xorriso, char *disk_path,
|
||||||
|
char **text, int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
|
||||||
|
char *path, char *filter_name, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= delete filter with the given name
|
||||||
|
*/
|
||||||
|
int Xorriso_external_filter(struct XorrisO *xorriso,
|
||||||
|
char *name, char *options, char *path,
|
||||||
|
int argc, char **argv, int flag);
|
||||||
|
|
||||||
|
int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_destroy_all_extf(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
|
||||||
|
char *path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= overwrite existing di_array (else return 2)
|
||||||
|
*/
|
||||||
|
int Xorriso_make_di_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= overwrite existing hln_array (else return 2)
|
||||||
|
*/
|
||||||
|
int Xorriso_make_hln_array(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/*
|
||||||
|
@param flag bit2= -follow: this is not a command parameter
|
||||||
|
@return -1= severe error
|
||||||
|
0= not applicable for hard links
|
||||||
|
1= go on with processing
|
||||||
|
2= iso_rr_path is fully updated
|
||||||
|
*/
|
||||||
|
int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
|
||||||
|
char *disk_path, char *iso_rr_path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_finish_hl_update(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_get_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
char md5[16], int flag);
|
||||||
|
|
||||||
|
int Xorriso_make_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
int Xorriso_md5_start(struct XorrisO *xorriso, void **ctx, int flag);
|
||||||
|
|
||||||
|
int Xorriso_md5_compute(struct XorrisO *xorriso, void *ctx,
|
||||||
|
char *data, int datalen, int flag);
|
||||||
|
|
||||||
|
int Xorriso_md5_end(struct XorrisO *xorriso, void **ctx, char md5[16],
|
||||||
|
int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0=input drive
|
||||||
|
bit1=output drive
|
||||||
|
*/
|
||||||
|
int Xorriso_drive_snooze(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
int Xorriso_is_plain_image_file(struct XorrisO *xorriso, void *in_node,
|
||||||
|
char *path, int flag);
|
||||||
|
|
||||||
|
int Xorriso_pvd_info(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= do not set hln_change_pending */
|
||||||
|
int Xorriso_set_change_pending(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
/* @param flag bit0= enable SCSI command logging to stderr */
|
||||||
|
int Xorriso_scsi_log(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
|
||||||
|
For now take the highest possible value.
|
||||||
|
*/
|
||||||
|
#define Xorriso_IFBOOT S_IFMT
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* Xorrisoburn_includeD */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user