Fix bug in storing iso_9660 volume sector count. cd-info.c reduce
global variables. Regression tests output was incorrect with this long-standing bug.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# $Id: Makefile.am,v 1.10 2003/08/14 13:41:26 rocky Exp $
|
# $Id: Makefile.am,v 1.11 2003/08/16 12:59:03 rocky Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
|
# Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
|
||||||
#
|
#
|
||||||
@@ -24,12 +24,14 @@ CDDB_LIBS=@CDDB_LIBS@
|
|||||||
if BUILD_CDINFO
|
if BUILD_CDINFO
|
||||||
cd_info_SOURCES = cd-info.c analyze.c analyze.h
|
cd_info_SOURCES = cd-info.c analyze.c analyze.h
|
||||||
cd_info_LDADD = $(LIBCDIO_LIBS) $(LIBPOPT_LIBS) $(CDDB_LIBS) $(VCDINFO_LIBS)
|
cd_info_LDADD = $(LIBCDIO_LIBS) $(LIBPOPT_LIBS) $(CDDB_LIBS) $(VCDINFO_LIBS)
|
||||||
|
cd_info_old_SOURCES = cd-info-old.c
|
||||||
|
cd_info_old_LDADD = $(LIBCDIO_LIBS) $(LIBPOPT_LIBS) $(CDDB_LIBS) $(VCDINFO_LIBS)
|
||||||
if BUILD_CDINFO_LINUX
|
if BUILD_CDINFO_LINUX
|
||||||
cdinfo_linux_SOURCES = cdinfo-linux.c
|
cdinfo_linux_SOURCES = cdinfo-linux.c
|
||||||
cdinfo_linux_LDADD = $(LIBCDIO_LIBS) $(LIBPOPT_LIBS)
|
cdinfo_linux_LDADD = $(LIBCDIO_LIBS) $(LIBPOPT_LIBS)
|
||||||
bin_PROGRAMS = cd-info cdinfo-linux
|
bin_PROGRAMS = cd-info cdinfo-linux
|
||||||
else
|
else
|
||||||
bin_PROGRAMS = cd-info
|
bin_PROGRAMS = cd-info cd-info-old
|
||||||
EXTRA_DIST = cdinfo-linux.c
|
EXTRA_DIST = cdinfo-linux.c
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
|||||||
105
src/analyze.c
105
src/analyze.c
@@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
$Id: analyze.c,v 1.1 2003/08/14 13:41:26 rocky Exp $
|
$Id: analyze.c,v 1.2 2003/08/16 12:59:03 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003 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>
|
||||||
and Heiko Ei<45>feldt <heiko@hexco.de>
|
and Heiko Ei<45>feldt <heiko@hexco.de>
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -117,9 +117,8 @@ static signature_t sigs[] =
|
|||||||
#define IS_UFS 9
|
#define IS_UFS 9
|
||||||
#define IS_BOOTABLE 10
|
#define IS_BOOTABLE 10
|
||||||
#define IS_VIDEO_CD 11 /* Video CD */
|
#define IS_VIDEO_CD 11 /* Video CD */
|
||||||
#define IS_SVCD 12 /* Chinese Video CD - slightly incompatible with SVCD */
|
#define IS_SVCD 12 /* CVD *or* SVCD */
|
||||||
|
#define IS_CVD 13 /* CVD - slightly incompatible with SVCD */
|
||||||
cdio_analysis_t cdio_analysis;
|
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
/* some ISO 9660 fiddling */
|
/* some ISO 9660 fiddling */
|
||||||
@@ -153,7 +152,7 @@ read_block(CdIo *cdio, int superblock, uint32_t offset, uint8_t bufnum,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
is_it(int num)
|
_cdio_is_it(int num)
|
||||||
{
|
{
|
||||||
signature_t *sigp=&sigs[num];
|
signature_t *sigp=&sigs[num];
|
||||||
int len=strlen(sigp->sig_str);
|
int len=strlen(sigp->sig_str);
|
||||||
@@ -163,7 +162,7 @@ is_it(int num)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
is_hfs(void)
|
_cdio_is_hfs(void)
|
||||||
{
|
{
|
||||||
return (0 == memcmp(&buffer[1][512],"PM",2)) ||
|
return (0 == memcmp(&buffer[1][512],"PM",2)) ||
|
||||||
(0 == memcmp(&buffer[1][512],"TS",2)) ||
|
(0 == memcmp(&buffer[1][512],"TS",2)) ||
|
||||||
@@ -171,29 +170,32 @@ is_hfs(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
is_3do(void)
|
_cdio_is_3do(void)
|
||||||
{
|
{
|
||||||
return (0 == memcmp(&buffer[1][0],"\x01\x5a\x5a\x5a\x5a\x5a\x01", 7)) &&
|
return (0 == memcmp(&buffer[1][0],"\x01\x5a\x5a\x5a\x5a\x5a\x01", 7)) &&
|
||||||
(0 == memcmp(&buffer[1][40], "CD-ROM", 6));
|
(0 == memcmp(&buffer[1][40], "CD-ROM", 6));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_joliet(void)
|
static int
|
||||||
|
_cdio_is_joliet(void)
|
||||||
{
|
{
|
||||||
return 2 == buffer[3][0] && buffer[3][88] == 0x25 && buffer[3][89] == 0x2f;
|
return 2 == buffer[3][0] && buffer[3][88] == 0x25 && buffer[3][89] == 0x2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ISO 9660 volume space in M2F1_SECTOR_SIZE byte units */
|
/* ISO 9660 volume space in M2F1_SECTOR_SIZE byte units */
|
||||||
static int
|
static int
|
||||||
get_size(void)
|
_cdio_get_iso9660_fs_sec_count(void)
|
||||||
{
|
{
|
||||||
return ((buffer[0][80] & 0xff) |
|
int sec_count =
|
||||||
((buffer[0][81] & 0xff) << 8) |
|
((buffer[0][80] & 0xff) |
|
||||||
((buffer[0][82] & 0xff) << 16) |
|
((buffer[0][81] & 0xff) << 8) |
|
||||||
((buffer[0][83] & 0xff) << 24));
|
((buffer[0][82] & 0xff) << 16) |
|
||||||
|
((buffer[0][83] & 0xff) << 24));
|
||||||
|
return sec_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_joliet_level( void )
|
_cdio_get_joliet_level( void )
|
||||||
{
|
{
|
||||||
switch (buffer[3][90]) {
|
switch (buffer[3][90]) {
|
||||||
case 0x40: return 1;
|
case 0x40: return 1;
|
||||||
@@ -207,78 +209,81 @@ get_joliet_level( void )
|
|||||||
if (is_it(sig)) printf("%s, ", sigs[sig].description)
|
if (is_it(sig)) printf("%s, ", sigs[sig].description)
|
||||||
|
|
||||||
int
|
int
|
||||||
guess_filesystem(CdIo *cdio, int start_session, track_t track_num)
|
cdio_guess_filesystem(/*in*/ CdIo *cdio, int start_session, track_t track_num,
|
||||||
|
/*out*/ cdio_analysis_t *cdio_analysis)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (read_block(cdio, ISO_SUPERBLOCK_SECTOR, start_session, 0, track_num) < 0)
|
if (read_block(cdio, ISO_SUPERBLOCK_SECTOR, start_session, 0, track_num) < 0)
|
||||||
return FS_UNKNOWN;
|
return CDIO_FS_UNKNOWN;
|
||||||
|
|
||||||
/* filesystem */
|
/* filesystem */
|
||||||
if (is_it(IS_CD_I) && is_it(IS_CD_RTOS)
|
if (_cdio_is_it(IS_CD_I) && _cdio_is_it(IS_CD_RTOS)
|
||||||
&& !is_it(IS_BRIDGE) && !is_it(IS_XA)) {
|
&& !_cdio_is_it(IS_BRIDGE) && !_cdio_is_it(IS_XA)) {
|
||||||
return FS_INTERACTIVE;
|
return CDIO_FS_INTERACTIVE;
|
||||||
} else { /* read sector 0 ONLY, when NO greenbook CD-I !!!! */
|
} else {
|
||||||
|
/* read sector 0 ONLY, when NO greenbook CD-I !!!! */
|
||||||
|
|
||||||
if (read_block(cdio, 0, start_session, 1, track_num) < 0)
|
if (read_block(cdio, 0, start_session, 1, track_num) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (is_it(IS_HS))
|
if (_cdio_is_it(IS_HS))
|
||||||
ret |= FS_HIGH_SIERRA;
|
ret |= CDIO_FS_HIGH_SIERRA;
|
||||||
else if (is_it(IS_ISOFS)) {
|
else if (_cdio_is_it(IS_ISOFS)) {
|
||||||
if (is_it(IS_CD_RTOS) && is_it(IS_BRIDGE))
|
if (_cdio_is_it(IS_CD_RTOS) && _cdio_is_it(IS_BRIDGE))
|
||||||
ret = FS_ISO_9660_INTERACTIVE;
|
ret = CDIO_FS_ISO_9660_INTERACTIVE;
|
||||||
else if (is_hfs())
|
else if (_cdio_is_hfs())
|
||||||
ret = FS_ISO_HFS;
|
ret = CDIO_FS_ISO_HFS;
|
||||||
else
|
else
|
||||||
ret = FS_ISO_9660;
|
ret = CDIO_FS_ISO_9660;
|
||||||
cdio_analysis.isofs_size = get_size();
|
cdio_analysis->isofs_size = _cdio_get_iso9660_fs_sec_count();
|
||||||
sprintf(cdio_analysis.iso_label, buffer[0]+40);
|
sprintf(cdio_analysis->iso_label, buffer[0]+40);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (is_rockridge())
|
if (_cdio_is_rockridge())
|
||||||
ret |= ROCKRIDGE;
|
ret |= ROCKRIDGE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (read_block(cdio, BOOT_SECTOR, start_session, 3, track_num) < 0)
|
if (read_block(cdio, BOOT_SECTOR, start_session, 3, track_num) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (is_joliet()) {
|
if (_cdio_is_joliet()) {
|
||||||
cdio_analysis.joliet_level = get_joliet_level();
|
cdio_analysis->joliet_level = _cdio_get_joliet_level();
|
||||||
ret |= JOLIET;
|
ret |= JOLIET;
|
||||||
}
|
}
|
||||||
if (is_it(IS_BOOTABLE))
|
if (_cdio_is_it(IS_BOOTABLE))
|
||||||
ret |= BOOTABLE;
|
ret |= BOOTABLE;
|
||||||
|
|
||||||
if (is_it(IS_XA) && is_it(IS_ISOFS)
|
if (_cdio_is_it(IS_XA) && _cdio_is_it(IS_ISOFS)
|
||||||
&& !is_it(IS_PHOTO_CD)) {
|
&& !_cdio_is_it(IS_PHOTO_CD)) {
|
||||||
|
|
||||||
if (read_block(cdio, VCD_INFO_SECTOR, start_session, 4, track_num) < 0)
|
if (read_block(cdio, VCD_INFO_SECTOR, start_session, 4, track_num) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (is_it(IS_BRIDGE) && is_it(IS_CD_RTOS)) {
|
if (_cdio_is_it(IS_BRIDGE) && _cdio_is_it(IS_CD_RTOS)) {
|
||||||
if (is_it(IS_VIDEO_CD)) ret |= VIDEOCDI;
|
if (_cdio_is_it(IS_VIDEO_CD)) ret |= VIDEOCDI;
|
||||||
else if (is_it(IS_SVCD)) ret |= SVCD;
|
else if (_cdio_is_it(IS_SVCD)) ret |= SVCD;
|
||||||
}
|
} else if (_cdio_is_it(IS_SVCD)) ret |= CVD;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (is_hfs()) ret |= FS_HFS;
|
else if (_cdio_is_hfs()) ret |= CDIO_FS_HFS;
|
||||||
else if (is_it(IS_EXT2)) ret |= FS_EXT2;
|
else if (_cdio_is_it(IS_EXT2)) ret |= CDIO_FS_EXT2;
|
||||||
else if (is_3do()) ret |= FS_3DO;
|
else if (_cdio_is_3do()) ret |= CDIO_FS_3DO;
|
||||||
else {
|
else {
|
||||||
if (read_block(cdio, UFS_SUPERBLOCK_SECTOR, start_session, 2, track_num) < 0)
|
if (read_block(cdio, UFS_SUPERBLOCK_SECTOR, start_session, 2, track_num) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (is_it(IS_UFS))
|
if (_cdio_is_it(IS_UFS))
|
||||||
ret |= FS_UFS;
|
ret |= CDIO_FS_UFS;
|
||||||
else
|
else
|
||||||
ret |= FS_UNKNOWN;
|
ret |= CDIO_FS_UNKNOWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* other checks */
|
/* other checks */
|
||||||
if (is_it(IS_XA)) ret |= XA;
|
if (_cdio_is_it(IS_XA)) ret |= XA;
|
||||||
if (is_it(IS_PHOTO_CD)) ret |= PHOTO_CD;
|
if (_cdio_is_it(IS_PHOTO_CD)) ret |= PHOTO_CD;
|
||||||
if (is_it(IS_CDTV)) ret |= CDTV;
|
if (_cdio_is_it(IS_CDTV)) ret |= CDTV;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: analyze.h,v 1.1 2003/08/14 13:41:26 rocky Exp $
|
$Id: analyze.h,v 1.2 2003/08/16 12:59:03 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003 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>
|
||||||
@@ -29,30 +29,33 @@
|
|||||||
#define VIDEOCDI 1024
|
#define VIDEOCDI 1024
|
||||||
#define ROCKRIDGE 2048
|
#define ROCKRIDGE 2048
|
||||||
#define JOLIET 4096
|
#define JOLIET 4096
|
||||||
#define SVCD 8192 /* Choiji Video CD */
|
#define SVCD 8192 /* Super VCD or Choiji Video CD */
|
||||||
|
#define CVD 16384 /* Choiji Video CD */
|
||||||
|
|
||||||
|
|
||||||
#define FS_NO_DATA 0 /* audio only */
|
#define CDIO_FS_NO_DATA 0 /* audio only */
|
||||||
#define FS_HIGH_SIERRA 1
|
#define CDIO_FS_HIGH_SIERRA 1
|
||||||
#define FS_ISO_9660 2
|
#define CDIO_FS_ISO_9660 2
|
||||||
#define FS_INTERACTIVE 3
|
#define CDIO_FS_INTERACTIVE 3
|
||||||
#define FS_HFS 4
|
#define CDIO_FS_HFS 4
|
||||||
#define FS_UFS 5
|
#define CDIO_FS_UFS 5
|
||||||
#define FS_EXT2 6
|
#define CDIO_FS_EXT2 6
|
||||||
#define FS_ISO_HFS 7 /* both hfs & isofs filesystem */
|
#define CDIO_FS_ISO_HFS 7 /* both hfs & isofs filesystem */
|
||||||
#define FS_ISO_9660_INTERACTIVE 8 /* both CD-RTOS and isofs filesystem */
|
#define CDIO_FS_ISO_9660_INTERACTIVE 8 /* both CD-RTOS and isofs filesystem */
|
||||||
#define FS_3DO 9
|
#define CDIO_FS_3DO 9
|
||||||
#define FS_UNKNOWN 15
|
#define CDIO_FS_UNKNOWN 15
|
||||||
#define FS_MASK 15
|
#define CDIO_FS_MASK 15
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int joliet_level;
|
int joliet_level;
|
||||||
char iso_label[32];
|
char iso_label[33]; /* 32 + 1 for null byte at the end in formatting */
|
||||||
int isofs_size;
|
int isofs_size;
|
||||||
} cdio_analysis_t;
|
} cdio_analysis_t;
|
||||||
|
|
||||||
extern cdio_analysis_t cdio_analysis;
|
/*
|
||||||
|
Try to determine what kind of filesystem is at track track_num
|
||||||
|
*/
|
||||||
int guess_filesystem(CdIo *cdio, int start_session, track_t track_num);
|
int cdio_guess_filesystem(/*in*/ CdIo *cdio, int start_session,
|
||||||
|
track_t track_num,
|
||||||
|
/*out*/ cdio_analysis_t *cdio_analysis);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cd-info.c,v 1.18 2003/08/14 13:41:26 rocky Exp $
|
$Id: cd-info.c,v 1.19 2003/08/16 12:59:03 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003 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>
|
||||||
@@ -109,8 +109,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
CdIo *cdio;
|
CdIo *cdio;
|
||||||
track_t num_tracks;
|
cdio_analysis_t cdio_analysis;
|
||||||
track_t first_track_num;
|
|
||||||
|
|
||||||
#if CDIO_IOCTL_FINISHED
|
#if CDIO_IOCTL_FINISHED
|
||||||
struct cdrom_mcn mcn;
|
struct cdrom_mcn mcn;
|
||||||
@@ -480,7 +479,7 @@ _log_handler (cdio_log_level_t level, const char message[])
|
|||||||
|
|
||||||
#ifdef HAVE_CDDB
|
#ifdef HAVE_CDDB
|
||||||
static void
|
static void
|
||||||
print_cddb_info() {
|
print_cddb_info(track_t num_tracks, track_t first_track_num) {
|
||||||
int i, matches;
|
int i, matches;
|
||||||
|
|
||||||
cddb_conn_t *conn = cddb_new();
|
cddb_conn_t *conn = cddb_new();
|
||||||
@@ -600,21 +599,21 @@ print_vcd_info(void) {
|
|||||||
static void
|
static void
|
||||||
print_analysis(int ms_offset, cdio_analysis_t cdio_analysis,
|
print_analysis(int ms_offset, cdio_analysis_t cdio_analysis,
|
||||||
int fs, int first_data, int num_audio,
|
int fs, int first_data, int num_audio,
|
||||||
int num_tracks, CdIo *cdio)
|
track_t num_tracks, track_t first_track_num, CdIo *cdio)
|
||||||
{
|
{
|
||||||
int need_lf;
|
int need_lf;
|
||||||
|
|
||||||
switch(fs & FS_MASK) {
|
switch(fs & CDIO_FS_MASK) {
|
||||||
case FS_NO_DATA:
|
case CDIO_FS_NO_DATA:
|
||||||
if (num_audio > 0) {
|
if (num_audio > 0) {
|
||||||
printf("Audio CD, CDDB disc ID is %08lx\n",
|
printf("Audio CD, CDDB disc ID is %08lx\n",
|
||||||
cddb_discid(cdio, num_tracks));
|
cddb_discid(cdio, num_tracks));
|
||||||
#ifdef HAVE_CDDB
|
#ifdef HAVE_CDDB
|
||||||
if (!opts.no_cddb) print_cddb_info();
|
if (!opts.no_cddb) print_cddb_info(num_tracks, first_track_num);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FS_ISO_9660:
|
case CDIO_FS_ISO_9660:
|
||||||
printf("CD-ROM with ISO 9660 filesystem");
|
printf("CD-ROM with ISO 9660 filesystem");
|
||||||
if (fs & JOLIET) {
|
if (fs & JOLIET) {
|
||||||
printf(" and joliet extension level %d", cdio_analysis.joliet_level);
|
printf(" and joliet extension level %d", cdio_analysis.joliet_level);
|
||||||
@@ -623,38 +622,38 @@ print_analysis(int ms_offset, cdio_analysis_t cdio_analysis,
|
|||||||
printf(" and rockridge extensions");
|
printf(" and rockridge extensions");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
break;
|
break;
|
||||||
case FS_ISO_9660_INTERACTIVE:
|
case CDIO_FS_ISO_9660_INTERACTIVE:
|
||||||
printf("CD-ROM with CD-RTOS and ISO 9660 filesystem\n");
|
printf("CD-ROM with CD-RTOS and ISO 9660 filesystem\n");
|
||||||
break;
|
break;
|
||||||
case FS_HIGH_SIERRA:
|
case CDIO_FS_HIGH_SIERRA:
|
||||||
printf("CD-ROM with High Sierra filesystem\n");
|
printf("CD-ROM with High Sierra filesystem\n");
|
||||||
break;
|
break;
|
||||||
case FS_INTERACTIVE:
|
case CDIO_FS_INTERACTIVE:
|
||||||
printf("CD-Interactive%s\n", num_audio > 0 ? "/Ready" : "");
|
printf("CD-Interactive%s\n", num_audio > 0 ? "/Ready" : "");
|
||||||
break;
|
break;
|
||||||
case FS_HFS:
|
case CDIO_FS_HFS:
|
||||||
printf("CD-ROM with Macintosh HFS\n");
|
printf("CD-ROM with Macintosh HFS\n");
|
||||||
break;
|
break;
|
||||||
case FS_ISO_HFS:
|
case CDIO_FS_ISO_HFS:
|
||||||
printf("CD-ROM with both Macintosh HFS and ISO 9660 filesystem\n");
|
printf("CD-ROM with both Macintosh HFS and ISO 9660 filesystem\n");
|
||||||
break;
|
break;
|
||||||
case FS_UFS:
|
case CDIO_FS_UFS:
|
||||||
printf("CD-ROM with Unix UFS\n");
|
printf("CD-ROM with Unix UFS\n");
|
||||||
break;
|
break;
|
||||||
case FS_EXT2:
|
case CDIO_FS_EXT2:
|
||||||
printf("CD-ROM with Linux second extended filesystem\n");
|
printf("CD-ROM with Linux second extended filesystem\n");
|
||||||
break;
|
break;
|
||||||
case FS_3DO:
|
case CDIO_FS_3DO:
|
||||||
printf("CD-ROM with Panasonic 3DO filesystem\n");
|
printf("CD-ROM with Panasonic 3DO filesystem\n");
|
||||||
break;
|
break;
|
||||||
case FS_UNKNOWN:
|
case CDIO_FS_UNKNOWN:
|
||||||
printf("CD-ROM with unknown filesystem\n");
|
printf("CD-ROM with unknown filesystem\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch(fs & FS_MASK) {
|
switch(fs & CDIO_FS_MASK) {
|
||||||
case FS_ISO_9660:
|
case CDIO_FS_ISO_9660:
|
||||||
case FS_ISO_9660_INTERACTIVE:
|
case CDIO_FS_ISO_9660_INTERACTIVE:
|
||||||
case FS_ISO_HFS:
|
case CDIO_FS_ISO_HFS:
|
||||||
printf("ISO 9660: %i blocks, label `%.32s'\n",
|
printf("ISO 9660: %i blocks, label `%.32s'\n",
|
||||||
cdio_analysis.isofs_size, cdio_analysis.iso_label);
|
cdio_analysis.isofs_size, cdio_analysis.iso_label);
|
||||||
break;
|
break;
|
||||||
@@ -688,6 +687,8 @@ print_analysis(int ms_offset, cdio_analysis_t cdio_analysis,
|
|||||||
}
|
}
|
||||||
if (fs & SVCD)
|
if (fs & SVCD)
|
||||||
need_lf += printf("Super Video CD (SVCD) or Chaoji Video CD (CVD)");
|
need_lf += printf("Super Video CD (SVCD) or Chaoji Video CD (CVD)");
|
||||||
|
if (fs & CVD)
|
||||||
|
need_lf += printf("Chaoji Video CD (CVD)");
|
||||||
if (need_lf) printf("\n");
|
if (need_lf) printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -699,9 +700,11 @@ main(int argc, const char *argv[])
|
|||||||
|
|
||||||
int fs=0;
|
int fs=0;
|
||||||
int i;
|
int i;
|
||||||
lsn_t start_track; /* first sector of track */
|
lsn_t start_track; /* first sector of track */
|
||||||
lsn_t data_start =0; /* start of data area */
|
lsn_t data_start =0; /* start of data area */
|
||||||
int ms_offset = 0;
|
int ms_offset = 0;
|
||||||
|
track_t num_tracks=0;
|
||||||
|
track_t first_track_num=0;
|
||||||
|
|
||||||
poptContext optCon = poptGetContext (NULL, argc, argv, optionsTable, 0);
|
poptContext optCon = poptGetContext (NULL, argc, argv, optionsTable, 0);
|
||||||
|
|
||||||
@@ -925,18 +928,18 @@ main(int argc, const char *argv[])
|
|||||||
|
|
||||||
/* CD-I/Ready says start_track <= 30*75 then CDDA */
|
/* CD-I/Ready says start_track <= 30*75 then CDDA */
|
||||||
if (start_track > 100 /* 100 is just a guess */) {
|
if (start_track > 100 /* 100 is just a guess */) {
|
||||||
fs = guess_filesystem(cdio, 0, 1);
|
fs = cdio_guess_filesystem(cdio, 0, 1, &cdio_analysis);
|
||||||
if ((fs & FS_MASK) != FS_UNKNOWN)
|
if ((fs & CDIO_FS_MASK) != CDIO_FS_UNKNOWN)
|
||||||
fs |= HIDDEN_TRACK;
|
fs |= HIDDEN_TRACK;
|
||||||
else {
|
else {
|
||||||
fs &= ~FS_MASK; /* del filesystem info */
|
fs &= ~CDIO_FS_MASK; /* del filesystem info */
|
||||||
printf("Oops: %i unused sectors at start, "
|
printf("Oops: %i unused sectors at start, "
|
||||||
"but hidden track check failed.\n",
|
"but hidden track check failed.\n",
|
||||||
start_track);
|
start_track);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
print_analysis(ms_offset, cdio_analysis, fs, first_data, num_audio,
|
print_analysis(ms_offset, cdio_analysis, fs, first_data, num_audio,
|
||||||
num_tracks, cdio);
|
num_tracks, first_track_num, cdio);
|
||||||
} else {
|
} else {
|
||||||
/* we have data track(s) */
|
/* we have data track(s) */
|
||||||
int j;
|
int j;
|
||||||
@@ -968,7 +971,7 @@ main(int argc, const char *argv[])
|
|||||||
if (start_track < data_start + cdio_analysis.isofs_size)
|
if (start_track < data_start + cdio_analysis.isofs_size)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
fs = guess_filesystem(cdio, start_track, i);
|
fs = cdio_guess_filesystem(cdio, start_track, i, &cdio_analysis);
|
||||||
|
|
||||||
if (i > 1) {
|
if (i > 1) {
|
||||||
/* track is beyond last session -> new session found */
|
/* track is beyond last session -> new session found */
|
||||||
@@ -981,13 +984,14 @@ main(int argc, const char *argv[])
|
|||||||
fs |= MULTISESSION;
|
fs |= MULTISESSION;
|
||||||
} else {
|
} else {
|
||||||
print_analysis(ms_offset, cdio_analysis, fs, first_data, num_audio,
|
print_analysis(ms_offset, cdio_analysis, fs, first_data, num_audio,
|
||||||
num_tracks, cdio);
|
num_tracks, first_track_num, cdio);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(((fs & FS_MASK) == FS_ISO_9660 ||
|
if (!(((fs & CDIO_FS_MASK) == CDIO_FS_ISO_9660 ||
|
||||||
(fs & FS_MASK) == FS_ISO_HFS ||
|
(fs & CDIO_FS_MASK) == CDIO_FS_ISO_HFS ||
|
||||||
/* (fs & FS_MASK) == FS_ISO_9660_INTERACTIVE) && (fs & XA))) */
|
/* (fs & CDIO_FS_MASK) == CDIO_FS_ISO_9660_INTERACTIVE)
|
||||||
(fs & FS_MASK) == FS_ISO_9660_INTERACTIVE)))
|
&& (fs & XA))) */
|
||||||
|
(fs & CDIO_FS_MASK) == CDIO_FS_ISO_9660_INTERACTIVE)))
|
||||||
break; /* no method for non-iso9660 multisessions */
|
break; /* no method for non-iso9660 multisessions */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#$Id: check_cue.sh,v 1.1 2003/08/10 14:33:28 rocky Exp $
|
#$Id: check_cue.sh,v 1.2 2003/08/16 12:59:03 rocky Exp $
|
||||||
if test -n "@CDDB_LIB@" ; then
|
if test -n "@CDDB_LIB@" ; then
|
||||||
cddb_opt='--no-cddb'
|
cddb_opt='--no-cddb'
|
||||||
fi
|
fi
|
||||||
@@ -21,12 +21,12 @@ testnum=CD-DA
|
|||||||
test_cdinfo "--cue-file ${srcdir}/${fname}.cue $cddb_opt" \
|
test_cdinfo "--cue-file ${srcdir}/${fname}.cue $cddb_opt" \
|
||||||
${fname}.dump ${srcdir}/${fname}.right
|
${fname}.dump ${srcdir}/${fname}.right
|
||||||
RC=$?
|
RC=$?
|
||||||
check_result $RC "cd-info CUE test $testnum"
|
check_result $RC "cdinfo CUE test $testnum"
|
||||||
|
|
||||||
test_cdinfo "--bin-file ${srcdir}/${fname}.bin $cddb_opt" \
|
test_cdinfo "--bin-file ${srcdir}/${fname}.bin $cddb_opt" \
|
||||||
${fname}.dump ${srcdir}/${fname}.right
|
${fname}.dump ${srcdir}/${fname}.right
|
||||||
RC=$?
|
RC=$?
|
||||||
check_result $RC "cd-info BIN test $testnum"
|
check_result $RC "cdinfo BIN test $testnum"
|
||||||
|
|
||||||
fname=isofs-m1
|
fname=isofs-m1
|
||||||
testnum='ISO 9660 mode1'
|
testnum='ISO 9660 mode1'
|
||||||
@@ -34,7 +34,7 @@ if test -f ${srcdir}/${fname}.bin ; then
|
|||||||
test_cdinfo "--cue-file ${srcdir}/${fname}.cue" \
|
test_cdinfo "--cue-file ${srcdir}/${fname}.cue" \
|
||||||
${fname}.dump ${srcdir}/${fname}.right
|
${fname}.dump ${srcdir}/${fname}.right
|
||||||
RC=$?
|
RC=$?
|
||||||
check_result $RC "cd-info CUE test $testnum"
|
check_result $RC "cdinfo CUE test $testnum"
|
||||||
else
|
else
|
||||||
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testum skipped."
|
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testum skipped."
|
||||||
fi
|
fi
|
||||||
@@ -45,7 +45,7 @@ if test -f ${srcdir}/${fname}.cue ; then
|
|||||||
test_cdinfo "-c ${srcdir}/vcd_demo.cue $vcd_opt" \
|
test_cdinfo "-c ${srcdir}/vcd_demo.cue $vcd_opt" \
|
||||||
${fname}.dump ${srcdir}/${fname}.right
|
${fname}.dump ${srcdir}/${fname}.right
|
||||||
RC=$?
|
RC=$?
|
||||||
check_result $RC "cd-info CUE test $testnum"
|
check_result $RC "cdinfo CUE test $testnum"
|
||||||
else
|
else
|
||||||
echo "Don't see CUE file ${srcdir}/${fname}.cue. Test $testum skipped."
|
echo "Don't see CUE file ${srcdir}/${fname}.cue. Test $testum skipped."
|
||||||
fi
|
fi
|
||||||
@@ -56,7 +56,7 @@ if test -f ${srcdir}/${fname}.bin ; then
|
|||||||
test_cdinfo "--cue-file ${srcdir}/${fname}.cue $vcd_opt" \
|
test_cdinfo "--cue-file ${srcdir}/${fname}.cue $vcd_opt" \
|
||||||
${fname}.dump ${srcdir}/${fname}.right
|
${fname}.dump ${srcdir}/${fname}.right
|
||||||
RC=$?
|
RC=$?
|
||||||
check_result $RC "cd-info CUE test $testnum"
|
check_result $RC "cdinfo CUE test $testnum"
|
||||||
else
|
else
|
||||||
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
|
echo "Don't see CUE file ${srcdir}/${fname}.bin. Test $testnum skipped."
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -13,4 +13,4 @@ CD-ROM with CD-RTOS and ISO 9660 filesystem
|
|||||||
ISO 9660: 1101 blocks, label `MONVOISIN '
|
ISO 9660: 1101 blocks, label `MONVOISIN '
|
||||||
XA sectors Video CD
|
XA sectors Video CD
|
||||||
session #2 starts at track 2, LSN: 1251, ISO 9660 blocks: 1101
|
session #2 starts at track 2, LSN: 1251, ISO 9660 blocks: 1101
|
||||||
ISO 9660: 1101 blocks, label `'
|
ISO 9660: 1101 blocks, label `MONVOISIN '
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ __________________________________
|
|||||||
CD Analysis Report
|
CD Analysis Report
|
||||||
CD-ROM with CD-RTOS and ISO 9660 filesystem
|
CD-ROM with CD-RTOS and ISO 9660 filesystem
|
||||||
ISO 9660: 376 blocks, label `SVCD_OGT_TEST_NTSC '
|
ISO 9660: 376 blocks, label `SVCD_OGT_TEST_NTSC '
|
||||||
XA sectors
|
XA sectors Super Video CD (SVCD) or Chaoji Video CD (CVD)
|
||||||
session #2 starts at track 2, LSN: 526, ISO 9660 blocks: 376
|
session #2 starts at track 2, LSN: 526, ISO 9660 blocks: 376
|
||||||
ISO 9660: 376 blocks, label `DD3#3"C"$<24>@'
|
ISO 9660: 376 blocks, label `SVCD_OGT_TEST_NTSC '
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ __________________________________
|
|||||||
CD Analysis Report
|
CD Analysis Report
|
||||||
CD-ROM with ISO 9660 filesystem
|
CD-ROM with ISO 9660 filesystem
|
||||||
ISO 9660: 6610 blocks, label `SVCD '
|
ISO 9660: 6610 blocks, label `SVCD '
|
||||||
XA sectors Chaoji Video CD
|
XA sectors Chaoji Video CD (CVD)
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ CD-ROM with CD-RTOS and ISO 9660 filesystem
|
|||||||
ISO 9660: 1032 blocks, label `V0469 '
|
ISO 9660: 1032 blocks, label `V0469 '
|
||||||
XA sectors Video CD
|
XA sectors Video CD
|
||||||
session #2 starts at track 2, LSN: 1182, ISO 9660 blocks: 1032
|
session #2 starts at track 2, LSN: 1182, ISO 9660 blocks: 1032
|
||||||
ISO 9660: 1032 blocks, label `'
|
ISO 9660: 1032 blocks, label `V0469 '
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ __________________________________
|
|||||||
CD Analysis Report
|
CD Analysis Report
|
||||||
CD-ROM with CD-RTOS and ISO 9660 filesystem
|
CD-ROM with CD-RTOS and ISO 9660 filesystem
|
||||||
ISO 9660: 676 blocks, label `SVIDEOCD '
|
ISO 9660: 676 blocks, label `SVIDEOCD '
|
||||||
XA sectors
|
XA sectors Super Video CD (SVCD) or Chaoji Video CD (CVD)
|
||||||
session #2 starts at track 2, LSN: 826, ISO 9660 blocks: 676
|
session #2 starts at track 2, LSN: 826, ISO 9660 blocks: 676
|
||||||
ISO 9660: 676 blocks, label `<EFBFBD><05>9P <09><><EFBFBD>@M4H'
|
ISO 9660: 676 blocks, label `SVIDEOCD '
|
||||||
|
|||||||
Reference in New Issue
Block a user