Compare commits
135 Commits
Author | SHA1 | Date | |
---|---|---|---|
66e455534f | |||
9f8964bddd | |||
be867aca18 | |||
8f1412a348 | |||
b6cce50c8f | |||
0ffbf07634 | |||
c676f48ff4 | |||
920513356b | |||
9b21530532 | |||
bbfe2e7a6e | |||
136c3adf6c | |||
f04db99750 | |||
121b69159a | |||
be0d049ec5 | |||
de36d9b67f | |||
01c193c95b | |||
91b0a2aa8d | |||
9a616c30ac | |||
37a389c283 | |||
a1615087e9 | |||
adc3169e34 | |||
27c59a8f73 | |||
7df497747d | |||
076d5ad8b0 | |||
6cdbc1e680 | |||
c2fdd090cc | |||
73f9c94397 | |||
def75b5f34 | |||
bf011207da | |||
d9c18ad08d | |||
7cc669396e | |||
baf61c3aee | |||
44cdc02804 | |||
2d7ac24525 | |||
076d8d1eb8 | |||
8a67604efc | |||
9110f895d2 | |||
aac5928b92 | |||
d335e276a5 | |||
77e6101682 | |||
82a51f6c3f | |||
790850d4b1 | |||
7f1f7d16c4 | |||
6e6883c840 | |||
40b25b150f | |||
434fe78ee7 | |||
14a1af33f9 | |||
ada1b1114a | |||
daf7a078bd | |||
7a94e202f1 | |||
50bebf476d | |||
765e0c88cc | |||
8cecbc9aca | |||
21e5114e71 | |||
e532dcc7bc | |||
a9e1a6ffd6 | |||
1ef2ca5f2b | |||
d0b0684b47 | |||
019ca32721 | |||
fe1d451fe9 | |||
ffe287cd1e | |||
ed181cd4e4 | |||
92ef566e12 | |||
886388d919 | |||
ccde6bec7c | |||
846eec24d6 | |||
587987d019 | |||
2a5daec056 | |||
6bce4510d7 | |||
b418a57f01 | |||
eefda84832 | |||
54855eb89e | |||
feed351d0e | |||
73cfce131d | |||
c394fe3ea2 | |||
02a13e140f | |||
f33d3fedb3 | |||
8426577362 | |||
ff17e1e6dd | |||
392f6ba0a0 | |||
5b87ddb4cb | |||
ee260ecdee | |||
30d457a3fe | |||
92d0f9440c | |||
09cfd395d0 | |||
2f32e55e0f | |||
a481f41d1c | |||
b5a93f2de7 | |||
9d238f91e4 | |||
d3e0451631 | |||
e30bf90933 | |||
910b3511e5 | |||
12a24b169a | |||
cbc1a9723a | |||
364361e228 | |||
00fcf43a47 | |||
19daaa2b77 | |||
594b4a0ce3 | |||
d4c85696a8 | |||
2e6f3fb6fe | |||
18fee0eb2a | |||
08d46db86d | |||
506656f5e9 | |||
e1aa125c05 | |||
61c485fc10 | |||
ec37bd448c | |||
d6ddf8924c | |||
cca8143fb7 | |||
b6ff93b834 | |||
93dabe189e | |||
697b3c227d | |||
f79f3db3db | |||
63ce272077 | |||
4ca37c7255 | |||
b0eaa673fa | |||
8b95d59332 | |||
1d6d36488b | |||
0ad9ebf1a6 | |||
df87273ceb | |||
cbd20b1381 | |||
6fc4e161b0 | |||
d926357222 | |||
c4381dad52 | |||
3d68267083 | |||
bda34a1496 | |||
8b9cafefef | |||
96c3c3ddb3 | |||
805c43ac76 | |||
0ad0433554 | |||
7fd0fc3b77 | |||
0441eee147 | |||
072ba71c2d | |||
7918b6cd24 | |||
8cfd6308bb | |||
1466254129 |
14
ChangeLog
14
ChangeLog
@ -1,17 +1,23 @@
|
||||
SVN trunk (to become libisoburn-1.1.2.tar.gz)
|
||||
libisoburn-1.1.4.tar.gz Sun Aug 7 2011
|
||||
===============================================================================
|
||||
* Bug fix: xorriso native mode on some drives wrote unreadble ISO images to CD
|
||||
* Bug fix: -assert_volid did not work. Regression since version 1.1.0.
|
||||
* Bug fix: -acl or -xattr worked with -extract only on Linux and FreeBSD
|
||||
* New option -device_links
|
||||
|
||||
libisoburn-1.1.2.tar.gz Fri Jul 8 2011
|
||||
===============================================================================
|
||||
* Bug fix: Since 1.0.6: Unreadable image produced by: xorrisofs ... >image.iso
|
||||
* Bug fix: -update_r scheduled non-existing files for hardlink update
|
||||
* Enabled extraction of the boot catalog file to disk filesystem
|
||||
* New option -list_speeds
|
||||
|
||||
|
||||
GNU xorriso-1.1.0.pl01.tar.gz Mon Jun 20
|
||||
GNU xorriso-1.1.0.pl01.tar.gz Mon Jun 20 2011
|
||||
===============================================================================
|
||||
* Bug fix: Due to a bug in libburn-1.1.0, GNU xorriso-1.1.0 compiled only
|
||||
on GNU/Linux, FreeBSD, and Solaris, but not on other systems.
|
||||
|
||||
libisoburn-1.1.0.tar.gz Sat 18 Jun 2011
|
||||
libisoburn-1.1.0.tar.gz Sat Jun 18 2011
|
||||
===============================================================================
|
||||
* Bug fix: -mount_opts shared worked only with -osirrox o_excl_off
|
||||
* Bug fix: xorriso command -add_plainly "any" did not add all files to the image
|
||||
|
14
README
14
README
@ -4,7 +4,7 @@
|
||||
libisoburn and xorriso. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org.
|
||||
http://files.libburnia-project.org/releases/libisoburn-1.1.0.tar.gz
|
||||
http://files.libburnia-project.org/releases/libisoburn-1.1.4.tar.gz
|
||||
Copyright (C) 2006-2011 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2 or later.
|
||||
------------------------------------------------------------------------------
|
||||
@ -34,17 +34,17 @@ By using this software you agree to the disclaimer at the end of this text:
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-1.1.0 :
|
||||
- libburn.so.4 , version libburn-1.1.0 or higher
|
||||
- libisofs.so.6 , version libisofs-1.1.0 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-1.1.4 :
|
||||
- libburn.so.4 , version libburn-1.1.4 or higher
|
||||
- libisofs.so.6 , version libisofs-1.1.4 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
include headers seen at compile time.
|
||||
|
||||
Obtain libisoburn-1.1.0.tar.gz, take it to a directory of your choice
|
||||
Obtain libisoburn-1.1.4.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-1.1.0.tar.gz
|
||||
cd libisoburn-1.1.0
|
||||
tar xzf libisoburn-1.1.4.tar.gz
|
||||
cd libisoburn-1.1.4
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
|
20
configure.ac
20
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libisoburn], [1.1.1], [http://libburnia-project.org])
|
||||
AC_INIT([libisoburn], [1.1.4], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -24,7 +24,7 @@ dnl
|
||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||
ISOBURN_MAJOR_VERSION=1
|
||||
ISOBURN_MINOR_VERSION=1
|
||||
ISOBURN_MICRO_VERSION=1
|
||||
ISOBURN_MICRO_VERSION=4
|
||||
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
@ -37,16 +37,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts B10618
|
||||
dnl ### This is the release version 1.1.0 = libisoburn.so.1.67.0
|
||||
dnl This is the development version after above stable release
|
||||
dnl ts B10807
|
||||
dnl This is the release version 1.1.4 = libisoburn.so.1.71.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 = 68 - 67 = 1 . Library name = libisoburn.so.1.67.0
|
||||
dnl SONAME = 72 - 71 = 1 . Library name = libisoburn.so.1.71.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=68
|
||||
LT_AGE=67
|
||||
LT_CURRENT=72
|
||||
LT_AGE=71
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -303,8 +303,8 @@ AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||
# ------- Visible mark in configure : Start of library check
|
||||
|
||||
dnl Check for proper library versions
|
||||
LIBBURN_REQUIRED=1.1.0
|
||||
LIBISOFS_REQUIRED=1.1.1
|
||||
LIBBURN_REQUIRED=1.1.4
|
||||
LIBISOFS_REQUIRED=1.1.4
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
|
@ -344,7 +344,7 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
|
||||
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
int flag)
|
||||
{
|
||||
int ret, lba, nwa, profile, readonly= 0, role, random_access;
|
||||
int ret, profile, readonly= 0, role, random_access;
|
||||
int emulation_started= 0;
|
||||
struct burn_multi_caps *caps= NULL;
|
||||
struct isoburn_toc_entry *t;
|
||||
@ -356,6 +356,10 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
char msg[80];
|
||||
enum burn_disc_status s;
|
||||
|
||||
#ifndef Hardcoded_cd_rW
|
||||
int lba, nwa;
|
||||
#endif
|
||||
|
||||
s= burn_disc_get_status(d);
|
||||
profile_name[0]= 0;
|
||||
ret= burn_disc_get_profile(d, &profile, profile_name);
|
||||
@ -417,7 +421,13 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
/* >>> recognize unsuitable media (but allow read-only media) */;
|
||||
|
||||
if(readonly && s != BURN_DISC_EMPTY) {
|
||||
|
||||
/* >>> ts B10712: This maps BURN_DISC_UNSUITABLE to BURN_DISC_FULL
|
||||
which can hardly be correct in general.
|
||||
??? What reason does this have ?
|
||||
*/
|
||||
(*o)->fabricated_disc_status= BURN_DISC_FULL;
|
||||
|
||||
/* This might be overwriteable media in a -ROM drive.
|
||||
Pitfall:
|
||||
Multi-session media which bear a xorriso image for overwriteables
|
||||
@ -774,6 +784,7 @@ int isoburn_disc_track_lba_nwa(struct burn_drive *d,
|
||||
{
|
||||
int ret;
|
||||
struct isoburn *o;
|
||||
enum burn_disc_status s;
|
||||
|
||||
#ifdef Hardcoded_cd_rW
|
||||
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo */
|
||||
@ -793,6 +804,10 @@ int isoburn_disc_track_lba_nwa(struct burn_drive *d,
|
||||
}
|
||||
if(burn_drive_get_drive_role(d) != 1)
|
||||
return(1);
|
||||
|
||||
s= isoburn_disc_get_status(d);
|
||||
if(s == BURN_DISC_BLANK) /* We do not believe in anything but nwa = lba = 0 */
|
||||
return(1);
|
||||
return(burn_disc_track_lba_nwa(d, opts, trackno, lba, nwa));
|
||||
}
|
||||
|
||||
|
@ -564,7 +564,9 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
|
||||
isoburn_set_start_byte(o, size, 0);
|
||||
if(!(flag & 1))
|
||||
o->fabricated_disc_status= BURN_DISC_APPENDABLE;
|
||||
} else if (!strncmp((char*)pvm->std_identifier, "CDXX1", 5)) {
|
||||
} else if (strncmp((char*)pvm->std_identifier, "CDXX1", 5) == 0 ||
|
||||
(strncmp((char*)pvm->std_identifier, "CDxx1", 5) == 0 &&
|
||||
pvm->vol_desc_type[0] == 'x')) {
|
||||
|
||||
/* empty image */
|
||||
isoburn_set_start_byte(o, o->zero_nwa * 2048, 0);
|
||||
|
@ -242,7 +242,7 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libisofs_req_major 1
|
||||
#define isoburn_libisofs_req_minor 1
|
||||
#define isoburn_libisofs_req_micro 1
|
||||
#define isoburn_libisofs_req_micro 4
|
||||
|
||||
/** The minimum version of libburn to be used with this version of libisoburn
|
||||
at compile time.
|
||||
@ -250,7 +250,7 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libburn_req_major 1
|
||||
#define isoburn_libburn_req_minor 1
|
||||
#define isoburn_libburn_req_micro 0
|
||||
#define isoburn_libburn_req_micro 4
|
||||
|
||||
/** The minimum compile time requirements of libisoburn towards libjte are
|
||||
the same as of a suitable libisofs towards libjte.
|
||||
@ -305,7 +305,7 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_header_version_major 1
|
||||
#define isoburn_header_version_minor 1
|
||||
#define isoburn_header_version_micro 1
|
||||
#define isoburn_header_version_micro 4
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
|
@ -1,36 +1,32 @@
|
||||
Release Engineering Che[at|ck] List
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Automated tests
|
||||
~~~~~~~~~~~~~~~
|
||||
TEST: Tests starting with releng_* are runnable by run_all_releng
|
||||
FILE: libisoburn/releng/releng_*
|
||||
Release Engineering Check List
|
||||
==============================
|
||||
|
||||
Automated and semi-automated tests
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
TEST: all auto_* tests are to be run by ./run_all_auto
|
||||
FILE: http://people.debian.org/~danchev/libburnia/logs/releng/
|
||||
WHO: george, thomas
|
||||
|
||||
TEST: all manual_* tests are to be run individually and manually.
|
||||
|
||||
TEST: cppcheck
|
||||
FILE: http://people.debian.org/~danchev/libburnia/logs/cppcheck/
|
||||
WHO: george, thomas
|
||||
|
||||
TEST: medistimator (dialog mode, size estimation, processing large trees)
|
||||
requires some specific knowledge of how the tool works, to interpret
|
||||
the results and compare them previous runs (see comments in the source).
|
||||
FILE: http://anonscm.debian.org/gitweb/?p=users/danchev/medistimator.git;a=summary
|
||||
FILE: http://people.debian.org/~danchev/libburnia/logs/medistimator/
|
||||
WHO: george, thomas
|
||||
|
||||
Non-automated tests
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
TEST: valgrind
|
||||
FILE:
|
||||
WHO: george, thomas
|
||||
|
||||
TEST: buildd_logs
|
||||
FILE: http://buildd.debian.org (others are also welcome)
|
||||
FILE: (err/warn from prev. builds for several h/w architectures and kernels: linux, kfreebsd, hurd)
|
||||
WHO: george, thomas
|
||||
|
||||
TEST: gprof
|
||||
FILE: CFLAGS=-pg ./configure && make
|
||||
FILE: run resulting executable; gmon.out to be created in current cirectory
|
||||
FILE: gprof path/to/xorriso gmon.out > gprof.out
|
||||
WHO: george, thomas
|
260
releng/README
Normal file
260
releng/README
Normal file
@ -0,0 +1,260 @@
|
||||
------------------------------------------------------------------------------
|
||||
http:libburnia-project.org
|
||||
------------------------------------------------------------------------------
|
||||
libisoburn/releng. By George Danchev <danchev@spnet.net>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
|
||||
Test suite for xorriso and libburnia libraries.
|
||||
Copyright (C) 2011 George Danchev, Thomas Schmitt
|
||||
Provided under GPL version 2 or later.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The impatient tester will build libisoburn according to ./README and then do
|
||||
cd ./releng
|
||||
./run_all_auto -x ../xorriso/xorriso
|
||||
|
||||
More patient testers will first read the following description.
|
||||
|
||||
|
||||
The test suite
|
||||
|
||||
+++ introduce the test suite,
|
||||
|
||||
Directory ./releng of libisoburn contains a collection of test scripts and
|
||||
auxiliary data. They exercise some typical use cases of building libisoburn
|
||||
applications and running the ISO 9660 filesystem manipulation and CD/DVD/BD
|
||||
burn program xorriso.
|
||||
|
||||
|
||||
+++ inform about resource needs,
|
||||
|
||||
It is assumed that libburn and libisofs are installed, so that libisoburn
|
||||
can be configured and built. It is not mandatory that libisoburn is already
|
||||
installed. The tests may use an installed xorriso program as well as a
|
||||
freshly built one.
|
||||
|
||||
|
||||
+++ auto and manual tests
|
||||
|
||||
There are two groups of test scripts:
|
||||
|
||||
auto_* gets started and watched by script run_all_auto.
|
||||
These tests have a moderate resource consumption and do
|
||||
not cause mechanical movements of drive trays.
|
||||
|
||||
manual_* get started by the user if desired.
|
||||
Manual tests may create larger sets of temporary files,
|
||||
may download test data from the internet, may need
|
||||
system privileges beyond the reach of a sandbox user,
|
||||
and operate the mechanics of a CD drive.
|
||||
|
||||
|
||||
+++ tell how to run the tests,
|
||||
|
||||
Running automated tests
|
||||
|
||||
The test scripts expect to get run while the working directory is
|
||||
./releng
|
||||
of a libisoburn source tree. E.g.: libisoburn-1.1.4/releng
|
||||
They create all their temporary files underneath
|
||||
./releng/releng_generated_data
|
||||
Some of these files are persistent between tests.
|
||||
Nevertheless it is safe to empty ./releng/releng_generated_data after
|
||||
tests are done. The directory itself must be kept.
|
||||
|
||||
To run the unobtrusive automatic tests, build libisoburn and xorriso,
|
||||
go to directory ./releng, and execute
|
||||
|
||||
./run_all_auto -x ../xorriso/xorriso
|
||||
|
||||
or if you want to use an installed xorriso program:
|
||||
|
||||
./run_all_auto -x $(type -p xorriso)
|
||||
|
||||
|
||||
+++ General options -x , -k, -f, -c, -h, --
|
||||
+++ + All scripts support -h
|
||||
|
||||
There are several options which work with run_all_auto and any single test.
|
||||
-x absolute or relative path to xorriso binary to be run.
|
||||
-k keep self-generated data.
|
||||
-c cleanup temporary data kept from previous run and exit.
|
||||
-f simulate failure.
|
||||
-h print this help text
|
||||
-- end of general options, begin of test specific options.
|
||||
After option "--", there may be given options which are specific to
|
||||
particular manually executable test scripts.
|
||||
|
||||
|
||||
Manually executable tests
|
||||
|
||||
+++ list of manual tests
|
||||
|
||||
Currently there are the following tests which should have the attention of
|
||||
the user or require sysadmin considerations before they are run:
|
||||
|
||||
./manual_isojigdo -x ../xorriso/xorriso
|
||||
Exercises the production of a bootable Debian GNU/Linux image and its Jigdo
|
||||
files. This test downloads a Debian daily image for i386 of about 70 MB,
|
||||
extracts its content and composes a new image.
|
||||
Thus it needs about 250 MB of disk space in releng/releng_generated_data .
|
||||
This test will only work with GNU xorriso or if libjte was installed already
|
||||
when libisofs was built. libjte is part of package jigit, version >= 1.18,
|
||||
available at:
|
||||
http://www.einval.com/~steve/software/JTE/
|
||||
|
||||
./manual_devices -x ../xorriso/xorriso [-- [--dev device_file_to_use]]
|
||||
Exercises listing of all accessible optical drives and the examination of
|
||||
a one of these drives. The user needs the permission to operate the CD
|
||||
drives. This might involve the need for superuser authority.
|
||||
The media tray of the examined drive will get loaded if it is not already.
|
||||
If no option --dev is given, then the user gets asked which of the listed
|
||||
drives to examine more closely.
|
||||
|
||||
./manual_burn -x ../xorriso/xorriso [-- [--dev device_file_to_use]
|
||||
[--what ...directory...] [--any_media]]
|
||||
Burns the content of the directory given with --what onto re-usable
|
||||
media: CD-RW, DVD-RW, DVD-RAM, DVD+RW, BD-RE.
|
||||
Other media types get refused, unless option --any_media is given.
|
||||
Data, which are possibly present on the media, get overwritten.
|
||||
The result gets check read and compared with the state of the input
|
||||
directory. MD5 mismatch causes a test failure. Differences to the directory
|
||||
state are reported but still regarded as success.
|
||||
|
||||
|
||||
>>> ./run_all_manual
|
||||
|
||||
>>> + Any auto_* script can be run on its own, regardless.
|
||||
>>> List auto tests
|
||||
|
||||
|
||||
+++ give hints what to do with FAIL results.
|
||||
|
||||
The text output of the automatic tests is recorded in file
|
||||
releng_generated_data/log.run_all_auto
|
||||
|
||||
Script ./run_all_auto will detect failure of perticular tests and report
|
||||
lines from the log file which contain problem indicating key words:
|
||||
NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT|FAIL|ERROR|WRONG
|
||||
|
||||
If the program messages in log.run_all_auto do not explain the failure,
|
||||
please contact mailing list libburn-hackers@pykix.org .
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Creating a new test script
|
||||
|
||||
+++ * DELIVERING A NEW TEST SCRIPT
|
||||
+++ + Start a new test script over the top of template_new_releng
|
||||
+++ + Each completed script starts with auto_ or manual_ prefix
|
||||
|
||||
If you want to provide an own test, manual or auto, then first invent a name
|
||||
for it
|
||||
test_name="releng/manual_"...some.name...
|
||||
or
|
||||
test_name="releng/auto_"...some.name...
|
||||
Then copy file releng/template_new to $test_name .
|
||||
Edit $test_name and process any line that begins by "# === TEMPLATE:".
|
||||
Do what the line prescribes and then remove it from the script. You are
|
||||
not done as long as such a line remains.
|
||||
|
||||
+++ + Each script' self-generated data are to be stored in
|
||||
+++ ./releng_generated_data/scriptname/ directory
|
||||
|
||||
Your test must not start if no file
|
||||
./inc/releng_getopts.inc
|
||||
exists, i.e. if the current working direcoty is not ./releng.
|
||||
If your test creates own files on disk, then it must do this underneath
|
||||
directory ./releng_generated_data/$test_name (resp. $GEN_DATA_DIR, see below).
|
||||
|
||||
+++ + Throw FAIL string to stdout if any failure is detected
|
||||
+++ + Return exit code 0 on success, non-zero on failure
|
||||
+++ + Use different exit codes for any failure (range 0-31)
|
||||
|
||||
In case of failure, issue a line to stdout that begins by the word "FAIL",
|
||||
followed by " : " and the name of the test (e.g. $SELF, see below).
|
||||
Make sure that the test script finally returns a non-zero exit value.
|
||||
This value should be between 1 and 28. Each type of failure should have its
|
||||
own exit value.
|
||||
Predefined are:
|
||||
31 = Unknown option or unusable argument with known option
|
||||
30 = Unexpected state of own directory for self generated files
|
||||
29 = Not in ./releng directory or missing essential parts of ./releng
|
||||
|
||||
When exiting prematurely, make sure to call function cleanup.
|
||||
|
||||
|
||||
General options, variables, and functions
|
||||
|
||||
+++ inc/releng_getopts.inc variables, functions, initializations
|
||||
|
||||
The code piece inc/releng_getopts.inc should get executed inline at the
|
||||
start of a test script.
|
||||
It initializes the following variables and sets some of them according
|
||||
to the general options of the test suite:
|
||||
|
||||
SELF basename $0
|
||||
|
||||
GEN_DATA_DIR releng_generated_data/${SELF}
|
||||
|
||||
RELENG_XORRISO Path to xorriso binary. "" or "0" means no xorriso.
|
||||
Default "0". Adjustable by option -x.
|
||||
|
||||
SIMULATE_FAILURE 0=normal operation, 1=test script shall simulate a failure.
|
||||
Default 0. Setable to 1 by option -f.
|
||||
|
||||
CLEANUP 0=do not cleanup temporary data, 1=normal operation
|
||||
Default 1. Setable to 0 by option -k.
|
||||
|
||||
SPECIFIC_HELP 0=normal operation, 1=print help text of script and exit 0
|
||||
Default 0. Setable to 1 by option -h
|
||||
|
||||
The code piece inc/releng_getopts.inc defines the follwoing functions
|
||||
for use by the single tests:
|
||||
|
||||
print_help Prints the help text for general options.
|
||||
|
||||
check_for_xorriso [-x]
|
||||
Will exit with value 31 if no path to a xorriso binary
|
||||
was defined by option -x of ./run_all_auto or a single
|
||||
test.
|
||||
Option -x of check_for_xorriso additionally tests whether
|
||||
the given path leads to an executable program.
|
||||
|
||||
cleanup Removes the directory tree GEN_DATA_DIR after making
|
||||
some safety checks.
|
||||
|
||||
boldify Try to set the terminal mode for future output to a more
|
||||
noticable style of writing.
|
||||
unboldify Reset terminal mode to normal style of writing.
|
||||
|
||||
|
||||
Specific options
|
||||
|
||||
+++ + Keep the newly added script options in sync with other scripts
|
||||
|
||||
Options which are specific to the test should begin with a double dash.
|
||||
They may have further arguments.
|
||||
Implement them in the prepared interpreter loop which begins after line
|
||||
next_is=ignore
|
||||
|
||||
Specific options shall only be interpreted by tests which get run manually.
|
||||
If you plan to introduce a specific option, look at the description of
|
||||
existing tests whether one of them would match your needs. In that case,
|
||||
please re-use the name of that existing option.
|
||||
|
||||
|
||||
=============================================================================
|
||||
TODO:
|
||||
|
||||
|
||||
* Delete debian-testing-i386-businesscard.iso with ./run_all_auto -c
|
||||
|
||||
* Have a script ./run_all_manual
|
||||
|
||||
* derive a GNU xorriso test suite from libisoburn test suite
|
||||
|
||||
* auto_ tests should know whether they work underneath run_all_auto
|
||||
or whether they run standalone
|
||||
|
@ -1,29 +0,0 @@
|
||||
Release Engineering
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
* SOFTWARE TO TEST
|
||||
Use latest libburnia libraries code base from svn and bzr
|
||||
(see README for aditional and autodetected library dependencies)
|
||||
Alternatively, use latest all-in-one development tarball from:
|
||||
http://www.gnu.org/software/xorriso/
|
||||
|
||||
* SETUP THE TEST ENVIRONMENT
|
||||
+ Not all TESTs are scripts (e.g. cppcheck, valgrind)
|
||||
+ Copy all SCRIPT.conf.template to $HOME/.libburnia-releng/SCRIPT.conf
|
||||
+ Read the configuration files and set up accordingly to your needs
|
||||
|
||||
* DELIVERING A NEW TEST SCRIPT
|
||||
+ Start a new test script over the top of template_new_releng
|
||||
+ All filenames start with releng_ prefix
|
||||
+ Self generated data are to be stored in
|
||||
./releng_generated_data/scriptname/ directory
|
||||
+ Test data generation options -rc [-keep]
|
||||
+ Test data removal options -cleanup
|
||||
+ Well documented configuration file SCRIPT.conf.template
|
||||
+ Throw FAIL string to stdout if any failure is detected
|
||||
+ Return exit code 0 on success, non-zero on failure
|
||||
+ Use different exit codes for any failure (range 0-31)
|
||||
|
||||
* RUNNING TESTS
|
||||
+ All tests have to be run from the releng/ directory, within
|
||||
libisoburn source tree. Ther is a 'master' script called
|
||||
run_all_releng, which runs all scripts prefixed with releng_*.
|
28
releng/README.old
Normal file
28
releng/README.old
Normal file
@ -0,0 +1,28 @@
|
||||
Release Engineering
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
* SOFTWARE TO TEST
|
||||
+ Use latest libburnia libraries code base from svn and bzr
|
||||
(see top-level README for aditional library dependencies)
|
||||
+ Alternatively, use latest all-in-one development tarball from:
|
||||
http://www.gnu.org/software/xorriso/
|
||||
|
||||
* SETUP THE TEST ENVIRONMENT AND RUN THE TEST SUITE
|
||||
+ All tests have to be run from the releng/ directory, within
|
||||
libisoburn source tree. Self-generated data are stored in
|
||||
./releng_generated_data/ directory, and the required space for
|
||||
these data is about 300 megabytes. There is a 'master' script
|
||||
called run_all_auto, which runs all scripts prefixed with auto_*.
|
||||
+ Any auto_* script can be run on its own, regardless.
|
||||
+ Any manual_* script is to be run on its own, only.
|
||||
+ All scripts support -h, -help, --help and
|
||||
print usage help when run without options.
|
||||
|
||||
* DELIVERING A NEW TEST SCRIPT
|
||||
+ Start a new test script over the top of template_new_releng
|
||||
+ Each completed script starts with auto_ or manual_ prefix
|
||||
+ Each script' self-generated data are to be stored in
|
||||
./releng_generated_data/scriptname/ directory
|
||||
+ Keep the newly added script options in sync with other scripts
|
||||
+ Throw FAIL string to stdout if any failure is detected
|
||||
+ Return exit code 0 on success, non-zero on failure
|
||||
+ Use different exit codes for any failure (range 0-31)
|
47
releng/TODO
47
releng/TODO
@ -1,36 +1,27 @@
|
||||
* Invent an interpreter to read options from config files and sets the variables
|
||||
or use confget ( http://devel.ringlet.net/textproc/confget/ )
|
||||
OR BETTER YET TRY TO DROP the entire concept of config files and
|
||||
rely solely on cmdline options.
|
||||
|
||||
* Write a common configuration facility.
|
||||
* Manpage examples turned into tests
|
||||
Convert most examples from xorriso(1) manpage into tests.
|
||||
|
||||
* Expose ldd and --version of tested binary just once.
|
||||
|
||||
* Also support 'run_all_releng /path/to/xorriso [-keep]'
|
||||
i.e. without the need to install config files in place.
|
||||
|
||||
* Merge 'merge_into_isocontent' into 'releng_isocontent' (former hardlinks)
|
||||
* Enhance 'auto_isocontent'
|
||||
Extend it to use some more demanding directory tree.
|
||||
MD5s should be checked. ACLs and xattr (if we are on Linux).
|
||||
All file types as of stat(2) should be tested.
|
||||
Test various comparisons:
|
||||
xorriso provides built-in means for comparison:
|
||||
xorriso -compare_r disk_path iso_rr_path
|
||||
xorriso -indev my.iso -find / vs. find input_dir
|
||||
bsdtar -xf my.iso vs. input_dir
|
||||
|
||||
* Also check trivial operations like --devices, etc.
|
||||
|
||||
* Split off common functionality in common ./lib/ so it can be re-used
|
||||
by all scripts. This might include cmdline option parsing, some
|
||||
validation code like releng_isocontent:is_valid_iso9660
|
||||
* Test for wrong CD sizes would need a new test and probably an
|
||||
automatic CD changer.
|
||||
|
||||
* We need to give a hint about how much storage space will be consumed.
|
||||
* Burning tests - maybe a new 'manual_burning' test?
|
||||
Further if we want to have a burn test (with MD5 and checkreading)
|
||||
then we will need configuration means to enable this. By default
|
||||
it should not risk to burn one-time media which sit in the drive
|
||||
by mere accident.
|
||||
|
||||
* We could mark all own stderr messages by a prefix like "===".
|
||||
|
||||
* Burning tests ideas/thoughts by Thomas:
|
||||
> There will have to be a warning and user input before we load
|
||||
> the drive tray. -dev, -indev, -oudev do this loading which can
|
||||
> cause finger injury, psychical trauma, and chuting computers.
|
||||
>
|
||||
> Further if we want to have a burn test (with MD5 and checkreading)
|
||||
> then we will need configuration means to enable this. By default
|
||||
> it should not risk to burn one-time media which sit in the drive
|
||||
> by mere accident.
|
||||
* Library unit tests - investigate the possibility to write some
|
||||
cunit-based tests (http://cunit.sourceforge.net) for both
|
||||
xorriso.h and libisoburn.h API's. The code samples could be put into
|
||||
codesamples/ directory and run by auto_cxx or a separate auto_ script.
|
||||
|
88
releng/auto_cxx
Executable file
88
releng/auto_cxx
Executable file
@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
set -e
|
||||
|
||||
not_in_releng_exit() {
|
||||
printf "\nPlease execute the tests from releng directory.\n\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
. inc/releng_getopts.inc || not_in_releng_exit
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
none yet.
|
||||
Overview:
|
||||
Tests both xorriso/xorriso.h and libisoburn/libisoburn.h
|
||||
APIs for C++ cleanness.
|
||||
HLP
|
||||
}
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1; then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# xorriso binary is not needed for that particular test
|
||||
SAMPLE_CODE_DIR=codesamples
|
||||
CC=g++
|
||||
|
||||
# check compiler
|
||||
if ! which "${CC}" >/dev/null 2>&1; then
|
||||
printf "\n${SELF}: Not found: ${CC}. Install ${CC}.\n"
|
||||
cleanup
|
||||
exit 5
|
||||
fi
|
||||
|
||||
# check data dir
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 6
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
# process sample code tests
|
||||
# if test -f "${SAMPLE_CODE_DIR}"/*.cpp; then
|
||||
for SMPL in `ls "${SAMPLE_CODE_DIR}"/*.cpp`; do
|
||||
CMD_CPL="${CC} -I../ -L ../libisoburn/.libs/ -lisoburn -o ${SMPL}.obj ${SMPL}"
|
||||
printf "${SELF}: ${CMD_CPL}\n"
|
||||
set +e
|
||||
${CMD_CPL}
|
||||
RET_CPL="$?"
|
||||
if [ ${RET_CPL} == 0 -a -f ${SMPL}.obj ]; then
|
||||
mv ${SMPL}.obj ${GEN_DATA_DIR}
|
||||
else
|
||||
printf "\nFAIL : ${SELF}: Compilation of ${SMPL}\n"
|
||||
cleanup
|
||||
exit 7
|
||||
fi
|
||||
BASE=$(basename ${SMPL}.obj)
|
||||
printf "${SELF}: Running LD_LIBRARY_PATH=../libisoburn/.libs/:${LD_LIBRARY_PATH} ${GEN_DATA_DIR}/${BASE}"
|
||||
LD_LIBRARY_PATH=../libisoburn/.libs/:${LD_LIBRARY_PATH} ${GEN_DATA_DIR}/${BASE}
|
||||
RET_SMPL="$?"
|
||||
case ${RET_SMPL} in
|
||||
0)
|
||||
printf "...ok\n"
|
||||
;;
|
||||
*)
|
||||
printf "exit code: ${RET_SMPL}\n"
|
||||
cleanup
|
||||
exit 8
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
done
|
||||
#else
|
||||
# printf "\n${SELF}: No C++ code samples found in ${SAMPLE_CODE_DIR}\n"
|
||||
#fi
|
||||
|
||||
# clean
|
||||
cleanup
|
||||
|
||||
exit 0
|
215
releng/auto_isocontent
Executable file
215
releng/auto_isocontent
Executable file
@ -0,0 +1,215 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
# Test the correct handling of hardlinks by xorriso options
|
||||
# -update_r , -hardlinks perform_update , and -extract
|
||||
|
||||
not_in_releng_exit() {
|
||||
printf "\nPlease execute the tests from releng directory.\n\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
. inc/releng_getopts.inc || not_in_releng_exit
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
none yet.
|
||||
Overview:
|
||||
Tests ISO image contents by performing various
|
||||
image generation, extractions and comparisons.
|
||||
HLP
|
||||
}
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1; then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -x $RELENG_XORRISO ]; then
|
||||
print_help
|
||||
printf "\n${SELF}: -x absolute or relative path to binary to be run.\n\n"
|
||||
exit 31
|
||||
fi
|
||||
|
||||
# check data dir, if any and after checking -x xorriso
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 8
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
export xorriso=${RELENG_XORRISO}
|
||||
export workdir=${GEN_DATA_DIR}
|
||||
export image_file="$workdir"/xorriso_hardlinks.iso
|
||||
export on_disk="$workdir"/xorriso_hardlinks_test_dir
|
||||
export in_iso=""
|
||||
export copy_on_disk="$workdir"/xorriso_hardlinks_copy_dir
|
||||
export failure=0
|
||||
export simulate_failure=${SIMULATE_FAILURE}
|
||||
export next_is_xorriso=0
|
||||
export next_is_rc=0
|
||||
export bad=0
|
||||
export report_about="-report_about UPDATE"
|
||||
|
||||
test -z "$in_iso" && in_iso="$on_disk"
|
||||
|
||||
# mkdir "$workdir" || bad=1
|
||||
mkdir "$on_disk" || bad=1
|
||||
if test "$bad" = 1
|
||||
then
|
||||
echo -e "\nFAIL : ${SELF} : Test environment error : Cannot make directories"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# All must be set at this point
|
||||
printf "\n${SELF}: Setting up $on_disk with several hardlinks\n" >&2
|
||||
echo test_content >"$on_disk"/file_1 || exit 1
|
||||
echo test_content >"$on_disk"/file_2 || exit 1
|
||||
ln "$on_disk"/file_1 "$on_disk"/file_1_link_a || exit 1
|
||||
ln "$on_disk"/file_1 "$on_disk"/file_1_link_b || exit 1
|
||||
ln "$on_disk"/file_2 "$on_disk"/file_2_link_a || exit 1
|
||||
ls -l "$on_disk"/*
|
||||
|
||||
# trivial ISO 9660 image validation routine
|
||||
is_valid_iso9660() {
|
||||
ISOfile="$1"
|
||||
if [ ! -f ${ISOfile} ]; then
|
||||
failure=1
|
||||
printf "\nFAIL : ${SELF} : Not found: ${ISOfile}\n"
|
||||
fi
|
||||
if file ${ISOfile} | grep -P "ISO\s+9660\s+CD-ROM\s+filesystem\s+data" >/dev/null 2>&1; then
|
||||
printf "\n${SELF}: Resulting ${ISOfile} OK. Looks like ISO 9660 filesystem.\n"
|
||||
else
|
||||
failure=1
|
||||
printf "\nFAIL : ${SELF} : ${ISOfile} DOES NOT look like ISO 9660 filesystem data.\n"
|
||||
fi
|
||||
}
|
||||
|
||||
echo -e "\n${SELF}: Producing simple image via -o" >&2
|
||||
"$xorriso" -as mkisofs "$on_disk" -o "$workdir"/image_minus_o.iso
|
||||
is_valid_iso9660 "$workdir"/image_minus_o.iso
|
||||
echo -e "\n${SELF}: Producing simple image via redirect" >&2
|
||||
"$xorriso" -as mkisofs "$on_disk" > "$workdir"/image_redirected.iso
|
||||
is_valid_iso9660 "$workdir"/image_redirected.iso
|
||||
echo -e "\n${SELF}: Producing simple image via pipe" >&2
|
||||
"$xorriso" -as mkisofs "$on_disk" | cat > "$workdir"/image_piped.iso
|
||||
is_valid_iso9660 "$workdir"/image_piped.iso
|
||||
|
||||
echo -e "\n${SELF}: Producing simple image with for_backup/update_r/hardlinks" >&2
|
||||
"$xorriso" \
|
||||
$report_about \
|
||||
-version \
|
||||
-for_backup \
|
||||
-padding 0 \
|
||||
-outdev "$image_file" \
|
||||
-volid TEST_AUTO_ISOCONTENT \
|
||||
-update_r "$on_disk" "$in_iso" \
|
||||
-hardlinks perform_update
|
||||
ret=$?
|
||||
if test "$ret" -gt 0 -a "$ret" -lt 32
|
||||
then
|
||||
printf "\n${SELF}: xorriso write run failed\n\n" >&2
|
||||
cleanup
|
||||
printf "${SELF}: FAILED\n"
|
||||
exit 1
|
||||
fi
|
||||
is_valid_iso9660 "$image_file"
|
||||
|
||||
|
||||
# It must refuse to load and go on with -assert_volid and non-matching pattern.
|
||||
msg=$(\
|
||||
"$xorriso" \
|
||||
-abort_on FATAL \
|
||||
-return_with FAILURE 32 \
|
||||
-assert_volid 'NON_MATCHING*' FATAL \
|
||||
-indev "$image_file" \
|
||||
2>&1
|
||||
)
|
||||
ret=$?
|
||||
if test "$ret" -gt 0 -a "$ret" -lt 32
|
||||
then
|
||||
printf "\n${SELF}: Ok. -assert_volid snapped.\n"
|
||||
elif test "$ret" -ne 0
|
||||
then
|
||||
failure=1
|
||||
echo >&2
|
||||
echo "$msg" >&2
|
||||
printf "\nFAIL : ${SELF} : -assert_volid test not properly performed\n\n" >&2
|
||||
else
|
||||
failure=1
|
||||
printf "\nFAIL : ${SELF} : -assert_volid did not snap\n\n" >&2
|
||||
fi
|
||||
|
||||
echo -e "\n${SELF}: Copying from image to temporary disk tree" >&2
|
||||
"$xorriso" \
|
||||
$report_about \
|
||||
-for_backup \
|
||||
-assert_volid 'TEST_AUTO_ISOCONT*' FATAL \
|
||||
-indev "$image_file" \
|
||||
-osirrox on \
|
||||
-find "$in_iso" -exec lsdl -- \
|
||||
-extract "$in_iso" "$copy_on_disk"
|
||||
ret=$?
|
||||
if test "$ret" -gt 0 -a "$ret" -lt 32
|
||||
then
|
||||
printf "\n${SELF}: xorriso file extraction run failed\n\n" >&2
|
||||
cleanup
|
||||
printf "${SELF}: FAILED\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test "$simulate_failure" = 1
|
||||
then
|
||||
echo -e "\n${SELF}: SIMULATING FAILURE BY REMOVING AN EXTRACTED FILE" >&2
|
||||
echo -e "\nFAIL : ${SELF} : Simulated failure caused by option -fail"
|
||||
rm "$copy_on_disk"/file_1_link_b
|
||||
fi
|
||||
|
||||
|
||||
printf "\n${SELF}: Comparing original disk tree and temporary one..." >&2
|
||||
diff -r "$on_disk" "$copy_on_disk"
|
||||
if test "$?" -ne 0
|
||||
then
|
||||
echo -e "\nFAIL : ${SELF} : diff -r $on_disk $copy_on_disk reports differences" >&2
|
||||
echo -e "\nFAIL : ${SELF} : diff -r reports differences"
|
||||
failure=1
|
||||
else
|
||||
printf "OK" >&2
|
||||
fi
|
||||
|
||||
printf "\n${SELF}: Checking for hardlinks being siblings...\n"
|
||||
ls -l "$copy_on_disk"/*
|
||||
x=$(echo $(ls -l "$copy_on_disk"/* | awk '{print $2}'))
|
||||
expected="3 3 3 2 2"
|
||||
if test x"$x" = x"$expected"
|
||||
then
|
||||
printf "\n${SELF}: Checking for hardlinks being siblings. Done. OK.\n" >&2
|
||||
else
|
||||
printf "\nFAIL : ${SELF} : Link count of extracted files is not as expected." >&2
|
||||
printf "\n${SELF}: Expected: $expected" >&2
|
||||
printf "\n${SELF}: Got : $x\n" >&2
|
||||
failure=1
|
||||
fi
|
||||
|
||||
#
|
||||
cleanup
|
||||
|
||||
# Report result
|
||||
echo
|
||||
if test "$failure" = 1
|
||||
then
|
||||
printf "${SELF}: FAILED"
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
printf "${SELF}: Passed"
|
||||
echo
|
||||
fi
|
||||
|
||||
exit 0
|
111
releng/auto_printsize
Executable file
111
releng/auto_printsize
Executable file
@ -0,0 +1,111 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
set -e
|
||||
|
||||
not_in_releng_exit() {
|
||||
printf "\nPlease execute the tests from releng directory.\n\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Include common bits
|
||||
. inc/releng_getopts.inc || not_in_releng_exit
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
none yet.
|
||||
Overview:
|
||||
Test performance of print_size against various input tree.
|
||||
Optionally compare with genisoimage and mkisofs.
|
||||
HLP
|
||||
}
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1; then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Each test should decide whether or not it needs
|
||||
# a xorriso binary to test, since some do compilations only.
|
||||
if [ ! -x $RELENG_XORRISO ]; then
|
||||
print_help
|
||||
printf "\n${SELF}: -x absolute or relative path to binary to be run.\n\n"
|
||||
exit 31
|
||||
fi
|
||||
|
||||
# check data dir, if any and after checking -x xorriso
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 8
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
#
|
||||
DIR_UPPER=32
|
||||
FILE_UPPER=10
|
||||
|
||||
# All must be set at this point
|
||||
# TODO: work out a smarter way to quickly generate different
|
||||
# types of trees (long, deep, etc)
|
||||
printf "\n${SELF}: Generating sample tree in ${GEN_DATA_DIR} :\n"
|
||||
count=0
|
||||
date
|
||||
for ((i1=0; i1 < ${DIR_UPPER}/4; i1++))
|
||||
do
|
||||
for ((i2=0; i2 < ${DIR_UPPER}/2; i2++))
|
||||
do
|
||||
for ((i3=0; i3 < ${DIR_UPPER}; i3++))
|
||||
do
|
||||
mkdir -p ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3
|
||||
for ((i_file=0; i_file < ${FILE_UPPER}; i_file++))
|
||||
do
|
||||
echo -n \
|
||||
> ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3/File_${i_file}
|
||||
count=$((count + 1))
|
||||
done
|
||||
done
|
||||
done
|
||||
echo " ${count} files created ..."
|
||||
done
|
||||
printf "done.\n"
|
||||
date
|
||||
du -s "${GEN_DATA_DIR}"
|
||||
|
||||
printf "\n${SELF}: Performing several print size runs to neutralize possible disk cache impact.\n"
|
||||
|
||||
# run xorriso
|
||||
if [ -x ${RELENG_XORRISO} ]; then
|
||||
for run in 1 2 3; do
|
||||
printf "\n${SELF}: Running ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n"
|
||||
time ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR}
|
||||
done
|
||||
fi
|
||||
|
||||
# try to run genisoimage
|
||||
if which genisoimage >/dev/null 2>&1; then
|
||||
RELENG_GENISOIMAGE=`which genisoimage`
|
||||
for run in 1 2 3; do
|
||||
printf "\n${SELF}: Running ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n"
|
||||
time ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR}
|
||||
done
|
||||
fi
|
||||
|
||||
# try to run mkisofs
|
||||
if which mkisofs >/dev/null 2>&1; then
|
||||
RELENG_MKISOFS=`which mkisofs`
|
||||
for run in 1 2 3; do
|
||||
printf "\n${SELF}: Running ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n"
|
||||
time ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR}
|
||||
done
|
||||
fi
|
||||
|
||||
#
|
||||
cleanup
|
||||
|
||||
#
|
||||
exit 0
|
@ -1,5 +1,9 @@
|
||||
// Just to ensure we are C++-clean. This should not spit too much noise
|
||||
|
||||
/* Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
* Licensed under GNU GPL version 2
|
||||
*/
|
||||
|
||||
#if __WORDSIZE == 32
|
||||
#define _LARGEFILE_SOURCE 1
|
||||
#define _FILE_OFFSET_BITS 64
|
@ -1,5 +1,9 @@
|
||||
// Just to ensure we are C++-clean. This should not spit too much noise
|
||||
|
||||
/* Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
* Licensed under GNU GPL version 2
|
||||
*/
|
||||
|
||||
#if __WORDSIZE == 32
|
||||
#define _LARGEFILE_SOURCE 1
|
||||
#define _FILE_OFFSET_BITS 64
|
167
releng/inc/releng_getopts.inc
Normal file
167
releng/inc/releng_getopts.inc
Normal file
@ -0,0 +1,167 @@
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
SELF=$(basename $0)
|
||||
RELENG_XORRISO=0
|
||||
SIMULATE_FAILURE=0
|
||||
CLEANUP=1
|
||||
SPECIFIC_HELP=0
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
|
||||
#############################################
|
||||
print_help() {
|
||||
cat << EOF
|
||||
|
||||
Usage: $SELF -x path/to/xorriso [-k] [-f] [-c] [-h]
|
||||
[-- ...test specific options...]
|
||||
General options:
|
||||
-x absolute or relative path to xorriso binary to be run.
|
||||
-k keep self-generated data.
|
||||
-c cleanup self-generated data kept from previous run and exit.
|
||||
-f simulate failure.
|
||||
-h print this help text
|
||||
-- end of general options, begin of test specific options.
|
||||
EOF
|
||||
}
|
||||
|
||||
boldify() {
|
||||
if which tput >/dev/null 2>&1; then tput smso; fi
|
||||
}
|
||||
|
||||
unboldify() {
|
||||
if which tput >/dev/null 2>&1; then tput rmso; fi
|
||||
}
|
||||
|
||||
#############################################
|
||||
cleanup() {
|
||||
if [ ${CLEANUP} -eq 1 ]; then
|
||||
# safety net, just in case -> we want to be in the starting
|
||||
# directory before removing whatever self-generated stuff
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
cd "${START_DIR_DONT_CHANGE}" || exit 2
|
||||
|
||||
# Verify once again we are in the releng_generated_data directory
|
||||
# Check for both returned code of grep and returned matching string
|
||||
READ_CANON_EXISTS=`readlink -e "${GEN_DATA_DIR}"`
|
||||
DIR_NAME_GEN_DATA=`dirname "${READ_CANON_EXISTS}"`
|
||||
set +e
|
||||
RET_NON_EMPTY_STRING=`echo "${DIR_NAME_GEN_DATA}" | grep -P "\w+\/releng_generated_data$"`
|
||||
GREP_RET_GEN_DATA="$?"
|
||||
case "${GREP_RET_GEN_DATA}" in
|
||||
0)
|
||||
if [ x"${RET_NON_EMPTY_STRING}" != x"" ]; then
|
||||
# now call the nastiness
|
||||
chmod +w -R ${GEN_DATA_DIR}
|
||||
rm -rf ${GEN_DATA_DIR}
|
||||
boldify
|
||||
printf "${SELF}: Removed (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
unboldify
|
||||
else
|
||||
printf "FAIL : ${SELF} : Safety check for being in releng_generated_data directory.\n"
|
||||
printf "FAIL : ${SELF} : GREP returned empty string: ${RET_NON_EMPTY_STRING}.\n"
|
||||
printf "FAIL : ${SELF} : Skipped trying to remove ${GEN_DATA_DIR} directory. Exiting.\n"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
printf "FAIL : ${SELF} : Safety check for being in releng_generated_data directory.\n"
|
||||
printf "FAIL : ${SELF} : GREP returned code: ${GREP_RET_GEN_DATA}.\n"
|
||||
printf "FAIL : ${SELF} : Skipped trying to remove ${GEN_DATA_DIR} directory. Exiting.\n"
|
||||
exit 30
|
||||
;;
|
||||
esac
|
||||
else
|
||||
printf "${SELF}: ${GEN_DATA_DIR} does not exist. Nothing to clean.\n"
|
||||
fi
|
||||
else
|
||||
boldify
|
||||
printf "${SELF}: Leaving (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
unboldify
|
||||
fi
|
||||
}
|
||||
|
||||
#############################################
|
||||
|
||||
check_for_xorriso() {
|
||||
# $1: if "-x" then check executability
|
||||
|
||||
if test -z "$RELENG_XORRISO" -o "$RELENG_XORRISO" = "0"
|
||||
then
|
||||
print_help
|
||||
# print_specific_help
|
||||
echo
|
||||
echo "${SELF}: Need -x absolute or relative path to xorriso binary."
|
||||
echo
|
||||
exit 31
|
||||
fi
|
||||
if [ x"$1" = x"-x" -a ! -x "$RELENG_XORRISO" ]
|
||||
then
|
||||
print_help
|
||||
# print_specific_help
|
||||
echo
|
||||
echo "${SELF}: Path given by option -x does not lead to an executable file."
|
||||
echo "Given is: '$RELENG_XORRISO'"
|
||||
if test "$RELENG_XORRISO" = "xorriso"
|
||||
then
|
||||
xorriso=$(type -p xorriso)
|
||||
if test -n "xorriso"
|
||||
then
|
||||
echo "Hint: Try '$xorriso'"
|
||||
fi
|
||||
fi
|
||||
echo
|
||||
exit 31
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################
|
||||
|
||||
next_is=
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is" = "ignore"
|
||||
then :
|
||||
elif test "$next_is" = "x"
|
||||
then
|
||||
RELENG_XORRISO="$i"
|
||||
next_is=
|
||||
elif test x"$i" = x"-x"
|
||||
then
|
||||
next_is="x"
|
||||
elif test x"$i" = x"-k"
|
||||
then
|
||||
CLEANUP=0
|
||||
elif test x"$i" = x"-c"
|
||||
then
|
||||
CLEANUP=1
|
||||
cleanup
|
||||
exit 0
|
||||
elif test x"$i" = x"-f"
|
||||
then
|
||||
SIMULATE_FAILURE=1
|
||||
elif test x"$i" = x"-h"
|
||||
then
|
||||
print_help
|
||||
SPECIFIC_HELP=1
|
||||
elif test x"$i" = x"--"
|
||||
then
|
||||
# Begin of private arguments for caller
|
||||
next_is="ignore"
|
||||
else
|
||||
echo >&2
|
||||
echo "Unknown general option: $i" >&2
|
||||
print_help
|
||||
exit 31
|
||||
fi
|
||||
done
|
||||
|
||||
if test "$next_is" = x
|
||||
then
|
||||
echo >&2
|
||||
echo "Option -x expects an argument (the path to the xorriso program)" >&2
|
||||
print_help
|
||||
exit 31
|
||||
fi
|
12
releng/inc/test_releng_getopt
Executable file
12
releng/inc/test_releng_getopt
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
. releng_getopts.inc
|
||||
|
||||
printf "\nRELENG_XORRISO =${RELENG_XORRISO}"
|
||||
printf "\nCLEANUP =${CLEANUP}"
|
||||
printf "\nSIMULATE_FAILURE =${SIMULATE_FAILURE}"
|
||||
printf "\n"
|
||||
|
||||
exit 0
|
214
releng/manual_burn
Executable file
214
releng/manual_burn
Executable file
@ -0,0 +1,214 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
#
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
set -e
|
||||
# set -x
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
--dev path use path as drive address. Default: /dev/cdrw
|
||||
--what path use path as address of the directory which shall
|
||||
be copied into an ISO 9660 filesystem on media.
|
||||
--any_media allow non re-usable MMC media, like CD-R or DVD+R.
|
||||
Allow paths to non-existing files, but disallow paths
|
||||
to existing regular files.
|
||||
Overview:
|
||||
Test burning to re-usable media CD-RW, DVD-RW, DVD-RAM, DVD+RW, BD-RE.
|
||||
By default, one-time usable media will be rejected deliberately.
|
||||
HLP
|
||||
}
|
||||
|
||||
getopts_inc=inc/releng_getopts.inc
|
||||
if test -e "$getopts_inc"
|
||||
then
|
||||
. "$getopts_inc"
|
||||
if test "$SPECIFIC_HELP" = 1
|
||||
then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo >&2
|
||||
echo "File not found: $getopts_inc" >&2
|
||||
echo "Are we in the ./releng directory of a libisoburn SVN checkout ?" >&2
|
||||
echo "(Please execute the tests from that ./releng directory.)" >&2
|
||||
echo >&2
|
||||
exit 29
|
||||
fi
|
||||
|
||||
# Set default values for specific option variables.
|
||||
dev=/dev/cdrw
|
||||
what=../xorriso
|
||||
any_media=0
|
||||
# Interpret specific options, they begin after the first --.
|
||||
next_is=ignore
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is" = "ignore"
|
||||
then
|
||||
if test "$i" = "--"
|
||||
then
|
||||
next_is=""
|
||||
fi
|
||||
elif test "$next_is" = "dev"
|
||||
then
|
||||
dev="$i"
|
||||
next_is=""
|
||||
elif test "$next_is" = "what"
|
||||
then
|
||||
what="$i"
|
||||
next_is=""
|
||||
elif test "$i" = "--dev"
|
||||
then
|
||||
next_is="dev"
|
||||
elif test "$i" = "--what"
|
||||
then
|
||||
next_is="what"
|
||||
elif test "$i" = "--any_media"
|
||||
then
|
||||
any_media=1
|
||||
else
|
||||
echo >&2
|
||||
echo "Unknown test specific option: $i" >&2
|
||||
print_help
|
||||
print_specific_help
|
||||
exit 31
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
check_for_xorriso -x
|
||||
|
||||
|
||||
# check data dir, if any and after checking -x xorriso
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 30
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
|
||||
# Inspect drive address
|
||||
if test -e "$dev"
|
||||
then
|
||||
if test "$any_media" = 1 -a -f "$dev"
|
||||
then
|
||||
echo "FAIL : ${SELF} : --dev $dev leads to an existing regular file"
|
||||
echo
|
||||
cleanup
|
||||
exit 31
|
||||
fi
|
||||
else
|
||||
if test "$any_media" = "0"
|
||||
then
|
||||
echo "FAIL : ${SELF} : --dev $dev does not lead to an existing file"
|
||||
echo
|
||||
cleanup
|
||||
exit 31
|
||||
fi
|
||||
fi
|
||||
|
||||
# Inspect media
|
||||
set +e
|
||||
res=$("$RELENG_XORRISO" -outdev "$dev" 2>&1)
|
||||
ret=$?
|
||||
set -e
|
||||
if test "$ret" -ne 0
|
||||
then
|
||||
echo "$res" >&2
|
||||
echo "FAIL : ${SELF} : Non-zero exit value $ret with: $RELENG_XORRISO -outdev $dev"
|
||||
echo
|
||||
cleanup
|
||||
exit 1
|
||||
elif echo "$res" | grep '^Media current:' >/dev/null 2>&1
|
||||
then
|
||||
media=$(echo "$res" | grep '^Media current:' | \
|
||||
sed -e 's/^Media current: //')
|
||||
echo "Detected media: '$media'"
|
||||
if test "$media" = "CD-RW" -o "$media" = "DVD-RW sequential recording" -o \
|
||||
"$media" = "DVD-RW restricted overwrite" -o "$media" = "DVD-RAM" -o \
|
||||
"$media" = "DVD+RW" -o "$media" = "BD-RE"
|
||||
then
|
||||
echo "Recognized as re-usable."
|
||||
elif test "$media" = "is not recognizable"
|
||||
then
|
||||
echo "FAIL : ${SELF} : No recognizable media detected in: '$dev'"
|
||||
echo
|
||||
cleanup
|
||||
exit 2
|
||||
elif test "$any_media" = 1
|
||||
then
|
||||
echo "Accepted media only because of option --any_media : '$media'"
|
||||
else
|
||||
echo "FAIL : ${SELF} : No re-usable media detected, but: '$media'"
|
||||
echo
|
||||
cleanup
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
|
||||
# Perform burn run
|
||||
echo "$RELENG_XORRISO" -for_backup -outdev "$dev" -blank as_needed -map "$what" /test
|
||||
set +e
|
||||
"$RELENG_XORRISO" \
|
||||
-for_backup \
|
||||
-outdev "$dev" \
|
||||
-blank as_needed \
|
||||
-map "$what" /test
|
||||
ret=$?
|
||||
set -e
|
||||
if test "$ret" -ne 0
|
||||
then
|
||||
echo "FAIL : ${SELF} : Non-zero exit value with burn run: $ret"
|
||||
echo
|
||||
cleanup
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test "$SIMULATE_FAILURE" = 1
|
||||
then
|
||||
echo "FAIL : ${SELF} : Simulated failure caused by option -f"
|
||||
if test -f "$dev"
|
||||
then
|
||||
# Alter image
|
||||
dd if=/dev/urandom bs=2K count=1 \
|
||||
of="$dev" conv=notrunc seek=400
|
||||
else
|
||||
cleanup
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check read
|
||||
echo "$RELENG_XORRISO" -for_backup -indev "$dev" \
|
||||
-check_media event=FATAL -- \ -check_md5_r FATAL / --
|
||||
set +e
|
||||
"$RELENG_XORRISO" \
|
||||
-for_backup \
|
||||
-indev "$dev" \
|
||||
-print '---check_media:' -check_media event=FATAL -- \
|
||||
-print '---check_md5_r:' -check_md5_r FATAL / -- \
|
||||
-print '---compare_r:' -md5 off -compare_r "$what" /test
|
||||
ret=$?
|
||||
set -e
|
||||
if test "$ret" -ne 0
|
||||
then
|
||||
echo "FAIL : ${SELF} : Non-zero exit value with checkread run: $ret"
|
||||
echo
|
||||
cleanup
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Ok. Burn test passed."
|
||||
echo
|
||||
cleanup
|
||||
exit 0
|
174
releng/manual_devices
Executable file
174
releng/manual_devices
Executable file
@ -0,0 +1,174 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
# set -e
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
--dev path Suppress dialog and use path as drive address.
|
||||
Overview:
|
||||
Test device scanning and list of speeds.
|
||||
HLP
|
||||
}
|
||||
|
||||
# Include common bits and interpret general options
|
||||
getopts_inc=inc/releng_getopts.inc
|
||||
if test -e "$getopts_inc"
|
||||
then
|
||||
. "$getopts_inc"
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1
|
||||
then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo >&2
|
||||
echo "File not found: $getopts_inc" >&2
|
||||
echo "Are we in the ./releng directory of a libisoburn SVN checkout ?" >&2
|
||||
echo "(Please execute the tests from that ./releng directory.)" >&2
|
||||
echo >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Interpret private options, they begin after the first --.
|
||||
dev=
|
||||
next_is=ignore
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is" = "ignore"
|
||||
then
|
||||
if test "$i" = "--"
|
||||
then
|
||||
next_is=""
|
||||
fi
|
||||
elif test "$next_is" = "dev"
|
||||
then
|
||||
dev="$i"
|
||||
next_is=""
|
||||
elif test "$i" = "--dev"
|
||||
then
|
||||
next_is="dev"
|
||||
else
|
||||
echo >&2
|
||||
echo "Unknown test specific option: $i" >&2
|
||||
print_help
|
||||
print_specific_help
|
||||
exit 31
|
||||
fi
|
||||
done
|
||||
|
||||
# Insist in having a xorriso
|
||||
check_for_xorriso -x
|
||||
|
||||
has_device_links=$("$RELENG_XORRISO" -help 2>/dev/null | fgrep ' -device_links')
|
||||
if test -n "$has_device_links"
|
||||
then
|
||||
devices_opt="-device_links"
|
||||
else
|
||||
devices_opt="-devices"
|
||||
fi
|
||||
|
||||
#
|
||||
get_speeds() {
|
||||
echo -e "\n${SELF}: Running: ${RELENG_XORRISO} -report_about WARNING -outdev ${1} -toc -list_formats -list_profiles out -list_speeds"
|
||||
"$RELENG_XORRISO" -report_about WARNING -outdev "$1" \
|
||||
-print '---toc :' -toc \
|
||||
-print '---list_formats :' -list_formats \
|
||||
-print '---list_profiles :' -list_profiles out \
|
||||
-print '---list_speeds :' -list_speeds
|
||||
}
|
||||
|
||||
cat_var() {
|
||||
# $1 = variable to put out with line feeds
|
||||
cat <<+
|
||||
$1
|
||||
+
|
||||
}
|
||||
|
||||
get_devices() {
|
||||
# $1 = if not empty: device lines from xorriso -devices or -device_links
|
||||
# $2 = if not empty: suppress dialog and use $2 as input
|
||||
|
||||
if test -n "$1"
|
||||
then
|
||||
DEVICES="$1"
|
||||
else
|
||||
DEVICES=$("$RELENG_XORRISO" $devices_opt 2>/dev/null | grep "\-dev")
|
||||
fi
|
||||
NUM_DEV=$(cat_var "$DEVICES" | wc -l)
|
||||
case "${NUM_DEV}" in
|
||||
0)
|
||||
echo -e "\n${SELF}: No drives found."
|
||||
exit 1
|
||||
;;
|
||||
1)
|
||||
echo -e "\n${SELF}: 1 drive found:\n"
|
||||
;;
|
||||
*)
|
||||
echo -e "\n${SELF}: ${NUM_DEV} drives found:\n"
|
||||
;;
|
||||
esac
|
||||
echo =================================================================
|
||||
echo "$DEVICES"
|
||||
echo =================================================================
|
||||
|
||||
OUTDEV=$( cat_var "$DEVICES" | head -1 | \
|
||||
sed -e "s/[0-9] *-dev '\//\//" -e "s/'.*$//" )
|
||||
if test -n "$2"
|
||||
then
|
||||
x="$2"
|
||||
else
|
||||
echo >&2
|
||||
echo "WARNING: The following tests might pull in the drive tray." >&2
|
||||
echo " Best is if you now put in a suitable media and" >&2
|
||||
echo " load it manually, so nobody gets surprised. :))" >&2
|
||||
echo >&2
|
||||
echo "Which drive to examine ? (Empty input = ${OUTDEV})" >&2
|
||||
read x
|
||||
fi
|
||||
if test -n "$x"
|
||||
then
|
||||
OUTDEV="$x"
|
||||
fi
|
||||
|
||||
get_speeds "$OUTDEV"
|
||||
}
|
||||
|
||||
# main
|
||||
"$RELENG_XORRISO" -version
|
||||
echo -e "\n${SELF}: Running: $RELENG_XORRISO $devices_opt ..."
|
||||
devices=$("$RELENG_XORRISO" -report_about WARNING $devices_opt | grep "\-dev")
|
||||
RET="$?"
|
||||
if test "$SIMULATE_FAILURE" = 1
|
||||
then
|
||||
echo "===" >&2
|
||||
echo "=== SIMULATING FAILURE BY OVERRIDING EXIT VALUE OF XORRISO" >&2
|
||||
echo "===" >&2
|
||||
echo "FAIL : ${SELF} : Simulated failure caused by option -f"
|
||||
RET=1
|
||||
fi
|
||||
case ${RET} in
|
||||
0)
|
||||
get_devices "$devices" "$dev"
|
||||
RET="$?"
|
||||
if test "$RET" = 0
|
||||
then :
|
||||
else
|
||||
echo "FAIL : ${SELF} : Device scan or single drive listing failed"
|
||||
exit "$RET"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
boldify
|
||||
echo -ne "\n${SELF}: ${RELENG_XORRISO} $devices_opt returned ${RET}."
|
||||
unboldify
|
||||
echo -e "\n${SELF}: Already mounted?"
|
||||
df -kh
|
||||
esac
|
||||
|
||||
exit 0
|
@ -1,121 +1,62 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
set -e
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
SELF=$(basename "$0")
|
||||
not_in_releng_exit() {
|
||||
printf "\nPlease execute the tests from releng directory.\n\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
. inc/releng_getopts.inc || not_in_releng_exit
|
||||
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
none yet.
|
||||
Overview:
|
||||
Match the resulting ISO image representation
|
||||
against the jigdo representation.
|
||||
HLP
|
||||
}
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1; then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -x $RELENG_XORRISO ]; then
|
||||
print_help
|
||||
printf "\n${SELF}: -x absolute or relative path to binary to be run.\n\n"
|
||||
exit 30
|
||||
fi
|
||||
|
||||
# check data dir, if any and after checking -x xorriso
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 1
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
# required config items
|
||||
CONFFILE=$HOME/.libburnia-releng/${SELF}.conf
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
TMP_DATA_DIR=releng_generated_data
|
||||
IMG_EXTRACT_DIR=${GEN_DATA_DIR}/${SELF}_extracted_tree
|
||||
|
||||
# to be set by the config file
|
||||
RELENG_XORRISO=""
|
||||
|
||||
RELENG_DIR="${IMG_EXTRACT_DIR}"
|
||||
RELENG_ISOLINUX_BIN="isolinux/isolinux.bin"
|
||||
RELENG_BOOT_CAT="isolinux/boot.cat"
|
||||
RELENG_IMG=t1
|
||||
|
||||
KEEP=0
|
||||
RES=""
|
||||
|
||||
REMOTE_URL="http://cdimage.debian.org/cdimage/daily-builds/daily/current/i386/iso-cd"
|
||||
REMOTE_IMG="debian-testing-i386-businesscard.iso"
|
||||
|
||||
#####
|
||||
print_help() {
|
||||
cat << HLP
|
||||
Usage:
|
||||
${SELF} -help
|
||||
|
||||
# using a config file ${CONFFILE}
|
||||
${SELF} -rc [-keep]
|
||||
|
||||
# without using a config file
|
||||
${SELF} /absolute/or/relative/path/to/xorriso [-keep]
|
||||
|
||||
# cleanup test generated data directory and exit
|
||||
${SELF} -cleanup
|
||||
HLP
|
||||
}
|
||||
|
||||
#####
|
||||
cleanup() {
|
||||
if [ ${KEEP} -eq 0 ]; then
|
||||
# safety net, just in case -> we want to be in the starting
|
||||
# directory before removing whatever self-generated stuff
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
cd "${START_DIR_DONT_CHANGE}" || exit 15
|
||||
chmod +w -R ${GEN_DATA_DIR}
|
||||
rm -rf ${GEN_DATA_DIR}
|
||||
printf "${SELF}: Removed (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
else
|
||||
printf "${SELF}: ${GEN_DATA_DIR} does not exist. Nothing to clean.\n"
|
||||
fi
|
||||
else
|
||||
printf "${SELF}: Leaving (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
fi
|
||||
}
|
||||
|
||||
# cleanup
|
||||
if [ "${1}" == "-cleanup" ]; then
|
||||
cleanup
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# help
|
||||
if [ ! "${1}" ]; then
|
||||
print_help && exit 3
|
||||
# config file
|
||||
elif [ "${1}" == "-rc" -a "${2}" == "-keep" ]; then
|
||||
KEEP=1
|
||||
if [ -e ${CONFFILE} ]; then
|
||||
. ${CONFFILE}
|
||||
printf "${SELF}: Using config file %s\n" ${CONFFILE}
|
||||
else
|
||||
echo -e "\n${SELF}: Config file ${CONFFILE} not found.\n" && exit 4
|
||||
fi
|
||||
elif [ "${1}" == "-rc" -a ! "${2}" ]; then
|
||||
KEEP=0
|
||||
if [ -e ${CONFFILE} ]; then
|
||||
. ${CONFFILE}
|
||||
printf "${SELF}: Using config file %s\n" ${CONFFILE}
|
||||
else
|
||||
echo -e "\n${SELF}: Config file ${CONFFILE} not found.\n" && exit 4
|
||||
fi
|
||||
# cmdline option
|
||||
elif [ -x "${1}" -a "${2}" == "-keep" ]; then
|
||||
RELENG_XORRISO="${1}"
|
||||
KEEP=1
|
||||
elif [ -x "${1}" ]; then
|
||||
RELENG_XORRISO="${1}"
|
||||
KEEP=0
|
||||
# the rest
|
||||
else
|
||||
print_help && exit 5
|
||||
fi
|
||||
|
||||
#
|
||||
# check for required items
|
||||
if [ "${RELENG_XORRISO}" == "" -o "${RELENG_DIR}" == "" -o "${RELENG_IMG}" == "" ]; then
|
||||
echo -e "\n${SELF}: xorriso_cmd IN_dir and OUT_image are required\n"
|
||||
exit 6
|
||||
fi
|
||||
|
||||
if [ ! -x "${RELENG_XORRISO}" ]; then
|
||||
printf "${SELF}: $RELENG_XORRISO not found or not an executable.\n"
|
||||
exit 7
|
||||
fi
|
||||
|
||||
# data dir
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -cleanup' to remove.\n"
|
||||
exit 8
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# All must be set at this point
|
||||
@ -125,16 +66,25 @@ printf "\n\tIN_isolinux=${RELENG_ISOLINUX_BIN}\n\tOUT_bootcat=${RELENG_BOOT_CAT}
|
||||
RES="${RELENG_IMG}.iso ${RELENG_IMG}.new ${RELENG_IMG}.md5 ${RELENG_IMG}.jigdo ${RELENG_IMG}.template"
|
||||
|
||||
# xorriso version details, incl. underlying libraries
|
||||
"${RELENG_XORRISO}" -version
|
||||
if ! "${RELENG_XORRISO}" -version | grep libjte >/dev/null 2>&1; then
|
||||
printf "\n${SELF}: JTE not supported with this xorriso build. Install jigit >=1.18 and rebuild."
|
||||
printf "\n${SELF}: http://www.einval.com/~steve/software/JTE/\n"
|
||||
cleanup
|
||||
exit 9
|
||||
fi
|
||||
# "${RELENG_XORRISO}" -version
|
||||
|
||||
# remove cruft from previous runs
|
||||
# rm -f ${RES}
|
||||
# check whether the binary support JTE
|
||||
set +e
|
||||
RETSTR_VER_JTE=`"${RELENG_XORRISO}" --version 2>/dev/null | grep -P "(libjte\s+in\s+use)"`
|
||||
RETCODE_VER_JTE="$?"
|
||||
set -e
|
||||
case ${RETCODE_VER_JTE} in
|
||||
0)
|
||||
printf "\n${SELF}: Found JTE support with ${RELENG_XORRISO} : ${RETSTR_VER_JTE}"
|
||||
;;
|
||||
*)
|
||||
printf "\nFAIL : ${SELF} : Not found JTE support in ${RELENG_XORRISO}. Quit."
|
||||
printf "\n${SELF}: JTE not supported with this xorriso build. Install jigit >=1.18 and rebuild."
|
||||
printf "\n${SELF}: http://www.einval.com/~steve/software/JTE/\n"
|
||||
cleanup
|
||||
exit 4
|
||||
;;
|
||||
esac
|
||||
|
||||
# grab remote ISO image, to decompose
|
||||
if [ ! -f "${TMP_DATA_DIR}"/"${REMOTE_IMG}" ]; then
|
||||
@ -147,9 +97,9 @@ if [ ! -f "${TMP_DATA_DIR}"/"${REMOTE_IMG}" ]; then
|
||||
echo -e "\n${SELF}: Downloading successfully completed.\n"
|
||||
;;
|
||||
*)
|
||||
echo -e "\n${SELF}: FAIL: wget returned code: $WGET_RET\n"
|
||||
echo -e "\nFAIL : ${SELF} : wget returned code: $WGET_RET\n"
|
||||
cleanup
|
||||
exit 10
|
||||
exit 5
|
||||
;;
|
||||
esac
|
||||
else
|
||||
@ -160,7 +110,7 @@ fi
|
||||
if [ -d "${IMG_EXTRACT_DIR}" ]; then
|
||||
printf "\n${SELF}: Found ${IMG_EXTRACT_DIR}. Please cleanup.\n"
|
||||
cleanup
|
||||
exit 11
|
||||
exit 6
|
||||
else
|
||||
mkdir "${IMG_EXTRACT_DIR}"
|
||||
fi
|
||||
@ -191,7 +141,7 @@ else
|
||||
printf "\n${SELF}: Not found: "${MKFS_MSDOS}". Install dosfstools."
|
||||
printf "\n${SELF}: http://www.daniel-baumann.ch/software/dosfstools/\n"
|
||||
cleanup
|
||||
exit 12
|
||||
exit 7
|
||||
fi
|
||||
|
||||
# GENERAL section
|
||||
@ -218,7 +168,7 @@ CMD+="\
|
||||
else
|
||||
printf "\n${SELF}: FAIL to compose the boot section.\n"
|
||||
cleanup
|
||||
exit 13
|
||||
exit 8
|
||||
fi
|
||||
|
||||
# JIGDO section
|
||||
@ -237,7 +187,7 @@ else
|
||||
printf "\n${SELF}: Not found: jigdo-gen-md5-list. Install jigit >= 1.18."
|
||||
printf "\n${SELF}: http://www.einval.com/~steve/software/JTE/\n"
|
||||
cleanup
|
||||
exit 14
|
||||
exit 9
|
||||
fi
|
||||
|
||||
CMD+="\
|
||||
@ -270,7 +220,7 @@ else
|
||||
printf "\n${SELF}: Not found: jigit-mkimage. Install jigit."
|
||||
printf "\n${SELF}: http://www.einval.com/~steve/software/JTE/\n"
|
||||
cleanup
|
||||
exit 15
|
||||
exit 10
|
||||
fi
|
||||
|
||||
# trap the exit code of diff and let the Universe explode
|
||||
@ -281,7 +231,7 @@ case ${DIFF_RET} in
|
||||
echo -e "${SELF}: Match: diff ${GEN_DATA_DIR}/${RELENG_IMG}.iso ${GEN_DATA_DIR}/${RELENG_IMG}.new"
|
||||
;;
|
||||
*)
|
||||
echo -e "${SELF}: FAIL: diff returned code: $DIFF_RET\n"
|
||||
echo -e "FAIL : ${SELF} : diff returned code: $DIFF_RET\n"
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -295,10 +245,12 @@ if [ -f "${TMP_DATA_DIR}"/"${REMOTE_IMG}" ]; then
|
||||
fi
|
||||
|
||||
# last hints
|
||||
printf "\n${SELF}: HINT: manual checks remained to be done:\n"
|
||||
printf " * ${GEN_DATA_DIR}/${RELENG_IMG}.iso boots from USB stick and/or optical media.\n"
|
||||
printf " * appended FAT partition is mountable.\n"
|
||||
printf " * xorriso -indev ${GEN_DATA_DIR}/${RELENG_IMG}.iso -pvd_info\n"
|
||||
printf " * fdisk -lu ${GEN_DATA_DIR}/${RELENG_IMG}.iso\n"
|
||||
if [ -d ${GEN_DATA_DIR} ]; then
|
||||
printf "\n${SELF}: HINT: manual checks remained to be done:\n"
|
||||
printf " * ${GEN_DATA_DIR}/${RELENG_IMG}.iso boots from USB stick and/or optical media.\n"
|
||||
printf " * appended FAT partition is mountable.\n"
|
||||
printf " * xorriso -indev ${GEN_DATA_DIR}/${RELENG_IMG}.iso -pvd_info\n"
|
||||
printf " * fdisk -lu ${GEN_DATA_DIR}/${RELENG_IMG}.iso\n"
|
||||
fi
|
||||
|
||||
exit 0
|
@ -1,109 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
SELF=$(basename "$0")
|
||||
# required config items
|
||||
RELENG_XORRISO=""
|
||||
RELENG_DIR=""
|
||||
RELENG_IMG=""
|
||||
|
||||
CONFFILE=$HOME/.libburnia-releng/${SELF}.conf
|
||||
KEEP=0
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
|
||||
printf "\n$0: FAIL: SCRIPT NOT COMPLETED YET\n"
|
||||
exit 31
|
||||
|
||||
print_help() {
|
||||
cat << HLP
|
||||
Usage:
|
||||
${SELF} -help
|
||||
|
||||
# using a config file ${CONFFILE}
|
||||
${SELF} -rc [-keep]
|
||||
|
||||
# without using a config file
|
||||
${SELF} xorriso_cmd IN_dir OUT_image [-keep]
|
||||
|
||||
# cleanup test generated data directory and exit
|
||||
${SELF} -cleanup
|
||||
HLP
|
||||
}
|
||||
|
||||
|
||||
# Thomas:
|
||||
# xorriso provides built-in means for comparison:
|
||||
# -compare_r disk_path iso_rr_path
|
||||
# Possibly i will have to enhance it so that it is suitable for automatic
|
||||
# testing. (I used it mainly for testing -update_r.)
|
||||
|
||||
# xorriso could use
|
||||
# -osirrox on -extract iso_rr_path disk_path
|
||||
# to pull a tree out of the image without mounting it.
|
||||
|
||||
# One could mount the image -o loop. (Needs superuser authority.)
|
||||
|
||||
# There is a program test/compare_file which acts on a mounted image
|
||||
# or on extracted trees i.e. completely independent of xorriso code.
|
||||
# See libisoburn/README paragraph "Testing".
|
||||
# With extracted trees one will want to use option -no_ctime.
|
||||
|
||||
# One may use command diff -r to compare directory trees of a mounted image
|
||||
# or extracted trees.
|
||||
|
||||
# George:
|
||||
# xorriso -indev my.iso -find / vs. find input_dir
|
||||
# bsdtar -xf my.iso vs. input_dir
|
||||
|
||||
|
||||
Sketched by Thomas:
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
image_file=/tmp/...
|
||||
on_disk=...
|
||||
in_iso="$on_disk"
|
||||
copy_on_disk=/tmp/...
|
||||
|
||||
if test -e "$image_file"
|
||||
then
|
||||
echo "TEST ENVIRONMENT ERROR: Existing image_file target:" >&2
|
||||
ls -ld "$image_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
if test -e "$copy_on_disk"
|
||||
then
|
||||
echo "TEST ENVIRONMENT ERROR: Existing copy_on_disk target:" >&2
|
||||
ls -ld "$copy_on_disk" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Produce simple image
|
||||
xorriso \
|
||||
-for_backup \
|
||||
-outdev "$image_file" \
|
||||
-map "$on_disk" "$in_iso"
|
||||
|
||||
# Copy from image to temporary disk tree
|
||||
xorriso \
|
||||
-for_backup \
|
||||
-indev "$image_file" \
|
||||
-osirrox on \
|
||||
-extract "$in_iso" "$copy_on_disk"
|
||||
|
||||
# Compare original disk tree and temporary one
|
||||
diff -r "$on_disk" "$copy_on_disk"
|
||||
if test "$?" -ne 0
|
||||
then
|
||||
echo 'FAIL: Original disk tree and temporary tree differ'
|
||||
else
|
||||
echo "Success."
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm -r "$copy_on_disk" "$image_file"
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
exit 0
|
@ -1,117 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
SELF=$(basename "$0")
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
KEEP=0
|
||||
SAMPLE_CODE_DIR=codesamples
|
||||
CC=g++
|
||||
|
||||
#####################################################################
|
||||
print_help() {
|
||||
cat << HLP
|
||||
Usage:
|
||||
$0 -help
|
||||
|
||||
#
|
||||
$0 -rc [-keep]
|
||||
|
||||
# cleanup test generated data directory and exit
|
||||
$0 -cleanup
|
||||
HLP
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
cleanup() {
|
||||
if [ ${KEEP} -eq 0 ]; then
|
||||
# safety net, just in case -> we want to be in the starting
|
||||
# directory before removing whatever self-generated stuff
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
cd "${START_DIR_DONT_CHANGE}" || exit 2
|
||||
rm -rf ${GEN_DATA_DIR}
|
||||
printf "${SELF}: Removed (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
else
|
||||
printf "${SELF}: ${GEN_DATA_DIR} does not exist. Nothing to clean.\n"
|
||||
fi
|
||||
else
|
||||
printf "${SELF}: Leaving (self-generated) %s\n" ${GEN_DATA_DIR}
|
||||
fi
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
# help
|
||||
if [ ! "${1}" ]; then
|
||||
print_help && exit 3
|
||||
#
|
||||
elif [ "${1}" == "-cleanup" ]; then
|
||||
cleanup
|
||||
exit 0
|
||||
#
|
||||
elif [ "${1}" == "-rc" -a "${2}" == "-keep" ]; then
|
||||
KEEP=1
|
||||
elif [ "${1}" == "-rc" -a ! "${2}" ]; then
|
||||
KEEP=0
|
||||
# the rest
|
||||
else
|
||||
print_help && exit 4
|
||||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
# check data dir
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -cleanup' to remove.\n"
|
||||
exit 5
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
# check compiler
|
||||
if ! which "${CC}" >/dev/null 2>&1; then
|
||||
printf "\n${SELF}: Not found: ${CC}. Install ${CC}.\n"
|
||||
cleanup
|
||||
exit 6
|
||||
fi
|
||||
|
||||
# process sample code tests
|
||||
# if test -f "${SAMPLE_CODE_DIR}"/*.cpp; then
|
||||
for SMPL in `ls "${SAMPLE_CODE_DIR}"/*.cpp`; do
|
||||
CMD_CPL="${CC} -I../ -L ../libisoburn/.libs/ -lisoburn -o ${SMPL}.obj ${SMPL}"
|
||||
printf "${SELF}: ${CMD_CPL}\n"
|
||||
set +e
|
||||
${CMD_CPL}
|
||||
RET_CPL="$?"
|
||||
if [ ${RET_CPL} == 0 -a -f ${SMPL}.obj ]; then
|
||||
mv ${SMPL}.obj ${GEN_DATA_DIR}
|
||||
else
|
||||
printf "\n${SELF}: FAIL Compilation of ${SMPL}\n"
|
||||
cleanup
|
||||
exit 7
|
||||
fi
|
||||
BASE=$(basename ${SMPL}.obj)
|
||||
printf "${SELF}: Running LD_LIBRARY_PATH=../libisoburn/.libs/:${LD_LIBRARY_PATH} ${GEN_DATA_DIR}/${BASE}"
|
||||
LD_LIBRARY_PATH=../libisoburn/.libs/:${LD_LIBRARY_PATH} ${GEN_DATA_DIR}/${BASE}
|
||||
RET_SMPL="$?"
|
||||
case ${RET_SMPL} in
|
||||
0)
|
||||
printf "...ok\n"
|
||||
;;
|
||||
*)
|
||||
printf "exit code: ${RET_SMPL}\n"
|
||||
cleanup
|
||||
exit 8
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
done
|
||||
#else
|
||||
# printf "\n${SELF}: No C++ code samples found in ${SAMPLE_CODE_DIR}\n"
|
||||
#fi
|
||||
|
||||
# clean
|
||||
cleanup
|
||||
|
||||
exit 0
|
@ -1,264 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ts 2011.06.27
|
||||
# Test the correct handling of hardlinks by xorriso options
|
||||
# -update_r , -hardlinks perform_update , and -extract
|
||||
|
||||
export prog=$(basename "$0")
|
||||
|
||||
export xorriso=xorriso
|
||||
export workdir=./releng_generated_data/"$prog"
|
||||
export image_file="$workdir"/xorriso_hardlinks.iso
|
||||
export on_disk="$workdir"/xorriso_hardlinks_test_dir
|
||||
export in_iso=""
|
||||
export copy_on_disk="$workdir"/xorriso_hardlinks_copy_dir
|
||||
export keep=0
|
||||
export failure=0
|
||||
export simulate_failure=0
|
||||
export next_is_xorriso=0
|
||||
export next_is_rc=0
|
||||
export bad=0
|
||||
export report_about="-report_about UPDATE"
|
||||
|
||||
config_by_var() {
|
||||
# This is called once before option interpretation, and once for each
|
||||
# option -rc.
|
||||
# Variables get set to empty content to keep them from being applied
|
||||
# more than once and thus overriding settings of higher precedence.
|
||||
|
||||
test -n "$RELENG_XORRISO" && xorriso="$RELENG_XORRISO" && RELENG_XORRISO=
|
||||
|
||||
test -n "$RELENG_WORKIMAGE" && image_file="$RELENG_WORKIMAGE" \
|
||||
&& RELENG_WORKIMAGE=
|
||||
|
||||
test -n "$RELENG_WORKDIR" && on_disk="$RELENG_WORKDIR" && RELENG_WORKDIR=
|
||||
|
||||
test -n "$RELENG_ISODIR" && in_iso="$RELENG_ISODIR" && RELENG_ISODIR=
|
||||
|
||||
test -n "$RELENG_WORKCOPYDIR" && copy_on_disk="$RELENG_WORKCOPYDIR" \
|
||||
&& RELENG_WORKCOPYDIR=
|
||||
|
||||
}
|
||||
|
||||
clean_up() {
|
||||
if test "$keep" = 1
|
||||
then
|
||||
echo "=== Kept test area because of option -keep" >&2
|
||||
echo "$on_disk" "$copy_on_disk" "$image_file" "$workdir" >&2
|
||||
else
|
||||
echo "=== Removing test area" >&2
|
||||
rm -r "$on_disk" "$copy_on_disk" "$image_file"
|
||||
rm -r "$workdir"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Setup
|
||||
|
||||
|
||||
# Interpret a default configuration file here, if the test has one.
|
||||
# This one has none.
|
||||
|
||||
# >>> Best would be if the configuration file would not override env variables.
|
||||
|
||||
# Process env variables and default configfile variables together
|
||||
config_by_var
|
||||
|
||||
|
||||
# Now interpret program arguments and possibly given config files
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is_xorriso" = 1
|
||||
then
|
||||
xorriso="$i"
|
||||
next_is_xorriso=0
|
||||
elif test "$next_is_rc" = 1
|
||||
then
|
||||
|
||||
# >>> This looks darn dangerous. We need a trustworthy config interpreter.
|
||||
# >>> http://www.netjeff.com/humor/item.cgi?file=ShootInFoot-OS
|
||||
. "$i"
|
||||
|
||||
config_by_var
|
||||
next_is_rc=0
|
||||
elif test x"$i" = x"-rc"
|
||||
then
|
||||
next_is_rc=1
|
||||
elif test x"$i" = x"-keep"
|
||||
then
|
||||
keep=1
|
||||
elif test x"$i" = x"-cleanup"
|
||||
then
|
||||
keep=0
|
||||
clean_up
|
||||
exit 0
|
||||
elif test x"$i" = x"-xorriso"
|
||||
then
|
||||
next_is_xorriso=1
|
||||
elif test x"$i" = x"-v"
|
||||
then
|
||||
report_about="-report_about ALL"
|
||||
elif test x"$i" = x"-fail"
|
||||
then
|
||||
simulate_failure=1
|
||||
else
|
||||
echo "Usage: $0 [-rc FILE] [-keep] [-cleanup] [-fail] [-xorriso PATH] [-v]" >&2
|
||||
exit 2
|
||||
fi
|
||||
done
|
||||
|
||||
test -z "$in_iso" && in_iso="$on_disk"
|
||||
|
||||
if test -d ./releng_generated_data
|
||||
then
|
||||
dummy=dummy
|
||||
else
|
||||
echo "=== TEST ENVIRONMENT ERROR: $prog : No ./releng_generated_data directory existing" >&2
|
||||
echo "=== Is the current working directory really ./releng of libisoburn ?" >&2
|
||||
echo "FAIL : $prog : Test environment error : No ./releng_generated_data directory"
|
||||
exit 3
|
||||
fi
|
||||
if test -e "$workdir"
|
||||
then
|
||||
echo "=== TEST ENVIRONMENT ERROR: $prog : Existing work directory:" >&2
|
||||
ls -ld "$workdir" >&2
|
||||
bad=1
|
||||
fi
|
||||
if test -e "$image_file"
|
||||
then
|
||||
echo "=== TEST ENVIRONMENT ERROR: $prog : Existing image_file target:" >&2
|
||||
ls -ld "$image_file" >&2
|
||||
bad=1
|
||||
fi
|
||||
if test -e "$on_disk"
|
||||
then
|
||||
echo "=== TEST ENVIRONMENT ERROR: $prog : Existing on_disk target:" >&2
|
||||
ls -ld "$on_disk" >&2
|
||||
bad=1
|
||||
fi
|
||||
if test -e "$copy_on_disk"
|
||||
then
|
||||
echo "=== TEST ENVIRONMENT ERROR: $prog : Existing copy_on_disk target:" >&2
|
||||
ls -ld "$copy_on_disk" >&2
|
||||
bad=1
|
||||
fi
|
||||
if test "$bad" = 1
|
||||
then
|
||||
echo "FAIL : $prog : Test environment error : Existing work files"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
bad=0
|
||||
mkdir "$workdir" || bad=1
|
||||
mkdir "$on_disk" || bad=1
|
||||
if test "$bad" = 1
|
||||
then
|
||||
echo "FAIL : $prog : Test environment error : Cannot make directories"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
|
||||
echo "=== Setting up $on_disk with several hardlinks" >&2
|
||||
echo test_content >"$on_disk"/file_1 || exit 1
|
||||
echo test_content >"$on_disk"/file_2 || exit 1
|
||||
ln "$on_disk"/file_1 "$on_disk"/file_1_link_a || exit 1
|
||||
ln "$on_disk"/file_1 "$on_disk"/file_1_link_b || exit 1
|
||||
ln "$on_disk"/file_2 "$on_disk"/file_2_link_a || exit 1
|
||||
ls -l "$on_disk"/*
|
||||
|
||||
is_valid_iso9660() {
|
||||
ISOfile="$1"
|
||||
if [ ! -f ${ISOfile} ]; then
|
||||
failure=1
|
||||
printf "${prog}: FAIL: Not found: ${ISOfile}\n"
|
||||
fi
|
||||
if file ${ISOfile} | grep -P "ISO\s+9660\s+CD-ROM\s+filesystem\s+data" >/dev/null 2>&1; then
|
||||
printf "=== ${ISOfile} OK\n"
|
||||
else
|
||||
failure=1
|
||||
printf "${prog}: FAIL: ${ISOfile} does not look like ISO 9660 filesystem data\n"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "=== Producing simple images via -o, redirect, and pipe" >&2
|
||||
"$xorriso" -as mkisofs "$on_disk" -o "$workdir"/image_minus_o.iso
|
||||
is_valid_iso9660 "$workdir"/image_minus_o.iso
|
||||
"$xorriso" -as mkisofs "$on_disk" > "$workdir"/image_redirected.iso
|
||||
is_valid_iso9660 "$workdir"/image_redirected.iso
|
||||
"$xorriso" -as mkisofs "$on_disk" | cat > "$workdir"/image_piped.iso
|
||||
is_valid_iso9660 "$workdir"/image_piped.iso
|
||||
|
||||
|
||||
echo "=== Producing simple image" >&2
|
||||
"$xorriso" \
|
||||
$report_about \
|
||||
-version \
|
||||
-for_backup \
|
||||
-padding 0 \
|
||||
-outdev "$image_file" \
|
||||
-update_r "$on_disk" "$in_iso" \
|
||||
-hardlinks perform_update
|
||||
|
||||
echo "=== Copying from image to temporary disk tree" >&2
|
||||
"$xorriso" \
|
||||
$report_about \
|
||||
-for_backup \
|
||||
-indev "$image_file" \
|
||||
-osirrox on \
|
||||
-find "$in_iso" -exec lsdl -- \
|
||||
-extract "$in_iso" "$copy_on_disk"
|
||||
|
||||
|
||||
if test "$simulate_failure" = 1
|
||||
then
|
||||
echo "===" >&2
|
||||
echo "=== SIMULATING FAILURE BY REMOVING AN EXTRACTED FILE" >&2
|
||||
echo "===" >&2
|
||||
echo "FAIL : $prog : Simulated failure caused by option -fail"
|
||||
rm "$copy_on_disk"/file_1_link_b
|
||||
fi
|
||||
|
||||
|
||||
echo "=== Comparing original disk tree and temporary one" >&2
|
||||
diff -r "$on_disk" "$copy_on_disk"
|
||||
if test "$?" -ne 0
|
||||
then
|
||||
echo "=== WRONG: diff -r $on_disk $copy_on_disk reports differences" >&2
|
||||
echo "FAIL : $prog : diff -r reports differences"
|
||||
failure=1
|
||||
else
|
||||
echo "=== OK" >&2
|
||||
fi
|
||||
|
||||
echo "=== Checking for hardlinks being siblings" >&2
|
||||
ls -l "$copy_on_disk"/*
|
||||
x=$(echo $(ls -l "$copy_on_disk"/* | awk '{print $2}'))
|
||||
expected="3 3 3 2 2"
|
||||
if test x"$x" = x"$expected"
|
||||
then
|
||||
echo "=== OK" >&2
|
||||
else
|
||||
echo "=== WRONG: Link count of extracted files is not as expected." >&2
|
||||
echo "=== Expected: $expected" >&2
|
||||
echo "=== Got : $x" >&2
|
||||
echo "FAIL : $prog : Link count of extracted files is not as expected."
|
||||
failure=1
|
||||
fi
|
||||
|
||||
|
||||
clean_up
|
||||
|
||||
|
||||
# Report result
|
||||
echo
|
||||
if test "$failure" = 1
|
||||
then
|
||||
echo "======== $prog :" 'FAILED'
|
||||
echo
|
||||
exit 1
|
||||
else
|
||||
echo "======== $prog :" "Passed"
|
||||
echo
|
||||
fi
|
||||
|
||||
exit 0
|
@ -1,6 +0,0 @@
|
||||
# *** Set your paths, see below
|
||||
# *** Expected location is $HOME/.libburnia-releng/releng_isojigdo.conf
|
||||
# *** Then a run of 'releng_isojigdo -rc' will pick it up
|
||||
|
||||
# xorriso executable to be tested
|
||||
RELENG_XORRISO=/path/to/xorriso
|
@ -1,136 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
SELF=$(basename "$0")
|
||||
# required config items
|
||||
RELENG_XORRISO=""
|
||||
RELENG_GENISOIMAGE=/usr/bin/genisoimage
|
||||
RELENG_MKISOFS=/usr/bin/mkisofs
|
||||
|
||||
# config file
|
||||
CONFFILE=${HOME}/.libburnia-releng/${SELF}.conf
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
|
||||
UPPER=40
|
||||
KEEP=0
|
||||
|
||||
#####################################################################
|
||||
print_help() {
|
||||
cat << HLP
|
||||
Usage:
|
||||
$0 -help
|
||||
|
||||
# using a config file ${CONFFILE}
|
||||
$0 -rc [-keep]
|
||||
|
||||
# without using a config file
|
||||
$0 xorriso_cmd
|
||||
|
||||
# cleanup test generated data directory and exit
|
||||
$0 -cleanup
|
||||
HLP
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
# cleanup
|
||||
if [ "${1}" == "-cleanup" ]; then
|
||||
cd "${START_DIR_DONT_CHANGE}" || exit 2
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
rm -rf ${GEN_DATA_DIR}
|
||||
printf "${SELF}: removed %s\n" ${GEN_DATA_DIR}
|
||||
else
|
||||
printf "${SELF}: ${GEN_DATA_DIR} does not exist.\n"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# help
|
||||
if [ ! "${1}" ]; then print_help && exit 3; fi
|
||||
# config file
|
||||
if [ "${1}" == "-rc" ]; then
|
||||
if [ -e ${CONFFILE} ]; then
|
||||
. ${CONFFILE}
|
||||
printf "${SELF}: Using config file %s\n" ${CONFFILE}
|
||||
else
|
||||
echo -e "\n${SELF}: Config file ${CONFFILE} not found.\n" && exit 4
|
||||
fi
|
||||
if [ "${2}" == "-keep" ]; then KEEP=1; fi
|
||||
# command line args
|
||||
elif [ "${1}" ]; then
|
||||
RELENG_XORRISO="${1}"
|
||||
if [ "${2}" == "-keep" ]; then KEEP=1; fi
|
||||
# the rest
|
||||
else
|
||||
print_help && exit 5
|
||||
fi
|
||||
|
||||
# data dir
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -cleanup' to remove.\n"
|
||||
exit 6
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
if [ "${RELENG_XORRISO}" == "" ]; then
|
||||
echo -e "\n${SELF}: xorriso_cmd is required\n"
|
||||
exit 7
|
||||
fi
|
||||
|
||||
if [ ! -x "${RELENG_XORRISO}" ]; then
|
||||
printf "${SELF}: Not found or not an executable: $RELENG_XORRISO\n"
|
||||
exit 8
|
||||
fi
|
||||
|
||||
# all must be set at this point
|
||||
printf "${SELF}: Config items:"
|
||||
printf "\n\txorriso_cmd=${RELENG_XORRISO}\n"
|
||||
|
||||
# xorriso version details, incl. underlying libraries
|
||||
"${RELENG_XORRISO}" -version
|
||||
if ! "${RELENG_XORRISO}" -version | grep libjte >/dev/null 2>&1; then
|
||||
printf "\n${SELF}: JTE not supported with this xorriso build. Install jigit and rebuild."
|
||||
printf "\n${SELF}: See http://www.einval.com/~steve/software/JTE/\n"
|
||||
exit 9
|
||||
fi
|
||||
|
||||
################################################
|
||||
printf "${SELF}: Generating sample tree..."
|
||||
for ((i1=0; i1 < ${UPPER}/4; i1++))
|
||||
do
|
||||
for ((i2=0; i2 < ${UPPER}/2; i2++))
|
||||
do
|
||||
for ((i3=0; i3 < ${UPPER}; i3++))
|
||||
do
|
||||
mkdir -p ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3
|
||||
touch ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3/FileOne
|
||||
done
|
||||
done
|
||||
done
|
||||
printf "done.\n"
|
||||
|
||||
# Disk cache might play dirty games, so re-run these several times?
|
||||
if [ -x ${RELENG_XORRISO} ]; then
|
||||
printf "\n${SELF}: Running ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR}\n"
|
||||
time ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR}
|
||||
fi
|
||||
|
||||
if [ -x ${RELENG_GENISOIMAGE} ]; then
|
||||
printf "\n${SELF}: Running ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR}\n"
|
||||
time ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR}
|
||||
fi
|
||||
|
||||
if [ -x ${RELENG_MKISOFS} ]; then
|
||||
printf "\n${SELF}: Running ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR}\n"
|
||||
time ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR}
|
||||
fi
|
||||
|
||||
if [ ${KEEP} -eq 0 ]; then
|
||||
cd ${START_DIR_DONT_CHANGE} || exit 10
|
||||
rm -rf ${GEN_DATA_DIR}
|
||||
fi
|
||||
|
||||
exit 0
|
@ -1,6 +0,0 @@
|
||||
# *** Set your paths, see below
|
||||
# *** Expected location is $HOME/.libburnia-releng/releng_printsize.conf
|
||||
# *** Then a run of 'releng_printsize -rc' will pick it up
|
||||
|
||||
# xorriso executable to be tested
|
||||
RELENG_XORRISO=/path/to/xorriso
|
226
releng/run_all_auto
Executable file
226
releng/run_all_auto
Executable file
@ -0,0 +1,226 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
set -e
|
||||
|
||||
SELF=$(basename "$0")
|
||||
GEN_DATA_DIR=releng_generated_data
|
||||
CLOG=${GEN_DATA_DIR}/log.${SELF}
|
||||
PASSED_OPTIONS="$@"
|
||||
RELENG_XORRISO=
|
||||
CLEANUP_LOG=0
|
||||
|
||||
not_in_releng_exit() {
|
||||
printf "\nPlease execute the tests from releng directory.\n\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# To catch the exit value of a command in a pipe
|
||||
return_value_file="$GEN_DATA_DIR"/run_all_"$$"_return_value
|
||||
return_wrapper()
|
||||
{
|
||||
cmd="$1"
|
||||
shift 1
|
||||
"$cmd" "$@"
|
||||
RET="$?"
|
||||
echo "$RET" >"$return_value_file"
|
||||
return "$RET"
|
||||
}
|
||||
|
||||
# Using only bash builtin commands.
|
||||
# On 4 year old amd64 x2 3000 MHz, xterm local,it counts 22471 lines per second
|
||||
# On 2 year old amd64 x4 2600 MHz, ssh remote, it counts 35348 lines per second
|
||||
count_lines()
|
||||
{
|
||||
# $1 if not empty: start count
|
||||
line=
|
||||
if test -n "$1"
|
||||
then
|
||||
count="$1"
|
||||
else
|
||||
count=0
|
||||
fi
|
||||
while read line
|
||||
do
|
||||
count=$(($count + 1))
|
||||
printf "\r %4d lines logged ... " "$count" >&2
|
||||
printf "%s\n" "$line"
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
# It is not a good idea to include inc/releng_getopts.inc with the
|
||||
# master script as it calls the subordinate scripts and they include
|
||||
# this file too, and we want to avoid sharing variable with subshells
|
||||
if [ ! -f inc/releng_getopts.inc ]; then
|
||||
not_in_releng_exit
|
||||
fi
|
||||
|
||||
#############################################
|
||||
next_is=
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is" = "ignore"
|
||||
then :
|
||||
elif test "$next_is" = "x"
|
||||
then
|
||||
RELENG_XORRISO="$i"
|
||||
next_is=
|
||||
elif test x"$i" = x"-x"
|
||||
then
|
||||
next_is="x"
|
||||
elif test x"$i" = x"-c"
|
||||
then
|
||||
CLEANUP_LOG=1
|
||||
fi
|
||||
done
|
||||
#############################################
|
||||
if test "$next_is" = x
|
||||
then
|
||||
echo
|
||||
echo "Option -x expects an argument (the path to the xorriso program)"
|
||||
exit 31
|
||||
fi
|
||||
|
||||
if [ ! "${1}" ]; then
|
||||
cat << HLP
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
${SELF} runs executables from CWD starting
|
||||
with auto_*, passing them its own options.
|
||||
stdout/stderr output stored in:
|
||||
${CLOG}
|
||||
|
||||
examples:
|
||||
# run xorriso and keep the self-generated data
|
||||
$ ./${SELF} -x path/to/xorriso [-k]
|
||||
|
||||
# clean up self-generated data from previous run
|
||||
$ ./${SELF} -c
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
HLP
|
||||
exit 31
|
||||
fi
|
||||
|
||||
########################################################
|
||||
if [ -f "${CLOG}" ]; then
|
||||
mv "${CLOG}" "${CLOG}".prev
|
||||
fi
|
||||
> ${CLOG}
|
||||
if [ -x "${RELENG_XORRISO}" ]; then
|
||||
echo -e "_OVERVIEW_______________________________________________________________" >> ${CLOG}
|
||||
date --utc >> ${CLOG}
|
||||
${RELENG_XORRISO} --version >> ${CLOG}
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> ${CLOG}
|
||||
fi
|
||||
DSTART=`date --utc`
|
||||
echo -ne "${SELF}: Started at ${DSTART}" | tee -a ${CLOG}
|
||||
E1=`date '+%s'`
|
||||
# require ^auto_, avoid running (your)self explicitly
|
||||
for s in `ls | grep ^auto_ | grep -v ${SELF} | sort -n`; do
|
||||
if [ -x ${s} -a ! -d ${s} ]; then
|
||||
echo -ne "\n\n_STARTING_TEST_________________________________________________________" >> ${CLOG}
|
||||
echo -ne "\n${SELF}: Running ./${s} ${PASSED_OPTIONS} :\n" \
|
||||
| tee -a ${CLOG}
|
||||
T1=`date '+%s'`
|
||||
set +e
|
||||
|
||||
if test -n "$PIPESTATUS"
|
||||
then
|
||||
# PIPESTATUS[0] should be available in bash
|
||||
./${s} ${PASSED_OPTIONS} 2>&1 | count_lines >> ${CLOG}
|
||||
RET="${PIPESTATUS[0]}"
|
||||
else
|
||||
# a more portable method which uses a temporary file to record exit value
|
||||
return_wrapper ./${s} ${PASSED_OPTIONS} 2>&1 | count_lines >> ${CLOG}
|
||||
RET=$(cat "$return_value_file")
|
||||
rm "$return_value_file"
|
||||
fi
|
||||
# echo "RET='$RET'" >/dev/tty
|
||||
|
||||
T2=`date '+%s'`
|
||||
let TS="${T2} - ${T1}"
|
||||
case ${RET} in
|
||||
0)
|
||||
printf "done in ${TS} sec. ok."
|
||||
;;
|
||||
*)
|
||||
printf "done in ${TS} sec. "
|
||||
which tput >/dev/null 2>&1 && tput smso
|
||||
printf "FAIL -> EXIT CODE $RET"
|
||||
which tput >/dev/null 2>&1 && tput rmso
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
fi
|
||||
done
|
||||
|
||||
DEND=`date --utc`
|
||||
echo -ne "\n${SELF}: Stopped at ${DEND}." | tee -a ${CLOG}
|
||||
if [ "${CLEANUP_LOG}" -eq 1 ]; then
|
||||
if [ -f "${CLOG}" ]; then
|
||||
rm -f "${CLOG}"
|
||||
echo -ne "\n${SELF}: Removed my own log ${CLOG}." # | tee -a ${CLOG}
|
||||
fi
|
||||
if [ -f "${CLOG}".prev ]; then
|
||||
rm -f "${CLOG}".prev
|
||||
echo -e "\n${SELF}: Removed my own log ${CLOG}.prev." # | tee -a ${CLOG}
|
||||
fi
|
||||
else
|
||||
E2=`date '+%s'`
|
||||
if [ ${E2} -eq ${E1} ]; then
|
||||
echo -e " Total elapsed 0 sec." | tee -a ${CLOG}
|
||||
else
|
||||
let ES="${E2} - ${E1}"
|
||||
echo -e " Total elapsed ${ES} sec." | tee -a ${CLOG}
|
||||
fi
|
||||
#####
|
||||
echo -e "\n_SUMMARY________________________________________________________________" >> ${CLOG}
|
||||
echo -e "${SELF}: Trivial log examination: ${CLOG}" | tee -a ${CLOG}
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" | tee -a ${CLOG}
|
||||
# severity classes of libdax_msgs.h in libburn and libisofs
|
||||
# List of boring keywords:
|
||||
# 'UPDATE|NOTE|DEBUG|ALL' - not considered interesting for lazy log inspection.
|
||||
# List of interesting keywords:
|
||||
# thrown by xorriso and underlying libraries
|
||||
LIST_KWD="(NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT"
|
||||
# thrown by others
|
||||
LIST_KWD+="|FAIL|ERROR|WRONG)"
|
||||
|
||||
if [ -f "${CLOG}" ]; then
|
||||
set +e
|
||||
# lines, perl regex, leading tabs
|
||||
grep -n -P "${LIST_KWD}" "${CLOG}"
|
||||
RET_GREP="$?"
|
||||
case ${RET_GREP} in
|
||||
0) # found
|
||||
;;
|
||||
1) # not found
|
||||
echo -e "${SELF}: Log file looks clear." # | tee -a ${CLOG}
|
||||
;;
|
||||
*) #
|
||||
echo -e "${SELF}: grep returned EXIT CODE: ${RET_GREP}." # | tee -a ${CLOG}
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
fi
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" | tee -a ${CLOG}
|
||||
|
||||
##### TODO: work out a less noisy diff'ing technique!
|
||||
if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then
|
||||
echo -e "${SELF}: See diff against previous log file (might be long):" | tee -a ${CLOG}
|
||||
echo -e "diff -Naur ${CLOG}.prev ${CLOG} | less" | tee -a ${CLOG}
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
#
|
||||
which tput >/dev/null 2>&1 && tput smso
|
||||
echo -e "\n${SELF}: Leaving the following cruft in ${GEN_DATA_DIR}:" # | tee -a ${CLOG}
|
||||
which tput >/dev/null 2>&1 && tput rmso
|
||||
ls -lth "${GEN_DATA_DIR}" # | tee -a ${CLOG}
|
||||
|
||||
# Fin
|
||||
exit 0
|
@ -1,115 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SELF=$(basename "$0")
|
||||
GEN_DATA_DIR=releng_generated_data
|
||||
CLOG=${GEN_DATA_DIR}/log.${SELF}
|
||||
|
||||
PASSED_OPTIONS=""
|
||||
|
||||
if [ "${1}" == "-cleanup" ]; then
|
||||
PASSED_OPTIONS="-cleanup"
|
||||
elif [ "${1}" == "-rc" -a "${2}" == "-keep" ]; then
|
||||
PASSED_OPTIONS="-rc -keep"
|
||||
elif [ "${1}" == "-rc" ]; then
|
||||
PASSED_OPTIONS="-rc"
|
||||
else
|
||||
cat << HLP
|
||||
|
||||
${SELF} runs executables from CWD starting with releng_*.
|
||||
stdout/stderr output stored in ${CLOG}
|
||||
|
||||
${SELF} -rc [-keep]
|
||||
${SELF} -cleanup
|
||||
|
||||
HLP
|
||||
exit 101
|
||||
fi
|
||||
|
||||
########################################################
|
||||
if [ -f "${CLOG}" ]; then
|
||||
mv "${CLOG}" "${CLOG}".prev
|
||||
fi
|
||||
> ${CLOG}
|
||||
DSTART=`date --utc`
|
||||
printf "\n${SELF}: Started at ${DSTART}"
|
||||
E1=`date '+%s'`
|
||||
# require ^releng_, avoid running (your)self explicitly
|
||||
for s in `ls | grep ^releng_ | grep -v ${SELF} | sort -n`; do
|
||||
if [ -x ${s} -a ! -d ${s} ]; then
|
||||
# tee(1) does trailing \n, which is unwanted in that case
|
||||
printf "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..."
|
||||
echo -e "\n${SELF}: Running ./${s} ${PASSED_OPTIONS}..." >> ${CLOG}
|
||||
echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> ${CLOG}
|
||||
T1=`date '+%s'`
|
||||
set +e
|
||||
./${s} ${PASSED_OPTIONS} &>> ${CLOG}
|
||||
RET=$?
|
||||
T2=`date '+%s'`
|
||||
let TS="${T2} - ${T1}"
|
||||
case ${RET} in
|
||||
0)
|
||||
printf "done in ${TS} sec. ok."
|
||||
;;
|
||||
*)
|
||||
printf "done in ${TS} sec. FAIL. EXIT CODE: $RET;"
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
fi
|
||||
done
|
||||
|
||||
DEND=`date --utc`
|
||||
printf "\n${SELF}: Stopped at ${DEND}."
|
||||
|
||||
if [ "${1}" == "-cleanup" ]; then
|
||||
if [ -f "${CLOG}" ]; then rm -f "${CLOG}"; fi
|
||||
if [ -f "${CLOG}".prev ]; then rm -f "${CLOG}".prev; fi
|
||||
else
|
||||
E2=`date '+%s'`
|
||||
let ES="${E2} - ${E1}"
|
||||
printf " Total elapsed ${ES} sec."
|
||||
|
||||
#####
|
||||
printf "\n${SELF}: Std(out|err) logged in ${CLOG}."
|
||||
printf "\n${SELF}: Trivial log file examination:"
|
||||
printf "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
|
||||
# severity classes of libdax_msgs.h in libburn and libisofs
|
||||
# List of boring keywords:
|
||||
# 'UPDATE' A pacifier message during long running operations.
|
||||
# List of interesting keywords:
|
||||
# thrown by xorriso and underlying libraries
|
||||
LIST_KWD="(NEVER|ABORT|FATAL|FAILURE|MISHAP|SORRY|WARNING|HINT|NOTE|DEBUG|ALL"
|
||||
# thrown by others
|
||||
LIST_KWD+="|FAIL|ERROR|WRONG)"
|
||||
|
||||
if [ -f "${CLOG}" ]; then
|
||||
set +e
|
||||
# lines, perl regex, leading tabs
|
||||
grep -n -PT "${LIST_KWD}" "${CLOG}"
|
||||
RET_GREP="$?"
|
||||
case ${RET_GREP} in
|
||||
0) # found
|
||||
;;
|
||||
1) # not found
|
||||
printf "\n${SELF}: Log file looks clear.\n"
|
||||
;;
|
||||
*) #
|
||||
printf "\n${SELF}: grep returned EXIT CODE: ${RET_GREP}.\n"
|
||||
;;
|
||||
esac
|
||||
set -e
|
||||
fi
|
||||
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
|
||||
|
||||
##### TODO: work out a less noisy diff'ing technique!
|
||||
if [ -f "${CLOG}".prev -a -f "${CLOG}" ]; then
|
||||
printf "${SELF}: See diff against previous log file (might be long):\n"
|
||||
printf "diff -Naur ${CLOG}.prev ${CLOG} | less"
|
||||
fi
|
||||
fi
|
||||
|
||||
printf "\n"
|
||||
|
||||
exit 0
|
135
releng/template_new
Executable file
135
releng/template_new
Executable file
@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2011 George Danchev <danchev@spnet.net>
|
||||
# Copyright 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# === TEMPLATE: Add your own copyright here
|
||||
#
|
||||
# Licensed under GNU GPL version 2 or later
|
||||
|
||||
# === TEMPLATE: Remove this remark before releasing this script.
|
||||
#
|
||||
# This is a template for creating a new libisoburn/releng test.
|
||||
# It is supposed that you have read releng/README before you begin to work
|
||||
# here.
|
||||
#
|
||||
# Step 1: Invent a name for your test
|
||||
# test_name="manual_"...some.name...
|
||||
# or
|
||||
# test_name="auto_"...some.name...
|
||||
#
|
||||
# Step 2: Copy releng/template_new to $test_name
|
||||
#
|
||||
# Step 3: Edit $test_name and process any line that begins by
|
||||
# "# === TEMPLATE:". Do what the line prescribes and then remove it
|
||||
# from the script. You are not done as long as such a line remains.
|
||||
#
|
||||
# === TEMPLATE: End of remark to remove
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
# === TEMPLATE: Describe your own specific options (if any) and the test
|
||||
print_specific_help() {
|
||||
cat << HLP
|
||||
Specific options:
|
||||
--option Explanation of specific option
|
||||
Overview:
|
||||
Short explanation of test purpose and activities.
|
||||
HLP
|
||||
}
|
||||
|
||||
|
||||
getopts_inc=inc/releng_getopts.inc
|
||||
if test -e "$getopts_inc"
|
||||
then
|
||||
. "$getopts_inc"
|
||||
|
||||
if test "$SPECIFIC_HELP" = 1
|
||||
then
|
||||
print_specific_help
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo >&2
|
||||
echo "File not found: $getopts_inc" >&2
|
||||
echo "Are we in the ./releng directory of a libisoburn SVN checkout ?" >&2
|
||||
echo "(Please execute the tests from that ./releng directory.)" >&2
|
||||
echo >&2
|
||||
exit 29
|
||||
fi
|
||||
|
||||
|
||||
# === TEMPLATE: Decide whether the test will have own options,
|
||||
# === TEMPLATE: apart from those interpreted by inc/releng_getopts.inc
|
||||
# === TEMPLATE: If not, then remove this interpreter code.
|
||||
# Set default values for specific option variables. E.g.:
|
||||
# dev=
|
||||
# Interpret specific options, they begin after the first --.
|
||||
next_is=ignore
|
||||
for i in "$@"
|
||||
do
|
||||
if test "$next_is" = "ignore"
|
||||
then
|
||||
if test "$i" = "--"
|
||||
then
|
||||
next_is=""
|
||||
fi
|
||||
|
||||
# === TEMPLATE: Implement interpretation of specific options. Like:
|
||||
# elif test "$next_is" = "dev"
|
||||
# then
|
||||
# dev="$i"
|
||||
# next_is=""
|
||||
# elif test "$i" = "--dev"
|
||||
# then
|
||||
# next_is="dev"
|
||||
|
||||
else
|
||||
echo >&2
|
||||
echo "Unknown test specific option: $i" >&2
|
||||
print_help
|
||||
print_specific_help
|
||||
exit 31
|
||||
fi
|
||||
done
|
||||
# === TEMPLATE: End of own option interpreter code.
|
||||
|
||||
|
||||
# Each test should decide whether or not it needs
|
||||
# a xorriso binary to test, since some do compilations only.
|
||||
# === TEMPLATE: Decide whether you need a xorriso program.
|
||||
# === TEMPLATE: If not, then remove this function call
|
||||
check_for_xorriso -x
|
||||
|
||||
|
||||
# check data dir, if any and after checking -x xorriso
|
||||
# === TEMPLATE: Decide whether your test will possibly create own files.
|
||||
# === TEMPLATE: If yes, then make sure to remove this directory if not
|
||||
# ===
|
||||
# === TEMPLATE: If not, then remove this if ... fi statement.
|
||||
if [ -d "${GEN_DATA_DIR}" ]; then
|
||||
printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR}
|
||||
printf "\n${SELF}: use '${SELF} -c' to remove.\n"
|
||||
exit 30
|
||||
else
|
||||
mkdir "${GEN_DATA_DIR}"
|
||||
fi
|
||||
|
||||
|
||||
#####################################################################
|
||||
|
||||
|
||||
# === TEMPLATE: Perform your test activities here.
|
||||
|
||||
|
||||
# === TEMPLATE: In case of failure, issue a line to stdout that begins by
|
||||
# === TEMPLATE: the word "FAIL", and make sure that the test script finally
|
||||
# === TEMPLATE: returns a non-zero exit value.
|
||||
# === TEMPLATE: 31 = Unknown option or unusable argument with known option
|
||||
# === TEMPLATE: 30 = Unexpected state of own directory for self generated files
|
||||
# === TEMPLATE: 29 = Not in ./releng directory or missing essential parts
|
||||
# === TEMPLATE: 1 to 28 = test specific exit values
|
||||
# === TEMPLATE: When exiting prematurely, make sure to call cleanup.
|
||||
|
||||
cleanup
|
||||
exit 0
|
@ -1,47 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
START_DIR_DONT_CHANGE=`pwd`
|
||||
SELF=$(basename "$0")
|
||||
# required config items
|
||||
# RELENG_XORRISO=""
|
||||
|
||||
# optional config items
|
||||
|
||||
# config file
|
||||
CONFFILE=${HOME}/.libburnia-releng/${SELF}.conf
|
||||
GEN_DATA_DIR=releng_generated_data/${SELF}
|
||||
KEEP=0
|
||||
|
||||
printf "\n$0: FAIL: === TEPLATE === RENAME ME TO releng_<title>\n"
|
||||
exit 31
|
||||
|
||||
#####################################################################
|
||||
print_help() {
|
||||
cat << HLP
|
||||
Usage:
|
||||
$0 -help
|
||||
|
||||
# using a config file ${CONFFILE}
|
||||
$0 -rc [-keep]
|
||||
|
||||
# without using a config file
|
||||
$0 your_own_options_here
|
||||
|
||||
# cleanup test generated data directory and exit
|
||||
$0 -cleanup
|
||||
HLP
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
print_help
|
||||
#if [ ! -x "${XOR}" ]; then
|
||||
# printf "$0: Not found or not an executable: $XOR\n"
|
||||
# exit 50
|
||||
#fi
|
||||
|
||||
# xorriso version details, incl. underlying libraries
|
||||
# "${XOR}" -version
|
||||
|
||||
exit 0
|
@ -4,7 +4,7 @@
|
||||
GNU xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Derived from and supported by libburnia-project.org, published via:
|
||||
http://www.gnu.org/software/xorriso/xorriso_eng.html
|
||||
http://www.gnu.org/software/xorriso/xorriso-1.1.1.tar.gz
|
||||
http://www.gnu.org/software/xorriso/xorriso-1.1.4.tar.gz
|
||||
Provided under GPL version 3 or later. No warranty.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -46,10 +46,10 @@ Optional at compile time are:
|
||||
If they were present at compile time, then the optional libraries have to
|
||||
be present at runtime, too.
|
||||
|
||||
Obtain xorriso-1.1.1.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain xorriso-1.1.4.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf xorriso-1.1.1.tar.gz
|
||||
cd xorriso-1.1.1
|
||||
tar xzf xorriso-1.1.4.tar.gz
|
||||
cd xorriso-1.1.4
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -289,9 +289,9 @@ and a matching dynamically linked xorriso binary.
|
||||
This binary is very lean but depends on properly installed libraries of
|
||||
suitable revision.
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-1.1.0 :
|
||||
- libburn.so.4 , version libburn-1.1.0 or higher
|
||||
- libisofs.so.6 , version libisofs-1.1.0 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-1.1.4 :
|
||||
- libburn.so.4 , version libburn-1.1.4 or higher
|
||||
- libisofs.so.6 , version libisofs-1.1.4 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
setup unless you have reason to enforce a newer bug fix level.
|
||||
|
@ -308,7 +308,7 @@ int Dirseq_new(struct DirseQ **o, char *adr, int flag)
|
||||
m->buffer_rpt= 0;
|
||||
m->next= NULL;
|
||||
if(Sfile_str(m->adr, adr, 0)<=0)
|
||||
{ret= 0; goto failed;}
|
||||
{ret= -1; goto failed;}
|
||||
m->buffer= TSOB_FELD(char *,Dirseq_buffer_sizE);
|
||||
if(m->buffer==NULL)
|
||||
{ret= -1; goto failed;}
|
||||
|
@ -10965,34 +10965,586 @@ xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
Version leap to libisoburn-1.1.1
|
||||
|
||||
18 Jun 2011 [3880]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
18 Jun 2011 [3881]
|
||||
svn move -m Promoted branch to tag
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.1.0
|
||||
http://svn.libburnia-project.org/libisoburn/tags/1.1.0
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.1 - 2011.06.18.173208
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.1 - 2011.06.19.210656
|
||||
* Bug fix: GNU xorriso-1.1.0 compiled only on Linux, FreeBSD, and Solaris
|
||||
|
||||
------------------------------ release - xorriso-1.1.0.pl01 - 2011.06.20.110001
|
||||
* Bug fix: GNU xorriso-1.1.0 compiled only on Linux, FreeBSD, and Solaris
|
||||
|
||||
|
||||
22 Jun 2011 [3887]
|
||||
releng/releng_build_jigdo
|
||||
releng/README.releng
|
||||
Beginning to create a test suite for libisoburn and xorriso
|
||||
|
||||
27 Jun 2011 [3943]
|
||||
+ releng/test_hardlinks
|
||||
New test test_hardlinks
|
||||
|
||||
27 Jun 2011 [3944]
|
||||
releng/TODO
|
||||
Added rules to releng/TODO, new options -keep, -clean_up, deprecated -clean
|
||||
|
||||
27 Jun 2011 [3945] [3948] [3952] [3957]
|
||||
releng/test_hardlinks
|
||||
Polished hardlink test
|
||||
|
||||
2011.06.27.160728 [3956]
|
||||
xorriso/opts_p_z.c
|
||||
Bug fix: -update_r scheduled non-existing files for hardlink update
|
||||
|
||||
2011.06.27.172423 [3958]
|
||||
xorriso/parse_exec.c
|
||||
Reporting commands and their arguments as DEBUG messages before execution
|
||||
|
||||
28 Jun 2011 [3964]
|
||||
releng/test_hardlinks
|
||||
+ tmp
|
||||
Adapted test_hardlinks to newly defined general test rules
|
||||
|
||||
28 Jun 2011 [3965]
|
||||
releng/test_hardlinks
|
||||
Adjusted names of config variables in test_hardlinks
|
||||
|
||||
28 Jun 2011 [3968]
|
||||
releng/test_hardlinks
|
||||
- tmp
|
||||
+ releng/tmp
|
||||
Option -fail for test_hardlinks to simulate failure, moved tmp to releng/tmp
|
||||
|
||||
28 Jun 2011 [3969]
|
||||
releng/test_hardlinks
|
||||
Removed suffix .result from tmp/test_hardlinks
|
||||
|
||||
2011.06.28.084751 [3970]
|
||||
A test with non-added file releng/tmp/test
|
||||
|
||||
28 Jun 2011 [3973]
|
||||
+ releng/releng_generated_data
|
||||
- releng/tmp
|
||||
Renamed releng/tmp to releng/releng_generated_data
|
||||
|
||||
28 Jun 2011 [3974]
|
||||
releng/test_hardlinks
|
||||
Adapted test_hardlinks to newest agreements with George
|
||||
|
||||
28 Jun 2011 [3975]
|
||||
+ releng/releng_hardlinks
|
||||
- releng/test_hardlinks
|
||||
Renamed test_hardlinks to releng_hardlinks
|
||||
|
||||
2011.07.02.153320 [3991]
|
||||
libisoburn/burn_wrap.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.085629 [4003]
|
||||
xorriso/aux_objects.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.091220 [4006]
|
||||
xorriso/misc_funct.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.091706 [4007]
|
||||
xorriso/misc_funct.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.092353 [4008]
|
||||
xorriso/disk_ops.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.093500 [4010]
|
||||
xorriso/parse_exec.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.093500 [4015]
|
||||
xorriso/sfile.c
|
||||
Reacted on warnings of -Wtype-limits
|
||||
|
||||
2011.07.03.181840 [4020]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
Requiring libsofs-1.1.1 now
|
||||
|
||||
2011.07.03.193627 [4029]
|
||||
xorriso/iso_tree.c
|
||||
xorriso/read_run.c
|
||||
Enabled extraction of the boot catalog file to disk filesystem
|
||||
|
||||
2011.07.03.194138 [4030]
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/opts_p_z.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.194723 [4031]
|
||||
xorriso/drive_mgt.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.03.203013 [4033]
|
||||
xorriso/opts_i_o.c
|
||||
Removed a premature reference to upcomming function
|
||||
|
||||
2011.07.04.092828 [4034]
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/drive_mgt.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
libisoburn/libisoburn.ver
|
||||
New option -list_speeds
|
||||
|
||||
4 Jul 2011 [4035]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.1 - 2011.07.04.092828
|
||||
* Bug fix: -update_r scheduled non-existing files for hardlink update
|
||||
* New option -list_speeds
|
||||
* Enabled extraction of the boot catalog file to disk filesystem
|
||||
|
||||
|
||||
2011.07.04.105800 [4036]
|
||||
xorriso/iso_manip.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.04.105854 [4037]
|
||||
xorriso/write_run.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.04.121342 [4038]
|
||||
xorriso/read_run.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.04.121501 [4039]
|
||||
xorriso/filters.c
|
||||
Reacted on warnings of -Wunused-but-set-variable
|
||||
|
||||
2011.07.05.145103 [4062]
|
||||
libisoburn/libisoburn.h
|
||||
Made libisoburn.h ready for use with C++ without importing namespace "burn"
|
||||
|
||||
2011.07.06.190111 [4078]
|
||||
libisoburn/isofs_wrap.c
|
||||
Hopefully fixed Debian bug 632865: blank ISO images with drive role 5
|
||||
|
||||
2011.07.07.113930 [4082]
|
||||
libisoburn/isoburn.c
|
||||
libisoburn/isofs_wrap.c
|
||||
libisoburn/burn_wrap.c
|
||||
Bug fix: Since 1.0.6: Unreadable image produced by: xorrisofs ... >image.iso
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.1 - 2011.07.07.113930
|
||||
* Bug fix: Since 1.0.6: Unreadable image produced by: xorrisofs ... >image.iso
|
||||
|
||||
|
||||
7 Jul 2011 [4086]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
8 Jul 2011 [4092]
|
||||
svn copy -m Branching for libisoburn release 1.1.2
|
||||
http://svn.libburnia-project.org/libisoburn/trunk
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.1.2
|
||||
|
||||
2011.07.08.100001 [4094]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README_gnu_xorriso
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_main.c
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
Version leap to libisoburn-1.1.2
|
||||
|
||||
8 Jul 2011 [4095]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
----------------------------------- release - xorriso-1.1.2 - 2011.07.08.100001
|
||||
* Bug fix: -update_r scheduled non-existing files for hardlink update
|
||||
* New option -list_speeds
|
||||
* Enabled extraction of the boot catalog file to disk filesystem
|
||||
* Bug fix: Since 1.0.6: Unreadable image produced by: xorrisofs ... >image.iso
|
||||
|
||||
|
||||
2011.07.08.131032 [4099] [4100]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README_gnu_xorriso
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_main.c
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
Version leap to libisoburn-1.1.3
|
||||
|
||||
8 Jul 2011 [4101]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
8 Jul 2011 [4102]
|
||||
svn move -m Promoted branch to tag
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.1.2
|
||||
http://svn.libburnia-project.org/libisoburn/tags/1.1.2
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.3 - 2011.07.08.131032
|
||||
|
||||
|
||||
2011.07.10.112539 [4126]
|
||||
libisoburn/isofs_wrap.c
|
||||
Recognizing overwritable media, blanked by cdrskin --grow_overwriteable_iso
|
||||
|
||||
2011.07.11.175609 [4134]
|
||||
xorriso/drive_mgt.c
|
||||
Reacted on warnings of cppcheck
|
||||
|
||||
2011.07.12.092010 [4137]
|
||||
xorriso/drive_mgt.c
|
||||
Improved output of -list_speeds with CD drives. Empty list now cause SORRY.
|
||||
|
||||
2011.07.12.135452 [4146]
|
||||
xorriso/drive_mgt.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
Improved output of -list_speeds with ROM media and ROM drives.
|
||||
|
||||
13 Jul 2011 [4158] [4159] [4160]
|
||||
+ releng/manual_devices_ts
|
||||
Proposal for test ./manual_devices
|
||||
|
||||
14 Jul 2011 [4161] [4162]
|
||||
releng/manual_devices_ts
|
||||
+ releng/inc/releng_getopts_ts.inc
|
||||
Proposal for test ./manual_devices and inc/releng_getopts_ts.inc
|
||||
|
||||
14 Jul 2011 [4163]
|
||||
releng/manual_devices_ts
|
||||
releng/inc/releng_getopts_ts.inc
|
||||
Prepared test proposal for option -f and for incomplete option -x
|
||||
|
||||
14 Jul 2011 [4165]
|
||||
releng/manual_devices_ts
|
||||
Issueing failure message and non-zero exit value if manual_devices_ts fails
|
||||
|
||||
14 Jul 2011 [4166]
|
||||
releng/inc/releng_getopts_ts.inc
|
||||
Corrected a misunderstanding about meaning of code piece
|
||||
|
||||
2011.07.15.083052 [4171]
|
||||
libisoburn/burn_wrap.c
|
||||
Reacted on warnings of cppcheck about libisoburn/burn_wrap.c
|
||||
|
||||
15 Jul 2011 [4172]
|
||||
releng/manual_devices
|
||||
Removed remnant reference to releng_getopts_ts.inc
|
||||
|
||||
15 Jul 2011 [4173]
|
||||
releng/inc/releng_getopts.inc
|
||||
Removed usage of getopts in releng_getopts.inc
|
||||
|
||||
15 Jul 2011 [4174]
|
||||
releng/inc/releng_getopts.inc
|
||||
Removed obsolete input checks from releng_getopts.inc
|
||||
|
||||
15 Jul 2011 [4175]
|
||||
releng/inc/releng_getopts.inc
|
||||
releng/manual_devices
|
||||
New function check_for_xorriso in releng_getopts.inc
|
||||
|
||||
15 Jul 2011 [4176]
|
||||
releng/inc/releng_getopts.inc
|
||||
Removed call to print_specific_help from releng_getopts.inc
|
||||
|
||||
15 Jul 2011 [4177]
|
||||
releng/inc/releng_getopts.inc
|
||||
Changed general option -k -c -f in releng_getopts.inc
|
||||
|
||||
17 Jul 2011 [4185]
|
||||
releng/run_all_releng
|
||||
Issueing pacifier messages in run_all_releng about logged line
|
||||
|
||||
17 Jul 2011 [4186]
|
||||
releng/run_all_releng
|
||||
Making run_all_releng recognize exit values again (fixing rev 4185)
|
||||
|
||||
17 Jul 2011 [4187]
|
||||
releng_printsize
|
||||
Issueing pacifier messages during tree generation of releng_printsize
|
||||
|
||||
17 Jul 2011 [4186]
|
||||
releng/run_all_releng
|
||||
Using a more elegant way to obtain pipe component exit value
|
||||
|
||||
17 Jul 2011 [4192]
|
||||
releng/run_all_releng
|
||||
Switched error message away from stderr, only pacifier remains on stderr
|
||||
|
||||
17 Jul 2011 [4194]
|
||||
releng/run_all_releng
|
||||
Added my copyright to run_all_releng
|
||||
|
||||
23 Jul 2011 [4208] [4209]
|
||||
svn mv releng/README releng/README.old
|
||||
releng/README
|
||||
Began to sketch an releng/README file
|
||||
|
||||
2011.07.24.193433 [4213]
|
||||
xorriso/drive_mgt.c
|
||||
Improved media summary with overwritable media and unknown content
|
||||
|
||||
2011.07.24.203919 [4214]
|
||||
xorriso/drive_mgt.c
|
||||
Improved -check_media with overwritable media and unknown content
|
||||
|
||||
2011.07.25.095843 [4215]
|
||||
xorriso/check_media.h
|
||||
xorriso/check_media.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
New -check_media option what=image
|
||||
|
||||
2011.07.25.103809 [4216]
|
||||
xorriso/drive_mgt.c
|
||||
Issueing a warning messages if BD-R with more than 299 sessions is loaded
|
||||
|
||||
27 Jul 2011 [4217]
|
||||
releng/auto_printsize
|
||||
Reduced runtime of auto_printsize and balanced xorriso versus genisoimage
|
||||
|
||||
2011.07.27.211423 [4218]
|
||||
xorriso/xorriso.h
|
||||
xorriso/parse_exec.c
|
||||
xorriso/opts_d_h.c
|
||||
xorriso/opts_i_o.c
|
||||
xorriso/drive_mgt.c
|
||||
xorriso/aux_objects.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
New option -device_links
|
||||
|
||||
27 Jul 2011 [4219]
|
||||
releng/manual_devices
|
||||
Switched releng/manual_devices from -devices to -device_links
|
||||
|
||||
2011.07.28.111814 [4220]
|
||||
xorriso/drive_mgt.c
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorriso.1
|
||||
Prefering dvd over cd with -device_links
|
||||
|
||||
28 Jul 2011 [4221]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
------------------------------------ cycle - xorriso-1.1.3 - 2011.07.28.111814
|
||||
* New option -device_links
|
||||
|
||||
|
||||
2011.07.28.192110 [4224]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
Requiring libburn 1.1.1
|
||||
|
||||
2011.07.28.195103 [4225]
|
||||
xorriso/drive_mgt.c
|
||||
Using libburn call burn_lookup_device_link()
|
||||
|
||||
30 Jul 2011 [4226]
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.info
|
||||
xorriso/xorrisofs.1
|
||||
Small correction in xorrisofs man page
|
||||
|
||||
2011.07.31.091836 [4229]
|
||||
libisoburn/burn_wrap.c
|
||||
Bug fix: xorriso native mode on some drives wrote unreadble ISO images to CD
|
||||
|
||||
2011.07.31.094422 [4230]
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/opts_a_c.c
|
||||
xorriso/opts_p_z.c
|
||||
Allowed lower case severity names with -abort_on, -return_with, -report_about
|
||||
|
||||
2011.07.31.145832 [4231]
|
||||
xorriso/misc_funct.c
|
||||
Bug fix: -assert_volid did not work. Regression since version 1.1.0, rev 3767.
|
||||
|
||||
2011.08.01.130400 [4233]
|
||||
xorriso/drive_mgt.c
|
||||
xorriso/misc_funct.c
|
||||
New report line "Media blocks :" with option -toc
|
||||
|
||||
1 Aug 2011 [4234]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.3 - 2011.08.01.130400
|
||||
* Bug fix: xorriso native mode on some drives wrote unreadble ISO images to CD
|
||||
* Bug fix: -assert_volid did not work. Regression since version 1.1.0.
|
||||
|
||||
|
||||
2011.08.01.152915 [4236]
|
||||
xorriso/misc_funct.h
|
||||
Forgot to upload the header which defines Xorriso__to_upper
|
||||
|
||||
1 Aug 2011 [4238]
|
||||
releng/auto_isocontent
|
||||
Checking -assert_volid in auto_isocontent
|
||||
|
||||
3 Aug 2011 [4240]
|
||||
releng/README
|
||||
releng/template_new
|
||||
Added more text pieces to releng/README, updated template for new tests
|
||||
|
||||
3 Aug 2011 [4241]
|
||||
releng/inc/releng_getopts.inc
|
||||
Added option -h to general helptext of releng
|
||||
|
||||
4 Aug 2011 [4242]
|
||||
releng/template_new
|
||||
Further improvements to releng test template
|
||||
|
||||
4 Aug 2011 [4243]
|
||||
+ releng/manual_burn
|
||||
New test releng/manual_burn
|
||||
|
||||
4 Aug 2011 [4244]
|
||||
releng/README
|
||||
releng/manual_burn
|
||||
Improvements about releng/manual_burn
|
||||
|
||||
5 Aug 2011 [4245]
|
||||
releng/auto_cxx
|
||||
releng/auto_isocontent
|
||||
releng/manual_burn
|
||||
releng/manual_isojigdo
|
||||
Made existing tests comply to upcomming prescriptions for failure messages
|
||||
|
||||
5 Aug 2011 [4246]
|
||||
releng/inc/releng_getopts.inc
|
||||
Made existing tests comply to upcomming prescriptions for failure messages
|
||||
|
||||
7 Aug 2011 [4248]
|
||||
releng/README
|
||||
More work on releng/README
|
||||
|
||||
07 Aug 2011 [4252]
|
||||
svn copy -m Branching for libisoburn release 1.1.4
|
||||
http://svn.libburnia-project.org/libisoburn/trunk
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.1.4
|
||||
|
||||
2011.08.07.120001 [4253]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README_gnu_xorriso
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_main.c
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso.texi
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorriso.info
|
||||
xorriso/xorrisofs.texi
|
||||
xorriso/xorrisofs.1
|
||||
xorriso/xorrisofs.info
|
||||
Version leap to libisoburn-1.1.4
|
||||
|
||||
07 Aug 2011 [4254]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
2011.08.08.071649 [4256]
|
||||
xorriso/read_run.c
|
||||
Improved error reporting with problems when extracting xattr or ACL
|
||||
|
||||
2011.08.08.070301 [4257]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README_gnu_xorriso
|
||||
xorriso/configure_ac.txt
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/xorriso_timestamp.h
|
||||
Requiring libisofs-1.1.4 (because of ACL extraction problem in 1.1.2)
|
||||
|
||||
[]
|
||||
ChangeLog
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
----------------------------------- release - xorriso-1.1.4 - 2011.08.08.070301
|
||||
* New option -device_links
|
||||
* Bug fix: xorriso native mode on some drives wrote unreadble ISO images to CD
|
||||
* Bug fix: -assert_volid did not work. Regression since version 1.1.0.
|
||||
* Bug fix: -acl or -xattr worked with -extract only on Linux and FreeBSD
|
||||
|
||||
|
||||
[]
|
||||
svn move -m Promoted branch to tag
|
||||
http://svn.libburnia-project.org/libisoburn/branches/1.1.0
|
||||
http://svn.libburnia-project.org/libisoburn/tags/1.1.0
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.1 -
|
||||
|
||||
xorriso/read_run.c
|
||||
Improved error reporting with problems when extracting xattr or ACL
|
||||
(>>> schon kopiert)
|
||||
|
||||
[]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
------------------------------------ cycle - xorriso-1.1.1 -
|
||||
|
||||
------------------------------------ cycle - xorriso-1.1.5 -
|
||||
|
||||
[]
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
------------------------------------ cycle - xorriso-1.1.1 -
|
||||
|
||||
xorriso/xorriso_eng.html
|
||||
ChangeLog
|
||||
Updated change log and web page
|
||||
------------------------------------ cycle - xorriso-1.0.9 -
|
||||
------------------------------------ cycle - xorriso-1.1.5 -
|
||||
|
||||
|
||||
**********************************************************************
|
||||
@ -11004,6 +11556,19 @@ Important: When adding a public API function then add its name to file
|
||||
TODO
|
||||
===============================================================================
|
||||
|
||||
- -for_backup -extract :
|
||||
- enable new code in libisofs/aaip-os-linux.c
|
||||
Libisofs_aaip_linux_set_attr_list_neW
|
||||
- FAILURE due to not enable ACL does not abort tree extraction
|
||||
although -abort_on FAILURE is set
|
||||
- in libisofs/aaip-os-freebsd.c : flag bit0 is not checked
|
||||
|
||||
- update_home got stuck when interrupted during -update_r
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
- Problem words in man xorriso
|
||||
|
||||
@ -11037,11 +11602,6 @@ terminology in xorriso. I shall make a tree model.
|
||||
|
||||
- Get rid of ((size_t) -1) in libisofs/util.c
|
||||
|
||||
- Improve handling of read errors while libisofs loads the image
|
||||
(Somehow the problem with /dev/sr4 looks rather like a mad drive.
|
||||
It reads faulty ISO trees but sees no SCSI error. Next attempt: all is
|
||||
well again.)
|
||||
|
||||
- Make Debian test machine ready for cppcheck and add it to release procedure
|
||||
|
||||
- ? Allow to adjust maximum path length
|
||||
@ -11109,9 +11669,6 @@ terminology in xorriso. I shall make a tree model.
|
||||
|
||||
------------------------------------------------- bugs
|
||||
|
||||
- An ISO image as first file of a stdout stream might start at LBA 32
|
||||
and thus look like a session. It has not the proper offset, though.
|
||||
|
||||
- xorriso_eng.html on www.gnu.org it should rather be xorriso.html
|
||||
|
||||
- DVD-ROM drives report CD tracks with size up to the next track start.
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -805,8 +805,10 @@ int Xorriso_check_media_setup_job(struct XorrisO *xorriso,
|
||||
} else if(strncmp(argv[i], "what=", 5) == 0) {
|
||||
if(strcmp(argv[i]+5, "tracks") == 0)
|
||||
job->mode= 0;
|
||||
else if(strcmp(argv[i]+5, "disc")== 0)
|
||||
else if(strcmp(argv[i]+5, "image")== 0)
|
||||
job->mode= 1;
|
||||
else if(strcmp(argv[i]+5, "disc")== 0)
|
||||
job->mode= 2;
|
||||
else {
|
||||
unknown_value:;
|
||||
sprintf(xorriso->info_text,
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2011 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -102,7 +102,7 @@ struct CheckmediajoB {
|
||||
*/
|
||||
int mode; /* 0= track by track
|
||||
1= single sweep over libisoburn media capacity
|
||||
>>> 2= single sweep over libburn media capacity
|
||||
2= single sweep over libburn media capacity
|
||||
*/
|
||||
time_t start_time;
|
||||
int time_limit; /* Number of seconds after which to abort */
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Copyright (c) 2007 - 2011 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Provided under GPL version 2 or later.
|
||||
|
||||
AC_INIT([xorriso], [1.1.1], [http://libburnia-project.org])
|
||||
AC_INIT([xorriso], [1.1.4], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
@ -23,14 +23,14 @@ AC_DEFINE([Xorriso_standalonE], [])
|
||||
|
||||
BURN_MAJOR_VERSION=1
|
||||
BURN_MINOR_VERSION=1
|
||||
BURN_MICRO_VERSION=1
|
||||
BURN_MICRO_VERSION=4
|
||||
AC_SUBST(BURN_MAJOR_VERSION)
|
||||
AC_SUBST(BURN_MINOR_VERSION)
|
||||
AC_SUBST(BURN_MICRO_VERSION)
|
||||
|
||||
LIBISOFS_MAJOR_VERSION=1
|
||||
LIBISOFS_MINOR_VERSION=1
|
||||
LIBISOFS_MICRO_VERSION=1
|
||||
LIBISOFS_MICRO_VERSION=4
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||
|
@ -800,7 +800,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
int track_count= 0, session_no, track_no, profile_no= -1, track_size;
|
||||
int last_track_start= 0, last_track_size= -1, num_data= 0, is_data= 0;
|
||||
int is_inout_drive= 0, drive_role, status, num_formats, emul_lba;
|
||||
int num_payload= 0, not_reconizable= 0;
|
||||
int not_recognizable= 0, start_lba, end_lba;
|
||||
char profile_name[80],*respt,*devadr, *typetext= "";
|
||||
struct burn_toc_entry toc_entry;
|
||||
struct burn_drive_info *dinfo;
|
||||
@ -816,6 +816,11 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
int image_blocks= 0;
|
||||
char volume_id[33];
|
||||
struct burn_toc_entry next_toc_entry;
|
||||
int disk_category, part_version, num_layers, num_blocks;
|
||||
char *book_name;
|
||||
/*
|
||||
int num_payload= 0, num_wasted= 0, num_nondata= 0;
|
||||
*/
|
||||
|
||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||
"on attempt to print Table Of Content",
|
||||
@ -839,7 +844,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
{ret= 1; goto ex;}
|
||||
sprintf(respt, "Drive type : vendor '%s' product '%s' revision '%s'\n",
|
||||
dinfo[0].vendor, dinfo[0].product, dinfo[0].revision);
|
||||
if((flag & 32) | !(flag & 1))
|
||||
if((flag & 32) || !(flag & 1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
if(flag & 32)
|
||||
{ret= 1; goto ex;}
|
||||
@ -866,7 +871,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
strcat(respt, "\n");
|
||||
} else {
|
||||
sprintf(respt+strlen(respt), "is not recognizable\n");
|
||||
not_reconizable= 1;
|
||||
not_recognizable= 1;
|
||||
}
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
|
||||
@ -878,7 +883,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
|
||||
sprintf(respt, "Media status : ");
|
||||
if (s == BURN_DISC_FULL) {
|
||||
if(not_reconizable)
|
||||
if(not_recognizable)
|
||||
sprintf(respt+strlen(respt), "is not recognizable\n");
|
||||
else
|
||||
sprintf(respt+strlen(respt), "is written , is closed");
|
||||
@ -909,6 +914,59 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
strcat(respt, "\n");
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
|
||||
if((s == BURN_DISC_FULL || s == BURN_DISC_APPENDABLE ||
|
||||
s == BURN_DISC_BLANK) && !(flag & 1)) {
|
||||
ret= burn_get_read_capacity(drive, &num_data, 0);
|
||||
if(ret != 1 || s == BURN_DISC_BLANK)
|
||||
num_data= 0;
|
||||
num_free= isoburn_disc_available_space(drive, NULL) / 2048;
|
||||
nwa= -1;
|
||||
if (s == BURN_DISC_APPENDABLE) {
|
||||
ret= isoburn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret <= 0)
|
||||
nwa= -1;
|
||||
} else if(s == BURN_DISC_BLANK) {
|
||||
ret= isoburn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret == 1) {
|
||||
num_free+= nwa;
|
||||
nwa= 0;
|
||||
}
|
||||
}
|
||||
lba= num_data + num_free;
|
||||
if(nwa >= 0) {
|
||||
lba= nwa + num_free;
|
||||
if(nwa < num_data)
|
||||
num_data= nwa;
|
||||
}
|
||||
|
||||
/* If closed CD-RW : obtain ATIP lead out address */
|
||||
if(profile_no == 0x0a) {
|
||||
ret= burn_disc_read_atip(drive);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
ret= burn_drive_get_start_end_lba(drive, &start_lba, &end_lba, 0);
|
||||
if(s == BURN_DISC_FULL && ret == 1) {
|
||||
lba= end_lba - 2;
|
||||
} else {
|
||||
if(ret == 1 && end_lba - 2 > lba) {
|
||||
sprintf(xorriso->info_text,
|
||||
"ATIP end_lba %d > overall %d", end_lba, lba);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
}
|
||||
}
|
||||
} else if(profile_no == 0x14) {
|
||||
ret= burn_disc_get_phys_format_info(drive, &disk_category,
|
||||
&book_name, &part_version,
|
||||
&num_layers, &num_blocks, 0);
|
||||
if(ret == 1 && num_blocks > lba)
|
||||
lba= num_blocks;
|
||||
}
|
||||
|
||||
sprintf(respt, "Media blocks : %d readable , %d writable , %d overall\n",
|
||||
num_data, (int) num_free, lba);
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
}
|
||||
|
||||
if(s == BURN_DISC_BLANK) {
|
||||
sprintf(respt, "Media summary: 0 sessions, 0 data blocks, 0 data");
|
||||
num_free= isoburn_disc_available_space(drive, NULL);
|
||||
@ -938,15 +996,15 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(drive_role == 5 && s == BURN_DISC_APPENDABLE) {
|
||||
ret= burn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret == 1)
|
||||
num_data= nwa;
|
||||
if(ret != 1)
|
||||
lba= 0;
|
||||
} else {
|
||||
ret= isoburn_get_min_start_byte(drive, &start_byte, 0);
|
||||
nwa= start_byte / 2048;
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(flag&1)
|
||||
{ret= 0; goto ex;}
|
||||
{ret= 1; goto ex;}
|
||||
sprintf(xorriso->info_text, "Cannot obtain Table Of Content");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
{ret= 0; goto ex;}
|
||||
@ -965,20 +1023,29 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
1, 0, image_blocks, volume_id);
|
||||
nwa= image_blocks;
|
||||
} else {
|
||||
nwa= num_data;
|
||||
ret= burn_disc_get_formats(drive, &status, &size, &dummy,
|
||||
&num_formats);
|
||||
if(ret>0 && status==BURN_FORMAT_IS_FORMATTED)
|
||||
nwa= size/2048;
|
||||
if(ret <= 0 || status != BURN_FORMAT_IS_FORMATTED)
|
||||
size= 0;
|
||||
if(size <= 0) {
|
||||
ret= burn_get_read_capacity(drive, &num_data, 0);
|
||||
if(ret == 1)
|
||||
size= ((off_t) num_data) * (off_t) 2048;
|
||||
}
|
||||
nwa= lba + size / 2048;
|
||||
num_data= nwa - lba;
|
||||
sprintf(respt, "%13s: %3d , %9d , %9ds , \n",
|
||||
typetext, 1, num_data, nwa);
|
||||
typetext, 1, lba, num_data);
|
||||
}
|
||||
if(!(flag&1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
last_track_start= lba;
|
||||
/*
|
||||
num_payload= num_data= last_track_size= nwa;
|
||||
*/
|
||||
num_sessions= 1;
|
||||
} else {
|
||||
num_data= 0;
|
||||
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
|
||||
for (session_no= 0; session_no<num_sessions && !(xorriso->request_to_abort);
|
||||
session_no++) {
|
||||
@ -1043,8 +1110,10 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
if(!(flag&1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
/*
|
||||
if(track_no>0)
|
||||
num_payload+= lba - last_track_start;
|
||||
*/
|
||||
last_track_start= lba;
|
||||
if((toc_entry.control&7)>=4) /* data track */
|
||||
is_data= 1;
|
||||
@ -1058,7 +1127,9 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
lba= burn_msf_to_lba(toc_entry.pmin, toc_entry.psec, toc_entry.pframe);
|
||||
}
|
||||
last_track_size= lba - last_track_start;
|
||||
/*
|
||||
num_payload+= last_track_size;
|
||||
*/
|
||||
if(is_data)
|
||||
num_data+= last_track_size;
|
||||
}
|
||||
@ -1066,8 +1137,6 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
if(xorriso->request_to_abort)
|
||||
{ret= 1; goto ex;}
|
||||
/*
|
||||
int num_wasted= 0, num_nondata= 0;
|
||||
|
||||
num_wasted= lba - num_payload;
|
||||
num_nondata= lba - num_data;
|
||||
*/
|
||||
@ -1090,6 +1159,12 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
}
|
||||
}
|
||||
if(profile_no == 0x41 && num_sessions >= 300) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Sequential BD-R media now contains %d sessions. It is likely to soon fail writing.",
|
||||
num_sessions);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
}
|
||||
|
||||
if (disc!=NULL)
|
||||
isoburn_toc_disc_free(disc);
|
||||
@ -1100,9 +1175,11 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= try to find 'meaningful' links for enumerated devices
|
||||
*/
|
||||
int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
char *adr= NULL;
|
||||
char *adr= NULL, *link_adr= NULL, *adrpt;
|
||||
int i, j, max_dev_len= 1, pad, ret;
|
||||
struct burn_drive_info *drive_list= NULL;
|
||||
unsigned int drive_count;
|
||||
@ -1110,6 +1187,7 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
||||
struct stat stbuf;
|
||||
|
||||
Xorriso_alloc_meM(adr, char, BURN_DRIVE_ADR_LEN);
|
||||
Xorriso_alloc_meM(link_adr, char, BURN_DRIVE_ADR_LEN);
|
||||
|
||||
sprintf(xorriso->info_text, "Beginning to scan for devices ...\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
@ -1139,8 +1217,16 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
||||
if(burn_drive_get_adr(&(drive_list[i]), adr)<=0)
|
||||
strcpy(adr, "-get_adr_failed-");
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if((int) strlen(adr) > max_dev_len)
|
||||
max_dev_len= strlen(adr);
|
||||
adrpt= adr;
|
||||
if(flag & 1) {
|
||||
ret= burn_lookup_device_link(adr, link_adr, "/dev", NULL, 0, 0);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
if(ret == 1)
|
||||
adrpt= link_adr;
|
||||
}
|
||||
if((int) strlen(adrpt) > max_dev_len)
|
||||
max_dev_len= strlen(adrpt);
|
||||
}
|
||||
for(i= 0; i < (int) drive_count && !(xorriso->request_to_abort); i++) {
|
||||
if(burn_drive_get_adr(&(drive_list[i]), adr)<=0)
|
||||
@ -1157,8 +1243,16 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
||||
if(stbuf.st_mode&S_IROTH) perms[4]= 'r';
|
||||
if(stbuf.st_mode&S_IWOTH) perms[5]= 'w';
|
||||
}
|
||||
sprintf(respt, "%d -dev '%s' ", i, adr);
|
||||
pad= max_dev_len-strlen(adr);
|
||||
adrpt= adr;
|
||||
if(flag & 1) {
|
||||
ret= burn_lookup_device_link(adr, link_adr, "/dev", NULL, 0, 0);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
if(ret == 1)
|
||||
adrpt= link_adr;
|
||||
}
|
||||
sprintf(respt, "%d -dev '%s' ", i, adrpt);
|
||||
pad= max_dev_len-strlen(adrpt);
|
||||
if(pad>0)
|
||||
for(j= 0; j<pad; j++)
|
||||
strcat(respt, " ");
|
||||
@ -1170,10 +1264,11 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_info(xorriso,0);
|
||||
|
||||
burn_drive_info_free(drive_list);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
ret= 1;
|
||||
ex:;
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_free_meM(adr);
|
||||
Xorriso_free_meM(link_adr);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -1284,11 +1379,55 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_choose_speed_factor(struct XorrisO *xorriso,
|
||||
int speed, int profile,
|
||||
double *speed_factor, char **speed_unit,
|
||||
int flag)
|
||||
{
|
||||
double cd_factor = 75.0 * 2352;
|
||||
double cd_speed_tolerance= 1.5, cd_speed_add;
|
||||
int int_cd_speed, i;
|
||||
static int cd_speed_list[]= {8, 10, 12, 16, 24, 32, 40, 48, 52, 0};
|
||||
|
||||
*speed_unit= "D";
|
||||
*speed_factor= 1385000.0;
|
||||
|
||||
/* Does this look like an integer CD speed ? */
|
||||
int_cd_speed= ((double) speed) * 1000.0 / cd_factor;
|
||||
cd_speed_add= cd_speed_tolerance * (double) int_cd_speed;
|
||||
int_cd_speed= (((double) speed) + cd_speed_add)
|
||||
* 1000.0 / cd_factor;
|
||||
if(abs((int) ((double) int_cd_speed) * cd_factor / 1000.0 -
|
||||
((double) speed)) > 2 * cd_speed_add ||
|
||||
int_cd_speed > 64)
|
||||
int_cd_speed= 0;
|
||||
if(int_cd_speed > 7) {
|
||||
for(i= 0; cd_speed_list[i]; i++)
|
||||
if(int_cd_speed == cd_speed_list[i])
|
||||
break;
|
||||
if(cd_speed_list[i] == 0)
|
||||
int_cd_speed= 0;
|
||||
}
|
||||
|
||||
if(((profile < 0x08 || profile >= 0x100 || profile == 0x10 || profile == 0x40)
|
||||
&& int_cd_speed) ||
|
||||
(profile >= 0x08 && profile <= 0x0a)) {
|
||||
*speed_unit= "C";
|
||||
*speed_factor= cd_factor;
|
||||
} else if(profile >= 0x40 && profile <= 0x43) {
|
||||
*speed_unit= "B";
|
||||
*speed_factor= 4495625.0;
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* @return <=0 error, 1 success
|
||||
*/
|
||||
int Xorriso_list_speeds(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret, high= -1, low= 0x7fffffff, int_cd_speed, is_cd= 0;
|
||||
int ret, high= -1, low= 0x7fffffff, is_cd= 0, i;
|
||||
int recent_profile= 0;
|
||||
char *respt, *speed_unit= "D";
|
||||
double speed_factor= 1385000.0, cd_factor= 75.0 * 2352;
|
||||
struct burn_drive_info *dinfo;
|
||||
@ -1304,18 +1443,29 @@ int Xorriso_list_speeds(struct XorrisO *xorriso, int flag)
|
||||
if(ret == 2)
|
||||
goto ex;
|
||||
ret= burn_drive_get_speedlist(drive, &speed_list);
|
||||
if(ret <= 0) {
|
||||
if(ret < 0) {
|
||||
sprintf(xorriso->info_text, "Cannot obtain speed list info");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
ret= Xorriso_toc(xorriso, 3);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot obtain overview of drive and media content");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
|
||||
for (item= speed_list; item != NULL; item= item->next) {
|
||||
|
||||
sprintf(xorriso->info_text, "speed= %5dk , source= %d",
|
||||
item->write_speed, item->source);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||
|
||||
if(item->profile_loaded >= 0x08 && item->profile_loaded <= 0x0a)
|
||||
is_cd= 1;
|
||||
is_cd= item->profile_loaded;
|
||||
if(item->profile_loaded > 0)
|
||||
recent_profile= item->profile_loaded;
|
||||
if(item->source == 1) {
|
||||
/* CD mode page 2Ah : report only if not same speed by GET PERFORMANCE */
|
||||
for(other= speed_list; other != NULL; other= other->next)
|
||||
@ -1324,25 +1474,9 @@ int Xorriso_list_speeds(struct XorrisO *xorriso, int flag)
|
||||
if(other != NULL)
|
||||
continue;
|
||||
}
|
||||
speed_unit= "D";
|
||||
speed_factor= 1385000.0;
|
||||
|
||||
/* Does this look like an integer CD speed ? */
|
||||
int_cd_speed= ((double) item->write_speed) * 1000.0 / cd_factor;
|
||||
if(abs((int) ((double) int_cd_speed) * cd_factor / 1000.0 -
|
||||
((double) item->write_speed)) > 5 ||
|
||||
int_cd_speed > 64)
|
||||
int_cd_speed= 0;
|
||||
|
||||
if(((item->profile_loaded < 0x08 || item->profile_loaded >= 0x100) &&
|
||||
int_cd_speed) ||
|
||||
(item->profile_loaded >= 0x08 && item->profile_loaded <= 0x0a)) {
|
||||
speed_unit= "C";
|
||||
speed_factor= 75.0 * 2352.0;
|
||||
} else if(item->profile_loaded >= 0x41 && item->profile_loaded <= 0x43) {
|
||||
speed_unit= "B";
|
||||
speed_factor= 4495625.0;
|
||||
}
|
||||
Xorriso_choose_speed_factor(xorriso, item->write_speed,
|
||||
item->profile_loaded,
|
||||
&speed_factor, &speed_unit, 0);
|
||||
sprintf(respt, "Write speed : ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
item->write_speed,
|
||||
@ -1361,41 +1495,48 @@ int Xorriso_list_speeds(struct XorrisO *xorriso, int flag)
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
if(ret > 0) {
|
||||
ret= burn_drive_get_min_write_speed(drive);
|
||||
if(ret > 0) {
|
||||
if(ret > low) {
|
||||
sprintf(respt, "Write speed l: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
if(ret > high)
|
||||
high= ret;
|
||||
low= ret;
|
||||
}
|
||||
ret= burn_drive_get_write_speed(drive);
|
||||
if(ret > 0) {
|
||||
if(ret < high) {
|
||||
sprintf(respt, "Write speed h: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
high= ret;
|
||||
if(ret < low)
|
||||
low= ret;
|
||||
}
|
||||
for(i= 0; i < 2; i++) {
|
||||
if(i == 0)
|
||||
ret= burn_drive_get_min_write_speed(drive);
|
||||
else
|
||||
ret= burn_drive_get_write_speed(drive);
|
||||
if(ret > 0) {
|
||||
if(ret < low || (i == 0 && ret != low)) {
|
||||
sprintf(respt, "Write speed l: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||
Xorriso_result(xorriso,0);
|
||||
low= ret;
|
||||
}
|
||||
if(ret > high || (i == 1 && ret != high)) {
|
||||
sprintf(respt, "Write speed h: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
ret, ((double) ret) * 1000.0 / cd_factor, "C");
|
||||
Xorriso_result(xorriso,0);
|
||||
high= ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(high > -1) {
|
||||
Xorriso_choose_speed_factor(xorriso, low, recent_profile,
|
||||
&speed_factor, &speed_unit, 0);
|
||||
sprintf(respt, "Write speed L: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
low, ((double) low) * 1000.0 / speed_factor, speed_unit);
|
||||
Xorriso_result(xorriso,0);
|
||||
Xorriso_choose_speed_factor(xorriso, low, recent_profile,
|
||||
&speed_factor, &speed_unit, 0);
|
||||
sprintf(respt, "Write speed H: ");
|
||||
sprintf(respt + strlen(respt), " %5dk , %4.1fx%s\n",
|
||||
high, ((double) high) * 1000.0 / speed_factor, speed_unit);
|
||||
Xorriso_result(xorriso,0);
|
||||
} else {
|
||||
sprintf(xorriso->info_text,
|
||||
"Could not get any write speed information from drive");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
@ -2290,7 +2431,7 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||
} else if(mode == 0) { /* track by track */
|
||||
isoburn_disc= isoburn_toc_drive_get_disc(drive);
|
||||
if(isoburn_disc == NULL)
|
||||
goto no_content_visible;
|
||||
goto libburn_whole_disc;
|
||||
isoburn_sessions=
|
||||
isoburn_toc_disc_get_sessions(isoburn_disc, &num_sessions);
|
||||
for(i= 0; i < num_sessions; i++) {
|
||||
@ -2361,27 +2502,33 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||
|
||||
} else if(mode == 1) { /* isoburn disc capacity */
|
||||
isoburn_disc= isoburn_toc_drive_get_disc(drive);
|
||||
if(isoburn_disc == NULL) {
|
||||
no_content_visible:;
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text, "No content detected on media");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
if(isoburn_disc == NULL)
|
||||
goto libburn_whole_disc;
|
||||
blocks= media_blocks= isoburn_toc_disc_get_sectors(isoburn_disc);
|
||||
if(start_lba >= 0)
|
||||
blocks-= start_lba;
|
||||
if(media_blocks <= 0)
|
||||
goto no_content_visible;
|
||||
goto libburn_whole_disc;
|
||||
xorriso->pacifier_total= blocks;
|
||||
ret= Xorriso_check_interval(xorriso, *spotlist, job, start_lba, blocks,
|
||||
read_chunk, 0, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
} else if(mode == 2) {
|
||||
|
||||
/* >>> single sweep over libburn media capacity */;
|
||||
|
||||
libburn_whole_disc:;
|
||||
/* single sweep over libburn media capacity */
|
||||
ret= burn_get_read_capacity(drive, &blocks, 0);
|
||||
if(ret <= 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text, "No content detected on media");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
xorriso->pacifier_total= blocks;
|
||||
ret= Xorriso_check_interval(xorriso, *spotlist, job, 0, blocks,
|
||||
read_chunk, 0, 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
Xorriso_pacifier_callback(xorriso, "sectors examined",
|
||||
|
@ -40,7 +40,7 @@ create_gnu_xorriso="yes"
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=1.1.1
|
||||
xorriso_rev=1.1.4
|
||||
# For unstable uploads and patch level 0 of stable releases:
|
||||
xorriso_pl=""
|
||||
# For higher patch levels of stable releases:
|
||||
|
@ -997,7 +997,7 @@ int Sregex_match(char *pattern, char *text, int flag)
|
||||
ret= regexec(&re, text, 1, match, 0);
|
||||
regfree(&re);
|
||||
if(ret != 0)
|
||||
goto ex;
|
||||
{ret= 0; goto ex;}
|
||||
ret= 1;
|
||||
ex:;
|
||||
if(re_text != NULL)
|
||||
@ -1218,3 +1218,19 @@ char *Xorriso__hide_mode_text(int hide_mode, int flag)
|
||||
return "invalid";
|
||||
}
|
||||
|
||||
|
||||
/* @return 0=truncated, 1=ok
|
||||
*/
|
||||
int Xorriso__to_upper(char *in, char *out, int out_size, int flag)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i= 0; i < out_size - 1 && in[i] != 0; i++)
|
||||
if(isalpha(in[i]))
|
||||
out[i]= toupper(in[i]);
|
||||
else
|
||||
out[i]= in[i];
|
||||
out[i]= 0;
|
||||
return(in[i] == 0);
|
||||
}
|
||||
|
||||
|
@ -89,6 +89,9 @@ int Xorriso__hide_mode(char *mode, int flag);
|
||||
|
||||
char *Xorriso__hide_mode_text(int hide_mode, int flag);
|
||||
|
||||
/* @return 0=truncated, 1=ok
|
||||
*/
|
||||
int Xorriso__to_upper(char *in, char *out, int out_size, int flag);
|
||||
|
||||
#endif /* ! Xorriso_pvt_misc_includeD */
|
||||
|
||||
|
@ -36,18 +36,24 @@
|
||||
|
||||
|
||||
/* Option -abort_on */
|
||||
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag)
|
||||
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *in_severity,
|
||||
int flag)
|
||||
{
|
||||
int ret, sev;
|
||||
char severity[20], *official;
|
||||
|
||||
Xorriso__to_upper(in_severity, severity, (int) sizeof(severity), 0);
|
||||
ret= Xorriso__text_to_sev(severity, &sev, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "-abort_on: Not a known severity name : ");
|
||||
Text_shellsafe(severity, xorriso->info_text, 1);
|
||||
Text_shellsafe(in_severity, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(ret);
|
||||
}
|
||||
if(Sfile_str(xorriso->abort_on_text,severity,0)<=0)
|
||||
ret= Xorriso__sev_to_text(sev, &official, 0);
|
||||
if(ret <= 0)
|
||||
official= severity;
|
||||
if(Sfile_str(xorriso->abort_on_text, official, 0) <= 0)
|
||||
return(-1);
|
||||
xorriso->abort_on_severity= sev;
|
||||
xorriso->abort_on_is_default= 0;
|
||||
|
@ -101,8 +101,9 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *in_adr, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* Option -devices */
|
||||
/* @return <=0 error , 1 success, 2 revoked by -reassure
|
||||
/* Option -devices , -device_links */
|
||||
/* @param flag bit0= perform -device_links rather than -devices
|
||||
@return <=0 error , 1 success, 2 revoked by -reassure
|
||||
*/
|
||||
int Xorriso_option_devices(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
@ -138,7 +139,7 @@ int Xorriso_option_devices(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
Xorriso_give_up_drive(xorriso, 3);
|
||||
}
|
||||
ret= Xorriso_show_devices(xorriso, 0);
|
||||
ret= Xorriso_show_devices(xorriso, flag & 1);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -1510,6 +1511,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -gid gid Group id for the same purpose.",
|
||||
"",
|
||||
" -devices Show list of available optical drives and their addresses.",
|
||||
" -device_links Like devices, but showing link paths which are hopefully",
|
||||
" persistent over reboot on modern Linux systems.",
|
||||
"",
|
||||
" -toc Show media specific table of content (sessions).",
|
||||
"",
|
||||
|
@ -1157,6 +1157,9 @@ return:
|
||||
ret= Xorriso_afile_fopen(xorriso, adr, "rb", &fp, 0);
|
||||
if(ret <= 0)
|
||||
return(0);
|
||||
sprintf(xorriso->info_text, "Command file: ");
|
||||
Text_shellsafe(adr, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||
while(1) {
|
||||
ret= Xorriso_read_lines(xorriso, fp, &linecount, &linec, &linev, 1 | 8);
|
||||
if(ret <= 0)
|
||||
@ -1211,6 +1214,9 @@ ex:;
|
||||
strcat(xorriso->info_text, "\n");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 1);
|
||||
}
|
||||
sprintf(xorriso->info_text, "Command file end: ");
|
||||
Text_shellsafe(adr, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||
if(ret!=1)
|
||||
return(ret);
|
||||
return(!was_failure);
|
||||
|
@ -452,19 +452,24 @@ int Xorriso_option_unregister_filter(struct XorrisO *xorriso, char *name,
|
||||
|
||||
|
||||
/* Option -report_about */
|
||||
int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
||||
int Xorriso_option_report_about(struct XorrisO *xorriso, char *in_severity,
|
||||
int flag)
|
||||
{
|
||||
int ret, sev;
|
||||
char severity[20], *official;
|
||||
|
||||
Xorriso__to_upper(in_severity, severity, (int) sizeof(severity), 0);
|
||||
ret= Xorriso__text_to_sev(severity, &sev, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "-report_about: Not a known severity name : ");
|
||||
Text_shellsafe(severity, xorriso->info_text, 1);
|
||||
Text_shellsafe(in_severity, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
return(ret);
|
||||
}
|
||||
if(Sfile_str(xorriso->report_about_text,severity,0)<=0)
|
||||
ret= Xorriso__sev_to_text(sev, &official, 0);
|
||||
if(ret <= 0)
|
||||
official= severity;
|
||||
if(Sfile_str(xorriso->report_about_text, official, 0) <= 0)
|
||||
return(-1);
|
||||
xorriso->report_about_severity= sev;
|
||||
return(1);
|
||||
@ -472,26 +477,31 @@ int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
||||
|
||||
|
||||
/* Option -return_with */
|
||||
int Xorriso_option_return_with(struct XorrisO *xorriso, char *severity,
|
||||
int Xorriso_option_return_with(struct XorrisO *xorriso, char *in_severity,
|
||||
int exit_value, int flag)
|
||||
{
|
||||
int ret, sev;
|
||||
char severity[20], *official;
|
||||
|
||||
Xorriso__to_upper(in_severity, severity, (int) sizeof(severity), 0);
|
||||
ret= Xorriso__text_to_sev(severity, &sev, 0);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-return_with: Not a known severity name : ");
|
||||
Text_shellsafe(severity, xorriso->info_text, 1);
|
||||
Text_shellsafe(in_severity, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(ret);
|
||||
}
|
||||
ret= Xorriso__sev_to_text(sev, &official, 0);
|
||||
if(ret <= 0)
|
||||
official= severity;
|
||||
if(exit_value && (exit_value < 32 || exit_value > 63)) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-return_with: Not an allowed exit_value. Use 0, or 32 to 63.");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
if(Sfile_str(xorriso->return_with_text,severity,0)<=0)
|
||||
if(Sfile_str(xorriso->return_with_text, official, 0) <= 0)
|
||||
return(-1);
|
||||
xorriso->return_with_severity= sev;
|
||||
xorriso->return_with_value= exit_value;
|
||||
|
@ -447,7 +447,8 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int ret, was_dashed= 0, i, cmd_data_size= 2 * SfileadrL;
|
||||
char *cmd, *cmd_data= NULL;
|
||||
static char arg0_commands[][40]= {
|
||||
"ban_stdio_write","close_filter_list","commit","devices","end",
|
||||
"ban_stdio_write","close_filter_list","commit",
|
||||
"device_links","devices","end",
|
||||
"for_backup", "help",
|
||||
"list_formats","list_speeds",
|
||||
"no_rc","print_size","pvd_info","pwd","pwdi","pwdx",
|
||||
@ -844,6 +845,9 @@ next_command:;
|
||||
(*idx)++;
|
||||
ret= Xorriso_option_dev(xorriso, arg1, 3);
|
||||
|
||||
} else if(strcmp(cmd,"device_links")==0) {
|
||||
ret= Xorriso_option_devices(xorriso, 1);
|
||||
|
||||
} else if(strcmp(cmd,"devices")==0) {
|
||||
ret= Xorriso_option_devices(xorriso, 0);
|
||||
|
||||
|
@ -249,7 +249,7 @@ int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
||||
int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
|
||||
IsoNode *node, int flag)
|
||||
{
|
||||
int ret, is_dir= 0;
|
||||
int ret, is_dir= 0, errno_copy= 0;
|
||||
mode_t mode;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
@ -285,10 +285,17 @@ int Xorriso_restore_properties(struct XorrisO *xorriso, char *disk_path,
|
||||
ret= iso_local_set_attrs(disk_path, num_attrs, names, value_lengths,
|
||||
values, 0);
|
||||
if(ret < 0) {
|
||||
errno_copy= errno;
|
||||
if(ret != (int) ISO_AAIP_NO_SET_LOCAL)
|
||||
errno_copy= 0;
|
||||
Xorriso_report_iso_error(xorriso, "", ret,
|
||||
"Error on iso_local_set_attrs",
|
||||
0, "FAILURE", 1 | ((ret == -1)<<2) );
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot change ACL or xattr of disk file ");
|
||||
Text_shellsafe(disk_path, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE",0);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno_copy,
|
||||
"FAILURE",0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH XORRISO 1 "Version 1.1.1, Jul 03, 2011"
|
||||
.TH XORRISO 1 "Version 1.1.4, Aug 7, 2011"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -305,7 +305,7 @@ On OpenSolaris:
|
||||
.br
|
||||
Get a list of accessible drives by command
|
||||
.br
|
||||
\-devices
|
||||
\-device_links
|
||||
.br
|
||||
It might be necessary to do this as
|
||||
\fBsuperuser\fR
|
||||
@ -2057,16 +2057,20 @@ MMC format codes are manifold. Most important are:
|
||||
Smaller format size with DVD\-RAM, BD\-RE, or BD\-R means more reserve space.
|
||||
.TP
|
||||
\fB\-list_speeds\fR
|
||||
Put out a list of speed values as reported by the output drive for
|
||||
the loaded media. At the end of the list, "Write speed L" and "Write speed H"
|
||||
are the best guesses for lower and upper speed limit.
|
||||
.br
|
||||
"Write speed l" and "Write speed h" may appear only with CD
|
||||
and eventually override the list of other speed offers.
|
||||
Put out a list of speed values as reported by the output drive with
|
||||
the loaded media. This does not necessarily mean that the media is writable
|
||||
or that these speeds are actually achievable. Especially the
|
||||
lists reported with empty drive or with ROM media obviously advertise
|
||||
speeds for other media.
|
||||
.br
|
||||
It is not mandatory to use speed values out of the listed range.
|
||||
The drive is supposed to choose a safe speed that is as near to the desired
|
||||
speed as possible.
|
||||
.br
|
||||
At the end of the list, "Write speed L" and "Write speed H"
|
||||
are the best guesses for lower and upper speed limit.
|
||||
"Write speed l" and "Write speed h" may appear only with CD
|
||||
and eventually override the list of other speed offers.
|
||||
.TP
|
||||
\fB\-close_damaged\fR "as_needed"|"force"
|
||||
Try to close the upcomming track and session if the drive reported the media
|
||||
@ -3063,6 +3067,17 @@ who is able to see all drives.
|
||||
.br
|
||||
Drives which are occupied by other processes get not shown.
|
||||
.TP
|
||||
\fB\-device_links\fR
|
||||
Like \-devices, but presenting the drives with addresses of symbolic links
|
||||
which point to the actual device files.
|
||||
.br
|
||||
Modern GNU/Linux systems may shuffle drive addresses from boot to boot.
|
||||
The udev daemon is supposed to create links which always point to the
|
||||
same drive, regardless of its system address.
|
||||
The command \-device_links shows the addresses of such links if they begin
|
||||
by "/dev/dvd" or "/dev/cd".
|
||||
Precedence is: "dvdrw", "cdrw", "dvd", "cdrom", "cd".
|
||||
.TP
|
||||
\fB\-toc\fR
|
||||
.br
|
||||
Show media specific table of content. This is the media session history,
|
||||
@ -3425,6 +3440,10 @@ sector_map= and processes this virtual outcome.
|
||||
\fBwhat="disc"\fR
|
||||
scans the payload range of a media without respecting track gaps.
|
||||
.br
|
||||
\fBwhat="image"\fR
|
||||
similar to "disc", but restricts scanning to the range of the ISO 9660 image,
|
||||
if present.
|
||||
.br
|
||||
\fBmin_lba=limit\fR
|
||||
omits all blocks with addresses lower than limit.
|
||||
.br
|
||||
@ -4122,13 +4141,13 @@ which shall be able to use the drives with \fBxorriso\fR.
|
||||
On Solaris use pfexec. Consider to restrict privileges of \fBxorriso\fR to
|
||||
"base,sys_devices" and to give r\-permission to user or group.
|
||||
.br
|
||||
$ xorriso \-devices
|
||||
$ xorriso \-device_links
|
||||
.br
|
||||
0 \-dev '/dev/sr0' rwrw\-\- : '_NEC ' 'DVD_RW ND\-4570A'
|
||||
1 \-dev '/dev/cdrom1' rwrw\-\- : 'TSSTcorp' 'DVD\-ROM SH\-D162C
|
||||
.br
|
||||
1 \-dev '/dev/sr1' rwrw\-\- : 'HL\-DT\-ST' 'DVDRAM GSA\-4082B'
|
||||
1 \-dev '/dev/cdrw' rwrw\-\- : 'TSSTcorp' 'CDDVDW SH\-S223B'
|
||||
.br
|
||||
2 \-dev '/dev/sr2' rwrw\-\- : 'PHILIPS ' 'SPD3300L'
|
||||
2 \-dev '/dev/cdrw3' rwrw\-\- : 'HL\-DT\-ST' 'BDDVDRW_GGC\-H20L'
|
||||
.SS
|
||||
.B Blank media and compose a new ISO image as batch run
|
||||
Aquire drive /dev/sr2, make media ready for writing a new image,
|
||||
|
@ -61,7 +61,7 @@ struct XorrisO;
|
||||
*/
|
||||
#define Xorriso_header_version_majoR 1
|
||||
#define Xorriso_header_version_minoR 1
|
||||
#define Xorriso_header_version_micrO 1
|
||||
#define Xorriso_header_version_micrO 4
|
||||
|
||||
|
||||
/** Eventually something like ".pl01" to indicate a bug fix. Normally empty.
|
||||
@ -790,7 +790,8 @@ int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
|
||||
int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag);
|
||||
|
||||
/* Option -devices */
|
||||
/* @return <=0 error , 1 success, 2 revoked by -reassure
|
||||
/* @param flag bit0= perform -device_links rather than -devices
|
||||
@return <=0 error , 1 success, 2 revoked by -reassure
|
||||
*/
|
||||
int Xorriso_option_devices(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
@ -8,14 +8,14 @@ END-INFO-DIR-ENTRY
|
||||
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
|
||||
images with Rock Ridge extensions.
|
||||
|
||||
Copyright (C) 2007 - 2010 Thomas Schmitt
|
||||
Copyright (C) 2007 - 2011 Thomas Schmitt
|
||||
|
||||
Permission is granted to distrubute this text freely.
|
||||
|
||||
|
||||
File: xorriso.info, Node: Top, Next: Overview, Up: (dir)
|
||||
|
||||
GNU xorriso 1.1.1
|
||||
GNU xorriso 1.1.4
|
||||
*****************
|
||||
|
||||
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem
|
||||
@ -274,7 +274,7 @@ On FreeBSD the device files have names like
|
||||
On OpenSolaris:
|
||||
-dev /dev/rdsk/c4t0d0s2
|
||||
Get a list of accessible drives by command
|
||||
-devices
|
||||
-device_links
|
||||
It might be necessary to do this as *superuser* in order to see all
|
||||
drives and to then allow rw-access for the intended users. Consider to
|
||||
bundle the authorized users in a group like old "floppy".
|
||||
@ -1832,15 +1832,18 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Options
|
||||
reserve space.
|
||||
|
||||
-list_speeds
|
||||
Put out a list of speed values as reported by the output drive for
|
||||
the loaded media. At the end of the list, "Write speed L" and
|
||||
"Write speed H" are the best guesses for lower and upper speed
|
||||
limit.
|
||||
"Write speed l" and "Write speed h" may appear only with CD and
|
||||
eventually override the list of other speed offers.
|
||||
Put out a list of speed values as reported by the output drive with
|
||||
the loaded media. This does not necessarily mean that the media is
|
||||
writable or that these speeds are actually achievable. Especially
|
||||
the lists reported with empty drive or with ROM media obviously
|
||||
advertise speeds for other media.
|
||||
It is not mandatory to use speed values out of the listed range.
|
||||
The drive is supposed to choose a safe speed that is as near to
|
||||
the desired speed as possible.
|
||||
At the end of the list, "Write speed L" and "Write speed H" are
|
||||
the best guesses for lower and upper speed limit. "Write speed l"
|
||||
and "Write speed h" may appear only with CD and eventually
|
||||
override the list of other speed offers.
|
||||
|
||||
-close_damaged "as_needed"|"force"
|
||||
Try to close the upcomming track and session if the drive reported
|
||||
@ -2687,6 +2690,16 @@ File: xorriso.info, Node: Inquiry, Next: Navigate, Prev: DialogCtl, Up: Opti
|
||||
*superuser* who is able to see all drives.
|
||||
Drives which are occupied by other processes get not shown.
|
||||
|
||||
-device_links
|
||||
Like -devices, but presenting the drives with addresses of
|
||||
symbolic links which point to the actual device files.
|
||||
Modern GNU/Linux systems may shuffle drive addresses from boot to
|
||||
boot. The udev daemon is supposed to create links which always
|
||||
point to the same drive, regardless of its system address. The
|
||||
command -device_links shows the addresses of such links if they
|
||||
begin by "/dev/dvd" or "/dev/cd". Precedence is: "dvdrw", "cdrw",
|
||||
"dvd", "cdrom", "cd".
|
||||
|
||||
-toc
|
||||
Show media specific table of content. This is the media session
|
||||
history, not the ISO image directory tree.
|
||||
@ -3008,6 +3021,9 @@ transmission errors.
|
||||
what="disc"
|
||||
scans the payload range of a media without respecting track
|
||||
gaps.
|
||||
what="image"
|
||||
similar to "disc", but restricts scanning to the range of the
|
||||
ISO 9660 image, if present.
|
||||
min_lba=limit
|
||||
omits all blocks with addresses lower than limit.
|
||||
max_lba=limit
|
||||
@ -3621,10 +3637,10 @@ groups which shall be able to use the drives with `xorriso'. On
|
||||
Solaris use pfexec. Consider to restrict privileges of `xorriso' to
|
||||
"base,sys_devices" and to give r-permission to user or group.
|
||||
|
||||
$ xorriso -devices
|
||||
0 -dev '/dev/sr0' rwrw-- : '_NEC ' 'DVD_RW ND-4570A'
|
||||
1 -dev '/dev/sr1' rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4082B'
|
||||
2 -dev '/dev/sr2' rwrw-- : 'PHILIPS ' 'SPD3300L'
|
||||
$ xorriso -device_links
|
||||
1 -dev '/dev/cdrom1' rwrw-- : 'TSSTcorp' 'DVD-ROM SH-D162C
|
||||
1 -dev '/dev/cdrw' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S223B'
|
||||
2 -dev '/dev/cdrw3' rwrw-- : 'HL-DT-ST' 'BDDVDRW_GGC-H20L'
|
||||
|
||||
|
||||
File: xorriso.info, Node: ExCreate, Next: ExDialog, Prev: ExDevices, Up: Examples
|
||||
@ -4201,8 +4217,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -cd sets working directory in ISO: Navigate. (line 7)
|
||||
* -cdx sets working directory on disk: Navigate. (line 16)
|
||||
* -charset sets input/output character set: Charset. (line 43)
|
||||
* -check_md5 verifies file checksum: Verify. (line 144)
|
||||
* -check_md5_r verifies file tree checksums: Verify. (line 160)
|
||||
* -check_md5 verifies file checksum: Verify. (line 147)
|
||||
* -check_md5_r verifies file tree checksums: Verify. (line 163)
|
||||
* -check_media reads media block by block: Verify. (line 21)
|
||||
* -check_media_defaults sets -check_media options: Verify. (line 40)
|
||||
* -chgrp sets group in ISO image: Manip. (line 50)
|
||||
@ -4213,7 +4229,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -chown_r sets ownership in ISO image: Manip. (line 47)
|
||||
* -clone copies ISO directory tree: Insert. (line 171)
|
||||
* -close controls media closing: SetWrite. (line 262)
|
||||
* -close_damaged closes damaged track and session: Writing. (line 133)
|
||||
* -close_damaged closes damaged track and session: Writing. (line 136)
|
||||
* -close_filter_list bans filter registration: Filter. (line 52)
|
||||
* -commit writes pending ISO image: Writing. (line 13)
|
||||
* -commit_eject writes and ejects: Writing. (line 40)
|
||||
@ -4229,6 +4245,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -cpx copies files to disk: Restore. (line 88)
|
||||
* -cut_out inserts piece of data file: Insert. (line 126)
|
||||
* -dev aquires one drive for input and output: AqDrive. (line 12)
|
||||
* -device_links gets list of drives: Inquiry. (line 18)
|
||||
* -devices gets list of drives: Inquiry. (line 7)
|
||||
* -dialog enables dialog mode: DialogCtl. (line 7)
|
||||
* -disk_dev_ino fast incremental backup: Loading. (line 189)
|
||||
@ -4277,7 +4294,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -joliet enables production of Joliet tree: SetWrite. (line 10)
|
||||
* -list_delimiter replaces '--': Scripting. (line 42)
|
||||
* -list_formats lists available formats: Writing. (line 110)
|
||||
* -list_profiles lists supported media: Writing. (line 147)
|
||||
* -list_profiles lists supported media: Writing. (line 150)
|
||||
* -list_speeds lists available write speeds: Writing. (line 122)
|
||||
* -load addresses a particular session as input: Loading. (line 11)
|
||||
* -local_charset sets terminal character set: Charset. (line 47)
|
||||
@ -4297,8 +4314,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -md5 controls handling of MD5 sums: Loading. (line 155)
|
||||
* -mkdir creates ISO directory: Insert. (line 166)
|
||||
* -mount issues mount command for ISO session: Restore. (line 122)
|
||||
* -mount_cmd composes mount command line: Inquiry. (line 31)
|
||||
* -mount_cmd controls mount command: Inquiry. (line 47)
|
||||
* -mount_cmd composes mount command line: Inquiry. (line 41)
|
||||
* -mount_cmd controls mount command: Inquiry. (line 57)
|
||||
* -mv renames file in ISO image: Manip. (line 35)
|
||||
* -no_rc disables startup files: Scripting. (line 7)
|
||||
* -not_leaf sets exclusion pattern: SetInsert. (line 62)
|
||||
@ -4321,12 +4338,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -print prints result text line: Scripting. (line 81)
|
||||
* -print_info prints message text line: Scripting. (line 84)
|
||||
* -print_mark prints synchronizing text line: Scripting. (line 87)
|
||||
* -print_size predicts image size: Inquiry. (line 69)
|
||||
* -print_size predicts image size: Inquiry. (line 79)
|
||||
* -prog sets program name: Frontend. (line 30)
|
||||
* -prog_help prints help text: Frontend. (line 33)
|
||||
* -prompt prompts for enter key: Scripting. (line 92)
|
||||
* -publisher sets publisher id: SetWrite. (line 113)
|
||||
* -pvd_info shows image id strings: Inquiry. (line 82)
|
||||
* -pvd_info shows image id strings: Inquiry. (line 92)
|
||||
* -pwd tells working directory in ISO: Navigate. (line 20)
|
||||
* -pwdx tells working directory on disk: Navigate. (line 23)
|
||||
* -quoted_not_list sets exclusions: SetInsert. (line 72)
|
||||
@ -4345,7 +4362,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 168)
|
||||
* -scsi_log reports SCSI commands: Scripting. (line 125)
|
||||
* -session_log logs written sessions: Scripting. (line 116)
|
||||
* -session_string composes session info line: Inquiry. (line 56)
|
||||
* -session_string composes session info line: Inquiry. (line 66)
|
||||
* -set_filter applies filter to file: Filter. (line 60)
|
||||
* -set_filter_r applies filter to file tree: Filter. (line 85)
|
||||
* -setfacl sets ACL in ISO image: Manip. (line 73)
|
||||
@ -4365,9 +4382,9 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
||||
* -stdio_sync controls stdio buffer: SetWrite. (line 245)
|
||||
* -stream_recording controls defect management: SetWrite. (line 226)
|
||||
* -system_id sets system id: SetWrite. (line 128)
|
||||
* -tell_media_space reports free space: Inquiry. (line 78)
|
||||
* -tell_media_space reports free space: Inquiry. (line 88)
|
||||
* -temp_mem_limit curbs memory consumption: Scripting. (line 74)
|
||||
* -toc shows list of sessions: Inquiry. (line 18)
|
||||
* -toc shows list of sessions: Inquiry. (line 28)
|
||||
* -uid sets global ownership: SetWrite. (line 191)
|
||||
* -update inserts path if different: Insert. (line 99)
|
||||
* -update_l inserts paths if different: Insert. (line 121)
|
||||
@ -4419,7 +4436,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Create, new ISO image, _definiton: Methods. (line 6)
|
||||
* Cylinder alignment, _definiton: Bootable. (line 167)
|
||||
* Cylinder size, _definiton: Bootable. (line 156)
|
||||
* Damaged track and session, close, -close_damaged: Writing. (line 133)
|
||||
* Damaged track and session, close, -close_damaged: Writing. (line 136)
|
||||
* Delete, from ISO image, -rm: Manip. (line 21)
|
||||
* Delete, from ISO image, -rm_r: Manip. (line 28)
|
||||
* Delete, ISO directory, -rmdir: Manip. (line 32)
|
||||
@ -4441,8 +4458,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Drive, for input and output, -dev: AqDrive. (line 12)
|
||||
* Drive, for input, -indev: AqDrive. (line 24)
|
||||
* Drive, for output, -outdev: AqDrive. (line 31)
|
||||
* Drive, get drive list, -device_links: Inquiry. (line 18)
|
||||
* Drive, get drive list, -devices: Inquiry. (line 7)
|
||||
* Drive, list supported media, -list_profiles: Writing. (line 147)
|
||||
* Drive, list supported media, -list_profiles: Writing. (line 150)
|
||||
* Drive, reduce activity, -calm_drive: Loading. (line 235)
|
||||
* Drive, report SCSI commands, -scsi_log: Scripting. (line 125)
|
||||
* Drive, write and eject, -commit_eject: Writing. (line 40)
|
||||
@ -4481,7 +4499,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Image, set volume id, -volid: SetWrite. (line 89)
|
||||
* Image, set volume set id, -volset_id: SetWrite. (line 108)
|
||||
* Image, set volume timestamp, -volume_date: SetWrite. (line 135)
|
||||
* Image, show id strings, -pvd_info: Inquiry. (line 82)
|
||||
* Image, show id strings, -pvd_info: Inquiry. (line 92)
|
||||
* Insert, enable overwriting, -overwrite: SetInsert. (line 127)
|
||||
* Insert, file exclusion absolute, -not_paths: SetInsert. (line 55)
|
||||
* Insert, file exclusion from file, -not_list: SetInsert. (line 67)
|
||||
@ -4592,17 +4610,17 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Rock Ridge, _definiton: Extras. (line 6)
|
||||
* Session, _definition: Model. (line 6)
|
||||
* Session, altered start address, -displacement: Loading. (line 35)
|
||||
* Session, info string, -session_string: Inquiry. (line 56)
|
||||
* Session, info string, -session_string: Inquiry. (line 66)
|
||||
* Session, issue mount command, -mount: Restore. (line 122)
|
||||
* Session, log when written, -session_log: Scripting. (line 116)
|
||||
* Session, mount command line, -mount_cmd: Inquiry. (line 31)
|
||||
* Session, mount parameters, -mount_opts: Inquiry. (line 47)
|
||||
* Session, mount command line, -mount_cmd: Inquiry. (line 41)
|
||||
* Session, mount parameters, -mount_opts: Inquiry. (line 57)
|
||||
* Session, select as input, -load: Loading. (line 11)
|
||||
* SUN Disk Label, production: Bootable. (line 187)
|
||||
* SUN SPARC boot images, activation: Bootable. (line 220)
|
||||
* System area, _definiton: Bootable. (line 121)
|
||||
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 210)
|
||||
* Table-of-content, show, -toc: Inquiry. (line 18)
|
||||
* Table-of-content, show, -toc: Inquiry. (line 28)
|
||||
* Timestamps, set in ISO image, -alter_date: Manip. (line 147)
|
||||
* Timestamps, set in ISO image, -alter_date_r: Manip. (line 167)
|
||||
* Tree, disk, traverse, -findx: Navigate. (line 106)
|
||||
@ -4611,8 +4629,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Verify, compare ISO and disk file, -compare: Navigate. (line 140)
|
||||
* Verify, compare ISO and disk tree, -compare_r: Navigate. (line 153)
|
||||
* Verify, compare ISO and disk, -compare_l: Navigate. (line 158)
|
||||
* Verify, file checksum, -check_md5: Verify. (line 144)
|
||||
* Verify, file tree checksums, -check_md5_r: Verify. (line 160)
|
||||
* Verify, file checksum, -check_md5: Verify. (line 147)
|
||||
* Verify, file tree checksums, -check_md5_r: Verify. (line 163)
|
||||
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
|
||||
* Write, block size, -dvd_obs: SetWrite. (line 238)
|
||||
* Write, bootability, -boot_image: Bootable. (line 26)
|
||||
@ -4622,12 +4640,12 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
||||
* Write, defect management, -stream_recording: SetWrite. (line 226)
|
||||
* Write, enable Joliet, -joliet: SetWrite. (line 10)
|
||||
* Write, fifo size, -fs: SetWrite. (line 255)
|
||||
* Write, free space, -tell_media_space: Inquiry. (line 78)
|
||||
* Write, free space, -tell_media_space: Inquiry. (line 88)
|
||||
* Write, log problematic disk files, -errfile_log: Scripting. (line 96)
|
||||
* Write, log written sessions, -session_log: Scripting. (line 116)
|
||||
* Write, padding image, -padding: SetWrite. (line 268)
|
||||
* Write, pending ISO image, -commit: Writing. (line 13)
|
||||
* Write, predict image size, -print_size: Inquiry. (line 69)
|
||||
* Write, predict image size, -print_size: Inquiry. (line 79)
|
||||
* Write, set speed, -speed: SetWrite. (line 211)
|
||||
* Write, simulation, -dummy: SetWrite. (line 251)
|
||||
* xattr, _definiton: Extras. (line 52)
|
||||
@ -4647,53 +4665,53 @@ Node: Model3264
|
||||
Node: Media6148
|
||||
Node: Methods8814
|
||||
Node: Drives11363
|
||||
Node: Extras14671
|
||||
Node: Processing18136
|
||||
Node: Dialog21606
|
||||
Node: Options23269
|
||||
Node: AqDrive24877
|
||||
Node: Loading27914
|
||||
Node: Insert42181
|
||||
Node: SetInsert51886
|
||||
Node: Manip60454
|
||||
Node: CmdFind69181
|
||||
Node: Filter80443
|
||||
Node: Writing84781
|
||||
Node: SetWrite92544
|
||||
Node: Bootable106590
|
||||
Node: Jigdo119808
|
||||
Node: Charset124054
|
||||
Node: Exception126813
|
||||
Node: DialogCtl132926
|
||||
Node: Inquiry135513
|
||||
Node: Navigate139841
|
||||
Node: Verify147809
|
||||
Node: Restore156347
|
||||
Node: Emulation163007
|
||||
Node: Scripting172810
|
||||
Node: Frontend178938
|
||||
Node: Examples180237
|
||||
Node: ExDevices181408
|
||||
Node: ExCreate182046
|
||||
Node: ExDialog183320
|
||||
Node: ExGrowing184582
|
||||
Node: ExModifying185384
|
||||
Node: ExBootable185885
|
||||
Node: ExCharset186434
|
||||
Node: ExPseudo187254
|
||||
Node: ExCdrecord188152
|
||||
Node: ExMkisofs188467
|
||||
Node: ExGrowisofs189805
|
||||
Node: ExException190940
|
||||
Node: ExTime191394
|
||||
Node: ExIncBackup191853
|
||||
Node: ExRestore195777
|
||||
Node: ExRecovery196735
|
||||
Node: Files197303
|
||||
Node: Seealso198601
|
||||
Node: Bugreport199189
|
||||
Node: Legal199770
|
||||
Node: CommandIdx200700
|
||||
Node: ConceptIdx215514
|
||||
Node: Extras14676
|
||||
Node: Processing18141
|
||||
Node: Dialog21611
|
||||
Node: Options23274
|
||||
Node: AqDrive24882
|
||||
Node: Loading27919
|
||||
Node: Insert42186
|
||||
Node: SetInsert51891
|
||||
Node: Manip60459
|
||||
Node: CmdFind69186
|
||||
Node: Filter80448
|
||||
Node: Writing84786
|
||||
Node: SetWrite92779
|
||||
Node: Bootable106825
|
||||
Node: Jigdo120043
|
||||
Node: Charset124289
|
||||
Node: Exception127048
|
||||
Node: DialogCtl133161
|
||||
Node: Inquiry135748
|
||||
Node: Navigate140592
|
||||
Node: Verify148560
|
||||
Node: Restore157225
|
||||
Node: Emulation163885
|
||||
Node: Scripting173688
|
||||
Node: Frontend179816
|
||||
Node: Examples181115
|
||||
Node: ExDevices182286
|
||||
Node: ExCreate182945
|
||||
Node: ExDialog184219
|
||||
Node: ExGrowing185481
|
||||
Node: ExModifying186283
|
||||
Node: ExBootable186784
|
||||
Node: ExCharset187333
|
||||
Node: ExPseudo188153
|
||||
Node: ExCdrecord189051
|
||||
Node: ExMkisofs189366
|
||||
Node: ExGrowisofs190704
|
||||
Node: ExException191839
|
||||
Node: ExTime192293
|
||||
Node: ExIncBackup192752
|
||||
Node: ExRestore196676
|
||||
Node: ExRecovery197634
|
||||
Node: Files198202
|
||||
Node: Seealso199500
|
||||
Node: Bugreport200088
|
||||
Node: Legal200669
|
||||
Node: CommandIdx201599
|
||||
Node: ConceptIdx216486
|
||||
|
||||
End Tag Table
|
||||
|
@ -1,7 +1,7 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c %**start of header
|
||||
@setfilename xorriso.info
|
||||
@settitle GNU xorriso 1.1.1
|
||||
@settitle GNU xorriso 1.1.4
|
||||
@c %**end of header
|
||||
@c
|
||||
@c man-ignore-lines begin
|
||||
@ -50,7 +50,7 @@
|
||||
@c man .\" First parameter, NAME, should be all caps
|
||||
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
@c man .\" other parameters are allowed: see man(7), man(1)
|
||||
@c man .TH XORRISO 1 "Version 1.1.1, Jul 03, 2011"
|
||||
@c man .TH XORRISO 1 "Version 1.1.4, Aug 7, 2011"
|
||||
@c man .\" Please adjust this date whenever revising the manpage.
|
||||
@c man .\"
|
||||
@c man .\" Some roff macros, for reference:
|
||||
@ -69,7 +69,7 @@
|
||||
xorriso - creates, loads, manipulates and writes ISO 9660 filesystem images
|
||||
with Rock Ridge extensions.
|
||||
|
||||
Copyright @copyright{} 2007 - 2010 Thomas Schmitt
|
||||
Copyright @copyright{} 2007 - 2011 Thomas Schmitt
|
||||
|
||||
@quotation
|
||||
Permission is granted to distrubute this text freely.
|
||||
@ -77,7 +77,7 @@ Permission is granted to distrubute this text freely.
|
||||
@end copying
|
||||
@c man-ignore-lines end
|
||||
@titlepage
|
||||
@title Manual of GNU xorriso 1.1.1
|
||||
@title Manual of GNU xorriso 1.1.4
|
||||
@author Thomas Schmitt
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
@ -86,7 +86,7 @@ Permission is granted to distrubute this text freely.
|
||||
@contents
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top GNU xorriso 1.1.1
|
||||
@top GNU xorriso 1.1.4
|
||||
@c man-ignore-lines 1
|
||||
|
||||
@c man .SH NAME
|
||||
@ -431,7 +431,7 @@ On OpenSolaris:
|
||||
@*
|
||||
Get a list of accessible drives by command
|
||||
@*
|
||||
-devices
|
||||
-device_links
|
||||
@*
|
||||
It might be necessary to do this as
|
||||
@strong{superuser}
|
||||
@ -2469,16 +2469,20 @@ Smaller format size with DVD-RAM, BD-RE, or BD-R means more reserve space.
|
||||
@item -list_speeds
|
||||
@kindex -list_speeds lists available write speeds
|
||||
@cindex Media, list write speeds, -list_speeds
|
||||
Put out a list of speed values as reported by the output drive for
|
||||
the loaded media. At the end of the list, "Write speed L" and "Write speed H"
|
||||
are the best guesses for lower and upper speed limit.
|
||||
@*
|
||||
"Write speed l" and "Write speed h" may appear only with CD
|
||||
and eventually override the list of other speed offers.
|
||||
Put out a list of speed values as reported by the output drive with
|
||||
the loaded media. This does not necessarily mean that the media is writable
|
||||
or that these speeds are actually achievable. Especially the
|
||||
lists reported with empty drive or with ROM media obviously advertise
|
||||
speeds for other media.
|
||||
@*
|
||||
It is not mandatory to use speed values out of the listed range.
|
||||
The drive is supposed to choose a safe speed that is as near to the desired
|
||||
speed as possible.
|
||||
@*
|
||||
At the end of the list, "Write speed L" and "Write speed H"
|
||||
are the best guesses for lower and upper speed limit.
|
||||
"Write speed l" and "Write speed h" may appear only with CD
|
||||
and eventually override the list of other speed offers.
|
||||
@c man .TP
|
||||
@item -close_damaged "as_needed"|"force"
|
||||
@kindex -close_damaged closes damaged track and session
|
||||
@ -3608,6 +3612,19 @@ who is able to see all drives.
|
||||
@*
|
||||
Drives which are occupied by other processes get not shown.
|
||||
@c man .TP
|
||||
@item -device_links
|
||||
@kindex -device_links gets list of drives
|
||||
@cindex Drive, get drive list, -device_links
|
||||
Like -devices, but presenting the drives with addresses of symbolic links
|
||||
which point to the actual device files.
|
||||
@*
|
||||
Modern GNU/Linux systems may shuffle drive addresses from boot to boot.
|
||||
The udev daemon is supposed to create links which always point to the
|
||||
same drive, regardless of its system address.
|
||||
The command -device_links shows the addresses of such links if they begin
|
||||
by "/dev/dvd" or "/dev/cd".
|
||||
Precedence is: "dvdrw", "cdrw", "dvd", "cdrom", "cd".
|
||||
@c man .TP
|
||||
@item -toc
|
||||
@*
|
||||
@kindex -toc shows list of sessions
|
||||
@ -4055,6 +4072,10 @@ sector_map= and processes this virtual outcome.
|
||||
@item what="disc"
|
||||
scans the payload range of a media without respecting track gaps.
|
||||
@*
|
||||
@item what="image"
|
||||
similar to "disc", but restricts scanning to the range of the ISO 9660 image,
|
||||
if present.
|
||||
@*
|
||||
@item min_lba=limit
|
||||
omits all blocks with addresses lower than limit.
|
||||
@*
|
||||
@ -4890,13 +4911,13 @@ On Solaris use pfexec. Consider to restrict privileges of @command{xorriso} to
|
||||
"base,sys_devices" and to give r-permission to user or group.
|
||||
@*
|
||||
@sp 1
|
||||
$ xorriso -devices
|
||||
$ xorriso -device_links
|
||||
@*
|
||||
0 -dev '/dev/sr0' rwrw@minus{}@minus{} : '_NEC ' 'DVD_RW ND-4570A'
|
||||
1 -dev '/dev/cdrom1' rwrw@minus{}@minus{} : 'TSSTcorp' 'DVD-ROM SH-D162C
|
||||
@*
|
||||
1 -dev '/dev/sr1' rwrw@minus{}@minus{} : 'HL-DT-ST' 'DVDRAM GSA-4082B'
|
||||
1 -dev '/dev/cdrw' rwrw@minus{}@minus{} : 'TSSTcorp' 'CDDVDW SH-S223B'
|
||||
@*
|
||||
2 -dev '/dev/sr2' rwrw@minus{}@minus{} : 'PHILIPS ' 'SPD3300L'
|
||||
2 -dev '/dev/cdrw3' rwrw@minus{}@minus{} : 'HL-DT-ST' 'BDDVDRW_GGC-H20L'
|
||||
@c man .SS
|
||||
@c man .B Blank media and compose a new ISO image as batch run
|
||||
@node ExCreate, ExDialog, ExDevices, Examples
|
||||
|
@ -446,21 +446,21 @@ This can bring effective read performance near to the raw media reading speed.
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Download as source code (see README):</H3></DT>
|
||||
<DD><A HREF="xorriso-1.1.0.pl01.tar.gz">xorriso-1.1.0.pl01.tar.gz</A>
|
||||
(1920 KB).
|
||||
<DD><A HREF="xorriso-1.1.4.tar.gz">xorriso-1.1.4.tar.gz</A>
|
||||
(1930 KB).
|
||||
</DD>
|
||||
<DD>(Released 20 Jun 2011)</DD>
|
||||
<DD><A HREF="xorriso-1.1.0.pl01.tar.gz.sig">xorriso-1.1.0.pl01.tar.gz.sig</A></DD>
|
||||
<DD>(Released 7 Aug 2011)</DD>
|
||||
<DD><A HREF="xorriso-1.1.4.tar.gz.sig">xorriso-1.1.4.tar.gz.sig</A></DD>
|
||||
<DD>
|
||||
(detached GPG signature for verification by
|
||||
<KBD>gpg --verify xorriso-1.1.0.pl01.tar.gz.sig xorriso-1.1.0.pl01.tar.gz</KBD>
|
||||
<KBD>gpg --verify xorriso-1.1.4.tar.gz.sig xorriso-1.1.4.tar.gz</KBD>
|
||||
<BR>
|
||||
after <KBD>gpg --keyserver keys.gnupg.net --recv-keys ABC0A854</KBD>).
|
||||
</DD>
|
||||
<DD>
|
||||
Also on <A HREF="http://www.gnu.org/prep/ftp.html">
|
||||
mirrors of ftp://ftp.gnu.org/gnu/ </A>
|
||||
as xorriso/xorriso-1.1.0.pl01.tar.gz
|
||||
as xorriso/xorriso-1.1.4.tar.gz
|
||||
</DD>
|
||||
</DL>
|
||||
</DD>
|
||||
@ -495,50 +495,34 @@ describes the mkisofs emulation</DD>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
Bug fixes towards xorriso-1.0.8:
|
||||
Bug fixes towards xorriso-1.1.2:
|
||||
<UL>
|
||||
<LI>
|
||||
-mount_opts shared worked only with -osirrox o_excl_off
|
||||
</LI>
|
||||
<LI>
|
||||
Production of MIPS bootable images caused SIGSEGV
|
||||
</LI>
|
||||
<LI>
|
||||
xorriso command -add_plainly "any" did not add all files to the image
|
||||
</LI>
|
||||
<LI>
|
||||
The attempt to blank already blanked DVD-RW was not gracefully blocked
|
||||
</LI>
|
||||
<LI>
|
||||
-as mkisofs -isohybrid-mbr without -no-pad was not cylinder aligned
|
||||
</LI>
|
||||
<LI>
|
||||
-format as_needed for DVD-RW could fail on Pioneer drives
|
||||
</LI>
|
||||
<LI>xorriso native mode on some drives wrote unreadble ISO images to CD</LI>
|
||||
<LI>-assert_volid did not work. Regression since version 1.1.0.</LI>
|
||||
<LI>-acl or -xattr worked with -extract only on Linux and FreeBSD</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
<!--
|
||||
<P>
|
||||
Bug fixes in xorriso-1.1.0.pl01 towards xorriso-1.1.0:
|
||||
<UL>
|
||||
<LI>
|
||||
Due to a bug in libburn-1.1.0,
|
||||
GNU xorriso-1.1.0 compiled only on GNU/Linux, FreeBSD, and Solaris,
|
||||
but not on other systems
|
||||
|
||||
</LI>
|
||||
</UL>
|
||||
</P>
|
||||
<!--
|
||||
-->
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-1.0.8:
|
||||
Enhancements towards previous stable version xorriso-1.1.2:
|
||||
<UL>
|
||||
<LI>New option -signal_handling</LI>
|
||||
<LI>New option -close_damaged</LI>
|
||||
<LI>
|
||||
New option -device_links
|
||||
</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
@ -561,16 +545,16 @@ libburnia project and the legal intentions of
|
||||
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
|
||||
</DT>
|
||||
<DD> </DD>
|
||||
<DT>libburn-1.1.0</DT>
|
||||
<DT>libburn-1.1.4</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD.</DD>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-1.1.0</DT>
|
||||
<DT>libisofs-1.1.4</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-1.1.0</DT>
|
||||
<DT>libisoburn-1.1.4</DT>
|
||||
<DD>coordinates libburn and libisofs, emulates multi-session where needed,
|
||||
and hosts the original source code of program xorriso.</DD>
|
||||
<DD>It provides the complete functionality of xorriso via
|
||||
@ -591,28 +575,18 @@ cdrecord and mkisofs.</DT>
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 1.1.1 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-1.1.0:
|
||||
<DT><H3>Development snapshot, version 1.1.5 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-1.1.4:
|
||||
<UL>
|
||||
<LI>-update_r scheduled non-existing files for hardlink update</LI>
|
||||
<LI>
|
||||
Since 1.0.6: Unreadable image produced by: xorrisofs ... >image.iso
|
||||
<BR>
|
||||
(not by -o image.iso, or by pipe to consumer process)
|
||||
</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD>Enhancements towards stable version 1.1.0:
|
||||
<DD>Enhancements towards stable version 1.1.4:
|
||||
<UL>
|
||||
<LI>New option -list_speeds</LI>
|
||||
<LI>
|
||||
Enabled extraction of the boot catalog file to disk filesystem
|
||||
</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
|
||||
@ -620,12 +594,12 @@ Enabled extraction of the boot catalog file to disk filesystem
|
||||
|
||||
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 1.1.1</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso-1.1.1 -help</A></DD>
|
||||
<DD><A HREF="xorrisofs_help_devel">xorriso-1.1.1 -as mkisofs -help</A></DD>
|
||||
<DD><A HREF="xorrecord_help_devel">xorriso-1.1.1 -as cdrecord -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 1.1.1)</A></DD>
|
||||
<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs (as of 1.1.1)</A></DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 1.1.5</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso-1.1.5 -help</A></DD>
|
||||
<DD><A HREF="xorrisofs_help_devel">xorriso-1.1.5 -as mkisofs -help</A></DD>
|
||||
<DD><A HREF="xorrecord_help_devel">xorriso-1.1.5 -as cdrecord -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 1.1.5)</A></DD>
|
||||
<DD><A HREF="man_1_xorrisofs_devel.html">man xorrisofs (as of 1.1.5)</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
|
||||
@ -635,8 +609,8 @@ libburnia libraries.
|
||||
installation see README)
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="xorriso-1.1.1.tar.gz">xorriso-1.1.1.tar.gz</A>
|
||||
(1920 KB).
|
||||
<A HREF="xorriso-1.1.5.tar.gz">xorriso-1.1.5.tar.gz</A>
|
||||
(1930 KB).
|
||||
</DD>
|
||||
<DT>A dynamically linked development version of xorriso can be obtained
|
||||
from repositories of
|
||||
|
@ -111,7 +111,7 @@
|
||||
*/
|
||||
#define Xorriso_req_majoR 1
|
||||
#define Xorriso_req_minoR 1
|
||||
#define Xorriso_req_micrO 1
|
||||
#define Xorriso_req_micrO 4
|
||||
|
||||
|
||||
static void yell_xorriso()
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2011.07.07.113930"
|
||||
#define Xorriso_timestamP "2011.08.08.070301"
|
||||
|
@ -19,7 +19,7 @@
|
||||
*/
|
||||
#define xorriso_libisoburn_req_major 1
|
||||
#define xorriso_libisoburn_req_minor 1
|
||||
#define xorriso_libisoburn_req_micro 1
|
||||
#define xorriso_libisoburn_req_micro 4
|
||||
|
||||
|
||||
struct SpotlisT; /* List of intervals with different read qualities */
|
||||
@ -55,6 +55,8 @@ int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
|
||||
|
||||
int Xorriso__text_to_sev(char *severity_name, int *severity_number,int flag);
|
||||
|
||||
int Xorriso__sev_to_text(int severity, char **severity_name, int flag);
|
||||
|
||||
/* @param flag bit0=report about output drive
|
||||
bit1=short report form
|
||||
bit2=do not try to read ISO heads
|
||||
|
@ -9,7 +9,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH XORRISOFS 1 "Version 1.1.1, Jun 18, 2011"
|
||||
.TH XORRISOFS 1 "Version 1.1.4, Aug 7, 2011"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -427,6 +427,7 @@ This all violates ISO 9660 specs.
|
||||
.TP
|
||||
\fB\-untranslated-filenames\fR
|
||||
Alias of \-U.
|
||||
.TP
|
||||
\fB\-untranslated_name_len\fR number
|
||||
Allow ISO file names up to the given number of characters
|
||||
without any character conversion. The maximum number is 96.
|
||||
|
@ -14,7 +14,7 @@ END-INFO-DIR-ENTRY
|
||||
|
||||
File: xorrisofs.info, Node: Top, Next: Overview, Up: (dir)
|
||||
|
||||
xorrisofs 1.1.1
|
||||
xorrisofs 1.1.4
|
||||
***************
|
||||
|
||||
xorrisofs - Emulation of ISO 9660 program mkisofs by program xorriso
|
||||
|
@ -1,7 +1,7 @@
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c %**start of header
|
||||
@setfilename xorrisofs.info
|
||||
@settitle GNU xorrisofs 1.1.1
|
||||
@settitle GNU xorrisofs 1.1.4
|
||||
@c %**end of header
|
||||
@c
|
||||
@c man-ignore-lines begin
|
||||
@ -50,7 +50,7 @@
|
||||
@c man .\" First parameter, NAME, should be all caps
|
||||
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
@c man .\" other parameters are allowed: see man(7), man(1)
|
||||
@c man .TH XORRISOFS 1 "Version 1.1.1, Jun 18, 2011"
|
||||
@c man .TH XORRISOFS 1 "Version 1.1.4, Aug 7, 2011"
|
||||
@c man .\" Please adjust this date whenever revising the manpage.
|
||||
@c man .\"
|
||||
@c man .\" Some roff macros, for reference:
|
||||
@ -76,7 +76,7 @@ Permission is granted to distrubute this text freely.
|
||||
@end copying
|
||||
@c man-ignore-lines end
|
||||
@titlepage
|
||||
@title Manual of GNU xorriso personality xorrisofs 1.1.1
|
||||
@title Manual of GNU xorriso personality xorrisofs 1.1.4
|
||||
@author Thomas Schmitt
|
||||
@page
|
||||
@vskip 0pt plus 1filll
|
||||
@ -85,7 +85,7 @@ Permission is granted to distrubute this text freely.
|
||||
@contents
|
||||
@ifnottex
|
||||
@node Top
|
||||
@top xorrisofs 1.1.1
|
||||
@top xorrisofs 1.1.4
|
||||
@c man-ignore-lines 1
|
||||
|
||||
@c man .SH NAME
|
||||
@ -633,6 +633,7 @@ This all violates ISO 9660 specs.
|
||||
@item -untranslated-filenames
|
||||
@kindex -untranslated-filenames very relaxed filename rules
|
||||
Alias of -U.
|
||||
@c man .TP
|
||||
@item -untranslated_name_len number
|
||||
@kindex -untranslated_name_len untranslated file names
|
||||
@cindex ISO file names, untranslated, -untranslated_name_len
|
||||
|
Reference in New Issue
Block a user