Hello.
Please, could you apply attached patch to add support
also for GNU/kFreeBSD = FreeBSD based kernel + glibc based userland.
The patch mainly changes defined (__FreeBSD__) into
defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
It is not possible i.e. to have include/config.h cause __FreeBSD__ to
be defined if __FreeBSD_kernel__ is defined, because
macro __FreeBSD_kernel__ signals kernel is FreeBSD based,
but macro __FreeBSD__ signals both kernel and userspace is FreeBSD based.
This is also reason, why some defined (__FreeBSD__) are not changed.
The implication is in the opposite way, i.e it could be possible
to have in include/config.h:
#if defined (__FreeBSD__) !defined (__FreeBSD_kernel__)
#define __FreeBSD_kernel__ __FreeBSD__
#endif
and the changes would be defined (__FreeBSD__) into
defined (__FreeBSD_kernel__). The same relationship is also
between __FreeBSD_version and __FreeBSD_kernel_version.
Petr
P.S.
Please CC: me on replies, I am not subscribed.only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/video_out/libdha/ports.c
+++ xine-lib-1.1.8/src/video_out/libdha/ports.c
@@ -69,7 +69,7 @@
/* OS depended stuff */
#if defined (linux)
#include sysdep/pci_linux.c
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
#include sysdep/pci_freebsd.c
#elif defined (__386BSD__)
#include sysdep/pci_386bsd.c
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/input/input_cdda.c
+++ xine-lib-1.1.8/src/input/input_cdda.c
@@ -614,7 +614,7 @@
return 0;
}
-#elif defined(__FreeBSD__) || defined(__NetBSD__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ||
defined(__NetBSD__)
#include sys/cdio.h
@@ -625,7 +625,7 @@
static int read_cdrom_toc(int fd, cdrom_toc *toc) {
struct ioc_toc_header tochdr;
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
struct ioc_read_toc_single_entry tocentry;
#elif defined(__NetBSD__)
struct ioc_read_toc_entry tocentry;
@@ -656,7 +656,7 @@
memset(tocentry, 0, sizeof(tocentry));
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
tocentry.track = i;
tocentry.address_format = CD_MSF_FORMAT;
if (ioctl(fd, CDIOREADTOCENTRY, tocentry) == -1) {
@@ -675,7 +675,7 @@
}
#endif
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
toc-toc_entries[i-1].track_mode = (tocentry.entry.control 0x04) ? 1 : 0;
toc-toc_entries[i-1].first_frame_minute = tocentry.entry.addr.msf.minute;
toc-toc_entries[i-1].first_frame_second = tocentry.entry.addr.msf.second;
@@ -699,7 +699,7 @@
/* fetch the leadout as well */
memset(tocentry, 0, sizeof(tocentry));
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
tocentry.track = CD_LEADOUT_TRACK;
tocentry.address_format = CD_MSF_FORMAT;
if (ioctl(fd, CDIOREADTOCENTRY, tocentry) == -1) {
@@ -718,7 +718,7 @@
}
#endif
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
toc-leadout_track.track_mode = (tocentry.entry.control 0x04) ? 1 : 0;
toc-leadout_track.first_frame_minute = tocentry.entry.addr.msf.minute;
toc-leadout_track.first_frame_second = tocentry.entry.addr.msf.second;
@@ -747,8 +747,8 @@
int fd = this_gen-fd;
while( num_frames ) {
-#if defined(__FreeBSD__)
-#if __FreeBSD_version 501106
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if (__FreeBSD_version 501106) (__FreeBSD_kernel_version 501106)
struct ioc_read_audio cdda;
cdda.address_format = CD_MSF_FORMAT;
@@ -757,13 +757,10 @@
cdda.address.msf.frame = frame % CD_FRAMES_PER_SECOND;
cdda.nframes = 1;
cdda.buffer = data;
-#endif
-
-#if __FreeBSD_version = 501106
-if (pread(fd, data, CD_RAW_FRAME_SIZE, frame * CD_RAW_FRAME_SIZE) !=
CD_RAW_FRAME_SIZE) {
-#else
/* read a frame */
if(ioctl(fd, CDIOCREADAUDIO, cdda) 0) {
+#else
+if (pread(fd, data, CD_RAW_FRAME_SIZE, frame * CD_RAW_FRAME_SIZE) !=
CD_RAW_FRAME_SIZE) {
#endif
perror(CDIOCREADAUDIO);
return -1;
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/input/media_helper.c
+++ xine-lib-1.1.8/src/input/media_helper.c
@@ -36,7 +36,7 @@
#include unistd.h
#include string.h
-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) ||
defined(__FreeBSD_kernel__)
#include sys/cdio.h /* CDIOCALLOW etc... */
#elif defined(HAVE_LINUX_CDROM_H)
#include linux/cdrom.h
@@ -130,7 +130,7 @@
return 0;
}
-#elif defined (__NetBSD__) || defined (__OpenBSD__) || defined (__FreeBSD__)
+#elif defined (__NetBSD__) || defined (__OpenBSD__) || defined (__FreeBSD__)
|| defined (__FreeBSD_kernel__)
if (ioctl(fd, CDIOCALLOW) == -1) {
xprintf(xine, XINE_VERBOSITY_DEBUG, ioctl(cdromallow): %s\n,
strerror(errno));
only in patch2:
unchanged:
---