Mercurial > mplayer.hg
comparison libmpdvdkit2/libdvdcss_changes.diff @ 14861:caf9d95cd508
MPlayer-specific changes to libdvdcss
author | diego |
---|---|
date | Tue, 01 Mar 2005 06:58:15 +0000 |
parents | |
children | d55bd88c2b42 |
comparison
equal
deleted
inserted
replaced
14860:c2ddedd0619e | 14861:caf9d95cd508 |
---|---|
1 --- bsdi_ioctl.c 2003-03-10 00:34:10.000000000 +0100 | |
2 +++ bsdi_ioctl.c 2005-03-01 07:41:41.000000000 +0100 | |
3 @@ -4,6 +4,10 @@ | |
4 * Hacked version of the linux cdrom.c kernel module - everything except the | |
5 * DVD handling ripped out and the rest rewritten to use raw SCSI commands | |
6 * on BSD/OS 4.2 (but should work with earlier versions as well). | |
7 + * | |
8 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
9 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
10 + * $Id$ | |
11 */ | |
12 | |
13 #include <sys/types.h> | |
14 @@ -694,7 +698,7 @@ | |
15 struct cdrom_tocentry entry; | |
16 int ret, i; | |
17 | |
18 - bzero(tracks, sizeof (*tracks)); | |
19 + memset(tracks, 0, sizeof (*tracks)); | |
20 ret = cdrom_ioctl(fd, CDROMREADTOCHDR, &header); | |
21 /* | |
22 * This whole business is a crock anyhow so we don't bother distinguishing | |
23 --- common.h 2003-06-13 19:33:35.000000000 +0200 | |
24 +++ common.h 2005-03-01 07:41:41.000000000 +0100 | |
25 @@ -3,7 +3,10 @@ | |
26 * Collection of useful common types and macros definitions | |
27 ***************************************************************************** | |
28 * Copyright (C) 1998, 1999, 2000 VideoLAN | |
29 - * $Id$ | |
30 + * | |
31 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
32 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
33 + * $Id$ | |
34 * | |
35 * Authors: Samuel Hocevar <sam@via.ecp.fr> | |
36 * Vincent Seguin <seguin@via.ecp.fr> | |
37 @@ -27,21 +30,10 @@ | |
38 /***************************************************************************** | |
39 * Basic types definitions | |
40 *****************************************************************************/ | |
41 -#if defined( HAVE_STDINT_H ) | |
42 -# include <stdint.h> | |
43 -#elif defined( HAVE_INTTYPES_H ) | |
44 -# include <inttypes.h> | |
45 -#elif defined( SYS_CYGWIN ) | |
46 -# include <sys/types.h> | |
47 - /* Cygwin only defines half of these... */ | |
48 - typedef u_int8_t uint8_t; | |
49 - typedef u_int32_t uint32_t; | |
50 -#else | |
51 - /* Fallback types (very x86-centric, sorry) */ | |
52 - typedef unsigned char uint8_t; | |
53 - typedef signed char int8_t; | |
54 - typedef unsigned int uint32_t; | |
55 - typedef signed int int32_t; | |
56 +#include <inttypes.h> | |
57 + | |
58 +#ifdef __CYGWIN__ | |
59 +#define SYS_CYGWIN | |
60 #endif | |
61 | |
62 #if defined( WIN32 ) | |
63 --- css.c 2003-07-29 01:37:06.000000000 +0200 | |
64 +++ css.c 2005-03-01 07:41:41.000000000 +0100 | |
65 @@ -2,7 +2,10 @@ | |
66 * css.c: Functions for DVD authentication and descrambling | |
67 ***************************************************************************** | |
68 * Copyright (C) 1999-2001 VideoLAN | |
69 - * $Id$ | |
70 + * | |
71 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
72 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
73 + * $Id$ | |
74 * | |
75 * Author: Stéphane Borel <stef@via.ecp.fr> | |
76 * Håkan Hjort <d95hjort@dtek.chalmers.se> | |
77 @@ -40,19 +43,11 @@ | |
78 #include <string.h> | |
79 #include <sys/types.h> | |
80 #include <sys/stat.h> | |
81 -#ifdef HAVE_SYS_PARAM_H | |
82 -# include <sys/param.h> | |
83 -#endif | |
84 -#ifdef HAVE_UNISTD_H | |
85 -# include <unistd.h> | |
86 -#endif | |
87 #include <fcntl.h> | |
88 +#include <unistd.h> | |
89 +#include <limits.h> | |
90 | |
91 -#ifdef HAVE_LIMITS_H | |
92 -# include <limits.h> | |
93 -#endif | |
94 - | |
95 -#include "dvdcss/dvdcss.h" | |
96 +#include "dvdcss.h" | |
97 | |
98 #include "common.h" | |
99 #include "css.h" | |
100 --- device.c 2003-07-29 01:37:06.000000000 +0200 | |
101 +++ device.c 2005-03-01 07:41:41.000000000 +0100 | |
102 @@ -2,7 +2,10 @@ | |
103 * device.h: DVD device access | |
104 ***************************************************************************** | |
105 * Copyright (C) 1998-2002 VideoLAN | |
106 - * $Id$ | |
107 + * | |
108 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
109 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
110 + * $Id$ | |
111 * | |
112 * Authors: Stéphane Borel <stef@via.ecp.fr> | |
113 * Samuel Hocevar <sam@zoy.org> | |
114 @@ -33,18 +36,9 @@ | |
115 #include <string.h> | |
116 #include <sys/types.h> | |
117 #include <sys/stat.h> | |
118 -#ifdef HAVE_SYS_PARAM_H | |
119 -# include <sys/param.h> | |
120 -#endif | |
121 #include <fcntl.h> | |
122 - | |
123 -#ifdef HAVE_UNISTD_H | |
124 -# include <unistd.h> | |
125 -#endif | |
126 - | |
127 -#ifdef HAVE_LIMITS_H | |
128 -# include <limits.h> | |
129 -#endif | |
130 +#include <unistd.h> | |
131 +#include <limits.h> | |
132 | |
133 #if defined( WIN32 ) && !defined( SYS_CYGWIN ) | |
134 # include <io.h> /* read() */ | |
135 @@ -52,7 +46,7 @@ | |
136 # include <sys/uio.h> /* struct iovec */ | |
137 #endif | |
138 | |
139 -#include "dvdcss/dvdcss.h" | |
140 +#include "dvdcss.h" | |
141 | |
142 #include "common.h" | |
143 #include "css.h" | |
144 @@ -143,8 +137,11 @@ | |
145 _dvdcss_debug( dvdcss, psz_debug ); | |
146 | |
147 #if defined( WIN32 ) | |
148 - /* If device is not "X:", we are actually opening a file. */ | |
149 - dvdcss->b_file = !psz_device[0] || psz_device[1] != ':' || psz_device[2]; | |
150 + dvdcss->b_file = 1; | |
151 + /* If device is "X:" or "X:\", we are not actually opening a file. */ | |
152 + if (psz_device[0] && psz_device[1] == ':' && | |
153 + (!psz_device[2] || (psz_device[2] == '\\' && !psz_device[3]))) | |
154 + dvdcss->b_file = 0; | |
155 | |
156 /* Initialize readv temporary buffer */ | |
157 dvdcss->p_readv_buffer = NULL; | |
158 --- error.c 2003-03-10 01:15:31.000000000 +0100 | |
159 +++ error.c 2005-03-01 07:41:41.000000000 +0100 | |
160 @@ -2,7 +2,10 @@ | |
161 * error.c: error management functions | |
162 ***************************************************************************** | |
163 * Copyright (C) 1998-2002 VideoLAN | |
164 - * $Id$ | |
165 + * | |
166 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
167 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
168 + * $Id$ | |
169 * | |
170 * Author: Samuel Hocevar <sam@zoy.org> | |
171 * | |
172 @@ -25,16 +28,9 @@ | |
173 | |
174 #include <stdio.h> | |
175 #include <stdlib.h> | |
176 +#include <limits.h> | |
177 | |
178 -#ifdef HAVE_SYS_PARAM_H | |
179 -# include <sys/param.h> | |
180 -#endif | |
181 - | |
182 -#ifdef HAVE_LIMITS_H | |
183 -# include <limits.h> | |
184 -#endif | |
185 - | |
186 -#include "dvdcss/dvdcss.h" | |
187 +#include "dvdcss.h" | |
188 | |
189 #include "common.h" | |
190 #include "css.h" | |
191 --- ioctl.c 2003-03-10 00:34:10.000000000 +0100 | |
192 +++ ioctl.c 2005-03-01 07:41:41.000000000 +0100 | |
193 @@ -2,7 +2,10 @@ | |
194 * ioctl.c: DVD ioctl replacement function | |
195 ***************************************************************************** | |
196 * Copyright (C) 1999-2001 VideoLAN | |
197 - * $Id$ | |
198 + * | |
199 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
200 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
201 + * $Id$ | |
202 * | |
203 * Authors: Markus Kuespert <ltlBeBoy@beosmail.com> | |
204 * Samuel Hocevar <sam@zoy.org> | |
205 @@ -76,6 +79,7 @@ | |
206 # include <sys/scsi.h> | |
207 #endif | |
208 #ifdef SOLARIS_USCSI | |
209 +# include <dlfcn.h> | |
210 # include <unistd.h> | |
211 # include <stropts.h> | |
212 # include <sys/scsi/scsi_types.h> | |
213 @@ -112,6 +116,7 @@ | |
214 *****************************************************************************/ | |
215 #if defined( SOLARIS_USCSI ) | |
216 static void SolarisInitUSCSI( struct uscsi_cmd *p_sc, int i_type ); | |
217 +static int SolarisSendUSCSI( int fd, struct uscsi_cmd *p_sc ); | |
218 #endif | |
219 | |
220 /***************************************************************************** | |
221 @@ -192,7 +197,7 @@ | |
222 rs_cdb.cdb_opaque[ 6 ] = i_layer; | |
223 rs_cdb.cdb_opaque[ 7 ] = DVD_STRUCT_COPYRIGHT; | |
224 | |
225 - i_ret = ioctl(i_fd, USCSICMD, &sc); | |
226 + i_ret = SolarisSendUSCSI(i_fd, &sc); | |
227 | |
228 if( i_ret < 0 || sc.uscsi_status ) { | |
229 i_ret = -1; | |
230 @@ -351,7 +356,7 @@ | |
231 rs_cdb.cdb_opaque[ 7 ] = DVD_STRUCT_DISCKEY; | |
232 rs_cdb.cdb_opaque[ 10 ] = *pi_agid << 6; | |
233 | |
234 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
235 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
236 | |
237 if( i_ret < 0 || sc.uscsi_status ) | |
238 { | |
239 @@ -513,7 +518,7 @@ | |
240 rs_cdb.cdb_opaque[ 5 ] = ( i_pos ) & 0xff; | |
241 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_TITLE_KEY | (*pi_agid << 6); | |
242 | |
243 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
244 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
245 | |
246 if( i_ret < 0 || sc.uscsi_status ) | |
247 { | |
248 @@ -665,7 +670,7 @@ | |
249 | |
250 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_AGID | (*pi_agid << 6); | |
251 | |
252 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
253 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
254 | |
255 if( i_ret < 0 || sc.uscsi_status ) | |
256 { | |
257 @@ -787,7 +792,7 @@ | |
258 | |
259 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_CHALLENGE | (*pi_agid << 6); | |
260 | |
261 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
262 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
263 | |
264 if( i_ret < 0 || sc.uscsi_status ) | |
265 { | |
266 @@ -921,7 +926,7 @@ | |
267 | |
268 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_ASF; | |
269 | |
270 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
271 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
272 | |
273 if( i_ret < 0 || sc.uscsi_status ) | |
274 { | |
275 @@ -1054,7 +1059,7 @@ | |
276 | |
277 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_KEY1 | (*pi_agid << 6); | |
278 | |
279 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
280 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
281 | |
282 if( i_ret < 0 || sc.uscsi_status ) | |
283 { | |
284 @@ -1175,7 +1180,7 @@ | |
285 | |
286 rs_cdb.cdb_opaque[ 10 ] = DVD_INVALIDATE_AGID | (*pi_agid << 6); | |
287 | |
288 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
289 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
290 | |
291 if( i_ret < 0 || sc.uscsi_status ) | |
292 { | |
293 @@ -1299,7 +1304,7 @@ | |
294 p_buffer[ 1 ] = 0xe; | |
295 memcpy( p_buffer + 4, p_challenge, DVD_CHALLENGE_SIZE ); | |
296 | |
297 - if( ioctl( i_fd, USCSICMD, &sc ) < 0 || sc.uscsi_status ) | |
298 + if( SolarisSendUSCSI( i_fd, &sc ) < 0 || sc.uscsi_status ) | |
299 { | |
300 return -1; | |
301 } | |
302 @@ -1436,7 +1441,7 @@ | |
303 p_buffer[ 1 ] = 0xa; | |
304 memcpy( p_buffer + 4, p_key, DVD_KEY_SIZE ); | |
305 | |
306 - if( ioctl( i_fd, USCSICMD, &sc ) < 0 || sc.uscsi_status ) | |
307 + if( SolarisSendUSCSI( i_fd, &sc ) < 0 || sc.uscsi_status ) | |
308 { | |
309 return -1; | |
310 } | |
311 @@ -1578,7 +1583,7 @@ | |
312 | |
313 rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_RPC; | |
314 | |
315 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
316 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
317 | |
318 if( i_ret < 0 || sc.uscsi_status ) | |
319 { | |
320 @@ -1728,7 +1733,7 @@ | |
321 p_buffer[ 1 ] = 6; | |
322 p_buffer[ 4 ] = i_pdrc; | |
323 | |
324 - i_ret = ioctl( i_fd, USCSICMD, &sc ); | |
325 + i_ret = SolarisSendUSCSI( i_fd, &sc ); | |
326 | |
327 if( i_ret < 0 || sc.uscsi_status ) | |
328 { | |
329 @@ -1901,6 +1906,54 @@ | |
330 | |
331 USCSI_TIMEOUT( p_sc, 15 ); | |
332 } | |
333 + | |
334 +/***************************************************************************** | |
335 + * SolarisSendUSCSI: send a USCSICMD structure to the Solaris kernel | |
336 + * for execution | |
337 + ***************************************************************************** | |
338 + * When available, this function uses the function smedia_uscsi_cmd() | |
339 + * from solaris' libsmedia library (solaris 9 or newer) to execute the | |
340 + * USCSI command. smedia_uscsi_cmd() allows USCSI commands for | |
341 + * non-root users on removable media devices on solaris 9; sending the | |
342 + * USCSI command directly to the device using the USCSICMD ioctl fails | |
343 + * with an EPERM error on solaris 9. | |
344 + * | |
345 + * The code will fall back to the USCSICMD ioctl method, when | |
346 + * libsmedia.so is not available or does not export the | |
347 + * smedia_uscsi_cmd() function (on solaris releases upto and including | |
348 + * solaris 8). Fortunatelly, on these old releases non-root users are | |
349 + * allowed to perform USCSICMD ioctls on removable media devices. | |
350 + *****************************************************************************/ | |
351 +static int SolarisSendUSCSI( int i_fd, struct uscsi_cmd *p_sc ) { | |
352 + void *sm_hdl; | |
353 + static int initialized; | |
354 + static void* (*sm_get_handle)(int32_t); | |
355 + static int (*sm_release_handle)(void*); | |
356 + static int (*sm_uscsi_cmd)(void*, struct uscsi_cmd *); | |
357 + | |
358 + if (!initialized) | |
359 + { | |
360 + void *smedia_lib; | |
361 + | |
362 + smedia_lib = dlopen("libsmedia.so", RTLD_NOW); | |
363 + if (smedia_lib) { | |
364 + sm_get_handle = dlsym(smedia_lib, "smedia_get_handle"); | |
365 + sm_release_handle = dlsym(smedia_lib, "smedia_release_handle"); | |
366 + sm_uscsi_cmd = dlsym(smedia_lib, "smedia_uscsi_cmd"); | |
367 + } | |
368 + initialized = 1; | |
369 + } | |
370 + | |
371 + if (sm_get_handle && sm_uscsi_cmd && sm_release_handle | |
372 + && (sm_hdl = sm_get_handle(i_fd))) | |
373 + { | |
374 + int i_ret = sm_uscsi_cmd(sm_hdl, p_sc); | |
375 + sm_release_handle(sm_hdl); | |
376 + return i_ret; | |
377 + } | |
378 + | |
379 + return ioctl( i_fd, USCSICMD, p_sc ); | |
380 +} | |
381 #endif | |
382 | |
383 #if defined( WIN32 ) | |
384 --- libdvdcss.c 2003-06-22 16:08:53.000000000 +0200 | |
385 +++ libdvdcss.c 2005-03-01 07:41:41.000000000 +0100 | |
386 @@ -5,7 +5,10 @@ | |
387 * Håkan Hjort <d95hjort@dtek.chalmers.se> | |
388 * | |
389 * Copyright (C) 1998-2002 VideoLAN | |
390 - * $Id$ | |
391 + * | |
392 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
393 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
394 + * $Id$ | |
395 * | |
396 * This program is free software; you can redistribute it and/or modify | |
397 * it under the terms of the GNU General Public License as published by | |
398 @@ -22,7 +25,7 @@ | |
399 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. | |
400 */ | |
401 | |
402 -/** | |
403 +/* | |
404 * \mainpage libdvdcss developer documentation | |
405 * | |
406 * \section intro Introduction | |
407 @@ -87,10 +90,7 @@ | |
408 * values. This will speed up descrambling of DVDs which are in the | |
409 * cache. The DVDCSS_CACHE directory is created if it does not exist, | |
410 * and a subdirectory is created named after the DVD's title or | |
411 - * manufacturing date. If DVDCSS_CACHE is not set or is empty, \e libdvdcss | |
412 - * will use the default value which is "${HOME}/.dvdcss/" under Unix and | |
413 - * "C:\Documents and Settings\$USER\Application Data\dvdcss\" under Win32. | |
414 - * The special value "off" disables caching. | |
415 + * manufacturing date. | |
416 */ | |
417 | |
418 /* | |
419 @@ -103,28 +103,12 @@ | |
420 #include <string.h> | |
421 #include <sys/types.h> | |
422 #include <sys/stat.h> | |
423 -#ifdef HAVE_SYS_PARAM_H | |
424 -# include <sys/param.h> | |
425 -#endif | |
426 -#ifdef HAVE_PWD_H | |
427 -# include <pwd.h> | |
428 -#endif | |
429 #include <fcntl.h> | |
430 #include <errno.h> | |
431 +#include <unistd.h> | |
432 +#include <limits.h> | |
433 | |
434 -#ifdef HAVE_UNISTD_H | |
435 -# include <unistd.h> | |
436 -#endif | |
437 - | |
438 -#ifdef HAVE_LIMITS_H | |
439 -# include <limits.h> | |
440 -#endif | |
441 - | |
442 -#ifdef HAVE_DIRECT_H | |
443 -# include <direct.h> | |
444 -#endif | |
445 - | |
446 -#include "dvdcss/dvdcss.h" | |
447 +#include "dvdcss.h" | |
448 | |
449 #include "common.h" | |
450 #include "css.h" | |
451 @@ -132,6 +116,12 @@ | |
452 #include "ioctl.h" | |
453 #include "device.h" | |
454 | |
455 +#ifndef HAVE_MPLAYER | |
456 + #include "get_path.c" | |
457 +#else | |
458 + extern char * get_path( char * filename ); | |
459 +#endif | |
460 + | |
461 /** | |
462 * \brief Symbol for version checks. | |
463 * | |
464 @@ -234,87 +224,11 @@ | |
465 } | |
466 | |
467 /* | |
468 - * If DVDCSS_CACHE was not set, try to guess a default value | |
469 - */ | |
470 - if( psz_cache == NULL || psz_cache[0] == '\0' ) | |
471 - { | |
472 -#ifdef HAVE_DIRECT_H | |
473 - typedef HRESULT( WINAPI *SHGETFOLDERPATH ) | |
474 - ( HWND, int, HANDLE, DWORD, LPTSTR ); | |
475 - | |
476 -# define CSIDL_FLAG_CREATE 0x8000 | |
477 -# define CSIDL_APPDATA 0x1A | |
478 -# define SHGFP_TYPE_CURRENT 0 | |
479 - | |
480 - char psz_home[MAX_PATH]; | |
481 - HINSTANCE p_dll; | |
482 - SHGETFOLDERPATH p_getpath; | |
483 - | |
484 - *psz_home = '\0'; | |
485 - | |
486 - /* Load the shfolder dll to retrieve SHGetFolderPath */ | |
487 - p_dll = LoadLibrary( "shfolder.dll" ); | |
488 - if( p_dll ) | |
489 - { | |
490 - p_getpath = (void*)GetProcAddress( p_dll, "SHGetFolderPathA" ); | |
491 - if( p_getpath ) | |
492 - { | |
493 - /* Get the "Application Data" folder for the current user */ | |
494 - if( p_getpath( NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, | |
495 - NULL, SHGFP_TYPE_CURRENT, psz_home ) == S_OK ) | |
496 - { | |
497 - FreeLibrary( p_dll ); | |
498 - } | |
499 - else | |
500 - { | |
501 - *psz_home = '\0'; | |
502 - } | |
503 - } | |
504 - FreeLibrary( p_dll ); | |
505 - } | |
506 - | |
507 - /* Cache our keys in | |
508 - * C:\Documents and Settings\$USER\Application Data\dvdcss\ */ | |
509 - if( *psz_home ) | |
510 - { | |
511 - snprintf( psz_buffer, PATH_MAX, "%s/dvdcss", psz_home ); | |
512 - psz_buffer[PATH_MAX-1] = '\0'; | |
513 - psz_cache = psz_buffer; | |
514 - } | |
515 -#else | |
516 - char *psz_home = NULL; | |
517 -# ifdef HAVE_PWD_H | |
518 - struct passwd *p_pwd; | |
519 - | |
520 - /* Try looking in password file for home dir. */ | |
521 - p_pwd = getpwuid(getuid()); | |
522 - if( p_pwd ) | |
523 - { | |
524 - psz_home = p_pwd->pw_dir; | |
525 - } | |
526 -# endif | |
527 - | |
528 - if( psz_home == NULL ) | |
529 - { | |
530 - psz_home = getenv( "HOME" ); | |
531 - } | |
532 - | |
533 - /* Cache our keys in ${HOME}/.dvdcss/ */ | |
534 - if( psz_home ) | |
535 - { | |
536 - snprintf( psz_buffer, PATH_MAX, "%s/.dvdcss", psz_home ); | |
537 - psz_buffer[PATH_MAX-1] = '\0'; | |
538 - psz_cache = psz_buffer; | |
539 - } | |
540 -#endif | |
541 - } | |
542 - | |
543 - /* | |
544 * Find cache dir from the DVDCSS_CACHE environment variable | |
545 */ | |
546 if( psz_cache != NULL ) | |
547 { | |
548 - if( psz_cache[0] == '\0' || !strcmp( psz_cache, "off" ) ) | |
549 + if( psz_cache[0] == '\0' ) | |
550 { | |
551 psz_cache = NULL; | |
552 } | |
553 @@ -325,6 +239,7 @@ | |
554 psz_cache = NULL; | |
555 } | |
556 } | |
557 + else psz_cache = get_path( "DVDKeys" ); | |
558 | |
559 /* | |
560 * Open device | |
561 @@ -465,9 +380,10 @@ | |
562 dvdcss->psz_cachefile[0] = '\0'; | |
563 goto nocache; | |
564 } | |
565 + i += sprintf( dvdcss->psz_cachefile + i, "/"); | |
566 | |
567 - i += sprintf( dvdcss->psz_cachefile + i, "/%s#%s", psz_title, | |
568 - psz_serial ); | |
569 +// i += sprintf( dvdcss->psz_cachefile + i, "/%s", psz_data ); | |
570 + i += sprintf( dvdcss->psz_cachefile + i, "/%s#%s", psz_title, psz_serial ); | |
571 #if !defined( WIN32 ) || defined( SYS_CYGWIN ) | |
572 i_ret = mkdir( dvdcss->psz_cachefile, 0755 ); | |
573 #else | |
574 --- dvdcss/dvdcss.h 2003-04-18 20:05:36.000000000 +0200 | |
575 +++ dvdcss.h 2005-03-01 07:41:41.000000000 +0100 | |
576 @@ -10,7 +10,10 @@ | |
577 | |
578 /* | |
579 * Copyright (C) 1998-2002 VideoLAN | |
580 - * $Id$ | |
581 + * | |
582 + * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff. | |
583 + * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/ | |
584 + * $Id$ | |
585 * | |
586 * This program is free software; you can redistribute it and/or modify | |
587 * it under the terms of the GNU General Public License as published by | |
588 @@ -67,6 +70,8 @@ | |
589 */ | |
590 extern dvdcss_t dvdcss_open ( char *psz_target ); | |
591 extern int dvdcss_close ( dvdcss_t ); | |
592 +extern int dvdcss_title ( dvdcss_t, | |
593 + int i_block ); | |
594 extern int dvdcss_seek ( dvdcss_t, | |
595 int i_blocks, | |
596 int i_flags ); |