iso9660.hpp, iso1.cpp get list iterators working.

rest: add _ to isachar and isadchar
This commit is contained in:
rocky
2006-03-06 19:39:35 +00:00
parent b6da64e564
commit 42b0b841d0
8 changed files with 81 additions and 55 deletions

View File

@@ -46,7 +46,7 @@ development.''
@titlepage
@title GNU libcdio library
@subtitle $Id: libcdio.texi,v 1.48 2006/02/16 20:11:14 rocky Exp $
@subtitle $Id: libcdio.texi,v 1.49 2006/03/06 19:39:35 rocky Exp $
@author Rocky Bernstein et al.
@page
@@ -2187,7 +2187,7 @@ CD-ROM device names
There are a some other naming conventions. Generally if a routine
name starts @code{cdio_}, e.g. @code{cdio_open}, then it is an
externally visible routine in @code{libcdio}. If a name starts
@code{iso9660_}, e.g. @code{iso9660_isdchar} then it is an externally
@code{iso9660_}, e.g. @code{iso9660_is_dchar} then it is an externally
visible routine in @code{libiso9660}. If a name starts
@code{scsi_mmc_}, e.g. @code{scsi_mmc_get_discmode}, then it is an
externally visible MMC routine. (We don't have a separate library for

View File

@@ -1,5 +1,5 @@
/*
$Id: iso1.cpp,v 1.1 2006/03/06 04:48:38 rocky Exp $
$Id: iso1.cpp,v 1.2 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
@@ -67,7 +67,7 @@
int
main(int argc, const char *argv[])
{
list < ISO9660::Stat > entlist;
list < ISO9660::Stat *> stat_list;
ISO9660::IFS *p_iso = new ISO9660::IFS;
char const *psz_fname;
const char *psz_path="/";
@@ -94,25 +94,23 @@ main(int argc, const char *argv[])
print_vd_info("Volume Set ", get_volumeset_id);
}
#if 0
entlist = p_iso->readdir (psz_path);
/* Iterate over the list of nodes that iso9660_ifs_readdir gives */
if (p_iso->readdir (psz_path, stat_list))
{
ISO9660::Stat *p_stat;
for(p_stat=entlist.begin(); p_stat != entlist.end(); ++p_stat)
/* Iterate over the list of files. */
list <ISO9660::Stat *>::iterator i;
for(i=stat_list.begin(); i != stat_list.end(); ++i)
{
char filename[4096];
p_stat->iso9660_name_translate(p_statbuf->filename, filename);
ISO9660::Stat *p_s = *i;
iso9660_name_translate(p_s->p_stat->filename, filename);
printf ("%s [LSN %6d] %8u %s%s\n",
2 == p_statbuf->type ? "d" : "-",
p_statbuf->lsn, p_statbuf->size, psz_path, filename);
2 == p_s->p_stat->type ? "d" : "-",
p_s->p_stat->lsn, p_s->p_stat->size, psz_path, filename);
delete(p_s);
}
delete(stat);
stat_list.clear();
}
#endif
delete(p_iso);
return 0;

View File

