]> git.sesse.net Git - vlc/blobdiff - extras/contrib/src/Patches/dvdnav.patch
- contribs: misc fixes for cygwin mostly
[vlc] / extras / contrib / src / Patches / dvdnav.patch
index 0f3698f4ed60e73ece4241bf21acaa95b0c8382f..2d47e4ee0098a477c2c2a0db34182a5bc1150156 100644 (file)
@@ -271,6 +271,65 @@ diff -ur libdvdnav/src/vm/vm.c libdvdnav.new/src/vm/vm.c
  #endif /* _MSC_VER */
  
  /*
+@@ -126,24 +130,25 @@
+ }
+ #endif
++#include <dvdread/dvd_input.h>
++
+ static void dvd_read_name(char *name, const char *device) {
+     /* Because we are compiling with _FILE_OFFSET_BITS=64
+      * all off_t are 64bit.
+      */
+     off_t off;
+-    int fd, i;
++    dvd_input_t fd; int i;
+     uint8_t data[DVD_VIDEO_LB_LEN];
+     /* Read DVD name */
+-    fd = open(device, O_RDONLY);
++    fd = dvdinput_open(device);
+     if (fd > 0) { 
+-      off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET );
+-      if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) {
+-        off = read( fd, data, DVD_VIDEO_LB_LEN ); 
+-        close(fd);
+-        if (off == ( (off_t) DVD_VIDEO_LB_LEN )) {
++      off = dvdinput_seek( fd, 16 );
++      if( off == 16 ) {
++        off = dvdinput_read( fd, data, 1, DVDINPUT_NOFLAGS ); 
++        if (off == 1 ) {
+           fprintf(MSG_OUT, "libdvdnav: DVD Title: ");
+-          for(i=25; i < 73; i++ ) {
++          for(i=40; i < 73; i++ ) {
+             if((data[i] == 0)) break;
+             if((data[i] > 32) && (data[i] < 127)) {
+               fprintf(MSG_OUT, "%c", data[i]);
+@@ -151,10 +156,12 @@
+               fprintf(MSG_OUT, " ");
+             }
+           }
+-          strncpy(name, &data[25], 48);
+-          name[48] = 0;
++          strncpy(name, &data[40], 32);
++          i=31;
++          while( (i >= 0) && (name[i] <= ' ')) --i;
++          name[i+1] = '\0';
+           fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: ");
+-          for(i=73; i < 89; i++ ) {
++          for(i=813; i < 829; i++ ) {
+             if((data[i] == 0)) break;
+             if((data[i] > 32) && (data[i] < 127)) {
+               fprintf(MSG_OUT, "%c", data[i]);
+@@ -178,7 +185,7 @@
+       } else {
+         fprintf(MSG_OUT, "libdvdnav: Can't seek to block %u\n", 32 );
+       }
+-      close(fd);
++      dvdinput_close(fd);
+     } else {
+     fprintf(MSG_OUT, "NAME OPEN FAILED\n");
+   }
 --- libdvdnav/misc/dvdnav-config.in    2003-04-27 02:26:17.000000000 +0100
 +++ libdvdnav.new/misc/dvdnav-config.in        2005-12-02 09:29:48.265625000 +0000
 @@ -76,5 +76,5 @@
@@ -330,7 +389,7 @@ diff -ur libdvdnav/src/vm/vm.c libdvdnav.new/src/vm/vm.c
 +if test x"$link_dvdcss" != xyes; then
 +dnl dlopen libdvdcss
 +  AC_CHECK_FUNC( dlopen,
-+    [DL_LIBS="" ].
++    [DL_LIBS="" ],
 +    AC_CHECK_LIB( dl, dlopen,
 +      [DL_LIBS=-ld ],
 +      AC_MSG_ERROR(You need libdl (dlopen))
@@ -402,3 +461,22 @@ diff -ur libdvdnav/src/vm/vm.c libdvdnav.new/src/vm/vm.c
  menus_LDADD   = $(DVDNAV_LIB)
  
  $(DVDNAV_LIB):
+--- libdvdnav/src/dvdnav_internal.h.orig       2007-02-19 18:41:27.784456800 +0000
++++ libdvdnav/src/dvdnav_internal.h    2007-02-19 18:41:50.706478500 +0000
+@@ -45,6 +45,7 @@
+ #define pthread_mutex_unlock(a)  LeaveCriticalSection(a)
+ #define pthread_mutex_destroy(a)
++#if 0
+ /* replacement gettimeofday implementation */
+ #include <sys/timeb.h>
+ static inline int _private_gettimeofday( struct timeval *tv, void *tz )
+@@ -56,6 +57,8 @@
+   return 0;
+ }
+ #define gettimeofday(TV, TZ) _private_gettimeofday((TV), (TZ))
++#endif
++
+ #include <io.h> /* read() */
+ #define lseek64 _lseeki64