Add interface for setting speed and blocksize. Reinstated it in
cd-paranoia libraries and command. Some more variable convention regularizations.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: device.h,v 1.3 2005/01/09 16:07:46 rocky Exp $
|
$Id: device.h,v 1.4 2005/01/18 00:57:19 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ extern "C" {
|
|||||||
Eject media in CD drive if there is a routine to do so.
|
Eject media in CD drive if there is a routine to do so.
|
||||||
|
|
||||||
@param p_cdio the CD object to be acted upon.
|
@param p_cdio the CD object to be acted upon.
|
||||||
@return 0 if success and 1 for failure, and 2 if no routine.
|
@return 0 if success and 1 for failure, and -2 if no routine.
|
||||||
If the CD is ejected *p_cdio is freed and p_cdio set to NULL.
|
If the CD is ejected *p_cdio is freed and p_cdio set to NULL.
|
||||||
*/
|
*/
|
||||||
int cdio_eject_media (CdIo_t **p_cdio);
|
int cdio_eject_media (CdIo_t **p_cdio);
|
||||||
@@ -247,6 +247,16 @@ extern "C" {
|
|||||||
/* out*/ cdio_hwinfo_t *p_hw_info );
|
/* out*/ cdio_hwinfo_t *p_hw_info );
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the drive speed.
|
||||||
|
|
||||||
|
@return the drive speed if greater than 0. -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
|
||||||
|
@see cdio_set_speed
|
||||||
|
*/
|
||||||
|
int cdio_get_speed ( const CdIo_t *p_cdio, int i_speed );
|
||||||
|
|
||||||
/*! True if AIX driver is available. */
|
/*! True if AIX driver is available. */
|
||||||
bool cdio_have_aix (void);
|
bool cdio_have_aix (void);
|
||||||
|
|
||||||
@@ -669,11 +679,12 @@ extern "C" {
|
|||||||
CdIo_t * cdio_open_am_nrg (const char *psz_source,
|
CdIo_t * cdio_open_am_nrg (const char *psz_source,
|
||||||
const char *psz_access_mode);
|
const char *psz_access_mode);
|
||||||
|
|
||||||
/*! Return a string containing the default device name that the
|
/*! Get a string containing the default device name that the NRG
|
||||||
NRG driver would use when none is specified. A scan is made
|
driver would use when none is specified. A scan is made for NRG
|
||||||
for NRG disk images in the current directory..
|
disk images in the current directory.
|
||||||
|
|
||||||
NULL is returned on error or there is no CD-ROM device.
|
@return string containing the default device. NULL on error or
|
||||||
|
there is no CD-ROM device.
|
||||||
*/
|
*/
|
||||||
char * cdio_get_default_device_nrg(void);
|
char * cdio_get_default_device_nrg(void);
|
||||||
|
|
||||||
@@ -726,6 +737,24 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
bool cdio_is_device(const char *psz_source, driver_id_t driver_id);
|
bool cdio_is_device(const char *psz_source, driver_id_t driver_id);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the blocksize for subsequent reads.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
*/
|
||||||
|
int cdio_set_blocksize ( const CdIo_t *p_cdio, int i_blocksize );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
|
||||||
|
@see cdio_get_speed
|
||||||
|
*/
|
||||||
|
int cdio_set_speed ( const CdIo_t *p_cdio, int i_speed );
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: scsi_mmc.h,v 1.37 2005/01/05 04:16:11 rocky Exp $
|
$Id: scsi_mmc.h,v 1.38 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -356,14 +356,16 @@ uint8_t scsi_mmc_get_cmd_len(uint8_t scsi_cmd);
|
|||||||
|
|
||||||
Returns 0 if command completed successfully.
|
Returns 0 if command completed successfully.
|
||||||
*/
|
*/
|
||||||
int scsi_mmc_run_cmd( const CdIo *p_cdio, unsigned int i_timeout_ms,
|
int 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,
|
||||||
/*in/out*/ void *p_buf );
|
/*in/out*/ void *p_buf );
|
||||||
/*!
|
/*!
|
||||||
* Eject using SCSI MMC commands. Return 0 if successful.
|
* Eject using SCSI MMC commands.
|
||||||
|
|
||||||
|
@return 0 if successful.
|
||||||
*/
|
*/
|
||||||
int scsi_mmc_eject_media( const CdIo *p_cdio);
|
int scsi_mmc_eject_media( const CdIo_t *p_cdio);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the discmode as reported by the SCSI-MMC Read (FULL) TOC
|
Return the discmode as reported by the SCSI-MMC Read (FULL) TOC
|
||||||
@@ -374,26 +376,31 @@ int scsi_mmc_eject_media( const CdIo *p_cdio);
|
|||||||
at http://www.t10.org/ftp/t10/drafts/mmc/mmc-r10a.pdf See
|
at http://www.t10.org/ftp/t10/drafts/mmc/mmc-r10a.pdf See
|
||||||
especially tables 72, 73 and 75.
|
especially tables 72, 73 and 75.
|
||||||
*/
|
*/
|
||||||
discmode_t scsi_mmc_get_discmode( const CdIo *p_cdio );
|
discmode_t scsi_mmc_get_discmode( const CdIo_t *p_cdio );
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the the kind of drive capabilities of device.
|
Get drive capabilities for a device.
|
||||||
|
@return the drive capabilities.
|
||||||
*/
|
*/
|
||||||
void scsi_mmc_get_drive_cap (const CdIo *p_cdio,
|
void scsi_mmc_get_drive_cap (const CdIo_t *p_cdio,
|
||||||
/*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);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the DVD type associated with cd object.
|
Get the DVD type associated with cd object.
|
||||||
|
|
||||||
|
@return the DVD discmode.
|
||||||
*/
|
*/
|
||||||
discmode_t scsi_mmc_get_dvd_struct_physical ( const CdIo *p_cdio,
|
discmode_t scsi_mmc_get_dvd_struct_physical ( const CdIo *p_cdio,
|
||||||
cdio_dvd_struct_t *s);
|
cdio_dvd_struct_t *s);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the CD-ROM hardware info via a SCSI MMC INQUIRY command.
|
Get the CD-ROM hardware info via a SCSI MMC INQUIRY command.
|
||||||
False is returned if we had an error getting the information.
|
|
||||||
|
@return true if we were able to get hardware info, false if we had
|
||||||
|
an error.
|
||||||
*/
|
*/
|
||||||
bool scsi_mmc_get_hwinfo ( const CdIo_t *p_cdio,
|
bool scsi_mmc_get_hwinfo ( const CdIo_t *p_cdio,
|
||||||
/* out*/ cdio_hwinfo_t *p_hw_info );
|
/* out*/ cdio_hwinfo_t *p_hw_info );
|
||||||
@@ -409,24 +416,24 @@ bool scsi_mmc_get_hwinfo ( const CdIo_t *p_cdio,
|
|||||||
string when done with it.
|
string when done with it.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
char *scsi_mmc_get_mcn ( const CdIo *p_cdio );
|
char *scsi_mmc_get_mcn ( const CdIo_t *p_cdio );
|
||||||
|
|
||||||
/*! 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.
|
||||||
*/
|
*/
|
||||||
int scsi_mmc_read_sectors ( const CdIo *p_cdio, void *p_buf, lba_t lba,
|
int 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);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Set the block size for subsequest read requests, via a SCSI MMC
|
Set the block size for subsequest read requests, via a SCSI MMC
|
||||||
MODE_SELECT 6 command.
|
MODE_SELECT 6 command.
|
||||||
*/
|
*/
|
||||||
int scsi_mmc_set_blocksize ( const CdIo *p_cdio, unsigned int i_bsize);
|
int scsi_mmc_set_blocksize ( const CdIo_t *p_cdio, unsigned int i_bsize);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Set the block size for subsequest read requests, via a SCSI MMC
|
Set the block size for subsequest read requests, via a SCSI MMC
|
||||||
MODE_SENSE 6 command.
|
MODE_SENSE 6 command.
|
||||||
*/
|
*/
|
||||||
int scsi_mmc_get_blocksize ( const CdIo *p_cdio );
|
int scsi_mmc_get_blocksize ( const CdIo_t *p_cdio );
|
||||||
|
|
||||||
#endif /* __SCSI_MMC_H__ */
|
#endif /* __SCSI_MMC_H__ */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cooked_interface.c,v 1.11 2005/01/15 16:05:44 rocky Exp $
|
$Id: cooked_interface.c,v 1.12 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
Original interface.c Copyright (C) 1994-1997
|
Original interface.c Copyright (C) 1994-1997
|
||||||
@@ -64,14 +64,9 @@ cooked_readtoc (cdrom_drive_t *d)
|
|||||||
|
|
||||||
/* Set operating speed */
|
/* Set operating speed */
|
||||||
static int
|
static int
|
||||||
cooked_setspeed(cdrom_drive_t *d, int speed)
|
cooked_setspeed(cdrom_drive_t *d, int i_speed)
|
||||||
{
|
{
|
||||||
#if SET_SPEED_FIXED
|
return cdio_set_speed(d->p_cdio, i_speed);
|
||||||
if(d->ioctl_fd!=-1)
|
|
||||||
return ioctl(d->ioctl_fd, CDROM_SELECT_SPEED, speed);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* read 'SectorBurst' adjacent sectors of audio sectors
|
/* read 'SectorBurst' adjacent sectors of audio sectors
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_generic.c,v 1.5 2005/01/02 22:43:41 rocky Exp $
|
$Id: _cdio_generic.c,v 1.6 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004 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.5 2005/01/02 22:43:41 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.6 2005/01/18 00:57:20 rocky Exp $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -50,13 +50,35 @@ static const char _rcsid[] = "$Id: _cdio_generic.c,v 1.5 2005/01/02 22:43:41 roc
|
|||||||
#include "portable.h"
|
#include "portable.h"
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Eject media -- there's nothing to do here. We always return 2.
|
Eject media -- there's nothing to do here. We always return -2.
|
||||||
Should we also free resources?
|
Should we also free resources?
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
cdio_generic_bogus_eject_media (void *user_data) {
|
cdio_generic_unimplemented_eject_media (void *p_user_data) {
|
||||||
/* Sort of a stub here. Perhaps log a message? */
|
/* Sort of a stub here. Perhaps log a message? */
|
||||||
return 2;
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the blocksize for subsequent reads.
|
||||||
|
|
||||||
|
@return -2 since it's not implemented.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
cdio_generic_unimplemented_set_blocksize (void *p_user_data, int i_blocksize) {
|
||||||
|
/* Sort of a stub here. Perhaps log a message? */
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed.
|
||||||
|
|
||||||
|
@return -2 since it's not implemented.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
cdio_generic_unimplemented_set_speed (void *p_user_data, int i_speed) {
|
||||||
|
/* Sort of a stub here. Perhaps log a message? */
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_linux.c,v 1.7 2005/01/17 17:20:09 rocky Exp $
|
$Id: _cdio_linux.c,v 1.8 2005/01/18 00:57:20 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 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004 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.7 2005/01/17 17:20:09 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.8 2005/01/18 00:57:20 rocky Exp $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -587,7 +587,8 @@ _read_mode2_sectors_mmc (_img_private_t *p_env, void *p_buf, lba_t lba,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((retval = scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE)))
|
/* Restore blocksize. */
|
||||||
|
retval = scsi_mmc_set_blocksize (p_env->gen.cdio, CDIO_CD_FRAMESIZE);
|
||||||
return retval;
|
return retval;
|
||||||
} else
|
} else
|
||||||
|
|
||||||
@@ -929,7 +930,7 @@ stat_size_linux (void *p_user_data)
|
|||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
struct cdrom_tocentry tocent;
|
struct cdrom_tocentry tocent;
|
||||||
uint32_t size;
|
uint32_t i_size;
|
||||||
|
|
||||||
tocent.cdte_track = CDIO_CDROM_LEADOUT_TRACK;
|
tocent.cdte_track = CDIO_CDROM_LEADOUT_TRACK;
|
||||||
tocent.cdte_format = CDROM_LBA;
|
tocent.cdte_format = CDROM_LBA;
|
||||||
@@ -939,9 +940,9 @@ stat_size_linux (void *p_user_data)
|
|||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
size = tocent.cdte_addr.lba;
|
i_size = tocent.cdte_addr.lba;
|
||||||
|
|
||||||
return size;
|
return i_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -984,6 +985,24 @@ static char checklist2[][40] = {
|
|||||||
{"?a hd?"}, {"?0 scd?"}, {"?0 sr?"}, {""}
|
{"?a hd?"}, {"?0 scd?"}, {"?0 sr?"}, {""}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Set operating speed */
|
||||||
|
static int
|
||||||
|
set_blocksize_linux (void *p_user_data, int i_blocksize)
|
||||||
|
{
|
||||||
|
const _img_private_t *p_env = p_user_data;
|
||||||
|
return scsi_mmc_set_blocksize(p_env->gen.cdio, i_blocksize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set operating speed */
|
||||||
|
static int
|
||||||
|
set_speed_linux (void *p_user_data, int i_speed)
|
||||||
|
{
|
||||||
|
const _img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
|
if (!p_env) return -1;
|
||||||
|
return ioctl(p_env->gen.fd, CDROM_SELECT_SPEED, i_speed);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* HAVE_LINUX_CDROM */
|
#endif /* HAVE_LINUX_CDROM */
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -1158,6 +1177,8 @@ cdio_open_am_linux (const char *psz_orig_source, const char *access_mode)
|
|||||||
.read_toc = read_toc_linux,
|
.read_toc = read_toc_linux,
|
||||||
.run_scsi_mmc_cmd = run_scsi_cmd_linux,
|
.run_scsi_mmc_cmd = run_scsi_cmd_linux,
|
||||||
.set_arg = set_arg_linux,
|
.set_arg = set_arg_linux,
|
||||||
|
.set_blocksize = set_blocksize_linux,
|
||||||
|
.set_speed = set_speed_linux,
|
||||||
.stat_size = stat_size_linux
|
.stat_size = stat_size_linux
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdio_private.h,v 1.5 2005/01/17 17:20:09 rocky Exp $
|
$Id: cdio_private.h,v 1.6 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -160,6 +160,12 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
track_format_t (*get_track_format) (void *p_env, track_t i_track);
|
track_format_t (*get_track_format) (void *p_env, track_t i_track);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed. -1 is returned if we had an error.
|
||||||
|
-2 is returned if this is not implemented for the current driver.
|
||||||
|
*/
|
||||||
|
int (*p_get_speed) (void *p_env);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return true if we have XA data (green, mode2 form1) or
|
Return true if we have XA data (green, mode2 form1) or
|
||||||
XA data (green, mode2 form2). That is track begins:
|
XA data (green, mode2 form2). That is track begins:
|
||||||
@@ -262,6 +268,22 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
int (*set_arg) (void *p_env, const char key[], const char value[]);
|
int (*set_arg) (void *p_env, const char key[], const char value[]);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the blocksize for subsequent reads.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
*/
|
||||||
|
int (*set_blocksize) ( void *p_env, int i_blocksize );
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
*/
|
||||||
|
int (*set_speed) ( void *p_env, int i_speed );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the size of the CD in logical block address (LBA) units.
|
Return the size of the CD in logical block address (LBA) units.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: device.c,v 1.3 2005/01/17 17:20:09 rocky Exp $
|
$Id: device.c,v 1.4 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -542,10 +542,10 @@ cdio_get_driver_name (const CdIo_t *p_cdio)
|
|||||||
then return DRIVER_UNKNOWN.
|
then return DRIVER_UNKNOWN.
|
||||||
*/
|
*/
|
||||||
driver_id_t
|
driver_id_t
|
||||||
cdio_get_driver_id (const CdIo *cdio)
|
cdio_get_driver_id (const CdIo_t *p_cdio)
|
||||||
{
|
{
|
||||||
if (NULL==cdio) return DRIVER_UNKNOWN;
|
if (!p_cdio) return DRIVER_UNKNOWN;
|
||||||
return cdio->driver_id;
|
return p_cdio->driver_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -691,6 +691,35 @@ cdio_open_am_cd (const char *psz_source, const char *psz_access_mode)
|
|||||||
psz_source, psz_access_mode);
|
psz_source, psz_access_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the blocksize for subsequent reads.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
*/
|
||||||
|
int cdio_set_blocksize ( const CdIo_t *p_cdio, int i_blocksize )
|
||||||
|
{
|
||||||
|
if (!p_cdio) return -1;
|
||||||
|
if (p_cdio->op.set_blocksize) return -2;
|
||||||
|
return p_cdio->op.set_blocksize(p_cdio->env, i_blocksize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed.
|
||||||
|
|
||||||
|
@return 0 if everything went okay, -1 if we had an error. is -2
|
||||||
|
returned if this is not implemented for the current driver.
|
||||||
|
|
||||||
|
@see cdio_get_speed
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
cdio_set_speed (const CdIo_t *p_cdio, int i_speed)
|
||||||
|
{
|
||||||
|
if (!p_cdio) return -1;
|
||||||
|
if (p_cdio->op.set_speed) return -2;
|
||||||
|
return p_cdio->op.set_speed(p_cdio->env, i_speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Local variables:
|
* Local variables:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: generic.h,v 1.5 2005/01/04 04:33:36 rocky Exp $
|
$Id: generic.h,v 1.6 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ extern "C" {
|
|||||||
1-3: Joliet level. */
|
1-3: Joliet level. */
|
||||||
iso9660_pvd_t pvd;
|
iso9660_pvd_t pvd;
|
||||||
iso9660_svd_t svd;
|
iso9660_svd_t svd;
|
||||||
CdIo *cdio; /**< a way to call general cdio routines. */
|
CdIo_t *cdio; /**< a way to call general cdio routines. */
|
||||||
cdtext_t cdtext; /**< CD-Text for disc. */
|
cdtext_t cdtext; /**< CD-Text for disc. */
|
||||||
cdtext_t cdtext_track[CDIO_CD_MAX_TRACKS+1]; /**< CD-TEXT for each track*/
|
cdtext_t cdtext_track[CDIO_CD_MAX_TRACKS+1]; /**< CD-TEXT for each track*/
|
||||||
track_flags_t track_flags[CDIO_CD_MAX_TRACKS+1];
|
track_flags_t track_flags[CDIO_CD_MAX_TRACKS+1];
|
||||||
@@ -74,7 +74,22 @@ extern "C" {
|
|||||||
Bogus eject media when there is no ejectable media, e.g. a disk image
|
Bogus eject media when there is no ejectable media, e.g. a disk image
|
||||||
We always return 2. Should we also free resources?
|
We always return 2. Should we also free resources?
|
||||||
*/
|
*/
|
||||||
int cdio_generic_bogus_eject_media (void *env);
|
int cdio_generic_unimplemented_eject_media (void *p_env);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the blocksize for subsequent reads.
|
||||||
|
|
||||||
|
@return -2 since it's not implemented.
|
||||||
|
*/
|
||||||
|
int cdio_generic_unimplemented_set_blocksize (void *p_user_data,
|
||||||
|
int i_blocksize);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Set the drive speed.
|
||||||
|
|
||||||
|
@return -2 since it's not implemented.
|
||||||
|
*/
|
||||||
|
int cdio_generic_unimplemented_set_speed (void *p_user_data, int i_speed);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Release and free resources associated with cd.
|
Release and free resources associated with cd.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdrdao.c,v 1.6 2005/01/17 17:20:09 rocky Exp $
|
$Id: cdrdao.c,v 1.7 2005/01/18 00:57:20 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.6 2005/01/17 17:20:09 rocky Exp $";
|
static const char _rcsid[] = "$Id: cdrdao.c,v 1.7 2005/01/18 00:57:20 rocky Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -1203,6 +1203,8 @@ cdio_open_cdrdao (const char *psz_cue_name)
|
|||||||
_funcs.read_mode2_sector = _read_mode2_sector_cdrdao;
|
_funcs.read_mode2_sector = _read_mode2_sector_cdrdao;
|
||||||
_funcs.read_mode2_sectors = _read_mode2_sectors_cdrdao;
|
_funcs.read_mode2_sectors = _read_mode2_sectors_cdrdao;
|
||||||
_funcs.set_arg = _set_arg_image;
|
_funcs.set_arg = _set_arg_image;
|
||||||
|
_funcs.set_speed = cdio_generic_unimplemented_set_speed;
|
||||||
|
_funcs.set_blocksize = cdio_generic_unimplemented_set_blocksize;
|
||||||
_funcs.stat_size = _stat_size_cdrdao;
|
_funcs.stat_size = _stat_size_cdrdao;
|
||||||
|
|
||||||
if (NULL == psz_cue_name) return NULL;
|
if (NULL == psz_cue_name) return NULL;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.c,v 1.3 2005/01/04 04:33:36 rocky Exp $
|
$Id: image_common.c,v 1.4 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -38,18 +38,15 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define free_if_notnull(obj) \
|
|
||||||
if (NULL != obj) { free(obj); obj=NULL; };
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
_eject_media_image(void *user_data)
|
_eject_media_image(void *p_user_data)
|
||||||
{
|
{
|
||||||
_free_image (user_data);
|
_free_image (p_user_data);
|
||||||
return 2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.h,v 1.5 2005/01/12 11:34:52 rocky Exp $
|
$Id: image_common.h,v 1.6 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -63,8 +63,8 @@ typedef struct {
|
|||||||
#endif
|
#endif
|
||||||
} _img_private_t;
|
} _img_private_t;
|
||||||
|
|
||||||
#define free_if_notnull(obj) \
|
#define free_if_notnull(p_obj) \
|
||||||
if (NULL != obj) { free(obj); obj=NULL; };
|
if (NULL != p_obj) { free(p_obj); p_obj=NULL; };
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
We don't need the image any more. Free all memory associated with
|
We don't need the image any more. Free all memory associated with
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ cdio_read_mode1_sectors
|
|||||||
cdio_read_mode2_sector
|
cdio_read_mode2_sector
|
||||||
cdio_read_mode2_sectors
|
cdio_read_mode2_sectors
|
||||||
cdio_set_arg
|
cdio_set_arg
|
||||||
|
cdio_set_blocksize
|
||||||
|
cdio_set_speed
|
||||||
cdio_stat_size
|
cdio_stat_size
|
||||||
cdio_stdio_destroy
|
cdio_stdio_destroy
|
||||||
cdio_stdio_new
|
cdio_stdio_new
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* Common SCSI Multimedia Command (MMC) routines.
|
/* Common SCSI Multimedia Command (MMC) routines.
|
||||||
|
|
||||||
$Id: scsi_mmc.c,v 1.3 2005/01/09 16:26:51 rocky Exp $
|
$Id: scsi_mmc.c,v 1.4 2005/01/18 00:57:20 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -323,12 +323,12 @@ scsi_mmc_set_blocksize_private ( const void *p_env,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
scsi_mmc_set_blocksize ( const CdIo_t *p_cdio, unsigned int i_bsize)
|
scsi_mmc_set_blocksize ( const CdIo_t *p_cdio, unsigned int i_blocksize)
|
||||||
{
|
{
|
||||||
if ( ! p_cdio ) return -2;
|
if ( ! p_cdio ) return -2;
|
||||||
return
|
return
|
||||||
scsi_mmc_set_blocksize_private (p_cdio->env, p_cdio->op.run_scsi_mmc_cmd,
|
scsi_mmc_set_blocksize_private (p_cdio->env, p_cdio->op.run_scsi_mmc_cmd,
|
||||||
i_bsize);
|
i_blocksize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -905,12 +905,9 @@ main(int argc,char *argv[])
|
|||||||
d->disc_toc[i].dwStartSector+=toc_offset;
|
d->disc_toc[i].dwStartSector+=toc_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef SPEED_FINISHED
|
|
||||||
if (force_cdrom_speed != -1) {
|
if (force_cdrom_speed != -1) {
|
||||||
cdda_speed_set(d,force_cdrom_speed);
|
cdda_speed_set(d,force_cdrom_speed);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (d->nsectors==1) {
|
if (d->nsectors==1) {
|
||||||
report("WARNING: The autosensed/selected sectors per read value is\n"
|
report("WARNING: The autosensed/selected sectors per read value is\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user