[packages/cdrkit] - rel 2; bunch of fixes/updates from fc

arekm arekm at pld-linux.org
Thu Oct 10 22:20:55 CEST 2013


commit d304e2067ede8405664f205dd20c6aa8b6ed4c8f
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Thu Oct 10 22:20:52 2013 +0200

    - rel 2; bunch of fixes/updates from fc

 cdrkit-1.1.10-build-fix.patch      |   11 +
 cdrkit-1.1.11-cmakewarn.patch      |    9 +
 cdrkit-1.1.11-dvdman.patch         |   70 +
 cdrkit-1.1.11-format.patch         |  129 ++
 cdrkit-1.1.11-handler.patch        |   12 +
 cdrkit-1.1.11-manpagefix.patch     |  191 +++
 cdrkit-1.1.11-memset.patch         |   37 +
 cdrkit-1.1.11-paranoiacdda.patch   |  556 +++++++
 cdrkit-1.1.11-paranoiacdio.patch   | 2857 ++++++++++++++++++++++++++++++++++++
 cdrkit-1.1.11-readsegfault.patch   |   12 +
 cdrkit-1.1.11-rootstat.patch       |   31 +
 cdrkit-1.1.11-usalinst.patch       |   33 +
 cdrkit-1.1.11-utf8.patch           |  104 ++
 cdrkit-1.1.8-werror.patch          |  206 +++
 cdrkit-1.1.9-buffer_overflow.patch |   66 +
 cdrkit-1.1.9-efi-boot.patch        |  204 +++
 cdrkit-1.1.9-no_mp3.patch          |   50 +
 cdrkit-build.patch                 |   31 +
 cdrkit-format-security.patch       |   31 -
 cdrkit.spec                        |   41 +-
 20 files changed, 4647 insertions(+), 34 deletions(-)
---
diff --git a/cdrkit.spec b/cdrkit.spec
index 44e6617..e646fcd 100644
--- a/cdrkit.spec
+++ b/cdrkit.spec
@@ -6,16 +6,35 @@ Summary(ru.UTF-8):	Программа для записи CD/DVD, запуска
 Summary(uk.UTF-8):	Програма для запису CD/DVD, яка запускається з командної стрічки
 Name:		cdrkit
 Version:	1.1.11
-Release:	1
+Release:	2
 License:	GPL v2
 Group:		Applications/System
 Source0:	http://cdrkit.org/releases/%{name}-%{version}.tar.gz
 # Source0-md5:	efe08e2f3ca478486037b053acd512e9
-Patch0:		%{name}-format-security.patch
+Patch0:		%{name}-1.1.8-werror.patch
+Patch1:		%{name}-1.1.9-efi-boot.patch
+Patch2:		%{name}-1.1.9-no_mp3.patch
+Patch3:		%{name}-1.1.9-buffer_overflow.patch
+Patch4:		%{name}-1.1.10-build-fix.patch
+Patch5:		%{name}-1.1.11-manpagefix.patch
+Patch6:		%{name}-1.1.11-rootstat.patch
+Patch7:		%{name}-1.1.11-usalinst.patch
+Patch8:		%{name}-1.1.11-readsegfault.patch
+Patch9:		%{name}-1.1.11-format.patch
+Patch10:	%{name}-1.1.11-handler.patch
+Patch11:	%{name}-1.1.11-dvdman.patch
+Patch12:	%{name}-1.1.11-paranoiacdda.patch
+Patch13:	%{name}-1.1.11-utf8.patch
+Patch14:	%{name}-1.1.11-cmakewarn.patch
+Patch15:	%{name}-1.1.11-memset.patch
+Patch16:	%{name}-1.1.11-paranoiacdio.patch
+Patch17:	%{name}-build.patch
 URL:		http://cdrkit.org/
 BuildRequires:	bzip2-devel
+BuildRequires:	cdparanoia-III-devel
 BuildRequires:	cmake >= 2.4.3
 BuildRequires:	libcap-devel
+BuildRequires:	libcdio-paranoia-devel
 BuildRequires:	libmagic-devel
 BuildRequires:	zlib-devel
 Provides:	cdrecord
@@ -223,6 +242,23 @@ fazer CD-ROMs de boot "El Torito".
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+#%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
 
 %build
 %{__make} \
@@ -267,7 +303,6 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %{_libdir}/libedc.a
 %{_libdir}/libhfs_iso.a
-%{_libdir}/libparanoia.a
 %{_libdir}/librols.a
 %{_libdir}/libunls.a
 %{_libdir}/libusal.a
