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:
--- xine-lib-1.1.8.orig/src/input/libdvdnav/dvd_reader.c
+++ xine-lib-1.1.8/src/input/libdvdnav/dvd_reader.c
@@ -58,7 +58,7 @@
 #define lseek64 _lseeki64
 #endif
  
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || 
defined(__bsdi__)|| defined(__DARWIN__)
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || 
defined(__bsdi__)|| defined(__DARWIN__) || defined (__FreeBSD_kernel__)
 #define SYS_BSD 1
 #endif
 
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/input/vcd/libcdio/FreeBSD/freebsd.c
+++ xine-lib-1.1.8/src/input/vcd/libcdio/FreeBSD/freebsd.c
@@ -29,6 +29,7 @@
 
 static const char _rcsid[] = "$Id: freebsd.c,v 1.1 2005/01/01 02:43:57 rockyb 
Exp $";
 
+#include <arpa/inet.h>
 #include "freebsd.h"
 
 #ifdef HAVE_FREEBSD_CDROM
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/input/vcd/libcdio/FreeBSD/freebsd.h
+++ xine-lib-1.1.8/src/input/vcd/libcdio/FreeBSD/freebsd.h
@@ -78,7 +78,7 @@
 #include <sys/ioctl.h>
 #include <sys/param.h> /* for __FreeBSD_version */
 
-#if __FreeBSD_version < 500000
+#if (__FreeBSD_version < 500000) && (__FreeBSD_kernel_version < 500000)
 #define DEVICE_POSTFIX "c"
 #else
 #define DEVICE_POSTFIX ""
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/input/input_vcd.c
+++ xine-lib-1.1.8/src/input/input_vcd.c
@@ -40,7 +40,7 @@
 #ifdef HAVE_SYS_CDIO_H
 # include <sys/cdio.h>
 /* TODO: not clean yet */
-# if defined (__FreeBSD__)
+# if defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 #  include <sys/cdrio.h>
 # endif
 #endif
@@ -95,7 +95,7 @@
 #if defined (__linux__) || defined(__sun)
   struct cdrom_tochdr    tochdr;
   struct cdrom_tocentry  tocent[100];
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
   struct ioc_toc_header  tochdr;
   struct cd_toc_entry    *tocent;
   off_t                  cur_sec;
@@ -120,7 +120,7 @@
 
   int                    cur_track;
 
-#if defined (__linux__) || defined(__sun) || defined(__FreeBSD__)
+#if defined (__linux__) || defined(__sun) || defined(__FreeBSD__) || defined 
(__FreeBSD_kernel__)
   uint8_t                cur_min, cur_sec, cur_frame;
 #endif
 
