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:
rocky
2005-01-23 19:16:58 +00:00
parent 11ade4b1eb
commit 19856a30da
15 changed files with 196 additions and 216 deletions

View File

@@ -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__ */

View File

@@ -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

View File

@@ -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,11 +73,10 @@ 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,
unsigned int i_sectors); void *p_buf, lsn_t i_lsn,
unsigned int i_sectors);
/*! /*!
Reads a mode 1 sector Reads a mode 1 sector
@@ -88,11 +86,10 @@ 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,
bool b_form2); void *p_buf, lsn_t i_lsn,
bool b_form2);
/*! /*!
Reads mode 1 sectors Reads mode 1 sectors
@@ -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,8 +117,9 @@ 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,
bool b_form2); void *p_buf, lsn_t i_lsn,
bool b_form2);
/*! /*!
Reads mode 2 sectors Reads mode 2 sectors
@@ -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
} }

View File

@@ -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,

View File

@@ -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)); ret = DRIVER_OP_ERROR;
return 1;
} else {
return 0;
}
} }
return 2; close(env->gen.fd);
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:

View File

@@ -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)
{ {

View File

@@ -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;

View File

@@ -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,13 +99,13 @@ 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,
scsi_mmc_direction_t e_direction, scsi_mmc_direction_t e_direction,
unsigned int i_buf, unsigned int i_buf,
/*in/out*/ void *p_buf ); /*in/out*/ void *p_buf );
static access_mode_t static access_mode_t
str_to_access_mode_linux(const char *psz_access_mode) str_to_access_mode_linux(const char *psz_access_mode)
@@ -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,

View File

@@ -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)
{ {

View File

@@ -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)
{ {

View File

@@ -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)
{ {

View File

@@ -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;
} }
/*! /*!

View File

@@ -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;
} }

View File

@@ -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);
} }
@@ -233,7 +231,7 @@ scsi_mmc_get_blocksize_private ( void *p_env,
int int
scsi_mmc_get_blocksize ( const CdIo_t *p_cdio) scsi_mmc_get_blocksize ( const CdIo_t *p_cdio)
{ {
if ( ! p_cdio ) return DRIVER_OP_UNINIT; if ( ! p_cdio ) return DRIVER_OP_UNINIT;
return return
scsi_mmc_get_blocksize_private (p_cdio->env, p_cdio->op.run_scsi_mmc_cmd); scsi_mmc_get_blocksize_private (p_cdio->env, p_cdio->op.run_scsi_mmc_cmd);
@@ -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;

View File

@@ -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);