sector.h: add routines for determining if discmode is DVD or CD.
cdtext*: adjust for bigendian or not. Check for double-byte characters.
cd-info.c: new option --dvd. Don't attempt to understand DVD unless this is
given.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: sector.h,v 1.26 2004/07/25 18:37:09 rocky Exp $
|
||||
$Id: sector.h,v 1.27 2004/08/30 00:26:59 rocky Exp $
|
||||
|
||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||
@@ -284,6 +284,18 @@ bool cdio_is_discmode_dvd (discmode_t discmode);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline bool discmode_is_cd(discmode_t discmode)
|
||||
{
|
||||
return discmode <= CDIO_DISC_MODE_CD_MIXED;
|
||||
}
|
||||
|
||||
static inline bool discmode_is_dvd(discmode_t discmode)
|
||||
{
|
||||
return (discmode >= CDIO_DISC_MODE_DVD_ROM)
|
||||
&& (discmode <= CDIO_DISC_MODE_DVD_OTHER);
|
||||
}
|
||||
|
||||
|
||||
#endif /* _CDIO_SECTOR_H_ */
|
||||
|
||||
|
||||
|
||||
11
lib/cdtext.c
11
lib/cdtext.c
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: cdtext.c,v 1.6 2004/07/17 08:59:44 rocky Exp $
|
||||
$Id: cdtext.c,v 1.7 2004/08/30 00:26:59 rocky Exp $
|
||||
|
||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||
toc reading routine adapted from cuetools
|
||||
@@ -144,6 +144,9 @@ cdtext_set (cdtext_field_t key, const char *value, cdtext_t *cdtext)
|
||||
#define SET_CDTEXT_FIELD(FIELD) \
|
||||
(*set_cdtext_field_fn)(user_data, i_track, i_first_track, FIELD, buffer);
|
||||
|
||||
/*
|
||||
parse all CD-TEXT data retrieved.
|
||||
*/
|
||||
bool
|
||||
cdtext_data_init(void *user_data, track_t i_first_track,
|
||||
const unsigned char *wdata,
|
||||
@@ -162,6 +165,12 @@ cdtext_data_init(void *user_data, track_t i_first_track,
|
||||
|
||||
pdata = (CDText_data_t *) (&wdata[4]);
|
||||
for( i=0; i < CDIO_CDTEXT_MAX_PACK_DATA; i++ ) {
|
||||
|
||||
if ( pdata->bDBC ) {
|
||||
cdio_warn("Double-byte characters not supported");
|
||||
return false;
|
||||
}
|
||||
|
||||
if( pdata->seq != i )
|
||||
break;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: cdtext_private.h,v 1.3 2004/07/17 09:34:30 rocky Exp $
|
||||
$Id: cdtext_private.h,v 1.4 2004/08/30 00:26:59 rocky Exp $
|
||||
|
||||
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||
|
||||
@@ -43,10 +43,16 @@ struct CDText_data
|
||||
uint8_t type;
|
||||
track_t i_track;
|
||||
uint8_t seq;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
uint8_t bDBC: 1; /* double byte character */
|
||||
uint8_t block: 3; /* block number 0..7 */
|
||||
uint8_t characterPosition:4; /* character position */
|
||||
uint8_t block:3; /* block number 0..7 */
|
||||
uint8_t bDBC:1; /* double byte character */
|
||||
char text[12];
|
||||
#else
|
||||
uint8_t characterPosition:4; /* character position */
|
||||
uint8_t block :3; /* block number 0..7 */
|
||||
uint8_t bDBC :1; /* double byte character */
|
||||
#endif
|
||||
char text[CDIO_CDTEXT_MAX_TEXT_DATA];
|
||||
uint8_t crc[2];
|
||||
} GNUC_PACKED;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
$Id: cd-info.c,v 1.84 2004/08/27 11:53:38 rocky Exp $
|
||||
$Id: cd-info.c,v 1.85 2004/08/30 00:26:59 rocky Exp $
|
||||
|
||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
||||
@@ -91,6 +91,7 @@ struct arguments
|
||||
char *cddb_cachedir;
|
||||
#endif
|
||||
int no_vcd;
|
||||
int show_dvd;
|
||||
int no_device;
|
||||
int no_disc_mode;
|
||||
uint32_t debug_level;
|
||||
@@ -173,6 +174,9 @@ parse_options (int argc, const char *argv[])
|
||||
{"no-disc-mode", '\0', POPT_ARG_NONE, &opts.no_disc_mode, 0,
|
||||
"Don't show disc-mode info"},
|
||||
|
||||
{"dvd", '\0', POPT_ARG_NONE, &opts.show_dvd, 0,
|
||||
"Attempt to give DVD information if a DVD is found."},
|
||||
|
||||
#ifdef HAVE_VCDINFO
|
||||
{"no-vcd", 'v', POPT_ARG_NONE, &opts.no_vcd, 0,
|
||||
"Don't look up Video CD information"},
|
||||
@@ -1029,6 +1033,12 @@ main(int argc, const char *argv[])
|
||||
discmode2str[discmode]);
|
||||
}
|
||||
|
||||
if (discmode_is_dvd && !opts.show_dvd) {
|
||||
printf("No further information currently given for DVDs.\n");
|
||||
printf("Use --dvd to override.\n");
|
||||
myexit(p_cdio, EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
i_first_track = cdio_get_first_track_num(p_cdio);
|
||||
i_tracks = cdio_get_num_tracks(p_cdio);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user