From fd5e6d124346d86b9d411250ca86bcc4172aae3d Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 25 Jul 2004 18:37:09 +0000 Subject: [PATCH] Reduce overall number of CD disc modes. I thing the main purpose that will be used is to separate CD Audio from CD Data, XA and DVD's. On GNU/Linux it seems that the implementation is a bit artificial. --- include/cdio/sector.h | 37 +++++------ lib/_cdio_linux.c | 10 ++- lib/image/bincue.c | 66 ++++++++------------ lib/image/cdrdao.c | 137 +++++++++++++++++++++++++++++++++++++++-- lib/image/nrg.c | 20 +++--- lib/sector.c | 35 ++++++++++- src/cd-info.c | 50 +++++---------- test/check_opts0.right | 2 +- test/check_opts1.right | 2 +- test/check_opts2.right | 2 +- test/check_opts3.right | 2 +- test/check_opts4.right | 2 +- test/check_opts5.right | 2 +- test/check_opts6.right | 2 +- test/check_opts7.right | 2 +- test/monvoisin.right | 2 +- test/svcdgs.right | 2 +- test/videocd.right | 2 +- 18 files changed, 247 insertions(+), 130 deletions(-) diff --git a/include/cdio/sector.h b/include/cdio/sector.h index a31ec480..79c6fb39 100644 --- a/include/cdio/sector.h +++ b/include/cdio/sector.h @@ -1,5 +1,5 @@ /* - $Id: sector.h,v 1.25 2004/07/25 03:17:47 rocky Exp $ + $Id: sector.h,v 1.26 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2000 Herbert Valerio Riedel Copyright (C) 2003, 2004 Rocky Bernstein @@ -86,11 +86,9 @@ typedef enum { */ typedef enum { CDIO_DISC_MODE_CD_DA, /**< CD-DA */ - CDIO_DISC_MODE_CD_DATA_1, /**< CD-ROM form 1 mode 1 */ - CDIO_DISC_MODE_CD_DATA_2, /**< CD-ROM form 1 mode 2 */ - CDIO_DISC_MODE_CD_XA_2_1, /**< CD-ROM XA form2 mode 1 */ - CDIO_DISC_MODE_CD_XA_2_2, /**< CD-ROM XA form2 mode 2 */ - CDIO_DISC_MODE_CD_MIXED, /**< CD-ROM XA and CD-I */ + CDIO_DISC_MODE_CD_DATA, /**< CD-ROM form 1 */ + CDIO_DISC_MODE_CD_XA, /**< CD-ROM XA form2 */ + CDIO_DISC_MODE_CD_MIXED, /**< Some combo of above. */ CDIO_DISC_MODE_DVD_ROM, /**< DVD ROM (e.g. movies) */ CDIO_DISC_MODE_DVD_RAM, /**< DVD-RAM */ CDIO_DISC_MODE_DVD_R, /**< DVD-R */ @@ -102,23 +100,6 @@ typedef enum { CDIO_DISC_MODE_ERROR } discmode_t; -#define CDIO_DISC_MODE_DVD \ - (CDIO_DISC_MODE_DVD_ROM \ - || CDIO_DISC_MODE_DVD_RAM \ - || CDIO_DISC_MODE_DVD_R \ - || CDIO_DISC_MODE_DVD_RW \ - || CDIO_DISC_MODE_DVD_PR \ - || CDIO_DISC_MODE_DVD_PRW \ - || CDIO_DISC_MODE_DVD_OTHER) - -#define CDIO_DISC_MODE_CD \ - (CDIO_DISC_MODE_CD_DA \ - || CDIO_DISC_MODE_CD_DATA_1 \ - || CDIO_DISC_MODE_CD_DATA_2 \ - || CDIO_DISC_MODE_CD_XA_2_1 \ - || CDIO_DISC_MODE_CD_XA_2_2 \ - || CDIO_DISC_MODE_CD_MIXED) - /*! Information that can be obtained through a Read Subchannel command. */ @@ -288,6 +269,16 @@ lba_t cdio_msf3_to_lba (unsigned int minutes, unsigned int seconds, */ lba_t cdio_mmssff_to_lba (const char *psz_mmssff); +/*! + Return true if discmode is some sort of CD. +*/ +bool cdio_is_discmode_cdrom (discmode_t discmode); + +/*! + Return true if discmode is some sort of DVD. +*/ +bool cdio_is_discmode_dvd (discmode_t discmode); + #ifdef __cplusplus } diff --git a/lib/_cdio_linux.c b/lib/_cdio_linux.c index 84426f88..831a1e60 100644 --- a/lib/_cdio_linux.c +++ b/lib/_cdio_linux.c @@ -1,5 +1,5 @@ /* - $Id: _cdio_linux.c,v 1.79 2004/07/25 17:35:02 rocky Exp $ + $Id: _cdio_linux.c,v 1.80 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.79 2004/07/25 17:35:02 rocky Exp $"; +static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.80 2004/07/25 18:37:09 rocky Exp $"; #include @@ -557,15 +557,13 @@ get_discmode_linux (void *p_user_data) case CDS_AUDIO: return CDIO_DISC_MODE_CD_DA; case CDS_DATA_1: - return CDIO_DISC_MODE_CD_DATA_1; case CDS_DATA_2: - return CDIO_DISC_MODE_CD_DATA_2; + return CDIO_DISC_MODE_CD_DATA; case CDS_MIXED: return CDIO_DISC_MODE_CD_MIXED; case CDS_XA_2_1: - return CDIO_DISC_MODE_CD_XA_2_1; case CDS_XA_2_2: - return CDIO_DISC_MODE_CD_XA_2_2; + return CDIO_DISC_MODE_CD_XA; case CDS_NO_INFO: return CDIO_DISC_MODE_NO_INFO; default: diff --git a/lib/image/bincue.c b/lib/image/bincue.c index 8dfe0317..2381e6ce 100644 --- a/lib/image/bincue.c +++ b/lib/image/bincue.c @@ -1,5 +1,5 @@ /* - $Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $ + $Id: bincue.c,v 1.37 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2002, 2003, 2004 Rocky Bernstein Copyright (C) 2001 Herbert Valerio Riedel @@ -26,7 +26,7 @@ (*.cue). */ -static const char _rcsid[] = "$Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $"; +static const char _rcsid[] = "$Id: bincue.c,v 1.37 2004/07/25 18:37:09 rocky Exp $"; #include "image.h" #include "cdio_assert.h" @@ -407,10 +407,8 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_1: - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_DATA: + case CDIO_DISC_MODE_CD_XA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -429,17 +427,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->endsize = 0; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1; + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; break; - case CDIO_DISC_MODE_CD_DATA_1: + case CDIO_DISC_MODE_CD_DATA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_1: - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -459,17 +455,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->mode = MODE1_RAW; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2; + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; break; - case CDIO_DISC_MODE_CD_DATA_2: + case CDIO_DISC_MODE_CD_DATA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_XA_2_1: - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -488,17 +482,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->endsize = 0; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2; + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; break; - case CDIO_DISC_MODE_CD_DATA_2: + case CDIO_DISC_MODE_CD_DATA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_XA_2_1: - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -513,17 +505,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->mode = MODE2_FORM1; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; + cd->disc_mode = CDIO_DISC_MODE_CD_XA; break; - case CDIO_DISC_MODE_CD_XA_2_1: + case CDIO_DISC_MODE_CD_XA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_DATA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -538,17 +528,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->mode = MODE2_FORM2; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; + cd->disc_mode = CDIO_DISC_MODE_CD_XA; break; - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_1: + case CDIO_DISC_MODE_CD_DATA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -567,17 +555,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->endsize = 0; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; + cd->disc_mode = CDIO_DISC_MODE_CD_XA; break; - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_1: + case CDIO_DISC_MODE_CD_DATA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: @@ -596,17 +582,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name) this_track->endsize = CDIO_CD_SYNC_SIZE + CDIO_CD_ECC_SIZE; switch(cd->disc_mode) { case CDIO_DISC_MODE_NO_INFO: - cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; + cd->disc_mode = CDIO_DISC_MODE_CD_XA; break; - case CDIO_DISC_MODE_CD_XA_2_2: + case CDIO_DISC_MODE_CD_XA: case CDIO_DISC_MODE_CD_MIXED: case CDIO_DISC_MODE_ERROR: /* Disc type stays the same. */ break; case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA_1: - case CDIO_DISC_MODE_CD_DATA_2: - case CDIO_DISC_MODE_CD_XA_2_1: + case CDIO_DISC_MODE_CD_DATA: cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; break; default: diff --git a/lib/image/cdrdao.c b/lib/image/cdrdao.c index 35036110..2b6d9d86 100644 --- a/lib/image/cdrdao.c +++ b/lib/image/cdrdao.c @@ -1,5 +1,5 @@ /* - $Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $ + $Id: cdrdao.c,v 1.22 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2004 Rocky Bernstein toc reading routine adapted from cuetools @@ -25,7 +25,7 @@ (*.cue). */ -static const char _rcsid[] = "$Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $"; +static const char _rcsid[] = "$Id: cdrdao.c,v 1.22 2004/07/25 18:37:09 rocky Exp $"; #include "image.h" #include "cdio_assert.h" @@ -354,7 +354,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) } else if (0 == strcmp ("CD_ROM", psz_keyword)) { if (-1 == i) { if (NULL != cd) - cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1; + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; } else { goto not_in_global_section; } @@ -362,7 +362,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) } else if (0 == strcmp ("CD_ROM_XA", psz_keyword)) { if (-1 == i) { if (NULL != cd) - cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; + cd->disc_mode = CDIO_DISC_MODE_CD_XA; } else { goto not_in_global_section; } @@ -379,6 +379,23 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) cd->tocent[i].datasize = CDIO_CD_FRAMESIZE_RAW; cd->tocent[i].datastart = 0; cd->tocent[i].endsize = 0; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_DA; + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DATA: + case CDIO_DISC_MODE_CD_XA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } + } } else if (0 == strcmp ("MODE1", psz_field)) { if (NULL != cd) { @@ -389,6 +406,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) cd->tocent[i].datasize = CDIO_CD_FRAMESIZE; cd->tocent[i].endsize = CDIO_CD_EDC_SIZE + CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; + break; + case CDIO_DISC_MODE_CD_DATA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_XA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE1_RAW", psz_field)) { if (NULL != cd) { @@ -399,6 +432,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) cd->tocent[i].datasize = CDIO_CD_FRAMESIZE; cd->tocent[i].endsize = CDIO_CD_EDC_SIZE + CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_DATA; + break; + case CDIO_DISC_MODE_CD_DATA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_XA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE2", psz_field)) { if (NULL != cd) { @@ -407,6 +456,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) + CDIO_CD_HEADER_SIZE; cd->tocent[i].datasize = M2RAW_SECTOR_SIZE; cd->tocent[i].endsize = 0; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_XA; + break; + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE2_FORM1", psz_field)) { if (NULL != cd) { @@ -415,6 +480,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) + CDIO_CD_HEADER_SIZE; cd->tocent[i].datasize = CDIO_CD_FRAMESIZE_RAW; cd->tocent[i].endsize = 0; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_XA; + break; + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE2_FORM2", psz_field)) { if (NULL != cd) { @@ -424,6 +505,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) cd->tocent[i].datasize = CDIO_CD_FRAMESIZE; cd->tocent[i].endsize = CDIO_CD_SYNC_SIZE + CDIO_CD_ECC_SIZE; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_XA; + break; + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE2_FORM_MIX", psz_field)) { if (NULL != cd) { @@ -434,6 +531,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE; cd->tocent[i].track_green = true; cd->tocent[i].endsize = 0; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_XA; + break; + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else if (0 == strcmp ("MODE2_RAW", psz_field)) { if (NULL != cd) { @@ -444,6 +557,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name) cd->tocent[i].datasize = CDIO_CD_FRAMESIZE; cd->tocent[i].track_green = true; cd->tocent[i].endsize = 0; + switch(cd->disc_mode) { + case CDIO_DISC_MODE_NO_INFO: + cd->disc_mode = CDIO_DISC_MODE_CD_XA; + break; + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_ERROR: + /* Disc type stays the same. */ + break; + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + cd->disc_mode = CDIO_DISC_MODE_CD_MIXED; + break; + default: + cd->disc_mode = CDIO_DISC_MODE_ERROR; + } } } else { cdio_log(log_level, "%s line %d after TRACK:", diff --git a/lib/image/nrg.c b/lib/image/nrg.c index 3dc5a147..dbf79fc2 100644 --- a/lib/image/nrg.c +++ b/lib/image/nrg.c @@ -1,5 +1,5 @@ /* - $Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $ + $Id: nrg.c,v 1.34 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein Copyright (C) 2001, 2003 Herbert Valerio Riedel @@ -45,7 +45,7 @@ #include "_cdio_stdio.h" #include "nrg.h" -static const char _rcsid[] = "$Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $"; +static const char _rcsid[] = "$Id: nrg.c,v 1.34 2004/07/25 18:37:09 rocky Exp $"; /* reader */ @@ -397,18 +397,18 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name) case 0: /* Mode 1 */ track_format = TRACK_FORMAT_DATA; - env->disc_mode = CDIO_DISC_MODE_CD_DATA_1; + env->disc_mode = CDIO_DISC_MODE_CD_DATA; break; case 2: /* Mode 2 form 1 */ form2 = 0; track_format = TRACK_FORMAT_XA; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; + env->disc_mode = CDIO_DISC_MODE_CD_XA; break; case 3: /* Mode 2 */ track_format = TRACK_FORMAT_XA; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */ + env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ?? */ break; case 0x6: /* Mode2 form mix */ @@ -417,7 +417,7 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name) break; case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */ track_format = TRACK_FORMAT_XA; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */ + env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ??. */ break; case 0x7: track_format = TRACK_FORMAT_AUDIO; @@ -512,21 +512,21 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name) track_format = TRACK_FORMAT_DATA; track_green = false; /* ?? */ blocksize = CDIO_CD_FRAMESIZE; - env->disc_mode = CDIO_DISC_MODE_CD_DATA_1; + env->disc_mode = CDIO_DISC_MODE_CD_DATA; break; case 2: /* Mode 2 form 1 */ track_format = TRACK_FORMAT_XA; track_green = false; /* ?? */ blocksize = CDIO_CD_FRAMESIZE; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; + env->disc_mode = CDIO_DISC_MODE_CD_XA; break; case 3: /* Mode 2 */ track_format = TRACK_FORMAT_XA; track_green = true; blocksize = M2RAW_SECTOR_SIZE; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */ + env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ?? */ break; case 06: /* Mode2 form mix */ @@ -539,7 +539,7 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name) track_format = TRACK_FORMAT_XA; track_green = true; blocksize = M2RAW_SECTOR_SIZE; - env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */ + env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ??. */ break; case 7: track_format = TRACK_FORMAT_AUDIO; diff --git a/lib/sector.c b/lib/sector.c index fd226fb1..eb565455 100644 --- a/lib/sector.c +++ b/lib/sector.c @@ -1,5 +1,5 @@ /* - $Id: sector.c,v 1.12 2004/07/10 01:21:19 rocky Exp $ + $Id: sector.c,v 1.13 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2004 Rocky Bernstein Copyright (C) 2000 Herbert Valerio Riedel @@ -35,7 +35,7 @@ #include -static const char _rcsid[] = "$Id: sector.c,v 1.12 2004/07/10 01:21:19 rocky Exp $"; +static const char _rcsid[] = "$Id: sector.c,v 1.13 2004/07/25 18:37:09 rocky Exp $"; lba_t cdio_lba_to_lsn (lba_t lba) @@ -248,6 +248,37 @@ cdio_mmssff_to_lba (const char *psz_mmssff) return ret; } +bool +cdio_is_discmode_cdrom(discmode_t discmode) +{ + switch (discmode) { + case CDIO_DISC_MODE_CD_DA: + case CDIO_DISC_MODE_CD_DATA: + case CDIO_DISC_MODE_CD_XA: + case CDIO_DISC_MODE_CD_MIXED: + case CDIO_DISC_MODE_NO_INFO: + return true; + default: + return false; + } +} + +bool +cdio_is_discmode_dvd(discmode_t discmode) +{ + switch (discmode) { + case CDIO_DISC_MODE_DVD_ROM: + case CDIO_DISC_MODE_DVD_RAM: + case CDIO_DISC_MODE_DVD_R: + case CDIO_DISC_MODE_DVD_RW: + case CDIO_DISC_MODE_DVD_PR: + case CDIO_DISC_MODE_DVD_PRW: + return true; + default: + return false; + } +} + /* * Local variables: diff --git a/src/cd-info.c b/src/cd-info.c index 71e96c46..f965d0c3 100644 --- a/src/cd-info.c +++ b/src/cd-info.c @@ -1,5 +1,5 @@ /* - $Id: cd-info.c,v 1.77 2004/07/25 17:32:19 rocky Exp $ + $Id: cd-info.c,v 1.78 2004/07/25 18:37:09 rocky Exp $ Copyright (C) 2003, 2004 Rocky Bernstein Copyright (C) 1996, 1997, 1998 Gerd Knorr @@ -856,6 +856,7 @@ main(int argc, const char *argv[]) int first_audio = -1; /* # of first audio track */ cdio_iso_analysis_t cdio_iso_analysis; char *media_catalog_number; + discmode_t discmode = CDIO_DISC_MODE_NO_INFO; memset(&cdio_iso_analysis, 0, sizeof(cdio_iso_analysis)); init(); @@ -1007,22 +1008,16 @@ main(int argc, const char *argv[]) if ( 0 == opts.no_disc_mode ) { printf("Disc mode is listed as: "); - switch(cdio_get_discmode(cdio)) { + switch( (discmode = cdio_get_discmode(cdio)) ) { case CDIO_DISC_MODE_CD_DA: printf("CD-DA\n"); break; - case CDIO_DISC_MODE_CD_DATA_1: - printf("CD-ROM form 1 mode 1"); + case CDIO_DISC_MODE_CD_DATA: + printf("CD-ROM form 1"); break; - case CDIO_DISC_MODE_CD_DATA_2: - printf("CD-ROM form 1 mode 2"); + case CDIO_DISC_MODE_CD_XA: + printf("CD-ROM XA form2"); break; - case CDIO_DISC_MODE_CD_XA_2_1: - printf("CD-ROM XA form2 mode 1"); - break; - case CDIO_DISC_MODE_CD_XA_2_2: - printf("CD-ROM XA form2 mode 2"); - break; case CDIO_DISC_MODE_CD_MIXED: printf("CD-ROM mixed mode"); break; @@ -1100,36 +1095,25 @@ main(int argc, const char *argv[]) if (i == i_tracks) i = CDIO_CDROM_LEADOUT_TRACK-1; } - /* get MCN */ - media_catalog_number = cdio_get_mcn(cdio); - printf("Media Catalog Number (MCN): "); fflush(stdout); - if (NULL == media_catalog_number) - printf("not available\n"); - else { + if (cdio_is_discmode_cdrom(discmode)) { + /* get and print MCN */ + media_catalog_number = cdio_get_mcn(cdio); + + printf("Media Catalog Number (MCN): "); fflush(stdout); + if (NULL == media_catalog_number) + printf("not available\n"); + else { printf("%s\n", media_catalog_number); free(media_catalog_number); + } } + #if CDIO_IOCTL_FINISHED if (!opts.no_ioctl) { printf(STRONG "What ioctl's report...\n" NORMAL); -#ifdef CDROM_DISC_STATUS - /* get disk status */ - printf("disc status : "); fflush(stdout); - switch (ioctl(filehandle,CDROM_DISC_STATUS,0)) { - case CDS_NO_INFO: printf("no info\n"); break; - case CDS_NO_DISC: printf("no disc\n"); break; - case CDS_AUDIO: printf("audio\n"); break; - case CDS_DATA_1: printf("data mode 1\n"); break; - case CDS_DATA_2: printf("data mode 2\n"); break; - case CDS_XA_2_1: printf("XA mode 1\n"); break; - case CDS_XA_2_2: printf("XA mode 2\n"); break; - default: printf("unknown (failed?)\n"); - } -#endif - #ifdef CDROMMULTISESSION /* get multisession */ printf("multisession: "); fflush(stdout); diff --git a/test/check_opts0.right b/test/check_opts0.right index 57352d06..1979e11b 100644 --- a/test/check_opts0.right +++ b/test/check_opts0.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 Media Catalog Number (MCN): not available __________________________________ CD Analysis Report diff --git a/test/check_opts1.right b/test/check_opts1.right index 57352d06..1979e11b 100644 --- a/test/check_opts1.right +++ b/test/check_opts1.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 Media Catalog Number (MCN): not available __________________________________ CD Analysis Report diff --git a/test/check_opts2.right b/test/check_opts2.right index d2c979a0..9cc45654 100644 --- a/test/check_opts2.right +++ b/test/check_opts2.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/check_opts3.right b/test/check_opts3.right index d2c979a0..9cc45654 100644 --- a/test/check_opts3.right +++ b/test/check_opts3.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/check_opts4.right b/test/check_opts4.right index 4f76cf16..1bea6710 100644 --- a/test/check_opts4.right +++ b/test/check_opts4.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/check_opts5.right b/test/check_opts5.right index 4f76cf16..1bea6710 100644 --- a/test/check_opts5.right +++ b/test/check_opts5.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/check_opts6.right b/test/check_opts6.right index 4f76cf16..1bea6710 100644 --- a/test/check_opts6.right +++ b/test/check_opts6.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/check_opts7.right b/test/check_opts7.right index 4f76cf16..1bea6710 100644 --- a/test/check_opts7.right +++ b/test/check_opts7.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM form 1 mode 2 +Disc mode is listed as: CD-ROM form 1 CD-ROM Track List (1 - 1) #: MSF LSN Type Green? 1: 00:02:00 000000 data false diff --git a/test/monvoisin.right b/test/monvoisin.right index 753147c4..caf379ac 100644 --- a/test/monvoisin.right +++ b/test/monvoisin.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM XA form2 mode 1 +Disc mode is listed as: CD-ROM XA form2 CD-ROM Track List (1 - 2) #: MSF LSN Type Green? 1: 00:02:00 000000 XA true diff --git a/test/svcdgs.right b/test/svcdgs.right index ff6983ae..3005cec5 100644 --- a/test/svcdgs.right +++ b/test/svcdgs.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM XA form2 mode 1 +Disc mode is listed as: CD-ROM XA form2 CD-ROM Track List (1 - 2) #: MSF LSN Type Green? 1: 00:02:00 000000 XA true diff --git a/test/videocd.right b/test/videocd.right index 0e8a2f47..7a38d5e4 100644 --- a/test/videocd.right +++ b/test/videocd.right @@ -24,7 +24,7 @@ Writing.... Can write DVD-RAM : No __________________________________ -Disc mode is listed as: CD-ROM XA form2 mode 1 +Disc mode is listed as: CD-ROM XA form2 CD-ROM Track List (1 - 5) #: MSF LSN Type Green? 1: 00:02:00 000000 XA true