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>
|
||||
|
||||
@@ -610,11 +610,13 @@ mmc_read_cd ( const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||
M2RAW_SECTOR_SIZE.
|
||||
|
||||
@param i_lsn sector to read
|
||||
@param i_blocksize
|
||||
|
||||
*/
|
||||
driver_return_code_t mmc_read_data_sector ( CdIo_t *p_cdio, void *p_buf,
|
||||
lsn_t i_lsn,
|
||||
uint16_t i_blocksize );
|
||||
driver_return_code_t mmc_read_data_sectors ( CdIo_t *p_cdio, void *p_buf,
|
||||
lsn_t i_lsn,
|
||||
uint16_t i_blocksize,
|
||||
uint32_t i_blocks );
|
||||
|
||||
/*! issue a MMC read mode2 sectors. - depricated.
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* -*- 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>
|
||||
|
||||
@@ -98,10 +98,10 @@ extern "C" {
|
||||
@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.
|
||||
*/
|
||||
driver_return_code_t cdio_read_data_sector (const CdIo_t *p_cdio,
|
||||
void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize
|
||||
);
|
||||
driver_return_code_t cdio_read_data_sectors ( const CdIo_t *p_cdio,
|
||||
void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize,
|
||||
uint32_t i_blocks );
|
||||
|
||||
/*!
|
||||
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) 2002, 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -27,7 +27,7 @@
|
||||
# include "config.h"
|
||||
#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>
|
||||
|
||||
@@ -1189,7 +1189,7 @@ cdio_open_am_linux (const char *psz_orig_source, const char *access_mode)
|
||||
.lseek = cdio_generic_lseek,
|
||||
.read = cdio_generic_read,
|
||||
.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_sectors = _read_mode1_sectors_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>
|
||||
|
||||
@@ -254,9 +254,10 @@ extern "C" {
|
||||
@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.
|
||||
*/
|
||||
driver_return_code_t (*read_data_sector) (void *p_env, void *p_buf,
|
||||
lsn_t i_lsn,
|
||||
uint16_t i_blocksize);
|
||||
driver_return_code_t (*read_data_sectors) (void *p_env, void *p_buf,
|
||||
lsn_t i_lsn,
|
||||
uint16_t i_blocksize,
|
||||
uint32_t i_blocks);
|
||||
|
||||
/*!
|
||||
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) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -26,7 +26,7 @@
|
||||
(*.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 "cdio_assert.h"
|
||||
@@ -1159,7 +1159,7 @@ cdio_open_cue (const char *psz_cue_name)
|
||||
_funcs.lseek = _lseek_bincue;
|
||||
_funcs.read = _read_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_sectors = _read_mode1_sectors_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>
|
||||
toc reading routine adapted from cuetools
|
||||
@@ -25,7 +25,7 @@
|
||||
(*.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 "cdio_assert.h"
|
||||
@@ -1286,7 +1286,7 @@ cdio_open_cdrdao (const char *psz_cue_name)
|
||||
_funcs.lseek = _lseek_cdrdao;
|
||||
_funcs.read = _read_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_sectors = _read_mode1_sectors_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) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
@@ -46,7 +46,7 @@
|
||||
#include "_cdio_stdio.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 */
|
||||
@@ -1239,7 +1239,7 @@ cdio_open_nrg (const char *psz_source)
|
||||
_funcs.lseek = _lseek_nrg;
|
||||
_funcs.read = _read_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_sectors = _read_mode1_sectors_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>
|
||||
|
||||
@@ -264,8 +264,9 @@ get_track_preemphasis_image(const void *p_user_data, track_t i_track)
|
||||
p_buf.
|
||||
*/
|
||||
driver_return_code_t
|
||||
read_data_sector_image ( void *p_user_data, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize )
|
||||
read_data_sectors_image ( void *p_user_data, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize,
|
||||
uint32_t i_blocks )
|
||||
{
|
||||
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_ERROR:
|
||||
return DRIVER_OP_ERROR;
|
||||
case TRACK_FORMAT_CDI:
|
||||
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:
|
||||
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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
M2RAW_SECTOR_SIZE, or M2F2_SECTOR_SIZE. See comment above under
|
||||
p_buf.
|
||||
|
||||
@param i_blocks number of blocks to read.
|
||||
|
||||
*/
|
||||
driver_return_code_t
|
||||
read_data_sector_image ( void *p_user_data, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize );
|
||||
read_data_sectors_image ( void *p_user_data, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize,
|
||||
uint32_t i_blocks );
|
||||
|
||||
/*!
|
||||
Set the arg "key" with "value" in the source device.
|
||||
|
||||
@@ -165,6 +165,7 @@ mmc_mode_sense
|
||||
mmc_mode_sense_10
|
||||
mmc_mode_sense_6
|
||||
mmc_read_cd
|
||||
mmc_read_data_sectors
|
||||
mmc_read_sectors
|
||||
mmc_run_cmd
|
||||
mmc_set_blocksize
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* 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>
|
||||
|
||||
@@ -113,11 +113,13 @@ get_mcn_mmc (const void *p_user_data)
|
||||
Can read only up to 25 blocks.
|
||||
*/
|
||||
driver_return_code_t
|
||||
read_data_sector_mmc ( void *p_user_data, void *p_buf,
|
||||
lba_t i_lba, uint16_t i_blocksize )
|
||||
read_data_sectors_mmc ( void *p_user_data, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize,
|
||||
uint32_t i_blocks )
|
||||
{
|
||||
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) */
|
||||
@@ -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.
|
||||
*/
|
||||
driver_return_code_t
|
||||
mmc_read_data_sector ( CdIo_t *p_cdio, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize )
|
||||
mmc_read_data_sectors ( CdIo_t *p_cdio, void *p_buf,
|
||||
lsn_t i_lsn, uint16_t i_blocksize,
|
||||
uint32_t i_blocks )
|
||||
{
|
||||
return mmc_read_cd(p_cdio,
|
||||
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 */
|
||||
0, /* suchannel selection bits */
|
||||
ISO_BLOCKSIZE, /* blocksize*/
|
||||
1 /* Number of blocks. */);
|
||||
i_blocks /* Number of blocks. */);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* 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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
*/
|
||||
driver_return_code_t read_data_sector_mmc ( void *p_user_data,
|
||||
void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize );
|
||||
driver_return_code_t read_data_sectors_mmc ( void *p_user_data,
|
||||
void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize,
|
||||
uint32_t i_blocks );
|
||||
char *get_mcn_mmc (const void *p_user_data);
|
||||
|
||||
/* 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>
|
||||
|
||||
@@ -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 DRIVER_OP_UNSUPPORTED;
|
||||
}
|
||||
|
||||
/*!
|
||||
Reads an audio sector from cd device into data starting
|
||||
from lsn. Returns DRIVER_OP_SUCCESS if no error.
|
||||
*/
|
||||
driver_return_code_t
|
||||
cdio_read_data_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize)
|
||||
cdio_read_data_sectors (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn,
|
||||
uint16_t i_blocksize, uint32_t i_blocks)
|
||||
{
|
||||
check_lsn(i_lsn);
|
||||
if (p_cdio->op.read_data_sector)
|
||||
return p_cdio->op.read_data_sector (p_cdio->env, p_buf, i_lsn,
|
||||
i_blocksize);
|
||||
if (p_cdio->op.read_data_sectors)
|
||||
return p_cdio->op.read_data_sectors (p_cdio->env, p_buf, i_lsn,
|
||||
i_blocksize, i_blocks);
|
||||
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) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
#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 */
|
||||
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.*/
|
||||
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
||||
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) {
|
||||
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_svd_t *p_svd = &(p_env->svd);
|
||||
char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, };
|
||||
driver_return_code_t driver_return =
|
||||
cdio_read_data_sector (p_cdio, buf, ISO_PVD_SECTOR, ISO_BLOCKSIZE);
|
||||
driver_return_code_t driver_return;
|
||||
|
||||
if ( !iso9660_fs_read_pvd(p_cdio, p_pvd) )
|
||||
return false;
|
||||
@@ -718,7 +717,8 @@ iso9660_fs_read_superblock (CdIo_t *p_cdio,
|
||||
p_env->i_joliet_level = 0;
|
||||
|
||||
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) {
|
||||
/* 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);
|
||||
|
||||
if (b_mode2) {
|
||||
if (cdio_read_mode2_sectors (p_cdio, _dirbuf, p_stat->lsn, false,
|
||||
p_stat->secsize))
|
||||
if (cdio_read_data_sectors (p_cdio, _dirbuf, p_stat->lsn, false,
|
||||
p_stat->secsize))
|
||||
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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user