Compare commits
19 Commits
ZeroEightS
...
ZeroEightE
Author | SHA1 | Date | |
---|---|---|---|
6718f0ab78 | |||
7fb96f4e76 | |||
89a2944dad | |||
e2a085ef20 | |||
0f622def33 | |||
707d6153f7 | |||
28ae78b4f1 | |||
7ceb67f0b0 | |||
e18bfe50c1 | |||
4083001548 | |||
45353dee67 | |||
f14b66a09b | |||
38c029d5e3 | |||
287b59cfd3 | |||
c49995b11a | |||
f2436351ef | |||
71844bf8b9 | |||
59e0824370 | |||
b7034abcbb |
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
SVN trunk (to become libburn-0.9.0.pl00.tar.gz)
|
||||
===============================================================================
|
||||
|
||||
libburn-0.8.8.pl00.tar.gz Wed Oct 20 2010
|
||||
===============================================================================
|
||||
* New API call burn_offst_source_new()
|
||||
* New API call burn_disc_get_bd_spare_info()
|
||||
|
||||
libburn-0.8.6.pl00.tar.gz Fri Sep 17 2010
|
||||
===============================================================================
|
||||
* Lifted test reservation on DVD-R DL media.
|
||||
* Hiding all non-API symbols from the linker by use of --version-script
|
||||
* Now with history of release notes in ./ChangeLog file.
|
||||
|
||||
libburn-0.8.4.pl00.tar.gz Wed Jun 30 2010
|
||||
===============================================================================
|
||||
* General POSIX system adapters ignore SIGWINCH and SIGURG if defined
|
||||
|
11
Makefile.am
11
Makefile.am
@ -75,11 +75,15 @@ libburn_libburn_la_SOURCES = \
|
||||
libinclude_HEADERS = \
|
||||
libburn/libburn.h
|
||||
|
||||
install-exec-hook:
|
||||
$(LIBBURNIA_LDCONFIG_CMD) "$(DESTDIR)$(libdir)" || echo 'NOTE: Explicite dynamic library configuration failed. If needed, configure manually for:' "$(DESTDIR)$(libdir)"
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
## Build test applications
|
||||
noinst_PROGRAMS = \
|
||||
test/libburner \
|
||||
test/offst_source \
|
||||
test/telltoc \
|
||||
test/dewav \
|
||||
test/fake_au \
|
||||
@ -94,6 +98,9 @@ LIBBURN_EXTRALIBS = $(LIBBURN_ARCH_LIBS) $(THREAD_LIBS)
|
||||
test_libburner_CPPFLAGS = -Ilibburn
|
||||
test_libburner_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||
test_libburner_SOURCES = test/libburner.c
|
||||
test_offst_source_CPPFLAGS = -Ilibburn
|
||||
test_offst_source_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||
test_offst_source_SOURCES = test/offst_source.c
|
||||
test_telltoc_CPPFLAGS = -Ilibburn
|
||||
test_telltoc_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||
test_telltoc_SOURCES = test/telltoc.c
|
||||
@ -110,9 +117,9 @@ test_structest_CPPFLAGS = -Ilibburn
|
||||
test_structest_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||
test_structest_SOURCES = test/structest.c
|
||||
|
||||
## cdrskin construction site - ts A60816 - B00611
|
||||
## cdrskin construction site - ts A60816 - B01020
|
||||
cdrskin_cdrskin_CPPFLAGS = -Ilibburn
|
||||
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_8_5
|
||||
cdrskin_cdrskin_CFLAGS = -DCdrskin_libburn_0_8_8
|
||||
|
||||
# cdrskin_cdrskin_LDADD = $(libburn_libburn_la_OBJECTS) $(LIBBURN_EXTRALIBS)
|
||||
# ts A80123, change proposed by Simon Huggins to cause dynamic libburn linking
|
||||
|
36
README
36
README
@ -11,7 +11,7 @@ Still containing parts of Libburn. By Derek Foreman <derek@signalmarketing.com>
|
||||
and Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
|
||||
http://files.libburnia-project.org/releases/libburn-0.8.4.pl00.tar.gz
|
||||
http://files.libburnia-project.org/releases/libburn-0.8.8.pl00.tar.gz
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -19,10 +19,10 @@ Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
|
||||
From tarball
|
||||
|
||||
Obtain libburn-0.8.4.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain libburn-0.8.8.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf libburn-0.8.4.pl00.tar.gz
|
||||
cd libburn-0.8.4
|
||||
tar xzf libburn-0.8.8.pl00.tar.gz
|
||||
cd libburn-0.8.8
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
|
||||
@ -60,6 +60,11 @@ Warning: The trunk might contain experimental features which might not
|
||||
|
||||
Special ./configure options
|
||||
|
||||
make install on GNU/Linux will try to run program ldconfig with the library
|
||||
installation directory as only argument. Failure to do so will not abort
|
||||
installation. One may disable ldconfig by ./configure option:
|
||||
--disable-ldconfig-at-install
|
||||
|
||||
In some situations Linux may deliver a better write performance to drives if
|
||||
the track input is read with O_DIRECT (see man 2 open). The API call
|
||||
burn_os_open_track_src() and the input readers of cdrskin and libburn fifo
|
||||
@ -145,7 +150,8 @@ The project components (list subject to growth, hopefully):
|
||||
|
||||
- libisofs is the library to pack up hard disk files and directories into a
|
||||
ISO 9660 disk image. This may then be brought to CD via libburn.
|
||||
libisofs is to be the foundation of our upcoming mkisofs emulation.
|
||||
An own ISO 9660 extension stores ACLs, xattr, and MD5 of file
|
||||
content.
|
||||
|
||||
- libisoburn is an add-on to libburn and libisofs which coordinates both and
|
||||
also allows to grow ISO-9660 filesystem images on multi-session
|
||||
@ -170,8 +176,8 @@ The project components (list subject to growth, hopefully):
|
||||
Rock Ridge extensions. Manipulation is not only adding or
|
||||
overwriting of files but also deleting, renaming, attribute
|
||||
changing, incremental backups, activating boot images, and
|
||||
extracting of files from ISO images to disk. An own ISO 9660
|
||||
extension stores ACLs, xattr, and MD5 of file content.
|
||||
extracting of files from ISO images to disk. There is also a
|
||||
sparse emulation of cdrecord and a more laborate one of mkisofs.
|
||||
All features of xorriso are also available via a C language API
|
||||
of libisoburn.
|
||||
See xorriso/README for more.
|
||||
@ -543,6 +549,22 @@ Project history as far as known to me:
|
||||
- Wed Jun 30 2010 libburn-0.8.4 removes some restrictions on operating
|
||||
systems other than Linux and FreeBSD.
|
||||
|
||||
- Fri Jul 02 2010 Release 0.6.0.pl00 of libisoburn adds more options to the
|
||||
mkisofs emulation of xorriso. It also fixes minor bugs and shortcommings.
|
||||
|
||||
- Wed Sep 15 2010 Version 0.6.36 of libisofs can produce ISO images which
|
||||
bear a partiton 1 with non-zero start address. They can be mounted from
|
||||
USB stick via the main device file (e.g. /dev/sdb) as well as via the
|
||||
partition device file (e.g. /dev/sdb1).
|
||||
|
||||
- Fri Sep 17 2010 libburn-0.8.6 lifts the test reservation on DVD-R DL media.
|
||||
|
||||
- Sat Sep 18 2010 Release 0.6.2.pl00 of libisoburn introduces a partition
|
||||
with non-zero offset for ISO 9660 images on USB sticks, improves mkisofs
|
||||
emulation, and fixes a regression which existed since version 0.4.2.
|
||||
|
||||
- Wed Oct 20 2010 libburn-0.8.8 brings minor improvements.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
@ -16,11 +16,13 @@ AC_DEFUN([TARGET_SHIZZLE],
|
||||
|
||||
AC_MSG_CHECKING([target operating system])
|
||||
|
||||
LIBBURNIA_LDCONFIG_CMD="echo 'No ldconfig run performed. If needed, configure manually for:'"
|
||||
|
||||
case $target_os in
|
||||
linux*)
|
||||
ARCH=linux
|
||||
LIBBURN_ARCH_LIBS=
|
||||
LIBBURNIA_LDCONFIG_CMD=ldconfig
|
||||
;;
|
||||
freebsd*)
|
||||
ARCH=freebsd
|
||||
|
@ -4,7 +4,7 @@
|
||||
cdrskin. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/cdrskin_eng.html
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.8.5.tar.gz
|
||||
http://scdbackup.sourceforge.net/cdrskin-0.8.8.pl00.tar.gz
|
||||
|
||||
Copyright (C) 2006-2010 Thomas Schmitt, provided under GPL version 2 or later.
|
||||
------------------------------------------------------------------------------
|
||||
@ -26,10 +26,10 @@ By using this software you agree to the disclaimer at the end of this text
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Obtain cdrskin-0.8.5.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain cdrskin-0.8.8.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf cdrskin-0.8.5.tar.gz
|
||||
cd cdrskin-0.8.5
|
||||
tar xzf cdrskin-0.8.8.pl00.tar.gz
|
||||
cd cdrskin-0.8.8
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -310,10 +310,11 @@ Add-on session (equivalent to growisofs -M):
|
||||
cdrskin dev=/dev/sr0 --grow_overwriteable_iso ... -
|
||||
|
||||
|
||||
DVD-RW and DVD-R
|
||||
DVD-RW , DVD-R , DVD-R DL
|
||||
|
||||
DVD-RW are usable if formatted to state "Restricted Overwrite" or if in state
|
||||
"Sequential Recording". DVD-R are always in sequential state.
|
||||
"Sequential Recording". DVD-R are always in sequential state. DVD-R DL are
|
||||
always sequential and incapable of multi-session.
|
||||
|
||||
"Sequential" is the state of unused media and of media previously blanked
|
||||
or written by cdrecord. dvd+rw-format -blank can also achieve this state.
|
||||
|
@ -38,7 +38,7 @@ original="./libburn_svn_release.tgz"
|
||||
# My changes are in $changes , mainly in $changes/cdrskin
|
||||
changes="./libburn-release"
|
||||
|
||||
skin_release="0.8.4"
|
||||
skin_release="0.8.8"
|
||||
patch_level=".pl00"
|
||||
skin_rev="$skin_release""$patch_level"
|
||||
|
@ -38,7 +38,7 @@ original="./libburn_svn.tgz"
|
||||
# My changes are in $changes , mainly in $changes/cdrskin
|
||||
changes="./libburn-develop"
|
||||
|
||||
skin_release="0.8.5"
|
||||
skin_release="0.8.9"
|
||||
patch_level=""
|
||||
skin_rev="$skin_release""$patch_level"
|
||||
|
@ -88,7 +88,7 @@ or
|
||||
|
||||
/** The official program version */
|
||||
#ifndef Cdrskin_prog_versioN
|
||||
#define Cdrskin_prog_versioN "0.8.5"
|
||||
#define Cdrskin_prog_versioN "0.8.8"
|
||||
#endif
|
||||
|
||||
/** The official libburn interface revision to use.
|
||||
@ -101,7 +101,7 @@ or
|
||||
#define Cdrskin_libburn_minoR 8
|
||||
#endif
|
||||
#ifndef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_micrO 5
|
||||
#define Cdrskin_libburn_micrO 8
|
||||
#endif
|
||||
|
||||
|
||||
@ -135,13 +135,13 @@ or
|
||||
#endif /* Cdrskin_libburn_cvs_A60220_tS */
|
||||
|
||||
|
||||
#ifdef Cdrskin_libburn_0_8_4
|
||||
#define Cdrskin_libburn_versioN "0.8.4"
|
||||
#ifdef Cdrskin_libburn_0_8_8
|
||||
#define Cdrskin_libburn_versioN "0.8.8"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
#endif /* Cdrskin_libburn_0_8_4 */
|
||||
#endif /* Cdrskin_libburn_0_8_8 */
|
||||
|
||||
#ifdef Cdrskin_libburn_0_8_5
|
||||
#define Cdrskin_libburn_versioN "0.8.5"
|
||||
#ifdef Cdrskin_libburn_0_8_9
|
||||
#define Cdrskin_libburn_versioN "0.8.9"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
|
||||
/* Place novelty switch macros here.
|
||||
@ -153,29 +153,29 @@ or
|
||||
*/
|
||||
|
||||
|
||||
#endif /* Cdrskin_libburn_0_8_5 */
|
||||
#endif /* Cdrskin_libburn_0_8_9 */
|
||||
|
||||
#ifndef Cdrskin_libburn_versioN
|
||||
#define Cdrskin_libburn_0_8_4
|
||||
#define Cdrskin_libburn_versioN "0.8.4"
|
||||
#define Cdrskin_libburn_0_8_8
|
||||
#define Cdrskin_libburn_versioN "0.8.8"
|
||||
#define Cdrskin_libburn_from_pykix_svN 1
|
||||
#endif
|
||||
|
||||
#ifdef Cdrskin_libburn_0_8_4
|
||||
#ifdef Cdrskin_libburn_0_8_8
|
||||
#undef Cdrskin_libburn_majoR
|
||||
#undef Cdrskin_libburn_minoR
|
||||
#undef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_majoR 0
|
||||
#define Cdrskin_libburn_minoR 8
|
||||
#define Cdrskin_libburn_micrO 4
|
||||
#define Cdrskin_libburn_micrO 8
|
||||
#endif
|
||||
#ifdef Cdrskin_libburn_0_8_5
|
||||
#ifdef Cdrskin_libburn_0_8_9
|
||||
#undef Cdrskin_libburn_majoR
|
||||
#undef Cdrskin_libburn_minoR
|
||||
#undef Cdrskin_libburn_micrO
|
||||
#define Cdrskin_libburn_majoR 0
|
||||
#define Cdrskin_libburn_minoR 8
|
||||
#define Cdrskin_libburn_micrO 5
|
||||
#define Cdrskin_libburn_micrO 9
|
||||
#endif
|
||||
|
||||
|
||||
@ -5143,7 +5143,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
||||
#endif
|
||||
char media_class[80];
|
||||
int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
|
||||
int app_code, cd_info_valid, lra;
|
||||
int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
|
||||
off_t avail, buf_count;
|
||||
char disc_type[80], bar_code[9], buf[2 * 2048];
|
||||
unsigned int disc_id;
|
||||
@ -5239,6 +5239,11 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
||||
printf("Disk type: unrecognizable\n");
|
||||
if(cd_info_valid & 2)
|
||||
printf("Disk id: 0x%-X\n", disc_id);
|
||||
ret= burn_disc_get_bd_spare_info(drive, &alloc_blocks, &free_blocks, 0);
|
||||
if(ret == 1) {
|
||||
printf("BD Spare Area consumed: %d\n", alloc_blocks - free_blocks);
|
||||
printf("BD Spare Area available: %d\n", free_blocks);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("Track Sess Type Start Addr End Addr Size\n");
|
||||
@ -5639,7 +5644,7 @@ ex:;
|
||||
int Cdrskin_list_formats(struct CdrskiN *skin, int flag)
|
||||
{
|
||||
struct burn_drive *drive;
|
||||
int ret, i, status, num_formats, profile_no, type;
|
||||
int ret, i, status, num_formats, profile_no, type, alloc_blocks, free_blocks;
|
||||
off_t size;
|
||||
unsigned dummy;
|
||||
char status_text[80], profile_name[90];
|
||||
@ -5686,6 +5691,10 @@ int Cdrskin_list_formats(struct CdrskiN *skin, int flag)
|
||||
} else
|
||||
sprintf(status_text, "illegal status according to MMC-5");
|
||||
printf("Format status: %s\n", status_text);
|
||||
ret= burn_disc_get_bd_spare_info(drive, &alloc_blocks, &free_blocks, 0);
|
||||
if(ret == 1)
|
||||
printf("BD Spare Area: %d blocks consumed, %d blocks available\n",
|
||||
alloc_blocks - free_blocks, free_blocks);
|
||||
|
||||
for (i = 0; i < num_formats; i++) {
|
||||
ret= burn_disc_get_format_descr(drive, i, &type, &size, &dummy);
|
||||
|
@ -65,7 +65,7 @@ connected via SCSI, PATA (aka IDE, ATA), USB, or SATA.
|
||||
GPL software included:<BR>
|
||||
</H2>
|
||||
<DL>
|
||||
<DT>libburn-0.8.4</DT>
|
||||
<DT>libburn-0.8.8</DT>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)
|
||||
@ -200,8 +200,8 @@ Standalone ISO 9660 multi-session CD/DVD/BD tool
|
||||
<P>
|
||||
<DL>
|
||||
<DT>Download as source code (see README):</DT>
|
||||
<DD><A HREF="cdrskin-0.8.4.pl00.tar.gz">cdrskin-0.8.4.pl00.tar.gz</A>
|
||||
(845 KB).
|
||||
<DD><A HREF="cdrskin-0.8.8.pl00.tar.gz">cdrskin-0.8.8.pl00.tar.gz</A>
|
||||
(850 KB).
|
||||
</DD>
|
||||
<DD>
|
||||
The cdrskin tarballs are source code identical with libburn releases
|
||||
@ -250,20 +250,17 @@ cdrskin_0.4.2.pl00-x86-suse9_0-static.tar.gz</A>, (310 KB), -static compiled,
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version cdrskin-0.8.2.pl00:
|
||||
Enhancements towards previous stable version cdrskin-0.8.6.pl00:
|
||||
<UL>
|
||||
<LI>
|
||||
Let general POSIX system adapters ignore SIGWINCH and SIGURG if defined
|
||||
</LI>
|
||||
<LI>
|
||||
Allowed 64 kB max output buffer size on all OSes
|
||||
Reporting spare area use of formatted BD media.
|
||||
</LI>
|
||||
<!--
|
||||
<LI>none</LI>
|
||||
-->
|
||||
</UL>
|
||||
|
||||
Bug fixes towards cdrskin-0.8.2.pl00:
|
||||
Bug fixes towards cdrskin-0.8.6.pl00:
|
||||
<UL>
|
||||
<LI>none</LI>
|
||||
<!--
|
||||
@ -275,12 +272,10 @@ Bug fixes towards cdrskin-0.8.2.pl00:
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.8.5 :</H3></DT>
|
||||
<DD>Enhancements towards current stable version 0.8.4.pl00:
|
||||
<DT><H3>Development snapshot, version 0.8.9 :</H3></DT>
|
||||
<DD>Enhancements towards current stable version 0.8.8.pl00:
|
||||
<UL>
|
||||
<LI>
|
||||
Lifted test reservation on DVD-R DL media.
|
||||
</LI>
|
||||
<LI>none yet</LI>
|
||||
<!--
|
||||
<LI>none yet</LI>
|
||||
-->
|
||||
@ -288,7 +283,7 @@ Lifted test reservation on DVD-R DL media.
|
||||
</UL>
|
||||
</DD>
|
||||
|
||||
<DD>Bug fixes towards cdrskin-0.8.4.pl00:
|
||||
<DD>Bug fixes towards cdrskin-0.8.8.pl00:
|
||||
<UL>
|
||||
<LI>none yet</LI>
|
||||
<!--
|
||||
@ -298,10 +293,10 @@ Lifted test reservation on DVD-R DL media.
|
||||
</DD>
|
||||
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_cdrskin_devel">README 0.8.5</A>
|
||||
<DD><A HREF="cdrskin__help_devel">cdrskin_0.8.5 --help</A></DD>
|
||||
<DD><A HREF="cdrskin_help_devel">cdrskin_0.8.5 -help</A></DD>
|
||||
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.8.5)</A></DD>
|
||||
<DD><A HREF="README_cdrskin_devel">README 0.8.9</A>
|
||||
<DD><A HREF="cdrskin__help_devel">cdrskin_0.8.9 --help</A></DD>
|
||||
<DD><A HREF="cdrskin_help_devel">cdrskin_0.8.9 -help</A></DD>
|
||||
<DD><A HREF="man_1_cdrskin_devel.html">man cdrskin (as of 0.8.9)</A></DD>
|
||||
<DD> </DD>
|
||||
<DT>Maintainers of cdrskin unstable packages please use SVN of
|
||||
<A HREF="http://libburnia-project.org"> libburnia-project.org</A></DT>
|
||||
@ -321,8 +316,8 @@ admins with full system souvereignty.</DT>
|
||||
<A HREF="README_cdrskin_devel">upcoming README</A> ):
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="cdrskin-0.8.5.tar.gz">cdrskin-0.8.5.tar.gz</A>
|
||||
(845 KB).
|
||||
<A HREF="cdrskin-0.8.9.tar.gz">cdrskin-0.8.9.tar.gz</A>
|
||||
(850 KB).
|
||||
</DD>
|
||||
|
||||
<!-- This is not offered any more since spring 2008
|
||||
|
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2010.09.14.124934"
|
||||
#define Cdrskin_timestamP "2010.10.20.120001"
|
||||
|
@ -8589,20 +8589,344 @@ Made number transition to 0.8.5
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_5
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
30 Jun 2010 []
|
||||
30 Jun 2010 [3313]
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
30 Jun 2010 [3314]
|
||||
svn move -m libburn release 0.8.4 is ready \
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroEightFour \
|
||||
http://svn.libburnia-project.org/libburn/tags/ZeroEightFour
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.5 -
|
||||
------------------------------------ cycle - cdrskin-0.8.5 -
|
||||
------------------------------------ cycle - cdrskin-0.8.5 - 2010.06.30.112709
|
||||
|
||||
|
||||
2010.07.04.131219 [3323]
|
||||
libburn/libburn.h
|
||||
libburn/libdax_audioxtr.h
|
||||
libburn/libdax_audioxtr.c
|
||||
cdrskin/cdrskin.c
|
||||
test/dewav.c
|
||||
Moved public part of libdax_audioxtr.h to libburn.h
|
||||
|
||||
2010.07.04.170035 [3325]
|
||||
configure.ac
|
||||
Makefile.am
|
||||
+ libburn/libburn.ver
|
||||
Hiding all non-API symbols from the linker by use of --version-script
|
||||
|
||||
04 Jul [3326]
|
||||
README
|
||||
Mentioned new configure option --disable-versioned-libs
|
||||
|
||||
2010.07.06.113304 [3329]
|
||||
configure.ac
|
||||
acinclude.m4
|
||||
Let configure perform linker test with --version-script if enabled
|
||||
|
||||
2010.07.06.113356 [3330]
|
||||
libburn/libburn.h
|
||||
Mentioned that public API calls must be in libisofs/libisofs.ver
|
||||
|
||||
2010.07.12.193201 [3334]
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/cdrfifo.c
|
||||
Changed all malloc() to calloc()
|
||||
|
||||
2010.07.12.193644 [3335]
|
||||
libburn/async.c
|
||||
libburn/drive.c
|
||||
libburn/file.c
|
||||
libburn/libdax_audioxtr.c
|
||||
libburn/libdax_msgs.c
|
||||
libburn/mmc.c
|
||||
libburn/null.c
|
||||
libburn/options.c
|
||||
libburn/read.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-freebsd-port.c
|
||||
libburn/util.c
|
||||
libburn/write.c
|
||||
Changed all malloc() to calloc()
|
||||
|
||||
2010.07.29.083453 [3336]
|
||||
libburn/spc.h
|
||||
libburn/spc.c
|
||||
libburn/mmc.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-solaris.c
|
||||
libburn/sg-libcdio.c
|
||||
Recognizing sense data format 0x72 if given instead of 0x70
|
||||
|
||||
2010.07.29.164100 [3337]
|
||||
Makefile.am
|
||||
Detached make target "doc" from target "all".
|
||||
|
||||
30 Jul 2010 [3341]
|
||||
doc/doxygen.conf.in
|
||||
Removed problematic DETAILS_AT_TOP to silence warning of Debian buildd
|
||||
|
||||
2010.08.02.100630 [3345]
|
||||
libburn/spc.h
|
||||
libburn/spc.c
|
||||
libburn/sg-linux.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-libcdio.c
|
||||
Reporting sense data with burn_set_scsi_logging()
|
||||
|
||||
2010.08.02.131946 [3346]
|
||||
libburn/sg-linux.c
|
||||
Added error simulation code to Linux system adapter
|
||||
|
||||
2010.08.02.141233 [3347]
|
||||
libburn/sg-solaris.c
|
||||
Committed Solaris system adapter which was forgotten with rev 3345
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.5 - 2010.08.02.141233
|
||||
* Hiding all non-API symbols from the linker by use of --version-script
|
||||
|
||||
|
||||
2010.08.03.191151 [3348]
|
||||
libburn/sg-linux.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-libcdio.c
|
||||
libburn/sg-solaris.c
|
||||
Obeying burn_set_scsi_logging() with errors of class RETRY
|
||||
|
||||
2010.08.08.091224 [3349]
|
||||
libburn/spc.h
|
||||
libburn/spc.c
|
||||
libburn/sg-linux.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-libcdio.c
|
||||
libburn/sg-solaris.c
|
||||
New SCSI comand response "GO_ON"
|
||||
|
||||
2010.08.08.091317 [3350]
|
||||
libburn/libburn.h
|
||||
Hopefully silenced a warning of doxygen on Debian buildd
|
||||
|
||||
2010.08.13.114139 [3352]
|
||||
libburn/libdax_msgs.h
|
||||
libburn/libdax_audioxtr.h
|
||||
Corrected typo in macro names (which shall never be defined anyway)
|
||||
|
||||
2010.08.21.095456 [3356]
|
||||
libburn/libburn.h
|
||||
libburn/mmc.c
|
||||
cdrskin/cdrskin.1
|
||||
cdrskin/cdrskin_eng.html
|
||||
Lifted test reservation on DVD-R DL media. Thanks to Kevin Kieffer for testing.
|
||||
|
||||
28 Aug 2010 [3358]
|
||||
test/libburner.c
|
||||
Clarified the meaning of 0x0 and 0x30 signal handlers
|
||||
|
||||
2010.09.14.124934 [3368]
|
||||
libburn/spc.h
|
||||
libburn/spc.c
|
||||
libburn/sg-linux.c
|
||||
libburn/sg-libcdio.c
|
||||
libburn/sg-freebsd.c
|
||||
libburn/sg-solaris.c
|
||||
Centralized interpretation of SCSI command outcome
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.5 - 2010.09.14.135405
|
||||
* Lifted test reservation on DVD-R DL media.
|
||||
|
||||
|
||||
15 Sep 2010 [3369]
|
||||
ChangeLog
|
||||
Meaningful change log file derived by George Danchev from web site
|
||||
|
||||
16 Sep 2010 [3373]
|
||||
svn copy -m Branching for libburn release 0.8.6
|
||||
http://svn.libburnia-project.org/libburn/trunk
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroEightSix
|
||||
|
||||
2010.09.16.113001 [3374]
|
||||
Makefile.am
|
||||
configure.ac
|
||||
README
|
||||
libburn/libburn.h
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/README
|
||||
cdrskin/compile_cdrskin.sh
|
||||
cdrskin/cdrskin_timestamp.h
|
||||
cdrskin/cdrskin_eng.html
|
||||
Made number transition to 0.8.6
|
||||
|
||||
16 Sep 2010 [3375]
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_4
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_5
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_6
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_7
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
16 Sep 2010 [3376]
|
||||
ChangeLog
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------ release - cdrskin-0.8.6.pl00 - 2010.09.16.113001
|
||||
* Lifted test reservation on DVD-R DL media.
|
||||
* Hiding all non-API symbols from the linker by use of --version-script
|
||||
|
||||
|
||||
2010.09.17.073827 [3377]
|
||||
Makefile.am
|
||||
configure.ac
|
||||
README
|
||||
libburn/libburn.h
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/README
|
||||
cdrskin/compile_cdrskin.sh
|
||||
cdrskin/cdrskin_timestamp.h
|
||||
cdrskin/cdrskin_eng.html
|
||||
Made number transition to 0.8.7
|
||||
|
||||
17 Sep 2010 [3378]
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_4
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_5
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_6
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_7
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
17 Sep 2010 [3379]
|
||||
ChangeLog
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
17 Sep 2010 [3381]
|
||||
svn move -m libburn release 0.8.6 is ready
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroEightSix
|
||||
http://svn.libburnia-project.org/libburn/tags/ZeroEightSix
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.7 - 2010.09.17.082926
|
||||
|
||||
2010.09.22.105426 [3395]
|
||||
acinclude.m4
|
||||
configure.ac
|
||||
Makefile.am
|
||||
README
|
||||
On Linux: Run ldconfig during make install,if not --disable-ldconfig-at-install
|
||||
|
||||
2010.09.22.175054 [3397]
|
||||
libburn/libburn.h
|
||||
libburn/libburn.ver
|
||||
libburn/libdax_msgs.h
|
||||
libburn/file.h
|
||||
libburn/file.c
|
||||
libburn/source.h
|
||||
libburn/source.c
|
||||
New API call burn_offst_source_new()
|
||||
|
||||
2010.09.22.180921 [3398]
|
||||
Makefile.am
|
||||
+ test/offst_source.c
|
||||
Temporarily added test program for burn_offst_source_new()
|
||||
|
||||
22 Sep 2010 [3399]
|
||||
test/offst_source.c
|
||||
Better default input file for test/offst_source.c
|
||||
|
||||
2010.09.24.090631 [3401]
|
||||
libburn/libburn.h
|
||||
libburn/drive.c
|
||||
libburn/mmc.h
|
||||
libburn/mmc.c
|
||||
ChangeLog
|
||||
New API call burn_disc_get_bd_spare_info()
|
||||
|
||||
2010.09.24.090731 [3402]
|
||||
cdrskin/cdrskin.c
|
||||
Displaying eventual BD spare area information with -minfo
|
||||
|
||||
2010.09.24.091902 [3403]
|
||||
cdrskin/cdrskin.c
|
||||
Displaying eventual BD spare area information with --list_formats
|
||||
|
||||
2010.09.24.092535 [3404]
|
||||
libburn/libburn.ver
|
||||
Making new API call available in dynamic library
|
||||
|
||||
2010.09.24.100255 [3405]
|
||||
cdrskin/cdrskin.c
|
||||
Polished appearance of BD spare info with --list_formats
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.7 - 2010.09.24.100255
|
||||
* New API call burn_offst_source_new()
|
||||
* New API call burn_disc_get_bd_spare_info()
|
||||
|
||||
|
||||
2010.09.28.101043 [3408]
|
||||
libburn/mmc.c
|
||||
Avoiding to inquire spare area of unsuitable media
|
||||
|
||||
2010.10.15.191717 [3445]
|
||||
libburn/write.c
|
||||
libburn/libdax_msgs.h
|
||||
Issue warning after writing a BD-R with more than 300 sessions
|
||||
|
||||
2010.10.19.165908 [3450]
|
||||
libburn/async.c
|
||||
libburn/write.c
|
||||
libburn/libdax_msgs.h
|
||||
Issueing messages with all cases of burn canceling
|
||||
|
||||
20 Oct 2010 [3453]
|
||||
svn copy -m Branching for libburn release 0.8.8
|
||||
http://svn.libburnia-project.org/libburn/trunk
|
||||
http://svn.libburnia-project.org/libburn/branches/ZeroEightEight
|
||||
|
||||
2010.10.20.120001 [3454]
|
||||
Makefile.am
|
||||
configure.ac
|
||||
README
|
||||
libburn/libburn.h
|
||||
cdrskin/cdrskin.c
|
||||
cdrskin/README
|
||||
cdrskin/compile_cdrskin.sh
|
||||
cdrskin/cdrskin_timestamp.h
|
||||
cdrskin/cdrskin_eng.html
|
||||
Made number transition to 0.8.8
|
||||
|
||||
20 Oct 2010 [3455]
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_6
|
||||
- cdrskin/add_ts_changes_to_libburn_0_8_7
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_8
|
||||
+ cdrskin/add_ts_changes_to_libburn_0_8_9
|
||||
Updated cdrskin tarball generator
|
||||
|
||||
20 Oct 2010 []
|
||||
ChangeLog
|
||||
cdrskin/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------ release - cdrskin-0.8.8.pl00 - 2010.10.20.120001
|
||||
* New API call burn_offst_source_new()
|
||||
* New API call burn_disc_get_bd_spare_info()
|
||||
|
||||
|
||||
------------------------------------ cycle - cdrskin-0.8.9 -
|
||||
------------------------------------ cycle - cdrskin-0.8.9 -
|
||||
|
||||
|
||||
|
||||
|
||||
**********************************************************************
|
||||
Important: When adding a public API function then add its name to file
|
||||
libburn/libburn.ver
|
||||
**********************************************************************
|
||||
|
||||
===============================================================================
|
||||
TODO
|
||||
===============================================================================
|
||||
|
||||
|
||||
Better motivation of burn_set_signal_handling() in libburn.h.
|
||||
|
||||
|
||||
-------------------------------- Solaris -----------------------------------
|
||||
|
||||
Locking of device files.
|
||||
@ -8611,16 +8935,24 @@ Unmounting.
|
||||
|
||||
Could need ioctl to obtain SCSI bus,target,lun from fd rather than name
|
||||
|
||||
(
|
||||
Subject: Re: [osol-help] DHCP configuration with fixed addresses
|
||||
pntadm -A 10.0.0.24 -f MANUAL -i 010008544255E7 -m 10.0.0.0 -y 10.0.0.0
|
||||
)
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
- change all malloc() to calloc()
|
||||
|
||||
- find out from where libburn/crc.c stems. What algorithm is crc_32() ?
|
||||
|
||||
|
||||
--------------------------------- bugs -------------------------------------
|
||||
|
||||
- recognise sense data format 0x72 rather than 0x70
|
||||
Key=[1], ASC=[2], ASCQ=[3]
|
||||
(check libcdio too)
|
||||
|
||||
|
||||
- handle HD DVD profiles 0x50 "HD DVD-ROM", 0x51 "HD DVD-R", 0x52 "HD DVD-RAM"
|
||||
as readable.
|
||||
|
||||
|
@ -8,7 +8,7 @@ debug_opts="-O2"
|
||||
def_opts=
|
||||
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
||||
fifo_opts=""
|
||||
libvers="-DCdrskin_libburn_0_8_5"
|
||||
libvers="-DCdrskin_libburn_0_8_8"
|
||||
|
||||
# To be used if Makefile.am uses libburn_libburn_la_CFLAGS
|
||||
# burn="libburn/libburn_libburn_la-"
|
||||
@ -47,15 +47,15 @@ do
|
||||
libdax_audioxtr_o=
|
||||
libdax_msgs_o="$burn"message.o
|
||||
cleanup_src_or_obj="-DCleanup_has_no_libburn_os_H cdrskin/cleanup.c"
|
||||
elif test "$i" = "-libburn_0_8_4"
|
||||
elif test "$i" = "-libburn_0_8_8"
|
||||
then
|
||||
libvers="-DCdrskin_libburn_0_8_4"
|
||||
libvers="-DCdrskin_libburn_0_8_8"
|
||||
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
||||
libdax_msgs_o="$burn"libdax_msgs.o
|
||||
cleanup_src_or_obj="$burn"cleanup.o
|
||||
elif test "$i" = "-libburn_svn"
|
||||
then
|
||||
libvers="-DCdrskin_libburn_0_8_5"
|
||||
libvers="-DCdrskin_libburn_0_8_9"
|
||||
libdax_audioxtr_o="$burn"libdax_audioxtr.o
|
||||
libdax_msgs_o="$burn"libdax_msgs.o
|
||||
cleanup_src_or_obj="$burn"cleanup.o
|
||||
@ -109,7 +109,7 @@ do
|
||||
echo "Options:"
|
||||
echo " -compile_cdrfifo compile program cdrskin/cdrfifo."
|
||||
echo " -compile_dewav compile program test/dewav without libburn."
|
||||
echo " -libburn_0_8_4 set macro to match libburn-0.8.4"
|
||||
echo " -libburn_0_8_8 set macro to match libburn-0.8.8"
|
||||
echo " -libburn_svn set macro to match current libburn-SVN."
|
||||
echo " -dvd_obs_64k 64 KB default size for DVD/BD writing."
|
||||
echo " -use_libcdio link with -lcdio because libburn uses it."
|
||||
|
27
configure.ac
27
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libburn], [0.8.5], [http://libburnia-project.org])
|
||||
AC_INIT([libburn], [0.8.8], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -83,6 +83,8 @@ dnl 0.7.8 = libburn.so.4.43.0
|
||||
dnl 0.8.0 = libburn.so.4.45.0
|
||||
dnl 0.8.2 = libburn.so.4.47.0
|
||||
dnl 0.8.4 = libburn.so.4.49.0
|
||||
dnl 0.8.6 = libburn.so.4.51.0
|
||||
dnl 0.8.8 = libburn.so.4.53.0
|
||||
dnl
|
||||
dnl So LT_CURRENT, LT_REVISION and LT_AGE get set directly here.
|
||||
dnl SONAME of the emerging library is LT_CURRENT - LT_AGE.
|
||||
@ -108,7 +110,7 @@ dnl
|
||||
dnl As said: Only copies. Original in libburn/libburn.h : burn_header_version_*
|
||||
BURN_MAJOR_VERSION=0
|
||||
BURN_MINOR_VERSION=8
|
||||
BURN_MICRO_VERSION=5
|
||||
BURN_MICRO_VERSION=8
|
||||
BURN_VERSION=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(BURN_MAJOR_VERSION)
|
||||
@ -119,14 +121,14 @@ AC_SUBST(BURN_VERSION)
|
||||
dnl Libtool versioning
|
||||
LT_RELEASE=$BURN_MAJOR_VERSION.$BURN_MINOR_VERSION.$BURN_MICRO_VERSION
|
||||
dnl
|
||||
dnl ### This is the release version libburn-0.8.4
|
||||
dnl This is the development version after above release version
|
||||
dnl This is the release version libburn-0.8.8
|
||||
dnl ### This is the development version after above release version
|
||||
dnl LT_CURRENT++, LT_AGE++ has not yet happened.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 53 - 49 = 4 . Linux library name = libburn.so.4.49.0
|
||||
LT_CURRENT=53
|
||||
LT_AGE=49
|
||||
dnl SONAME = 57 - 53 = 4 . Linux library name = libburn.so.4.53.0
|
||||
LT_CURRENT=57
|
||||
LT_AGE=53
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -263,6 +265,17 @@ else
|
||||
echo "disabled strict symbol encapsulation"
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE(ldconfig-at-install,
|
||||
[ --enable-ldconfig-at-install On GNU/Linux run ldconfig, default=yes],
|
||||
, ldconfig_at_install=yes)
|
||||
if test x$ldconfig_at_install = xyes; then
|
||||
dummy=dummy
|
||||
else
|
||||
LIBBURNIA_LDCONFIG_CMD="echo 'NOTE: ldconfig is disabled. If needed, configure manually for:'"
|
||||
echo "disabled run of ldconfig during installation on GNU/Linux"
|
||||
fi
|
||||
AC_SUBST(LIBBURNIA_LDCONFIG_CMD)
|
||||
|
||||
|
||||
dnl Add compiler-specific flags
|
||||
|
||||
|
@ -644,8 +644,13 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
|
||||
d->cancel = 1;
|
||||
|
||||
/* ts A70203 : people have been warned in API specs */
|
||||
if (opts->write_type == BURN_WRITE_NONE)
|
||||
if (opts->write_type == BURN_WRITE_NONE) {
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
0x0002017c,
|
||||
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"No valid write type selected", 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (d->drive_role == 0) {
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
|
@ -2836,3 +2836,18 @@ int burn_disc_get_cd_info(struct burn_drive *d, char disc_type[80],
|
||||
*valid = d->disc_info_valid;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ts B00924 : API */
|
||||
int burn_disc_get_bd_spare_info(struct burn_drive *d,
|
||||
int *alloc_blocks, int *free_blocks, int flag)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (burn_drive_get_drive_role(d) != 1)
|
||||
return 0;
|
||||
*alloc_blocks = *free_blocks = 0;
|
||||
ret = mmc_get_bd_spare_info(d, alloc_blocks, free_blocks, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
164
libburn/file.c
164
libburn/file.c
@ -481,10 +481,11 @@ int burn_fifo_source_shoveller(struct burn_source *source, int flag)
|
||||
|
||||
int burn_fifo_cancel(struct burn_source *source)
|
||||
{
|
||||
int ret;
|
||||
struct burn_source_fifo *fs = source->data;
|
||||
|
||||
burn_source_cancel(fs->inp);
|
||||
return(1);
|
||||
ret = burn_source_cancel(fs->inp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -747,3 +748,162 @@ int burn_fifo_fill(struct burn_source *source, int bufsize, int flag)
|
||||
1 | ((flag & 1) << 1));
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------- Offset source ----------------------------- */
|
||||
/* ts B00922 */
|
||||
|
||||
static void offst_free(struct burn_source *source);
|
||||
|
||||
static struct burn_source_offst *offst_auth(struct burn_source *source)
|
||||
{
|
||||
if (source->free_data != offst_free) {
|
||||
libdax_msgs_submit(libdax_messenger, -1, 0x0002017a,
|
||||
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Expected offset source object as parameter",
|
||||
0, 0);
|
||||
return NULL;
|
||||
}
|
||||
return (struct burn_source_offst *) source->data;
|
||||
}
|
||||
|
||||
static off_t offst_get_size(struct burn_source *source)
|
||||
{
|
||||
struct burn_source_offst *fs;
|
||||
|
||||
if ((fs = offst_auth(source)) == NULL)
|
||||
return (off_t) 0;
|
||||
return fs->size;
|
||||
}
|
||||
|
||||
static int offst_set_size(struct burn_source *source, off_t size)
|
||||
{
|
||||
struct burn_source_offst *fs;
|
||||
|
||||
if ((fs = offst_auth(source)) == NULL)
|
||||
return 0;
|
||||
fs->size = size;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void offst_free(struct burn_source *source)
|
||||
{
|
||||
struct burn_source_offst *fs;
|
||||
|
||||
if ((fs = offst_auth(source)) == NULL)
|
||||
return;
|
||||
if (fs->prev != NULL)
|
||||
offst_auth(fs->prev)->next = fs->next;
|
||||
if (fs->next != NULL)
|
||||
offst_auth(fs->next)->prev = fs->prev;
|
||||
if (fs->inp != NULL)
|
||||
burn_source_free(fs->inp); /* i.e. decrement refcount */
|
||||
free(source->data);
|
||||
}
|
||||
|
||||
static int offst_read(struct burn_source *source, unsigned char *buffer,
|
||||
int size)
|
||||
{
|
||||
int ret, to_read, todo;
|
||||
struct burn_source_offst *fs;
|
||||
|
||||
if ((fs = offst_auth(source)) == NULL)
|
||||
return -1;
|
||||
|
||||
/* Eventually skip bytes up to start position */;
|
||||
if (!fs->running) {
|
||||
if (fs->prev != NULL)
|
||||
fs->pos = offst_auth(fs->prev)->pos;
|
||||
fs->running= 1;
|
||||
}
|
||||
if(fs->pos < fs->start) {
|
||||
todo = fs->start - fs->pos;
|
||||
while (todo > 0) {
|
||||
to_read = todo;
|
||||
if (to_read > size)
|
||||
to_read = size;
|
||||
ret = burn_source_read(fs->inp, buffer, to_read);
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
todo -= ret;
|
||||
fs->pos += ret;
|
||||
}
|
||||
}
|
||||
|
||||
/* Produce EOF if source size is exhausted.
|
||||
burn_source delivers no incomplete sector buffers.
|
||||
*/
|
||||
if (fs->pos + size > fs->start + fs->size)
|
||||
return 0;
|
||||
|
||||
/* Read payload */
|
||||
ret = burn_source_read(fs->inp, buffer, size);
|
||||
if (ret > 0)
|
||||
fs->pos += ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int offst_cancel(struct burn_source *source)
|
||||
{
|
||||
int ret;
|
||||
struct burn_source_offst *fs;
|
||||
|
||||
if ((fs = offst_auth(source)) == NULL)
|
||||
return -1;
|
||||
ret = burn_source_cancel(fs->inp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct burn_source *burn_offst_source_new(
|
||||
struct burn_source *inp, struct burn_source *prev,
|
||||
off_t start, off_t size, int flag)
|
||||
{
|
||||
struct burn_source *src;
|
||||
struct burn_source_offst *fs, *prev_fs = NULL;
|
||||
|
||||
if (prev != NULL)
|
||||
if ((prev_fs = offst_auth(prev)) == NULL)
|
||||
return NULL; /* Not type burn_source_offst */
|
||||
|
||||
fs = calloc(1, sizeof(struct burn_source_offst));
|
||||
if (fs == NULL)
|
||||
return NULL;
|
||||
src = burn_source_new();
|
||||
if (src == NULL) {
|
||||
free((char *) fs);
|
||||
return NULL;
|
||||
}
|
||||
src->read = NULL;
|
||||
src->read_sub = NULL;
|
||||
src->get_size = offst_get_size;
|
||||
src->set_size = offst_set_size;
|
||||
src->free_data = offst_free;
|
||||
src->data = fs;
|
||||
src->version= 1;
|
||||
src->read_xt = offst_read;
|
||||
src->cancel= offst_cancel;
|
||||
fs->inp = inp;
|
||||
fs->prev = prev;
|
||||
fs->next = NULL;
|
||||
if (prev != NULL) {
|
||||
if (prev_fs->next != NULL) {
|
||||
offst_auth(prev_fs->next)->prev = src;
|
||||
fs->next = prev_fs->next;
|
||||
}
|
||||
prev_fs->next = src;
|
||||
if (prev_fs->start + prev_fs->size > start) {
|
||||
libdax_msgs_submit(libdax_messenger, -1, 0x00020179,
|
||||
LIBDAX_MSGS_SEV_FAILURE, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Offset source start address is before end of previous source",
|
||||
0, 0);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
fs->start = start;
|
||||
fs->size = size;
|
||||
fs->running = 0;
|
||||
fs->pos = 0;
|
||||
inp->refcount++; /* make sure inp lives longer than src */
|
||||
|
||||
return src;
|
||||
}
|
||||
|
||||
|
@ -74,4 +74,22 @@ struct burn_source_fifo {
|
||||
int burn_fifo_source_shoveller(struct burn_source *source, int flag);
|
||||
|
||||
|
||||
/* ts B00922 */
|
||||
struct burn_source_offst {
|
||||
|
||||
/* See burn_offst_source_new() */
|
||||
struct burn_source *inp;
|
||||
struct burn_source *prev;
|
||||
off_t start;
|
||||
off_t size;
|
||||
|
||||
/* To help offst_free() */
|
||||
struct burn_source *next;
|
||||
|
||||
/* The current reading position */
|
||||
int running;
|
||||
off_t pos;
|
||||
|
||||
};
|
||||
|
||||
#endif /* LIBBURN__FILE_H */
|
||||
|
@ -1237,12 +1237,29 @@ char *burn_guess_cd_manufacturer(int m_li, int s_li, int f_li,
|
||||
bit5= Disc is nominally erasable (Erasable bit)
|
||||
This will be set with overwriteable media which
|
||||
libburn normally considers to be unerasable blank.
|
||||
@return 1 success, <= 0 an error occured
|
||||
@since 0.7.2
|
||||
*/
|
||||
int burn_disc_get_cd_info(struct burn_drive *d, char disc_type[80],
|
||||
unsigned int *disc_id, char bar_code[9], int *app_code,
|
||||
int *valid);
|
||||
|
||||
/* ts B00924 */
|
||||
/** Read the current usage of the eventual BD Spare Area. This area gets
|
||||
reserved on BD media during formatting. During writing it is used to
|
||||
host replacements of blocks which failed the checkread immediately after
|
||||
writing.
|
||||
This call applies only to recordable BD media. I.e. profiles 0x41 to 0x43.
|
||||
@param d The drive to query.
|
||||
@param alloc_blocks Returns the number of blocks reserved as Spare Area
|
||||
@param free_blocks Returns the number of yet unused blocks in that area
|
||||
@param flag Bitfield for control purposes (unused yet, submit 0)
|
||||
@return 1 = reply prarameters are valid,
|
||||
<=0 = reply is invalid (e.g. because no BD profile)
|
||||
@since 0.8.8
|
||||
*/
|
||||
int burn_disc_get_bd_spare_info(struct burn_drive *d,
|
||||
int *alloc_blocks, int *free_blocks, int flag);
|
||||
|
||||
/* ts A61110 */
|
||||
/** Read start lba and Next Writeable Address of a track from media.
|
||||
@ -1311,9 +1328,10 @@ off_t burn_disc_available_space(struct burn_drive *d,
|
||||
0xffff "stdio file"
|
||||
Note: 0xffff is not a MMC profile but a libburn invention.
|
||||
Read-only are the profiles
|
||||
0x08 "CD-ROM", 0x10 "DVD-ROM",
|
||||
0x08 "CD-ROM",
|
||||
0x10 "DVD-ROM",
|
||||
0x40 "BD-ROM",
|
||||
For now read-only is BD-R profile (testers wanted)
|
||||
Read-only for now is this BD-R profile (testers wanted)
|
||||
0x42 "BD-R random recording"
|
||||
@param d The drive where the media is inserted.
|
||||
@param pno Profile Number. See also mmc5r03c.pdf, table 89
|
||||
@ -1889,6 +1907,41 @@ int burn_os_free_buffer(void *buffer, size_t amount, int flag);
|
||||
struct burn_source *burn_fd_source_new(int datafd, int subfd, off_t size);
|
||||
|
||||
|
||||
/* ts B00922 */
|
||||
/** Creates an offset source which shall provide a byte interval of a stream
|
||||
to its consumer. It is supposed to be chain-linked with other offset
|
||||
sources which serve neighboring consumers. The chronological sequence
|
||||
of consumers and the sequence of offset sources must match. The intervals
|
||||
of the sources must not overlap.
|
||||
|
||||
A chain of these burn_source objects may be used to feed multiple tracks
|
||||
from one single stream of input bytes.
|
||||
Each of the offset sources will skip the bytes up to its start address and
|
||||
provide the prescribed number of bytes to the track. Skipping takes into
|
||||
respect the bytes which have been processed by eventual predecessors in the
|
||||
chain.
|
||||
Important: It is not allowed to free an offset source before its successor
|
||||
has ended its work. Best is to keep them all until all tracks
|
||||
are done.
|
||||
|
||||
@param inp The burn_source object from which to read stream data.
|
||||
E.g. created by burn_file_source_new().
|
||||
@param prev The eventual offset source object which shall read data from
|
||||
inp before the new offset source will begin its own work.
|
||||
This must either be a result of burn_offst_source_new() or
|
||||
it must be NULL.
|
||||
@param start The byte address where to start reading bytes for the
|
||||
consumer. inp bytes may get skipped to reach this address.
|
||||
@param size The number of bytes to be delivered to the consumer.
|
||||
@param flag Bitfield for control purposes (unused yet, submit 0).
|
||||
@return Pointer to a burn_source object, later to be freed by
|
||||
burn_source_free(). NULL indicates failure.
|
||||
@since 0.8.8
|
||||
*/
|
||||
struct burn_source *burn_offst_source_new(
|
||||
struct burn_source *inp, struct burn_source *prev,
|
||||
off_t start, off_t size, int flag);
|
||||
|
||||
/* ts A70930 */
|
||||
/** Creates a fifo which acts as proxy for an already existing data source.
|
||||
The fifo provides a ring buffer which shall smoothen the data stream
|
||||
@ -2639,7 +2692,7 @@ void burn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define burn_header_version_major 0
|
||||
#define burn_header_version_minor 8
|
||||
#define burn_header_version_micro 5
|
||||
#define burn_header_version_micro 8
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
@ -2822,7 +2875,7 @@ typedef int (*burn_abort_handler_t)(void *handle, int signum, int flag);
|
||||
But during burn_disc_write() onto real CD or DVD, FreeBSD 8.0 pauses the
|
||||
other threads until the signal handler returns.
|
||||
The new actions try to avoid this deadlock. It is advised to use action 3
|
||||
at least during burn_disc_write(), burn_disc_rease(), burn_disc_format():
|
||||
at least during burn_disc_write(), burn_disc_erase(), burn_disc_format():
|
||||
burn_set_signal_handling(text, NULL, 0x30);
|
||||
and to call burn_is_aborting(0) when the drive is BURN_DRIVE_IDLE.
|
||||
If burn_is_aborting(0) returns 1, then call burn_abort() and exit(1).
|
||||
|
@ -11,6 +11,7 @@ burn_disc_erase;
|
||||
burn_disc_format;
|
||||
burn_disc_free;
|
||||
burn_disc_free_multi_caps;
|
||||
burn_disc_get_bd_spare_info;
|
||||
burn_disc_get_cd_info;
|
||||
burn_disc_get_format_descr;
|
||||
burn_disc_get_formats;
|
||||
@ -83,6 +84,7 @@ burn_msgs_obtain;
|
||||
burn_msgs_set_severities;
|
||||
burn_msgs_submit;
|
||||
burn_obtain_profile_name;
|
||||
burn_offst_source_new;
|
||||
burn_os_alloc_buffer;
|
||||
burn_os_free_buffer;
|
||||
burn_os_open_track_src;
|
||||
|
@ -558,7 +558,11 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
|
||||
0x00020176 (NOTE,HIGH) = Stream recording disabled because of small OS buffer
|
||||
0x00020177 (ABORT,HIGH) = Urged drive worker threads to do emergency halt
|
||||
0x00020178 (DEBUG,HIGH) = Write thread ended
|
||||
|
||||
0x00020179 (FAILURE,HIGH) = Offset source start address is before end of previous source
|
||||
0x0002017a (FAILURE,HIGH) = Expected offset source object as parameter
|
||||
0x0002017b (WARNING,HIGH) = Sequential BD-R media likely to soon fail writing
|
||||
0x0002017c (FAILURE,HIGH) = No valid write type selected
|
||||
0x0002017d (FATAL,HIGH) = Invalid file descriptor with stdio pseudo-drive
|
||||
|
||||
libdax_audioxtr:
|
||||
0x00020200 (SORRY,HIGH) = Cannot open audio source file
|
||||
|
@ -3876,6 +3876,11 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
||||
|
||||
pd[4] = spc_block_type(o->block_type);
|
||||
|
||||
/*
|
||||
fprintf(stderr, "libburn_EXPERIMENTAL: block_type = %d, pd[4]= %u\n",
|
||||
o->block_type, (unsigned int) pd[4]);
|
||||
*/
|
||||
|
||||
/* ts A61104 */
|
||||
if(!(o->control&4)) /* audio (MMC-1 table 61) */
|
||||
if(o->write_type == BURN_WRITE_TAO)
|
||||
@ -4127,7 +4132,7 @@ static int mmc_set_product_id(char *reply,
|
||||
|
||||
|
||||
/* ts A90903 */
|
||||
/* MMC backend of API call burn_get_media_product_id()
|
||||
/* MMC backend of API call burn_disc_get_media_id()
|
||||
See also doc/mediainfo.txt
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= do not escape " _/" (not suitable for
|
||||
@ -4314,6 +4319,33 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* ts B00924
|
||||
MMC-5, 6.23.3.3.4 Format Code 0Ah: Spare Area Information
|
||||
*/
|
||||
int mmc_get_bd_spare_info(struct burn_drive *d,
|
||||
int *alloc_blocks, int *free_blocks, int flag)
|
||||
{
|
||||
int ret, reply_len, prf;
|
||||
char *reply = NULL;
|
||||
|
||||
prf = d->current_profile;
|
||||
if (!(prf == 0x41 || prf == 0x43 || prf == 0x42))
|
||||
return 0; /* Not a BD loaded */
|
||||
|
||||
ret = mmc_read_disc_structure(d, 1, 0, 0x0a, 12, &reply,
|
||||
&reply_len, 0);
|
||||
if (ret <= 0)
|
||||
goto ex;
|
||||
*alloc_blocks = mmc_four_char_to_int((unsigned char *) reply + 8);
|
||||
*free_blocks = mmc_four_char_to_int((unsigned char *) reply + 4);
|
||||
ret = 1;
|
||||
ex:;
|
||||
if (reply != NULL)
|
||||
free(reply);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* ts A61021 : the mmc specific part of sg.c:enumerate_common()
|
||||
*/
|
||||
int mmc_setup_drive(struct burn_drive *d)
|
||||
|
@ -106,5 +106,8 @@ int mmc_function_spy(struct burn_drive *d, char * text);
|
||||
/* ts A91118 */
|
||||
int mmc_start_if_needed(struct burn_drive *d, int flag);
|
||||
|
||||
/* ts B00924 */
|
||||
int mmc_get_bd_spare_info(struct burn_drive *d,
|
||||
int *alloc_blocks, int *free_blocks, int flag);
|
||||
|
||||
#endif /*__MMC*/
|
||||
|
@ -63,3 +63,15 @@ int burn_source_cancel(struct burn_source *src)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ts B00922 */
|
||||
int burn_source_read(struct burn_source *src, unsigned char *buffer, int size)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (src->read != NULL)
|
||||
ret = src->read(src, buffer, size);
|
||||
else
|
||||
ret = src->read_xt(src, buffer, size);
|
||||
return ret;
|
||||
}
|
||||
|
@ -7,4 +7,6 @@ struct burn_source *burn_source_new(void);
|
||||
|
||||
int burn_source_cancel(struct burn_source *src);
|
||||
|
||||
int burn_source_read(struct burn_source *src, unsigned char *buffer, int size);
|
||||
|
||||
#endif /*__SOURCE*/
|
||||
|
@ -385,9 +385,9 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
||||
runtime = nwa-150;
|
||||
#endif
|
||||
|
||||
sheet = malloc(sizeof(struct cue_sheet));
|
||||
sheet = calloc(1, sizeof(struct cue_sheet));
|
||||
|
||||
/* ts A61009 : react on failures of malloc(), add_cue_sheet()
|
||||
/* ts A61009 : react on failures of calloc(), add_cue_sheet()
|
||||
type_to_form() */
|
||||
if (sheet == NULL) {
|
||||
libdax_msgs_submit(libdax_messenger, -1, 0x00020111,
|
||||
@ -2006,7 +2006,13 @@ ex:;
|
||||
burn_drive_mark_unready(d);
|
||||
burn_drive_inquire_media(d);
|
||||
|
||||
/* <<< d->busy = BURN_DRIVE_IDLE; */
|
||||
if (d->current_profile == 0x41 && d->complete_sessions >= 300) {
|
||||
sprintf(msg, "Sequential BD-R media now contains %d sessions. It is likely to soon fail writing.", d->complete_sessions);
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
0x0002017b, LIBDAX_MSGS_SEV_WARNING,
|
||||
LIBDAX_MSGS_PRIO_ZERO, msg, 0, 0);
|
||||
}
|
||||
|
||||
return ret;
|
||||
early_failure:;
|
||||
return 0;
|
||||
@ -2114,9 +2120,11 @@ int burn_stdio_mmc_write(struct burn_drive *d, int start, struct buffer *buf)
|
||||
if (d->cancel)
|
||||
return BE_CANCELLED;
|
||||
if (d->stdio_fd < 0) {
|
||||
|
||||
/* >>> program error */;
|
||||
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
0x0002017d,
|
||||
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Invalid file descriptor with stdio pseudo-drive",
|
||||
0, 0);
|
||||
d->cancel = 1;
|
||||
return BE_CANCELLED;
|
||||
}
|
||||
@ -2164,9 +2172,11 @@ int burn_stdio_mmc_dummy_write(struct burn_drive *d, int start,
|
||||
int burn_stdio_sync_cache(int fd, struct burn_drive *d, int flag)
|
||||
{
|
||||
if (fd < 0) {
|
||||
|
||||
/* >>> program error */;
|
||||
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
0x0002017d,
|
||||
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
|
||||
"Invalid file descriptor with stdio pseudo-drive",
|
||||
0, 0);
|
||||
d->cancel = 1;
|
||||
return 0;
|
||||
}
|
||||
|
134
test/offst_source.c
Normal file
134
test/offst_source.c
Normal file
@ -0,0 +1,134 @@
|
||||
|
||||
/*
|
||||
cc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS -g -o test/offst_source test/offst_source.c -lburn
|
||||
*/
|
||||
|
||||
#include "../libburn/libburn.h"
|
||||
|
||||
/* Just everything from test/libburner.c */
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
|
||||
static int create_original(struct burn_source **original, char *path, int flag)
|
||||
{
|
||||
printf("create_original: path='%s'\n", path);
|
||||
*original = burn_file_source_new(path, NULL);
|
||||
if (*original == NULL)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int set_up_offst_sources(struct burn_source *original,
|
||||
struct burn_source *offsetters[],
|
||||
int count, int flag)
|
||||
{
|
||||
int i;
|
||||
off_t start = 3, size = 10, gap = 7;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
offsetters[i] = burn_offst_source_new(original,
|
||||
i > 0 ? offsetters[i - 1] : NULL,
|
||||
start, size, 0);
|
||||
if (offsetters[i] == NULL)
|
||||
return 0;
|
||||
printf("set_up_offst_sources: idx=%d, start=%d\n",
|
||||
i, (int) start);
|
||||
start += size + gap;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int consume_source(struct burn_source *src, int flag)
|
||||
{
|
||||
int ret, count = 0;
|
||||
unsigned char buf[1];
|
||||
|
||||
while (1) {
|
||||
ret = src->read_xt(src, buf, 1);
|
||||
if (ret < 0) {
|
||||
printf("\n");
|
||||
fprintf(stderr, "consume_source: count=%d, ret=%d\n",
|
||||
count, ret);
|
||||
return 0;
|
||||
}
|
||||
if (ret == 0)
|
||||
break;
|
||||
printf("%u ", buf[0]);
|
||||
count++;
|
||||
}
|
||||
printf(" count=%d\n", count);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int consume_all_sources(struct burn_source *offsetters[],
|
||||
int count, int flag)
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
printf("consume_source: idx=%d\n", i);
|
||||
ret = consume_source(offsetters[i], 0);
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static int free_all_sources(struct burn_source *original,
|
||||
struct burn_source *offsetters[],
|
||||
int count, int flag)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
burn_source_free(offsetters[i]);
|
||||
burn_source_free(original);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
char *path = "./COPYRIGHT";
|
||||
struct burn_source *original = NULL, *offsetters[4];
|
||||
|
||||
if (argc > 1)
|
||||
path = argv[1];
|
||||
|
||||
if (burn_initialize() == 0)
|
||||
exit(1);
|
||||
|
||||
ret = create_original(&original, path, 0);
|
||||
if (ret <= 0)
|
||||
exit(2);
|
||||
|
||||
ret = set_up_offst_sources(original, offsetters, 4, 0);
|
||||
if (ret <= 0)
|
||||
exit(3);
|
||||
|
||||
ret = consume_all_sources(offsetters, 4, 0);
|
||||
if (ret <= 0)
|
||||
exit(4);
|
||||
|
||||
ret = free_all_sources(original, offsetters, 4, 0);
|
||||
if (ret <= 0)
|
||||
exit(5);
|
||||
|
||||
burn_finish();
|
||||
exit(0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user