cd_types: sector 0 rarely needs to be read, and when it doesn't, it's not

an error if it can't be read
cd-info:  give more info by default - source location and driver.
test/*:   as a result of cd-info changes need now to pass option --quiet.
This commit is contained in:
rocky
2003-10-06 04:04:05 +00:00
parent 5bf9f94b89
commit 359cf083a8
5 changed files with 31 additions and 32 deletions

View File

@@ -1,5 +1,5 @@
/*
$Id: cd_types.c,v 1.5 2003/09/28 17:14:20 rocky Exp $
$Id: cd_types.c,v 1.6 2003/10/06 04:04:05 rocky Exp $
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
@@ -211,6 +211,7 @@ cdio_guess_cd_type(const CdIo *cdio, int start_session, track_t track_num,
/*out*/ cdio_analysis_t *cdio_analysis)
{
int ret = 0;
bool sector0_read_ok;
if (TRACK_FORMAT_AUDIO == cdio_get_track_format(cdio, track_num))
return CDIO_FS_AUDIO;
@@ -226,8 +227,8 @@ cdio_guess_cd_type(const CdIo *cdio, int start_session, track_t track_num,
} else {
/* read sector 0 ONLY, when NO greenbook CD-I !!!! */
if ( _cdio_read_block(cdio, 0, start_session, 1, track_num) < 0 )
return ret;
sector0_read_ok =
_cdio_read_block(cdio, 0, start_session, 1, track_num) == 0;
if (_cdio_is_it(INDEX_HS))
ret |= CDIO_FS_HIGH_SIERRA;
@@ -256,8 +257,8 @@ cdio_guess_cd_type(const CdIo *cdio, int start_session, track_t track_num,
if (_cdio_is_it(INDEX_BOOTABLE))
ret |= CDIO_FS_ANAL_BOOTABLE;
if (_cdio_is_it(INDEX_XA) && _cdio_is_it(INDEX_ISOFS)
&& !_cdio_is_it(INDEX_PHOTO_CD)) {
if ( _cdio_is_it(INDEX_XA) && _cdio_is_it(INDEX_ISOFS)
&& !(sector0_read_ok && _cdio_is_it(INDEX_PHOTO_CD)) ) {
if ( _cdio_read_block(cdio, VCD_INFO_SECTOR, start_session, 4,
track_num) < 0 )
@@ -271,14 +272,14 @@ cdio_guess_cd_type(const CdIo *cdio, int start_session, track_t track_num,
}
}
else if (_cdio_is_hfs()) ret |= CDIO_FS_HFS;
else if (_cdio_is_it(INDEX_EXT2)) ret |= CDIO_FS_EXT2;
else if (sector0_read_ok && _cdio_is_it(INDEX_EXT2)) ret |= CDIO_FS_EXT2;
else if (_cdio_is_3do()) ret |= CDIO_FS_3DO;
else {
if ( _cdio_read_block(cdio, UFS_SUPERBLOCK_SECTOR, start_session, 2,
track_num) < 0 )
return ret;
if (_cdio_is_it(INDEX_UFS))
if (sector0_read_ok && _cdio_is_it(INDEX_UFS))
ret |= CDIO_FS_UFS;
else
ret |= CDIO_FS_UNKNOWN;