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) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -284,6 +284,18 @@ bool cdio_is_discmode_dvd (discmode_t discmode);
|
|||||||
}
|
}
|
||||||
#endif
|
#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_ */
|
#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>
|
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
toc reading routine adapted from cuetools
|
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) \
|
#define SET_CDTEXT_FIELD(FIELD) \
|
||||||
(*set_cdtext_field_fn)(user_data, i_track, i_first_track, FIELD, buffer);
|
(*set_cdtext_field_fn)(user_data, i_track, i_first_track, FIELD, buffer);
|
||||||
|
|
||||||
|
/*
|
||||||
|
parse all CD-TEXT data retrieved.
|
||||||
|
*/
|
||||||
bool
|
bool
|
||||||
cdtext_data_init(void *user_data, track_t i_first_track,
|
cdtext_data_init(void *user_data, track_t i_first_track,
|
||||||
const unsigned char *wdata,
|
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]);
|
pdata = (CDText_data_t *) (&wdata[4]);
|
||||||
for( i=0; i < CDIO_CDTEXT_MAX_PACK_DATA; i++ ) {
|
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 )
|
if( pdata->seq != i )
|
||||||
break;
|
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>
|
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -43,10 +43,16 @@ struct CDText_data
|
|||||||
uint8_t type;
|
uint8_t type;
|
||||||
track_t i_track;
|
track_t i_track;
|
||||||
uint8_t seq;
|
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 characterPosition:4; /* character position */
|
||||||
uint8_t block:3; /* block number 0..7 */
|
#else
|
||||||
uint8_t bDBC:1; /* double byte character */
|
uint8_t characterPosition:4; /* character position */
|
||||||
char text[12];
|
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];
|
uint8_t crc[2];
|
||||||
} GNUC_PACKED;
|
} 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) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
||||||
@@ -91,6 +91,7 @@ struct arguments
|
|||||||
char *cddb_cachedir;
|
char *cddb_cachedir;
|
||||||
#endif
|
#endif
|
||||||
int no_vcd;
|
int no_vcd;
|
||||||
|
int show_dvd;
|
||||||
int no_device;
|
int no_device;
|
||||||
int no_disc_mode;
|
int no_disc_mode;
|
||||||
uint32_t debug_level;
|
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,
|
{"no-disc-mode", '\0', POPT_ARG_NONE, &opts.no_disc_mode, 0,
|
||||||
"Don't show disc-mode info"},
|
"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
|
#ifdef HAVE_VCDINFO
|
||||||
{"no-vcd", 'v', POPT_ARG_NONE, &opts.no_vcd, 0,
|
{"no-vcd", 'v', POPT_ARG_NONE, &opts.no_vcd, 0,
|
||||||
"Don't look up Video CD information"},
|
"Don't look up Video CD information"},
|
||||||
@@ -1029,6 +1033,12 @@ main(int argc, const char *argv[])
|
|||||||
discmode2str[discmode]);
|
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_first_track = cdio_get_first_track_num(p_cdio);
|
||||||
i_tracks = cdio_get_num_tracks(p_cdio);
|
i_tracks = cdio_get_num_tracks(p_cdio);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user