@@ -1,5 +1,5 @@
/* -*- C++ -*-
$Id: iso9660.hpp,v 1.4 2006/03/06 04:48:38 rocky Exp $
$Id: iso9660.hpp,v 1.5 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
@@ -39,6 +39,24 @@ class ISO9660
public:
/*!
Convert an ISO-9660 file name which is in the format usually stored
in a ISO 9660 directory entry into what's usually listed as the
file name in a listing. Lowercase name, and remove trailing ;1's
or .;1's and turn the other ;'s into version numbers.
@param psz_oldname the ISO-9660 filename to be translated.
@param psz_newname returned string. The caller allocates this and
it should be at least the size of psz_oldname.
@return length of the translated string is returned.
*/
int name_translate(const char *psz_oldname,
/*out*/ char *psz_newname)
{
return iso9660_name_translate(psz_oldname, psz_newname);
}
class Stat
{
public:
@@ -377,19 +395,23 @@ public:
pointers for the files inside that directory. The caller must free
the returned result.
*/
list< ISO9660::Stat *> readdir (const char psz_path[])
bool
readdir (const char psz_path[], list< ISO9660::Stat *>& stat_list)
{
CdioList_t *p_stat_list = iso9660_ifs_readdir (p_iso9660, psz_path);
CdioListNode_t *p_entnode;
list< ISO9660::Stat *> stat_list;
_CDIO_LIST_FOREACH (p_entnode, p_stat_list) {
iso9660_stat_t *p_statbuf =
(iso9660_stat_t *) _cdio_list_node_data (p_entnode);
stat_list.push_back(new ISO9660::Stat(p_statbuf));
}
_cdio_list_free (p_stat_list, false);
return stat_list;
if (p_stat_list) {
CdioListNode_t *p_entnode;
_CDIO_LIST_FOREACH (p_entnode, p_stat_list) {
iso9660_stat_t *p_statbuf =
(iso9660_stat_t *) _cdio_list_node_data (p_entnode);
stat_list.push_back(new ISO9660::Stat(p_statbuf));
}
_cdio_list_free (p_stat_list, false);
return true;
} else {
return false;
}
}
/*!

View File

@@ -1,5 +1,5 @@
/*
$Id: iso9660.h,v 1.85 2006/03/05 08:31:03 rocky Exp $
$Id: iso9660.h,v 1.86 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@panix.com>
@@ -679,14 +679,14 @@ typedef struct _iso9660_s iso9660_t;
ISO-9600 level 1 directory name. These are the ASCII capital
letters A-Z, the digits 0-9 and an underscore.
*/
bool iso9660_isdchar (int c);
bool iso9660_is_dchar (int c);
/*!
Return true if c is an ACHAR -
These are the DCHAR's plus some ASCII symbols including the space
symbol.
*/
bool iso9660_isachar (int c);
bool iso9660_is_achar (int c);
/*!
Convert an ISO-9660 file name which is in the format usually stored
@@ -1012,6 +1012,12 @@ lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
bool iso9660_ifs_is_xa (const iso9660_t * p_iso);
#ifndef DO_NOT_WANT_PARANOIA_COMPATIBILITY
/** For compatibility with good ol' paranoia */
#define iso9660_isdchar iso9660_is_dchar
#define iso9660_isachar iso9660_is_achar
#endif /*DO_NOT_WANT_PARANOIA_COMPATIBILITY*/
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@@ -1,5 +1,5 @@
/*
$Id: iso9660.c,v 1.19 2006/03/02 18:59:13 rocky Exp $
$Id: iso9660.c,v 1.20 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Copyright (C) 2003, 2004, 2005, 2006 Rocky Bernstein <rocky@panix.com>
@@ -51,7 +51,7 @@ const char ISO_STANDARD_ID[] = {'C', 'D', '0', '0', '1'};
#include <errno.h>
#endif
static const char _rcsid[] = "$Id: iso9660.c,v 1.19 2006/03/02 18:59:13 rocky Exp $";
static const char _rcsid[] = "$Id: iso9660.c,v 1.20 2006/03/06 19:39:35 rocky Exp $";
/* Variables to hold debugger-helping enumerations */
enum iso_enum1_s iso_enums1;
@@ -388,7 +388,7 @@ iso9660_strncpy_pad(char dst[], const char src[], size_t len,
case ISO9660_ACHARS:
for (idx = 0; src[idx]; idx++)
if (!iso9660_isachar (src[idx]))
if (!iso9660_is_achar (src[idx]))
{
cdio_warn ("string '%s' fails a-character constraint (pos = %d)",
src, idx);
@@ -398,7 +398,7 @@ iso9660_strncpy_pad(char dst[], const char src[], size_t len,
case ISO9660_DCHARS:
for (idx = 0; src[idx]; idx++)
if (!iso9660_isdchar (src[idx]))
if (!iso9660_is_dchar (src[idx]))
{
cdio_warn ("string '%s' fails d-character constraint (pos = %d)",
src, idx);
@@ -429,7 +429,7 @@ iso9660_strncpy_pad(char dst[], const char src[], size_t len,
underscore.
*/
bool
iso9660_isdchar (int c)
iso9660_is_dchar (int c)
{
if (!IN (c, 0x30, 0x5f)
|| IN (c, 0x3a, 0x40)
@@ -446,7 +446,7 @@ iso9660_isdchar (int c)
symbol.
*/
bool
iso9660_isachar (int c)
iso9660_is_achar (int c)
{
if (!IN (c, 0x20, 0x5f)
|| IN (c, 0x23, 0x24)
@@ -874,7 +874,7 @@ iso9660_dirname_valid_p (const char pathname[])
len = 0;
for (; *p; p++)
if (iso9660_isdchar (*p))
if (iso9660_is_dchar (*p))
{
len++;
if (len > 8)
@@ -940,7 +940,7 @@ iso9660_pathname_valid_p (const char pathname[])
int dots = 0;
for (; *p; p++)
if (iso9660_isdchar (*p))
if (iso9660_is_dchar (*p))
{
len++;
if (dots == 0 ? len > 8 : len > 3)

View File

@@ -53,8 +53,8 @@ iso9660_ifs_read_superblock
iso9660_ifs_readdir
iso9660_ifs_stat
iso9660_ifs_stat_translate
iso9660_isachar
iso9660_isdchar
iso9660_is_achar
iso9660_is_dchar
iso9660_iso_seek_read
iso9660_name_translate
iso9660_name_translate_ext

View File

@@ -1,5 +1,5 @@
/*
$Id: testischar.c,v 1.1 2003/08/17 05:31:19 rocky Exp $
$Id: testischar.c,v 1.2 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -52,7 +52,7 @@ main (int argc, const char *argv[])
{
int c = (j << 4) + i;
printf (" %c", iso9660_isdchar (c) ? c : ' ');
printf (" %c", iso9660_is_dchar (c) ? c : ' ');
}
printf (" |");

View File

@@ -1,5 +1,5 @@
/*
$Id: testiso9660.c,v 1.7 2006/02/25 12:10:53 rocky Exp $
$Id: testiso9660.c,v 1.8 2006/03/06 19:39:35 rocky Exp $
Copyright (C) 2003, 2006 Rocky Bernstein <rocky@panix.com>
@@ -51,12 +51,12 @@ main (int argc, const char *argv[])
*********************************************/
for (c='A'; c<='Z'; c++ ) {
if (!iso9660_isdchar(c)) {
printf("Failed iso9660_isdchar test on %c\n", c);
if (!iso9660_is_dchar(c)) {
printf("Failed iso9660_is_dchar test on %c\n", c);
i_bad++;
}
if (!iso9660_isachar(c)) {
printf("Failed iso9660_isachar test on %c\n", c);
if (!iso9660_is_achar(c)) {
printf("Failed iso9660_is_achar test on %c\n", c);
i_bad++;
}
}
@@ -64,12 +64,12 @@ main (int argc, const char *argv[])
if (i_bad) return i_bad;
for (c='0'; c<='9'; c++ ) {
if (!iso9660_isdchar(c)) {
printf("Failed iso9660_isdchar test on %c\n", c);
if (!iso9660_is_dchar(c)) {
printf("Failed iso9660_is_dchar test on %c\n", c);
i_bad++;
}
if (!iso9660_isachar(c)) {
printf("Failed iso9660_isachar test on %c\n", c);
if (!iso9660_is_achar(c)) {
printf("Failed iso9660_is_achar test on %c\n", c);
i_bad++;
}
}
@@ -78,12 +78,12 @@ main (int argc, const char *argv[])
for (i=0; i<=13; i++ ) {
c=achars[i];
if (iso9660_isdchar(c)) {
printf("Should not pass iso9660_isdchar test on %c\n", c);
if (iso9660_is_dchar(c)) {
printf("Should not pass iso9660_is_dchar test on %c\n", c);
i_bad++;
}
if (!iso9660_isachar(c)) {
printf("Failed iso9660_isachar test on symbol %c\n", c);
if (!iso9660_is_achar(c)) {
printf("Failed iso9660_is_achar test on symbol %c\n", c);
i_bad++;
}
}