@@ -180,7 +180,7 @@
 
   return 0;
 }
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 static int input_vcd_read_toc (vcd_input_class_t *this, int fd) {
 
   struct ioc_read_toc_entry te;
@@ -396,7 +396,7 @@
   memcpy (buf, data.data, VCDSECTORSIZE); /* FIXME */
   return VCDSECTORSIZE;
 }
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 static off_t vcd_plugin_read (input_plugin_t *this_gen, 
                                char *buf, off_t nlen) {
   vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen;
@@ -534,7 +534,7 @@
   memcpy (buf->mem, data.data, VCDSECTORSIZE); /* FIXME */
   return buf;
 }
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 static buf_element_t *vcd_plugin_read_block (input_plugin_t *this_gen, 
                                             fifo_buffer_t *fifo, off_t nlen) {
   
@@ -693,7 +693,7 @@
 
   return offset ; /* FIXME */
 }
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 static off_t vcd_plugin_seek (input_plugin_t *this_gen, 
                                off_t offset, int origin) {
 
@@ -767,7 +767,7 @@
 
   return (off_t) 0;
 }
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 static off_t vcd_plugin_get_length (input_plugin_t *this_gen) {
   vcd_input_plugin_t *this = (vcd_input_plugin_t *) this_gen;
   off_t len ;
@@ -862,7 +862,7 @@
   this->cur_min   = this->cls->tocent[this->cur_track].cdte_addr.msf.minute;
   this->cur_sec   = this->cls->tocent[this->cur_track].cdte_addr.msf.second;
   this->cur_frame = this->cls->tocent[this->cur_track].cdte_addr.msf.frame;
-#elif defined (__FreeBSD__)
+#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
   {
     int bsize = 2352;
     if (ioctl (this->fd, CDRIOCSETBLOCKSIZE, &bsize) == -1) {
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/libw32dll/wine/win32.c
+++ xine-lib-1.1.8/src/libw32dll/wine/win32.c
@@ -894,7 +894,7 @@
     /* FIXME: better values for the two entries below... */
     static int cache = 0;
     static SYSTEM_INFO cachedsi;
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__) || 
defined (__FreeBSD_kernel__)
     unsigned int regs[4];
 #endif
     dbgprintf("GetSystemInfo(%p) =>\n", si);
@@ -958,7 +958,7 @@
 
 /* disable cpuid based detection (mplayer's cpudetect.c does this - see above) 
*/
 #ifndef MPLAYER
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__svr4__) || 
defined (__FreeBSD_kernel__)
     do_cpuid(1, regs);
     switch ((regs[0] >> 8) & 0xf) {                    // cpu family
     case 3: cachedsi.dwProcessorType = PROCESSOR_INTEL_386;
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/libw32dll/wine/ldt_keeper.c
+++ xine-lib-1.1.8/src/libw32dll/wine/ldt_keeper.c
@@ -81,7 +81,7 @@
 }
 #endif
 #else
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || 
defined(__FreeBSD_kernel__)
 #include <machine/segments.h>
 #include <machine/sysarch.h>
 #endif
@@ -156,7 +156,7 @@
 
 void Check_FS_Segment(ldt_fs_t *ldt_fs)
 {
-#if defined(__FreeBSD__) && defined(LDT_AUTO_ALLOC)
+#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && 
defined(LDT_AUTO_ALLOC)
     int fs;
      __asm__ __volatile__(
        "movw %%fs,%%ax; mov %%eax,%0" : "=r" (fs) :: "%eax"
@@ -174,7 +174,7 @@
 #endif
 }
 
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || 
defined(__FreeBSD_kernel__)
 static void LDT_EntryToBytes( unsigned long *buffer, const struct 
modify_ldt_ldt_s *content )
 {
     *buffer++ = ((content->base_addr & 0x0000ffff) << 16) |
@@ -205,12 +205,12 @@
     }
 #endif /*linux*/
 
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || 
defined(__FreeBSD_kernel__)
     {
         unsigned long d[2];
 
         LDT_EntryToBytes( d, &array );
-#if defined(__FreeBSD__) && defined(LDT_AUTO_ALLOC)
+#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && 
defined(LDT_AUTO_ALLOC)
         ret = i386_set_ldt(LDT_AUTO_ALLOC, (union descriptor *)d, 1);
         array.entry_number = ret;
         ldt_fs->teb_sel = LDT_SEL(ret);
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/xine-engine/xine_interface.c
+++ xine-lib-1.1.8/src/xine-engine/xine_interface.c
@@ -35,7 +35,7 @@
 #include <stdlib.h>
 #include <pthread.h>
 #include <stdarg.h>
-#if defined (__linux__)
+#if defined (__linux__) || defined (__GLIBC__)
 #include <endian.h>
 #elif defined (__FreeBSD__)
 #include <machine/endian.h>
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/src/xine-engine/xine.c
+++ xine-lib-1.1.8/src/xine-engine/xine.c
@@ -37,7 +37,7 @@
 #include <pthread.h>
 #include <stdarg.h>
 #include <stdio.h>
-#if defined (__linux__)
+#if defined (__linux__) || defined (__GLIBC__)
 #include <endian.h>
 #elif defined (__FreeBSD__)
 #include <machine/endian.h>
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/configure.ac
+++ xine-lib-1.1.8/configure.ac
@@ -1143,7 +1143,7 @@
         enable_vidix="yes"
         enable_linux="yes"
         ;;
-      i?86-*-freebsd* | k?-*-freebsd* | athlon-*-freebsd*)
+      i?86-*-freebsd* | k?-*-freebsd* | athlon-*-freebsd* | i?86-*-kfreebsd*)
         enable_vidix="yes"
         enable_dha_kmod="no"
         ;;
@@ -1885,7 +1885,7 @@
            AC_DEFINE([HAVE_WIN32_CDROM], [1], 
                       [Define 1 if you have MinGW CD-ROM support])
         ;;
-         freebsd4.*)
+         freebsd4.*|kfreebsd*-gnu)
            AC_DEFINE([HAVE_FREEBSD_CDROM], [1], 
                       [Define 1 if you have FreeBSD CD-ROM support])
         ;;
only in patch2:
unchanged:
--- xine-lib-1.1.8.orig/configure
+++ xine-lib-1.1.8/configure
@@ -36996,7 +36996,7 @@
         enable_vidix="yes"
         enable_linux="yes"
         ;;
-      i?86-*-freebsd* | k?-*-freebsd* | athlon-*-freebsd*)
+      i?86-*-freebsd* | k?-*-freebsd* | athlon-*-freebsd* | i?86-*-kfreebsd*)
         enable_vidix="yes"
         enable_dha_kmod="no"
         ;;
@@ -44870,7 +44870,7 @@
 _ACEOF
 
         ;;
-         freebsd4.*)
+         freebsd4.*|kfreebsd*-gnu)
 
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_FREEBSD_CDROM 1

Reply via email to