diff --git a/cdrkit-1.1.10-build-fix.patch b/cdrkit-1.1.10-build-fix.patch
new file mode 100644
index 0000000..75c4db2
--- /dev/null
+++ b/cdrkit-1.1.10-build-fix.patch
@@ -0,0 +1,11 @@
+diff -up cdrkit-1.1.10/genisoimage/genisoimage.c.build-fix cdrkit-1.1.10/genisoimage/genisoimage.c
+--- cdrkit-1.1.10/genisoimage/genisoimage.c.build-fix	2010-01-20 11:05:05.000000000 +0100
++++ cdrkit-1.1.10/genisoimage/genisoimage.c	2010-01-20 11:21:16.144098749 +0100
+@@ -47,6 +47,7 @@
+ 
+ #include <mconfig.h>
+ #include "genisoimage.h"
++#include "checksum.h"
+ #include "iso9660.h"
+ #include <errno.h>
+ #include <timedefs.h>
diff --git a/cdrkit-1.1.11-cmakewarn.patch b/cdrkit-1.1.11-cmakewarn.patch
new file mode 100644
index 0000000..a171e39
--- /dev/null
+++ b/cdrkit-1.1.11-cmakewarn.patch
@@ -0,0 +1,9 @@
+diff -up cdrkit-1.1.11/CMakeLists.txt.cmakewarn cdrkit-1.1.11/CMakeLists.txt
+--- cdrkit-1.1.11/CMakeLists.txt.cmakewarn	2012-07-31 13:11:10.075500531 +0200
++++ cdrkit-1.1.11/CMakeLists.txt	2012-07-31 13:11:41.069108287 +0200
+@@ -1,3 +1,5 @@
++cmake_minimum_required(VERSION 2.8)
++cmake_policy(SET CMP0015 OLD)
+ PROJECT (cdrkit C)
+ SUBDIRS(include genisoimage wodim libedc libhfs_iso icedax libusal librols libunls readom netscsid 3rd-party/dirsplit)
+ 
diff --git a/cdrkit-1.1.11-dvdman.patch b/cdrkit-1.1.11-dvdman.patch
new file mode 100644
index 0000000..471a7a9
--- /dev/null
+++ b/cdrkit-1.1.11-dvdman.patch
@@ -0,0 +1,70 @@
+diff -up cdrkit-1.1.11/wodim/wodim.1.dvdman cdrkit-1.1.11/wodim/wodim.1
+--- cdrkit-1.1.11/wodim/wodim.1.dvdman	2011-06-08 14:49:00.073093571 +0200
++++ cdrkit-1.1.11/wodim/wodim.1	2011-06-08 14:50:59.707093540 +0200
+@@ -835,49 +835,33 @@ newer ones) still implement the Sony pro
+ not yet become a problem to use this driver for all Sony drives. If you find
+ a newer Sony drive that does not work with this driver, please report.
+ .TP
+-.B mmc_dvd
++.B mmc_mdvd
+ The generic SCSI-3/mmc-2 DVD-R/DVD-RW driver is auto-selected whenever
+ .B wodim
+ finds a MMC-2 or MMC-3 compliant drive that supports to write DVDs and
+ an appropriate medium is loaded.
+-There is no Track At Once mode for DVD writers.
+-.TP
+-.B mmc_dvdplus
+-The generic SCSI-3/mmc-3 DVD+R/DVD+RW driver is auto-selected whenever
+-one of the DVD+ media types that are incompatible to each other is found.
+-It checks media and then 
+-branches to the driver that matches the current medium.
+-.TP
+-.B mmc_dvdplusr
+-The generic SCSI-3/mmc-3 DVD+R driver is auto-selected whenever
+-a DVD+R medium is found in an appropriate writer.
+ Note that for unknown reason, the DVD-Plus alliance does not
+-like that there is a simulation mode for DVD+R media.
+-The author of
+-.B wodim
+-tries to convince manufacturers to implement a simulation mode for DVD+R
+-and implement support.
+-DVD+R only supports one write mode that is somewhere between Track At Once
+-and Packet writing; this mode is selected in 
++like that there is a simulation mode for DVD+R and DVD+RW media nor a way 
++to erase DVD+RW media.
++DVD+R and DVD+RW only supports one write mode that is somewhere between 
++Track At Once and Packet writing; this mode is selected in 
+ .B wodim
+ via a the 
+ .BR \-dao / \-sao
+ option.
+-.TP
+-.B mmc_dvdplusrw
+-The generic SCSI-3/mmc-3 DVD+RW driver is auto-selected whenever
+-a DVD+RW medium is found in an appropriate writer.
+-As DVD+RW media needs to be formatted before its first use, wodim
+-auto-detects this media state and performs a format before it starts
+-to write.
+-Note that for unknown reason, the DVD-Plus alliance does not
+-like that there is a simulation mode nor a way to erase DVD+RW media.
+-DVD+RW only supports one write mode that is close to
+-Packet writing; this mode is selected in 
++As DVD+RW media needs to be formatted before its first use, 
+ .B wodim
+-via a the 
+-.BR \-dao / \-sao
+-option.
++auto-detects this media state and performs a format before it starts
++to write. 
++.sp
++Note: If you have any problems during burning DVDs using 
++.BR wodim , 
++please consider 
++.B growisofs 
++from package
++.BR dvd+rw-tools , 
++which often works better 
++in these cases.
+ .TP
+ .B cw_7501
+ The driver for Matsushita/Panasonic CW-7501 is auto-selected when
diff --git a/cdrkit-1.1.11-format.patch b/cdrkit-1.1.11-format.patch
new file mode 100644
index 0000000..983ed23
--- /dev/null
+++ b/cdrkit-1.1.11-format.patch
@@ -0,0 +1,129 @@
+diff -up cdrkit-1.1.11/wodim/drv_mmc.c.format cdrkit-1.1.11/wodim/drv_mmc.c
+--- cdrkit-1.1.11/wodim/drv_mmc.c.format	2011-05-18 16:49:14.591822130 +0200
++++ cdrkit-1.1.11/wodim/drv_mmc.c	2011-05-18 16:49:14.596822130 +0200
+@@ -1507,6 +1507,11 @@ getdisktype_mdvd(SCSI *usalp, cdr_t *dp)
+ 	dstat_t	*dsp = dp->cdr_dstat;
+ 
+ 	struct track_info track_info;
++
++	extern char *buf;
++	struct disk_info *dip;
++	int profile;
++
+     if(lverbose)
+         printf("HINT: use dvd+rw-mediainfo from dvd+rw-tools for information extraction.\n");
+ 	/* if(getdisktype_mmc(usalp, dp)<0)
+@@ -1521,6 +1526,18 @@ getdisktype_mdvd(SCSI *usalp, cdr_t *dp)
+ 	dsp->ds_disktype&= ~DT_CD;
+ 	dsp->ds_disktype|= DT_DVD;
+ 
++	profile = get_curprofile(usalp);
++	if (profile == 0x1A) {
++		dip = (struct disk_info *)buf;
++		if (get_diskinfo(usalp, dip) < 0)
++			return (-1);
++		if (dip->disk_status == DS_EMPTY) {	/* Unformatted	    */
++			dsp->ds_flags |= DSF_NEED_FORMAT;
++			if(lverbose)
++				printf("The medium is empty, it will be auto formatted.\n");
++		}
++	}
++	
+ 	return (ret);
+ 
+ }
+diff -up cdrkit-1.1.11/wodim/scsi_cdr.c.format cdrkit-1.1.11/wodim/scsi_cdr.c
+--- cdrkit-1.1.11/wodim/scsi_cdr.c.format	2011-05-18 16:49:14.601822130 +0200
++++ cdrkit-1.1.11/wodim/scsi_cdr.c	2011-05-18 16:49:14.600822130 +0200
+@@ -1328,7 +1328,7 @@ scsi_format(SCSI *usalp, caddr_t addr, i
+ 	}
+ 	sleep(10);
+ 	printf("\rFormating in progress: 100.00 %% done.        \n");
+-	if (pid) exit (0);
++	if (pid > 0) exit (0);
+ 	return ret;
+ }
+ 
+diff -up cdrkit-1.1.11/wodim/wodim.c.format cdrkit-1.1.11/wodim/wodim.c
+--- cdrkit-1.1.11/wodim/wodim.c.format	2011-05-18 16:49:14.584822130 +0200
++++ cdrkit-1.1.11/wodim/wodim.c	2011-05-18 17:21:59.510821630 +0200
+@@ -946,6 +946,40 @@ int main(int argc, char *argv[])
+ 		print_toc(usalp, dp);
+ 		comexit(0);
+ 	}
++	
++	if ((flags & F_FORMAT) || (dp->cdr_dstat->ds_flags & DSF_NEED_FORMAT)) {
++		printf("wodim: media format asked\n");
++		/*
++		* Do not abort if OPC failes. Just give it a chance
++		* for better laser power calibration than without OPC.
++		*
++		* Ricoh drives return with a vendor unique sense code.
++		* This is most likely because they refuse to do OPC
++		* on a non blank media.
++		*/
++		usalp->silent++;
++		do_opc(usalp, dp, flags);
++		usalp->silent--;
++		wait_unit_ready(usalp, 120);
++		if (gettimeofday(&starttime, (struct timezone *)0) < 0)
++			errmsg("Cannot get start time\n");
++		
++		if ((*dp->cdr_format)(usalp, dp, formattype) < 0) {
++			errmsgno(EX_BAD, "Cannot format disk, aborting.\n");
++			comexit(EX_BAD);
++		}
++		if (gettimeofday(&fixtime, (struct timezone *)0) < 0)
++			errmsg("Cannot get format time\n");
++		if (lverbose)
++			prtimediff("Formatting time: ", &starttime, &fixtime);
++
++		if (!wait_unit_ready(usalp, 240) || tracks == 0) {
++			comexit(0);
++		}
++		if (gettimeofday(&starttime, (struct timezone *)0) < 0)
++			errmsg("Cannot get start time\n");
++	}
++	
+ #ifdef	XXX
+ 	if ((*dp->cdr_check_session)() < 0) {
+ 		comexit(EX_BAD);
+@@ -1230,38 +1264,6 @@ int main(int argc, char *argv[])
+ 			comexit(0);
+ 		}
+ 	}
+-	if (flags & F_FORMAT) {
+-		printf("wodim: media format asked\n");
+-		/*
+-		* Do not abort if OPC failes. Just give it a chance
+-		* for better laser power calibration than without OPC.
+-		*
+-		* Ricoh drives return with a vendor unique sense code.
+-		* This is most likely because they refuse to do OPC
+-		* on a non blank media.
+-		*/
+-		usalp->silent++;
+-		do_opc(usalp, dp, flags);
+-		usalp->silent--;
+-		wait_unit_ready(usalp, 120);
+-		if (gettimeofday(&starttime, (struct timezone *)0) < 0)
+-			errmsg("Cannot get start time\n");
+-
+-		if ((*dp->cdr_format)(usalp, dp, formattype) < 0) {
+-			errmsgno(EX_BAD, "Cannot format disk, aborting.\n");
+-			comexit(EX_BAD);
+-		}
+-		if (gettimeofday(&fixtime, (struct timezone *)0) < 0)
+-			errmsg("Cannot get format time\n");
+-		if (lverbose)
+-			prtimediff("Formatting time: ", &starttime, &fixtime);
+-
+-		if (!wait_unit_ready(usalp, 240) || tracks == 0) {
+-			comexit(0);
+-		}
+-		if (gettimeofday(&starttime, (struct timezone *)0) < 0)
+-			errmsg("Cannot get start time\n");
+-	}
+ 	/*
+ 	* Reset start time so we will not see blanking time and
+ 	* writing time counted together.
diff --git a/cdrkit-1.1.11-handler.patch b/cdrkit-1.1.11-handler.patch
new file mode 100644
index 0000000..5b3fa6a
--- /dev/null
+++ b/cdrkit-1.1.11-handler.patch
@@ -0,0 +1,12 @@
+diff -up cdrkit-1.1.11/icedax/icedax.c.handler cdrkit-1.1.11/icedax/icedax.c
+--- cdrkit-1.1.11/icedax/icedax.c.handler	2011-06-02 16:37:02.446206285 +0200
++++ cdrkit-1.1.11/icedax/icedax.c	2011-06-02 16:37:25.444206279 +0200
+@@ -1054,7 +1054,7 @@ static void exit_wrapper(int status)
+ 
+ 	if (child_pid != 0) {
+ 		SCSI *usalp = get_scsi_p();
+-		if (usalp->running) {
++		if (usalp && usalp->running) {
+ 			usalp->cb_fun = on_exitscsi;
+ 			usalp->cb_arg = (void *) (uintptr_t) status;
+ 		} else {
diff --git a/cdrkit-1.1.11-manpagefix.patch b/cdrkit-1.1.11-manpagefix.patch
new file mode 100644
index 0000000..26b5175
--- /dev/null
+++ b/cdrkit-1.1.11-manpagefix.patch
@@ -0,0 +1,191 @@
+diff -up cdrkit-1.1.11/genisoimage/genisoimage.1.orig cdrkit-1.1.11/genisoimage/genisoimage.1
+--- cdrkit-1.1.11/genisoimage/genisoimage.1.orig	2011-01-21 14:26:20.709816708 +0100
++++ cdrkit-1.1.11/genisoimage/genisoimage.1	2011-01-24 08:49:24.283964211 +0100
+@@ -180,6 +180,8 @@ in the
+ file.
+ .TP
+ .BI \-A " application_id"
++.TP
++.BI \-appid " application_id"
+ Specifies a text string that will be written into the volume header.
+ This should describe the application that will be on the disc.  There
+ is space for 128 characters.  Equivalent to
+@@ -365,6 +367,8 @@ the Sun disk label will overlay the firs
+ boot image.
+ .TP
+ .BI \-b " eltorito_boot_image"
++.TP
++.BI \-eltorito\-boot " eltorito_boot_image"
+ Specifies the path and filename of the boot image to be used when making
+ an El Torito bootable CD for x86 PCs. The pathname must be relative to
+ the source path specified to
+@@ -427,6 +431,8 @@ See the
+ section for a description of this table.
+ .TP
+ .BI \-C " last_sess_start,next_sess_start"
++.TP
++.BI \-cdrecord\-params " last_sess_start,next_sess_start"
+ This option is needed to create a CD Extra or the image of a second
+ session or a higher-level session for a multisession disc.
+ .B \-C
+@@ -452,6 +458,8 @@ session on a CD Extra. This is a multise
+ in the first session and an ISO9660 filesystem in the second session.
+ .TP
+ .BI \-c " boot_catalog"
++.TP
++.BI \-eltorito\-catalog " boot_catalog"
+ Specifies the path and filename of the boot catalog, which is required
+ for an El Torito bootable CD. The pathname must be relative to the source
+ path specified to
+@@ -488,6 +496,12 @@ For the parameter 
+ see the description of
+ .BR \-M .
+ .TP
++.BI \-checksum_algorithm_iso " alg1,alg2,..."
++Specify the checksum types desired for the output image.
++.TP
++.BI \-checksum_algorithm_template " alg1,alg2,..."
++Specify the checksum types desired for the output jigdo template.
++.TP
+ .BI \-copyright " file"
+ Specifies copyright information, typically a filename on the disc.
+ There is space for 37 characters.  Equivalent to
+@@ -497,12 +511,16 @@ in the
+ file.
+ .TP
+ .B \-d
++.TP
++.B \-omit\-period
+ Do not append a period to files that do not have one.
+ .br
+ This violates the ISO9660 standard, but it happens to work on many systems.
+ Use with caution.
+ .TP
+ .B \-D
++.TP
++.B \-disable\-deep\-relocation
+ Do not use deep directory relocation, and instead just pack them in the
+ way we see them.
+ .br
+@@ -510,6 +528,9 @@ If ISO9660:1999 has not been selected,
+ this violates the ISO9660 standard, but it happens to work on many systems.
+ Use with caution.
+ .TP
++.B \-debug
++Set debug flag.
++.TP
+ .BI \-dir\-mode " mode"
+ Overrides the mode of directories used to create the image to
+ .IR mode ,
+@@ -535,7 +556,14 @@ another directory
+ needs to include all needed files (filenames must be all caps) for a
+ compliant DVD-Video filesystem.
+ .TP
++.BI \-e " efi_boot_file"
++.TP
++.BI \-efi\-boot " efi_boot_file"
++Set EFI boot image name.
++.TP
+ .B \-f
++.TP
++.B \-follow\-links
+ Follow symbolic links when generating the filesystem.  When this option is not
+ in use, symbolic links will be entered using Rock Ridge if enabled, otherwise
+ they will be ignored.
+@@ -740,6 +768,8 @@ See the
+ section below for more details.
+ .TP
+ .B \-l
++.TP
++.B \-full\-iso9660\-filenames
+ Allow full 31-character filenames.  Normally the ISO9660 filename will be in an
+ 8.3 format which is compatible with MS-DOS, even though the ISO9660 standard
+ allows filenames of up to 31 characters.  If you use this option, the disc may
+@@ -870,6 +900,8 @@ with
+ .BR \-C .
+ .TP
+ .B \-N
++.TP
++.B \-omit\-version\-number
+ Omit version numbers from ISO9660 filenames.
+ .br
+ This violates the ISO9660 standard, but no one really uses the
+@@ -967,6 +999,8 @@ in the
+ file.
+ .TP
+ .BI \-p " preparer_id"
++.TP
++.BI \-preparer " preparer_id"
+ Specifies a text string that will be written into the volume header.
+ This should describe the preparer of the CD-ROM, usually with a mailing
+ address and phone number.  There is space for 128 characters.
+@@ -1008,10 +1042,14 @@ This makes
+ even less verbose.  No progress output will be provided.
+ .TP
+ .B \-R
++.TP
++.B \-rock
+ Generate SUSP and RR records using the Rock Ridge protocol to further describe
+ the files on the ISO9660 filesystem.
+ .TP
+ .B \-r
++.TP
++.B \-rational\-rock
+ This is like the \-R option, but file ownership and modes are set to
+ more useful values.  The uid and gid are set to zero, because they are
+ usually only useful on the author's system, and not useful to the
+@@ -1092,6 +1130,11 @@ intentionally. Accessing several older v
+ support by the operating system to choose which sessions are to be
+ mounted.
+ .TP
++.BI \-s " sector type"
++.TP
++.BI \-sectype " sector type"
++Set output sector type to e.g. data/xa1/raw.
++ .TP
+ .BI \-sort " sort_file"
+ Sort file locations on the media. Sorting is controlled by a file that
+ contains pairs of filenames and sorting offset weighting.
+@@ -1213,6 +1256,8 @@ in the
+ file.
+ .TP
+ .B \-T
++.TP
++.B \-translation\-table
+ Generate a file
+ .I TRANS.TBL
+ in each directory on the CD-ROM, which can be used
+@@ -1262,6 +1307,8 @@ to
+ This option is the default on VMS. 
+ .TP
+ .B \-U
++.TP
++.B \-untranslated\-filenames
+ Allows "untranslated" filenames, completely violating the ISO9660 standards
+ described above.  Enables the following flags:
+ .B \-d \-l \-N \-allow\-leading\-dots \-relaxed\-filenames
+@@ -1333,6 +1380,8 @@ must be specified before
+ on each command line.
+ .TP
+ .B \-v
++.TP
++.B \-verbose
+ Verbose execution. If given twice on the command line, extra debug information
+ will be printed.
+ .TP
+@@ -1341,7 +1390,15 @@ Identical to
+ .B \-m
+ .IR glob .
+ .TP
++.B \-XA
++Generate XA directory attruibutes.
++.TP
++.B \-xa
++Generate rationalized XA directory attruibutes.
++.TP
+ .B \-z
++.TP
++.B \-transparent\-compression
+ Generate special
+ .I RRIP
+ records for transparently compressed files.
diff --git a/cdrkit-1.1.11-memset.patch b/cdrkit-1.1.11-memset.patch
new file mode 100644
index 0000000..6609159
--- /dev/null
+++ b/cdrkit-1.1.11-memset.patch
@@ -0,0 +1,37 @@
+diff -up wrk/genisoimage/jte.c.wrk wrk/genisoimage/jte.c
+--- wrk/genisoimage/jte.c.wrk	2013-02-22 13:24:47.722196877 +0100
++++ wrk/genisoimage/jte.c	2013-02-25 12:41:45.136653487 +0100
+@@ -280,7 +280,7 @@ extern int list_file_in_jigdo(char *file
+     if (!jtemplate_out)
+         return 0;
+ 
+-    memset(md5, 0, sizeof(md5));
++    memset(md5, 0, 16);
+ 
+     /* Cheaper to check file size first */
+     if (size < jte_min_size)
+diff -up wrk/genisoimage/md5.c.wrk wrk/genisoimage/md5.c
+--- wrk/genisoimage/md5.c.wrk	2013-02-22 13:15:18.210866321 +0100
++++ wrk/genisoimage/md5.c	2013-02-22 13:15:29.979935133 +0100
+@@ -183,7 +183,7 @@ mk_MD5Final (unsigned char digest[16], s
+ 	putu32(ctx->buf[1], digest + 4);
+ 	putu32(ctx->buf[2], digest + 8);
+ 	putu32(ctx->buf[3], digest + 12);
+-	memset(ctx, 0, sizeof(ctx));	/* In case it's sensitive */
++	memset(ctx, 0, sizeof(*ctx));	/* In case it's sensitive */
+ }
+ 
+ /* The four core functions - F1 is optimized somewhat */
+diff -up wrk/libedc/edcspeed.c.wrk wrk/libedc/edcspeed.c
+--- wrk/libedc/edcspeed.c.wrk	2013-02-22 10:45:33.353219110 +0100
++++ wrk/libedc/edcspeed.c	2013-02-22 10:46:52.497686387 +0100
+@@ -35,7 +35,8 @@ static int encspeed()
+ 	secs = 10;
+ 	end = 75*1000000 * secs;
+ 
+-	memset(sect, 0, sizeof(sect));
++	//faulty and unneccessary, immediately rewritten again
++	//memset(sect, 0, sizeof(sect));
+ 	for (i=0; i < 2352; ) {
+ 		sect[i++] = 'J';
+ 		sect[i++] = 'S';
diff --git a/cdrkit-1.1.11-paranoiacdda.patch b/cdrkit-1.1.11-paranoiacdda.patch
new file mode 100644
index 0000000..9d17899
--- /dev/null
+++ b/cdrkit-1.1.11-paranoiacdda.patch
@@ -0,0 +1,556 @@
+diff -up cdrkit-1.1.11/CMakeLists.txt.paranoiacdda cdrkit-1.1.11/CMakeLists.txt
+--- cdrkit-1.1.11/CMakeLists.txt.paranoiacdda	2012-07-31 14:27:15.166155309 +0200
++++ cdrkit-1.1.11/CMakeLists.txt	2012-07-31 14:27:28.469613175 +0200
+@@ -1,3 +1,3 @@
+ PROJECT (cdrkit C)
+-SUBDIRS(include genisoimage wodim libedc libhfs_iso libparanoia icedax libusal librols libunls readom netscsid 3rd-party/dirsplit)
++SUBDIRS(include genisoimage wodim libedc libhfs_iso icedax libusal librols libunls readom netscsid 3rd-party/dirsplit)
+ 
+diff -up cdrkit-1.1.11/icedax/CMakeLists.txt.paranoiacdda cdrkit-1.1.11/icedax/CMakeLists.txt
+--- cdrkit-1.1.11/icedax/CMakeLists.txt.paranoiacdda	2012-07-31 14:27:15.228157411 +0200
++++ cdrkit-1.1.11/icedax/CMakeLists.txt	2012-07-31 14:27:15.239157786 +0200
+@@ -1,8 +1,9 @@
+ PROJECT (icedax C)
+-INCLUDE_DIRECTORIES(../include ../wodim ../libparanoia ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include)
++INCLUDE_DIRECTORIES(../include ../wodim ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include)
+ include(../include/AddScgBits.cmake)
+ include(../include/AddSchilyBits.cmake)
+ include(../include/AddNetworkBits.cmake)
++INCLUDE (CheckLibraryExists) 
+ 
+ FIND_FILE (HAVE_SYS_SOUNDCARD_H sys/soundcard.h)
+ IF(HAVE_SYS_SOUNDCARD_H)
+@@ -18,12 +19,20 @@ IF(HAVE_LIBOSSAUDIO)
+    LIST(APPEND EXTRA_LIBS "ossaudio")
+ ENDIF(HAVE_LIBOSSAUDIO)
+ 
+-LIST(APPEND EXTRA_LIBS  paranoia)
++CHECK_INCLUDE_FILES(cdio/cdda.h HAVE_CDDA_INTERFACE_H)
++CHECK_LIBRARY_EXISTS (cdio_paranoia cdio_paranoia_init "" HAVE_LIBPARANOIA)
++IF(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
++   LIST(APPEND EXTRA_LIBS cdio_paranoia cdio_cdda)
++ELSE(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
++   MESSAGE(FATAL_ERROR "You need cdparanoia library installed")
++ENDIF(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
++	
++LIST(APPEND EXTRA_LIBS)
+ IF (WIN32)
+ 	LIST(APPEND EXTRA_LIBS winmm)
+ ENDIF (WIN32)
+ 
+-LINK_DIRECTORIES(../librols ../libusal  ../libparanoia)
++LINK_DIRECTORIES(../librols ../libusal)
+ ADD_EXECUTABLE (icedax aifc.c aiff.c base64.c icedax.c interface.c ioctl.c raw.c resample.c ringbuff.c scsi_cmds.c semshm.c setuid.c sha_func.c sndconfig.c sun.c toc.c wav.c)
+ TARGET_LINK_LIBRARIES(icedax wodimstuff ${EXTRA_LIBS})
+ SET_TARGET_PROPERTIES(icedax PROPERTIES  SKIP_BUILD_RPATH TRUE)
+diff -up cdrkit-1.1.11/icedax/global.h.paranoiacdda cdrkit-1.1.11/icedax/global.h
+--- cdrkit-1.1.11/icedax/global.h.paranoiacdda	2012-07-31 14:27:15.232157548 +0200
++++ cdrkit-1.1.11/icedax/global.h	2012-07-31 14:27:15.226157345 +0200
+@@ -17,7 +17,8 @@
+ #include "md5.h"
+ #endif
+ #ifdef	USE_PARANOIA
+-#include "cdda_paranoia.h"
++#include <cdio/cdda.h>
++#include <cdio/paranoia.h>
+ #endif
+ 
+ typedef struct index_list
+@@ -102,10 +103,10 @@ typedef struct global
+ 
+ 	struct paranoia_parms_t
+ 	{
+-	        Ucbit	disable_paranoia:1;
+-	        Ucbit	disable_extra_paranoia:1;
+-	        Ucbit	disable_scratch_detect:1;
+-	        Ucbit	disable_scratch_repair:1;
++	        char	disable_paranoia:1;
++	        char	disable_extra_paranoia:1;
++	        char	disable_scratch_detect:1;
++	        char	disable_scratch_repair:1;
+ 		int	retries;
+ 		int	overlap;
+ 		int	mindynoverlap;
+diff -up cdrkit-1.1.11/icedax/icedax.c.paranoiacdda cdrkit-1.1.11/icedax/icedax.c
+--- cdrkit-1.1.11/icedax/icedax.c.paranoiacdda	2012-07-31 14:27:15.237157718 +0200
++++ cdrkit-1.1.11/icedax/icedax.c	2012-07-31 14:27:15.238157752 +0200
+@@ -120,6 +120,10 @@
+ #ifdef	USE_LAME
+ #include "mp3.h"	/* mp3 file handling */
+ #endif
++#ifdef	USE_PARANOIA
++#include <cdio/cdda.h>
++#include <cdio/paranoia.h>
++#endif
+ #include "interface.h"  /* low level cdrom interfacing */
+ #include "icedax.h"
+ #include "resample.h"
+@@ -128,9 +132,6 @@
+ #include "ringbuff.h"
+ #include "global.h"
+ #include "exitcodes.h"
+-#ifdef	USE_PARANOIA
+-#include "cdda_paranoia.h"
+-#endif
+ #include "defaults.h"
+ 
+ static void RestrictPlaybackRate(long newrate);
+@@ -800,7 +801,7 @@ static void init_globals()
+   global.useroverlap = -1;      /* amount of overlapping sectors user override */
+   global.need_hostorder = 0;	/* processing needs samples in host endianess */
+   global.in_lendian = -1;	/* input endianess from SetupSCSI() */
+-  global.outputendianess = NONE; /* user specified output endianess */
++  global.outputendianess = NONE_EN; /* user specified output endianess */
+   global.findminmax  =  0;	/* flag find extrem amplitudes */
+ #ifdef HAVE_LIMITS_H
+   global.maxamp[0] = INT_MIN;	/* maximum amplitude */
+@@ -2418,7 +2419,7 @@ Rate   Divider      Rate   Divider
+   if (bulk == -1) bulk = 0;
+ 
+   global.need_big_endian = global.audio_out->need_big_endian;
+-  if (global.outputendianess != NONE)
++  if (global.outputendianess != NONE_EN)
+     global.need_big_endian = global.outputendianess == BIG;
+ 
+   if (global.no_file) global.fname_base[0] = '\0';
+@@ -2602,7 +2603,7 @@ Rate   Divider      Rate   Divider
+     fputs( ", soundcard", stderr );
+ #endif
+ #if defined USE_PARANOIA
+-    fputs( ", libparanoia", stderr );
++    fputs( ", libcdio_paranoia", stderr );
+ #endif
+     fputs( " support\n", stderr );
+   }
+@@ -2892,8 +2893,28 @@ Rate   Divider      Rate   Divider
+ #ifdef	USE_PARANOIA
+ 	if (global.paranoia_selected) {
+ 		long paranoia_mode;
++		cdrom_drive *tmpdrive;
++		usal_close(get_scsi_p());
+ 
+-		global.cdp = paranoia_init(get_scsi_p(), global.nsectors);
++		tmpdrive = cdda_identify(global.dev_name, 0, NULL);
++		if (!tmpdrive)
++		{
++			fputs("Can't identify disc\n", stderr);
++                	return 1;
++		}
++
++		if(global.nsectors)
++		{
++		  tmpdrive->nsectors = global.nsectors;
++		  tmpdrive->bigbuff = global.nsectors * CD_FRAMESIZE_RAW;
++		}
++		if (cdda_open(tmpdrive) != 0)
++		{
++		  fputs("Can't open disc\n", stderr);
++		  cdda_close(tmpdrive);
++		  return 1;
++		}
++		global.cdp = paranoia_init(tmpdrive);
+ 
+ 		if (global.paranoia_parms.overlap >= 0) {
+ 			int	overlap = global.paranoia_parms.overlap;
+@@ -2902,17 +2923,7 @@ Rate   Divider      Rate   Divider
+ 				overlap = global.nsectors - 1;
+ 			paranoia_overlapset(global.cdp, overlap);
+ 		}
+-		/*
+-		 * Default to a  minimum of dynamic overlapping == 0.5 sectors.
+-		 * If we don't do this, we get the default from libparanoia
+-		 * which is approx. 0.1.
+-		 */
+-		if (global.paranoia_parms.mindynoverlap < 0)
+-			paranoia_dynoverlapset(global.cdp, CD_FRAMEWORDS/2, -1);
+-		paranoia_dynoverlapset(global.cdp,
+-			global.paranoia_parms.mindynoverlap * CD_FRAMEWORDS,
+-			global.paranoia_parms.maxdynoverlap * CD_FRAMEWORDS);
+-
++	
+ 		paranoia_mode = PARANOIA_MODE_FULL ^ PARANOIA_MODE_NEVERSKIP;
+ 
+ 		if (global.paranoia_parms.disable_paranoia) {
+diff -up cdrkit-1.1.11/icedax/icedax.h.paranoiacdda cdrkit-1.1.11/icedax/icedax.h
+--- cdrkit-1.1.11/icedax/icedax.h.paranoiacdda	2012-07-31 14:27:15.216157005 +0200
++++ cdrkit-1.1.11/icedax/icedax.h	2012-07-31 14:27:15.217157039 +0200
+@@ -41,7 +41,7 @@
+ 
+ /* Endianess */
+ #define GUESS (-2)
+-#define NONE (-1)
++#define NONE_EN (-1)
+ #define LITTLE 0
+ #define BIG 1
+ 
+diff -up cdrkit-1.1.11/icedax/interface.c.paranoiacdda cdrkit-1.1.11/icedax/interface.c
+--- cdrkit-1.1.11/icedax/interface.c.paranoiacdda	2012-07-31 14:27:15.235157650 +0200
++++ cdrkit-1.1.11/icedax/interface.c	2012-07-31 14:27:15.232157548 +0200
+@@ -116,7 +116,7 @@ int		(*Play_at)(SCSI *usalp, unsigned in
+ int		(*StopPlay)(SCSI *usalp);
+ void		(*trash_cache)(UINT4 *p, unsigned lSector, unsigned SectorBurstVal);
+ 
+-#if	defined	USE_PARANOIA
++#if	0 //defined	USE_PARANOIA
+ long cdda_read(void *d, void *buffer, long beginsector, long sectors);
+ 
+ long cdda_read(void *d, void *buffer, long beginsector, long sectors)
+diff -up cdrkit-1.1.11/icedax/toc.c.paranoiacdda cdrkit-1.1.11/icedax/toc.c
+--- cdrkit-1.1.11/icedax/toc.c.paranoiacdda	2012-07-31 14:27:15.225157311 +0200
++++ cdrkit-1.1.11/icedax/toc.c	2012-07-31 14:27:15.230157480 +0200
+@@ -379,8 +379,7 @@ static void emit_cddb_form(char *fname_b
+ static void emit_cdindex_form(char *fname_baseval);
+ #endif
+ 
+-
+-typedef struct TOC {	/* structure of table of contents (cdrom) */
++typedef struct TOC_t {	/* structure of table of contents (cdrom) */
+ 	unsigned char reserved1;
+ 	unsigned char bFlags;
+ 	unsigned char bTrack;
+@@ -391,8 +390,7 @@ typedef struct TOC {	/* structure of tab
+ 	int frms;
+ 	unsigned char ISRC[16];
+ 	int	SCMS;
+-} TOC;
+-
++} TOC_t;
+ 
+ /* Flags contains two fields:
+     bits 7-4 (ADR)
+@@ -432,7 +430,7 @@ struct iterator {
+ 	int index;
+ 	int startindex;
+ 	void        (*reset)(struct iterator *this);
+-	struct TOC *(*getNextTrack)(struct iterator *this);
++	struct TOC_t *(*getNextTrack)(struct iterator *this);
+ 	int         (*hasNextTrack)(struct iterator *this);
+ };
+ 
+@@ -518,7 +516,7 @@ unsigned FixupTOC(unsigned no_tracks)
+ 		    InitIterator(&i, 1);
+ 
+ 	    while (i.hasNextTrack(&i)) {
+-		    struct TOC *p = i.getNextTrack(&i);
++		    struct TOC_t *p = i.getNextTrack(&i);
+ 		    if (IS__AUDIO(p)) count_audio_tracks++;
+ 	    }
+ 
+@@ -733,7 +731,7 @@ static void emit_cddb_form(char *fname_b
+   fprintf( cddb_form, "# Track frame offsets:\n#\n");
+ 
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC *p = i.getNextTrack(&i);
++	  struct TOC_t *p = i.getNextTrack(&i);
+ 	  if (GETTRACK(p) == CDROM_LEADOUT) break;
+ 	  fprintf( cddb_form,
+ 		   "# %lu\n", 150 + Get_AudioStartSector(GETTRACK(p)));
+@@ -765,7 +763,7 @@ static void emit_cddb_form(char *fname_b
+ 
+   i.reset(&i);
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC *p = i.getNextTrack(&i);
++	  struct TOC_t *p = i.getNextTrack(&i);
+ 	  int ii;
+ 
+ 	  ii = GETTRACK(p);
+@@ -788,7 +786,7 @@ static void emit_cddb_form(char *fname_b
+ 
+   i.reset(&i);
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC *p = i.getNextTrack(&i);
++	  struct TOC_t *p = i.getNextTrack(&i);
+ 	  int ii;
+ 
+ 	  ii = GETTRACK(p);
+@@ -1495,7 +1493,7 @@ static int IsSingleArtist(void)
+ 	InitIterator(&i, 1);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		struct TOC *p = i.getNextTrack(&i);
++		struct TOC_t *p = i.getNextTrack(&i);
+ 		int ii;
+ 
+ 		if (IS__DATA(p) || GETTRACK(p) == CDROM_LEADOUT) continue;
+@@ -1681,7 +1679,7 @@ static void emit_cdindex_form(char *fnam
+ 	 global.creator ? ascii2html(global.creator) : "");
+ 
+     while (i.hasNextTrack(&i)) {
+-	    struct TOC *p = i.getNextTrack(&i);
++	    struct TOC_t *p = i.getNextTrack(&i);
+ 	    int ii = GETTRACK(p);
+ 
+ 	    if (ii == CDROM_LEADOUT) break;
+@@ -1703,7 +1701,7 @@ static void emit_cdindex_form(char *fnam
+     fprintf( cdindex_form, "   <MultipleArtistCD>\n");
+ 
+     while (i.hasNextTrack(&i)) {
+-	    struct TOC *p = i.getNextTrack(&i);
++	    struct TOC_t *p = i.getNextTrack(&i);
+ 	    int ii = GETTRACK(p);
+ 
+ 	    if (ii == CDROM_LEADOUT) break;
+@@ -1942,9 +1940,9 @@ static void DisplayToc_with_gui(unsigned
+ 
+ 	if ((global.verbose & (SHOW_TOC | SHOW_STARTPOSITIONS | SHOW_SUMMARY | SHOW_TITLES)) != 0
+ 	    && i.hasNextTrack(&i)) {
+-		TOC *o = i.getNextTrack(&i);
++		TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 			int from;
+ 			from = GETTRACK(o);
+ 
+@@ -2072,9 +2070,9 @@ static void DisplayToc_no_gui(unsigned l
+ 	count_audio_trks = 0;
+ 
+ 	if (i.hasNextTrack(&i)) {
+-		TOC *o = i.getNextTrack(&i);
++		TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 			int from;
+ 			from = GETTRACK(o);
+ 
+@@ -2131,10 +2129,10 @@ static void DisplayToc_no_gui(unsigned l
+ 	i.reset(&i);
+ 	if ((global.verbose & SHOW_TOC) != 0 &&
+ 		i.hasNextTrack(&i)) {
+-		TOC *o = i.getNextTrack(&i);
++		TOC_t *o = i.getNextTrack(&i);
+ 
+ 		for (; i.hasNextTrack(&i);) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 
+ 			if ( GETTRACK(o) <= MAXTRK ) {
+ 				unsigned char brace1, brace2;
+@@ -2189,9 +2187,9 @@ static void DisplayToc_no_gui(unsigned l
+ 		ii = 0;
+ 		i.reset(&i);
+ 		if (i.hasNextTrack(&i)) {
+-			TOC *o = i.getNextTrack(&i);
++			TOC_t *o = i.getNextTrack(&i);
+ 			for ( ; i.hasNextTrack(&i);) {
+-				TOC *p = i.getNextTrack(&i);
++				TOC_t *p = i.getNextTrack(&i);
+ 				fprintf ( stderr,
+ 					  " %2u.(%8u)",
+ 					  GETTRACK(o),
+@@ -2248,7 +2246,7 @@ static void DisplayToc_no_gui(unsigned l
+ 
+ 		i.reset(&i);
+ 		for ( ; i.hasNextTrack(&i);) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 			int jj = GETTRACK(p);
+ 
+ 			if ( global.tracktitle[jj] != NULL ) {
+@@ -2260,7 +2258,7 @@ static void DisplayToc_no_gui(unsigned l
+ 		
+ 		i.reset(&i);
+ 		for ( ; i.hasNextTrack(&i); ) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 			int jj;
+ 
+ 			if (IS__DATA(p))
+@@ -2720,7 +2718,7 @@ void Read_MCN_ISRC(void)
+ 		InitIterator(&i, 1);
+ 
+ 		while (i.hasNextTrack(&i)) {
+-			struct TOC *p = i.getNextTrack(&i);
++			struct TOC_t *p = i.getNextTrack(&i);
+ 			unsigned ii = GETTRACK(p);
+ 			
+ 			if (ii == CDROM_LEADOUT) break;
+@@ -3155,7 +3153,7 @@ unsigned ScanIndices(unsigned track, uns
+ 
+ 
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC *p = i.getNextTrack(&i);
++	  struct TOC_t *p = i.getNextTrack(&i);
+ 	  unsigned ii = GETTRACK(p);
+ 
+ 	  if ( ii < starttrack || IS__DATA(p) )
+@@ -3322,7 +3320,7 @@ unsigned char *Get_MCN(void)
+ }
+ 
+ 
+-static TOC g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
++static TOC_t g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
+ 
+ /*#define IS_AUDIO(i) (!(g_toc[i].bFlags & 0x40))*/
+ 
+@@ -3397,10 +3395,10 @@ static int patch_cd_extra(unsigned track
+ 
+ static int restrict_tracks_illleadout(void)
+ {
+-	struct TOC *o = &g_toc[cdtracks+1];
++	struct TOC_t *o = &g_toc[cdtracks+1];
+ 	int i;
+ 	for (i = cdtracks; i >= 0; i--) {
+-		struct TOC *p = &g_toc[i];
++		struct TOC_t *p = &g_toc[i];
+ 		if (GETSTART(o) > GETSTART(p)) break;
+ 	}
+ 	patch_cd_extra(i+1, GETSTART(o));
+@@ -3523,7 +3521,7 @@ static void it_reset(struct iterator *th
+ 
+ 
+ static int it_hasNextTrack(struct iterator *this);
+-static struct TOC *it_getNextTrack(struct iterator *this);
++static struct TOC_t *it_getNextTrack(struct iterator *this);
+ 
+ static int it_hasNextTrack(struct iterator *this)
+ {
+@@ -3532,7 +3530,7 @@ static int it_hasNextTrack(struct iterat
+ 
+ 
+ 
+-static struct TOC *it_getNextTrack(struct iterator *this)
++static struct TOC_t *it_getNextTrack(struct iterator *this)
+ {
+ 	/* if ( (*this->hasNextTrack)(this) == 0 ) return NULL; */
+ 	if ( this->index > (int)cdtracks+1 ) return NULL;
+@@ -3583,7 +3581,7 @@ long Get_AudioStartSector(unsigned long
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) == p_track) {
+ 			if (IS__DATA(p)) {
+@@ -3613,7 +3611,7 @@ long Get_StartSector(unsigned long p_tra
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) == p_track) {
+ 			return GETSTART(p);
+@@ -3637,7 +3635,7 @@ long Get_EndSector(unsigned long p_track
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 		if (GETTRACK(p) == p_track) {
+ 			p = i.getNextTrack(&i);
+ 			if (p == NULL) {
+@@ -3669,7 +3667,7 @@ long FirstAudioTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 		unsigned ii = GETTRACK(p);
+ 
+ 		if (ii == CDROM_LEADOUT) break;
+@@ -3687,7 +3685,7 @@ long FirstDataTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 		if (IS__DATA(p)) {
+ 			return GETTRACK(p);
+ 		}
+@@ -3708,7 +3706,7 @@ long LastAudioTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 		if (IS__AUDIO(p) && (GETTRACK(p) != CDROM_LEADOUT)) {
+ 			j = GETTRACK(p);
+ 		}
+@@ -3730,7 +3728,7 @@ long Get_LastSectorOnCd(unsigned long p_
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) < p_track)
+ 			continue;
+@@ -3749,9 +3747,9 @@ int Get_Track(unsigned long sector)
+ 	else i.reset(&i);
+ 
+ 	if (i.hasNextTrack(&i)) {
+-		TOC *o = i.getNextTrack(&i);
++		TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC *p = i.getNextTrack(&i);
++			TOC_t *p = i.getNextTrack(&i);
+ 			if ((GETSTART(o) <= sector) && (GETSTART(p) > sector)) {
+ 				if (IS__DATA(o)) {
+ 					return -1;
+@@ -3772,7 +3770,7 @@ int CheckTrackrange(unsigned long from,
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC *p = i.getNextTrack(&i);
++		TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) < from)
+ 			continue;
+@@ -3788,54 +3786,3 @@ int CheckTrackrange(unsigned long from,
+ 	return 0;
+ }
+ 
+-#ifdef	USE_PARANOIA
+-long cdda_disc_firstsector(void *d);
+-
+-long cdda_disc_firstsector(void *d)
+-{
+-	return Get_StartSector(FirstAudioTrack());
+-}
+-
+-int cdda_tracks(void *d);
+-
+-int cdda_tracks(void *d)
+-{
+-	return LastAudioTrack() - FirstAudioTrack() +1;
+-}
+-
+-int cdda_track_audiop(void *d, int track);
+-
+-int cdda_track_audiop(void *d, int track)
+-{
+-	return Get_Datatrack(track) == 0;
+-}
+-
+-long cdda_track_firstsector(void *d, int track);
+-
+-long cdda_track_firstsector(void *d, int track)
+-{
+-	return Get_AudioStartSector(track);
+-}
+-
+-long cdda_track_lastsector(void *d, int track);
+-
+-long cdda_track_lastsector(void *d, int track)
+-{
+-	return Get_EndSector(track);
+-}
+-
+-long cdda_disc_lastsector(void *d);
+-
+-long cdda_disc_lastsector(void *d)
+-{
+-	return Get_LastSectorOnCd(cdtracks) - 1;
+-}
+-
+-int cdda_sector_gettrack(void *d,long sector);
+-
+-int cdda_sector_gettrack(void *d, long sector)
+-{
+-	return Get_Track(sector);
+-}
+-
+-#endif
diff --git a/cdrkit-1.1.11-paranoiacdio.patch b/cdrkit-1.1.11-paranoiacdio.patch
new file mode 100644
index 0000000..34862e0
--- /dev/null
+++ b/cdrkit-1.1.11-paranoiacdio.patch
@@ -0,0 +1,2857 @@
+diff -up cdiopara/icedax/global.h.wrk cdiopara/icedax/global.h
+diff -up cdiopara/icedax/icedax.c.wrk cdiopara/icedax/icedax.c
+--- cdiopara/icedax/icedax.c.wrk	2013-05-14 14:53:18.446879592 +0200
++++ cdiopara/icedax/icedax.c	2013-05-20 14:38:29.724047315 +0200
+@@ -1149,15 +1149,15 @@ static void paranoia_reset()
+ 	para_stat->skips = 0;
+ }
+ 
+-static void paranoia_callback(long inpos, int function);
++static void paranoia_callback(long inpos, paranoia_cb_mode_t function);
+ 
+-static void paranoia_callback(long inpos, int function)
++static void paranoia_callback(long inpos, paranoia_cb_mode_t function)
+ {
+ 	struct timeval thistime;
+ 	long	test;
+ 
+ 	switch (function) {
+-		case	-2:
++/*		case	-2:
+ 			para_stat->v_sector = inpos / CD_FRAMEWORDS;
+ 			return;
+ 		case	-1:
+@@ -1165,7 +1165,7 @@ static void paranoia_callback(long inpos
+ 			para_stat->heartbeat = '*';
+ 			para_stat->slevel = 0;
+ 			para_stat->v_sector = inpos / CD_FRAMEWORDS;
+-		break;
++		break;*/
+ 		case	PARANOIA_CB_VERIFY:
+ 			if (para_stat->stimeout >= 30) {
+ 				if (para_stat->curoverlap > CD_FRAMEWORDS) {
+@@ -1232,6 +1232,12 @@ static void paranoia_callback(long inpos
+ 			para_stat->slevel = 5;
+ 			para_stat->fixup_dupeds++;
+ 		break;
++
++		case PARANOIA_CB_REPAIR:
++		case PARANOIA_CB_BACKOFF:
++		default:
++			fprintf(stderr, "ERROR: Unknown function requested from paranoia_callback. REPORT THIS AS A BUG!/n");
++		break;
+ 	}
+ 
+ 	gettimeofday(&thistime, NULL);
+@@ -2895,7 +2901,7 @@ Rate   Divider      Rate   Divider
+ 		long paranoia_mode;
+ 		cdrom_drive *tmpdrive;
+ 		usal_close(get_scsi_p());
+-
++//		global.cdp = paranoia_init(get_scsi_p()/*, global.nsectors*/);
+ 		tmpdrive = cdda_identify(global.dev_name, 0, NULL);
+ 		if (!tmpdrive)
+ 		{
+@@ -2906,7 +2912,7 @@ Rate   Divider      Rate   Divider
+ 		if(global.nsectors)
+ 		{
+ 		  tmpdrive->nsectors = global.nsectors;
+-		  tmpdrive->bigbuff = global.nsectors * CD_FRAMESIZE_RAW;
++//		  tmpdrive->bigbuff = global.nsectors * CD_FRAMESIZE_RAW;
+ 		}
+ 		if (cdda_open(tmpdrive) != 0)
+ 		{
+diff -up cdiopara/icedax/icedax.h.wrk cdiopara/icedax/icedax.h
+--- cdiopara/icedax/icedax.h.wrk	2013-05-14 14:35:09.646871797 +0200
++++ cdiopara/icedax/icedax.h	2013-05-14 14:35:55.114209747 +0200
+@@ -71,7 +71,8 @@ unsigned int get_current_track(void);
+ #define CD_XA_SYNC_HEAD   (CD_SYNC_SIZE+CD_XA_HEAD)/* sync bytes + header of XA frame */
+ 
+ #define CD_FRAMESIZE      2048 /* bytes per frame, "cooked" mode */
+-#define CD_FRAMESIZE_RAW  2352 /* bytes per frame, "raw" mode */
++//defined in libcdio:
++//#define CD_FRAMESIZE_RAW  2352 /* bytes per frame, "raw" mode */
+ /* most drives don't deliver everything: */
+ #define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /* 2340 */
+ #define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /* 2336 */
+diff -up cdiopara/icedax/interface.c.wrk cdiopara/icedax/interface.c
+--- cdiopara/icedax/interface.c.wrk	2013-05-20 14:54:28.400943735 +0200
++++ cdiopara/icedax/interface.c	2013-06-25 17:31:18.912450933 +0200
+@@ -75,15 +75,15 @@
+ 
+ #include "mytype.h"
+ #include "byteorder.h"
+-#include "interface.h"
+ #include "icedax.h"
+ #include "semshm.h"
+ #include "setuid.h"
++#include "global.h"
+ #include "ringbuff.h"
+ #include "toc.h"
+-#include "global.h"
+ #include "ioctl.h"
+ #include "exitcodes.h"
++#include "interface.h"
+ #include "scsi_cmds.h"
+ 
+ #include <utypes.h>
+diff -up cdiopara/icedax/interface.h.wrk cdiopara/icedax/interface.h
+--- cdiopara/icedax/interface.h.wrk	2013-05-22 15:24:17.117837738 +0200
++++ cdiopara/icedax/interface.h	2013-06-25 17:23:38.155611522 +0200
+@@ -26,7 +26,11 @@
+ #define CD_FRAMESIZE_RAW 2352
+ #endif
+ 
++#ifndef _CDDA_INTERFACE_H_
++//#ifndef CD_FRAMESAMPLES
+ #define CD_FRAMESAMPLES (CD_FRAMESIZE_RAW / 4)
++//#endif
++#endif
+ 
+ extern unsigned interface;
+ 
+diff -up cdiopara/icedax/ioctl.c.wrk cdiopara/icedax/ioctl.c
+--- cdiopara/icedax/ioctl.c.wrk	2013-06-25 17:35:30.494695270 +0200
++++ cdiopara/icedax/ioctl.c	2013-06-25 17:36:21.377147425 +0200
+@@ -55,11 +55,11 @@
+ 
+ #include "mytype.h"
+ #include "byteorder.h"
++#include "global.h"
+ #include "interface.h"
+ #include "toc.h"
+ #include "icedax.h"
+ #include "ioctl.h"
+-#include "global.h"
+ #include "exitcodes.h"
+ 
+ #include <utypes.h>
+diff -up cdiopara/icedax/resample.c.wrk cdiopara/icedax/resample.c
+--- cdiopara/icedax/resample.c.wrk	2013-06-25 17:38:40.413456990 +0200
++++ cdiopara/icedax/resample.c	2013-06-25 17:39:00.557653547 +0200
+@@ -42,6 +42,7 @@
+ 
+ #include "mytype.h"
+ #include "icedax.h"
++#include "global.h"
+ #include "interface.h"
+ #include "byteorder.h"
+ #include "ringbuff.h"
+@@ -49,7 +50,6 @@
+ #include "toc.h"
+ #include "sndfile.h"
+ #include "sndconfig.h"
+-#include "global.h"
+ #include "exitcodes.h"
+ 
+ 
+diff -up cdiopara/icedax/scsi_cmds.c.wrk cdiopara/icedax/scsi_cmds.c
+--- cdiopara/icedax/scsi_cmds.c.wrk	2013-06-25 17:40:24.592486996 +0200
++++ cdiopara/icedax/scsi_cmds.c	2013-06-25 17:40:42.189663871 +0200
+@@ -40,9 +40,9 @@
+ 
+ #include "mytype.h"
+ #include "icedax.h"
++#include "global.h"
+ #include "interface.h"
+ #include "byteorder.h"
+-#include "global.h"
+ #include "wodim.h"
+ #include "toc.h"
+ #include "scsi_cmds.h"
+diff -up cdiopara/icedax/semshm.c.wrk cdiopara/icedax/semshm.c
+--- cdiopara/icedax/semshm.c.wrk	2013-06-25 17:59:53.181820740 +0200
++++ cdiopara/icedax/semshm.c	2013-06-25 18:00:35.372272020 +0200
+@@ -90,9 +90,9 @@
+ #endif
+ 
+ #include "mytype.h"
++#include "global.h"
+ #include "interface.h"
+ #include "ringbuff.h"
+-#include "global.h"
+ #include "exitcodes.h"
+ #include "semshm.h"
+ 
+diff -up cdiopara/icedax/toc.c.wrk cdiopara/icedax/toc.c
+--- cdiopara/icedax/toc.c.wrk	2013-06-25 18:11:05.910961694 +0200
++++ cdiopara/icedax/toc.c	2013-06-25 18:32:39.559603392 +0200
+@@ -58,9 +58,9 @@
+ 
+ #include "mytype.h"
+ #include "byteorder.h"
++#include "global.h"
+ #include "interface.h"
+ #include "icedax.h"
+-#include "global.h"
+ #include "sha.h"
+ #include "base64.h"
+ #include "toc.h"
+@@ -379,7 +379,7 @@ static void emit_cddb_form(char *fname_b
+ static void emit_cdindex_form(char *fname_baseval);
+ #endif
+ 
+-typedef struct TOC_t {	/* structure of table of contents (cdrom) */
++typedef struct icedax_TOC_t {	/* structure of table of contents (cdrom) */
+ 	unsigned char reserved1;
+ 	unsigned char bFlags;
+ 	unsigned char bTrack;
+@@ -390,7 +390,7 @@ typedef struct TOC_t {	/* structure of t
+ 	int frms;
+ 	unsigned char ISRC[16];
+ 	int	SCMS;
+-} TOC_t;
++} icedax_TOC_t;
+ 
+ /* Flags contains two fields:
+     bits 7-4 (ADR)
+@@ -430,7 +430,7 @@ struct iterator {
+ 	int index;
+ 	int startindex;
+ 	void        (*reset)(struct iterator *this);
+-	struct TOC_t *(*getNextTrack)(struct iterator *this);
++	struct icedax_TOC_t *(*getNextTrack)(struct iterator *this);
+ 	int         (*hasNextTrack)(struct iterator *this);
+ };
+ 
+@@ -516,7 +516,7 @@ unsigned FixupTOC(unsigned no_tracks)
+ 		    InitIterator(&i, 1);
+ 
+ 	    while (i.hasNextTrack(&i)) {
+-		    struct TOC_t *p = i.getNextTrack(&i);
++		    struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 		    if (IS__AUDIO(p)) count_audio_tracks++;
+ 	    }
+ 
+@@ -731,7 +731,7 @@ static void emit_cddb_form(char *fname_b
+   fprintf( cddb_form, "# Track frame offsets:\n#\n");
+ 
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC_t *p = i.getNextTrack(&i);
++	  struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	  if (GETTRACK(p) == CDROM_LEADOUT) break;
+ 	  fprintf( cddb_form,
+ 		   "# %lu\n", 150 + Get_AudioStartSector(GETTRACK(p)));
+@@ -763,7 +763,7 @@ static void emit_cddb_form(char *fname_b
+ 
+   i.reset(&i);
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC_t *p = i.getNextTrack(&i);
++	  struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	  int ii;
+ 
+ 	  ii = GETTRACK(p);
+@@ -786,7 +786,7 @@ static void emit_cddb_form(char *fname_b
+ 
+   i.reset(&i);
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC_t *p = i.getNextTrack(&i);
++	  struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	  int ii;
+ 
+ 	  ii = GETTRACK(p);
+@@ -1493,7 +1493,7 @@ static int IsSingleArtist(void)
+ 	InitIterator(&i, 1);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		struct TOC_t *p = i.getNextTrack(&i);
++		struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 		int ii;
+ 
+ 		if (IS__DATA(p) || GETTRACK(p) == CDROM_LEADOUT) continue;
+@@ -1679,7 +1679,7 @@ static void emit_cdindex_form(char *fnam
+ 	 global.creator ? ascii2html(global.creator) : "");
+ 
+     while (i.hasNextTrack(&i)) {
+-	    struct TOC_t *p = i.getNextTrack(&i);
++	    struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	    int ii = GETTRACK(p);
+ 
+ 	    if (ii == CDROM_LEADOUT) break;
+@@ -1701,7 +1701,7 @@ static void emit_cdindex_form(char *fnam
+     fprintf( cdindex_form, "   <MultipleArtistCD>\n");
+ 
+     while (i.hasNextTrack(&i)) {
+-	    struct TOC_t *p = i.getNextTrack(&i);
++	    struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	    int ii = GETTRACK(p);
+ 
+ 	    if (ii == CDROM_LEADOUT) break;
+@@ -1940,9 +1940,9 @@ static void DisplayToc_with_gui(unsigned
+ 
+ 	if ((global.verbose & (SHOW_TOC | SHOW_STARTPOSITIONS | SHOW_SUMMARY | SHOW_TITLES)) != 0
+ 	    && i.hasNextTrack(&i)) {
+-		TOC_t *o = i.getNextTrack(&i);
++		icedax_TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 			int from;
+ 			from = GETTRACK(o);
+ 
+@@ -2070,9 +2070,9 @@ static void DisplayToc_no_gui(unsigned l
+ 	count_audio_trks = 0;
+ 
+ 	if (i.hasNextTrack(&i)) {
+-		TOC_t *o = i.getNextTrack(&i);
++		icedax_TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 			int from;
+ 			from = GETTRACK(o);
+ 
+@@ -2129,10 +2129,10 @@ static void DisplayToc_no_gui(unsigned l
+ 	i.reset(&i);
+ 	if ((global.verbose & SHOW_TOC) != 0 &&
+ 		i.hasNextTrack(&i)) {
+-		TOC_t *o = i.getNextTrack(&i);
++		icedax_TOC_t *o = i.getNextTrack(&i);
+ 
+ 		for (; i.hasNextTrack(&i);) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 
+ 			if ( GETTRACK(o) <= MAXTRK ) {
+ 				unsigned char brace1, brace2;
+@@ -2187,9 +2187,9 @@ static void DisplayToc_no_gui(unsigned l
+ 		ii = 0;
+ 		i.reset(&i);
+ 		if (i.hasNextTrack(&i)) {
+-			TOC_t *o = i.getNextTrack(&i);
++			icedax_TOC_t *o = i.getNextTrack(&i);
+ 			for ( ; i.hasNextTrack(&i);) {
+-				TOC_t *p = i.getNextTrack(&i);
++				icedax_TOC_t *p = i.getNextTrack(&i);
+ 				fprintf ( stderr,
+ 					  " %2u.(%8u)",
+ 					  GETTRACK(o),
+@@ -2246,7 +2246,7 @@ static void DisplayToc_no_gui(unsigned l
+ 
+ 		i.reset(&i);
+ 		for ( ; i.hasNextTrack(&i);) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 			int jj = GETTRACK(p);
+ 
+ 			if ( global.tracktitle[jj] != NULL ) {
+@@ -2258,7 +2258,7 @@ static void DisplayToc_no_gui(unsigned l
+ 		
+ 		i.reset(&i);
+ 		for ( ; i.hasNextTrack(&i); ) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 			int jj;
+ 
+ 			if (IS__DATA(p))
+@@ -2718,7 +2718,7 @@ void Read_MCN_ISRC(void)
+ 		InitIterator(&i, 1);
+ 
+ 		while (i.hasNextTrack(&i)) {
+-			struct TOC_t *p = i.getNextTrack(&i);
++			struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 			unsigned ii = GETTRACK(p);
+ 			
+ 			if (ii == CDROM_LEADOUT) break;
+@@ -3153,7 +3153,7 @@ unsigned ScanIndices(unsigned track, uns
+ 
+ 
+   while (i.hasNextTrack(&i)) {
+-	  struct TOC_t *p = i.getNextTrack(&i);
++	  struct icedax_TOC_t *p = i.getNextTrack(&i);
+ 	  unsigned ii = GETTRACK(p);
+ 
+ 	  if ( ii < starttrack || IS__DATA(p) )
+@@ -3320,7 +3320,7 @@ unsigned char *Get_MCN(void)
+ }
+ 
+ 
+-static TOC_t g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
++static icedax_TOC_t g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
+ 
+ /*#define IS_AUDIO(i) (!(g_toc[i].bFlags & 0x40))*/
+ 
+@@ -3395,10 +3395,10 @@ static int patch_cd_extra(unsigned track
+ 
+ static int restrict_tracks_illleadout(void)
+ {
+-	struct TOC_t *o = &g_toc[cdtracks+1];
++	struct icedax_TOC_t *o = &g_toc[cdtracks+1];
+ 	int i;
+ 	for (i = cdtracks; i >= 0; i--) {
+-		struct TOC_t *p = &g_toc[i];
++		struct icedax_TOC_t *p = &g_toc[i];
+ 		if (GETSTART(o) > GETSTART(p)) break;
+ 	}
+ 	patch_cd_extra(i+1, GETSTART(o));
+@@ -3521,7 +3521,7 @@ static void it_reset(struct iterator *th
+ 
+ 
+ static int it_hasNextTrack(struct iterator *this);
+-static struct TOC_t *it_getNextTrack(struct iterator *this);
++static struct icedax_TOC_t *it_getNextTrack(struct iterator *this);
+ 
+ static int it_hasNextTrack(struct iterator *this)
+ {
+@@ -3530,7 +3530,7 @@ static int it_hasNextTrack(struct iterat
+ 
+ 
+ 
+-static struct TOC_t *it_getNextTrack(struct iterator *this)
++static struct icedax_TOC_t *it_getNextTrack(struct iterator *this)
+ {
+ 	/* if ( (*this->hasNextTrack)(this) == 0 ) return NULL; */
+ 	if ( this->index > (int)cdtracks+1 ) return NULL;
+@@ -3581,7 +3581,7 @@ long Get_AudioStartSector(unsigned long
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) == p_track) {
+ 			if (IS__DATA(p)) {
+@@ -3611,7 +3611,7 @@ long Get_StartSector(unsigned long p_tra
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) == p_track) {
+ 			return GETSTART(p);
+@@ -3635,7 +3635,7 @@ long Get_EndSector(unsigned long p_track
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 		if (GETTRACK(p) == p_track) {
+ 			p = i.getNextTrack(&i);
+ 			if (p == NULL) {
+@@ -3667,7 +3667,7 @@ long FirstAudioTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 		unsigned ii = GETTRACK(p);
+ 
+ 		if (ii == CDROM_LEADOUT) break;
+@@ -3685,7 +3685,7 @@ long FirstDataTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 		if (IS__DATA(p)) {
+ 			return GETTRACK(p);
+ 		}
+@@ -3706,7 +3706,7 @@ long LastAudioTrack(void)
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 		if (IS__AUDIO(p) && (GETTRACK(p) != CDROM_LEADOUT)) {
+ 			j = GETTRACK(p);
+ 		}
+@@ -3728,7 +3728,7 @@ long Get_LastSectorOnCd(unsigned long p_
+ 	if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) < p_track)
+ 			continue;
+@@ -3747,9 +3747,9 @@ int Get_Track(unsigned long sector)
+ 	else i.reset(&i);
+ 
+ 	if (i.hasNextTrack(&i)) {
+-		TOC_t *o = i.getNextTrack(&i);
++		icedax_TOC_t *o = i.getNextTrack(&i);
+ 		while (i.hasNextTrack(&i)) {
+-			TOC_t *p = i.getNextTrack(&i);
++			icedax_TOC_t *p = i.getNextTrack(&i);
+ 			if ((GETSTART(o) <= sector) && (GETSTART(p) > sector)) {
+ 				if (IS__DATA(o)) {
+ 					return -1;
+@@ -3770,7 +3770,7 @@ int CheckTrackrange(unsigned long from,
+ 	else i.reset(&i);
+ 
+ 	while (i.hasNextTrack(&i)) {
+-		TOC_t *p = i.getNextTrack(&i);
++		icedax_TOC_t *p = i.getNextTrack(&i);
+ 
+ 		if (GETTRACK(p) < from)
+ 			continue;
+diff -up cdiopara/icedax/toc.h.wrk cdiopara/icedax/toc.h
+--- cdiopara/icedax/toc.h.wrk	2013-05-14 14:41:35.646726988 +0200
++++ cdiopara/icedax/toc.h	2013-05-14 14:42:06.556954562 +0200
+@@ -12,7 +12,8 @@
+ 
+ /* @(#)toc.h	1.9 06/02/19 Copyright 1998,1999 Heiko Eissfeldt, Copyright 2006 J. Schilling */
+ 
+-#define	MAXTRK	100	/* maximum of audio tracks (without a hidden track) */
++//defined in libcdio:
++//#define	MAXTRK	100	/* maximum of audio tracks (without a hidden track) */
+ 
+ extern	unsigned cdtracks;
+ extern	int	have_multisession;
+diff -up cdiopara/readom/readom.c.wrk cdiopara/readom/readom.c
+--- cdiopara/readom/readom.c.wrk	2013-06-25 16:13:03.587078284 +0200
++++ cdiopara/readom/readom.c	2013-06-25 16:13:27.466480361 +0200
+@@ -1146,7 +1146,7 @@ fread_2448_16(SCSI *usalp, rparm_t *rp,
+ {
+ 
+ 	if (rp->ismmc) {
+-		track_t trackdesc;
++		wodim_track_t trackdesc;
+ 		int	ret;
+ 		int	i;
+ 		char	*p;
+diff -up cdiopara/wodim/auinfo.c.wrk cdiopara/wodim/auinfo.c
+--- cdiopara/wodim/auinfo.c.wrk	2013-06-25 16:40:14.572918883 +0200
++++ cdiopara/wodim/auinfo.c	2013-06-25 16:40:45.335248444 +0200
+@@ -46,16 +46,16 @@
+ extern	int	debug;
+ extern	int	xdebug;
+ 
+-BOOL			auinfosize(char *name, track_t *trackp);
+-void			auinfo(char *name, int track, track_t *trackp);
+-textptr_t 	*gettextptr(int track, track_t *trackp);
++BOOL			auinfosize(char *name, wodim_track_t *trackp);
++void			auinfo(char *name, int track, wodim_track_t *trackp);
++textptr_t 	*gettextptr(int track, wodim_track_t *trackp);
+ static char *savestr(char *name);
+ static char *readtag(char *name);
+ static char *readtstr(char *name);
+-void			setmcn(char *mcn, track_t *trackp);
++void			setmcn(char *mcn, wodim_track_t *trackp);
+ static void	isrc_illchar(char *isrc, int c);
+-void			setisrc(char *isrc, track_t *trackp);
+-void			setindex(char *tindex, track_t *trackp);
++void			setisrc(char *isrc, wodim_track_t *trackp);
++void			setindex(char *tindex, wodim_track_t *trackp);
+ 
+ #ifdef	XXX
+ int 
+@@ -68,7 +68,7 @@ main(int argc, char *argv[])
+ #endif
+ 
+ BOOL 
+-auinfosize(char *name, track_t *trackp)
++auinfosize(char *name, wodim_track_t *trackp)
+ {
+ 	const	char	*p;
+ 	const	char	*tlp;
+@@ -145,11 +145,11 @@ auinfosize(char *name, track_t *trackp)
+ }
+ 
+ void 
+-auinfo(char *name, int track, track_t *trackp)
++auinfo(char *name, int track, wodim_track_t *trackp)
+ {
+ 	char	infname[1024];
+ 	char	*p;
+-	track_t	*tp = &trackp[track];
++	wodim_track_t	*tp = &trackp[track];
+ 	textptr_t *txp;
+ 	long	l;
+ 	long	tno = -1;
+@@ -303,7 +303,7 @@ auinfo(char *name, int track, track_t *t
+ }
+ 
+ textptr_t *
+-gettextptr(int track, track_t *trackp)
++gettextptr(int track, wodim_track_t *trackp)
+ {
+ 	register textptr_t *txp;
+ 
+@@ -366,7 +366,7 @@ readtstr(char *name)
+  * Media catalog number is a 13 digit number.
+  */
+ void 
+-setmcn(char *mcn, track_t *trackp)
++setmcn(char *mcn, wodim_track_t *trackp)
+ {
+ 	register char	*p;
+ 
+@@ -404,7 +404,7 @@ isrc_illchar(char *isrc, int c)
+  *	CC-OOO-YY-SSSSS
+  */
+ void 
+-setisrc(char *isrc, track_t *trackp)
++setisrc(char *isrc, wodim_track_t *trackp)
+ {
+ 	char	ibuf[13];
+ 	char	*ip;
+@@ -482,7 +482,7 @@ illchar:
+ }
+ 
+ void 
+-setindex(char *tindex, track_t *trackp)
++setindex(char *tindex, wodim_track_t *trackp)
+ {
+ 	char	*p;
+ 	int	i;
+diff -up cdiopara/wodim/cd_misc.c.wrk cdiopara/wodim/cd_misc.c
+--- cdiopara/wodim/cd_misc.c.wrk	2013-06-25 16:52:56.893056513 +0200
++++ cdiopara/wodim/cd_misc.c	2013-06-25 16:54:56.960519199 +0200
+@@ -42,8 +42,8 @@
+ int	from_bcd(int b);
+ int	to_bcd(int i);
+ long	msf_to_lba(int m, int s, int f, BOOL force_positive);
+-BOOL	lba_to_msf(long lba, msf_t *mp);
+-void	sec_to_msf(long sec, msf_t *mp);
++BOOL	lba_to_msf(long lba, wodim_msf_t *mp);
++void	sec_to_msf(long sec, wodim_msf_t *mp);
+ void	print_min_atip(long li, long lo);
+ 
+ int 
+@@ -73,7 +73,7 @@ msf_to_lba(int m, int s, int f, BOOL for
+ }
+ 
+ BOOL 
+-lba_to_msf(long lba, msf_t *mp)
++lba_to_msf(long lba, wodim_msf_t *mp)
+ {
+ 	int	m;
+ 	int	s;
+@@ -110,7 +110,7 @@ lba_to_msf(long lba, msf_t *mp)
+ }
+ 
+ void 
+-sec_to_msf(long sec, msf_t *mp)
++sec_to_msf(long sec, wodim_msf_t *mp)
+ {
+ 	int	m;
+ 	int	s;
+@@ -128,7 +128,7 @@ sec_to_msf(long sec, msf_t *mp)
+ void 
+ print_min_atip(long li, long lo)
+ {
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 
+ 	if (li < 0) {
+ 		lba_to_msf(li, &msf);
+diff -up cdiopara/wodim/cdr_drv.c.wrk cdiopara/wodim/cdr_drv.c
+--- cdiopara/wodim/cdr_drv.c.wrk	2013-06-25 16:42:28.603492864 +0200
++++ cdiopara/wodim/cdr_drv.c	2013-06-25 16:43:07.938976575 +0200
+@@ -77,7 +77,7 @@ int	format_dummy(SCSI *usalp, cdr_t *, i
+ int	drive_getdisktype(SCSI *usalp, cdr_t *dp);
+ int	cmd_ill(SCSI *usalp);
+ int	cmd_dummy(SCSI *usalp, cdr_t *);
+-int	no_sendcue(SCSI *usalp, cdr_t *, track_t *trackp);
++int	no_sendcue(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ int	buf_dummy(SCSI *usalp, long *sp, long *fp);
+ BOOL	set_cdrcmds(char *name, cdr_t **dpp);
+ cdr_t	*get_cdrcmds(SCSI *usalp);
+@@ -165,7 +165,7 @@ cmd_dummy(SCSI *usalp, cdr_t *dp)
+ }
+ 
+ int 
+-no_sendcue(SCSI *usalp, cdr_t *dp, track_t *trackp)
++no_sendcue(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	errmsgno(EX_BAD, "SAO writing not available or not implemented for this drive.\n");
+ 	return (-1);
+diff -up cdiopara/wodim/cdtext.c.wrk cdiopara/wodim/cdtext.c
+--- cdiopara/wodim/cdtext.c.wrk	2013-06-25 16:44:38.388059921 +0200
++++ cdiopara/wodim/cdtext.c	2013-06-25 16:44:59.599309190 +0200
+@@ -119,8 +119,8 @@ int	textlen;
+ BOOL			checktextfile(char *fname);
+ static void	setuptextdata(Uchar *bp, int len);
+ static BOOL	cdtext_crc_ok(struct textpack *p);
+-void			packtext(int tracks, track_t *trackp);
+-static BOOL	anytext(int pack_type, int tracks, track_t *trackp);
++void			packtext(int tracks, wodim_track_t *trackp);
++static BOOL	anytext(int pack_type, int tracks, wodim_track_t *trackp);
+ static void	fillup_pack(txtarg_t *ap);
+ static void	fillpacks(txtarg_t *ap, char *from, int len, int track_no, int pack_type);
+ int			write_cdtext(SCSI *usalp, cdr_t *dp, long startsec);
+@@ -295,7 +295,7 @@ static BOOL cdtext_crc_ok(struct textpac
+ }
+ 
+ 
+-void packtext(int tracks, track_t *trackp)
++void packtext(int tracks, wodim_track_t *trackp)
+ {
+ 	int	type;
+ 	int	i;
+@@ -373,7 +373,7 @@ void packtext(int tracks, track_t *track
+ #endif
+ }
+ 
+-static BOOL anytext(int pack_type, int tracks, track_t *trackp)
++static BOOL anytext(int pack_type, int tracks, wodim_track_t *trackp)
+ {
+ 	register int	i;
+ 	register char	*p;
+diff -up cdiopara/wodim/clone.c.wrk cdiopara/wodim/clone.c
+--- cdiopara/wodim/clone.c.wrk	2013-06-25 17:33:21.013643927 +0200
++++ cdiopara/wodim/clone.c	2013-06-25 17:43:07.932151568 +0200
+@@ -52,8 +52,8 @@
+ 
+ /*#define	SAO_RAW*/
+ 
+-void	clone_toc(track_t *trackp);
+-void	clone_tracktype(track_t *trackp);
++void	clone_toc(wodim_track_t *trackp);
++void	clone_tracktype(wodim_track_t *trackp);
+ 
+ extern	int	lverbose;
+ extern	int	xdebug;
+@@ -72,11 +72,11 @@ static	long	loutstart;
+ /*
+  * Read Clone TOC description from full toc file.
+  */
+-void clone_toc(track_t *trackp)
++void clone_toc(wodim_track_t *trackp)
+ {
+ 	char	filename[1024];
+-	msf_t	m;
+-	msf_t	mr;
++	wodim_msf_t	m;
++	wodim_msf_t	mr;
+ 	struct	tocheader *tp;
+ 	struct	ftrackdesc *fp;
+ 	int	f;
+@@ -208,7 +208,7 @@ void clone_toc(track_t *trackp)
+  * Control 4 = data
+  * Control 5 = packet data
+  */
+-void clone_tracktype(track_t *trackp)
++void clone_tracktype(wodim_track_t *trackp)
+ {
+ 	int	tracks = trackp->tracks;
+ 	int	sectype;
+diff -up cdiopara/wodim/cue.c.wrk cdiopara/wodim/cue.c
+--- cdiopara/wodim/cue.c.wrk	2013-06-25 17:44:52.030231911 +0200
++++ cdiopara/wodim/cue.c	2013-06-25 17:46:01.606959365 +0200
+@@ -238,22 +238,22 @@ static keyw_t	dtypes[] = {
+ };
+ 
+ 
+-int	parsecue(char *cuefname, track_t trackp[]);
+-void	fparsecue(FILE *f, track_t trackp[]);
+-static	void	parse_mcn(track_t trackp[], state_t *sp);
+-static	void	parse_textfile(track_t trackp[], state_t *sp);
+-static	void	parse_file(track_t trackp[], state_t *sp);
+-static	void	parse_flags(track_t trackp[], state_t *sp);
+-static	void	parse_index(track_t trackp[], state_t *sp);
+-static	void	parse_isrc(track_t trackp[], state_t *sp);
+-static	void	parse_performer(track_t trackp[], state_t *sp);
+-static	void	parse_postgap(track_t trackp[], state_t *sp);
+-static	void	parse_pregap(track_t trackp[], state_t *sp);
+-static	void	parse_songwriter(track_t trackp[], state_t *sp);
+-static	void	parse_title(track_t trackp[], state_t *sp);
+-static	void	parse_track(track_t trackp[], state_t *sp);
++int	parsecue(char *cuefname, wodim_track_t trackp[]);
++void	fparsecue(FILE *f, wodim_track_t trackp[]);
++static	void	parse_mcn(wodim_track_t trackp[], state_t *sp);
++static	void	parse_textfile(wodim_track_t trackp[], state_t *sp);
++static	void	parse_file(wodim_track_t trackp[], state_t *sp);
++static	void	parse_flags(wodim_track_t trackp[], state_t *sp);
++static	void	parse_index(wodim_track_t trackp[], state_t *sp);
++static	void	parse_isrc(wodim_track_t trackp[], state_t *sp);
++static	void	parse_performer(wodim_track_t trackp[], state_t *sp);
++static	void	parse_postgap(wodim_track_t trackp[], state_t *sp);
++static	void	parse_pregap(wodim_track_t trackp[], state_t *sp);
++static	void	parse_songwriter(wodim_track_t trackp[], state_t *sp);
++static	void	parse_title(wodim_track_t trackp[], state_t *sp);
++static	void	parse_track(wodim_track_t trackp[], state_t *sp);
+ static	void	parse_offset(long *lp);
+-static	void	newtrack(track_t trackp[], state_t *sp);
++static	void	newtrack(wodim_track_t trackp[], state_t *sp);
+ 
+ static	keyw_t	*lookup(char *word, keyw_t table[]);
+ static	void	wdebug(void);
+@@ -286,7 +286,7 @@ int
+ main(int argc, char *argv[])
+ {
+ 	int	i;
+-	track_t	track[MAX_TRACK+2];	/* Max tracks + track 0 + track AA */
++	wodim_track_t	track[MAX_TRACK+2];	/* Max tracks + track 0 + track AA */
+ 
+ 	save_args(argc, argv);
+ 
+@@ -304,7 +304,7 @@ extern	int	xdebug;
+ #endif
+ 
+ int 
+-parsecue(char *cuefname, track_t trackp[])
++parsecue(char *cuefname, wodim_track_t trackp[])
+ {
+ 	FILE	*f = cueopen(cuefname);
+ 
+@@ -313,7 +313,7 @@ parsecue(char *cuefname, track_t trackp[
+ }
+ 
+ void 
+-fparsecue(FILE *f, track_t trackp[])
++fparsecue(FILE *f, wodim_track_t trackp[])
+ {
+ 	char	*word;
+ 	struct keyw *kp;
+@@ -402,7 +402,7 @@ fparsecue(FILE *f, track_t trackp[])
+ }
+ 
+ static void 
+-parse_mcn(track_t trackp[], state_t *sp)
++parse_mcn(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	textptr_t *txp;
+@@ -419,7 +419,7 @@ parse_mcn(track_t trackp[], state_t *sp)
+ }
+ 
+ static void 
+-parse_textfile(track_t trackp[], state_t *sp)
++parse_textfile(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 
+@@ -444,7 +444,7 @@ parse_textfile(track_t trackp[], state_t
+ }
+ 
+ static void 
+-parse_file(track_t trackp[], state_t *sp)
++parse_file(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	cname[1024];
+ 	char	newname[1024];
+@@ -543,7 +543,7 @@ parse_file(track_t trackp[], state_t *sp
+ }
+ 
+ static void 
+-parse_flags(track_t trackp[], state_t *sp)
++parse_flags(wodim_track_t trackp[], state_t *sp)
+ {
+ 	struct keyw *kp;
+ 	char	*word;
+@@ -575,7 +575,7 @@ parse_flags(track_t trackp[], state_t *s
+ }
+ 
+ static void 
+-parse_index(track_t trackp[], state_t *sp)
++parse_index(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	long	l;
+@@ -634,7 +634,7 @@ parse_index(track_t trackp[], state_t *s
+ }
+ 
+ static void 
+-parse_isrc(track_t trackp[], state_t *sp)
++parse_isrc(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	textptr_t *txp;
+@@ -657,7 +657,7 @@ parse_isrc(track_t trackp[], state_t *sp
+ }
+ 
+ static void 
+-parse_performer(track_t trackp[], state_t *sp)
++parse_performer(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	textptr_t *txp;
+@@ -670,7 +670,7 @@ parse_performer(track_t trackp[], state_
+ }
+ 
+ static void 
+-parse_postgap(track_t trackp[], state_t *sp)
++parse_postgap(wodim_track_t trackp[], state_t *sp)
+ {
+ 	long	l;
+ 
+@@ -685,7 +685,7 @@ parse_postgap(track_t trackp[], state_t
+ }
+ 
+ static void 
+-parse_pregap(track_t trackp[], state_t *sp)
++parse_pregap(wodim_track_t trackp[], state_t *sp)
+ {
+ 	long	l;
+ 
+@@ -701,7 +701,7 @@ parse_pregap(track_t trackp[], state_t *
+ }
+ 
+ static void 
+-parse_songwriter(track_t trackp[], state_t *sp)
++parse_songwriter(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	textptr_t *txp;
+@@ -714,7 +714,7 @@ parse_songwriter(track_t trackp[], state
+ }
+ 
+ static void 
+-parse_title(track_t trackp[], state_t *sp)
++parse_title(wodim_track_t trackp[], state_t *sp)
+ {
+ 	char	*word;
+ 	textptr_t *txp;
+@@ -727,7 +727,7 @@ parse_title(track_t trackp[], state_t *s
+ }
+ 
+ static void 
+-parse_track(track_t trackp[], state_t *sp)
++parse_track(wodim_track_t trackp[], state_t *sp)
+ {
+ 	struct keyw *kp;
+ 	char	*word;
+@@ -878,7 +878,7 @@ parse_offset(long *lp)
+ 
+ /*--------------------------------------------------------------------------*/
+ static void 
+-newtrack(track_t trackp[], state_t *sp)
++newtrack(wodim_track_t trackp[], state_t *sp)
+ {
+ 	register int	i;
+ 	register int	track = sp->track;
+diff -up cdiopara/wodim/diskid.c.wrk cdiopara/wodim/diskid.c
+--- cdiopara/wodim/diskid.c.wrk	2013-06-25 18:02:27.661472904 +0200
++++ cdiopara/wodim/diskid.c	2013-06-25 18:03:26.453101549 +0200
+@@ -39,13 +39,13 @@
+ 
+ #include "wodim.h"
+ 
+-void	pr_manufacturer(msf_t *mp, BOOL rw, BOOL audio);
+-static	struct disk_man *man_ptr(msf_t *mp);
+-int	manufacturer_id(msf_t *mp);
+-long	disk_rcap(msf_t *mp, long maxblock, BOOL rw, BOOL audio);
++void	pr_manufacturer(wodim_msf_t *mp, BOOL rw, BOOL audio);
++static	struct disk_man *man_ptr(wodim_msf_t *mp);
++int	manufacturer_id(wodim_msf_t *mp);
++long	disk_rcap(wodim_msf_t *mp, long maxblock, BOOL rw, BOOL audio);
+ 
+ struct disk_man {
+-	msf_t	mi_msf;
++	wodim_msf_t	mi_msf;
+ 	char	mi_num;
+ 	char	*mi_name;
+ };
+@@ -328,7 +328,7 @@ static	struct disk_man dman[] = {
+ #define	ndman	(sizeof (dman)/sizeof (dman[0]))
+ 
+ static struct disk_man *
+-man_ptr(msf_t *mp)
++man_ptr(wodim_msf_t *mp)
+ {
+ 	struct disk_man * dp;
+ 	int	frame;
+@@ -363,7 +363,7 @@ man_ptr(msf_t *mp)
+ 	return (NULL);
+ }
+ 
+-void pr_manufacturer(msf_t *mp, BOOL rw, BOOL audio)
++void pr_manufacturer(wodim_msf_t *mp, BOOL rw, BOOL audio)
+ {
+ 	struct disk_man * dp;
+ 	struct disk_man xdman;
+@@ -417,7 +417,7 @@ void pr_manufacturer(msf_t *mp, BOOL rw,
+ 	}
+ }
+ 
+-int manufacturer_id(msf_t *mp)
++int manufacturer_id(wodim_msf_t *mp)
+ {
+ 	struct disk_man * dp;
+ 
+@@ -428,7 +428,7 @@ int manufacturer_id(msf_t *mp)
+ }
+ 
+ struct disk_rcap {
+-	msf_t	ci_msf;				/* Lead in start time	    */
++	wodim_msf_t	ci_msf;				/* Lead in start time	    */
+ 	long	ci_cap;				/* Lead out start time	    */
+ 	long	ci_rcap;			/* Abs max lead out start   */
+ };
+@@ -505,7 +505,7 @@ static	struct disk_rcap rcap[] = {
+ };
+ 
+ long 
+-disk_rcap(msf_t *mp, long maxblock, BOOL rw, BOOL audio)
++disk_rcap(wodim_msf_t *mp, long maxblock, BOOL rw, BOOL audio)
+ {
+ 	struct disk_rcap * dp;
+ 
+diff -up cdiopara/wodim/drv_7501.c.wrk cdiopara/wodim/drv_7501.c
+--- cdiopara/wodim/drv_7501.c.wrk	2013-06-25 18:08:14.575166824 +0200
++++ cdiopara/wodim/drv_7501.c	2013-06-25 18:14:44.030252075 +0200
+@@ -225,18 +225,18 @@ static	int	cw7501_attach(SCSI *usalp, cd
+ static	int	cw7501_init(SCSI *usalp, cdr_t *dp);
+ static	int	cw7501_getdisktype(SCSI *usalp, cdr_t *dp);
+ static	int	cw7501_speed_select(SCSI *usalp, cdr_t *dp, int *speedp);
+-static	int	cw7501_next_wr_addr(SCSI *usalp, track_t *trackp, long *ap);
++static	int	cw7501_next_wr_addr(SCSI *usalp, wodim_track_t *trackp, long *ap);
+ static	int	cw7501_write(SCSI *usalp, caddr_t bp, long sectaddr, long size, 
+ 									 int blocks, BOOL islast);
+-static	int	cw7501_write_leadin(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	cw7501_open_track(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	cw7501_close_track(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	cw7501_open_session(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	cw7501_gen_cue(track_t *trackp, void *vcuep, BOOL needgap);
++static	int	cw7501_write_leadin(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	cw7501_open_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	cw7501_close_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	cw7501_open_session(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	cw7501_gen_cue(wodim_track_t *trackp, void *vcuep, BOOL needgap);
+ static	void	fillcue(struct cw7501_cue *cp, int ca, int tno, int idx, 
+-							  int dataform, int scms, msf_t *mp);
+-static	int	cw7501_send_cue(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	cw7501_fixate(SCSI *usalp, cdr_t *dp, track_t *trackp);
++							  int dataform, int scms, wodim_msf_t *mp);
++static	int	cw7501_send_cue(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	cw7501_fixate(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	cw7501_rezero(SCSI *usalp, int reset, int dwreset);
+ static	int	cw7501_read_trackinfo(SCSI *usalp, Uchar *bp, int count, 
+ 												 int track, int mode);
+@@ -461,7 +461,7 @@ cw7501_speed_select(SCSI *usalp, cdr_t *
+ }
+ 
+ static int 
+-cw7501_next_wr_addr(SCSI *usalp, track_t *trackp, long *ap)
++cw7501_next_wr_addr(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	struct cw7501_nwa	*nwa;
+ 	Uchar	buf[256];
+@@ -520,7 +520,7 @@ cw7501_write(SCSI *usalp,
+ }
+ 
+ static int 
+-cw7501_write_leadin(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_write_leadin(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uint	i;
+ 	long	startsec = 0L;
+@@ -572,7 +572,7 @@ static Uchar	db2phys[] = {
+ };
+ 
+ static int 
+-cw7501_open_track(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_open_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct	scsi_mode_page_header	*mp;
+ 	Uchar				mode[256];
+@@ -632,7 +632,7 @@ cw7501_open_track(SCSI *usalp, cdr_t *dp
+ 
+ 
+ static int 
+-cw7501_close_track(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_close_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (!is_tao(trackp) && !is_packet(trackp)) {
+ 		return (0);
+@@ -641,7 +641,7 @@ cw7501_close_track(SCSI *usalp, cdr_t *d
+ }
+ 
+ static int 
+-cw7501_open_session(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_open_session(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct cw7501_mode_data		md;
+ 	int				count;
+@@ -695,7 +695,7 @@ cw7501_open_session(SCSI *usalp, cdr_t *
+ }
+ 
+ static int 
+-cw7501_fixate(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_fixate(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (!is_tao(trackp) && !is_packet(trackp)) {
+ 		return (scsi_flush_cache(usalp, FALSE));
+@@ -711,7 +711,7 @@ cw7501_fixate(SCSI *usalp, cdr_t *dp, tr
+ /*--------------------------------------------------------------------------*/
+ 
+ static int 
+-cw7501_gen_cue(track_t *trackp, void *vcuep, BOOL needgap)
++cw7501_gen_cue(wodim_track_t *trackp, void *vcuep, BOOL needgap)
+ {
+ 	int	tracks = trackp->tracks;
+ 	int	i;
+@@ -721,7 +721,7 @@ cw7501_gen_cue(track_t *trackp, void *vc
+ 	int	ncue = 0;
+ 	int	icue = 0;
+ 	int	pgsize;
+-	msf_t	m;
++	wodim_msf_t	m;
+ 	int	ctl;
+ 	int	df;
+ 	int	scms;
+@@ -820,7 +820,7 @@ fillcue(struct cw7501_cue *cp	/* The tar
+         int idx					/* Index for this entry */, 
+         int dataform			/* Data format for this entry */, 
+         int scms					/* Serial copy management */, 
+-        msf_t *mp				/* MSF value for this entry */)
++        wodim_msf_t *mp				/* MSF value for this entry */)
+ {
+ 	cp->cs_ctladr = ca;
+ 	if (tno <= 99)
+@@ -838,7 +838,7 @@ fillcue(struct cw7501_cue *cp	/* The tar
+ }
+ 
+ static int 
+-cw7501_send_cue(SCSI *usalp, cdr_t *dp, track_t *trackp)
++cw7501_send_cue(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct cw7501_cue *cp;
+ 	int		ncue;
+diff -up cdiopara/wodim/drv_jvc.c.wrk cdiopara/wodim/drv_jvc.c
+--- cdiopara/wodim/drv_jvc.c.wrk	2013-06-25 18:17:15.654847220 +0200
++++ cdiopara/wodim/drv_jvc.c	2013-06-25 18:20:04.868629843 +0200
+@@ -220,15 +220,15 @@ static	int	teac_attach(SCSI *usalp, cdr_
+ static	int	teac_init(SCSI *usalp, cdr_t *dp);
+ static	int	teac_getdisktype(SCSI *usalp, cdr_t *dp);
+ static	int	speed_select_teac(SCSI *usalp, cdr_t *dp, int *speedp);
+-static	int	select_secsize_teac(SCSI *usalp, track_t *trackp);
+-static	int	next_wr_addr_jvc(SCSI *usalp, track_t *, long *ap);
++static	int	select_secsize_teac(SCSI *usalp, wodim_track_t *trackp);
++static	int	next_wr_addr_jvc(SCSI *usalp, wodim_track_t *, long *ap);
+ static	int	write_teac_xg1(SCSI *usalp, caddr_t, long, long, int, BOOL);
+ static	int	cdr_write_teac(SCSI *usalp, caddr_t bp, long sectaddr, long size, 
+ 										int blocks, BOOL islast);
+-static	int	open_track_jvc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	teac_fixation(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	close_track_teac(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	teac_open_session(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	open_track_jvc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	teac_fixation(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	close_track_teac(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	teac_open_session(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	initsub_teac(SCSI *usalp, int toctype, int multi);
+ static	int	teac_doopc(SCSI *usalp);
+ static	int	teac_opc(SCSI *usalp, caddr_t, int cnt, int doopc);
+@@ -278,9 +278,9 @@ cdr_t	cdr_teac_cdr50 = {
+ 	next_wr_addr_jvc,
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	cdr_write_teac,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_jvc,
+ 	close_track_teac,
+ 	teac_open_session,
+@@ -372,7 +372,7 @@ speed_select_teac(SCSI *usalp, cdr_t *dp
+ }
+ 
+ static int 
+-select_secsize_teac(SCSI *usalp, track_t *trackp)
++select_secsize_teac(SCSI *usalp, wodim_track_t *trackp)
+ {
+ 	struct scsi_mode_data md;
+ 	int	count = sizeof (struct scsi_mode_header) +
+@@ -403,7 +403,7 @@ select_secsize_teac(SCSI *usalp, track_t
+ }
+ 
+ static int 
+-next_wr_addr_jvc(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_jvc(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	if (trackp != 0 && trackp->track > 0) {
+ 		*ap = lba_addr;
+@@ -473,7 +473,7 @@ cdr_write_teac(SCSI *usalp,
+ }
+ 
+ static int 
+-open_track_jvc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_jvc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	status;
+ 	long	blocks;
+@@ -601,7 +601,7 @@ if (!is_last(trackp) && trackp[1].pregap
+ static	char	sector[3000];
+ 
+ static int 
+-close_track_teac(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_teac(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	ret = 0;
+ 
+@@ -698,7 +698,7 @@ teac_attach(SCSI *usalp, cdr_t *dp)
+ }
+ 
+ static int 
+-teac_fixation(SCSI *usalp, cdr_t *dp, track_t *trackp)
++teac_fixation(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	long	lba;
+ 	int	status;
+@@ -811,7 +811,7 @@ extern	char	*buf;
+ }
+ 
+ static int 
+-teac_open_session(SCSI *usalp, cdr_t *dp, track_t *trackp)
++teac_open_session(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uint	i;
+ 
+diff -up cdiopara/wodim/drv_mmc.c.wrk cdiopara/wodim/drv_mmc.c
+--- cdiopara/wodim/drv_mmc.c.wrk	2013-06-25 18:24:35.494485316 +0200
++++ cdiopara/wodim/drv_mmc.c	2013-06-25 18:25:57.345350411 +0200
+@@ -110,18 +110,18 @@ static	int	speed_select_mmc(SCSI *usalp,
+ static  int   speed_select_mdvd(SCSI *usalp, cdr_t *dp, int *speedp);
+ static	int	mmc_set_speed(SCSI *usalp, int readspeed, int writespeed, 
+ 									  int rotctl);
+-static	int	next_wr_addr_mmc(SCSI *usalp, track_t *trackp, long *ap);
+-static  int   next_wr_addr_mdvd(SCSI *usalp, track_t *trackp, long *ap);
+-static	int	write_leadin_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_track_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static  int   open_track_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	close_track_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static  int   close_track_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp); 
+-static	int	open_session_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static  int   open_session_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	next_wr_addr_mmc(SCSI *usalp, wodim_track_t *trackp, long *ap);
++static  int   next_wr_addr_mdvd(SCSI *usalp, wodim_track_t *trackp, long *ap);
++static	int	write_leadin_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_track_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static  int   open_track_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	close_track_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static  int   close_track_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp); 
++static	int	open_session_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static  int   open_session_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	waitfix_mmc(SCSI *usalp, int secs);
+-static	int	fixate_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static  int   fixate_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	fixate_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static  int   fixate_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	blank_mmc(SCSI *usalp, cdr_t *dp, long addr, int blanktype);
+ static	int	format_mdvd(SCSI *usalp, cdr_t *dp, int formattype);
+ static	int	send_opc_mmc(SCSI *usalp, caddr_t, int cnt, int doopc);
+@@ -130,10 +130,10 @@ static	int	opt1_mdvd(SCSI *usalp, cdr_t
+ static	int	opt2_mmc(SCSI *usalp, cdr_t *dp);
+ static	int	scsi_sony_write(SCSI *usalp, caddr_t bp, long sectaddr, long size, 
+ 										 int blocks, BOOL islast);
+-static	int	gen_cue_mmc(track_t *trackp, void *vcuep, BOOL needgap);
++static	int	gen_cue_mmc(wodim_track_t *trackp, void *vcuep, BOOL needgap);
+ static	void	fillcue(struct mmc_cue *cp, int ca, int tno, int idx, int dataform,
+-							 int scms, msf_t *mp);
+-static	int	send_cue_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp);
++							 int scms, wodim_msf_t *mp);
++static	int	send_cue_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static 	int	stats_mmc(SCSI *usalp, cdr_t *dp);
+ static 	BOOL	mmc_isplextor(SCSI *usalp);
+ static 	BOOL	mmc_isyamaha(SCSI *usalp);
+@@ -251,8 +251,8 @@ cdr_t   cdr_mdvd = {
+ 	next_wr_addr_mdvd,
+ 	(int(*)(SCSI *, Ulong))cmd_ill,   /* reserve_track        */
+ 	scsi_cdr_write,
+-	(int(*)__PR((track_t *, void *, BOOL)))cmd_dummy, /* gen_cue */
+-	(int(*)__PR((SCSI *usalp, cdr_t *, track_t *)))cmd_dummy, /* send_cue */
++	(int(*)__PR((wodim_track_t *, void *, BOOL)))cmd_dummy, /* gen_cue */
++	(int(*)__PR((SCSI *usalp, cdr_t *, wodim_track_t *)))cmd_dummy, /* send_cue */
+ 	write_leadin_mmc,
+ 	open_track_mdvd,
+ 	close_track_mdvd,
+@@ -337,19 +337,19 @@ cdr_t	cdr_cd = {
+ 	(int(*)(SCSI *, cdr_t *, int))cmd_dummy,	/* recover	*/
+ 	speed_select_mmc,
+ 	select_secsize,
+-	(int(*)(SCSI *usalp, track_t *, long *))cmd_ill,	/* next_wr_addr		*/
++	(int(*)(SCSI *usalp, wodim_track_t *, long *))cmd_ill,	/* next_wr_addr		*/
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	scsi_cdr_write,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_mmc,
+ 	close_track_mmc,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,	/* fixation */
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,	/* fixation */
+ 	cmd_dummy,					/* stats	*/
+ 	blank_dummy,
+ 	format_dummy,
+@@ -381,19 +381,19 @@ cdr_t	cdr_oldcd = {
+ 	(int(*)(SCSI *, cdr_t *, int))cmd_dummy,	/* recover	*/
+ 	speed_select_mmc,
+ 	select_secsize,
+-	(int(*)(SCSI *usal, track_t *, long *))cmd_ill,	/* next_wr_addr		*/
++	(int(*)(SCSI *usal, wodim_track_t *, long *))cmd_ill,	/* next_wr_addr		*/
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	scsi_cdr_write,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_mmc,
+ 	close_track_mmc,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,	/* fixation */
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,	/* fixation */
+ 	cmd_dummy,					/* stats	*/
+ 	blank_dummy,
+ 	format_dummy,
+@@ -426,19 +426,19 @@ cdr_t	cdr_cd_dvd = {
+ 	(int(*)(SCSI *, cdr_t *, int))cmd_dummy,	/* recover	*/
+ 	speed_select_mmc,
+ 	select_secsize,
+-	(int(*)(SCSI *usalp, track_t *, long *))cmd_ill,	/* next_wr_addr		*/
++	(int(*)(SCSI *usalp, wodim_track_t *, long *))cmd_ill,	/* next_wr_addr		*/
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	scsi_cdr_write,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_mmc,
+ 	close_track_mmc,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset,
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy,	/* fixation */
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy,	/* fixation */
+ 	cmd_dummy,					/* stats	*/
+ 	blank_dummy,
+ 	format_dummy,
+@@ -1549,7 +1549,7 @@ extern	char	*buf;
+ 	dstat_t	*dsp = dp->cdr_dstat;
+ 	struct disk_info *dip;
+ 	Uchar	mode[0x100];
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 	BOOL	did_atip = FALSE;
+ 	BOOL	did_dummy = FALSE;
+ 	int 	rplus;
+@@ -2116,7 +2116,7 @@ speed_select_mdvd(SCSI *usalp, cdr_t *dp
+ }
+ 
+ static int 
+-next_wr_addr_mmc(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_mmc(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	struct	track_info	track_info;
+ 	long	next_addr;
+@@ -2157,7 +2157,7 @@ next_wr_addr_mmc(SCSI *usalp, track_t *t
+ }
+ 
+ static int 
+-write_leadin_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++write_leadin_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uint	i;
+ 	long	startsec = 0L;
+@@ -2247,7 +2247,7 @@ int	st2mode[] = {
+ };
+ 
+ static int 
+-next_wr_addr_mdvd(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_mdvd(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	int     track=0;
+ 	struct	track_info	track_info;
+@@ -2287,7 +2287,7 @@ next_wr_addr_mdvd(SCSI *usalp, track_t *
+ }
+ 
+ static int 
+-open_track_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uchar	mode[0x100];
+ 	int	len;
+@@ -2364,7 +2364,7 @@ open_track_mmc(SCSI *usalp, cdr_t *dp, t
+ }
+ 
+ static int 
+-open_track_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uchar	mode[0x100];
+ 	int	len;
+@@ -2400,7 +2400,7 @@ open_track_mdvd(SCSI *usalp, cdr_t *dp,
+ }
+ 
+ static int 
+-close_track_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	ret;
+ 
+@@ -2423,7 +2423,7 @@ close_track_mmc(SCSI *usalp, cdr_t *dp,
+ }
+ 
+ static int 
+-close_track_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	ret;
+ 	if (!is_packet(trackp))
+@@ -2454,7 +2454,7 @@ int	toc2sess[] = {
+ };
+ 
+ static int 
+-open_session_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_session_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uchar	mode[0x100];
+ 	int	len;
+@@ -2523,7 +2523,7 @@ open_session_mmc(SCSI *usalp, cdr_t *dp,
+ }
+ 
+ static int 
+-open_session_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_session_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uchar	mode[0x100];
+ 	int	tracks = trackp->tracks;
+@@ -2633,7 +2633,7 @@ waitfix_mmc(SCSI *usalp, int secs)
+ }
+ 
+ static int 
+-fixate_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++fixate_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	ret = 0;
+ 	int	key = 0;
+@@ -2738,7 +2738,7 @@ fixate_mmc(SCSI *usalp, cdr_t *dp, track
+ }
+ 
+ static int 
+-fixate_mdvd(SCSI *usalp, cdr_t *dp, track_t *trackp)
++fixate_mdvd(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int ret;
+ 	if (scsi_flush_cache(usalp, (dp->cdr_cmdflags&F_IMMED) != 0) < 0) {
+@@ -2960,7 +2960,7 @@ opt1_mmc(SCSI *usalp, cdr_t *dp)
+ 		}
+ 		dp->cdr_dstat->ds_cdrflags = oflags;
+ 		if (oflags & RF_PRATIP) {
+-			msf_t   msf;
++			wodim_msf_t   msf;
+ 			lba_to_msf(dp->cdr_dstat->ds_first_leadin, &msf);
+ 			printf("New start of lead in: %ld (%02d:%02d/%02d)\n",
+ 				(long)dp->cdr_dstat->ds_first_leadin,
+@@ -2998,7 +2998,7 @@ opt1_mmc(SCSI *usalp, cdr_t *dp)
+ 		else
+ 			gcode = gigarec_plextor(usalp, 0);
+ 		if (gcode != 0) {
+-			msf_t   msf;
++			wodim_msf_t   msf;
+ 
+ 			dp->cdr_dstat->ds_first_leadin =
+ 					gigarec_mult(gcode, dp->cdr_dstat->ds_first_leadin);
+@@ -3126,7 +3126,7 @@ opt1_mdvd(SCSI *usalp, cdr_t *dp)
+ 		}
+ 		dp->cdr_dstat->ds_cdrflags = oflags;
+ 		if (oflags & RF_PRATIP) {
+-			msf_t   msf;
++			wodim_msf_t   msf;
+ 			lba_to_msf(dp->cdr_dstat->ds_first_leadin, &msf);
+ 			printf("New start of lead in: %ld (%02d:%02d/%02d)\n",
+ 				(long)dp->cdr_dstat->ds_first_leadin,
+@@ -3175,7 +3175,7 @@ Uchar	db2df[] = {
+ };
+ 
+ static int 
+-gen_cue_mmc(track_t *trackp, void *vcuep, BOOL needgap)
++gen_cue_mmc(wodim_track_t *trackp, void *vcuep, BOOL needgap)
+ {
+ 	int	tracks = trackp->tracks;
+ 	int	i;
+@@ -3185,7 +3185,7 @@ gen_cue_mmc(track_t *trackp, void *vcuep
+ 	int	ncue = 0;
+ 	int	icue = 0;
+ 	int	pgsize;
+-	msf_t	m;
++	wodim_msf_t	m;
+ 	int	ctl;
+ 	int	df;
+ 	int	scms;
+@@ -3318,7 +3318,7 @@ fillcue(struct mmc_cue *cp  /* The targe
+         int idx             /* Index for this entry */, 
+         int dataform        /* Data format for this entry */, 
+         int scms            /* Serial copy management */, 
+-        msf_t *mp           /* MSF value for this entry */)
++        wodim_msf_t *mp           /* MSF value for this entry */)
+ {
+ 	cp->cs_ctladr = ca;		/* XXX wie lead in */
+ 	cp->cs_tno = tno;
+@@ -3331,7 +3331,7 @@ fillcue(struct mmc_cue *cp  /* The targe
+ }
+ 
+ static int 
+-send_cue_mmc(SCSI *usalp, cdr_t *dp, track_t *trackp)
++send_cue_mmc(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct mmc_cue	*cp;
+ 	int		ncue;
+diff -up cdiopara/wodim/drv_philips.c.wrk cdiopara/wodim/drv_philips.c
+--- cdiopara/wodim/drv_philips.c.wrk	2013-06-25 18:34:35.454829395 +0200
++++ cdiopara/wodim/drv_philips.c	2013-06-25 18:36:03.525761201 +0200
+@@ -67,18 +67,18 @@ static	int	philips_getdisktype(SCSI *usa
+ static	BOOL	capacity_philips(SCSI *usalp, long *lp);
+ static	int	first_writable_addr_philips(SCSI *usalp, long *, int, int, int, 
+ 														 int);
+-static	int	next_wr_addr_philips(SCSI *usalp, track_t *trackp, long *ap);
++static	int	next_wr_addr_philips(SCSI *usalp, wodim_track_t *trackp, long *ap);
+ static	int	reserve_track_philips(SCSI *usalp, unsigned long);
+ static	int	scsi_cdr_write_philips(SCSI *usalp, caddr_t bp, long sectaddr, 
+ 												  long size, int blocks, BOOL islast);
+ static	int	write_track_info_philips(SCSI *usalp, int);
+ static	int	write_track_philips(SCSI *usalp, long, int);
+-static	int	open_track_philips(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_track_plasmon(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_track_oldphilips(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_track_yamaha(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	close_track_philips(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	fixation_philips(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	open_track_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_track_plasmon(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_track_oldphilips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_track_yamaha(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	close_track_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	fixation_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ 
+ static	int	philips_attach(SCSI *usalp, cdr_t *);
+ static	int	plasmon_attach(SCSI *usalp, cdr_t *);
+@@ -159,12 +159,12 @@ cdr_t	cdr_philips_cdd521O = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_oldphilips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -200,12 +200,12 @@ cdr_t	cdr_philips_dumb = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_oldphilips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -241,12 +241,12 @@ cdr_t	cdr_philips_cdd521 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_philips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -283,12 +283,12 @@ cdr_t	cdr_philips_cdd522 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_philips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -324,12 +324,12 @@ cdr_t	cdr_tyuden_ew50 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_philips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -365,12 +365,12 @@ cdr_t	cdr_kodak_pcd600 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_oldphilips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -406,12 +406,12 @@ cdr_t	cdr_plasmon_rf4100 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_plasmon,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -447,13 +447,13 @@ cdr_t	cdr_pioneer_dw_s114x = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ /*	open_track_yamaha,*/
+ /*???*/	open_track_oldphilips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -490,12 +490,12 @@ cdr_t	cdr_yamaha_cdr100 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_yamaha,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -532,12 +532,12 @@ cdr_t	cdr_ricoh_ro1060 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_philips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -574,12 +574,12 @@ cdr_t	cdr_ricoh_ro1420 = {
+ 	next_wr_addr_philips,
+ 	reserve_track_philips,
+ 	scsi_cdr_write_philips,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+ 	no_sendcue,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_philips,
+ 	close_track_philips,
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy,
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy,
+ 	cmd_dummy,
+ 	cmd_dummy,					/* abort	*/
+ 	read_session_offset_philips,
+@@ -835,11 +835,11 @@ philips_getdisktype(SCSI *usalp, cdr_t *
+ 	long	dummy;
+ 	long	lilen;
+ 	long	lolen;
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 	int	audio = -1;
+ 
+ 	usalp->silent++;
+-	dummy = (*dp->cdr_next_wr_address)(usalp, (track_t *)0, &lilen);
++	dummy = (*dp->cdr_next_wr_address)(usalp, (wodim_track_t *)0, &lilen);
+ 	usalp->silent--;
+ 
+ 	/*
+@@ -972,7 +972,7 @@ first_writable_addr_philips(SCSI *usalp,
+ }
+ 
+ static int 
+-next_wr_addr_philips(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_philips(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 
+ /*	if (first_writable_addr_philips(usalp, ap, 0, 0, 0, 1) < 0)*/
+@@ -1054,7 +1054,7 @@ write_track_philips(SCSI *usalp,
+ }
+ 
+ static int 
+-open_track_philips(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (select_secsize(usalp, trackp->secsize) < 0)
+ 		return (-1);
+@@ -1069,7 +1069,7 @@ open_track_philips(SCSI *usalp, cdr_t *d
+ }
+ 
+ static int 
+-open_track_plasmon(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_plasmon(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (select_secsize(usalp, trackp->secsize) < 0)
+ 		return (-1);
+@@ -1081,7 +1081,7 @@ open_track_plasmon(SCSI *usalp, cdr_t *d
+ }
+ 
+ static int 
+-open_track_oldphilips(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_oldphilips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (write_track_philips(usalp, 0, trackp->sectype) < 0)
+ 		return (-1);
+@@ -1090,7 +1090,7 @@ open_track_oldphilips(SCSI *usalp, cdr_t
+ }
+ 
+ static int 
+-open_track_yamaha(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_yamaha(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (select_secsize(usalp, trackp->secsize) < 0)
+ 		return (-1);
+@@ -1102,12 +1102,12 @@ open_track_yamaha(SCSI *usalp, cdr_t *dp
+ }
+ 
+ static int 
+-close_track_philips(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	return (scsi_flush_cache(usalp, FALSE));
+ }
+ 
+-static int fixation_philips(SCSI *usalp, cdr_t *dp, track_t *trackp)
++static int fixation_philips(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	register struct	usal_cmd	*scmd = usalp->scmd;
+ 
+diff -up cdiopara/wodim/drv_simul.c.wrk cdiopara/wodim/drv_simul.c
+--- cdiopara/wodim/drv_simul.c.wrk	2013-06-25 18:37:30.686683498 +0200
++++ cdiopara/wodim/drv_simul.c	2013-06-25 18:38:09.542094684 +0200
+@@ -66,13 +66,13 @@ static	cdr_t	*identify_simul(SCSI *usalp
+ static	int	init_simul(SCSI *usalp, cdr_t *dp);
+ static	int	getdisktype_simul(SCSI *usalp, cdr_t *dp);
+ static	int	speed_select_simul(SCSI *usalp, cdr_t *dp, int *speedp);
+-static	int	next_wr_addr_simul(SCSI *usalp, track_t *trackp, long *ap);
++static	int	next_wr_addr_simul(SCSI *usalp, wodim_track_t *trackp, long *ap);
+ static	int	cdr_write_simul(SCSI *usalp, caddr_t bp, long sectaddr, long size, 
+ 										 int blocks, BOOL islast);
+-static	int	open_track_simul(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	close_track_simul(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_session_simul(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	fixate_simul(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	open_track_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	close_track_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_session_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	fixate_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	void	tv_sub(struct timeval *tvp1, struct timeval *tvp2);
+ 
+ static int simul_load(SCSI *usalp, cdr_t *dp)
+@@ -108,9 +108,9 @@ cdr_t	cdr_cdr_simul = {
+ 	next_wr_addr_simul,
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	cdr_write_simul,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy, /* send_cue */
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy, /* send_cue */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_simul,
+ 	close_track_simul,
+ 	open_session_simul,
+@@ -149,9 +149,9 @@ cdr_t	cdr_dvd_simul = {
+ 	next_wr_addr_simul,
+ 	(int(*)(SCSI *, Ulong))cmd_ill,	/* reserve_track	*/
+ 	cdr_write_simul,
+-	(int(*)(track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
+-	(int(*)(SCSI *usalp, cdr_t *, track_t *))cmd_dummy, /* send_cue */
+-	(int(*)(SCSI *, cdr_t *, track_t *))cmd_dummy, /* leadin */
++	(int(*)(wodim_track_t *, void *, BOOL))cmd_dummy,	/* gen_cue */
++	(int(*)(SCSI *usalp, cdr_t *, wodim_track_t *))cmd_dummy, /* send_cue */
++	(int(*)(SCSI *, cdr_t *, wodim_track_t *))cmd_dummy, /* leadin */
+ 	open_track_simul,
+ 	close_track_simul,
+ 	open_session_simul,
+@@ -249,7 +249,7 @@ speed_select_simul(SCSI *usalp, cdr_t *d
+ }
+ 
+ static int
+-next_wr_addr_simul(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_simul(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	/*
+ 	 * This will most likely not 100% correct for TAO CDs
+@@ -345,14 +345,14 @@ cdr_write_simul(SCSI *usalp, caddr_t bp
+ }
+ 
+ static int
+-open_track_simul(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	sleep_min = 999 * 1000000;
+ 	return (0);
+ }
+ 
+ static int
+-close_track_simul(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (lverbose) {
+ 		printf("Remaining reserve time in drive buffer: %d.%3.3d ms\n",
+@@ -368,14 +368,14 @@ close_track_simul(SCSI *usalp, cdr_t *dp
+ }
+ 
+ static int
+-open_session_simul(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_session_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	simul_nwa = 0L;
+ 	return (0);
+ }
+ 
+ static int
+-fixate_simul(SCSI *usalp, cdr_t *dp, track_t *trackp)
++fixate_simul(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	return (0);
+ }
+diff -up cdiopara/wodim/drv_sony.c.wrk cdiopara/wodim/drv_sony.c
+--- cdiopara/wodim/drv_sony.c.wrk	2013-06-25 18:42:41.039821118 +0200
++++ cdiopara/wodim/drv_sony.c	2013-06-25 18:43:35.479307474 +0200
+@@ -213,12 +213,12 @@ static	int	write_continue_sony(SCSI *usa
+ 											  long size, int blocks, BOOL islast);
+ static	int	discontinue_sony(SCSI *usalp);
+ static	int	write_track_sony(SCSI *usalp, long track, int sectype);
+-static	int	close_track_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	close_track_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	flush_sony(SCSI *usalp, int track);
+-static	int	finalize_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	finalize_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	recover_sony(SCSI *usalp, cdr_t *dp, int track);
+ static	int	set_wr_parameter_sony(SCSI *usalp, caddr_t bp, int size);
+-static	int	next_wr_addr_sony(SCSI *usalp, track_t *trackp, long *ap);
++static	int	next_wr_addr_sony(SCSI *usalp, wodim_track_t *trackp, long *ap);
+ static	int	reserve_track_sony(SCSI *usalp, unsigned long len);
+ static	int	init_sony(SCSI *usalp, cdr_t *dp);
+ static	int	getdisktype_sony(SCSI *usalp, cdr_t *dp);
+@@ -229,14 +229,14 @@ static	int	next_writable_address_sony(SC
+ 														int sectype, int tracktype);
+ static	int	new_track_sony(SCSI *usalp, int track, int sectype, 
+ 										int tracktype);
+-static	int	open_track_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	open_session_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	open_track_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	open_session_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	abort_session_sony(SCSI *usalp, cdr_t *dp);
+ static	int	get_page22_sony(SCSI *usalp, char *mode);
+-static	int	gen_cue_sony(track_t *trackp, void *vcuep, BOOL needgap);
+-static	void	fillcue(struct sony_cue *cp, int ca, int tno, int idx, int dataform, int scms, msf_t *mp);
+-static	int	send_cue_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-static	int	write_leadin_sony(SCSI *usalp, cdr_t *dp, track_t *trackp);
++static	int	gen_cue_sony(wodim_track_t *trackp, void *vcuep, BOOL needgap);
++static	void	fillcue(struct sony_cue *cp, int ca, int tno, int idx, int dataform, int scms, wodim_msf_t *mp);
++static	int	send_cue_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++static	int	write_leadin_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ static	int	sony_attach(SCSI *usalp, cdr_t *dp);
+ #ifdef	SONY_DEBUG
+ static	void	print_sony_mp22(struct sony_924_mode_page_22 *xp, int len);
+@@ -383,7 +383,7 @@ write_track_sony(SCSI *usalp,
+ 
+ /* XXX NOCH NICHT FERTIG */
+ static int
+-close_track_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++close_track_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	register struct	usal_cmd	*scmd = usalp->scmd;
+ 	int	track = 0;
+@@ -420,7 +420,7 @@ close_track_sony(SCSI *usalp, cdr_t *dp,
+ }
+ 
+ static int
+-finalize_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++finalize_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	register struct	usal_cmd	*scmd = usalp->scmd;
+ 	int	dummy = track_base(trackp)->tracktype & TOCF_DUMMY;
+@@ -517,7 +517,7 @@ set_wr_parameter_sony(SCSI *usalp, caddr
+ }
+ 
+ static int
+-next_wr_addr_sony(SCSI *usalp, track_t *trackp, long *ap)
++next_wr_addr_sony(SCSI *usalp, wodim_track_t *trackp, long *ap)
+ {
+ 	if (next_writable_address_sony(usalp, ap, 0, 0, 0) < 0)
+ 		return (-1);
+@@ -559,7 +559,7 @@ getdisktype_sony(SCSI *usalp, cdr_t *dp)
+ 	dstat_t	*dsp = dp->cdr_dstat;
+ 	long	dummy;
+ 	long	lst;
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 
+ 	char			mode[256];
+ 	struct scsi_mode_page_header	*mp;
+@@ -626,7 +626,7 @@ getdisktype_sony(SCSI *usalp, cdr_t *dp)
+ static void
+ di_to_dstat_sony(struct sony_924_mode_page_22 *dip, dstat_t *dsp)
+ {
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 
+ 	dsp->ds_diskid = a_to_u_4_byte(dip->disk_id_code);
+ #ifdef	PROTOTYPES
+@@ -841,7 +841,7 @@ new_track_sony(SCSI *usalp, int track, i
+ }
+ 
+ static int
+-open_track_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_track_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	if (!is_tao(trackp) && !is_packet(trackp)) {
+ 		if (trackp->pregapsize > 0 && (trackp->flags & TI_PREGAP) == 0) {
+@@ -874,7 +874,7 @@ open_track_sony(SCSI *usalp, cdr_t *dp,
+ }
+ 
+ static int
+-open_session_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++open_session_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct	scsi_mode_page_header *mp;
+ 	char			mode[256];
+@@ -994,7 +994,7 @@ static Uchar	db2df[] = {
+ };
+ 
+ static int
+-gen_cue_sony(track_t *trackp, void *vcuep, BOOL needgap)
++gen_cue_sony(wodim_track_t *trackp, void *vcuep, BOOL needgap)
+ {
+ 	int	tracks = trackp->tracks;
+ 	int	i;
+@@ -1004,7 +1004,7 @@ gen_cue_sony(track_t *trackp, void *vcue
+ 	int	ncue = 0;
+ 	int	icue = 0;
+ 	int	pgsize;
+-	msf_t	m;
++	wodim_msf_t	m;
+ 	int	ctl;
+ 	int	df;
+ 	int	scms;
+@@ -1110,7 +1110,7 @@ fillcue(struct sony_cue *cp     /* The t
+         int idx                 /* Index for this entry */, 
+         int dataform            /* Data format for this entry */, 
+         int scms                /* Serial copy management */, 
+-        msf_t *mp               /* MSF value for this entry */)
++        wodim_msf_t *mp               /* MSF value for this entry */)
+ {
+ 	cp->cs_ctladr = ca;
+ 	if (tno <= 99)
+@@ -1126,7 +1126,7 @@ fillcue(struct sony_cue *cp     /* The t
+ }
+ 
+ static int
+-send_cue_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++send_cue_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	struct sony_cue *cp;
+ 	int		ncue;
+@@ -1169,7 +1169,7 @@ send_cue_sony(SCSI *usalp, cdr_t *dp, tr
+ }
+ 
+ static int
+-write_leadin_sony(SCSI *usalp, cdr_t *dp, track_t *trackp)
++write_leadin_sony(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	Uint	i;
+ 	long	startsec = 0L;
+diff -up cdiopara/wodim/fifo.c.wrk cdiopara/wodim/fifo.c
+--- cdiopara/wodim/fifo.c.wrk	2013-06-25 18:47:09.024350983 +0200
++++ cdiopara/wodim/fifo.c	2013-06-25 18:47:35.540614992 +0200
+@@ -194,15 +194,15 @@ static	char	*mkbeosshm(int size);
+ static	void	beosshm_child(void);
+ #endif
+ 
+-BOOL	init_faio(track_t *trackp, int);
++BOOL	init_faio(wodim_track_t *trackp, int);
+ BOOL	await_faio(void);
+ void	kill_faio(void);
+ int	wait_faio(void);
+-static	void	faio_reader(track_t *trackp);
+-static	void	faio_read_track(track_t *trackp);
++static	void	faio_reader(wodim_track_t *trackp);
++static	void	faio_read_track(wodim_track_t *trackp);
+ static	void	faio_wait_on_buffer(faio_t *f, fowner_t s, unsigned long delay,
+ 											  unsigned long max_wait);
+-static	int	faio_read_segment(int fd, faio_t *f, track_t *track, long secno, 
++static	int	faio_read_segment(int fd, faio_t *f, wodim_track_t *track, long secno, 
+ 											int len);
+ static	faio_t	*faio_ref(int n);
+ int	faio_read_buf(int f, char *bp, int size);
+@@ -425,7 +425,7 @@ static	BOOL	faio_didwait;
+ 
+ 
+ BOOL
+-init_faio(track_t *trackp, int bufsize)
++init_faio(wodim_track_t *trackp, int bufsize)
+ {
+ 	int	n;
+ 	faio_t	*f;
+@@ -582,7 +582,7 @@ wait_faio()
+ }
+ 
+ static void
+-faio_reader(track_t *trackp)
++faio_reader(wodim_track_t *trackp)
+ {
+ 	/* This function should not return, but _exit. */
+ 	Uint	trackno;
+@@ -623,7 +623,7 @@ faio_ref(int n)
+ 
+ 
+ static void
+-faio_read_track(track_t *trackp)
++faio_read_track(wodim_track_t *trackp)
+ {
+ 	int	fd = -1;
+ 	int	bytespt = trackp->secsize * trackp->secspt;
+@@ -704,7 +704,7 @@ faio_wait_on_buffer(faio_t *f, fowner_t
+ }
+ 
+ static int
+-faio_read_segment(int fd, faio_t *f, track_t *trackp, long secno, int len)
++faio_read_segment(int fd, faio_t *f, wodim_track_t *trackp, long secno, int len)
+ {
+ 	int l;
+ 
+@@ -821,7 +821,7 @@ fifo_percent(BOOL addone)
+ #include "wodim.h"
+ 
+ void	init_fifo(long);
+-BOOL	init_faio(track_t *track, int);
++BOOL	init_faio(wodim_track_t *track, int);
+ BOOL	await_faio(void);
+ void	kill_faio(void);
+ int	wait_faio(void);
+@@ -836,7 +836,7 @@ void init_fifo(long fs)
+ 	errmsgno(EX_BAD, "Fifo not supported.\n");
+ }
+ 
+-BOOL init_faio(track_t *track, 
++BOOL init_faio(wodim_track_t *track, 
+                int bufsize /* The size of a single transfer buffer */)
+ {
+ 	return (FALSE);
+diff -up cdiopara/wodim/movesect.c.wrk cdiopara/wodim/movesect.c
+--- cdiopara/wodim/movesect.c.wrk	2013-06-25 15:42:48.986166461 +0200
++++ cdiopara/wodim/movesect.c	2013-06-25 15:43:07.045269496 +0200
+@@ -37,7 +37,7 @@
+ #include "wodim.h"
+ #include "movesect.h"
+ 
+-void	scatter_secs(track_t *trackp, char *bp, int nsecs);
++void	scatter_secs(wodim_track_t *trackp, char *bp, int nsecs);
+ 
+ /*
+  * Scatter input sector size records over buffer to make them
+@@ -69,7 +69,7 @@ void	scatter_secs(track_t *trackp, char
+  *	Sector_0 must never be moved.
+  */
+ void
+-scatter_secs(track_t *trackp, char *bp, int nsecs)
++scatter_secs(wodim_track_t *trackp, char *bp, int nsecs)
+ {
+ 	char	*from;
+ 	char	*to;
+diff -up cdiopara/wodim/movesect.h.wrk cdiopara/wodim/movesect.h
+--- cdiopara/wodim/movesect.h.wrk	2013-06-25 15:42:19.921000633 +0200
++++ cdiopara/wodim/movesect.h	2013-06-25 15:42:35.156087555 +0200
+@@ -40,6 +40,6 @@
+ #define	fill2048(p, val)	fillbytes(p, 2048, val)
+ #define	fill96(p, val)		fillbytes(p, 96, val)
+ 
+-extern	void	scatter_secs(track_t *trackp, char *bp, int nsecs);
++extern	void	scatter_secs(wodim_track_t *trackp, char *bp, int nsecs);
+ 
+ #endif
+diff -up cdiopara/wodim/sector.c.wrk cdiopara/wodim/sector.c
+--- cdiopara/wodim/sector.c.wrk	2013-06-25 18:53:58.999549774 +0200
++++ cdiopara/wodim/sector.c	2013-06-25 18:54:25.509826416 +0200
+@@ -55,8 +55,8 @@
+ #endif
+ 
+ int	encspeed(BOOL be_verbose);
+-void	encsectors(track_t *trackp, Uchar *bp, int address, int nsecs);
+-void	scrsectors(track_t *trackp, Uchar *bp, int address, int nsecs);
++void	encsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs);
++void	scrsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs);
+ void	encodesector(Uchar *sp, int sectype, int address);
+ void	fillsector(Uchar *sp, int sectype, int address);
+ 
+@@ -105,7 +105,7 @@ void	fillsector(Uchar *sp, int sectype,
+ int
+ encspeed(BOOL be_verbose)
+ {
+-	track_t	t[1];
++	wodim_track_t	t[1];
+ 	Uchar	sect[2352];
+ 	int	i;
+ 	struct	timeval tv;
+@@ -141,7 +141,7 @@ encspeed(BOOL be_verbose)
+  * Encode sectors according to trackp->sectype
+  */
+ void
+-encsectors(track_t *trackp, Uchar *bp, int address, int nsecs)
++encsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	int	sectype = trackp->sectype;
+ 
+@@ -169,7 +169,7 @@ encsectors(track_t *trackp, Uchar *bp, i
+  * Scramble data sectors without coding (needed for clone writing)
+  */
+ void
+-scrsectors(track_t *trackp, Uchar *bp, int address, int nsecs)
++scrsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	/*
+ 	 * In Clone write mode, we cannot expect that the sector type
+@@ -187,7 +187,7 @@ scrsectors(track_t *trackp, Uchar *bp, i
+ }
+ #else
+ void
+-scrsectors(track_t *trackp, Uchar *bp, int address, int nsecs)
++scrsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	comerrno(EX_BAD, "Cannot write in clone RAW mode.\n");
+ }
+diff -up cdiopara/wodim/subchan.c.wrk cdiopara/wodim/subchan.c
+--- cdiopara/wodim/subchan.c.wrk	2013-06-27 15:23:49.864130939 +0200
++++ cdiopara/wodim/subchan.c	2013-06-27 15:24:59.699507721 +0200
+@@ -43,14 +43,14 @@
+ #include "wodim.h"
+ #include "crc16.h"
+ 
+-int	do_leadin(track_t *trackp);
+-int	write_leadin(SCSI *usalp, cdr_t *dp, track_t *trackp, int leadinstart);
+-int	write_leadout(SCSI *usalp, cdr_t *dp, track_t *trackp);
+-void	fillsubch(track_t *trackp, Uchar *sp, int secno, int nsecs);
+-void	filltpoint(Uchar *sub, int ctrl_adr, int point, msf_t *mp);
+-void	fillttime(Uchar *sub, msf_t *mp);
+-static	void	filldsubq(Uchar *sub, int ca, int t, int i, msf_t *mrp, 
+-								 msf_t *mp);
++int	do_leadin(wodim_track_t *trackp);
++int	write_leadin(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, int leadinstart);
++int	write_leadout(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
++void	fillsubch(wodim_track_t *trackp, Uchar *sp, int secno, int nsecs);
++void	filltpoint(Uchar *sub, int ctrl_adr, int point, wodim_msf_t *mp);
++void	fillttime(Uchar *sub, wodim_msf_t *mp);
++static	void	filldsubq(Uchar *sub, int ca, int t, int i, wodim_msf_t *mrp, 
++								 wodim_msf_t *mp);
+ static	void	fillmcn(Uchar *sub, Uchar *mcn);
+ static	void	fillisrc(Uchar *sub, Uchar *isrc);
+ static	int	ascii2q(int c);
+@@ -58,7 +58,7 @@ static	void	qpto16(Uchar *sub, Uchar *su
+ void	qpto96(Uchar *sub, Uchar *subq, int dop);
+ void	addrw(Uchar *sub, Uchar	*subrwptr);
+ void	qwto16(Uchar *subq, Uchar *subptr);
+-void	subrecodesecs(track_t *trackp, Uchar *bp, int address, int nsecs);
++void	subrecodesecs(wodim_track_t *trackp, Uchar *bp, int address, int nsecs);
+ static	void	subinterleave(Uchar *sub);
+ 
+ /*#define	TEST_CRC*/
+@@ -93,10 +93,10 @@ extern	int	xdebug;
+  * Prepare master sunchannel data for RAW TOC.
+  */
+ int
+-do_leadin(track_t *trackp)
++do_leadin(wodim_track_t *trackp)
+ {
+ 	int	tracks = trackp->tracks;
+-	msf_t	m;
++	wodim_msf_t	m;
+ 	int	ctrl;
+ 	int	i;
+ 	int	toctype = trackp[0].tracktype & TOC_MASK;
+@@ -183,9 +183,9 @@ do_leadin(track_t *trackp)
+  * subchannel frames for the lead-in.
+  */
+ int
+-write_leadin(SCSI *usalp, cdr_t *dp, track_t *trackp, int leadinstart)
++write_leadin(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, int leadinstart)
+ {
+-	msf_t	m;
++	wodim_msf_t	m;
+ 	int	i;
+ 	Uint	j;
+ 	Uchar	*bp = usalp->bufptr;
+@@ -198,7 +198,7 @@ write_leadin(SCSI *usalp, cdr_t *dp, tra
+ 	int	startsec;
+ 	long	bytes = 0L;
+ 	int	textoff = 0;
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 
+ 	secsize = trackp[0].secsize;
+ 	secspt = trackp[0].secspt;
+@@ -292,11 +292,11 @@ write_leadin(SCSI *usalp, cdr_t *dp, tra
+  * Write Track 0xAA (lead-out)
+  */
+ int
+-write_leadout(SCSI *usalp, cdr_t *dp, track_t *trackp)
++write_leadout(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	tracks = trackp->tracks;
+-	msf_t	m;
+-	msf_t	mr;
++	wodim_msf_t	m;
++	wodim_msf_t	mr;
+ 	int	ctrl;
+ 	int	i;
+ 	int	j;
+@@ -313,7 +313,7 @@ write_leadout(SCSI *usalp, cdr_t *dp, tr
+ 	int	leadoutstart;
+ 	Uchar	sub[12];
+ 	BOOL	p;
+-	msf_t	msf;
++	wodim_msf_t	msf;
+ 
+ 	fillbytes(sub, 12, '\0');
+ 
+@@ -397,13 +397,13 @@ write_leadout(SCSI *usalp, cdr_t *dp, tr
+  * the data part of a CD (bewteen lead-in and lead-out).
+  */
+ void
+-fillsubch(track_t *trackp, 
++fillsubch(wodim_track_t *trackp, 
+           Uchar *sp /* Sector data pointer  */, 
+           int secno /* Starting sector #    */, 
+           int nsecs /* # of sectors to fill */)
+ {
+-	msf_t	m;
+-	msf_t	mr;
++	wodim_msf_t	m;
++	wodim_msf_t	mr;
+ 	int	ctrl;
+ 	int	i;
+ 	int	rsecno;
+@@ -563,7 +563,7 @@ static	Uchar	lastindex = 255;
+  * Ax Werte einf�llen.
+  */
+ void
+-filltpoint(Uchar *sub, int ctrl_adr, int point, msf_t *mp)
++filltpoint(Uchar *sub, int ctrl_adr, int point, wodim_msf_t *mp)
+ {
+ 	sub[0] = ctrl_adr;
+ 	sub[2] = point;
+@@ -577,7 +577,7 @@ filltpoint(Uchar *sub, int ctrl_adr, int
+  * Aktuelle Zeit in TOC Sub-Q einf�llen.
+  */
+ void
+-fillttime(Uchar *sub, msf_t *mp)
++fillttime(Uchar *sub, wodim_msf_t *mp)
+ {
+ 	sub[3] = to_bcd(mp->msf_min);
+ 	sub[4] = to_bcd(mp->msf_sec);
+@@ -588,7 +588,7 @@ fillttime(Uchar *sub, msf_t *mp)
+  * Q-Sub in Datenbereich f�llen.
+  */
+ static void
+-filldsubq(Uchar *sub, int ca, int t, int i, msf_t *mrp, msf_t *mp)
++filldsubq(Uchar *sub, int ca, int t, int i, wodim_msf_t *mrp, wodim_msf_t *mp)
+ {
+ 	sub[0] = ca;
+ 	sub[1] = to_bcd(t);
+@@ -856,7 +856,7 @@ qwto16(Uchar *subq, Uchar *subptr)
+  * Recode subchannels of sectors from 2352 + 96 bytes to 2352 + 16 bytes
+  */
+ void
+-subrecodesecs(track_t *trackp, Uchar *bp, int address, int nsecs)
++subrecodesecs(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	bp += 2352;
+ 	while (--nsecs >= 0) {
+@@ -867,7 +867,7 @@ subrecodesecs(track_t *trackp, Uchar *bp
+ 
+ #ifndef	HAVE_LIB_EDC_ECC
+ void
+-encsectors(track_t *trackp, Uchar *bp, int address, int nsecs)
++encsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	int	sectype = trackp->sectype;
+ 
+@@ -878,7 +878,7 @@ encsectors(track_t *trackp, Uchar *bp, i
+ }
+ 
+ void
+-scrsectors(track_t *trackp, Uchar *bp, int address, int nsecs)
++scrsectors(wodim_track_t *trackp, Uchar *bp, int address, int nsecs)
+ {
+ 	comerrno(EX_BAD, "Cannot write in clone RAW mode.\n");
+ }
+diff -up cdiopara/wodim/wm_packet.c.wrk cdiopara/wodim/wm_packet.c
+--- cdiopara/wodim/wm_packet.c.wrk	2013-06-27 15:26:58.973141891 +0200
++++ cdiopara/wodim/wm_packet.c	2013-06-27 15:27:22.066263842 +0200
+@@ -51,10 +51,10 @@ extern	int	lverbose;
+ 
+ extern	char	*buf;			/* The transfer buffer */
+ 
+-int	write_packet_data(SCSI *usalp, cdr_t *dp, track_t *trackp);
++int	write_packet_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ 
+ int
+-write_packet_data(SCSI *usalp, cdr_t *dp, track_t *trackp)
++write_packet_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	track = trackp->trackno;
+ 	int	f = -1;
+diff -up cdiopara/wodim/wm_session.c.wrk cdiopara/wodim/wm_session.c
+--- cdiopara/wodim/wm_session.c.wrk	2013-06-27 15:29:40.932998275 +0200
++++ cdiopara/wodim/wm_session.c	2013-06-27 15:30:03.907119952 +0200
+@@ -48,4 +48,4 @@ extern	int	lverbose;
+ 
+ extern	char	*buf;			/* The transfer buffer */
+ 
+-int	write_session_data(SCSI *usalp, cdr_t *dp, track_t *trackp);
++int	write_session_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+diff -up cdiopara/wodim/wm_track.c.wrk cdiopara/wodim/wm_track.c
+--- cdiopara/wodim/wm_track.c.wrk	2013-06-27 15:28:45.701705951 +0200
++++ cdiopara/wodim/wm_track.c	2013-06-27 15:29:29.673938661 +0200
+@@ -47,4 +47,4 @@ extern	int	lverbose;
+ 
+ extern	char	*buf;			/* The transfer buffer */
+ 
+-int	write_track_data(cdr_t *dp, int track, track_t *trackp);
++int	write_track_data(cdr_t *dp, int track, wodim_track_t *trackp);
+diff -up cdiopara/wodim/wodim.c.wrk cdiopara/wodim/wodim.c
+--- cdiopara/wodim/wodim.c.wrk	2013-06-25 16:38:32.153811969 +0200
++++ cdiopara/wodim/wodim.c	2013-06-25 16:30:08.636892373 +0200
+@@ -205,31 +205,31 @@ static	void	intfifo(int sig);
+ static	void	exscsi(int excode, void *arg);
+ static	void	excdr(int excode, void *arg);
+ int	read_buf(int f, char *bp, int size);
+-int	fill_buf(int f, track_t *trackp, long secno, char *bp, int size);
+-int	get_buf(int f, track_t *trackp, long secno, char **bpp, int size);
++int	fill_buf(int f, wodim_track_t *trackp, long secno, char *bp, int size);
++int	get_buf(int f, wodim_track_t *trackp, long secno, char **bpp, int size);
+ int	write_secs(SCSI *usalp, cdr_t *dp, char *bp, long startsec, int bytespt,
+ 					  int secspt, BOOL islast);
+-static	int	write_track_data(SCSI *usalp, cdr_t *, track_t *);
+-int	pad_track(SCSI *usalp, cdr_t *dp, track_t *trackp, long startsec, 
++static	int	write_track_data(SCSI *usalp, cdr_t *, wodim_track_t *);
++int	pad_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, long startsec, 
+ 					 Llong amt, BOOL dolast, Llong *bytesp);
+-int	write_buf(SCSI *usalp, cdr_t *dp, track_t *trackp, char *bp, 
++int	write_buf(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, char *bp, 
+ 					 long startsec, Llong amt, int secsize, BOOL dolast, 
+ 					 Llong *bytesp);
+-static	void	printdata(int, track_t *);
+-static	void	printaudio(int, track_t *);
+-static	void	checkfile(int, track_t *);
+-static	int	checkfiles(int, track_t *);
+-static	void	setleadinout(int, track_t *);
+-static	void	setpregaps(int, track_t *);
+-static	long	checktsize(int, track_t *);
+-static	void	opentracks(track_t *);
+-static	void	checksize(track_t *);
++static	void	printdata(int, wodim_track_t *);
++static	void	printaudio(int, wodim_track_t *);
++static	void	checkfile(int, wodim_track_t *);
++static	int	checkfiles(int, wodim_track_t *);
++static	void	setleadinout(int, wodim_track_t *);
++static	void	setpregaps(int, wodim_track_t *);
++static	long	checktsize(int, wodim_track_t *);
++static	void	opentracks(wodim_track_t *);
++static	void	checksize(wodim_track_t *);
+ static	BOOL	checkdsize(SCSI *usalp, cdr_t *dp, long tsize, int flags);
+ static	void	raise_fdlim(void);
+ static	void	raise_memlock(void);
+-static	int	gargs(int, char **, int *, track_t *, char **, int *, cdr_t **,
++static	int	gargs(int, char **, int *, wodim_track_t *, char **, int *, cdr_t **,
+ 							int *, long *, int *, int *);
+-static	void	set_trsizes(cdr_t *, int, track_t *);
++static	void	set_trsizes(cdr_t *, int, wodim_track_t *);
+ void		load_media(SCSI *usalp, cdr_t *, BOOL);
+ void		unload_media(SCSI *usalp, cdr_t *, int);
+ void		reload_media(SCSI *usalp, cdr_t *);
+@@ -287,7 +287,7 @@ int main(int argc, char *argv[])
+ 	int	tracks = 0;
+ 	int	trackno;
+ 	long	tsize;
+-	track_t	track[MAX_TRACK+2];	/* Max tracks + track 0 + track AA */
++	wodim_track_t	track[MAX_TRACK+2];	/* Max tracks + track 0 + track AA */
+ 	cdr_t	*dp = (cdr_t *)0;
+ 	long	startsec = 0L;
+ 	int	errs = 0;
+@@ -1860,7 +1860,7 @@ read_buf(int f, char *bp, int size)
+ }
+ 
+ int 
+-fill_buf(int f, track_t *trackp, long secno, char *bp, int size)
++fill_buf(int f, wodim_track_t *trackp, long secno, char *bp, int size)
+ {
+ 	int	amount = 0;
+ 	int	nsecs;
+@@ -1936,7 +1936,7 @@ fill_buf(int f, track_t *trackp, long se
+ }
+ 
+ int 
+-get_buf(int f, track_t *trackp, long secno, char **bpp, int size)
++get_buf(int f, wodim_track_t *trackp, long secno, char **bpp, int size)
+ {
+ 	if (fs > 0) {
+ /*		return (faio_read_buf(f, *bpp, size));*/
+@@ -1987,7 +1987,7 @@ again:
+ }
+ 
+ static int 
+-write_track_data(SCSI *usalp, cdr_t *dp, track_t *trackp)
++write_track_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp)
+ {
+ 	int	track = trackp->trackno;
+ 	int	f = -1;
+@@ -2270,7 +2270,7 @@ int oper = -1;
+ }
+ 
+ int 
+-pad_track(SCSI *usalp, cdr_t	*dp, track_t *trackp, long startsec, Llong amt,
++pad_track(SCSI *usalp, cdr_t	*dp, wodim_track_t *trackp, long startsec, Llong amt,
+ 				BOOL dolast, Llong *bytesp)
+ {
+ 	int	track = trackp->trackno;
+@@ -2404,7 +2404,7 @@ int oper = -1;
+ 
+ #ifdef	USE_WRITE_BUF
+ int 
+-write_buf(SCSI *usalp, cdr_t *dp, track_t *trackp, char *bp, long startsec, 
++write_buf(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, char *bp, long startsec, 
+         	  Llong amt, int secsize, BOOL dolast, Llong *bytesp)
+ {
+ 	int	track = trackp->trackno;
+@@ -2467,7 +2467,7 @@ write_buf(SCSI *usalp, cdr_t *dp, track_
+ #endif	/* USE_WRITE_BUF */
+ 
+ static void 
+-printdata(int track, track_t *trackp)
++printdata(int track, wodim_track_t *trackp)
+ {
+ 	if (trackp->itracksize >= 0) {
+ 		printf("Track %02d: data  %4lld MB        ",
+@@ -2494,7 +2494,7 @@ printdata(int track, track_t *trackp)
+ }
+ 
+ static void 
+-printaudio(int track, track_t *trackp)
++printaudio(int track, wodim_track_t *trackp)
+ {
+ 	if (trackp->itracksize >= 0) {
+ 		printf("Track %02d: audio %4lld MB (%02d:%02d.%02d) %spreemp%s%s",
+@@ -2542,7 +2542,7 @@ printaudio(int track, track_t *trackp)
+ }
+ 
+ static void 
+-checkfile(int track, track_t *trackp)
++checkfile(int track, wodim_track_t *trackp)
+ {
+ 	if (trackp->itracksize > 0 &&
+ 			is_audio(trackp) &&
+@@ -2571,7 +2571,7 @@ checkfile(int track, track_t *trackp)
+ }
+ 
+ static int 
+-checkfiles(int tracks, track_t *trackp)
++checkfiles(int tracks, wodim_track_t *trackp)
+ {
+ 	int	i;
+ 	int	isaudio = 1;
+@@ -2596,7 +2596,7 @@ checkfiles(int tracks, track_t *trackp)
+ }
+ 
+ static void 
+-setleadinout(int tracks, track_t *trackp)
++setleadinout(int tracks, wodim_track_t *trackp)
+ {
+ 	/*
+ 	 * Set some values for track 0 (the lead-in)
+@@ -2631,12 +2631,12 @@ setleadinout(int tracks, track_t *trackp
+ }
+ 
+ static void 
+-setpregaps(int tracks, track_t *trackp)
++setpregaps(int tracks, wodim_track_t *trackp)
+ {
+ 	int	i;
+ 	int	sectype;
+ 	long	pregapsize;
+-	track_t	*tp;
++	wodim_track_t	*tp;
+ 
+ 	sectype = trackp[1].sectype;
+ 	sectype &= ST_MASK;
+@@ -2674,13 +2674,13 @@ setpregaps(int tracks, track_t *trackp)
+  * Check total size of the medium
+  */
+ static long 
+-checktsize(int tracks, track_t *trackp)
++checktsize(int tracks, wodim_track_t *trackp)
+ {
+ 	int	i;
+ 	Llong	curr;
+ 	Llong	total = -150;	/* CD track #1 pregap compensation */
+ 	Ullong	btotal;
+-	track_t	*tp;
++	wodim_track_t	*tp;
+ 
+ 	if (trackp->flags & TI_DVD)
+ 		total = 0;
+@@ -2751,9 +2751,9 @@ checktsize(int tracks, track_t *trackp)
+ }
+ 
+ static void 
+-opentracks(track_t *trackp)
++opentracks(wodim_track_t *trackp)
+ {
+-	track_t	*tp;
++	wodim_track_t	*tp;
+ 	int	i;
+ 	int	tracks = trackp[0].tracks;
+ 
+@@ -2825,7 +2825,7 @@ opentracks(track_t *trackp)
+ }
+ 
+ static void 
+-checksize(track_t *trackp)
++checksize(wodim_track_t *trackp)
+ {
+ 	struct stat	st;
+ 	Llong		lsize;
+@@ -2890,7 +2890,7 @@ checkdsize(SCSI *usalp, cdr_t *dp, long
+ 	int	profile;
+ 
+ 	usalp->silent++;
+-	(*dp->cdr_next_wr_address)(usalp, (track_t *)0, &startsec);
++	(*dp->cdr_next_wr_address)(usalp, (wodim_track_t *)0, &startsec);
+ 	usalp->silent--;
+ 
+ 	/*
+@@ -3098,7 +3098,7 @@ char	*opts =
+ #define	M_RAW		4	/* Raw mode */
+ #define	M_PACKET	8	/* Packed mode */
+ static int 
+-gargs(int ac, char **av, int *tracksp, track_t *trackp, char **devp, 
++gargs(int ac, char **av, int *tracksp, wodim_track_t *trackp, char **devp, 
+ 		int *timeoutp, cdr_t **dpp, int *speedp, long *flagsp, int *blankp, 
+ 		int *formatp)
+ {
+@@ -3809,7 +3809,7 @@ gargs(int ac, char **av, int *tracksp, t
+ }
+ 
+ static void 
+-set_trsizes(cdr_t *dp, int tracks, track_t *trackp)
++set_trsizes(cdr_t *dp, int tracks, wodim_track_t *trackp)
+ {
+ 	int	i;
+ 	int	secsize;
+@@ -4110,7 +4110,7 @@ print_msinfo(SCSI *usalp, cdr_t *dp)
+ 	if (lverbose)
+ 		printf("session offset: %ld\n", off);
+ 
+-	if (dp->cdr_next_wr_address(usalp, (track_t *)0, &fa) < 0) {
++	if (dp->cdr_next_wr_address(usalp, (wodim_track_t *)0, &fa) < 0) {
+ 		errmsgno(EX_BAD, "Cannot read first writable address\n");
+ 		return;
+ 	}
+diff -up cdiopara/wodim/wodim.h.wrk cdiopara/wodim/wodim.h
+--- cdiopara/wodim/wodim.h.wrk	2013-06-25 15:07:16.550727303 +0200
++++ cdiopara/wodim/wodim.h	2013-06-25 16:57:07.110050011 +0200
+@@ -186,7 +186,9 @@ typedef struct track {
+ 	long	*tindex;	/* Track index descriptor		*/
+ 	char	*isrc;		/* ISRC code for this track / disk MCN	*/
+ 	void	*text;		/* Opaque CD-Text data (txtptr_t *)	*/
+-} track_t;
++} wodim_track_t;
++
++#define track_t taka_neexistuje
+ 
+ #define	track_base(tp)	((tp) - (tp)->track)
+ 
+@@ -515,8 +517,9 @@ typedef struct msf {
+ 	char	msf_min;
+ 	char	msf_sec;
+ 	char	msf_frame;
+-} msf_t;
++} wodim_msf_t;
+ 
++#define msf_t nahradzuj_msf
+ /*
+  * Definitions for read TOC/PMA/ATIP command
+  */
+@@ -673,7 +676,7 @@ struct disk_status {
+  *	cdr_open_session()
+  *	cdr_fixate()
+  *
+- * Called with (track_t *) 0 or pointer to current track:
++ * Called with (wodim_track_t *) 0 or pointer to current track:
+  *	cdr_next_wr_address()
+  *
+  * Called with pointer to current track:
+@@ -751,23 +754,23 @@ struct cdr_cmd {
+ 	/* set sector size */
+ 	int	(*cdr_set_secsize)(SCSI *usalp, int secsize);
+ 	/* get next writable addr. */
+-	int	(*cdr_next_wr_address)(SCSI *usalp, track_t *trackp, long *ap);
++	int	(*cdr_next_wr_address)(SCSI *usalp, wodim_track_t *trackp, long *ap);
+ 	/* reserve track for future use */
+ 	int	(*cdr_reserve_track)(SCSI *usalp, Ulong len);
+ 	int	(*cdr_write_trackdata)(SCSI *usalp, caddr_t buf, long daddr, long bytecnt, 
+ 										  int seccnt, BOOL islast);
+ 	/* generate cue sheet */
+-	int	(*cdr_gen_cue)(track_t *trackp, void *cuep, BOOL needgap);
++	int	(*cdr_gen_cue)(wodim_track_t *trackp, void *cuep, BOOL needgap);
+ 	/* send cue sheet */
+-	int	(*cdr_send_cue)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_send_cue)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* write leadin */
+-	int	(*cdr_write_leadin)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_write_leadin)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* open new track */
+-	int	(*cdr_open_track)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_open_track)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* close written track */
+-	int	(*cdr_close_track)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_close_track)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* open new session */
+-	int	(*cdr_open_session)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_open_session)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* really needed ??? */
+ 	int	(*cdr_close_session)(SCSI *usalp, cdr_t *);
+ 	/* abort current write */
+@@ -775,7 +778,7 @@ struct cdr_cmd {
+ 	/* read session offset*/
+ 	int	(*cdr_session_offset)(SCSI *usalp, long *soff);
+ 	/* write toc on disk */
+-	int	(*cdr_fixate)(SCSI *usalp, cdr_t *, track_t *trackp);
++	int	(*cdr_fixate)(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ 	/* final statistics printing*/
+ 	int	(*cdr_stats)(SCSI *usalp, cdr_t *);
+ 	/* blank something */
+@@ -849,12 +852,12 @@ struct cdr_cmd {
+  * cdrecord.c
+  */
+ extern	int	read_buf(int f, char *bp, int size);
+-extern	int	fill_buf(int f, track_t *trackp, long secno, char *bp, int size);
+-extern	int	get_buf(int f, track_t *trackp, long secno, char **bpp, int size);
++extern	int	fill_buf(int f, wodim_track_t *trackp, long secno, char *bp, int size);
++extern	int	get_buf(int f, wodim_track_t *trackp, long secno, char **bpp, int size);
+ #ifdef	_SCG_SCSITRANSP_H
+ extern	int	write_secs(SCSI *usalp, cdr_t *dp, char *bp, long startsec, 
+ 								  int bytespt, int secspt, BOOL islast);
+-extern	int	pad_track(SCSI *usalp, cdr_t *dp, track_t *trackp,
++extern	int	pad_track(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp,
+ 								 long startsec, Llong amt,
+ 								 BOOL dolast, Llong *bytesp);
+ extern	void	load_media(SCSI *usalp, cdr_t *, BOOL);
+@@ -870,15 +873,15 @@ extern	int	getnum(char *arg, long *valp)
+ extern	int	from_bcd(int b);
+ extern	int	to_bcd(int i);
+ extern	long	msf_to_lba(int m, int s, int f, BOOL force_positive);
+-extern	BOOL	lba_to_msf(long lba, msf_t *mp);
+-extern	void	sec_to_msf(long sec, msf_t *mp);
++extern	BOOL	lba_to_msf(long lba, wodim_msf_t *mp);
++extern	void	sec_to_msf(long sec, wodim_msf_t *mp);
+ extern	void	print_min_atip(long li, long lo);
+ 
+ /*
+  * fifo.c
+  */
+ extern	void	init_fifo(long);
+-extern	BOOL	init_faio(track_t *track, int);
++extern	BOOL	init_faio(wodim_track_t *track, int);
+ extern	BOOL	await_faio(void);
+ extern	void	kill_faio(void);
+ extern	int	wait_faio(void);
+@@ -891,21 +894,21 @@ extern	int	fifo_percent(BOOL addone);
+  * wm_session.c
+  */
+ #ifdef	_SCG_SCSITRANSP_H
+-extern	int	write_session_data(SCSI *usalp, cdr_t *dp, track_t *trackp);
++extern	int	write_session_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ #endif
+ 
+ /*
+  * wm_track.c
+  */
+ #ifdef	_SCG_SCSITRANSP_H
+-/*extern	int	write_track_data __PR((SCSI *usalp, cdr_t *dp, track_t *trackp));*/
++/*extern	int	write_track_data __PR((SCSI *usalp, cdr_t *dp, wodim_track_t *trackp));*/
+ #endif
+ 
+ /*
+  * wm_packet.c
+  */
+ #ifdef	_SCG_SCSITRANSP_H
+-extern	int	write_packet_data(SCSI *usalp, cdr_t *dp, track_t *trackp);
++extern	int	write_packet_data(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ #endif
+ 
+ /*
+@@ -1103,7 +1106,7 @@ int	format_dummy(SCSI *usalp, cdr_t *, i
+ extern	int	drive_getdisktype(SCSI *usalp, cdr_t *dp);
+ extern	int	cmd_ill(SCSI *usalp);
+ extern	int	cmd_dummy(SCSI *usalp, cdr_t *);
+-extern	int	no_sendcue(SCSI *usalp, cdr_t *, track_t *trackp);
++extern	int	no_sendcue(SCSI *usalp, cdr_t *, wodim_track_t *trackp);
+ extern	int	buf_dummy(SCSI *usalp, long *sp, long *fp);
+ #endif
+ extern	BOOL	set_cdrcmds(char *name, cdr_t **dpp);
+@@ -1137,68 +1140,68 @@ extern	off_t	wavsize(int f);
+ /*
+  * auinfo.c
+  */
+-extern	BOOL	auinfosize(char *name, track_t *trackp);
+-extern	void	auinfo(char *name, int track, track_t *trackp);
++extern	BOOL	auinfosize(char *name, wodim_track_t *trackp);
++extern	void	auinfo(char *name, int track, wodim_track_t *trackp);
+ #ifdef CDTEXT_H
+-extern	textptr_t *gettextptr(int track, track_t *trackp);
++extern	textptr_t *gettextptr(int track, wodim_track_t *trackp);
+ #endif
+-extern	void	setmcn(char *mcn, track_t *trackp);
+-extern	void	setisrc(char *isrc, track_t *trackp);
+-extern	void	setindex(char *tindex, track_t *trackp);
++extern	void	setmcn(char *mcn, wodim_track_t *trackp);
++extern	void	setisrc(char *isrc, wodim_track_t *trackp);
++extern	void	setindex(char *tindex, wodim_track_t *trackp);
+ 
+ /*
+  * diskid.c
+  */
+-extern	void	pr_manufacturer(msf_t *mp, BOOL rw, BOOL audio);
+-extern	int	manufacturer_id(msf_t *mp);
+-extern	long	disk_rcap(msf_t *mp, long maxblock, BOOL rw, BOOL audio);
++extern	void	pr_manufacturer(wodim_msf_t *mp, BOOL rw, BOOL audio);
++extern	int	manufacturer_id(wodim_msf_t *mp);
++extern	long	disk_rcap(wodim_msf_t *mp, long maxblock, BOOL rw, BOOL audio);
+ 
+ /*--------------------------------------------------------------------------*/
+ /* Test only								    */
+ /*--------------------------------------------------------------------------*/
+ #ifdef _SCSIMMC_H
+-/*extern	int	do_cue		__PR((track_t *trackp, struct mmc_cue **cuep));*/
++/*extern	int	do_cue		__PR((wodim_track_t *trackp, struct mmc_cue **cuep));*/
+ #else
+-/*extern	int	do_cue		__PR((track_t *trackp, void *cuep));*/
++/*extern	int	do_cue		__PR((wodim_track_t *trackp, void *cuep));*/
+ #endif
+ 
+ /*
+  * subchan.c
+  */
+-extern	int	do_leadin(track_t *trackp);
++extern	int	do_leadin(wodim_track_t *trackp);
+ #ifdef	_SCG_SCSITRANSP_H
+-extern	int	write_leadin(SCSI *usalp, cdr_t *dp, track_t *trackp, 
++extern	int	write_leadin(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp, 
+ 									 int leadinstart);
+-extern	int	write_leadout(SCSI *usalp, cdr_t *dp, track_t *trackp);
++extern	int	write_leadout(SCSI *usalp, cdr_t *dp, wodim_track_t *trackp);
+ #endif
+-extern	void	fillsubch(track_t *trackp, Uchar *sp, int secno, int nsecs);
+-extern	void	filltpoint(Uchar *sub, int ctrl_adr, int point, msf_t *mp);
+-extern	void	fillttime(Uchar *sub, msf_t *mp);
++extern	void	fillsubch(wodim_track_t *trackp, Uchar *sp, int secno, int nsecs);
++extern	void	filltpoint(Uchar *sub, int ctrl_adr, int point, wodim_msf_t *mp);
++extern	void	fillttime(Uchar *sub, wodim_msf_t *mp);
+ extern	void	qpto96(Uchar *sub, Uchar *subq, int dop);
<Skipped 870 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/cdrkit.git/commitdiff/d304e2067ede8405664f205dd20c6aa8b6ed4c8f




More information about the pld-cvs-commit mailing list