ref: eeaf7ef062e799d49c8d56db3c7938acfa81e8ce
parent: 9ae8f9d21ccad4155c7d379e071b04cb9712041b
author: Sam Hocevar <sam@videolan.org>
date: Tue Sep 9 09:17:24 EDT 2003
* src/css.c, src/device.c: more meaningful error messages.
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
AC_C_INLINE
AC_TYPE_SIZE_T
-AC_CHECK_HEADERS(unistd.h sys/param.h limits.h pwd.h)
+AC_CHECK_HEADERS(unistd.h sys/param.h limits.h pwd.h errno.h)
dnl
dnl Check the operating system
--- a/src/css.c
+++ b/src/css.c
@@ -2,7 +2,7 @@
* css.c: Functions for DVD authentication and descrambling
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: css.c,v 1.27 2003/09/09 10:03:48 sam Exp $
+ * $Id: css.c,v 1.28 2003/09/09 13:17:24 sam Exp $
*
* Author: St�phane Borel <stef@via.ecp.fr>
* H�kan Hjort <d95hjort@dtek.chalmers.se>
@@ -147,17 +147,16 @@
i_ret = ioctl_ReportAgid( dvdcss->i_fd, &dvdcss->css.i_agid );
/* We might have to reset hung authentication processes in the drive
- by invalidating the corresponding AGID'. As long as we haven't got
- an AGID, invalidate one (in sequence) and try again. */
+ * by invalidating the corresponding AGID'. As long as we haven't got
+ * an AGID, invalidate one (in sequence) and try again. */
for( i = 0; i_ret == -1 && i < 4 ; ++i )
{
- sprintf( psz_warning,
- "ioctl ReportAgid failed, invalidating AGID %d", i );
- print_debug( dvdcss, psz_warning );
+ print_debug( dvdcss, "ioctl ReportAgid failed, "
+ "invalidating AGID %d", i );
/* This is really _not good_, should be handled by the OS.
- Invalidating an AGID could make another process fail some
- where in it's authentication process. */
+ * Invalidating an AGID could make another process fail somewhere
+ * in its authentication process. */
dvdcss->css.i_agid = i;
ioctl_InvalidateAgid( dvdcss->i_fd, &dvdcss->css.i_agid );
@@ -213,9 +212,7 @@
if( memcmp( p_key_check, p_key1, KEY_SIZE ) == 0 )
{
- snprintf( psz_warning, sizeof(psz_warning),
- "drive authenticated, using variant %d", i );
- print_debug( dvdcss, psz_warning );
+ print_debug( dvdcss, "drive authenticated, using variant %d", i );
i_variant = i;
break;
}
@@ -275,11 +272,8 @@
*****************************************************************************/
static void PrintKey( dvdcss_t dvdcss, char *prefix, uint8_t const *data )
{
- char psz_output[80];
-
- sprintf( psz_output, "%s%02x:%02x:%02x:%02x:%02x", prefix,
- data[0], data[1], data[2], data[3], data[4] );
- print_debug( dvdcss, psz_output );
+ print_debug( dvdcss, "%s%02x:%02x:%02x:%02x:%02x", prefix,
+ data[0], data[1], data[2], data[3], data[4] );
}
/*****************************************************************************
@@ -509,7 +503,8 @@
* read the title key and decrypt it.
*/
- print_debug( dvdcss, "getting title key the classic way" );
+ print_debug( dvdcss, "getting title key at block %i the classic way",
+ i_pos );
/* We need to authenticate again every time to get a new session key */
if( GetBusKey( dvdcss ) < 0 )
@@ -1413,7 +1408,7 @@
int b_read_error = 0;
int i_ret;
- print_debug( dvdcss, "cracking title key" );
+ print_debug( dvdcss, "cracking title key at block %i", i_pos );
i_tries = 0;
i_success = 0;
@@ -1439,8 +1434,8 @@
}
else if( !b_read_error )
{
- print_debug( dvdcss, "read error, resorting to secret "
- "arcanes to recover" );
+ print_debug( dvdcss, "read error at block %i, resorting to "
+ "secret arcanes to recover", i_pos );
/* Reset the drive before trying to continue */
_dvdcss_close( dvdcss );
@@ -1457,7 +1452,8 @@
* For now, allow all blocks that begin with a start code. */
if( memcmp( p_buf, p_packstart, 3 ) )
{
- print_debug( dvdcss, "non MPEG block found (end of title)" );
+ print_debug( dvdcss, "non MPEG block found at block %i "
+ "(end of title)", i_pos );
break;
}
@@ -1491,7 +1487,7 @@
/* Emit a progress indication now and then. */
if( !( i_reads & 0xfff ) )
{
- print_debug( dvdcss, "still cracking..." );
+ print_debug( dvdcss, "at block %i, still cracking...", i_pos );
}
/* Stop after 2000 blocks if we haven't seen any encrypted blocks. */
--- a/src/device.c
+++ b/src/device.c
@@ -2,7 +2,7 @@
* device.h: DVD device access
*****************************************************************************
* Copyright (C) 1998-2002 VideoLAN
- * $Id: device.c,v 1.17 2003/09/09 10:03:48 sam Exp $
+ * $Id: device.c,v 1.18 2003/09/09 13:17:24 sam Exp $
*
* Authors: St�phane Borel <stef@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
@@ -31,6 +31,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#ifdef HAVE_ERRNO_H
+# include <errno.h>
+#endif
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_SYS_PARAM_H
@@ -135,12 +138,9 @@
int _dvdcss_open ( dvdcss_t dvdcss )
{
- char psz_debug[200];
char const *psz_device = dvdcss->psz_device;
- snprintf( psz_debug, 199, "opening target `%s'", psz_device );
- psz_debug[199] = '\0';
- print_debug( dvdcss, psz_debug );
+ print_debug( dvdcss, "opening target `%s'", psz_device );
#if defined( WIN32 )
/* If device is not "X:", we are actually opening a file. */
@@ -184,7 +184,9 @@
if( dvdcss->i_raw_fd == -1 )
{
- print_error( dvdcss, "failed opening raw device, continuing" );
+ print_debug( dvdcss, "cannot open %s (%s)",
+ psz_device, strerror(errno) );
+ print_error( dvdcss, "failed to open raw device, but continuing" );
return -1;
}
else
@@ -253,7 +255,9 @@
if( dvdcss->i_fd == -1 )
{
- print_error( dvdcss, "failed opening device" );
+ print_debug( dvdcss, "cannot open %s (%s)",
+ psz_device, strerror(errno) );
+ print_error( dvdcss, "failed to open device" );
return -1;
}