openbsd-ports/x11/kde/multimedia3/patches/patch-kaudiocreator_cdconfigimp_cpp
espie 5ab3c901e1 Update to kde 3.1.2 (requires recent autoconf).
Fix some build issues, mainly in kdebindings and kdemultimedia.
2003-06-12 19:16:15 +00:00

60 lines
2.1 KiB
Plaintext

$OpenBSD: patch-kaudiocreator_cdconfigimp_cpp,v 1.2 2003/06/12 19:16:16 espie Exp $
--- kaudiocreator/cdconfigimp.cpp.orig Wed May 7 13:46:47 2003
+++ kaudiocreator/cdconfigimp.cpp Wed Jun 11 09:17:09 2003
@@ -75,12 +75,19 @@ extern "C"
{
/* This is in support for the Mega Hack, if cdparanoia ever is fixed, or we
use another ripping library we can remove this. */
+#ifdef __linux__
#include <linux/cdrom.h>
+#endif
#include <sys/ioctl.h>
}
#endif
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+#include <sys/ioctl.h>
+#include <sys/cdio.h>
+#endif
+
#include <kdebug.h>
#include <kurl.h>
#include <kprotocolmanager.h>
@@ -138,14 +145,24 @@ int FixupTOC(cdrom_drive *d, int tracks)
start_of_first_data_as_in_toc = -1;
hack_track = -1;
if (d->ioctl_fd != -1) {
+#ifdef __linux__
struct cdrom_multisession ms_str;
ms_str.addr_format = CDROM_LBA;
if (ioctl(d->ioctl_fd, CDROMMULTISESSION, &ms_str) == -1)
return -1;
- if (ms_str.addr.lba > 100) {
+#define ms_addr (ms_str.addr.lba)
+#endif
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ int ms_addr;
+ ms_addr = 0; /* last session */
+ if (ioctl(d->ioctl_fd, CDIOREADMSADDR, &ms_addr) == -1)
+ return -1;
+#endif
+
+ if (ms_addr > 100) {
for (j = tracks-1; j >= 0; j--)
if (j > 0 && !IS_AUDIO(d,j) && IS_AUDIO(d,j-1)) {
- if (d->disc_toc[j].dwStartSector > ms_str.addr.lba - 11400) {
+ if (d->disc_toc[j].dwStartSector > ms_addr - 11400) {
/* The next two code lines are the purpose of duplicating this
* function, all others are an exact copy of paranoias FixupTOC().
* The gory details: CD-Extra consist of N audio-tracks in the
@@ -166,7 +183,7 @@ int FixupTOC(cdrom_drive *d, int tracks)
* length is only implicitely given. Bloody sh*. */
start_of_first_data_as_in_toc = d->disc_toc[j].dwStartSector;
hack_track = j + 1;
- d->disc_toc[j].dwStartSector = ms_str.addr.lba - 11400;
+ d->disc_toc[j].dwStartSector = ms_addr - 11400;
}
break;
}