Move code from devices.hpp and iso9660.hpp headers into external files -
cdio.cpp, device.cpp, iso9660.cpp configure.ac, C++/OO/Makefile.am: Found some bugs libraries acces in doing the above move.
This commit is contained in:
@@ -19,7 +19,7 @@ define(RELEASE_NUM, 77)
|
|||||||
define(CDIO_VERSION_STR, 0.$1cvs)
|
define(CDIO_VERSION_STR, 0.$1cvs)
|
||||||
|
|
||||||
AC_PREREQ(2.52)
|
AC_PREREQ(2.52)
|
||||||
AC_REVISION([$Id: configure.ac,v 1.188 2006/03/07 02:38:44 rocky Exp $])dnl
|
AC_REVISION([$Id: configure.ac,v 1.189 2006/03/07 10:46:36 rocky Exp $])dnl
|
||||||
AC_INIT(libcdio, CDIO_VERSION_STR(RELEASE_NUM))
|
AC_INIT(libcdio, CDIO_VERSION_STR(RELEASE_NUM))
|
||||||
AC_CONFIG_SRCDIR(src/cd-info.c)
|
AC_CONFIG_SRCDIR(src/cd-info.c)
|
||||||
|
|
||||||
@@ -367,7 +367,7 @@ LIBUDF_LIBS='$(top_builddir)/lib/udf/libudf.la'
|
|||||||
AC_SUBST(LIBCDIO_CDDA_LIBS)
|
AC_SUBST(LIBCDIO_CDDA_LIBS)
|
||||||
AC_SUBST(LIBCDIO_CFLAGS)
|
AC_SUBST(LIBCDIO_CFLAGS)
|
||||||
AC_SUBST(LIBISO9660_CFLAGS)
|
AC_SUBST(LIBISO9660_CFLAGS)
|
||||||
AC_SUBST(LIBCDISO9660PP_LIBS)
|
AC_SUBST(LIBISO9660PP_LIBS)
|
||||||
AC_SUBST(LIBCDIO_LIBS)
|
AC_SUBST(LIBCDIO_LIBS)
|
||||||
AC_SUBST(LIBCDIOPP_LIBS)
|
AC_SUBST(LIBCDIOPP_LIBS)
|
||||||
AC_SUBST(LIBCDIO_DEPS)
|
AC_SUBST(LIBCDIO_DEPS)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# $Id: Makefile.am,v 1.7 2006/03/06 22:15:35 rocky Exp $
|
# $Id: Makefile.am,v 1.8 2006/03/07 10:46:36 rocky Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
# Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
#
|
#
|
||||||
@@ -41,15 +41,15 @@ eject_DEPENDENCIES = $(LIBCDIO_DEPS)
|
|||||||
eject_LDADD = $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS)
|
eject_LDADD = $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS)
|
||||||
|
|
||||||
iso1_SOURCES = iso1.cpp
|
iso1_SOURCES = iso1.cpp
|
||||||
iso1_LDADD = $(LIBISO966PP0_LIBS) $(LIBISO9660_LIBS) \
|
iso1_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
|
||||||
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
||||||
|
|
||||||
iso2_SOURCES = iso2.cpp
|
iso2_SOURCES = iso2.cpp
|
||||||
iso2_LDADD = $(LIBISO966PP0_LIBS) $(LIBISO9660_LIBS) \
|
iso2_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
|
||||||
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
||||||
|
|
||||||
iso3_SOURCES = iso3.cpp
|
iso3_SOURCES = iso3.cpp
|
||||||
iso3_LDADD = $(LIBISO966PP0_LIBS) $(LIBISO9660_LIBS) \
|
iso3_LDADD = $(LIBISO9660PP_LIBS) $(LIBISO9660_LIBS) \
|
||||||
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
$(LIBCDIOPP_LIBS) $(LIBICONV)
|
||||||
|
|
||||||
mmc1_SOURCES = mmc1.cpp
|
mmc1_SOURCES = mmc1.cpp
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- C++ -*-
|
/* -*- C++ -*-
|
||||||
$Id: cdio.hpp,v 1.10 2006/03/06 21:54:56 rocky Exp $
|
$Id: cdio.hpp,v 1.11 2006/03/07 10:46:36 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -95,29 +95,7 @@ public:
|
|||||||
DriverOpNoDriver(void) {driver_return_code = DRIVER_OP_NO_DRIVER;}
|
DriverOpNoDriver(void) {driver_return_code = DRIVER_OP_NO_DRIVER;}
|
||||||
};
|
};
|
||||||
|
|
||||||
void possible_throw_device_exception(driver_return_code_t drc)
|
void possible_throw_device_exception(driver_return_code_t drc);
|
||||||
{
|
|
||||||
switch (drc) {
|
|
||||||
case DRIVER_OP_SUCCESS:
|
|
||||||
return;
|
|
||||||
case DRIVER_OP_ERROR:
|
|
||||||
throw DriverOpError();
|
|
||||||
case DRIVER_OP_UNSUPPORTED:
|
|
||||||
throw DriverOpUnsupported();
|
|
||||||
case DRIVER_OP_UNINIT:
|
|
||||||
throw DriverOpUninit();
|
|
||||||
case DRIVER_OP_NOT_PERMITTED:
|
|
||||||
throw DriverOpNotPermitted();
|
|
||||||
case DRIVER_OP_BAD_PARAMETER:
|
|
||||||
throw DriverOpBadParameter();
|
|
||||||
case DRIVER_OP_BAD_POINTER:
|
|
||||||
throw DriverOpBadPointer();
|
|
||||||
case DRIVER_OP_NO_DRIVER:
|
|
||||||
throw DriverOpNoDriver();
|
|
||||||
default:
|
|
||||||
throw DriverOpException(drc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** A class relating to CD-Text. Use invalid track number 0 to specify
|
/** A class relating to CD-Text. Use invalid track number 0 to specify
|
||||||
CD-Text for the CD (as opposed to a specific track).
|
CD-Text for the CD (as opposed to a specific track).
|
||||||
@@ -174,8 +152,8 @@ class CdioDevice
|
|||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CdIo_t *p_cdio; // Make private? If so, subclasses would have to
|
|
||||||
// use their own.
|
CdIo_t *p_cdio;
|
||||||
|
|
||||||
CdioDevice()
|
CdioDevice()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- C++ -*-
|
/* -*- C++ -*-
|
||||||
$Id: devices.hpp,v 1.3 2006/01/25 07:21:52 rocky Exp $
|
$Id: devices.hpp,v 1.4 2006/03/07 10:46:36 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -32,12 +32,8 @@
|
|||||||
@param driver_id is the driver to be used or that got used if
|
@param driver_id is the driver to be used or that got used if
|
||||||
it was DRIVER_UNKNOWN or DRIVER_DEVICE; If this is NULL, we won't
|
it was DRIVER_UNKNOWN or DRIVER_DEVICE; If this is NULL, we won't
|
||||||
report back the driver used.
|
report back the driver used.
|
||||||
v*/
|
*/
|
||||||
void closeTray (const char *psz_drive, /*in/out*/ driver_id_t &driver_id)
|
void closeTray (const char *psz_drive, /*in/out*/ driver_id_t &driver_id);
|
||||||
{
|
|
||||||
driver_return_code_t drc = cdio_close_tray (psz_drive, &driver_id);
|
|
||||||
possible_throw_device_exception(drc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Close media tray in CD drive if there is a routine to do so.
|
Close media tray in CD drive if there is a routine to do so.
|
||||||
@@ -45,11 +41,7 @@ void closeTray (const char *psz_drive, /*in/out*/ driver_id_t &driver_id)
|
|||||||
@param psz_drive the name of CD-ROM to be closed. If omitted or
|
@param psz_drive the name of CD-ROM to be closed. If omitted or
|
||||||
NULL, we'll scan for a suitable CD-ROM.
|
NULL, we'll scan for a suitable CD-ROM.
|
||||||
*/
|
*/
|
||||||
void closeTray (const char *psz_drive=(const char *)NULL)
|
void closeTray (const char *psz_drive=(const char *)NULL);
|
||||||
{
|
|
||||||
driver_id_t driver_id = DRIVER_UNKNOWN;
|
|
||||||
closeTray(psz_drive, driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get a string decribing driver_id.
|
Get a string decribing driver_id.
|
||||||
@@ -57,23 +49,14 @@ void closeTray (const char *psz_drive=(const char *)NULL)
|
|||||||
@param driver_id the driver you want the description for
|
@param driver_id the driver you want the description for
|
||||||
@return a sring of driver description
|
@return a sring of driver description
|
||||||
*/
|
*/
|
||||||
const char *
|
const char *driverDescribe (driver_id_t driver_id);
|
||||||
driverDescribe (driver_id_t driver_id)
|
|
||||||
{
|
|
||||||
return cdio_driver_describe(driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Eject media in CD drive if there is a routine to do so.
|
Eject media in CD drive if there is a routine to do so.
|
||||||
|
|
||||||
If the CD is ejected, object is destroyed.
|
If the CD is ejected, object is destroyed.
|
||||||
*/
|
*/
|
||||||
void
|
void ejectMedia (const char *psz_drive);
|
||||||
ejectMedia (const char *psz_drive)
|
|
||||||
{
|
|
||||||
driver_return_code_t drc = cdio_eject_media_drive(psz_drive);
|
|
||||||
possible_throw_device_exception(drc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Free device list returned by GetDevices
|
Free device list returned by GetDevices
|
||||||
@@ -83,11 +66,7 @@ ejectMedia (const char *psz_drive)
|
|||||||
@see GetDevices
|
@see GetDevices
|
||||||
|
|
||||||
*/
|
*/
|
||||||
void
|
void freeDeviceList (char * device_list[]);
|
||||||
freeDeviceList (char * device_list[])
|
|
||||||
{
|
|
||||||
cdio_free_device_list(device_list);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return a string containing the default CD device if none is specified.
|
Return a string containing the default CD device if none is specified.
|
||||||
@@ -96,11 +75,7 @@ freeDeviceList (char * device_list[])
|
|||||||
|
|
||||||
NULL is returned if we couldn't get a default device.
|
NULL is returned if we couldn't get a default device.
|
||||||
*/
|
*/
|
||||||
char *
|
char * getDefaultDevice(/*in/out*/ driver_id_t &driver_id);
|
||||||
getDefaultDevice(/*in/out*/ driver_id_t &driver_id)
|
|
||||||
{
|
|
||||||
return cdio_get_default_device_driver(&driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Return an array of device names. If you want a specific
|
/*! Return an array of device names. If you want a specific
|
||||||
devices for a driver, give that device. If you want hardware
|
devices for a driver, give that device. If you want hardware
|
||||||
@@ -113,11 +88,7 @@ getDefaultDevice(/*in/out*/ driver_id_t &driver_id)
|
|||||||
there is no media in it and it is possible for this routine to return
|
there is no media in it and it is possible for this routine to return
|
||||||
NULL even though there may be a hardware CD-ROM.
|
NULL even though there may be a hardware CD-ROM.
|
||||||
*/
|
*/
|
||||||
char **
|
char ** getDevices(driver_id_t driver_id=DRIVER_DEVICE);
|
||||||
getDevices(driver_id_t driver_id=DRIVER_DEVICE)
|
|
||||||
{
|
|
||||||
return cdio_get_devices(driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Like GetDevices above, but we may change the p_driver_id if we
|
/*! Like GetDevices above, but we may change the p_driver_id if we
|
||||||
were given DRIVER_DEVICE or DRIVER_UNKNOWN. This is because
|
were given DRIVER_DEVICE or DRIVER_UNKNOWN. This is because
|
||||||
@@ -126,11 +97,7 @@ getDevices(driver_id_t driver_id=DRIVER_DEVICE)
|
|||||||
things up for libcdio as well.
|
things up for libcdio as well.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char **
|
char **getDevices (driver_id_t &driver_id);
|
||||||
getDevices (driver_id_t &driver_id)
|
|
||||||
{
|
|
||||||
return cdio_get_devices_ret(&driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get an array of device names in search_devices that have at least
|
Get an array of device names in search_devices that have at least
|
||||||
@@ -149,12 +116,8 @@ getDevices (driver_id_t &driver_id)
|
|||||||
after dereferencing the the value is NULL. This also means nothing
|
after dereferencing the the value is NULL. This also means nothing
|
||||||
was found.
|
was found.
|
||||||
*/
|
*/
|
||||||
char **
|
char ** getDevices(/*in*/ char *ppsz_search_devices[],
|
||||||
getDevices(/*in*/ char *ppsz_search_devices[],
|
cdio_fs_anal_t capabilities, bool b_any=false);
|
||||||
cdio_fs_anal_t capabilities, bool b_any=false)
|
|
||||||
{
|
|
||||||
return cdio_get_devices_with_cap(ppsz_search_devices, capabilities, b_any);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Like GetDevices above but we return the driver we found
|
Like GetDevices above but we return the driver we found
|
||||||
@@ -162,21 +125,12 @@ getDevices(/*in*/ char *ppsz_search_devices[],
|
|||||||
and then *open* it afterwards. Giving the driver back facilitates this,
|
and then *open* it afterwards. Giving the driver back facilitates this,
|
||||||
and speeds things up for libcdio as well.
|
and speeds things up for libcdio as well.
|
||||||
*/
|
*/
|
||||||
char **
|
char ** getDevices(/*in*/ char* ppsz_search_devices[],
|
||||||
getDevices(/*in*/ char* ppsz_search_devices[],
|
|
||||||
cdio_fs_anal_t capabilities, /*out*/ driver_id_t &driver_id,
|
cdio_fs_anal_t capabilities, /*out*/ driver_id_t &driver_id,
|
||||||
bool b_any=false)
|
bool b_any=false);
|
||||||
{
|
|
||||||
return cdio_get_devices_with_cap_ret(ppsz_search_devices, capabilities,
|
|
||||||
b_any, &driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Like cdio_have_xxx but uses an enumeration instead. */
|
/*! Return true if we Have driver for driver_id */
|
||||||
bool
|
bool haveDriver (driver_id_t driver_id);
|
||||||
haveDriver (driver_id_t driver_id)
|
|
||||||
{
|
|
||||||
return cdio_have_driver(driver_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
@@ -186,11 +140,8 @@ Determine if bin_name is the bin file part of a CDRWIN CD disk image.
|
|||||||
@return the corresponding CUE file if bin_name is a BIN file or
|
@return the corresponding CUE file if bin_name is a BIN file or
|
||||||
NULL if not a BIN file.
|
NULL if not a BIN file.
|
||||||
*/
|
*/
|
||||||
char *
|
char *isBinFile(const char *psz_bin_name);
|
||||||
isBinFile(const char *bin_name)
|
|
||||||
{
|
|
||||||
return cdio_is_binfile(bin_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Determine if cue_name is the cue sheet for a CDRWIN CD disk image.
|
Determine if cue_name is the cue sheet for a CDRWIN CD disk image.
|
||||||
@@ -198,37 +149,7 @@ isBinFile(const char *bin_name)
|
|||||||
@return corresponding BIN file if cue_name is a CDRWIN cue file or
|
@return corresponding BIN file if cue_name is a CDRWIN cue file or
|
||||||
NULL if not a CUE file.
|
NULL if not a CUE file.
|
||||||
*/
|
*/
|
||||||
char *
|
char *isCueFile(const char *psz_cue_name);
|
||||||
isCueFile(const char *cue_name)
|
|
||||||
{
|
|
||||||
return cdio_is_cuefile(cue_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Determine if psg_nrg is a Nero CD disk image.
|
|
||||||
|
|
||||||
@param psz_nrg location of presumed NRG image file.
|
|
||||||
@return true if psz_nrg is a Nero NRG image or false
|
|
||||||
if not a NRG image.
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
isNero(const char *psz_nrg)
|
|
||||||
{
|
|
||||||
return cdio_is_nrg(psz_nrg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Determine if psg_toc is a TOC file for a cdrdao CD disk image.
|
|
||||||
|
|
||||||
@param psz_toc location of presumed TOC image file.
|
|
||||||
@return true if toc_name is a cdrdao TOC file or false
|
|
||||||
if not a TOC file.
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
isTocFile(const char *psz_toc)
|
|
||||||
{
|
|
||||||
return cdio_is_tocfile(psz_toc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Determine if psz_source refers to a real hardware CD-ROM.
|
Determine if psz_source refers to a real hardware CD-ROM.
|
||||||
@@ -239,8 +160,23 @@ isTocFile(const char *psz_toc)
|
|||||||
@return true if psz_source is a device; If false is returned we
|
@return true if psz_source is a device; If false is returned we
|
||||||
could have a CD disk image.
|
could have a CD disk image.
|
||||||
*/
|
*/
|
||||||
bool
|
bool isDevice(const char *psz_source, driver_id_t driver_id);
|
||||||
isDevice(const char *psz_source, driver_id_t driver_id)
|
|
||||||
{
|
/*!
|
||||||
return cdio_is_device(psz_source, driver_id);
|
Determine if psz_nrg is a Nero CD disk image.
|
||||||
}
|
|
||||||
|
@param psz_nrg location of presumed NRG image file.
|
||||||
|
@return true if psz_nrg is a Nero NRG image or false
|
||||||
|
if not a NRG image.
|
||||||
|
*/
|
||||||
|
bool isNero(const char *psz_nrg);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Determine if psz_toc is a TOC file for a cdrdao CD disk image.
|
||||||
|
|
||||||
|
@param psz_toc location of presumed TOC image file.
|
||||||
|
@return true if toc_name is a cdrdao TOC file or false
|
||||||
|
if not a TOC file.
|
||||||
|
*/
|
||||||
|
bool isTocFile(const char *psz_toc);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* -*- C++ -*-
|
/* -*- C++ -*-
|
||||||
$Id: iso9660.hpp,v 1.6 2006/03/06 21:54:56 rocky Exp $
|
$Id: iso9660.hpp,v 1.7 2006/03/07 10:46:36 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file iso966o.hpp
|
/** \file iso9660.hpp
|
||||||
*
|
*
|
||||||
* \brief C++ class for libcdio: the CD Input and Control
|
* \brief C++ class for libcdio: the CD Input and Control
|
||||||
* library. Applications use this for anything regarding libcdio.
|
* library. Applications use this for anything regarding libcdio.
|
||||||
@@ -40,10 +40,79 @@ class ISO9660
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
class Stat
|
class PVD // Primary Volume ID
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
iso9660_stat_t *p_stat; // Make private?
|
|
||||||
|
iso9660_pvd_t pvd; // Make private?
|
||||||
|
|
||||||
|
PVD(iso9660_pvd_t *p_new_pvd)
|
||||||
|
{
|
||||||
|
memcpy(&pvd, p_new_pvd, sizeof(pvd));
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's application ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_application_id();
|
||||||
|
|
||||||
|
int get_pvd_block_size();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's preparer ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_preparer_id();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's publisher ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_publisher_id();
|
||||||
|
|
||||||
|
const char *get_pvd_id();
|
||||||
|
|
||||||
|
int get_pvd_space_size();
|
||||||
|
|
||||||
|
uint8_t get_pvd_type();
|
||||||
|
|
||||||
|
/*! Return the primary volume id version number (of pvd).
|
||||||
|
If there is an error 0 is returned.
|
||||||
|
*/
|
||||||
|
int get_pvd_version();
|
||||||
|
|
||||||
|
/*! Return the LSN of the root directory for pvd.
|
||||||
|
If there is an error CDIO_INVALID_LSN is returned.
|
||||||
|
*/
|
||||||
|
lsn_t get_root_lsn();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's system ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_system_id();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's volume ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_volume_id();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's volumeset ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char * get_volumeset_id();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class Stat // ISO 9660 file information
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
iso9660_stat_t *p_stat;
|
||||||
|
typedef list< ISO9660::Stat *> stat_list_t;
|
||||||
|
|
||||||
Stat(iso9660_stat_t *p_new_stat)
|
Stat(iso9660_stat_t *p_new_stat)
|
||||||
{
|
{
|
||||||
@@ -71,113 +140,68 @@ public:
|
|||||||
p_stat = NULL;
|
p_stat = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
class PVD
|
|
||||||
|
class FS : public CdioDevice // ISO 9660 Filesystem on a CD or CD-image
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
iso9660_pvd_t pvd; // Make private?
|
typedef list< ISO9660::Stat *> stat_list_t;
|
||||||
|
|
||||||
PVD(iso9660_pvd_t *p_new_pvd)
|
|
||||||
{
|
|
||||||
memcpy(&pvd, p_new_pvd, sizeof(pvd));
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the PVD's application ID.
|
Given a directory pointer, find the filesystem entry that contains
|
||||||
NULL is returned if there is some problem in getting this.
|
lsn and return information about it.
|
||||||
*/
|
|
||||||
char * get_application_id()
|
|
||||||
{
|
|
||||||
return iso9660_get_application_id(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
int get_pvd_block_size()
|
@return Stat * of entry if we found lsn, or NULL otherwise.
|
||||||
{
|
Caller must free return value.
|
||||||
return iso9660_get_pvd_block_size(&pvd);
|
*/
|
||||||
}
|
Stat *find_lsn(lsn_t i_lsn);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the PVD's preparer ID.
|
Read the Primary Volume Descriptor for a CD.
|
||||||
NULL is returned if there is some problem in getting this.
|
True is returned if read, and false if there was an error.
|
||||||
*/
|
*/
|
||||||
char * get_preparer_id()
|
bool read_pvd (/*out*/ iso9660_pvd_t *p_pvd);
|
||||||
{
|
|
||||||
return iso9660_get_preparer_id(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the PVD's publisher ID.
|
Read the Super block of an ISO 9660 image. This is the
|
||||||
NULL is returned if there is some problem in getting this.
|
Primary Volume Descriptor (PVD) and perhaps a Supplemental Volume
|
||||||
|
Descriptor if (Joliet) extensions are acceptable.
|
||||||
*/
|
*/
|
||||||
char * get_publisher_id()
|
bool read_superblock (iso_extension_mask_t iso_extension_mask);
|
||||||
{
|
|
||||||
return iso9660_get_publisher_id(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
const char *get_pvd_id()
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
{
|
pointers for the files inside that directory. The caller must free the
|
||||||
return iso9660_get_pvd_id(&pvd);
|
returned result.
|
||||||
};
|
|
||||||
|
|
||||||
int get_pvd_space_size()
|
|
||||||
{
|
|
||||||
return iso9660_get_pvd_space_size(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t get_pvd_type() {
|
|
||||||
return iso9660_get_pvd_type(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Return the primary volume id version number (of pvd).
|
|
||||||
If there is an error 0 is returned.
|
|
||||||
*/
|
*/
|
||||||
int get_pvd_version()
|
bool readdir (const char psz_path[], bool b_mode2,
|
||||||
{
|
stat_list_t& stat_list);
|
||||||
return iso9660_get_pvd_version(&pvd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Return the LSN of the root directory for pvd.
|
|
||||||
If there is an error CDIO_INVALID_LSN is returned.
|
|
||||||
*/
|
|
||||||
lsn_t get_root_lsn()
|
|
||||||
{
|
|
||||||
return iso9660_get_root_lsn(&pvd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the PVD's system ID.
|
Return file status for path name psz_path. NULL is returned on
|
||||||
NULL is returned if there is some problem in getting this.
|
error.
|
||||||
|
|
||||||
|
If translate is true, version numbers in the ISO 9660 name are
|
||||||
|
dropped, i.e. ;1 is removed and if level 1 ISO-9660 names are
|
||||||
|
lowercased.
|
||||||
|
|
||||||
|
Mode2 is used only if translate is true and is a hack that
|
||||||
|
really should go away in libcdio sometime. If set use mode 2
|
||||||
|
reading, otherwise use mode 1 reading.
|
||||||
|
|
||||||
|
@return file status object for psz_path. NULL is returned on
|
||||||
|
error.
|
||||||
*/
|
*/
|
||||||
char * get_system_id()
|
Stat *stat (const char psz_path[], bool b_translate=false,
|
||||||
{
|
bool b_mode2=false) ;
|
||||||
return iso9660_get_system_id(&pvd);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
class IFS // ISO 9660 filesystem image
|
||||||
Return the PVD's volume ID.
|
|
||||||
NULL is returned if there is some problem in getting this.
|
|
||||||
*/
|
|
||||||
char * get_volume_id()
|
|
||||||
{
|
|
||||||
return iso9660_get_volume_id(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Return the PVD's volumeset ID.
|
|
||||||
NULL is returned if there is some problem in getting this.
|
|
||||||
*/
|
|
||||||
char * get_volumeset_id()
|
|
||||||
{
|
|
||||||
return iso9660_get_volumeset_id(&pvd);
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class IFS
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
typedef list< ISO9660::Stat *> stat_list_t;
|
||||||
|
|
||||||
IFS()
|
IFS()
|
||||||
{
|
{
|
||||||
p_iso9660=NULL;
|
p_iso9660=NULL;
|
||||||
@@ -196,13 +220,7 @@ public:
|
|||||||
@return true is unconditionally returned. If there was an error
|
@return true is unconditionally returned. If there was an error
|
||||||
false would be returned.
|
false would be returned.
|
||||||
*/
|
*/
|
||||||
bool
|
bool close();
|
||||||
close()
|
|
||||||
{
|
|
||||||
iso9660_close(p_iso9660);
|
|
||||||
p_iso9660 = (iso9660_t *) NULL;
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Given a directory pointer, find the filesystem entry that contains
|
Given a directory pointer, find the filesystem entry that contains
|
||||||
@@ -210,80 +228,53 @@ public:
|
|||||||
|
|
||||||
Returns Stat* of entry if we found lsn, or NULL otherwise.
|
Returns Stat* of entry if we found lsn, or NULL otherwise.
|
||||||
*/
|
*/
|
||||||
Stat *find_lsn(lsn_t i_lsn)
|
Stat *find_lsn(lsn_t i_lsn);
|
||||||
{
|
|
||||||
return new Stat(iso9660_ifs_find_lsn(p_iso9660, i_lsn));
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the application ID. psz_app_id is set to NULL if there
|
Get the application ID. psz_app_id is set to NULL if there
|
||||||
is some problem in getting this and false is returned.
|
is some problem in getting this and false is returned.
|
||||||
*/
|
*/
|
||||||
bool get_application_id(/*out*/ char * &psz_app_id)
|
bool get_application_id(/*out*/ char * &psz_app_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_application_id(p_iso9660, &psz_app_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the Joliet level recognized.
|
Return the Joliet level recognized.
|
||||||
*/
|
*/
|
||||||
uint8_t get_joliet_level()
|
uint8_t get_joliet_level();
|
||||||
{
|
|
||||||
return iso9660_ifs_get_joliet_level(p_iso9660);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the preparer ID. psz_preparer_id is set to NULL if there
|
Get the preparer ID. psz_preparer_id is set to NULL if there
|
||||||
is some problem in getting this and false is returned.
|
is some problem in getting this and false is returned.
|
||||||
*/
|
*/
|
||||||
bool get_preparer_id(/*out*/ char * &psz_preparer_id)
|
bool get_preparer_id(/*out*/ char * &psz_preparer_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_preparer_id(p_iso9660, &psz_preparer_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the publisher ID. psz_publisher_id is set to NULL if there
|
Get the publisher ID. psz_publisher_id is set to NULL if there
|
||||||
is some problem in getting this and false is returned.
|
is some problem in getting this and false is returned.
|
||||||
*/
|
*/
|
||||||
bool get_publisher_id(/*out*/ char * &psz_publisher_id)
|
bool get_publisher_id(/*out*/ char * &psz_publisher_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_publisher_id(p_iso9660, &psz_publisher_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Get the system ID. psz_system_id is set to NULL if there
|
Get the system ID. psz_system_id is set to NULL if there
|
||||||
is some problem in getting this and false is returned.
|
is some problem in getting this and false is returned.
|
||||||
*/
|
*/
|
||||||
bool get_system_id(/*out*/ char * &psz_system_id)
|
bool get_system_id(/*out*/ char * &psz_system_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_system_id(p_iso9660, &psz_system_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Return the volume ID in the PVD. psz_volume_id is set to
|
/*! Return the volume ID in the PVD. psz_volume_id is set to
|
||||||
NULL if there is some problem in getting this and false is
|
NULL if there is some problem in getting this and false is
|
||||||
returned.
|
returned.
|
||||||
*/
|
*/
|
||||||
bool get_volume_id(/*out*/ char * &psz_volume_id)
|
bool get_volume_id(/*out*/ char * &psz_volume_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_volume_id(p_iso9660, &psz_volume_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Return the volumeset ID in the PVD. psz_volumeset_id is set to
|
/*! Return the volumeset ID in the PVD. psz_volumeset_id is set to
|
||||||
NULL if there is some problem in getting this and false is
|
NULL if there is some problem in getting this and false is
|
||||||
returned.
|
returned.
|
||||||
*/
|
*/
|
||||||
bool get_volumeset_id(/*out*/ char * &psz_volumeset_id)
|
bool get_volumeset_id(/*out*/ char * &psz_volumeset_id);
|
||||||
{
|
|
||||||
return iso9660_ifs_get_volumeset_id(p_iso9660, &psz_volumeset_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return true if ISO 9660 image has extended attrributes (XA).
|
Return true if ISO 9660 image has extended attrributes (XA).
|
||||||
*/
|
*/
|
||||||
bool is_xa ()
|
bool is_xa ();
|
||||||
{
|
|
||||||
return iso9660_ifs_is_xa (p_iso9660);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Open an ISO 9660 image for reading. Maybe in the future we will
|
/*! Open an ISO 9660 image for reading. Maybe in the future we will
|
||||||
have a mode. NULL is returned on error. An open routine should be
|
have a mode. NULL is returned on error. An open routine should be
|
||||||
@@ -298,14 +289,8 @@ public:
|
|||||||
|
|
||||||
@see open_fuzzy
|
@see open_fuzzy
|
||||||
*/
|
*/
|
||||||
bool
|
bool open(const char *psz_path,
|
||||||
open(const char *psz_path,
|
iso_extension_mask_t iso_extension_mask=ISO_EXTENSION_NONE);
|
||||||
iso_extension_mask_t iso_extension_mask=ISO_EXTENSION_NONE)
|
|
||||||
{
|
|
||||||
if (p_iso9660) iso9660_close(p_iso9660);
|
|
||||||
p_iso9660 = iso9660_open_ext(psz_path, iso_extension_mask);
|
|
||||||
return NULL != (iso9660_t *) p_iso9660 ;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Open an ISO 9660 image for "fuzzy" reading. This means that we
|
/*! Open an ISO 9660 image for "fuzzy" reading. This means that we
|
||||||
will try to guess various internal offset based on internal
|
will try to guess various internal offset based on internal
|
||||||
@@ -318,28 +303,27 @@ public:
|
|||||||
|
|
||||||
@see open
|
@see open
|
||||||
*/
|
*/
|
||||||
bool
|
bool open_fuzzy (const char *psz_path,
|
||||||
open_fuzzy (const char *psz_path,
|
iso_extension_mask_t iso_extension_mask
|
||||||
iso_extension_mask_t iso_extension_mask=ISO_EXTENSION_NONE,
|
=ISO_EXTENSION_NONE,
|
||||||
uint16_t i_fuzz=20)
|
uint16_t i_fuzz=20);
|
||||||
{
|
|
||||||
p_iso9660 = iso9660_open_fuzzy_ext(psz_path, iso_extension_mask, i_fuzz);
|
|
||||||
//return p_iso9660 != (iso9660_t *) NULL;
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Read the Primary Volume Descriptor for an ISO 9660 image. A
|
/*! Read the Primary Volume Descriptor for an ISO 9660 image. A
|
||||||
PVD object is returned if read, and NULL if there was an error.
|
PVD object is returned if read, and NULL if there was an error.
|
||||||
*/
|
*/
|
||||||
PVD *read_pvd ()
|
PVD *read_pvd ();
|
||||||
{
|
|
||||||
iso9660_pvd_t pvd;
|
/*!
|
||||||
bool b_okay = iso9660_ifs_read_pvd (p_iso9660, &pvd);
|
Read the Super block of an ISO 9660 image but determine framesize
|
||||||
if (b_okay) {
|
and datastart and a possible additional offset. Generally here we are
|
||||||
return new PVD(&pvd);
|
not reading an ISO 9660 image but a CD-Image which contains an ISO 9660
|
||||||
}
|
filesystem.
|
||||||
return (PVD *) NULL;
|
|
||||||
}
|
@see read_superblock
|
||||||
|
*/
|
||||||
|
bool read_superblock (iso_extension_mask_t iso_extension_mask
|
||||||
|
=ISO_EXTENSION_NONE,
|
||||||
|
uint16_t i_fuzz=20);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Read the Super block of an ISO 9660 image but determine framesize
|
Read the Super block of an ISO 9660 image but determine framesize
|
||||||
@@ -350,159 +334,30 @@ public:
|
|||||||
@see read_superblock
|
@see read_superblock
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
read_superblock (iso_extension_mask_t iso_extension_mask=
|
read_superblock_fuzzy (iso_extension_mask_t iso_extension_mask
|
||||||
ISO_EXTENSION_NONE,
|
=ISO_EXTENSION_NONE,
|
||||||
uint16_t i_fuzz=20)
|
uint16_t i_fuzz=20);
|
||||||
{
|
|
||||||
return iso9660_ifs_read_superblock (p_iso9660, iso_extension_mask);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Read the Super block of an ISO 9660 image but determine framesize
|
|
||||||
and datastart and a possible additional offset. Generally here we are
|
|
||||||
not reading an ISO 9660 image but a CD-Image which contains an ISO 9660
|
|
||||||
filesystem.
|
|
||||||
|
|
||||||
@see read_superblock
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
read_superblock_fuzzy (iso_extension_mask_t iso_extension_mask=
|
|
||||||
ISO_EXTENSION_NONE,
|
|
||||||
uint16_t i_fuzz=20)
|
|
||||||
{
|
|
||||||
return iso9660_ifs_fuzzy_read_superblock (p_iso9660, iso_extension_mask,
|
|
||||||
i_fuzz);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
pointers for the files inside that directory. The caller must free
|
pointers for the files inside that directory. The caller must free
|
||||||
the returned result.
|
the returned result.
|
||||||
*/
|
*/
|
||||||
bool
|
bool readdir (const char psz_path[], stat_list_t& stat_list);
|
||||||
readdir (const char psz_path[], list< ISO9660::Stat *>& stat_list)
|
|
||||||
{
|
|
||||||
CdioList_t *p_stat_list = iso9660_ifs_readdir (p_iso9660, psz_path);
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Seek to a position and then read n bytes. Size read is returned.
|
Seek to a position and then read n bytes. Size read is returned.
|
||||||
*/
|
*/
|
||||||
long int seek_read (void *ptr, lsn_t start, long int i_size=1)
|
long int seek_read (void *ptr, lsn_t start, long int i_size=1);
|
||||||
{
|
|
||||||
return iso9660_iso_seek_read (p_iso9660, ptr, start, i_size);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return file status for pathname. NULL is returned on error.
|
Return file status for pathname. NULL is returned on error.
|
||||||
*/
|
*/
|
||||||
Stat *stat (const char psz_path[], bool b_translate=false)
|
Stat *stat (const char psz_path[], bool b_translate=false);
|
||||||
{
|
|
||||||
if (b_translate)
|
|
||||||
return new Stat(iso9660_ifs_stat_translate (p_iso9660, psz_path));
|
|
||||||
else
|
|
||||||
return new Stat(iso9660_ifs_stat (p_iso9660, psz_path));
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
iso9660_t *p_iso9660;
|
iso9660_t *p_iso9660;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FS : public CdioDevice
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Given a directory pointer, find the filesystem entry that contains
|
|
||||||
lsn and return information about it.
|
|
||||||
|
|
||||||
@return Stat * of entry if we found lsn, or NULL otherwise.
|
|
||||||
Caller must free return value.
|
|
||||||
*/
|
|
||||||
Stat *find_lsn(lsn_t i_lsn)
|
|
||||||
{
|
|
||||||
return new Stat(iso9660_find_fs_lsn(p_cdio, i_lsn));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Read the Primary Volume Descriptor for a CD.
|
|
||||||
True is returned if read, and false if there was an error.
|
|
||||||
*/
|
|
||||||
bool read_pvd ( /*out*/ iso9660_pvd_t *p_pvd )
|
|
||||||
{
|
|
||||||
return iso9660_fs_read_pvd ( p_cdio, p_pvd );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Read the Super block of an ISO 9660 image. This is the
|
|
||||||
Primary Volume Descriptor (PVD) and perhaps a Supplemental Volume
|
|
||||||
Descriptor if (Joliet) extensions are acceptable.
|
|
||||||
*/
|
|
||||||
bool read_superblock (iso_extension_mask_t iso_extension_mask)
|
|
||||||
{
|
|
||||||
return iso9660_fs_read_superblock (p_cdio, iso_extension_mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
|
||||||
pointers for the files inside that directory. The caller must free the
|
|
||||||
returned result.
|
|
||||||
*/
|
|
||||||
bool readdir (const char psz_path[], bool b_mode2,
|
|
||||||
list< ISO9660::Stat *>& stat_list)
|
|
||||||
{
|
|
||||||
CdioList_t * p_stat_list = iso9660_fs_readdir (p_cdio, psz_path,
|
|
||||||
b_mode2);
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Return file status for path name psz_path. NULL is returned on
|
|
||||||
error.
|
|
||||||
|
|
||||||
If translate is true, version numbers in the ISO 9660 name are
|
|
||||||
dropped, i.e. ;1 is removed and if level 1 ISO-9660 names are
|
|
||||||
lowercased.
|
|
||||||
|
|
||||||
Mode2 is used only if translate is true and is a hack that
|
|
||||||
really should go away in libcdio sometime. If set use mode 2
|
|
||||||
reading, otherwise use mode 1 reading.
|
|
||||||
|
|
||||||
@return file status object for psz_path. NULL is returned on
|
|
||||||
error.
|
|
||||||
*/
|
|
||||||
Stat *stat (const char psz_path[], bool b_translate=false,
|
|
||||||
bool b_mode2=false)
|
|
||||||
{
|
|
||||||
if (b_translate)
|
|
||||||
return new ISO9660::Stat(iso9660_fs_stat_translate (p_cdio, psz_path,
|
|
||||||
b_mode2));
|
|
||||||
else
|
|
||||||
return new ISO9660::Stat(iso9660_fs_stat (p_cdio, psz_path));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ISO9660_HPP__ */
|
#endif /* __ISO9660_HPP__ */
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# $Id: Makefile.am,v 1.4 2006/03/06 04:48:38 rocky Exp $
|
# $Id: Makefile.am,v 1.5 2006/03/07 10:46:36 rocky Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
# Copyright (C) 2005, 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
#
|
#
|
||||||
@@ -48,7 +48,7 @@ libcdiopp_la_CURRENT := 0
|
|||||||
libcdiopp_la_REVISION := 0
|
libcdiopp_la_REVISION := 0
|
||||||
libcdiopp_la_AGE := 0
|
libcdiopp_la_AGE := 0
|
||||||
|
|
||||||
libcdiopp_sources = cdio_stub.cpp
|
libcdiopp_sources = cdio.cpp devices.cpp
|
||||||
|
|
||||||
libcdio___la_SOURCES = $(libcdiopp_sources)
|
libcdio___la_SOURCES = $(libcdiopp_sources)
|
||||||
libcdio___la_ldflags = -version-info $(libcdiopp_la_CURRENT):$(libcdiopp_la_REVISION):$(libcdiopp_la_AGE)
|
libcdio___la_ldflags = -version-info $(libcdiopp_la_CURRENT):$(libcdiopp_la_REVISION):$(libcdiopp_la_AGE)
|
||||||
@@ -57,7 +57,7 @@ libiso9660pp_la_CURRENT := 0
|
|||||||
libiso9660pp_la_REVISION := 0
|
libiso9660pp_la_REVISION := 0
|
||||||
libiso9660pp_la_AGE := 0
|
libiso9660pp_la_AGE := 0
|
||||||
|
|
||||||
libiso9660pp_sources = iso9660_stub.cpp
|
libiso9660pp_sources = iso9660.cpp
|
||||||
|
|
||||||
libiso9660___la_SOURCES = $(libiso9660pp_sources)
|
libiso9660___la_SOURCES = $(libiso9660pp_sources)
|
||||||
libiso9660___la_ldflags = -version-info $(libiso9660pp_la_CURRENT):$(libiso9660pp_la_REVISION):$(libiso9660pp_la_AGE)
|
libiso9660___la_ldflags = -version-info $(libiso9660pp_la_CURRENT):$(libiso9660pp_la_REVISION):$(libiso9660pp_la_AGE)
|
||||||
|
|||||||
45
lib/cdio++/cdio.cpp
Normal file
45
lib/cdio++/cdio.cpp
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/* -*- C++ -*-
|
||||||
|
$Id: cdio.cpp,v 1.1 2006/03/07 10:46:37 rocky Exp $
|
||||||
|
|
||||||
|
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
|
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
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <cdio++/cdio.hpp>
|
||||||
|
|
||||||
|
void possible_throw_device_exception(driver_return_code_t drc)
|
||||||
|
{
|
||||||
|
switch (drc) {
|
||||||
|
case DRIVER_OP_SUCCESS:
|
||||||
|
return;
|
||||||
|
case DRIVER_OP_ERROR:
|
||||||
|
throw DriverOpError();
|
||||||
|
case DRIVER_OP_UNSUPPORTED:
|
||||||
|
throw DriverOpUnsupported();
|
||||||
|
case DRIVER_OP_UNINIT:
|
||||||
|
throw DriverOpUninit();
|
||||||
|
case DRIVER_OP_NOT_PERMITTED:
|
||||||
|
throw DriverOpNotPermitted();
|
||||||
|
case DRIVER_OP_BAD_PARAMETER:
|
||||||
|
throw DriverOpBadParameter();
|
||||||
|
case DRIVER_OP_BAD_POINTER:
|
||||||
|
throw DriverOpBadPointer();
|
||||||
|
case DRIVER_OP_NO_DRIVER:
|
||||||
|
throw DriverOpNoDriver();
|
||||||
|
default:
|
||||||
|
throw DriverOpException(drc);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#include <sys/types.h>
|
|
||||||
#include <cdio++/cdio.hpp>
|
|
||||||
|
|
||||||
438
lib/cdio++/iso9660.cpp
Normal file
438
lib/cdio++/iso9660.cpp
Normal file
@@ -0,0 +1,438 @@
|
|||||||
|
/* -*- C++ -*-
|
||||||
|
$Id: iso9660.cpp,v 1.1 2006/03/07 10:46:37 rocky Exp $
|
||||||
|
|
||||||
|
Copyright (C) 2006 Rocky Bernstein <rocky@panix.com>
|
||||||
|
|
||||||
|
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
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
#include <cdio++/iso9660.hpp>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Given a directory pointer, find the filesystem entry that contains
|
||||||
|
lsn and return information about it.
|
||||||
|
|
||||||
|
@return Stat * of entry if we found lsn, or NULL otherwise.
|
||||||
|
Caller must free return value.
|
||||||
|
*/
|
||||||
|
ISO9660::Stat *
|
||||||
|
ISO9660::FS::find_lsn(lsn_t i_lsn)
|
||||||
|
{
|
||||||
|
return new Stat(iso9660_find_fs_lsn(p_cdio, i_lsn));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Read the Primary Volume Descriptor for a CD.
|
||||||
|
True is returned if read, and false if there was an error.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::FS::read_pvd ( /*out*/ iso9660_pvd_t *p_pvd )
|
||||||
|
{
|
||||||
|
return iso9660_fs_read_pvd ( p_cdio, p_pvd );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Read the Super block of an ISO 9660 image. This is the
|
||||||
|
Primary Volume Descriptor (PVD) and perhaps a Supplemental Volume
|
||||||
|
Descriptor if (Joliet) extensions are acceptable.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::FS::read_superblock (iso_extension_mask_t iso_extension_mask)
|
||||||
|
{
|
||||||
|
return iso9660_fs_read_superblock (p_cdio, iso_extension_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
|
pointers for the files inside that directory. The caller must free the
|
||||||
|
returned result.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::FS::readdir (const char psz_path[], bool b_mode2,
|
||||||
|
stat_list_t& stat_list)
|
||||||
|
{
|
||||||
|
CdioList_t * p_stat_list = iso9660_fs_readdir (p_cdio, psz_path,
|
||||||
|
b_mode2);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return file status for path name psz_path. NULL is returned on
|
||||||
|
error.
|
||||||
|
|
||||||
|
If translate is true, version numbers in the ISO 9660 name are
|
||||||
|
dropped, i.e. ;1 is removed and if level 1 ISO-9660 names are
|
||||||
|
lowercased.
|
||||||
|
|
||||||
|
Mode2 is used only if translate is true and is a hack that
|
||||||
|
really should go away in libcdio sometime. If set use mode 2
|
||||||
|
reading, otherwise use mode 1 reading.
|
||||||
|
|
||||||
|
@return file status object for psz_path. NULL is returned on
|
||||||
|
error.
|
||||||
|
*/
|
||||||
|
ISO9660::Stat *
|
||||||
|
ISO9660::FS::stat (const char psz_path[], bool b_translate, bool b_mode2)
|
||||||
|
{
|
||||||
|
if (b_translate)
|
||||||
|
return new ISO9660::Stat(iso9660_fs_stat_translate (p_cdio, psz_path,
|
||||||
|
b_mode2));
|
||||||
|
else
|
||||||
|
return new ISO9660::Stat(iso9660_fs_stat (p_cdio, psz_path));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Close previously opened ISO 9660 image and free resources
|
||||||
|
associated with the image. Call this when done using using an ISO
|
||||||
|
9660 image.
|
||||||
|
|
||||||
|
@return true is unconditionally returned. If there was an error
|
||||||
|
false would be returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::close()
|
||||||
|
{
|
||||||
|
iso9660_close(p_iso9660);
|
||||||
|
p_iso9660 = (iso9660_t *) NULL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Given a directory pointer, find the filesystem entry that contains
|
||||||
|
lsn and return information about it.
|
||||||
|
|
||||||
|
Returns Stat* of entry if we found lsn, or NULL otherwise.
|
||||||
|
*/
|
||||||
|
ISO9660::Stat *
|
||||||
|
ISO9660::IFS::find_lsn(lsn_t i_lsn)
|
||||||
|
{
|
||||||
|
return new Stat(iso9660_ifs_find_lsn(p_iso9660, i_lsn));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the application ID. psz_app_id is set to NULL if there
|
||||||
|
is some problem in getting this and false is returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_application_id(/*out*/ char * &psz_app_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_application_id(p_iso9660, &psz_app_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the Joliet level recognized.
|
||||||
|
*/
|
||||||
|
uint8_t
|
||||||
|
ISO9660::IFS::get_joliet_level()
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_joliet_level(p_iso9660);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the preparer ID. psz_preparer_id is set to NULL if there
|
||||||
|
is some problem in getting this and false is returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_preparer_id(/*out*/ char * &psz_preparer_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_preparer_id(p_iso9660, &psz_preparer_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the publisher ID. psz_publisher_id is set to NULL if there
|
||||||
|
is some problem in getting this and false is returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_publisher_id(/*out*/ char * &psz_publisher_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_publisher_id(p_iso9660, &psz_publisher_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Get the system ID. psz_system_id is set to NULL if there
|
||||||
|
is some problem in getting this and false is returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_system_id(/*out*/ char * &psz_system_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_system_id(p_iso9660, &psz_system_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Return the volume ID in the PVD. psz_volume_id is set to
|
||||||
|
NULL if there is some problem in getting this and false is
|
||||||
|
returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_volume_id(/*out*/ char * &psz_volume_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_volume_id(p_iso9660, &psz_volume_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Return the volumeset ID in the PVD. psz_volumeset_id is set to
|
||||||
|
NULL if there is some problem in getting this and false is
|
||||||
|
returned.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::get_volumeset_id(/*out*/ char * &psz_volumeset_id)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_get_volumeset_id(p_iso9660, &psz_volumeset_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return true if ISO 9660 image has extended attrributes (XA).
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::is_xa ()
|
||||||
|
{
|
||||||
|
return iso9660_ifs_is_xa (p_iso9660);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Open an ISO 9660 image for reading. Maybe in the future we will
|
||||||
|
have a mode. NULL is returned on error. An open routine should be
|
||||||
|
called before using any read routine. If device object was
|
||||||
|
previously opened it is closed first.
|
||||||
|
|
||||||
|
@param psz_path location of ISO 9660 image
|
||||||
|
@param iso_extension_mask the kinds of ISO 9660 extensions will be
|
||||||
|
considered on access.
|
||||||
|
|
||||||
|
@return true if open succeeded or false if error.
|
||||||
|
|
||||||
|
@see open_fuzzy
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::open(const char *psz_path,
|
||||||
|
iso_extension_mask_t iso_extension_mask)
|
||||||
|
{
|
||||||
|
if (p_iso9660) iso9660_close(p_iso9660);
|
||||||
|
p_iso9660 = iso9660_open_ext(psz_path, iso_extension_mask);
|
||||||
|
return NULL != (iso9660_t *) p_iso9660 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Open an ISO 9660 image for "fuzzy" reading. This means that we
|
||||||
|
will try to guess various internal offset based on internal
|
||||||
|
checks. This may be useful when trying to read an ISO 9660 image
|
||||||
|
contained in a file format that libiso9660 doesn't know natively
|
||||||
|
(or knows imperfectly.)
|
||||||
|
|
||||||
|
Maybe in the future we will have a mode. NULL is returned on
|
||||||
|
error.
|
||||||
|
|
||||||
|
@see open
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::open_fuzzy (const char *psz_path,
|
||||||
|
iso_extension_mask_t iso_extension_mask,
|
||||||
|
uint16_t i_fuzz)
|
||||||
|
{
|
||||||
|
p_iso9660 = iso9660_open_fuzzy_ext(psz_path, iso_extension_mask, i_fuzz);
|
||||||
|
//return p_iso9660 != (iso9660_t *) NULL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Read the Primary Volume Descriptor for an ISO 9660 image. A
|
||||||
|
PVD object is returned if read, and NULL if there was an error.
|
||||||
|
*/
|
||||||
|
ISO9660::PVD *
|
||||||
|
ISO9660::IFS::read_pvd ()
|
||||||
|
{
|
||||||
|
iso9660_pvd_t pvd;
|
||||||
|
bool b_okay = iso9660_ifs_read_pvd (p_iso9660, &pvd);
|
||||||
|
if (b_okay) {
|
||||||
|
return new PVD(&pvd);
|
||||||
|
}
|
||||||
|
return (PVD *) NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Read the Super block of an ISO 9660 image but determine framesize
|
||||||
|
and datastart and a possible additional offset. Generally here we are
|
||||||
|
not reading an ISO 9660 image but a CD-Image which contains an ISO 9660
|
||||||
|
filesystem.
|
||||||
|
|
||||||
|
@see read_superblock
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::read_superblock (iso_extension_mask_t iso_extension_mask,
|
||||||
|
uint16_t i_fuzz)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_read_superblock (p_iso9660, iso_extension_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Read the Super block of an ISO 9660 image but determine framesize
|
||||||
|
and datastart and a possible additional offset. Generally here we are
|
||||||
|
not reading an ISO 9660 image but a CD-Image which contains an ISO 9660
|
||||||
|
filesystem.
|
||||||
|
|
||||||
|
@see read_superblock
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::read_superblock_fuzzy (iso_extension_mask_t iso_extension_mask,
|
||||||
|
uint16_t i_fuzz)
|
||||||
|
{
|
||||||
|
return iso9660_ifs_fuzzy_read_superblock (p_iso9660, iso_extension_mask,
|
||||||
|
i_fuzz);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Read psz_path (a directory) and return a list of iso9660_stat_t
|
||||||
|
pointers for the files inside that directory. The caller must free
|
||||||
|
the returned result.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
ISO9660::IFS::readdir (const char psz_path[],
|
||||||
|
stat_list_t& stat_list)
|
||||||
|
{
|
||||||
|
CdioList_t *p_stat_list = iso9660_ifs_readdir (p_iso9660, psz_path);
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Seek to a position and then read n bytes. Size read is returned.
|
||||||
|
*/
|
||||||
|
long int
|
||||||
|
ISO9660::IFS::seek_read (void *ptr, lsn_t start, long int i_size)
|
||||||
|
{
|
||||||
|
return iso9660_iso_seek_read (p_iso9660, ptr, start, i_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return file status for pathname. NULL is returned on error.
|
||||||
|
*/
|
||||||
|
ISO9660::Stat *
|
||||||
|
ISO9660::IFS::stat (const char psz_path[], bool b_translate)
|
||||||
|
{
|
||||||
|
if (b_translate)
|
||||||
|
return new Stat(iso9660_ifs_stat_translate (p_iso9660, psz_path));
|
||||||
|
else
|
||||||
|
return new Stat(iso9660_ifs_stat (p_iso9660, psz_path));
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_application_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_application_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ISO9660::PVD::get_pvd_block_size()
|
||||||
|
{
|
||||||
|
return iso9660_get_pvd_block_size(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's preparer ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_preparer_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_preparer_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's publisher ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_publisher_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_publisher_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
ISO9660::PVD::get_pvd_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_pvd_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ISO9660::PVD::get_pvd_space_size()
|
||||||
|
{
|
||||||
|
return iso9660_get_pvd_space_size(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t
|
||||||
|
ISO9660::PVD::get_pvd_type() {
|
||||||
|
return iso9660_get_pvd_type(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Return the primary volume id version number (of pvd).
|
||||||
|
If there is an error 0 is returned.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
ISO9660::PVD::get_pvd_version()
|
||||||
|
{
|
||||||
|
return iso9660_get_pvd_version(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Return the LSN of the root directory for pvd.
|
||||||
|
If there is an error CDIO_INVALID_LSN is returned.
|
||||||
|
*/
|
||||||
|
lsn_t
|
||||||
|
ISO9660::PVD::get_root_lsn()
|
||||||
|
{
|
||||||
|
return iso9660_get_root_lsn(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's system ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_system_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_system_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's volume ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_volume_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_volume_id(&pvd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return the PVD's volumeset ID.
|
||||||
|
NULL is returned if there is some problem in getting this.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ISO9660::PVD::get_volumeset_id()
|
||||||
|
{
|
||||||
|
return iso9660_get_volumeset_id(&pvd);
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#include <sys/types.h>
|
|
||||||
#include <cdio++/iso9660.hpp>
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user