Move forward in getting better ISO-9660 reading by eliminating "Mode 1/2"
specification in API.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: mmc.h,v 1.10 2005/02/17 04:57:21 rocky Exp $
|
$Id: mmc.h,v 1.11 2005/02/17 07:03:36 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -610,11 +610,13 @@ mmc_read_cd ( const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
M2RAW_SECTOR_SIZE.
|
M2RAW_SECTOR_SIZE.
|
||||||
|
|
||||||
@param i_lsn sector to read
|
@param i_lsn sector to read
|
||||||
|
@param i_blocksize
|
||||||
|
|
||||||
*/
|
*/
|
||||||
driver_return_code_t mmc_read_data_sector ( CdIo_t *p_cdio, void *p_buf,
|
driver_return_code_t mmc_read_data_sectors ( CdIo_t *p_cdio, void *p_buf,
|
||||||
lsn_t i_lsn,
|
lsn_t i_lsn,
|
||||||
uint16_t i_blocksize );
|
uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks );
|
||||||
|
|
||||||
/*! issue a MMC read mode2 sectors. - depricated.
|
/*! issue a MMC read mode2 sectors. - depricated.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- c -*-
|
/* -*- c -*-
|
||||||
$Id: read.h,v 1.4 2005/02/17 04:57:21 rocky Exp $
|
$Id: read.h,v 1.5 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -98,10 +98,10 @@ extern "C" {
|
|||||||
@param i_blocksize size of block. Should be either CDIO_CD_FRAMESIZE,
|
@param i_blocksize size of block. Should be either CDIO_CD_FRAMESIZE,
|
||||||
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t cdio_read_data_sector (const CdIo_t *p_cdio,
|
driver_return_code_t cdio_read_data_sectors ( const CdIo_t *p_cdio,
|
||||||
void *p_buf, lsn_t i_lsn,
|
void *p_buf, lsn_t i_lsn,
|
||||||
uint16_t i_blocksize
|
uint16_t i_blocksize,
|
||||||
);
|
uint32_t i_blocks );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a mode 1 sector
|
Reads a mode 1 sector
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_linux.c,v 1.25 2005/02/17 04:57:21 rocky Exp $
|
$Id: _cdio_linux.c,v 1.26 2005/02/17 07:03:37 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.25 2005/02/17 04:57:21 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.26 2005/02/17 07:03:37 rocky Exp $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -1189,7 +1189,7 @@ cdio_open_am_linux (const char *psz_orig_source, const char *access_mode)
|
|||||||
.lseek = cdio_generic_lseek,
|
.lseek = cdio_generic_lseek,
|
||||||
.read = cdio_generic_read,
|
.read = cdio_generic_read,
|
||||||
.read_audio_sectors = _read_audio_sectors_linux,
|
.read_audio_sectors = _read_audio_sectors_linux,
|
||||||
.read_data_sector = read_data_sector_mmc,
|
.read_data_sectors = read_data_sectors_mmc,
|
||||||
.read_mode1_sector = _read_mode1_sector_linux,
|
.read_mode1_sector = _read_mode1_sector_linux,
|
||||||
.read_mode1_sectors = _read_mode1_sectors_linux,
|
.read_mode1_sectors = _read_mode1_sectors_linux,
|
||||||
.read_mode2_sector = _read_mode2_sector_linux,
|
.read_mode2_sector = _read_mode2_sector_linux,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdio_private.h,v 1.15 2005/02/17 04:57:21 rocky Exp $
|
$Id: cdio_private.h,v 1.16 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -254,9 +254,10 @@ extern "C" {
|
|||||||
@param i_blocksize size of block. Should be either CDIO_CD_FRAMESIZE,
|
@param i_blocksize size of block. Should be either CDIO_CD_FRAMESIZE,
|
||||||
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t (*read_data_sector) (void *p_env, void *p_buf,
|
driver_return_code_t (*read_data_sectors) (void *p_env, void *p_buf,
|
||||||
lsn_t i_lsn,
|
lsn_t i_lsn,
|
||||||
uint16_t i_blocksize);
|
uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Reads a single mode2 sector from cd device into buf starting
|
Reads a single mode2 sector from cd device into buf starting
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: bincue.c,v 1.14 2005/02/17 04:57:21 rocky Exp $
|
$Id: bincue.c,v 1.15 2005/02/17 07:03:37 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.14 2005/02/17 04:57:21 rocky Exp $";
|
static const char _rcsid[] = "$Id: bincue.c,v 1.15 2005/02/17 07:03:37 rocky Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -1159,7 +1159,7 @@ cdio_open_cue (const char *psz_cue_name)
|
|||||||
_funcs.lseek = _lseek_bincue;
|
_funcs.lseek = _lseek_bincue;
|
||||||
_funcs.read = _read_bincue;
|
_funcs.read = _read_bincue;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_bincue;
|
_funcs.read_audio_sectors = _read_audio_sectors_bincue;
|
||||||
_funcs.read_data_sector = read_data_sector_image;
|
_funcs.read_data_sectors = read_data_sectors_image;
|
||||||
_funcs.read_mode1_sector = _read_mode1_sector_bincue;
|
_funcs.read_mode1_sector = _read_mode1_sector_bincue;
|
||||||
_funcs.read_mode1_sectors = _read_mode1_sectors_bincue;
|
_funcs.read_mode1_sectors = _read_mode1_sectors_bincue;
|
||||||
_funcs.read_mode2_sector = _read_mode2_sector_bincue;
|
_funcs.read_mode2_sector = _read_mode2_sector_bincue;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cdrdao.c,v 1.15 2005/02/17 04:57:21 rocky Exp $
|
$Id: cdrdao.c,v 1.16 2005/02/17 07:03:37 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.15 2005/02/17 04:57:21 rocky Exp $";
|
static const char _rcsid[] = "$Id: cdrdao.c,v 1.16 2005/02/17 07:03:37 rocky Exp $";
|
||||||
|
|
||||||
#include "image.h"
|
#include "image.h"
|
||||||
#include "cdio_assert.h"
|
#include "cdio_assert.h"
|
||||||
@@ -1286,7 +1286,7 @@ cdio_open_cdrdao (const char *psz_cue_name)
|
|||||||
_funcs.lseek = _lseek_cdrdao;
|
_funcs.lseek = _lseek_cdrdao;
|
||||||
_funcs.read = _read_cdrdao;
|
_funcs.read = _read_cdrdao;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
|
_funcs.read_audio_sectors = _read_audio_sectors_cdrdao;
|
||||||
_funcs.read_data_sector = read_data_sector_image;
|
_funcs.read_data_sectors = read_data_sectors_image;
|
||||||
_funcs.read_mode1_sector = _read_mode1_sector_cdrdao;
|
_funcs.read_mode1_sector = _read_mode1_sector_cdrdao;
|
||||||
_funcs.read_mode1_sectors = _read_mode1_sectors_cdrdao;
|
_funcs.read_mode1_sectors = _read_mode1_sectors_cdrdao;
|
||||||
_funcs.read_mode2_sector = _read_mode2_sector_cdrdao;
|
_funcs.read_mode2_sector = _read_mode2_sector_cdrdao;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: nrg.c,v 1.14 2005/02/17 04:57:21 rocky Exp $
|
$Id: nrg.c,v 1.15 2005/02/17 07:03:37 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.14 2005/02/17 04:57:21 rocky Exp $";
|
static const char _rcsid[] = "$Id: nrg.c,v 1.15 2005/02/17 07:03:37 rocky Exp $";
|
||||||
|
|
||||||
|
|
||||||
/* reader */
|
/* reader */
|
||||||
@@ -1239,7 +1239,7 @@ cdio_open_nrg (const char *psz_source)
|
|||||||
_funcs.lseek = _lseek_nrg;
|
_funcs.lseek = _lseek_nrg;
|
||||||
_funcs.read = _read_nrg;
|
_funcs.read = _read_nrg;
|
||||||
_funcs.read_audio_sectors = _read_audio_sectors_nrg;
|
_funcs.read_audio_sectors = _read_audio_sectors_nrg;
|
||||||
_funcs.read_data_sector = read_data_sector_image;
|
_funcs.read_data_sectors = read_data_sectors_image;
|
||||||
_funcs.read_mode1_sector = _read_mode1_sector_nrg;
|
_funcs.read_mode1_sector = _read_mode1_sector_nrg;
|
||||||
_funcs.read_mode1_sectors = _read_mode1_sectors_nrg;
|
_funcs.read_mode1_sectors = _read_mode1_sectors_nrg;
|
||||||
_funcs.read_mode2_sector = _read_mode2_sector_nrg;
|
_funcs.read_mode2_sector = _read_mode2_sector_nrg;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.c,v 1.11 2005/02/17 04:57:21 rocky Exp $
|
$Id: image_common.c,v 1.12 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -264,8 +264,9 @@ get_track_preemphasis_image(const void *p_user_data, track_t i_track)
|
|||||||
p_buf.
|
p_buf.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t
|
driver_return_code_t
|
||||||
read_data_sector_image ( void *p_user_data, void *p_buf,
|
read_data_sectors_image ( void *p_user_data, void *p_buf,
|
||||||
lsn_t i_lsn, uint16_t i_blocksize )
|
lsn_t i_lsn, uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks )
|
||||||
{
|
{
|
||||||
const _img_private_t *p_env = p_user_data;
|
const _img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
@@ -281,11 +282,11 @@ read_data_sector_image ( void *p_user_data, void *p_buf,
|
|||||||
case TRACK_FORMAT_AUDIO:
|
case TRACK_FORMAT_AUDIO:
|
||||||
case TRACK_FORMAT_ERROR:
|
case TRACK_FORMAT_ERROR:
|
||||||
return DRIVER_OP_ERROR;
|
return DRIVER_OP_ERROR;
|
||||||
case TRACK_FORMAT_CDI:
|
|
||||||
case TRACK_FORMAT_DATA:
|
case TRACK_FORMAT_DATA:
|
||||||
return cdio_read_mode1_sector (p_cdio, p_buf, i_lsn, false);
|
return cdio_read_mode1_sectors (p_cdio, p_buf, i_lsn, false, i_blocks);
|
||||||
|
case TRACK_FORMAT_CDI:
|
||||||
case TRACK_FORMAT_XA:
|
case TRACK_FORMAT_XA:
|
||||||
return cdio_read_mode2_sector (p_cdio, p_buf, i_lsn, false);
|
return cdio_read_mode2_sectors (p_cdio, p_buf, i_lsn, false, i_blocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return DRIVER_OP_ERROR;
|
return DRIVER_OP_ERROR;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: image_common.h,v 1.9 2005/02/17 04:57:21 rocky Exp $
|
$Id: image_common.h,v 1.10 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -166,10 +166,14 @@ track_flag_t get_track_preemphasis_image(const void *p_user_data,
|
|||||||
@param i_blocksize size of block. Should be either ISO_BLOCKSIZE
|
@param i_blocksize size of block. Should be either ISO_BLOCKSIZE
|
||||||
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under
|
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under
|
||||||
p_buf.
|
p_buf.
|
||||||
|
|
||||||
|
@param i_blocks number of blocks to read.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
driver_return_code_t
|
driver_return_code_t
|
||||||
read_data_sector_image ( void *p_user_data, void *p_buf,
|
read_data_sectors_image ( void *p_user_data, void *p_buf,
|
||||||
lsn_t i_lsn, uint16_t i_blocksize );
|
lsn_t i_lsn, uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks );
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Set the arg "key" with "value" in the source device.
|
Set the arg "key" with "value" in the source device.
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ mmc_mode_sense
|
|||||||
mmc_mode_sense_10
|
mmc_mode_sense_10
|
||||||
mmc_mode_sense_6
|
mmc_mode_sense_6
|
||||||
mmc_read_cd
|
mmc_read_cd
|
||||||
|
mmc_read_data_sectors
|
||||||
mmc_read_sectors
|
mmc_read_sectors
|
||||||
mmc_run_cmd
|
mmc_run_cmd
|
||||||
mmc_set_blocksize
|
mmc_set_blocksize
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* Common Multimedia Command (MMC) routines.
|
/* Common Multimedia Command (MMC) routines.
|
||||||
|
|
||||||
$Id: mmc.c,v 1.13 2005/02/17 04:57:21 rocky Exp $
|
$Id: mmc.c,v 1.14 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -113,11 +113,13 @@ get_mcn_mmc (const void *p_user_data)
|
|||||||
Can read only up to 25 blocks.
|
Can read only up to 25 blocks.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t
|
driver_return_code_t
|
||||||
read_data_sector_mmc ( void *p_user_data, void *p_buf,
|
read_data_sectors_mmc ( void *p_user_data, void *p_buf,
|
||||||
lba_t i_lba, uint16_t i_blocksize )
|
lsn_t i_lsn, uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks )
|
||||||
{
|
{
|
||||||
const generic_img_private_t *p_env = p_user_data;
|
const generic_img_private_t *p_env = p_user_data;
|
||||||
return mmc_read_data_sector( p_env->cdio, p_buf, i_lba, i_blocksize );
|
return mmc_read_data_sectors( p_env->cdio, p_buf, i_lsn, i_blocksize,
|
||||||
|
i_blocks );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set read blocksize (via MMC) */
|
/* Set read blocksize (via MMC) */
|
||||||
@@ -1051,8 +1053,9 @@ mmc_read_cd ( const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
/*! Read sectors using SCSI-MMC GPCMD_READ_CD.
|
/*! Read sectors using SCSI-MMC GPCMD_READ_CD.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t
|
driver_return_code_t
|
||||||
mmc_read_data_sector ( CdIo_t *p_cdio, void *p_buf,
|
mmc_read_data_sectors ( CdIo_t *p_cdio, void *p_buf,
|
||||||
lsn_t i_lsn, uint16_t i_blocksize )
|
lsn_t i_lsn, uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks )
|
||||||
{
|
{
|
||||||
return mmc_read_cd(p_cdio,
|
return mmc_read_cd(p_cdio,
|
||||||
p_buf, /* place to store data */
|
p_buf, /* place to store data */
|
||||||
@@ -1066,7 +1069,7 @@ mmc_read_data_sector ( CdIo_t *p_cdio, void *p_buf,
|
|||||||
false, /* return C2 Error information */
|
false, /* return C2 Error information */
|
||||||
0, /* suchannel selection bits */
|
0, /* suchannel selection bits */
|
||||||
ISO_BLOCKSIZE, /* blocksize*/
|
ISO_BLOCKSIZE, /* blocksize*/
|
||||||
1 /* Number of blocks. */);
|
i_blocks /* Number of blocks. */);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/* private MMC helper routines.
|
/* private MMC helper routines.
|
||||||
|
|
||||||
$Id: mmc_private.h,v 1.5 2005/02/17 04:57:21 rocky Exp $
|
$Id: mmc_private.h,v 1.6 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -77,9 +77,10 @@ char *get_mcn_mmc (const void *p_user_data);
|
|||||||
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under p_buf.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
driver_return_code_t read_data_sector_mmc ( void *p_user_data,
|
driver_return_code_t read_data_sectors_mmc ( void *p_user_data,
|
||||||
void *p_buf, lsn_t i_lsn,
|
void *p_buf, lsn_t i_lsn,
|
||||||
uint16_t i_blocksize );
|
uint16_t i_blocksize,
|
||||||
|
uint32_t i_blocks );
|
||||||
char *get_mcn_mmc (const void *p_user_data);
|
char *get_mcn_mmc (const void *p_user_data);
|
||||||
|
|
||||||
/* Set read blocksize (via MMC) */
|
/* Set read blocksize (via MMC) */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: read.c,v 1.5 2005/02/17 04:57:21 rocky Exp $
|
$Id: read.c,v 1.6 2005/02/17 07:03:37 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -126,18 +126,19 @@ cdio_read_audio_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
|||||||
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 DRIVER_OP_UNSUPPORTED;
|
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 DRIVER_OP_SUCCESS if no error.
|
from lsn. Returns DRIVER_OP_SUCCESS if no error.
|
||||||
*/
|
*/
|
||||||
driver_return_code_t
|
driver_return_code_t
|
||||||
cdio_read_data_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
cdio_read_data_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||||
uint16_t i_blocksize)
|
uint16_t i_blocksize, uint32_t i_blocks)
|
||||||
{
|
{
|
||||||
check_lsn(i_lsn);
|
check_lsn(i_lsn);
|
||||||
if (p_cdio->op.read_data_sector)
|
if (p_cdio->op.read_data_sectors)
|
||||||
return p_cdio->op.read_data_sector (p_cdio->env, p_buf, i_lsn,
|
return p_cdio->op.read_data_sectors (p_cdio->env, p_buf, i_lsn,
|
||||||
i_blocksize);
|
i_blocksize, i_blocks);
|
||||||
return DRIVER_OP_UNSUPPORTED;
|
return DRIVER_OP_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: iso9660_fs.c,v 1.15 2005/02/17 04:57:21 rocky Exp $
|
$Id: iso9660_fs.c,v 1.16 2005/02/17 07:03:37 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>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.15 2005/02/17 04:57:21 rocky Exp $";
|
static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.16 2005/02/17 07:03:37 rocky Exp $";
|
||||||
|
|
||||||
/* Implementation of iso9660_t type */
|
/* Implementation of iso9660_t type */
|
||||||
struct _iso9660_s {
|
struct _iso9660_s {
|
||||||
@@ -674,7 +674,7 @@ iso9660_fs_read_pvd(const CdIo_t *p_cdio, /*out*/ iso9660_pvd_t *p_pvd)
|
|||||||
/* A bit of a hack, we'll assume track 1 contains ISO_PVD_SECTOR.*/
|
/* A bit of a hack, we'll assume track 1 contains ISO_PVD_SECTOR.*/
|
||||||
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
||||||
driver_return_code_t driver_return =
|
driver_return_code_t driver_return =
|
||||||
cdio_read_data_sector (p_cdio, buf, ISO_PVD_SECTOR, ISO_BLOCKSIZE);
|
cdio_read_data_sectors (p_cdio, buf, ISO_PVD_SECTOR, ISO_BLOCKSIZE, 1);
|
||||||
|
|
||||||
if (DRIVER_OP_SUCCESS != driver_return) {
|
if (DRIVER_OP_SUCCESS != driver_return) {
|
||||||
cdio_warn ("error reading PVD sector (%d) error %d", ISO_PVD_SECTOR,
|
cdio_warn ("error reading PVD sector (%d) error %d", ISO_PVD_SECTOR,
|
||||||
@@ -709,8 +709,7 @@ iso9660_fs_read_superblock (CdIo_t *p_cdio,
|
|||||||
iso9660_pvd_t *p_pvd = &(p_env->pvd);
|
iso9660_pvd_t *p_pvd = &(p_env->pvd);
|
||||||
iso9660_svd_t *p_svd = &(p_env->svd);
|
iso9660_svd_t *p_svd = &(p_env->svd);
|
||||||
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
||||||
driver_return_code_t driver_return =
|
driver_return_code_t driver_return;
|
||||||
cdio_read_data_sector (p_cdio, buf, ISO_PVD_SECTOR, ISO_BLOCKSIZE);
|
|
||||||
|
|
||||||
if ( !iso9660_fs_read_pvd(p_cdio, p_pvd) )
|
if ( !iso9660_fs_read_pvd(p_cdio, p_pvd) )
|
||||||
return false;
|
return false;
|
||||||
@@ -718,7 +717,8 @@ iso9660_fs_read_superblock (CdIo_t *p_cdio,
|
|||||||
p_env->i_joliet_level = 0;
|
p_env->i_joliet_level = 0;
|
||||||
|
|
||||||
driver_return =
|
driver_return =
|
||||||
cdio_read_data_sector (p_cdio, buf, ISO_PVD_SECTOR+1, ISO_BLOCKSIZE);
|
cdio_read_data_sectors ( p_cdio, buf, ISO_PVD_SECTOR+1, ISO_BLOCKSIZE,
|
||||||
|
1 );
|
||||||
|
|
||||||
if (DRIVER_OP_SUCCESS == driver_return) {
|
if (DRIVER_OP_SUCCESS == driver_return) {
|
||||||
/* The size of a PVD or SVD is smaller than a sector. So we
|
/* The size of a PVD or SVD is smaller than a sector. So we
|
||||||
@@ -1340,15 +1340,9 @@ iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[], bool b_mode2)
|
|||||||
|
|
||||||
_dirbuf = calloc(1, p_stat->secsize * ISO_BLOCKSIZE);
|
_dirbuf = calloc(1, p_stat->secsize * ISO_BLOCKSIZE);
|
||||||
|
|
||||||
if (b_mode2) {
|
if (cdio_read_data_sectors (p_cdio, _dirbuf, p_stat->lsn, false,
|
||||||
if (cdio_read_mode2_sectors (p_cdio, _dirbuf, p_stat->lsn, false,
|
p_stat->secsize))
|
||||||
p_stat->secsize))
|
|
||||||
cdio_assert_not_reached ();
|
cdio_assert_not_reached ();
|
||||||
} else {
|
|
||||||
if (cdio_read_mode1_sectors (p_cdio, _dirbuf, p_stat->lsn, false,
|
|
||||||
p_stat->secsize))
|
|
||||||
cdio_assert_not_reached ();
|
|
||||||
}
|
|
||||||
|
|
||||||
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user