mirror of https://github.com/mpv-player/mpv
597 lines
17 KiB
Diff
597 lines
17 KiB
Diff
--- bsdi_ioctl.c 2003-03-10 00:34:10.000000000 +0100
|
||
+++ bsdi_ioctl.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -4,6 +4,10 @@
|
||
* Hacked version of the linux cdrom.c kernel module - everything except the
|
||
* DVD handling ripped out and the rest rewritten to use raw SCSI commands
|
||
* on BSD/OS 4.2 (but should work with earlier versions as well).
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*/
|
||
|
||
#include <sys/types.h>
|
||
@@ -694,7 +698,7 @@
|
||
struct cdrom_tocentry entry;
|
||
int ret, i;
|
||
|
||
- bzero(tracks, sizeof (*tracks));
|
||
+ memset(tracks, 0, sizeof (*tracks));
|
||
ret = cdrom_ioctl(fd, CDROMREADTOCHDR, &header);
|
||
/*
|
||
* This whole business is a crock anyhow so we don't bother distinguishing
|
||
--- common.h 2003-06-13 19:33:35.000000000 +0200
|
||
+++ common.h 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -3,7 +3,10 @@
|
||
* Collection of useful common types and macros definitions
|
||
*****************************************************************************
|
||
* Copyright (C) 1998, 1999, 2000 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* Authors: Samuel Hocevar <sam@via.ecp.fr>
|
||
* Vincent Seguin <seguin@via.ecp.fr>
|
||
@@ -27,21 +30,10 @@
|
||
/*****************************************************************************
|
||
* Basic types definitions
|
||
*****************************************************************************/
|
||
-#if defined( HAVE_STDINT_H )
|
||
-# include <stdint.h>
|
||
-#elif defined( HAVE_INTTYPES_H )
|
||
-# include <inttypes.h>
|
||
-#elif defined( SYS_CYGWIN )
|
||
-# include <sys/types.h>
|
||
- /* Cygwin only defines half of these... */
|
||
- typedef u_int8_t uint8_t;
|
||
- typedef u_int32_t uint32_t;
|
||
-#else
|
||
- /* Fallback types (very x86-centric, sorry) */
|
||
- typedef unsigned char uint8_t;
|
||
- typedef signed char int8_t;
|
||
- typedef unsigned int uint32_t;
|
||
- typedef signed int int32_t;
|
||
+#include <inttypes.h>
|
||
+
|
||
+#ifdef __CYGWIN__
|
||
+#define SYS_CYGWIN
|
||
#endif
|
||
|
||
#if defined( WIN32 )
|
||
--- css.c 2003-07-29 01:37:06.000000000 +0200
|
||
+++ css.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -2,7 +2,10 @@
|
||
* css.c: Functions for DVD authentication and descrambling
|
||
*****************************************************************************
|
||
* Copyright (C) 1999-2001 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* Author: St<53>phane Borel <stef@via.ecp.fr>
|
||
* H<>kan Hjort <d95hjort@dtek.chalmers.se>
|
||
@@ -40,19 +43,11 @@
|
||
#include <string.h>
|
||
#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
-#ifdef HAVE_SYS_PARAM_H
|
||
-# include <sys/param.h>
|
||
-#endif
|
||
-#ifdef HAVE_UNISTD_H
|
||
-# include <unistd.h>
|
||
-#endif
|
||
#include <fcntl.h>
|
||
+#include <unistd.h>
|
||
+#include <limits.h>
|
||
|
||
-#ifdef HAVE_LIMITS_H
|
||
-# include <limits.h>
|
||
-#endif
|
||
-
|
||
-#include "dvdcss/dvdcss.h"
|
||
+#include "dvdcss.h"
|
||
|
||
#include "common.h"
|
||
#include "css.h"
|
||
--- device.c 2003-07-29 01:37:06.000000000 +0200
|
||
+++ device.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -2,7 +2,10 @@
|
||
* device.h: DVD device access
|
||
*****************************************************************************
|
||
* Copyright (C) 1998-2002 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* Authors: St<53>phane Borel <stef@via.ecp.fr>
|
||
* Samuel Hocevar <sam@zoy.org>
|
||
@@ -33,18 +36,9 @@
|
||
#include <string.h>
|
||
#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
-#ifdef HAVE_SYS_PARAM_H
|
||
-# include <sys/param.h>
|
||
-#endif
|
||
#include <fcntl.h>
|
||
-
|
||
-#ifdef HAVE_UNISTD_H
|
||
-# include <unistd.h>
|
||
-#endif
|
||
-
|
||
-#ifdef HAVE_LIMITS_H
|
||
-# include <limits.h>
|
||
-#endif
|
||
+#include <unistd.h>
|
||
+#include <limits.h>
|
||
|
||
#if defined( WIN32 ) && !defined( SYS_CYGWIN )
|
||
# include <io.h> /* read() */
|
||
@@ -52,7 +46,7 @@
|
||
# include <sys/uio.h> /* struct iovec */
|
||
#endif
|
||
|
||
-#include "dvdcss/dvdcss.h"
|
||
+#include "dvdcss.h"
|
||
|
||
#include "common.h"
|
||
#include "css.h"
|
||
@@ -143,8 +137,11 @@
|
||
_dvdcss_debug( dvdcss, psz_debug );
|
||
|
||
#if defined( WIN32 )
|
||
- /* If device is not "X:", we are actually opening a file. */
|
||
- dvdcss->b_file = !psz_device[0] || psz_device[1] != ':' || psz_device[2];
|
||
+ dvdcss->b_file = 1;
|
||
+ /* If device is "X:" or "X:\", we are not actually opening a file. */
|
||
+ if (psz_device[0] && psz_device[1] == ':' &&
|
||
+ (!psz_device[2] || (psz_device[2] == '\\' && !psz_device[3])))
|
||
+ dvdcss->b_file = 0;
|
||
|
||
/* Initialize readv temporary buffer */
|
||
dvdcss->p_readv_buffer = NULL;
|
||
--- error.c 2003-03-10 01:15:31.000000000 +0100
|
||
+++ error.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -2,7 +2,10 @@
|
||
* error.c: error management functions
|
||
*****************************************************************************
|
||
* Copyright (C) 1998-2002 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* Author: Samuel Hocevar <sam@zoy.org>
|
||
*
|
||
@@ -25,16 +28,9 @@
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
+#include <limits.h>
|
||
|
||
-#ifdef HAVE_SYS_PARAM_H
|
||
-# include <sys/param.h>
|
||
-#endif
|
||
-
|
||
-#ifdef HAVE_LIMITS_H
|
||
-# include <limits.h>
|
||
-#endif
|
||
-
|
||
-#include "dvdcss/dvdcss.h"
|
||
+#include "dvdcss.h"
|
||
|
||
#include "common.h"
|
||
#include "css.h"
|
||
--- ioctl.c 2003-03-10 00:34:10.000000000 +0100
|
||
+++ ioctl.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -2,7 +2,10 @@
|
||
* ioctl.c: DVD ioctl replacement function
|
||
*****************************************************************************
|
||
* Copyright (C) 1999-2001 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* Authors: Markus Kuespert <ltlBeBoy@beosmail.com>
|
||
* Samuel Hocevar <sam@zoy.org>
|
||
@@ -76,6 +79,7 @@
|
||
# include <sys/scsi.h>
|
||
#endif
|
||
#ifdef SOLARIS_USCSI
|
||
+# include <dlfcn.h>
|
||
# include <unistd.h>
|
||
# include <stropts.h>
|
||
# include <sys/scsi/scsi_types.h>
|
||
@@ -112,6 +116,7 @@
|
||
*****************************************************************************/
|
||
#if defined( SOLARIS_USCSI )
|
||
static void SolarisInitUSCSI( struct uscsi_cmd *p_sc, int i_type );
|
||
+static int SolarisSendUSCSI( int fd, struct uscsi_cmd *p_sc );
|
||
#endif
|
||
|
||
/*****************************************************************************
|
||
@@ -192,7 +197,7 @@
|
||
rs_cdb.cdb_opaque[ 6 ] = i_layer;
|
||
rs_cdb.cdb_opaque[ 7 ] = DVD_STRUCT_COPYRIGHT;
|
||
|
||
- i_ret = ioctl(i_fd, USCSICMD, &sc);
|
||
+ i_ret = SolarisSendUSCSI(i_fd, &sc);
|
||
|
||
if( i_ret < 0 || sc.uscsi_status ) {
|
||
i_ret = -1;
|
||
@@ -351,7 +356,7 @@
|
||
rs_cdb.cdb_opaque[ 7 ] = DVD_STRUCT_DISCKEY;
|
||
rs_cdb.cdb_opaque[ 10 ] = *pi_agid << 6;
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -513,7 +518,7 @@
|
||
rs_cdb.cdb_opaque[ 5 ] = ( i_pos ) & 0xff;
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_TITLE_KEY | (*pi_agid << 6);
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -665,7 +670,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_AGID | (*pi_agid << 6);
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -787,7 +792,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_CHALLENGE | (*pi_agid << 6);
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -921,7 +926,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_ASF;
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -1054,7 +1059,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_KEY1 | (*pi_agid << 6);
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -1175,7 +1180,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_INVALIDATE_AGID | (*pi_agid << 6);
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -1299,7 +1304,7 @@
|
||
p_buffer[ 1 ] = 0xe;
|
||
memcpy( p_buffer + 4, p_challenge, DVD_CHALLENGE_SIZE );
|
||
|
||
- if( ioctl( i_fd, USCSICMD, &sc ) < 0 || sc.uscsi_status )
|
||
+ if( SolarisSendUSCSI( i_fd, &sc ) < 0 || sc.uscsi_status )
|
||
{
|
||
return -1;
|
||
}
|
||
@@ -1436,7 +1441,7 @@
|
||
p_buffer[ 1 ] = 0xa;
|
||
memcpy( p_buffer + 4, p_key, DVD_KEY_SIZE );
|
||
|
||
- if( ioctl( i_fd, USCSICMD, &sc ) < 0 || sc.uscsi_status )
|
||
+ if( SolarisSendUSCSI( i_fd, &sc ) < 0 || sc.uscsi_status )
|
||
{
|
||
return -1;
|
||
}
|
||
@@ -1578,7 +1583,7 @@
|
||
|
||
rs_cdb.cdb_opaque[ 10 ] = DVD_REPORT_RPC;
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -1728,7 +1733,7 @@
|
||
p_buffer[ 1 ] = 6;
|
||
p_buffer[ 4 ] = i_pdrc;
|
||
|
||
- i_ret = ioctl( i_fd, USCSICMD, &sc );
|
||
+ i_ret = SolarisSendUSCSI( i_fd, &sc );
|
||
|
||
if( i_ret < 0 || sc.uscsi_status )
|
||
{
|
||
@@ -1901,6 +1906,54 @@
|
||
|
||
USCSI_TIMEOUT( p_sc, 15 );
|
||
}
|
||
+
|
||
+/*****************************************************************************
|
||
+ * SolarisSendUSCSI: send a USCSICMD structure to the Solaris kernel
|
||
+ * for execution
|
||
+ *****************************************************************************
|
||
+ * When available, this function uses the function smedia_uscsi_cmd()
|
||
+ * from solaris' libsmedia library (solaris 9 or newer) to execute the
|
||
+ * USCSI command. smedia_uscsi_cmd() allows USCSI commands for
|
||
+ * non-root users on removable media devices on solaris 9; sending the
|
||
+ * USCSI command directly to the device using the USCSICMD ioctl fails
|
||
+ * with an EPERM error on solaris 9.
|
||
+ *
|
||
+ * The code will fall back to the USCSICMD ioctl method, when
|
||
+ * libsmedia.so is not available or does not export the
|
||
+ * smedia_uscsi_cmd() function (on solaris releases upto and including
|
||
+ * solaris 8). Fortunatelly, on these old releases non-root users are
|
||
+ * allowed to perform USCSICMD ioctls on removable media devices.
|
||
+ *****************************************************************************/
|
||
+static int SolarisSendUSCSI( int i_fd, struct uscsi_cmd *p_sc ) {
|
||
+ void *sm_hdl;
|
||
+ static int initialized;
|
||
+ static void* (*sm_get_handle)(int32_t);
|
||
+ static int (*sm_release_handle)(void*);
|
||
+ static int (*sm_uscsi_cmd)(void*, struct uscsi_cmd *);
|
||
+
|
||
+ if (!initialized)
|
||
+ {
|
||
+ void *smedia_lib;
|
||
+
|
||
+ smedia_lib = dlopen("libsmedia.so", RTLD_NOW);
|
||
+ if (smedia_lib) {
|
||
+ sm_get_handle = dlsym(smedia_lib, "smedia_get_handle");
|
||
+ sm_release_handle = dlsym(smedia_lib, "smedia_release_handle");
|
||
+ sm_uscsi_cmd = dlsym(smedia_lib, "smedia_uscsi_cmd");
|
||
+ }
|
||
+ initialized = 1;
|
||
+ }
|
||
+
|
||
+ if (sm_get_handle && sm_uscsi_cmd && sm_release_handle
|
||
+ && (sm_hdl = sm_get_handle(i_fd)))
|
||
+ {
|
||
+ int i_ret = sm_uscsi_cmd(sm_hdl, p_sc);
|
||
+ sm_release_handle(sm_hdl);
|
||
+ return i_ret;
|
||
+ }
|
||
+
|
||
+ return ioctl( i_fd, USCSICMD, p_sc );
|
||
+}
|
||
#endif
|
||
|
||
#if defined( WIN32 )
|
||
--- libdvdcss.c 2003-06-22 16:08:53.000000000 +0200
|
||
+++ libdvdcss.c 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -5,7 +5,10 @@
|
||
* H<>kan Hjort <d95hjort@dtek.chalmers.se>
|
||
*
|
||
* Copyright (C) 1998-2002 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* This program is free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
@@ -22,7 +25,7 @@
|
||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
|
||
*/
|
||
|
||
-/**
|
||
+/*
|
||
* \mainpage libdvdcss developer documentation
|
||
*
|
||
* \section intro Introduction
|
||
@@ -87,10 +90,7 @@
|
||
* values. This will speed up descrambling of DVDs which are in the
|
||
* cache. The DVDCSS_CACHE directory is created if it does not exist,
|
||
* and a subdirectory is created named after the DVD's title or
|
||
- * manufacturing date. If DVDCSS_CACHE is not set or is empty, \e libdvdcss
|
||
- * will use the default value which is "${HOME}/.dvdcss/" under Unix and
|
||
- * "C:\Documents and Settings\$USER\Application Data\dvdcss\" under Win32.
|
||
- * The special value "off" disables caching.
|
||
+ * manufacturing date.
|
||
*/
|
||
|
||
/*
|
||
@@ -103,28 +103,12 @@
|
||
#include <string.h>
|
||
#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
-#ifdef HAVE_SYS_PARAM_H
|
||
-# include <sys/param.h>
|
||
-#endif
|
||
-#ifdef HAVE_PWD_H
|
||
-# include <pwd.h>
|
||
-#endif
|
||
#include <fcntl.h>
|
||
#include <errno.h>
|
||
+#include <unistd.h>
|
||
+#include <limits.h>
|
||
|
||
-#ifdef HAVE_UNISTD_H
|
||
-# include <unistd.h>
|
||
-#endif
|
||
-
|
||
-#ifdef HAVE_LIMITS_H
|
||
-# include <limits.h>
|
||
-#endif
|
||
-
|
||
-#ifdef HAVE_DIRECT_H
|
||
-# include <direct.h>
|
||
-#endif
|
||
-
|
||
-#include "dvdcss/dvdcss.h"
|
||
+#include "dvdcss.h"
|
||
|
||
#include "common.h"
|
||
#include "css.h"
|
||
@@ -132,6 +116,12 @@
|
||
#include "ioctl.h"
|
||
#include "device.h"
|
||
|
||
+#ifndef HAVE_MPLAYER
|
||
+ #include "get_path.c"
|
||
+#else
|
||
+ extern char * get_path( char * filename );
|
||
+#endif
|
||
+
|
||
/**
|
||
* \brief Symbol for version checks.
|
||
*
|
||
@@ -234,87 +224,11 @@
|
||
}
|
||
|
||
/*
|
||
- * If DVDCSS_CACHE was not set, try to guess a default value
|
||
- */
|
||
- if( psz_cache == NULL || psz_cache[0] == '\0' )
|
||
- {
|
||
-#ifdef HAVE_DIRECT_H
|
||
- typedef HRESULT( WINAPI *SHGETFOLDERPATH )
|
||
- ( HWND, int, HANDLE, DWORD, LPTSTR );
|
||
-
|
||
-# define CSIDL_FLAG_CREATE 0x8000
|
||
-# define CSIDL_APPDATA 0x1A
|
||
-# define SHGFP_TYPE_CURRENT 0
|
||
-
|
||
- char psz_home[MAX_PATH];
|
||
- HINSTANCE p_dll;
|
||
- SHGETFOLDERPATH p_getpath;
|
||
-
|
||
- *psz_home = '\0';
|
||
-
|
||
- /* Load the shfolder dll to retrieve SHGetFolderPath */
|
||
- p_dll = LoadLibrary( "shfolder.dll" );
|
||
- if( p_dll )
|
||
- {
|
||
- p_getpath = (void*)GetProcAddress( p_dll, "SHGetFolderPathA" );
|
||
- if( p_getpath )
|
||
- {
|
||
- /* Get the "Application Data" folder for the current user */
|
||
- if( p_getpath( NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE,
|
||
- NULL, SHGFP_TYPE_CURRENT, psz_home ) == S_OK )
|
||
- {
|
||
- FreeLibrary( p_dll );
|
||
- }
|
||
- else
|
||
- {
|
||
- *psz_home = '\0';
|
||
- }
|
||
- }
|
||
- FreeLibrary( p_dll );
|
||
- }
|
||
-
|
||
- /* Cache our keys in
|
||
- * C:\Documents and Settings\$USER\Application Data\dvdcss\ */
|
||
- if( *psz_home )
|
||
- {
|
||
- snprintf( psz_buffer, PATH_MAX, "%s/dvdcss", psz_home );
|
||
- psz_buffer[PATH_MAX-1] = '\0';
|
||
- psz_cache = psz_buffer;
|
||
- }
|
||
-#else
|
||
- char *psz_home = NULL;
|
||
-# ifdef HAVE_PWD_H
|
||
- struct passwd *p_pwd;
|
||
-
|
||
- /* Try looking in password file for home dir. */
|
||
- p_pwd = getpwuid(getuid());
|
||
- if( p_pwd )
|
||
- {
|
||
- psz_home = p_pwd->pw_dir;
|
||
- }
|
||
-# endif
|
||
-
|
||
- if( psz_home == NULL )
|
||
- {
|
||
- psz_home = getenv( "HOME" );
|
||
- }
|
||
-
|
||
- /* Cache our keys in ${HOME}/.dvdcss/ */
|
||
- if( psz_home )
|
||
- {
|
||
- snprintf( psz_buffer, PATH_MAX, "%s/.dvdcss", psz_home );
|
||
- psz_buffer[PATH_MAX-1] = '\0';
|
||
- psz_cache = psz_buffer;
|
||
- }
|
||
-#endif
|
||
- }
|
||
-
|
||
- /*
|
||
* Find cache dir from the DVDCSS_CACHE environment variable
|
||
*/
|
||
if( psz_cache != NULL )
|
||
{
|
||
- if( psz_cache[0] == '\0' || !strcmp( psz_cache, "off" ) )
|
||
+ if( psz_cache[0] == '\0' )
|
||
{
|
||
psz_cache = NULL;
|
||
}
|
||
@@ -325,6 +239,7 @@
|
||
psz_cache = NULL;
|
||
}
|
||
}
|
||
+ else psz_cache = get_path( "DVDKeys" );
|
||
|
||
/*
|
||
* Open device
|
||
@@ -465,9 +380,10 @@
|
||
dvdcss->psz_cachefile[0] = '\0';
|
||
goto nocache;
|
||
}
|
||
+ i += sprintf( dvdcss->psz_cachefile + i, "/");
|
||
|
||
- i += sprintf( dvdcss->psz_cachefile + i, "/%s#%s", psz_title,
|
||
- psz_serial );
|
||
+// i += sprintf( dvdcss->psz_cachefile + i, "/%s", psz_data );
|
||
+ i += sprintf( dvdcss->psz_cachefile + i, "/%s#%s", psz_title, psz_serial );
|
||
#if !defined( WIN32 ) || defined( SYS_CYGWIN )
|
||
i_ret = mkdir( dvdcss->psz_cachefile, 0755 );
|
||
#else
|
||
--- dvdcss/dvdcss.h 2003-04-18 20:05:36.000000000 +0200
|
||
+++ dvdcss.h 2005-03-01 07:41:41.000000000 +0100
|
||
@@ -10,7 +10,10 @@
|
||
|
||
/*
|
||
* Copyright (C) 1998-2002 VideoLAN
|
||
- * $Id$
|
||
+ *
|
||
+ * Modified for use with MPlayer, changes contained in libdvdcss_changes.diff.
|
||
+ * detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
||
+ * $Id$
|
||
*
|
||
* This program is free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
@@ -67,6 +70,8 @@
|
||
*/
|
||
extern dvdcss_t dvdcss_open ( char *psz_target );
|
||
extern int dvdcss_close ( dvdcss_t );
|
||
+extern int dvdcss_title ( dvdcss_t,
|
||
+ int i_block );
|
||
extern int dvdcss_seek ( dvdcss_t,
|
||
int i_blocks,
|
||
int i_flags );
|