Change read routines so the use the driver_return_code_t enumeration.
It's a little cleaner and may make things clearer in debugging.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: cdio.h,v 1.76 2005/01/19 09:23:24 rocky Exp $
|
$Id: cdio.h,v 1.77 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -61,7 +61,14 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
/* Sector (frame, or block)-related functions. */
|
/* Drive(r)/Device-related functions. Perhaps we should break out
|
||||||
|
Driver from device?
|
||||||
|
*/
|
||||||
|
#include <cdio/device.h>
|
||||||
|
|
||||||
|
/* Sector (frame, or block)-related functions. Uses driver_return_code_t
|
||||||
|
from <cdio/device.h> so it should come after that.
|
||||||
|
*/
|
||||||
#include <cdio/read.h>
|
#include <cdio/read.h>
|
||||||
|
|
||||||
/* CD-Text-related functions. */
|
/* CD-Text-related functions. */
|
||||||
@@ -73,9 +80,4 @@ extern "C" {
|
|||||||
/* Disc-related functions. */
|
/* Disc-related functions. */
|
||||||
#include <cdio/disc.h>
|
#include <cdio/disc.h>
|
||||||
|
|
||||||
/* Drive(r)/Device-related functions. Perhaps we should break out
|
|
||||||
Driver from device?
|
|
||||||
*/
|
|
||||||
#include <cdio/device.h>
|
|
||||||
|
|
||||||
#endif /* __CDIO_H__ */
|
#endif /* __CDIO_H__ */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: device.h,v 1.7 2005/01/20 04:51:14 rocky Exp $
|
$Id: device.h,v 1.8 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -102,10 +102,16 @@ extern "C" {
|
|||||||
#define CDIO_MAX_DRIVER DRIVER_NRG
|
#define CDIO_MAX_DRIVER DRIVER_NRG
|
||||||
#define CDIO_MAX_DEVICE_DRIVER DRIVER_WIN32
|
#define CDIO_MAX_DEVICE_DRIVER DRIVER_WIN32
|
||||||
|
|
||||||
/** There will generally be only one hardware for a given
|
/** The following are status codes for completion of a given cdio
|
||||||
build/platform from the list above. You can use the variable
|
operation. By design 0 is successful completion and -1 is error
|
||||||
below to determine which you've got. If the build doesn't make an
|
completion. This is compatable with ioctl so those routines that
|
||||||
hardware driver, then the value will be DRIVER_UNKNOWN.
|
call ioctl can just pass the value the get back (cast as this
|
||||||
|
enum). Also, by using negative numbers for errors, the
|
||||||
|
enumeration values below can be used in places where a positive
|
||||||
|
value is expected when things complete successfully. For example,
|
||||||
|
get_blocksize returns the blocksize, but on error uses the error
|
||||||
|
codes below. So note that this enumeration is often cast to an
|
||||||
|
integer. C seems to tolerate this.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DRIVER_OP_UNINIT = -3, /**< returned when a particular driver
|
DRIVER_OP_UNINIT = -3, /**< returned when a particular driver
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: read.h,v 1.2 2005/01/20 04:51:14 rocky Exp $
|
$Id: read.h,v 1.3 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -62,10 +62,9 @@ extern "C" {
|
|||||||
@param p_cdio object to read from
|
@param p_cdio object to read from
|
||||||
@param p_buf place to read data into
|
@param p_buf place to read data into
|
||||||
@param i_lsn sector to read
|
@param i_lsn sector to read
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int cdio_read_audio_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn);
|
driver_return_code_t cdio_read_audio_sector (const CdIo_t *p_cdio,
|
||||||
|
void *p_buf, lsn_t i_lsn);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads audio sectors
|
Reads audio sectors
|
||||||
@@ -74,10 +73,9 @@ extern "C" {
|
|||||||
@param p_buf place to read data into
|
@param p_buf place to read data into
|
||||||
@param i_lsn sector to read
|
@param i_lsn sector to read
|
||||||
@param i_sectors number of sectors to read
|
@param i_sectors number of sectors to read
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
driver_return_code_t cdio_read_audio_sectors (const CdIo_t *p_cdio,
|
||||||
|
void *p_buf, lsn_t i_lsn,
|
||||||
unsigned int i_sectors);
|
unsigned int i_sectors);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -88,10 +86,9 @@ extern "C" {
|
|||||||
@param i_lsn sector to read
|
@param i_lsn sector to read
|
||||||
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
||||||
mode 1 form 1 sectors.
|
mode 1 form 1 sectors.
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
driver_return_code_t cdio_read_mode1_sector (const CdIo_t *p_cdio,
|
||||||
|
void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2);
|
bool b_form2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -103,11 +100,11 @@ extern "C" {
|
|||||||
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
||||||
mode 1 form 1 sectors.
|
mode 1 form 1 sectors.
|
||||||
@param i_sectors number of sectors to read
|
@param i_sectors number of sectors to read
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
driver_return_code_t cdio_read_mode1_sectors (const CdIo_t *p_cdio,
|
||||||
bool b_form2, unsigned int i_sectors);
|
void *p_buf, lsn_t i_lsn,
|
||||||
|
bool b_form2,
|
||||||
|
unsigned int i_sectors);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a mode 2 sector
|
Reads a mode 2 sector
|
||||||
@@ -120,7 +117,8 @@ extern "C" {
|
|||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
@return 0 if no error, nonzero otherwise.
|
||||||
*/
|
*/
|
||||||
int cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
driver_return_code_t cdio_read_mode2_sector (const CdIo_t *p_cdio,
|
||||||
|
void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2);
|
bool b_form2);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -135,8 +133,10 @@ extern "C" {
|
|||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
@return 0 if no error, nonzero otherwise.
|
||||||
*/
|
*/
|
||||||
int cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
driver_return_code_t cdio_read_mode2_sectors (const CdIo_t *p_cdio,
|
||||||
bool b_form2, unsigned int i_sectors);
|
void *p_buf, lsn_t i_lsn,
|
||||||
|
bool b_form2,
|
||||||
|
unsigned int i_sectors);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: freebsd.c,v 1.10 2005/01/23 05:31:03 rocky Exp $
|
$Id: freebsd.c,v 1.11 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: freebsd.c,v 1.10 2005/01/23 05:31:03 rocky Exp $";
|
static const char _rcsid[] = "$Id: freebsd.c,v 1.11 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include "freebsd.h"
|
#include "freebsd.h"
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ cdio_is_cdrom(char *drive, char *mnttype)
|
|||||||
Reads i_blocks of audio sectors from cd device into data starting from lsn.
|
Reads i_blocks of audio sectors from cd device into data starting from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_freebsd (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
_read_audio_sectors_freebsd (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
||||||
unsigned int i_blocks)
|
unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
@@ -99,7 +99,7 @@ _read_audio_sectors_freebsd (void *p_user_data, void *p_buf, lsn_t i_lsn,
|
|||||||
Reads a single mode2 sector from cd device into data starting
|
Reads a single mode2 sector from cd device into data starting
|
||||||
from i_lsn. Returns 0 if no error.
|
from i_lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_freebsd (void *p_user_data, void *data, lsn_t i_lsn,
|
_read_mode2_sector_freebsd (void *p_user_data, void *data, lsn_t i_lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -114,9 +114,8 @@ _read_mode2_sector_freebsd (void *p_user_data, void *data, lsn_t i_lsn,
|
|||||||
/*!
|
/*!
|
||||||
Reads nblocks of mode2 sectors from cd device into data starting
|
Reads nblocks of mode2 sectors from cd device into data starting
|
||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_freebsd (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_freebsd (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -138,7 +137,7 @@ _read_mode2_sectors_freebsd (void *user_data, void *data, lsn_t lsn,
|
|||||||
if (retval) return retval;
|
if (retval) return retval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -337,10 +336,8 @@ get_drive_cap_freebsd (const void *p_user_data,
|
|||||||
e_direction direction the transfer is to go.
|
e_direction direction the transfer is to go.
|
||||||
i_buf Size of buffer
|
i_buf Size of buffer
|
||||||
p_buf Buffer for data, both sending and receiving
|
p_buf Buffer for data, both sending and receiving
|
||||||
|
|
||||||
Return 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
run_scsi_cmd_freebsd( void *p_user_data, unsigned int i_timeout_ms,
|
run_scsi_cmd_freebsd( void *p_user_data, unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
||||||
scsi_mmc_direction_t e_direction,
|
scsi_mmc_direction_t e_direction,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_aix.c,v 1.5 2005/01/21 20:54:55 rocky Exp $
|
$Id: _cdio_aix.c,v 1.6 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_AIX_CDROM
|
#ifdef HAVE_AIX_CDROM
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_aix.c,v 1.5 2005/01/21 20:54:55 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_aix.c,v 1.6 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#ifdef HAVE_GLOB_H
|
#ifdef HAVE_GLOB_H
|
||||||
#include <glob.h>
|
#include <glob.h>
|
||||||
@@ -193,10 +193,8 @@ init_aix (_img_private_t *p_env)
|
|||||||
e_direction direction the transfer is to go.
|
e_direction direction the transfer is to go.
|
||||||
i_buf Size of buffer
|
i_buf Size of buffer
|
||||||
p_buf Buffer for data, both sending and receiving
|
p_buf Buffer for data, both sending and receiving
|
||||||
|
|
||||||
Return 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
run_scsi_cmd_aix( void *p_user_data, unsigned int i_timeout_ms,
|
run_scsi_cmd_aix( void *p_user_data, unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
||||||
scsi_mmc_direction_t e_direction,
|
scsi_mmc_direction_t e_direction,
|
||||||
@@ -241,7 +239,7 @@ run_scsi_cmd_aix( void *p_user_data, unsigned int i_timeout_ms,
|
|||||||
can be read in one go, e.g. 25 blocks.
|
can be read in one go, e.g. 25 blocks.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn,
|
_read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -291,7 +289,7 @@ _read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_aix (void *env, void *data, lsn_t lsn,
|
_read_mode1_sector_aix (void *env, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -308,7 +306,7 @@ _read_mode1_sector_aix (void *env, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -330,7 +328,7 @@ _read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
Reads a single mode2 sector from cd device into data starting from lsn.
|
Reads a single mode2 sector from cd device into data starting from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -392,7 +390,7 @@ _read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_aix (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_aix (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -445,28 +443,24 @@ _cdio_stat_size (void *p_user_data)
|
|||||||
|
|
||||||
0 is returned if no error was found, and nonzero if there as an error.
|
0 is returned if no error was found, and nonzero if there as an error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_set_arg_aix (void *p_user_data, const char key[], const char value[])
|
_set_arg_aix (void *p_user_data, const char key[], const char value[])
|
||||||
{
|
{
|
||||||
_img_private_t *env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
if (!strcmp (key, "source"))
|
if (!strcmp (key, "source"))
|
||||||
{
|
{
|
||||||
if (!value)
|
if (!value) return DRIVER_OP_ERROR;
|
||||||
return -2;
|
free (p_env->gen.source_name);
|
||||||
|
p_env->gen.source_name = strdup (value);
|
||||||
free (env->gen.source_name);
|
|
||||||
|
|
||||||
env->gen.source_name = strdup (value);
|
|
||||||
}
|
}
|
||||||
else if (!strcmp (key, "access-mode"))
|
else if (!strcmp (key, "access-mode"))
|
||||||
{
|
{
|
||||||
env->access_mode = str_to_access_mode_aix(key);
|
p_env->access_mode = str_to_access_mode_aix(key);
|
||||||
}
|
}
|
||||||
else
|
else return DRIVER_OP_ERROR;
|
||||||
return -1;
|
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -650,24 +644,23 @@ read_toc_aix (void *p_user_data)
|
|||||||
Eject media in CD drive. If successful, as a side effect we
|
Eject media in CD drive. If successful, as a side effect we
|
||||||
also free obj.
|
also free obj.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
eject_media_aix (void *p_user_data) {
|
eject_media_aix (void *p_user_data) {
|
||||||
|
|
||||||
_img_private_t *env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
int ret;
|
driver_return_code_t ret=DRIVER_OP_SUCCESS;
|
||||||
|
int i_status;
|
||||||
|
|
||||||
close(env->gen.fd);
|
if (p_env->gen.fd <= -1) return DRIVER_OP_UNINIT;
|
||||||
env->gen.fd = -1;
|
i_status = ioctl(p_env->gen.fd, DKEJECT);
|
||||||
if (env->gen.fd > -1) {
|
if ( i_status != 0) {
|
||||||
if ((ret = ioctl(env->gen.fd, DKEJECT)) != 0) {
|
cdio_generic_free((void *) p_env);
|
||||||
cdio_generic_free((void *) env);
|
|
||||||
cdio_warn ("DKEJECT failed: %s", strerror(errno));
|
cdio_warn ("DKEJECT failed: %s", strerror(errno));
|
||||||
return 1;
|
ret = DRIVER_OP_ERROR;
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
close(env->gen.fd);
|
||||||
return 2;
|
p_env->gen.fd = -1;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@@ -693,12 +686,12 @@ _cdio_malloc_and_zero(size_t size) {
|
|||||||
static const char *
|
static const char *
|
||||||
get_arg_aix (void *p_user_data, const char key[])
|
get_arg_aix (void *p_user_data, const char key[])
|
||||||
{
|
{
|
||||||
_img_private_t *env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
if (!strcmp (key, "source")) {
|
if (!strcmp (key, "source")) {
|
||||||
return env->gen.source_name;
|
return p_env->gen.source_name;
|
||||||
} else if (!strcmp (key, "access-mode")) {
|
} else if (!strcmp (key, "access-mode")) {
|
||||||
switch (env->access_mode) {
|
switch (p_env->access_mode) {
|
||||||
case _AM_CTRL_SCSI:
|
case _AM_CTRL_SCSI:
|
||||||
return "SCSI";
|
return "SCSI";
|
||||||
case _AM_NONE:
|
case _AM_NONE:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_bsdi.c,v 1.7 2005/01/23 05:31:03 rocky Exp $
|
$Id: _cdio_bsdi.c,v 1.8 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.7 2005/01/23 05:31:03 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_bsdi.c,v 1.8 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include <cdio/logging.h>
|
#include <cdio/logging.h>
|
||||||
#include <cdio/sector.h>
|
#include <cdio/sector.h>
|
||||||
@@ -93,7 +93,7 @@ typedef struct cgc
|
|||||||
/*
|
/*
|
||||||
This code adapted from Steven M. Schultz's libdvd
|
This code adapted from Steven M. Schultz's libdvd
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
run_scsi_cmd_bsdi(void *p_user_data, unsigned int i_timeout_ms,
|
run_scsi_cmd_bsdi(void *p_user_data, unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
||||||
scsi_mmc_direction_t e_direction,
|
scsi_mmc_direction_t e_direction,
|
||||||
@@ -220,7 +220,7 @@ _cdio_init (_img_private_t *p_env)
|
|||||||
|
|
||||||
/* Read audio sectors
|
/* Read audio sectors
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
|
_read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -278,7 +278,7 @@ _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
|
|||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn,
|
_read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -297,7 +297,7 @@ _read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -319,7 +319,7 @@ _read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
Reads a single mode2 sector from cd device into data starting
|
Reads a single mode2 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -379,7 +379,7 @@ _read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_bsdi (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_generic.c,v 1.10 2005/01/21 02:59:32 rocky Exp $
|
$Id: _cdio_generic.c,v 1.11 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.10 2005/01/21 02:59:32 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.11 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -130,16 +130,14 @@ cdio_generic_init (void *user_data)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single form1 sector from cd device into data starting
|
Reads a single form1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn.
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_generic_read_form1_sector (void * user_data, void *data, lsn_t lsn)
|
cdio_generic_read_form1_sector (void * user_data, void *data, lsn_t lsn)
|
||||||
{
|
{
|
||||||
if (0 > cdio_generic_lseek(user_data, CDIO_CD_FRAMESIZE*lsn, SEEK_SET))
|
if (0 > cdio_generic_lseek(user_data, CDIO_CD_FRAMESIZE*lsn, SEEK_SET))
|
||||||
return -1;
|
return DRIVER_OP_ERROR;
|
||||||
if (0 > cdio_generic_read(user_data, data, CDIO_CD_FRAMESIZE))
|
return cdio_generic_read(user_data, data, CDIO_CD_FRAMESIZE);
|
||||||
return -1;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -399,7 +397,7 @@ get_first_track_num_generic(void *p_user_data)
|
|||||||
/*!
|
/*!
|
||||||
Return the number of tracks in the current medium.
|
Return the number of tracks in the current medium.
|
||||||
*/
|
*/
|
||||||
track_t
|
track_t
|
||||||
get_num_tracks_generic(void *p_user_data)
|
get_num_tracks_generic(void *p_user_data)
|
||||||
{
|
{
|
||||||
generic_img_private_t *p_env = p_user_data;
|
generic_img_private_t *p_env = p_user_data;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_linux.c,v 1.17 2005/01/23 05:31:03 rocky Exp $
|
$Id: _cdio_linux.c,v 1.18 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.17 2005/01/23 05:31:03 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.18 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ typedef struct {
|
|||||||
/**** prototypes for static functions ****/
|
/**** prototypes for static functions ****/
|
||||||
static bool is_cdrom_linux(const char *drive, char *mnttype);
|
static bool is_cdrom_linux(const char *drive, char *mnttype);
|
||||||
static bool read_toc_linux (void *p_user_data);
|
static bool read_toc_linux (void *p_user_data);
|
||||||
static int run_scsi_cmd_linux( void *p_user_data,
|
static driver_return_code_t run_scsi_cmd_linux( void *p_user_data,
|
||||||
unsigned int i_timeout,
|
unsigned int i_timeout,
|
||||||
unsigned int i_cdb,
|
unsigned int i_cdb,
|
||||||
const scsi_mmc_cdb_t *p_cdb,
|
const scsi_mmc_cdb_t *p_cdb,
|
||||||
@@ -401,13 +401,12 @@ get_track_msf_linux(void *p_user_data, track_t i_track, msf_t *msf)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Eject media in CD drive.
|
Eject media in CD drive.
|
||||||
Return 0 if success and 1 for failure, and 2 if no routine.
|
|
||||||
*/
|
*/
|
||||||
static driver_return_code_t
|
static driver_return_code_t
|
||||||
eject_media_linux (void *p_user_data) {
|
eject_media_linux (void *p_user_data) {
|
||||||
|
|
||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
int ret=DRIVER_OP_SUCCESS;
|
driver_return_code_t ret=DRIVER_OP_SUCCESS;
|
||||||
int status;
|
int status;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@@ -547,7 +546,7 @@ is_cdrom_linux(const char *drive, char *mnttype)
|
|||||||
/* MMC driver to read audio sectors.
|
/* MMC driver to read audio sectors.
|
||||||
Can read only up to 25 blocks.
|
Can read only up to 25 blocks.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_linux (void *p_user_data, void *buf, lsn_t lsn,
|
_read_audio_sectors_linux (void *p_user_data, void *buf, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -559,7 +558,7 @@ _read_audio_sectors_linux (void *p_user_data, void *buf, lsn_t lsn,
|
|||||||
/* Packet driver to read mode2 sectors.
|
/* Packet driver to read mode2 sectors.
|
||||||
Can read only up to 25 blocks.
|
Can read only up to 25 blocks.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
_read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
||||||
unsigned int nblocks, bool b_read_10)
|
unsigned int nblocks, bool b_read_10)
|
||||||
{
|
{
|
||||||
@@ -590,7 +589,7 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
/* Restore blocksize. */
|
/* Restore blocksize. */
|
||||||
retval = scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
|
retval = scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
|
||||||
return retval;
|
return retval;
|
||||||
} else
|
} else {
|
||||||
|
|
||||||
cdb.field[1] = 0; /* sector size mode2 */
|
cdb.field[1] = 0; /* sector size mode2 */
|
||||||
cdb.field[9] = 0x58; /* 2336 mode2 */
|
cdb.field[9] = 0x58; /* 2336 mode2 */
|
||||||
@@ -602,11 +601,10 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
|
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
|
||||||
SCSI_MMC_DATA_READ,
|
SCSI_MMC_DATA_READ,
|
||||||
M2RAW_SECTOR_SIZE * nblocks, p_buf);
|
M2RAW_SECTOR_SIZE * nblocks, p_buf);
|
||||||
|
}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
_read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
||||||
unsigned int nblocks, bool b_read_10)
|
unsigned int nblocks, bool b_read_10)
|
||||||
{
|
{
|
||||||
@@ -635,7 +633,7 @@ _read_mode2_sectors (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -706,7 +704,7 @@ _read_mode1_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -721,14 +719,14 @@ _read_mode1_sectors_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode2 sector from cd device into data starting
|
Reads a single mode2 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -788,7 +786,7 @@ _read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
else
|
else
|
||||||
memcpy (((char *)p_data), buf + CDIO_CD_SUBHEADER_SIZE, CDIO_CD_FRAMESIZE);
|
memcpy (((char *)p_data), buf + CDIO_CD_SUBHEADER_SIZE, CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -796,7 +794,7 @@ _read_mode2_sector_linux (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -812,7 +810,7 @@ _read_mode2_sectors_linux (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -898,7 +896,7 @@ read_toc_linux (void *p_user_data)
|
|||||||
|
|
||||||
We return true if command completed successfully and false if not.
|
We return true if command completed successfully and false if not.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
run_scsi_cmd_linux( void *p_user_data,
|
run_scsi_cmd_linux( void *p_user_data,
|
||||||
unsigned int i_timeout_ms,
|
unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_sunos.c,v 1.14 2005/01/23 04:53:31 rocky Exp $
|
$Id: _cdio_sunos.c,v 1.15 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_SOLARIS_CDROM
|
#ifdef HAVE_SOLARIS_CDROM
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.14 2005/01/23 04:53:31 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_sunos.c,v 1.15 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#ifdef HAVE_GLOB_H
|
#ifdef HAVE_GLOB_H
|
||||||
#include <glob.h>
|
#include <glob.h>
|
||||||
@@ -143,10 +143,8 @@ init_solaris (_img_private_t *p_env)
|
|||||||
e_direction direction the transfer is to go.
|
e_direction direction the transfer is to go.
|
||||||
i_buf Size of buffer
|
i_buf Size of buffer
|
||||||
p_buf Buffer for data, both sending and receiving
|
p_buf Buffer for data, both sending and receiving
|
||||||
|
|
||||||
Return 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
run_scsi_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
run_scsi_cmd_solaris( void *p_user_data, unsigned int i_timeout_ms,
|
||||||
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
unsigned int i_cdb, const scsi_mmc_cdb_t *p_cdb,
|
||||||
scsi_mmc_direction_t e_direction,
|
scsi_mmc_direction_t e_direction,
|
||||||
@@ -218,18 +216,18 @@ _read_audio_sectors_solaris (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
|
|
||||||
if (ioctl (p_env->gen.fd, CDROMCDDA, &cdda) == -1) {
|
if (ioctl (p_env->gen.fd, CDROMCDDA, &cdda) == -1) {
|
||||||
perror ("ioctl(..,CDROMCDDA,..)");
|
perror ("ioctl(..,CDROMCDDA,..)");
|
||||||
return 1;
|
return DRIVER_OP_ERROR;
|
||||||
/* exit (EXIT_FAILURE); */
|
/* exit (EXIT_FAILURE); */
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_solaris (void *p_env, void *data, lsn_t lsn,
|
_read_mode1_sector_solaris (void *p_env, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -244,9 +242,8 @@ _read_mode1_sector_solaris (void *p_env, void *data, lsn_t lsn,
|
|||||||
/*!
|
/*!
|
||||||
Reads i_blocks of mode2 sectors from cd device into data starting
|
Reads i_blocks of mode2 sectors from cd device into data starting
|
||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
@@ -261,14 +258,13 @@ _read_mode1_sectors_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode2 sector from cd device into data starting from lsn.
|
Reads a single mode2 sector from cd device into data starting from lsn.
|
||||||
Returns 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
_read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -320,15 +316,14 @@ _read_mode2_sector_solaris (void *p_user_data, void *p_data, lsn_t lsn,
|
|||||||
else
|
else
|
||||||
memcpy (((char *)p_data), buf + offset, CDIO_CD_FRAMESIZE);
|
memcpy (((char *)p_data), buf + offset, CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads i_blocks of mode2 sectors from cd device into data starting
|
Reads i_blocks of mode2 sectors from cd device into data starting
|
||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_solaris (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_solaris (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: bincue.c,v 1.5 2005/01/17 17:20:09 rocky Exp $
|
$Id: bincue.c,v 1.6 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
(*.cue).
|
(*.cue).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: bincue.c,v 1.5 2005/01/17 17:20:09 rocky Exp $";
|
static const char _rcsid[] = "$Id: bincue.c,v 1.6 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -151,7 +151,7 @@ _lseek_bincue (void *user_data, off_t offset, int whence)
|
|||||||
|
|
||||||
if (i==env->gen.i_tracks) {
|
if (i==env->gen.i_tracks) {
|
||||||
cdio_warn ("seeking outside range of disk image");
|
cdio_warn ("seeking outside range of disk image");
|
||||||
return -1;
|
return DRIVER_OP_ERROR;
|
||||||
} else {
|
} else {
|
||||||
real_offset += env->tocent[i].datastart;
|
real_offset += env->tocent[i].datastart;
|
||||||
return cdio_stream_seek(env->gen.data_source, real_offset, whence);
|
return cdio_stream_seek(env->gen.data_source, real_offset, whence);
|
||||||
@@ -774,7 +774,7 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
|
|||||||
Reads a single audio sector from CD device into data starting
|
Reads a single audio sector from CD device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
_read_audio_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -809,7 +809,7 @@ _read_audio_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
Reads a single mode2 sector from cd device into data starting
|
Reads a single mode2 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
_read_mode1_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -828,7 +828,7 @@ _read_mode1_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
memcpy (data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
memcpy (data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
||||||
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -836,7 +836,7 @@ _read_mode1_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
_read_mode1_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -851,14 +851,14 @@ _read_mode1_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -888,7 +888,7 @@ _read_mode2_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
else
|
else
|
||||||
memcpy (data, buf + CDIO_CD_XA_SYNC_HEADER, CDIO_CD_FRAMESIZE);
|
memcpy (data, buf + CDIO_CD_XA_SYNC_HEADER, CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -896,7 +896,7 @@ _read_mode2_sector_bincue (void *user_data, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_bincue (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdrdao.c,v 1.9 2005/01/22 23:57:10 rocky Exp $
|
$Id: cdrdao.c,v 1.10 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
toc reading routine adapted from cuetools
|
toc reading routine adapted from cuetools
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
(*.cue).
|
(*.cue).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: cdrdao.c,v 1.9 2005/01/22 23:57:10 rocky Exp $";
|
static const char _rcsid[] = "$Id: cdrdao.c,v 1.10 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -960,7 +960,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
|
|||||||
Reads a single audio sector from CD device into data starting
|
Reads a single audio sector from CD device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
_read_audio_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -995,7 +995,7 @@ _read_audio_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
|||||||
Reads a single mode2 sector from cd device into data starting
|
Reads a single mode2 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
_read_mode1_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -1015,7 +1015,7 @@ _read_mode1_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
|||||||
memcpy (data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
memcpy (data, buf + CDIO_CD_SYNC_SIZE + CDIO_CD_HEADER_SIZE,
|
||||||
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
b_form2 ? M2RAW_SECTOR_SIZE: CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -1038,14 +1038,14 @@ _read_mode1_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
|||||||
lsn + i, b_form2)) )
|
lsn + i, b_form2)) )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode1 sector from cd device into data starting
|
Reads a single mode1 sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -1080,7 +1080,7 @@ _read_mode2_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
|||||||
else
|
else
|
||||||
memcpy (data, buf + CDIO_CD_XA_SYNC_HEADER, CDIO_CD_FRAMESIZE);
|
memcpy (data, buf + CDIO_CD_XA_SYNC_HEADER, CDIO_CD_FRAMESIZE);
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -1088,7 +1088,7 @@ _read_mode2_sector_cdrdao (void *user_data, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_cdrdao (void *user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned int nblocks)
|
bool b_form2, unsigned int nblocks)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: nrg.c,v 1.7 2005/01/17 17:20:09 rocky Exp $
|
$Id: nrg.c,v 1.8 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
#include "_cdio_stdio.h"
|
#include "_cdio_stdio.h"
|
||||||
#include "nrg.h"
|
#include "nrg.h"
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: nrg.c,v 1.7 2005/01/17 17:20:09 rocky Exp $";
|
static const char _rcsid[] = "$Id: nrg.c,v 1.8 2005/01/23 19:16:58 rocky Exp $";
|
||||||
|
|
||||||
|
|
||||||
/* reader */
|
/* reader */
|
||||||
@@ -845,9 +845,9 @@ _stat_size_nrg (void *p_user_data)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single audio sector from CD device into data starting
|
Reads a single audio sector from CD device into data starting
|
||||||
from LSN. Returns 0 if no error.
|
from LSN.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_audio_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
_read_audio_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
||||||
unsigned int nblocks)
|
unsigned int nblocks)
|
||||||
{
|
{
|
||||||
@@ -887,7 +887,7 @@ _read_audio_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode1_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -939,9 +939,8 @@ _read_mode1_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
/*!
|
/*!
|
||||||
Reads nblocks of mode2 sectors from cd device into data starting
|
Reads nblocks of mode2 sectors from cd device into data starting
|
||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode1_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode1_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned nblocks)
|
bool b_form2, unsigned nblocks)
|
||||||
{
|
{
|
||||||
@@ -959,7 +958,7 @@ _read_mode1_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -1014,7 +1013,7 @@ _read_mode2_sector_nrg (void *p_user_data, void *data, lsn_t lsn,
|
|||||||
from lsn.
|
from lsn.
|
||||||
Returns 0 if no error.
|
Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_read_mode2_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
_read_mode2_sectors_nrg (void *p_user_data, void *data, lsn_t lsn,
|
||||||
bool b_form2, unsigned nblocks)
|
bool b_form2, unsigned nblocks)
|
||||||
{
|
{
|
||||||
@@ -1053,11 +1052,11 @@ _free_nrg (void *p_user_data)
|
|||||||
Eject media -- there's nothing to do here except free resources.
|
Eject media -- there's nothing to do here except free resources.
|
||||||
We always return 2.
|
We always return 2.
|
||||||
*/
|
*/
|
||||||
static int
|
static driver_return_code_t
|
||||||
_eject_media_nrg(void *obj)
|
_eject_media_nrg(void *obj)
|
||||||
{
|
{
|
||||||
_free_nrg (obj);
|
_free_nrg (obj);
|
||||||
return 2;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: read.c,v 1.2 2005/01/21 02:57:59 rocky Exp $
|
$Id: read.c,v 1.3 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -37,8 +37,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define check_read_parms(p_cdio, p_buf, i_lsn) \
|
#define check_read_parms(p_cdio, p_buf, i_lsn) \
|
||||||
if (!p_cdio || !p_buf || CDIO_INVALID_LSN == i_lsn ) \
|
if (!p_cdio) return DRIVER_OP_UNINIT; \
|
||||||
return -1;
|
if (!p_buf || CDIO_INVALID_LSN == i_lsn) \
|
||||||
|
return DRIVER_OP_ERROR;
|
||||||
|
|
||||||
#define check_lsn(i_lsn) \
|
#define check_lsn(i_lsn) \
|
||||||
check_read_parms(p_cdio, p_buf, i_lsn); \
|
check_read_parms(p_cdio, p_buf, i_lsn); \
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
if ( i_lsn > end_lsn ) { \
|
if ( i_lsn > end_lsn ) { \
|
||||||
cdio_info("Trying to access past end of disk lsn: %ld, end lsn: %ld", \
|
cdio_info("Trying to access past end of disk lsn: %ld, end lsn: %ld", \
|
||||||
(long int) i_lsn, (long int) end_lsn); \
|
(long int) i_lsn, (long int) end_lsn); \
|
||||||
return -1; \
|
return DRIVER_OP_ERROR; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +61,7 @@
|
|||||||
if ( i_lsn > end_lsn ) { \
|
if ( i_lsn > end_lsn ) { \
|
||||||
cdio_info("Trying to access past end of disk lsn: %ld, end lsn: %ld", \
|
cdio_info("Trying to access past end of disk lsn: %ld, end lsn: %ld", \
|
||||||
(long int) i_lsn, (long int) end_lsn); \
|
(long int) i_lsn, (long int) end_lsn); \
|
||||||
return -1; \
|
return DRIVER_OP_ERROR; \
|
||||||
} \
|
} \
|
||||||
if ( i_lsn + i_blocks -1 > end_lsn ) { \
|
if ( i_lsn + i_blocks -1 > end_lsn ) { \
|
||||||
cdio_info("Request truncated to end disk; lsn: %ld, end lsn: %ld", \
|
cdio_info("Request truncated to end disk; lsn: %ld, end lsn: %ld", \
|
||||||
@@ -79,11 +80,11 @@
|
|||||||
off_t
|
off_t
|
||||||
cdio_lseek (const CdIo_t *p_cdio, off_t offset, int whence)
|
cdio_lseek (const CdIo_t *p_cdio, off_t offset, int whence)
|
||||||
{
|
{
|
||||||
if (p_cdio == NULL) return -1;
|
if (!p_cdio) return DRIVER_OP_UNINIT;
|
||||||
|
|
||||||
if (p_cdio->op.lseek)
|
if (p_cdio->op.lseek)
|
||||||
return p_cdio->op.lseek (p_cdio->env, offset, whence);
|
return p_cdio->op.lseek (p_cdio->env, offset, whence);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -94,38 +95,38 @@ cdio_lseek (const CdIo_t *p_cdio, off_t offset, int whence)
|
|||||||
ssize_t
|
ssize_t
|
||||||
cdio_read (const CdIo_t *p_cdio, void *p_buf, size_t size)
|
cdio_read (const CdIo_t *p_cdio, void *p_buf, size_t size)
|
||||||
{
|
{
|
||||||
if (p_cdio == NULL) return -1;
|
if (!p_cdio) return DRIVER_OP_UNINIT;
|
||||||
|
|
||||||
if (p_cdio->op.read)
|
if (p_cdio->op.read)
|
||||||
return p_cdio->op.read (p_cdio->env, p_buf, size);
|
return p_cdio->op.read (p_cdio->env, p_buf, size);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads an audio sector from cd device into data starting
|
Reads an audio sector from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_audio_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn)
|
cdio_read_audio_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn)
|
||||||
{
|
{
|
||||||
check_lsn(i_lsn);
|
check_lsn(i_lsn);
|
||||||
if (p_cdio->op.read_audio_sectors != NULL)
|
if (p_cdio->op.read_audio_sectors != NULL)
|
||||||
return p_cdio->op.read_audio_sectors (p_cdio->env, p_buf, i_lsn, 1);
|
return p_cdio->op.read_audio_sectors (p_cdio->env, p_buf, i_lsn, 1);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads audio sectors from cd device into data starting
|
Reads audio sectors from cd device into data starting
|
||||||
from lsn. Returns 0 if no error.
|
from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
unsigned int i_blocks)
|
unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
check_lsn_blocks(i_lsn, i_blocks);
|
check_lsn_blocks(i_lsn, i_blocks);
|
||||||
if (p_cdio->op.read_audio_sectors != NULL)
|
if (p_cdio->op.read_audio_sectors != NULL)
|
||||||
return p_cdio->op.read_audio_sectors (p_cdio->env, p_buf, i_lsn, i_blocks);
|
return p_cdio->op.read_audio_sectors (p_cdio->env, p_buf, i_lsn, i_blocks);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SEEK_SET
|
#ifndef SEEK_SET
|
||||||
@@ -136,7 +137,7 @@ cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
Reads a single mode1 form1 or form2 sector from cd device
|
Reads a single mode1 form1 or form2 sector from cd device
|
||||||
into data starting from lsn. Returns 0 if no error.
|
into data starting from lsn. Returns 0 if no error.
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -152,11 +153,10 @@ cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
if (0 > cdio_read(p_cdio, buf, CDIO_CD_FRAMESIZE))
|
if (0 > cdio_read(p_cdio, buf, CDIO_CD_FRAMESIZE))
|
||||||
return -1;
|
return -1;
|
||||||
memcpy (p_buf, buf, size);
|
memcpy (p_buf, buf, size);
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -168,10 +168,8 @@ cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
@param b_form2 true for reading mode 1 form 2 sectors or false for
|
||||||
mode 1 form 1 sectors.
|
mode 1 form 1 sectors.
|
||||||
@param i_sectors number of sectors to read
|
@param i_sectors number of sectors to read
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
@@ -179,7 +177,7 @@ cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
if (p_cdio->op.read_mode1_sectors)
|
if (p_cdio->op.read_mode1_sectors)
|
||||||
return p_cdio->op.read_mode1_sectors (p_cdio->env, p_buf, i_lsn, b_form2,
|
return p_cdio->op.read_mode1_sectors (p_cdio->env, p_buf, i_lsn, b_form2,
|
||||||
i_blocks);
|
i_blocks);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -190,10 +188,8 @@ cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
@param lsn sector to read
|
@param lsn sector to read
|
||||||
@param b_form2 true for reading mode 2 form 2 sectors or false for
|
@param b_form2 true for reading mode 2 form 2 sectors or false for
|
||||||
mode 2 form 1 sectors.
|
mode 2 form 1 sectors.
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2)
|
bool b_form2)
|
||||||
{
|
{
|
||||||
@@ -204,7 +200,7 @@ cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
/* fallback */
|
/* fallback */
|
||||||
if (p_cdio->op.read_mode2_sectors != NULL)
|
if (p_cdio->op.read_mode2_sectors != NULL)
|
||||||
return cdio_read_mode2_sectors (p_cdio, p_buf, i_lsn, b_form2, 1);
|
return cdio_read_mode2_sectors (p_cdio, p_buf, i_lsn, b_form2, 1);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -216,10 +212,8 @@ cdio_read_mode2_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
@param b_form2 true for reading mode2 form 2 sectors or false for
|
@param b_form2 true for reading mode2 form 2 sectors or false for
|
||||||
mode 2 form 1 sectors.
|
mode 2 form 1 sectors.
|
||||||
@param i_sectors number of sectors to read
|
@param i_sectors number of sectors to read
|
||||||
|
|
||||||
@return 0 if no error, nonzero otherwise.
|
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
bool b_form2, unsigned int i_blocks)
|
bool b_form2, unsigned int i_blocks)
|
||||||
{
|
{
|
||||||
@@ -227,7 +221,7 @@ cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
if (p_cdio->op.read_mode2_sectors)
|
if (p_cdio->op.read_mode2_sectors)
|
||||||
return p_cdio->op.read_mode2_sectors (p_cdio->env, p_buf, i_lsn,
|
return p_cdio->op.read_mode2_sectors (p_cdio->env, p_buf, i_lsn,
|
||||||
b_form2, i_blocks);
|
b_form2, i_blocks);
|
||||||
return -1;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* Common SCSI Multimedia Command (MMC) routines.
|
/* Common SCSI Multimedia Command (MMC) routines.
|
||||||
|
|
||||||
$Id: scsi_mmc.c,v 1.9 2005/01/21 20:54:55 rocky Exp $
|
$Id: scsi_mmc.c,v 1.10 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -169,10 +169,8 @@ scsi_mmc_get_cmd_len(uint8_t scsi_cmd)
|
|||||||
e_direction direction the transfer is to go
|
e_direction direction the transfer is to go
|
||||||
cdb CDB bytes. All values that are needed should be set on
|
cdb CDB bytes. All values that are needed should be set on
|
||||||
input. We'll figure out what the right CDB length should be.
|
input. We'll figure out what the right CDB length should be.
|
||||||
|
|
||||||
We return 0 if command completed successfully and DRIVER_OP_ERROR if not.
|
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
scsi_mmc_run_cmd( const CdIo_t *p_cdio, unsigned int i_timeout_ms,
|
scsi_mmc_run_cmd( const CdIo_t *p_cdio, unsigned int i_timeout_ms,
|
||||||
const scsi_mmc_cdb_t *p_cdb,
|
const scsi_mmc_cdb_t *p_cdb,
|
||||||
scsi_mmc_direction_t e_direction, unsigned int i_buf,
|
scsi_mmc_direction_t e_direction, unsigned int i_buf,
|
||||||
@@ -225,7 +223,7 @@ scsi_mmc_get_blocksize_private ( void *p_env,
|
|||||||
i_status = run_scsi_mmc_cmd (p_env, DEFAULT_TIMEOUT_MS,
|
i_status = run_scsi_mmc_cmd (p_env, DEFAULT_TIMEOUT_MS,
|
||||||
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
|
scsi_mmc_get_cmd_len(cdb.field[0]), &cdb,
|
||||||
SCSI_MMC_DATA_WRITE, sizeof(mh), &mh);
|
SCSI_MMC_DATA_WRITE, sizeof(mh), &mh);
|
||||||
if (0 != i_status) return -2;
|
if (DRIVER_OP_SUCCESS != i_status) return i_status;
|
||||||
|
|
||||||
return CDIO_MMC_GET_LEN16(p);
|
return CDIO_MMC_GET_LEN16(p);
|
||||||
}
|
}
|
||||||
@@ -283,7 +281,7 @@ scsi_mmc_eject_media( const CdIo_t *p_cdio )
|
|||||||
/*! Read sectors using SCSI-MMC GPCMD_READ_CD.
|
/*! Read sectors using SCSI-MMC GPCMD_READ_CD.
|
||||||
Can read only up to 25 blocks.
|
Can read only up to 25 blocks.
|
||||||
*/
|
*/
|
||||||
int
|
driver_return_code_t
|
||||||
scsi_mmc_read_sectors ( const CdIo_t *p_cdio, void *p_buf, lba_t lba,
|
scsi_mmc_read_sectors ( const CdIo_t *p_cdio, void *p_buf, lba_t lba,
|
||||||
int sector_type, unsigned int i_blocks )
|
int sector_type, unsigned int i_blocks )
|
||||||
{
|
{
|
||||||
@@ -291,8 +289,8 @@ scsi_mmc_read_sectors ( const CdIo_t *p_cdio, void *p_buf, lba_t lba,
|
|||||||
|
|
||||||
scsi_mmc_run_cmd_fn_t run_scsi_mmc_cmd;
|
scsi_mmc_run_cmd_fn_t run_scsi_mmc_cmd;
|
||||||
|
|
||||||
if ( ! p_cdio || ! p_cdio->op.run_scsi_mmc_cmd )
|
if (!p_cdio) return DRIVER_OP_UNINIT;
|
||||||
return -2;
|
if (!p_cdio->op.run_scsi_mmc_cmd ) return DRIVER_OP_UNSUPPORTED;
|
||||||
|
|
||||||
run_scsi_mmc_cmd = p_cdio->op.run_scsi_mmc_cmd;
|
run_scsi_mmc_cmd = p_cdio->op.run_scsi_mmc_cmd;
|
||||||
|
|
||||||
@@ -480,8 +478,8 @@ scsi_mmc_get_dvd_struct_physical_private ( void *p_env, const
|
|||||||
|
|
||||||
cdio_dvd_layer_t *layer;
|
cdio_dvd_layer_t *layer;
|
||||||
|
|
||||||
if ( ! p_env || ! run_scsi_mmc_cmd )
|
if (!p_env) return DRIVER_OP_UNINIT;
|
||||||
return -2;
|
if (!run_scsi_mmc_cmd) return DRIVER_OP_UNSUPPORTED;
|
||||||
|
|
||||||
if (layer_num >= CDIO_DVD_MAX_LAYERS)
|
if (layer_num >= CDIO_DVD_MAX_LAYERS)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -520,7 +518,7 @@ scsi_mmc_get_dvd_struct_physical_private ( void *p_env, const
|
|||||||
layer->end_sector_l0 = base[13] << 16 | base[14] << 8 | base[15];
|
layer->end_sector_l0 = base[13] << 16 | base[14] << 8 | base[15];
|
||||||
layer->bca = base[16] >> 7;
|
layer->bca = base[16] >> 7;
|
||||||
|
|
||||||
return 0;
|
return DRIVER_OP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -691,7 +689,7 @@ scsi_mmc_init_cdtext_private ( void *p_user_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set read blocksize (via MMC) */
|
/* Set read blocksize (via MMC) */
|
||||||
int
|
driver_return_code_t
|
||||||
get_blocksize_mmc (void *p_user_data)
|
get_blocksize_mmc (void *p_user_data)
|
||||||
{
|
{
|
||||||
generic_img_private_t *p_env = p_user_data;
|
generic_img_private_t *p_env = p_user_data;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
/* private MMC helper routines.
|
/* private MMC helper routines.
|
||||||
|
|
||||||
$Id: scsi_mmc_private.h,v 1.3 2005/01/21 20:54:55 rocky Exp $
|
$Id: scsi_mmc_private.h,v 1.4 2005/01/23 19:16:58 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -90,7 +90,7 @@ scsi_mmc_get_drive_cap_private ( void *p_env,
|
|||||||
/*out*/ cdio_drive_read_cap_t *p_read_cap,
|
/*out*/ cdio_drive_read_cap_t *p_read_cap,
|
||||||
/*out*/ cdio_drive_write_cap_t *p_write_cap,
|
/*out*/ cdio_drive_write_cap_t *p_write_cap,
|
||||||
/*out*/ cdio_drive_misc_cap_t *p_misc_cap);
|
/*out*/ cdio_drive_misc_cap_t *p_misc_cap);
|
||||||
int
|
driver_return_code_t
|
||||||
scsi_mmc_set_blocksize_private ( void *p_env,
|
scsi_mmc_set_blocksize_private ( void *p_env,
|
||||||
const scsi_mmc_run_cmd_fn_t run_scsi_mmc_cmd,
|
const scsi_mmc_run_cmd_fn_t run_scsi_mmc_cmd,
|
||||||
unsigned int i_bsize);
|
unsigned int i_bsize);
|
||||||
|
|||||||
Reference in New Issue
Block a user