]> git.sesse.net Git - vlc/blob - extras/contrib/src/Patches/libdvdnav.patch
Fix libdvdnav in a reliable and quite clean way.
[vlc] / extras / contrib / src / Patches / libdvdnav.patch
1 Index: src/read_cache.c
2 ===================================================================
3 --- src/read_cache.c    (revision 1096)
4 +++ src/read_cache.c    (working copy)
5 @@ -37,8 +37,8 @@
6  #include <sys/time.h>
7  #include <time.h>
8  #include "dvd_types.h"
9 -#include <libdvdread/nav_types.h>
10 -#include <libdvdread/ifo_types.h>
11 +#include <dvdread/nav_types.h>
12 +#include <dvdread/ifo_types.h>
13  #include "remap.h"
14  #include "vm/decoder.h"
15  #include "vm/vm.h"
16 Index: src/navigation.c
17 ===================================================================
18 --- src/navigation.c    (revision 1096)
19 +++ src/navigation.c    (working copy)
20 @@ -30,8 +30,8 @@
21  #include <string.h>
22  #include <sys/time.h>
23  #include "dvd_types.h"
24 -#include <libdvdread/nav_types.h>
25 -#include <libdvdread/ifo_types.h>
26 +#include <dvdread/nav_types.h>
27 +#include <dvdread/ifo_types.h>
28  #include "remap.h"
29  #include "vm/decoder.h"
30  #include "vm/vm.h"
31 Index: src/settings.c
32 ===================================================================
33 --- src/settings.c      (revision 1096)
34 +++ src/settings.c      (working copy)
35 @@ -30,8 +30,8 @@
36  #include <string.h>
37  #include <sys/time.h>
38  #include "dvd_types.h"
39 -#include <libdvdread/nav_types.h>
40 -#include <libdvdread/ifo_types.h>
41 +#include <dvdread/nav_types.h>
42 +#include <dvdread/ifo_types.h>
43  #include "remap.h"
44  #include "vm/decoder.h"
45  #include "vm/vm.h"
46 Index: src/vm/vm.c
47 ===================================================================
48 --- src/vm/vm.c (revision 1096)
49 +++ src/vm/vm.c (working copy)
50 @@ -40,9 +40,9 @@
51  #include <sys/time.h>
52  #include <fcntl.h>
53  
54 -#include <libdvdread/nav_types.h>
55 -#include <libdvdread/ifo_types.h>
56 -#include <libdvdread/ifo_read.h>
57 +#include <dvdread/nav_types.h>
58 +#include <dvdread/ifo_types.h>
59 +#include <dvdread/ifo_read.h>
60  #include "dvd_types.h"
61  
62  #include "decoder.h"
63 @@ -139,19 +139,18 @@
64       * all off_t are 64bit.
65       */
66      off_t off;
67 -    int fd, i;
68 +    int i, fd;
69      uint8_t data[DVD_VIDEO_LB_LEN];
70  
71      /* Read DVD name */
72      fd = open(device, O_RDONLY);
73      if (fd > 0) { 
74        off = lseek( fd, 32 * (off_t) DVD_VIDEO_LB_LEN, SEEK_SET );
75 -      if( off == ( 32 * (off_t) DVD_VIDEO_LB_LEN ) ) {
76 -        off = read( fd, data, DVD_VIDEO_LB_LEN ); 
77 -        close(fd);
78 +      if( off == 16 ) {
79 +        off =  read( fd, data, DVD_VIDEO_LB_LEN );
80          if (off == ( (off_t) DVD_VIDEO_LB_LEN )) {
81            fprintf(MSG_OUT, "libdvdnav: DVD Title: ");
82 -          for(i=25; i < 73; i++ ) {
83 +          for(i=40; i < 73; i++ ) {
84              if((data[i] == 0)) break;
85              if((data[i] > 32) && (data[i] < 127)) {
86                fprintf(MSG_OUT, "%c", data[i]);
87 @@ -159,10 +158,12 @@
88                fprintf(MSG_OUT, " ");
89              }
90            }
91 -          strncpy(name, (char*) &data[25], 48);
92 -          name[48] = 0;
93 +          strncpy(name, (char*) &data[40], 32);
94 +          i=31;
95 +          while( (i >= 0) && (name[i] <= ' ')) --i;
96 +          name[i+1] = '\0';
97            fprintf(MSG_OUT, "\nlibdvdnav: DVD Serial Number: ");
98 -          for(i=73; i < 89; i++ ) {
99 +          for(i=813; i < 829; i++ ) {
100              if((data[i] == 0)) break;
101              if((data[i] > 32) && (data[i] < 127)) {
102                fprintf(MSG_OUT, "%c", data[i]);
103 Index: src/vm/decoder.c
104 ===================================================================
105 --- src/vm/decoder.c    (revision 1096)
106 +++ src/vm/decoder.c    (working copy)
107 @@ -33,8 +33,8 @@
108  #include <limits.h>
109  #include <string.h>  /* For memset */
110  #include <sys/time.h>
111 -#include <libdvdread/nav_types.h>
112 -#include <libdvdread/ifo_types.h> /* vm_cmd_t */
113 +#include <dvdread/nav_types.h>
114 +#include <dvdread/ifo_types.h> /* vm_cmd_t */
115  
116  #include "dvd_types.h"
117  #include "remap.h"
118 Index: src/vm/vmcmd.c
119 ===================================================================
120 --- src/vm/vmcmd.c      (revision 1096)
121 +++ src/vm/vmcmd.c      (working copy)
122 @@ -34,8 +34,8 @@
123  #include <sys/time.h>
124  
125  #include "dvd_types.h"
126 -#include <libdvdread/nav_types.h>
127 -#include <libdvdread/ifo_types.h>
128 +#include <dvdread/nav_types.h>
129 +#include <dvdread/ifo_types.h>
130  #include "decoder.h"
131  #include "remap.h"
132  #include "vm.h"
133 Index: src/searching.c
134 ===================================================================
135 --- src/searching.c     (revision 1096)
136 +++ src/searching.c     (working copy)
137 @@ -33,8 +33,8 @@
138  #include <stdlib.h>
139  #include <sys/time.h>
140  #include "dvd_types.h"
141 -#include <libdvdread/nav_types.h>
142 -#include <libdvdread/ifo_types.h>
143 +#include <dvdread/nav_types.h>
144 +#include <dvdread/ifo_types.h>
145  #include "remap.h"
146  #include "vm/decoder.h"
147  #include "vm/vm.h"
148 Index: src/remap.c
149 ===================================================================
150 --- src/remap.c (revision 1096)
151 +++ src/remap.c (working copy)
152 @@ -39,8 +39,8 @@
153  #include <limits.h>
154  #include <sys/time.h>
155  #include "dvd_types.h"
156 -#include <libdvdread/nav_types.h>
157 -#include <libdvdread/ifo_types.h>
158 +#include <dvdread/nav_types.h>
159 +#include <dvdread/ifo_types.h>
160  #include "remap.h"
161  #include "vm/decoder.h"
162  #include "vm/vm.h"
163 Index: src/highlight.c
164 ===================================================================
165 --- src/highlight.c     (revision 1096)
166 +++ src/highlight.c     (working copy)
167 @@ -32,7 +32,7 @@
168  #include <limits.h>
169  #include <string.h>
170  #include <sys/time.h>
171 -#include <libdvdread/nav_types.h>
172 +#include <dvdread/nav_types.h>
173  #include "dvd_types.h"
174  #include "remap.h"
175  #include "vm/decoder.h"
176 Index: src/dvdnav.c
177 ===================================================================
178 --- src/dvdnav.c        (revision 1096)
179 +++ src/dvdnav.c        (working copy)
180 @@ -37,9 +37,9 @@
181  #include <string.h>
182  #include <sys/time.h>
183  #include "dvd_types.h"
184 -#include <libdvdread/dvd_reader.h>
185 -#include <libdvdread/nav_types.h>
186 -#include <libdvdread/ifo_types.h> /* For vm_cmd_t */
187 +#include <dvdread/dvd_reader.h>
188 +#include <dvdread/nav_types.h>
189 +#include <dvdread/ifo_types.h> /* For vm_cmd_t */
190  #include "remap.h"
191  #include "vm/decoder.h"
192  #include "vm/vm.h"
193 @@ -47,7 +47,7 @@
194  #include "dvdnav_events.h"
195  #include "dvdnav_internal.h"
196  #include "read_cache.h"
197 -#include <libdvdread/nav_read.h>
198 +#include <dvdread/nav_read.h>
199  #include "remap.h"
200  
201  static dvdnav_status_t dvdnav_clear(dvdnav_t * this) {
202 Index: src/dvdnav.h
203 ===================================================================
204 --- src/dvdnav.h        (revision 1096)
205 +++ src/dvdnav.h        (working copy)
206 @@ -37,9 +37,9 @@
207  
208  #ifndef DVDNAV_COMPILE
209  #  include <dvdnav/dvd_types.h>
210 -#  include <libdvdread/dvd_reader.h>
211 -#  include <libdvdread/nav_types.h>
212 -#  include <libdvdread/ifo_types.h> /* For vm_cmd_t */
213 +#  include <dvdread/dvd_reader.h>
214 +#  include <dvdread/nav_types.h>
215 +#  include <dvdread/ifo_types.h> /* For vm_cmd_t */
216  #  include <dvdnav/dvdnav_events.h>
217  #endif
218  
219 Index: configure.ac
220 ===================================================================
221 --- configure.ac        (revision 1096)
222 +++ configure.ac        (working copy)
223 @@ -155,26 +155,62 @@
224  AC_SUBST(THREAD_CFLAGS)
225  
226  dnl ---------------------------------------------
227 -dnl dynamic linker
228 +dnl dvdcss checking
229  dnl ---------------------------------------------
230 -case $host in
231 -  *mingw32*)
232 -    CFLAGS="-idirafter \$(top_srcdir)/msvc/include $CFLAGS"
233 -    LDFLAGS="-no-undefined $LDFLAGS"
234 -    ;;
235 -  *cygwin*)
236 -    LDFLAGS="-no-undefined $LDFLAGS"
237 -    ;;
238 -  *)
239 -    AC_CHECK_LIB(c, dlopen,
240 -                DYNAMIC_LD_LIBS="",
241 -                AC_CHECK_LIB(dl, dlopen,
242 -                             DYNAMIC_LD_LIBS="-ldl",
243 -                             AC_MSG_ERROR(dynamic linker needed)))
244 -    AC_SUBST(DYNAMIC_LD_LIBS)
245 -    ;;
246 -esac
247 +AC_ARG_WITH( [libdvdcss],
248 +    [  --with-libdvdcss[=PATH]    force linking against libdvdcss],
249 +    [if test x"$withval" != xno; then
250 +       link_dvdcss=yes
251 +     fi
252 +     if test x"$withval" != xyes; then
253 +       dvdcss_path=$withval
254 +     fi])
255  
256 +if test x"$link_dvdcss" != xyes; then
257 +dnl dlopen libdvdcss
258 +  AC_CHECK_FUNC( dlopen,
259 +    [DL_LIBS="" ],
260 +    AC_CHECK_LIB( dl, dlopen,
261 +      [DL_LIBS=-ld ],
262 +      AC_MSG_ERROR(You need libdl (dlopen))
263 +    )
264 +  )
265 +else
266 +dnl link with libdvdcss
267 +  if test -z "$dvdcss_path"; then
268 +    AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
269 +      [ CSS_LIBS=-ldvdcss ],
270 +      AC_MSG_ERROR(You need libdvdcss.so.2 or later)
271 +    )
272 +    AC_CHECK_HEADERS(dvdcss/dvdcss.h,
273 +      [ ],
274 +      AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
275 +    )
276 +  else
277 +    saved_CFLAGS=$CFLAGS
278 +    CFLAGS="$CFLAGS -L$dvdcss_path/lib"
279 +    AC_CHECK_LIB(dvdcss, dvdcss_interface_2,
280 +      [ CSS_LIBS="-L$dvdcss_path/lib -R$dvdcss_path/lib -ldvdcss"
281 +        CSS_CFLAGS=-I$dvdcss_path/include ],
282 +      AC_MSG_ERROR(You need libdvdcss.so.2 or later)
283 +    )
284 +    CFLAGS=$saved_CFLAGS
285 +    dnl -w added to shutup GCC3.1's cpp warning about -I/usr/local
286 +    saved_CPPFLAGS=$CPPFLAGS
287 +    CPPFLAGS="-w $CPPFLAGS -I$dvdcss_path/include"
288 +    AC_CHECK_HEADERS(dvdcss/dvdcss.h,
289 +      [ ],
290 +      AC_MSG_ERROR(You need libdvdcss (dvdcss.h))
291 +    )
292 +    CPPFLAGS=$saved_CPPFLAGS
293 +  fi
294 +fi
295 +
296 +AC_SUBST(DL_LIBS)
297 +AC_SUBST(CSS_LIBS)
298 +AC_SUBST(CSS_CFLAGS)
299
300 +
301  dnl ---------------------------------------------
302  dnl cflags
303  dnl ---------------------------------------------
304 Index: examples/menus.c
305 ===================================================================
306 --- examples/menus.c    (revision 1096)
307 +++ examples/menus.c    (working copy)
308 @@ -28,9 +28,9 @@
309  #include <sys/stat.h>
310  #include <fcntl.h>
311  #include "dvd_types.h"
312 -#include <libdvdread/dvd_reader.h>
313 -#include <libdvdread/nav_types.h>
314 -#include <libdvdread/ifo_types.h> /* For vm_cmd_t */
315 +#include <dvdread/dvd_reader.h>
316 +#include <dvdread/nav_types.h>
317 +#include <dvdread/ifo_types.h> /* For vm_cmd_t */
318  #include "dvdnav.h"
319  #include "dvdnav_events.h"
320  
321 Index: examples/Makefile.am
322 ===================================================================
323 --- examples/Makefile.am        (revision 1096)
324 +++ examples/Makefile.am        (working copy)
325 @@ -8,7 +8,7 @@
326  
327  menus_SOURCES = menus.c
328  menus_LDFLAGS = -L$(top_srcdir)/src/ -ldvdread
329 -menus_LDADD   = $(DVDNAV_LIB)
330 +menus_LDADD   = $(DVDNAV_LIB) $(CSS_LIBS)
331  
332  $(DVDNAV_LIB):
333         @cd $(top_builddir)/src/ && $(MAKE) libdvdnav.la