*** empty log message ***

This commit is contained in:
rocky
2005-02-20 03:20:42 +00:00
parent 0d607352c1
commit 0a048cb05c
3 changed files with 34 additions and 47 deletions

View File

@@ -1,5 +1,5 @@
/* /*
$Id: iso9660_fs.c,v 1.19 2005/02/18 22:35:48 rocky Exp $ $Id: iso9660_fs.c,v 1.20 2005/02/20 03:20:42 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004, 2005 Rocky Bernstein <rocky@panix.com>
@@ -52,7 +52,7 @@
#include <stdio.h> #include <stdio.h>
static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.19 2005/02/18 22:35:48 rocky Exp $"; static const char _rcsid[] = "$Id: iso9660_fs.c,v 1.20 2005/02/20 03:20:42 rocky Exp $";
/* Implementation of iso9660_t type */ /* Implementation of iso9660_t type */
struct _iso9660_s { struct _iso9660_s {
@@ -990,7 +990,7 @@ _fs_stat_iso_root (iso9660_t *p_iso)
static iso9660_stat_t * static iso9660_stat_t *
_fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root, _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
char **splitpath, bool b_xa, bool translate) char **splitpath)
{ {
unsigned offset = 0; unsigned offset = 0;
uint8_t *_dirbuf = NULL; uint8_t *_dirbuf = NULL;
@@ -1019,7 +1019,7 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
_dirbuf = calloc(1, _root->secsize * ISO_BLOCKSIZE); _dirbuf = calloc(1, _root->secsize * ISO_BLOCKSIZE);
if (cdio_read_data_sectors (p_cdio, _dirbuf, _root->lsn, false, if (cdio_read_data_sectors (p_cdio, _dirbuf, _root->lsn, ISO_BLOCKSIZE,
_root->secsize)) _root->secsize))
return NULL; return NULL;
@@ -1038,7 +1038,9 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
p_stat = _iso9660_dir_to_statbuf (p_iso9660_dir, dunno, p_stat = _iso9660_dir_to_statbuf (p_iso9660_dir, dunno,
p_env->i_joliet_level); p_env->i_joliet_level);
if (translate) { cmp = strcmp(splitpath[0], p_stat->filename);
if ( 0 != cmp && 0 == p_env->i_joliet_level && yep != p_stat->b_rock ) {
char *trans_fname = malloc(strlen(p_stat->filename)); char *trans_fname = malloc(strlen(p_stat->filename));
int trans_len; int trans_len;
@@ -1051,13 +1053,11 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
p_env->i_joliet_level); p_env->i_joliet_level);
cmp = strcmp(splitpath[0], trans_fname); cmp = strcmp(splitpath[0], trans_fname);
free(trans_fname); free(trans_fname);
} else {
cmp = strcmp(splitpath[0], p_stat->filename);
} }
if (!cmp) { if (!cmp) {
iso9660_stat_t *ret_stat iso9660_stat_t *ret_stat
= _fs_stat_traverse (p_cdio, p_stat, &splitpath[1], b_xa, translate); = _fs_stat_traverse (p_cdio, p_stat, &splitpath[1]);
free(p_stat); free(p_stat);
free (_dirbuf); free (_dirbuf);
return ret_stat; return ret_stat;
@@ -1077,7 +1077,7 @@ _fs_stat_traverse (const CdIo_t *p_cdio, const iso9660_stat_t *_root,
static iso9660_stat_t * static iso9660_stat_t *
_fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root, _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
char **splitpath, bool translate) char **splitpath)
{ {
unsigned offset = 0; unsigned offset = 0;
uint8_t *_dirbuf = NULL; uint8_t *_dirbuf = NULL;
@@ -1124,7 +1124,9 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
p_stat = _iso9660_dir_to_statbuf (p_iso9660_dir, p_iso->b_xa, p_stat = _iso9660_dir_to_statbuf (p_iso9660_dir, p_iso->b_xa,
p_iso->i_joliet_level); p_iso->i_joliet_level);
if (translate) { cmp = strcmp(splitpath[0], p_stat->filename);
if ( 0 != cmp && 0 == p_iso->i_joliet_level && yep != p_stat->b_rock ) {
char *trans_fname = malloc(strlen(p_stat->filename)+1); char *trans_fname = malloc(strlen(p_stat->filename)+1);
int trans_len; int trans_len;
@@ -1137,13 +1139,11 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
p_iso->i_joliet_level); p_iso->i_joliet_level);
cmp = strcmp(splitpath[0], trans_fname); cmp = strcmp(splitpath[0], trans_fname);
free(trans_fname); free(trans_fname);
} else {
cmp = strcmp(splitpath[0], p_stat->filename);
} }
if (!cmp) { if (!cmp) {
iso9660_stat_t *ret_stat iso9660_stat_t *ret_stat
= _fs_iso_stat_traverse (p_iso, p_stat, &splitpath[1], translate); = _fs_iso_stat_traverse (p_iso, p_stat, &splitpath[1]);
free(p_stat); free(p_stat);
free (_dirbuf); free (_dirbuf);
return ret_stat; return ret_stat;
@@ -1170,7 +1170,6 @@ iso9660_fs_stat (CdIo_t *p_cdio, const char psz_path[])
iso9660_stat_t *p_root; iso9660_stat_t *p_root;
char **p_psz_splitpath; char **p_psz_splitpath;
iso9660_stat_t *p_stat; iso9660_stat_t *p_stat;
bool_3way_t b_xa;
if (!p_cdio) return NULL; if (!p_cdio) return NULL;
if (!psz_path) return NULL; if (!psz_path) return NULL;
@@ -1179,19 +1178,8 @@ iso9660_fs_stat (CdIo_t *p_cdio, const char psz_path[])
if (!p_root) return NULL; if (!p_root) return NULL;
switch(cdio_get_discmode(p_cdio)) {
case CDIO_DISC_MODE_CD_XA:
b_xa = yep;
break;
case CDIO_DISC_MODE_CD_DATA:
b_xa = nope;
break;
default:
b_xa = dunno;
}
p_psz_splitpath = _cdio_strsplit (psz_path, '/'); p_psz_splitpath = _cdio_strsplit (psz_path, '/');
p_stat = _fs_stat_traverse (p_cdio, p_root, p_psz_splitpath, b_xa, false); p_stat = _fs_stat_traverse (p_cdio, p_root, p_psz_splitpath);
free(p_root); free(p_root);
_cdio_strfreev (p_psz_splitpath); _cdio_strfreev (p_psz_splitpath);
@@ -1211,7 +1199,6 @@ iso9660_fs_stat_translate (CdIo_t *p_cdio, const char psz_path[],
iso9660_stat_t *p_root; iso9660_stat_t *p_root;
char **p_psz_splitpath; char **p_psz_splitpath;
iso9660_stat_t *p_stat; iso9660_stat_t *p_stat;
bool_3way_t b_xa;
if (!p_cdio) return NULL; if (!p_cdio) return NULL;
if (psz_path) return NULL; if (psz_path) return NULL;
@@ -1219,19 +1206,8 @@ iso9660_fs_stat_translate (CdIo_t *p_cdio, const char psz_path[],
p_root = _fs_stat_root (p_cdio); p_root = _fs_stat_root (p_cdio);
if (!p_root) return NULL; if (!p_root) return NULL;
switch(cdio_get_discmode(p_cdio)) {
case CDIO_DISC_MODE_CD_XA:
b_xa = yep;
break;
case CDIO_DISC_MODE_CD_DATA:
b_xa = nope;
break;
default:
b_xa = dunno;
}
p_psz_splitpath = _cdio_strsplit (psz_path, '/'); p_psz_splitpath = _cdio_strsplit (psz_path, '/');
p_stat = _fs_stat_traverse (p_cdio, p_root, p_psz_splitpath, b_xa, true); p_stat = _fs_stat_traverse (p_cdio, p_root, p_psz_splitpath);
free(p_root); free(p_root);
_cdio_strfreev (p_psz_splitpath); _cdio_strfreev (p_psz_splitpath);
@@ -1255,7 +1231,7 @@ iso9660_ifs_stat (iso9660_t *p_iso, const char psz_path[])
if (!p_root) return NULL; if (!p_root) return NULL;
splitpath = _cdio_strsplit (psz_path, '/'); splitpath = _cdio_strsplit (psz_path, '/');
stat = _fs_iso_stat_traverse (p_iso, p_root, splitpath, false); stat = _fs_iso_stat_traverse (p_iso, p_root, splitpath);
free(p_root); free(p_root);
/*** FIXME _cdio_strfreev (splitpath); ***/ /*** FIXME _cdio_strfreev (splitpath); ***/
@@ -1282,7 +1258,7 @@ iso9660_ifs_stat_translate (iso9660_t *p_iso, const char psz_path[])
if (NULL == p_root) return NULL; if (NULL == p_root) return NULL;
p_psz_splitpath = _cdio_strsplit (psz_path, '/'); p_psz_splitpath = _cdio_strsplit (psz_path, '/');
p_stat = _fs_iso_stat_traverse (p_iso, p_root, p_psz_splitpath, true); p_stat = _fs_iso_stat_traverse (p_iso, p_root, p_psz_splitpath);
free(p_root); free(p_root);
_cdio_strfreev (p_psz_splitpath); _cdio_strfreev (p_psz_splitpath);

View File

@@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
#$Id: check_iso.sh.in,v 1.7 2005/02/19 11:48:17 rocky Exp $ #$Id: check_iso.sh.in,v 1.8 2005/02/20 03:20:42 rocky Exp $
if test -z $srcdir ; then if test -z $srcdir ; then
srcdir=`pwd` srcdir=`pwd`
@@ -14,12 +14,12 @@ fi
BASE=`basename $0 .sh` BASE=`basename $0 .sh`
fname=copying fname=copying
opts="--quiet ${srcdir}/${fname}.iso --no-header --iso9660 " opts="--quiet ${srcdir}/${fname}.iso --iso9660 "
test_iso_info "$opts" ${fname}.dump ${srcdir}/${fname}.right test_iso_info "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC 'iso-info basic test' "$ISO_INFO $opts" check_result $RC 'iso-info basic test' "$ISO_INFO $opts"
opts="--image ${srcdir}/${fname}.iso --no-header --extract $fname " opts="--image ${srcdir}/${fname}.iso --extract $fname "
test_iso_read "$opts" ${fname} ${srcdir}/../COPYING test_iso_read "$opts" ${fname} ${srcdir}/../COPYING
RC=$? RC=$?
check_result $RC 'iso-read basic test' "$ISO_READ $opts" check_result $RC 'iso-read basic test' "$ISO_READ $opts"
@@ -27,11 +27,11 @@ check_result $RC 'iso-read basic test' "$ISO_READ $opts"
if test -n "@HAVE_JOLIET@" ; then if test -n "@HAVE_JOLIET@" ; then
BASE=`basename $0 .sh` BASE=`basename $0 .sh`
fname=joliet fname=joliet
opts="--quiet ${srcdir}/${fname}.iso --no-header --iso9660 " opts="--quiet ${srcdir}/${fname}.iso --iso9660 "
test_iso_info "$opts" ${fname}-nojoliet.dump ${srcdir}/${fname}.right test_iso_info "$opts" ${fname}-nojoliet.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC 'iso-info Joliet test' "$cmdline" check_result $RC 'iso-info Joliet test' "$cmdline"
opts="--quiet ${srcdir}/${fname}.iso --iso9660 --no-header --no-joliet " opts="--quiet ${srcdir}/${fname}.iso --iso9660 --no-joliet "
test_iso_info "$opts" ${fname}-nojoliet.dump \ test_iso_info "$opts" ${fname}-nojoliet.dump \
${srcdir}/${fname}-nojoliet.right ${srcdir}/${fname}-nojoliet.right
RC=$? RC=$?

View File

@@ -1,4 +1,3 @@
Error getting above directory information
This is free software; see the source for copying conditions. This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. PARTICULAR PURPOSE.
@@ -10,3 +9,15 @@ ISO-9660 Information
2048 Oct 22 2004 18:44 libcdio 2048 Oct 22 2004 18:44 libcdio
/libcdio/: /libcdio/:
2048 Oct 22 2004 18:44 .
2048 Oct 22 2004 18:44 ..
17992 Mar 12 2004 02:18 copying
2156 Jun 26 2004 06:01 readme
2849 Aug 12 2004 05:22 readme.libcdio
2048 Oct 22 2004 18:44 test
/libcdio/test/:
2048 Oct 22 2004 18:44 .
2048 Oct 22 2004 18:44 ..
74 Jul 25 2004 05:52 isofs_m1.cue