On Sunday 24 June 2001 21:09, David Gilbert wrote:
> Could I have a copy of your patches?  Where do I get xine?

The attached is a shell archive for a port I made out of the libcss from 
livid. It compiles but i have no idea if it works. Please do not submit it to 
the ports collection! all the patches are in the files/patch-* files.

As for xine, go to xine.sourceforge.net, hit the how to link, then choose 
browseable html. Select the playing dvd's and there will be a link to the 
captiancss page. It compiles cleanly on my 4.x system with ./configure 
--prefix=/usr/X11R6; gmake; gmake install. If I remember right the makefiles 
will work with the regular make as well if you don't have gmake installed.

There is also a link to the linux video site (where libcss comes from) and a 
plugin to use libcss. However I cannot get the plugin for this one to compile 
yet. 

If you have any luck tell me. I have been able to watch encrypted dvd's but 
it seems to like crashing when changing tracks. Also i have had a problem 
where xine will stop running after a while, seems to be running out of shared 
memory maps, something is not getting cleaned up properly. 

> Dave.

James
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#       libcss
#       libcss/pkg-descr
#       libcss/pkg-plist
#       libcss/files
#       libcss/files/patch-aa
#       libcss/files/patch-ag
#       libcss/files/patch-ab
#       libcss/files/patch-ac
#       libcss/files/patch-ad
#       libcss/files/patch-ae
#       libcss/files/patch-af
#       libcss/files/patches-ah
#       libcss/distinfo
#       libcss/pkg-comment
#       libcss/Makefile
#
echo c - libcss
mkdir -p libcss > /dev/null 2>&1
echo x - libcss/pkg-descr
sed 's/^X//' >libcss/pkg-descr << 'END-of-libcss/pkg-descr'
XLibcss library as implemented in the livid project. Should work with xine to
Xplay encrypted dvd's
END-of-libcss/pkg-descr
echo x - libcss/pkg-plist
sed 's/^X//' >libcss/pkg-plist << 'END-of-libcss/pkg-plist'
Xbin/tstdvd
Xbin/dvdinfo
Xbin/reset_dvd
Xinclude/css.h
Xlib/libcss.so.1
Xlib/libcss.so
Xlib/libcss.la
Xlib/libcss.a
Xshare/aclocal/dvd.m4
END-of-libcss/pkg-plist
echo c - libcss/files
mkdir -p libcss/files > /dev/null 2>&1
echo x - libcss/files/patch-aa
sed 's/^X//' >libcss/files/patch-aa << 'END-of-libcss/files/patch-aa'
X--- configure.in.orig  Wed Feb 14 19:40:02 2001
X+++ configure.in       Wed Jun 20 16:33:24 2001
X@@ -43,15 +43,19 @@
X if test "x$enable_devel" = "xyes"; then
X         CFLAGS="$CFLAGS -g3 -DDEVEL -DDEBUG"
X else
X-        CFLAGS="$CFLAGS -O6 -fomit-frame-pointer -funroll-all-loops -D__OPTIMIZE__ 
-D__USE_STRING_INLINES"
X+        CFLAGS="$CFLAGS -O6 -fomit-frame-pointer -funroll-all-loops -D__OPTIMIZE__ 
-D__USE_STRING_INLINES \$(EXTRA_DEFS)"
X fi     
X 
X-
X dnl ==========
X dnl get location of kernel headers
X dnl ==========
X 
X AC_C_KERNEL_INCLUDES
X+
X+dnl ==========
X+dnl Check if we're on FreeBSD
X+dnl ==========
X+AM_CONDITIONAL(FREEBSD, test `uname -s` = "FreeBSD")
X 
X dnl ==========
X dnl Output configuration files
END-of-libcss/files/patch-aa
echo x - libcss/files/patch-ag
sed 's/^X//' >libcss/files/patch-ag << 'END-of-libcss/files/patch-ag'
X--- src/tstdvd.c.orig  Tue Feb 13 16:59:27 2001
X+++ src/tstdvd.c       Wed Jun 20 16:33:24 2001
X@@ -65,11 +65,19 @@
X               perror("DVD vob file");
X               return 0;
X       }
X+#ifndef __FreeBSD__
X       if (ioctl(fd, FIBMAP, &lba) != 0) {
X               perror ("ioctl FIBMAP");
X               close(fd);
X               return 0;
X       }
X+#else
X+      if (ioctl(fd, FIOGETLBA, &lba) != 0) {
X+              perror ("ioctl FIOGETLBA");
X+              close(fd);
X+              return 0;
X+      }
X+#endif
X 
X       close(fd);
X 
END-of-libcss/files/patch-ag
echo x - libcss/files/patch-ab
sed 's/^X//' >libcss/files/patch-ab << 'END-of-libcss/files/patch-ab'
X--- src/Makefile.am.orig       Thu Nov  2 14:06:41 2000
X+++ src/Makefile.am            Wed Jun 20 16:33:24 2001
X@@ -10,17 +10,30 @@
X bin_PROGRAMS = tstdvd dvdinfo reset_dvd
X noinst_PROGRAMS = css_cat
X 
X+if FREEBSD
X+EXTRA_DEFS = -D_THREAD_SAFE
X+LIBPTHREAD = -pthread
X+LIBDL =
X+else
X+EXTRA_DEFS =
X+LIBPTHREAD =
X+LIBDL = -ldl
X+endif
X+
X tstdvd_SOURCES = tstdvd.c
X tstdvd_DEPENDENCIES = libcss.la
X-tstdvd_LDADD = libcss.la -ldl
X+tstdvd_LDFLAGS = $(LIBPTHREAD)
X+tstdvd_LDADD = libcss.la $(LIBDL)
X 
X css_cat_SOURCES = css_cat.c
X css_cat_DEPENDENCIES = libcss.la
X-css_cat_LDADD = libcss.la -ldl
X+css_cat_LDFLAGS = $(LIBPTHREAD)
X+css_cat_LDADD = libcss.la $(LIBDL)
X 
X dvdinfo_SOURCES = dvdinfo.c
X dvdinfo_DEPENDENCIES = libcss.la
X-dvdinfo_LDADD = libcss.la -ldl
X+dvdinfo_LDFLAGS = $(LIBPTHREAD)
X+dvdinfo_LDADD = libcss.la $(LIBDL)
X 
X reset_dvd_SOURCES = reset_dvd.c
X 
END-of-libcss/files/patch-ab
echo x - libcss/files/patch-ac
sed 's/^X//' >libcss/files/patch-ac << 'END-of-libcss/files/patch-ac'
X--- src/css.c.orig     Tue Feb 13 16:59:27 2001
X+++ src/css.c          Wed Jun 20 16:33:24 2001
X@@ -30,7 +30,7 @@
X #include <sys/stat.h>
X #include <sys/types.h>
X #include <errno.h>
X-#if defined(__NetBSD__) || defined(__OpenBSD__)
X+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
X # include <sys/dvdio.h>
X #elif defined(__linux__)
X # include <linux/cdrom.h>
X@@ -41,13 +41,17 @@
X #include "css_auth.h"
X #include "css.h"
X 
X+#ifdef __FreeBSD__
X+typedef struct dvd_struct   dvd_struct;
X+typedef struct dvd_authinfo dvd_authinfo;
X+#endif
X 
X typedef struct {
X       uint8_t Challenge[10];
X       uint8_t Key1[LEN_KEY];
X       uint8_t Key2[LEN_KEY];
X       uint8_t KeyCheck[LEN_KEY];
X-      uint8_t varient;
X+      uint8_t variant;
X } DiscKeys;
X 
X DiscKeys discKeys;
X@@ -70,12 +74,13 @@
X #else
X #define _CSSPrintDebug(args...)
X #define _CSSPrintDebugBytes(descr, val, len)
X+#define _CSSPrintBytes(val, len)
X #endif
X 
X /**
X  * CSSAuthDrive
X  * Determine if drive is authentic
X- * Return: -1 if failed, 0..32 = varient of CSS
X+ * Return: -1 if failed, 0..32 = variant of CSS
X  **/
X 
X 
X@@ -90,8 +95,8 @@
X               CryptKey1( i, disc->Challenge, disc->KeyCheck);
X 
X               if (memcmp (disc->KeyCheck, disc->Key1, LEN_KEY) == 0) {
X-                      _CSSPrintDebug ("Drive Authentic - using varient %d\n", i);
X-                      disc->varient = i;
X+                      _CSSPrintDebug ("Drive Authentic - using variant %d\n", i);
X+                      disc->variant = i;
X                       return i;
X               }
X       }
X@@ -119,6 +124,7 @@
X       dvd_struct s;
X       int i;
X 
X+#ifndef __FreeBSD__
X       s.type = DVD_STRUCT_DISCKEY;
X       s.disckey.agid = agid;
X       memset (s.disckey.value, 0, 2048);
X@@ -134,6 +140,29 @@
X       _CSSPrintDebugBytes ("Received Disc Key", s.disckey.value, 10);
X 
X       memcpy (key_disc, s.disckey.value, 2048);
X+#else
X+      /*
X+       * FreeBSD's dvd_struct is not a union as it is with the other
X+       * platforms; hence, there are no additional sub-member
X+       * dereferences.
X+       */
X+
X+      s.format = DVD_STRUCT_DISCKEY;
X+      s.agid   = agid;
X+      memset( s.data, 0, 2048);
X+
X+      if (ioctl( fd, DVDIOCREADSTRUCTURE, &s) < 0) {
X+              perror( "Could not read Disc Key");
X+              return -1;
X+      }
X+
X+      for( i=0; i<sizeof(s.data); i++)
X+              s.data[i] ^= key[4 - (i % LEN_KEY)];
X+
X+      _CSSPrintDebugBytes( "Received Disc Key", s.data, 10);
X+
X+      memcpy( key_disc, s.data, 2048);
X+#endif
X 
X       return 0;
X }
X@@ -156,6 +185,7 @@
X       dvd_authinfo ai;
X       int i;
X 
X+#ifndef __FreeBSD__
X       ai.type = DVD_LU_SEND_TITLE_KEY;
X 
X       ai.lstk.agid = agid;
X@@ -173,6 +203,25 @@
X       _CSSPrintDebug (" CPM=%d, CP_SEC=%d, CGMS=%d\n", ai.lstk.cpm, ai.lstk.cp_sec, 
ai.lstk.cgms);
X 
X       memcpy (key_title, ai.lstk.title_key, LEN_KEY);
X+#else
X+      ai.format = DVD_REPORT_TITLE_KEY;
X+      ai.agid   = agid;
X+      ai.lba    = lba;
X+      memset( ai.keychal, 0, 10);
X+
X+      if (ioctl( fd, DVDIOCREPORTKEY, &ai)) {
X+              perror( "GetTitleKey failed");
X+              return -1;
X+      }
X+ 
X+      for( i=0; i<LEN_KEY; i++)
X+              ai.keychal[i] ^= key[4 - (i%LEN_KEY)];
X+
X+      _CSSPrintDebugBytes( "Received Title Key", ai.keychal, LEN_KEY);
X+      _CSSPrintDebug(" CPM=%d, CP_SEC=%d, CGMS=%d\n", ai.cpm, ai.cp_sec, ai.cgms);
X+
X+      memcpy( key_title, ai.keychal, LEN_KEY);
X+#endif
X 
X       return 0;
X }
X@@ -189,6 +238,7 @@
X {
X       dvd_authinfo ai;
X 
X+#ifndef __FreeBSD__
X       ai.type = DVD_LU_SEND_ASF;
X       ai.lsasf.asf = 0;
X 
X@@ -198,6 +248,16 @@
X                       return 0;
X               }
X       }
X+#else
X+      ai.format = DVD_REPORT_ASF;
X+      ai.agid   = 0;
X+      ai.asf    = 0;
X+
X+      if (!(ioctl(fd, DVDIOCREPORTKEY, &ai))) {
X+              _CSSPrintDebug ("%sAuthenticated\n", (ai.asf) ? "" : "not");
X+              return 0;
X+      }
X+#endif
X       perror ("GetASF");
X       return -1;
X }
X@@ -214,18 +274,34 @@
X 
X       /* Init sequence, request AGID */
X       for (tries = 1; tries < 4; ++tries) {
X-              _CSSPrintDebug ("Request AGID [%d]...\n", tries);
X+              _CSSPrintDebug ("Request AGID [%d]...", tries);
X+#ifndef __FreeBSD__
X               ai->type = DVD_LU_SEND_AGID;
X               ai->lsa.agid = 0;
X               rv =  ioctl (fd, DVD_AUTH, ai);
X+#else
X+              ai->format = DVD_REPORT_AGID;
X+              ai->agid   = 0;
X+              rv         = ioctl( fd, DVDIOCREPORTKEY, ai);
X+#endif
X               if (rv != -1) {
X                       // found key
X+                      _CSSPrintDebug( "AGID %d\n", ai->agid);
X                       return( tries);
X               }
X+              else {
X+                      _CSSPrintDebug("\n");
X+              }
X               perror ("N/A, invalidating");
X+#ifndef __FreeBSD__
X               ai->type = DVD_INVALIDATE_AGID;
X               ai->lsa.agid = 0;
X               ioctl (fd, DVD_AUTH, ai);
X+#else
X+              ai->format = DVD_INVALIDATE_AGID;
X+              ai->agid   = 0;
X+              ioctl (fd, DVDIOCREPORTKEY, ai);
X+#endif
X       }
X 
X       _CSSPrintDebug ("Cannot get AGID\n");
X@@ -234,6 +310,7 @@
X }
X 
X 
X+#ifndef __FreeBSD__
X /**
X  * Simulation of a non-CSS compliant host (i.e. the authentication fails,
X  * but idea is here for a real CSS compliant authentication scheme).
X@@ -267,7 +344,7 @@
X 
X               _CSSPrintDebugBytes ("LU sent challenge", ai->hsc.chal, 10);
X 
X-              CryptKey2 (disc->varient, disc->Challenge, disc->Key2);
X+              CryptKey2 (disc->variant, disc->Challenge, disc->Key2);
X               ai->type = DVD_HOST_SEND_KEY2;
X               break;
X 
X@@ -298,6 +375,7 @@
X 
X       return 0;
X }
X+#endif
X 
X 
X /**
X@@ -319,6 +397,7 @@
X       for (i = 0; i < 10; ++i)
X               disc->Challenge[i] = i;
X 
X+#ifndef __FreeBSD__
X       /* Send AGID to host */
X       if (_CSSAuthHost(&ai, disc) < 0) {
X               _CSSPrintDebug ("Send AGID to host failed\n");
X@@ -370,10 +449,85 @@
X               _CSSPrintDebug ("DVD is authenticated\n");
X       else if (ai.type == DVD_AUTH_FAILURE)
X               _CSSPrintDebug ("DVD authentication failed\n");
X+#else
X+      agid = ai.agid;
X+
X+      /* Get challenge from host */
X+
X+      ai.format = DVD_SEND_CHALLENGE;
X+      for (i=0; i<10; ++i)
X+              ai.keychal[9-i] = disc->Challenge[i];
X+
X+      _CSSPrintDebug("Host sending challenge: ");
X+      _CSSPrintBytes(ai.keychal, 10);
X+      _CSSPrintDebug("\n");
X+
X+      /* Send challenge to LU */
X+
X+      if (ioctl(fd, DVDIOCSENDKEY, &ai) < 0) {
X+              _CSSPrintDebug("Send challenge to LU failed\n");
X+              return -1;
X+      }
X+
X+      /* Get key1 from LU */
X+
X+      ai.format = DVD_REPORT_KEY1;
X+      if (ioctl(fd, DVDIOCREPORTKEY, &ai) < 0) {
X+              _CSSPrintDebug("Get key1 from LU failed\n");
X+              return -1;
X+      }
X+
X+      /* Send key1 to host */
X+
X+      _CSSPrintDebug("LU sent key1: ");
X+      _CSSPrintBytes(ai.keychal, LEN_KEY);
X+      _CSSPrintDebug("\n");
X+
X+      if (_CSSAuthDrive( ai.keychal, disc) < 0) {
X+              _CSSPrintDebug("Send key1 to host failed\n");
X+              return -1;
X+      }
X+
X+      /* Get challenge from LU */
X+
X+      ai.format = DVD_REPORT_CHALLENGE;
X+      if (ioctl(fd, DVDIOCREPORTKEY, &ai) < 0) {
X+              _CSSPrintDebug("Get challenge from LU failed\n");
X+              return -1;
X+      }
X+
X+      /* Send challenge to host */
X+
X+      for (i=0; i<10; ++i)
X+              disc->Challenge[i] = ai.keychal[9-i];
X+
X+      _CSSPrintDebug("LU sent challenge: ");
X+      _CSSPrintBytes(disc->Challenge, 10);
X+      _CSSPrintDebug("\n");
X+
X+      CryptKey2(disc->variant, disc->Challenge, disc->Key2);
X+
X+      /* Get key2 from host */
X+
X+      ai.format = DVD_SEND_KEY2;
X+      for (i=0; i<LEN_KEY; ++i)
X+              ai.keychal[4-i] = disc->Key2[i];
X+
X+      _CSSPrintDebug("Host sending key 2: ");
X+      _CSSPrintBytes(disc->Key2, LEN_KEY);
X+      _CSSPrintDebug("\n");
X+
X+      /* Send key2 to LU */
X+      if (ioctl(fd, DVDIOCSENDKEY, &ai) < 0) {
X+              printf("Send key2 to LU failed (expected)\n");
X+              return -1;
X+      }
X+
X+#endif
X 
X       memcpy (disc->Challenge, disc->Key1, LEN_KEY);
X       memcpy (disc->Challenge+LEN_KEY, disc->Key2, LEN_KEY);
X-      CryptBusKey (disc->varient, disc->Challenge, disc->KeyCheck);
X+      CryptBusKey (disc->variant, disc->Challenge, disc->KeyCheck);
X 
X       _CSSPrintDebugBytes ("Received Session Key\n", &disc->KeyCheck[0], LEN_KEY);
X 
X@@ -445,6 +599,7 @@
X {
X       dvd_struct dvd;
X 
X+#ifndef __FreeBSD__
X       dvd.copyright.type = DVD_STRUCT_COPYRIGHT;
X       dvd.copyright.layer_num = 0;
X 
X@@ -454,4 +609,15 @@
X       }
X 
X       return dvd.copyright.cpst;      // 0 ... not encrypted
X+#else
X+      dvd.format    = DVD_STRUCT_COPYRIGHT;
X+      dvd.layer_num = 0;
X+
X+      if (ioctl( fd, DVDIOCREADSTRUCTURE, &dvd) < 0) {
X+              _CSSPrintDebug ("error using ioctl DVDIOCREADSTRUCTURE\n");
X+              return -1;
X+      }
X+
X+      return dvd.cpst;                // 0 ... not encrypted
X+#endif
X }
END-of-libcss/files/patch-ac
echo x - libcss/files/patch-ad
sed 's/^X//' >libcss/files/patch-ad << 'END-of-libcss/files/patch-ad'
X--- src/css_cat.c.orig Tue Feb 13 16:59:27 2001
X+++ src/css_cat.c      Wed Jun 20 16:33:24 2001
X@@ -208,7 +208,9 @@
X  *
X  */
X 
X+#ifdef __linux__
X #include <linux/fs.h>
X+#endif
X 
X int path_to_lba (char *p)
X {
X@@ -219,8 +221,13 @@
X               return -1;
X       }
X 
X+#ifndef __FreeBSD__
X       if (ioctl(fd, FIBMAP, &lba) < 0) {
X               perror ("ioctl FIBMAP");
X+#else
X+      if (ioctl(fd, FIOGETLBA, &lba) < 0) {
X+              perror ("ioctl FIOGETLBA");
X+#endif
X               close(fd);
X               return -1;
X       }
X@@ -252,6 +259,14 @@
X               goto clean_up;
X       }
X #endif
X+
X+#ifdef __FreeBSD__
X+      if (!strcmp( argv[argi], "-")) {
X+              argv[argi] = (char *)malloc( strlen( "/dev/stdin") + 1);
X+              strcpy( argv[argi], "/dev/stdin");
X+      }
X+#endif
X+
X       if ((fd = open (argv[argi], O_RDONLY)) == -1) {
X               perror ("can't open DVD");
X               goto clean_up;
END-of-libcss/files/patch-ad
echo x - libcss/files/patch-ae
sed 's/^X//' >libcss/files/patch-ae << 'END-of-libcss/files/patch-ae'
X--- src/dvdinfo.c.orig Tue Feb 13 16:59:27 2001
X+++ src/dvdinfo.c      Wed Jun 20 16:59:24 2001
X@@ -27,7 +27,7 @@
X #include <stdlib.h>
X #include <fcntl.h>
X #include <string.h>
X-#if defined(__NetBSD__) || defined(__OpenBSD__)
X+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
X # include <sys/dvdio.h>
X #elif defined(__linux__)
X # include <linux/cdrom.h>
X@@ -39,6 +39,10 @@
X 
X #include "css.h"
X 
X+#ifdef __FreeBSD__
X+typedef struct dvd_struct dvd_struct;
X+#endif
X+
X #define DVD   "/dev/cdrom"
X 
X /**
X@@ -52,6 +56,7 @@
X       int i;
X       int layers = 4;
X 
X+#ifndef __FreeBSD__
X       d.physical.type = DVD_STRUCT_PHYSICAL;
X       for (i=0; i<layers; i++) {
X               d.physical.layer_num = i;
X@@ -62,12 +67,28 @@
X               }
X 
X               layer = &d.physical.layer[i];
X+#else
X+      d.format = DVD_STRUCT_PHYSICAL;
X+      memset( d.data, 0, 2048);
X+      for (i=0; i<layers; i++) {
X+              d.layer_num = i;
X+              if (ioctl (fd, DVDIOCREADSTRUCTURE, &d)<0) {
X+                      fprintf (stderr, "Could not read Physical layer %d\n", i);
X+                      return 0;
X+              }
X+
X+              layer = (struct dvd_layer *)(&(d.data[i*sizeof(struct dvd_layer)]));
X+#endif
X               layers = layer->nlayers + 1;
X 
X               printf ("Layer %d[%d]\n", i, layers);
X               printf (" Book Version:   %d\n", layer->book_version);
X               printf (" Book Type:      %d\n", layer->book_type);
X+#ifndef __FreeBSD__
X               printf (" Min Rate:       %d\n", layer->min_rate);
X+#else
X+              printf (" Max Rate:       %d\n", layer->max_rate);
X+#endif
X               printf (" Disc Size:      %d\n", layer->disc_size);
X               printf (" Layer Type:     %d\n", layer->layer_type);
X               printf (" Track Path:     %d\n", layer->track_path);
X@@ -92,6 +113,7 @@
X {
X       dvd_struct d;
X 
X+#ifndef __FreeBSD__
X       d.copyright.type = DVD_STRUCT_COPYRIGHT;
X       d.copyright.layer_num = 0;
X       
X@@ -101,6 +123,17 @@
X       }
X 
X       printf ("Copyright: CPST=%d, RMI=%#02x\n", d.copyright.cpst, d.copyright.rmi);
X+#else
X+      d.format    = DVD_STRUCT_COPYRIGHT;
X+      d.layer_num = 0;
X+
X+      if (ioctl(fd, DVDIOCREADSTRUCTURE, &d)<0) {
X+              fprintf (stderr, "Could not read Copyright Struct\n");
X+              return 0;
X+      }
X+
X+      printf ("Copyright: CPST=%d, RMI=%#02x\n", d.cpst, d.rmi);
X+#endif
X 
X       return 1;
X }
X@@ -114,6 +147,7 @@
X {
X       dvd_struct dvd;
X 
X+#ifndef __FreeBSD__
X       dvd.copyright.type = DVD_STRUCT_COPYRIGHT;
X       dvd.copyright.layer_num = 0;
X 
X@@ -125,6 +159,19 @@
X       printf ("Disc is %s\n", dvd.copyright.cpst ? "encrypted." : "NOT encrypted at 
all - no need to use CSS!!!");
X 
X       return dvd.copyright.cpst;
X+#else
X+      dvd.format = DVD_STRUCT_COPYRIGHT;
X+      dvd.layer_num = 0;
X+
X+      if (ioctl (fd, DVDIOCREADSTRUCTURE, &dvd) < 0) {
X+              perror ("DVDIOCREADSTRUCTURE");
X+              return -1;
X+      }
X+
X+      printf( "Disc is %s\n", dvd.cpst ? "encrypted." : "NOT encrypted at all - no 
need to use CSS!!!");
X+
X+      return dvd.cpst;
X+#endif
X }
X 
X 
END-of-libcss/files/patch-ae
echo x - libcss/files/patch-af
sed 's/^X//' >libcss/files/patch-af << 'END-of-libcss/files/patch-af'
X--- src/reset_dvd.c.orig       Tue Feb 13 16:59:27 2001
X+++ src/reset_dvd.c            Wed Jun 20 16:59:38 2001
X@@ -25,7 +25,7 @@
X #include <stdio.h>
X #include <string.h>
X #include <fcntl.h>
X-#if defined(__NetBSD__) || defined(__OpenBSD__)
X+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
X # include <sys/dvdio.h>
X #elif defined(__linux__)
X # include <linux/cdrom.h>
X@@ -37,6 +37,10 @@
X 
X static int fd;
X 
X+#ifdef __FreeBSD__
X+typedef struct dvd_authinfo dvd_authinfo;
X+#endif
X+
X #define DVD   "/dev/cdrom"
X 
X int main (int ac, char **av)
X@@ -57,9 +61,15 @@
X 
X       for (i = 0; i < 4; i++) {
X               memset(&ai, 0, sizeof(ai));
X+#ifndef __FreeBSD__
X               ai.type = DVD_INVALIDATE_AGID;
X               ai.lsa.agid = i;
X               ioctl(fd, DVD_AUTH, &ai);
X+#else
X+              ai.format = DVD_INVALIDATE_AGID;
X+              ai.agid = i;
X+              ioctl(fd, DVDIOCREPORTKEY, &ai);
X+#endif
X       }
X 
X       return 0;
END-of-libcss/files/patch-af
echo x - libcss/files/patches-ah
sed 's/^X//' >libcss/files/patches-ah << 'END-of-libcss/files/patches-ah'
X--- m4/dvd.m4.orig     Thu Nov 23 17:21:22 2000
X+++ m4/dvd.m4          Wed Jun 20 16:33:24 2001
X@@ -42,7 +42,7 @@
X               CFLAGS="$CFLAGS -I$KERNEL_INCLUDES"
X 
X               AC_TRY_COMPILE([
X-                      #if defined(__NetBSD__) || defined(__OpenBSD__)
X+                      #if defined(__NetBSD__) || defined(__OpenBSD__) || 
defined(__FreeBSD__)
X                       # include <sys/dvdio.h>
X                       #elif defined(__linux__)
X                       # include <sys/types.h>
END-of-libcss/files/patches-ah
echo x - libcss/distinfo
sed 's/^X//' >libcss/distinfo << 'END-of-libcss/distinfo'
XMD5 (libcss-0.1.0.tar.gz) = f328077f56f690d0136a106080c359df
END-of-libcss/distinfo
echo x - libcss/pkg-comment
sed 's/^X//' >libcss/pkg-comment << 'END-of-libcss/pkg-comment'
XLibrary to brute force decrypt dvd videos
END-of-libcss/pkg-comment
echo x - libcss/Makefile
sed 's/^X//' >libcss/Makefile << 'END-of-libcss/Makefile'
X# New ports collection makefile for:   libcss
X# Date created:        20 June 2001
X# Whom:                
X#
X# $FreeBSD$
X#
X
XPORTNAME=      libcss
XPORTVERSION=   0.1.0
XCATEGORIES=    graphics
XMASTER_SITES=   http://www.linuxvideo.org/oms/data/
X
XMAINTAINER=    [EMAIL PROTECTED]
X
XINSTALLS_SHLIB=        yes
X
XGNU_CONFIGURE= yes
XUSE_GMAKE=     yes
X
XBUILD_DEPENDS= automake:${PORTSDIR}/devel/autoconf
X
Xpre-configure:
X       @cd ${WRKSRC} && automake
X
X.include <bsd.port.mk>
END-of-libcss/Makefile
exit

Reply via email to