diff options
Diffstat (limited to 'src/input/vcd/libcdio/cdio')
-rw-r--r-- | src/input/vcd/libcdio/cdio/Makefile.am | 19 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/bytesex.h | 196 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/bytesex_asm.h | 123 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/cd_types.h | 155 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/cdio.h | 980 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/cdtext.h | 108 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/ds.h | 73 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/dvd.h | 113 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/iso9660.h | 786 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/logging.h | 137 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/scsi_mmc.h | 415 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/sector.h | 326 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/types.h | 379 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/util.h | 136 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/version.h | 10 | ||||
-rw-r--r-- | src/input/vcd/libcdio/cdio/xa.h | 151 |
16 files changed, 0 insertions, 4107 deletions
diff --git a/src/input/vcd/libcdio/cdio/Makefile.am b/src/input/vcd/libcdio/cdio/Makefile.am deleted file mode 100644 index 0910d60e5..000000000 --- a/src/input/vcd/libcdio/cdio/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -include $(top_srcdir)/misc/Makefile.common - -noinst_HEADERS = \ - bytesex.h \ - bytesex_asm.h \ - cdio.h \ - cdtext.h \ - cdtext.h \ - cd_types.h \ - ds.h \ - dvd.h \ - iso9660.h \ - logging.h \ - sector.h \ - scsi_mmc.h \ - types.h \ - util.h \ - version.h \ - xa.h diff --git a/src/input/vcd/libcdio/cdio/bytesex.h b/src/input/vcd/libcdio/cdio/bytesex.h deleted file mode 100644 index c40e44729..000000000 --- a/src/input/vcd/libcdio/cdio/bytesex.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - $Id: bytesex.h,v 1.1 2005/01/02 00:51:38 rockyb Exp $ - - Copyright (C) 2000, 2004 Herbert Valerio Riedel <hvr@gnu.org> - - 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 -*/ - -#ifndef __CDIO_BYTESEX_H__ -#define __CDIO_BYTESEX_H__ - -#include <cdio/types.h> -#include <cdio/bytesex_asm.h> -#include <cdio/logging.h> - -/* generic byteswap routines */ - -#define UINT16_SWAP_LE_BE_C(val) ((uint16_t) ( \ - (((uint16_t) (val) & (uint16_t) 0x00ffU) << 8) | \ - (((uint16_t) (val) & (uint16_t) 0xff00U) >> 8))) - -#define UINT32_SWAP_LE_BE_C(val) ((uint32_t) ( \ - (((uint32_t) (val) & (uint32_t) 0x000000ffU) << 24) | \ - (((uint32_t) (val) & (uint32_t) 0x0000ff00U) << 8) | \ - (((uint32_t) (val) & (uint32_t) 0x00ff0000U) >> 8) | \ - (((uint32_t) (val) & (uint32_t) 0xff000000U) >> 24))) - -#define UINT64_SWAP_LE_BE_C(val) ((uint64_t) ( \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x00000000000000ff)) << 56) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x000000000000ff00)) << 40) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x0000000000ff0000)) << 24) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x00000000ff000000)) << 8) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x000000ff00000000)) >> 8) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x0000ff0000000000)) >> 24) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0x00ff000000000000)) >> 40) | \ - (((uint64_t) (val) & (uint64_t) UINT64_C(0xff00000000000000)) >> 56))) - -#ifndef UINT16_SWAP_LE_BE -# define UINT16_SWAP_LE_BE UINT16_SWAP_LE_BE_C -#endif - -#ifndef UINT32_SWAP_LE_BE -# define UINT32_SWAP_LE_BE UINT32_SWAP_LE_BE_C -#endif - -#ifndef UINT64_SWAP_LE_BE -# define UINT64_SWAP_LE_BE UINT64_SWAP_LE_BE_C -#endif - -inline static -uint16_t uint16_swap_le_be (const uint16_t val) -{ - return UINT16_SWAP_LE_BE (val); -} - -inline static -uint32_t uint32_swap_le_be (const uint32_t val) -{ - return UINT32_SWAP_LE_BE (val); -} - -inline static -uint64_t uint64_swap_le_be (const uint64_t val) -{ - return UINT64_SWAP_LE_BE (val); -} - -# define UINT8_TO_BE(val) ((uint8_t) (val)) -# define UINT8_TO_LE(val) ((uint8_t) (val)) -#ifdef WORDS_BIGENDIAN -# define UINT16_TO_BE(val) ((uint16_t) (val)) -# define UINT16_TO_LE(val) ((uint16_t) UINT16_SWAP_LE_BE(val)) - -# define UINT32_TO_BE(val) ((uint32_t) (val)) -# define UINT32_TO_LE(val) ((uint32_t) UINT32_SWAP_LE_BE(val)) - -# define UINT64_TO_BE(val) ((uint64_t) (val)) -# define UINT64_TO_LE(val) ((uint64_t) UINT64_SWAP_LE_BE(val)) -#else -# define UINT16_TO_BE(val) ((uint16_t) UINT16_SWAP_LE_BE(val)) -# define UINT16_TO_LE(val) ((uint16_t) (val)) - -# define UINT32_TO_BE(val) ((uint32_t) UINT32_SWAP_LE_BE(val)) -# define UINT32_TO_LE(val) ((uint32_t) (val)) - -# define UINT64_TO_BE(val) ((uint64_t) UINT64_SWAP_LE_BE(val)) -# define UINT64_TO_LE(val) ((uint64_t) (val)) -#endif - -/* symmetric conversions */ -#define UINT8_FROM_BE(val) (UINT8_TO_BE (val)) -#define UINT8_FROM_LE(val) (UINT8_TO_LE (val)) -#define UINT16_FROM_BE(val) (UINT16_TO_BE (val)) -#define UINT16_FROM_LE(val) (UINT16_TO_LE (val)) -#define UINT32_FROM_BE(val) (UINT32_TO_BE (val)) -#define UINT32_FROM_LE(val) (UINT32_TO_LE (val)) -#define UINT64_FROM_BE(val) (UINT64_TO_BE (val)) -#define UINT64_FROM_LE(val) (UINT64_TO_LE (val)) - -/* converter function template */ -#define CVT_TO_FUNC(bits) \ - static inline uint ## bits ## _t \ - uint ## bits ## _to_be (uint ## bits ## _t val) \ - { return UINT ## bits ## _TO_BE (val); } \ - static inline uint ## bits ## _t \ - uint ## bits ## _to_le (uint ## bits ## _t val) \ - { return UINT ## bits ## _TO_LE (val); } \ - -CVT_TO_FUNC(8) -CVT_TO_FUNC(16) -CVT_TO_FUNC(32) -CVT_TO_FUNC(64) - -#undef CVT_TO_FUNC - -#define uint8_from_be(val) (uint8_to_be (val)) -#define uint8_from_le(val) (uint8_to_le (val)) -#define uint16_from_be(val) (uint16_to_be (val)) -#define uint16_from_le(val) (uint16_to_le (val)) -#define uint32_from_be(val) (uint32_to_be (val)) -#define uint32_from_le(val) (uint32_to_le (val)) -#define uint64_from_be(val) (uint64_to_be (val)) -#define uint64_from_le(val) (uint64_to_le (val)) - -/* ISO9660 related stuff */ - -#define to_711(i) uint8_to_le(i) -#define from_711(i) uint8_from_le(i) - -#define to_721(i) uint16_to_le(i) -#define from_721(i) uint16_from_le(i) - -#define to_721(i) uint16_to_le(i) -#define from_721(i) uint16_from_le(i) - -#define to_722(i) uint16_to_be(i) -#define from_722(i) uint16_from_be(i) - -static inline uint32_t -to_723(uint16_t i) -{ - return uint32_swap_le_be(i) | i; -} - -static inline uint16_t -from_723 (uint32_t p) -{ - if (uint32_swap_le_be (p) != p) - cdio_warn ("from_723: broken byte order"); - - return (0xFFFF & p); -} - -#define to_731(i) uint32_to_le(i) -#define from_731(i) uint32_from_le(i) - -#define to_732(i) uint32_to_be(i) -#define from_732(i) uint32_from_be(i) - -static inline uint64_t -to_733(uint32_t i) -{ - return uint64_swap_le_be(i) | i; -} - -static inline uint32_t -from_733 (uint64_t p) -{ - if (uint64_swap_le_be (p) != p) - cdio_warn ("from_733: broken byte order"); - - return (UINT32_C(0xFFFFFFFF) & p); -} - -#endif /* __CDIO_BYTESEX_H__ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/bytesex_asm.h b/src/input/vcd/libcdio/cdio/bytesex_asm.h deleted file mode 100644 index 4291563ec..000000000 --- a/src/input/vcd/libcdio/cdio/bytesex_asm.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - $Id: bytesex_asm.h,v 1.1 2005/01/02 00:51:38 rockyb Exp $ - - Copyright (C) 2001 Sven Ottemann <ac-logic@freenet.de> - 2001, 2004 Herbert Valerio Riedel <hvr@gnu.org> - - 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 -*/ - -#ifndef __CDIO_BYTESEX_ASM_H__ -#define __CDIO_BYTESEX_ASM_H__ -#if !defined(DISABLE_ASM_OPTIMIZE) - -#include <cdio/types.h> - -#if defined(__powerpc__) && defined(__GNUC__) - -inline static -uint32_t uint32_swap_le_be_asm(const uint32_t a) -{ - uint32_t b; - - __asm__ ("lwbrx %0,0,%1" - :"=r"(b) - :"r"(&a), "m"(a)); - - return b; -} - -inline static -uint16_t uint16_swap_le_be_asm(const uint16_t a) -{ - uint32_t b; - - __asm__ ("lhbrx %0,0,%1" - :"=r"(b) - :"r"(&a), "m"(a)); - - return b; -} - -#define UINT16_SWAP_LE_BE uint16_swap_le_be_asm -#define UINT32_SWAP_LE_BE uint32_swap_le_be_asm - -#elif defined(__mc68000__) && defined(__STORMGCC__) - -inline static -uint32_t uint32_swap_le_be_asm(uint32_t a __asm__("d0")) -{ - /* __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val)); */ - - __asm__("move.l %1,d0;rol.w #8,d0;swap d0;rol.w #8,d0;move.l d0,%0" - :"=r"(a) - :"r"(a)); - - return(a); -} - -inline static -uint16_t uint16_swap_le_be_asm(uint16_t a __asm__("d0")) -{ - __asm__("move.l %1,d0;rol.w #8,d0;move.l d0,%0" - :"=r"(a) - :"r"(a)); - - return(a); -} - -#define UINT16_SWAP_LE_BE uint16_swap_le_be_asm -#define UINT32_SWAP_LE_BE uint32_swap_le_be_asm - -#elif 0 && defined(__i386__) && defined(__GNUC__) - -inline static -uint32_t uint32_swap_le_be_asm(uint32_t a) -{ - __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ - "rorl $16,%0\n\t" /* swap words */ - "xchgb %b0,%h0" /* swap higher bytes */ - :"=q" (a) - : "0" (a)); - - return(a); -} - -inline static -uint16_t uint16_swap_le_be_asm(uint16_t a) -{ - __asm__("xchgb %b0,%h0" /* swap bytes */ - : "=q" (a) - : "0" (a)); - - return(a); -} - -#define UINT16_SWAP_LE_BE uint16_swap_le_be_asm -#define UINT32_SWAP_LE_BE uint32_swap_le_be_asm - -#endif - -#endif /* !defined(DISABLE_ASM_OPTIMIZE) */ -#endif /* __CDIO_BYTESEX_ASM_H__ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/cd_types.h b/src/input/vcd/libcdio/cdio/cd_types.h deleted file mode 100644 index 9f4a73f67..000000000 --- a/src/input/vcd/libcdio/cdio/cd_types.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - $Id: cd_types.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2003 Rocky Bernstein <rocky@panix.com> - Copyright (C) 1996,1997,1998 Gerd Knorr <kraxel@bytesex.org> - and Heiko Eißfeldt <heiko@hexco.de> - - 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 -*/ - -/** \file cd_types.h - * \brief Header for routines which automatically determine the Compact Disc - * format and possibly filesystem on the CD. - * - */ - -#ifndef __CDIO_CD_TYPES_H__ -#define __CDIO_CD_TYPES_H__ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * Filesystem types we understand. The highest-numbered fs type should - * be less than CDIO_FS_MASK defined below. - */ -#define CDIO_FS_AUDIO 1 /**< audio only - not really a - filesystem */ -#define CDIO_FS_HIGH_SIERRA 2 -#define CDIO_FS_ISO_9660 3 /**< ISO 9660 filesystem */ -#define CDIO_FS_INTERACTIVE 4 -#define CDIO_FS_HFS 5 /**< file system used on the Macintosh - system in MacOS 6 through MacOS 9 - and depricated in OSX. */ -#define CDIO_FS_UFS 6 /**< Generic Unix file system derived - from the Berkeley fast file - system. */ - -/** - * EXT2 was the GNU/Linux native filesystem for early kernels. Newer - * GNU/Linux OS's may use EXT3 which EXT2 with a journal. - */ -#define CDIO_FS_EXT2 7 - -#define CDIO_FS_ISO_HFS 8 /**< both HFS & ISO-9660 filesystem */ -#define CDIO_FS_ISO_9660_INTERACTIVE 9 /**< both CD-RTOS and ISO filesystem */ - - -/** - * The 3DO is, technically, a set of specifications created by the 3DO - * company. These specs are for making a 3DO Interactive Multiplayer - * which uses a CD-player. Panasonic in the early 90's was the first - * company to manufacture and market a 3DO player. - */ -#define CDIO_FS_3DO 10 - -/** - Microsoft X-BOX CD. - */ -#define CDIO_FS_XISO 11 -#define CDIO_FS_UDFX 12 -#define CDIO_FS_UDF 13 -#define CDIO_FS_ISO_UDF 14 - - -#define CDIO_FS_MASK 15 /**< Note: this should be 2**n-1 and - and greater than the highest - CDIO_FS number above */ -#define CDIO_FS_UNKNOWN CDIO_FS_MASK - -/** - * Macro to extract just the FS type portion defined above -*/ -#define CDIO_FSTYPE(fs) (fs & CDIO_FS_MASK) - -/** - * Bit masks for the classes of CD-images. These are generally - * higher-level than the fs-type information above and may be determined - * based of the fs type information. - */ -#define CDIO_FS_ANAL_XA 0x0010 /**< eXtended Architecture format */ -#define CDIO_FS_ANAL_MULTISESSION 0x0020 /**< CD has multisesion */ -#define CDIO_FS_ANAL_PHOTO_CD 0x0040 /**< Is a Kodak Photo CD */ -#define CDIO_FS_ANAL_HIDDEN_TRACK 0x0080 /**< Hidden track at the - beginning of the CD */ -#define CDIO_FS_ANAL_CDTV 0x0100 -#define CDIO_FS_ANAL_BOOTABLE 0x0200 /**< CD is bootable */ -#define CDIO_FS_ANAL_VIDEOCD 0x0400 /**< VCD 1.1 */ -#define CDIO_FS_ANAL_ROCKRIDGE 0x0800 /**< Has Rock Ridge Extensions to - ISO 9660 */ -#define CDIO_FS_ANAL_JOLIET 0x1000 /**< Microsoft Joliet extensions - to ISO 9660 */ -#define CDIO_FS_ANAL_SVCD 0x2000 /**< Super VCD or Choiji Video CD */ -#define CDIO_FS_ANAL_CVD 0x4000 /**< Choiji Video CD */ -#define CDIO_FS_ANAL_XISO 0x8000 /**< XBOX CD */ - -/** - * Pattern which can be used by cdio_get_devices to specify matching - * any sort of CD. - */ -#define CDIO_FS_MATCH_ALL (cdio_fs_anal_t) (~CDIO_FS_MASK) - - -/*! - \brief The type used to return analysis information from - cdio_guess_cd_type. - - These fields make sense only for when an ISO-9660 filesystem is used. - */ -typedef struct -{ - unsigned int joliet_level; /**< If has Joliet extensions, this is the - associated level number (i.e. 1, 2, or 3). */ - char iso_label[33]; /**< This is 32 + 1 for null byte at the end in - formatting the string */ - unsigned int isofs_size; - uint8_t UDFVerMinor; /**< For UDF filesystems only */ - uint8_t UDFVerMajor; /**< For UDF filesystems only */ -} cdio_iso_analysis_t; - -/** - * Try to determine what kind of CD-image and/or filesystem we - * have at track track_num. Return information about the CD image - * is returned in iso_analysis and the return value. - */ -cdio_fs_anal_t cdio_guess_cd_type(const CdIo *cdio, int start_session, - track_t track_num, - /*out*/ cdio_iso_analysis_t *iso_analysis); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __CDIO_CD_TYPES_H__ */ - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/cdio.h b/src/input/vcd/libcdio/cdio/cdio.h deleted file mode 100644 index f9e2a38e3..000000000 --- a/src/input/vcd/libcdio/cdio/cdio.h +++ /dev/null @@ -1,980 +0,0 @@ -/* -*- c -*- - $Id: cdio.h,v 1.4 2005/04/27 23:28:42 rockyb Exp $ - - Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2003, 2004 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 -*/ - -/** \file cdio.h - * - * \brief The top-level header for libcdio: the CD Input and Control - * library. Applications include this for anything regarding libcdio. - */ - - -#ifndef __CDIO_H__ -#define __CDIO_H__ - -/** Application Interface or Protocol version number. If the public - * interface changes, we increase this number. - */ -#define CDIO_API_VERSION 2 - -#include <cdio/version.h> - -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include <cdio/types.h> -#include <cdio/sector.h> - -/**! Flags specifying the category of device to open or is opened. */ - -#define CDIO_SRC_IS_DISK_IMAGE_MASK 0x0001 /**< Read source is a CD image. */ -#define CDIO_SRC_IS_DEVICE_MASK 0x0002 /**< Read source is a CD device. */ -#define CDIO_SRC_IS_SCSI_MASK 0x0004 /**< Read source SCSI device. */ -#define CDIO_SRC_IS_NATIVE_MASK 0x0008 - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/*! Size of fields returned by an INQUIRY command */ -#define CDIO_MMC_HW_VENDOR_LEN 8 /**< length of vendor field */ -#define CDIO_MMC_HW_MODEL_LEN 16 /**< length of model field */ -#define CDIO_MMC_HW_REVISION_LEN 4 /**< length of revision field */ - - /*! \brief Structure to return CD vendor, model, and revision-level - strings obtained via the INQUIRY command */ - typedef struct cdio_hwinfo - { - char psz_vendor [CDIO_MMC_HW_VENDOR_LEN+1]; - char psz_model [CDIO_MMC_HW_MODEL_LEN+1]; - char psz_revision[CDIO_MMC_HW_REVISION_LEN+1]; - } cdio_hwinfo_t; - -/* For compatability. */ -#define CdIo CdIo_t - - /** This is an opaque structure for the CD object. */ - typedef struct _CdIo CdIo_t; - - /** This is an opaque structure for the CD-Text object. */ - typedef struct cdtext cdtext_t; - - /** The driver_id_t enumerations may be used to tag a specific driver - * that is opened or is desired to be opened. Note that this is - * different than what is available on a given host. - * - * Order is a little significant since the order is used in scans. - * We have to start with DRIVER_UNKNOWN and devices should come before - * disk-image readers. By putting something towards the top (a lower - * enumeration number), in an iterative scan we prefer that to - * something with a higher enumeration number. - * - * NOTE: IF YOU MODIFY ENUM MAKE SURE INITIALIZATION IN CDIO.C AGREES. - * - */ - typedef enum { - DRIVER_UNKNOWN, /**< Used as input when we don't care what kind - of driver to use. */ - DRIVER_BSDI, /**< BSDI driver */ - DRIVER_FREEBSD, /**< FreeBSD driver - includes CAM and ioctl access */ - DRIVER_LINUX, /**< GNU/Linux Driver */ - DRIVER_SOLARIS, /**< Sun Solaris Driver */ - DRIVER_OSX, /**< Apple OSX Driver */ - DRIVER_WIN32, /**< Microsoft Windows Driver. Includes ASPI and - ioctl acces. */ - DRIVER_CDRDAO, /**< cdrdao format CD image. This is listed - before BIN/CUE, to make the code prefer cdrdao - over BIN/CUE when both exist. */ - DRIVER_BINCUE, /**< CDRWIN BIN/CUE format CD image. This is - listed before NRG, to make the code prefer - BIN/CUE over NRG when both exist. */ - DRIVER_NRG, /**< Nero NRG format CD image. */ - DRIVER_DEVICE /**< Is really a set of the above; should come last */ - } driver_id_t; - - /** There will generally be only one hardware for a given - build/platform from the list above. You can use the variable - below to determine which you've got. If the build doesn't make an - hardware driver, then the value will be DRIVER_UNKNOWN. - */ - extern const driver_id_t cdio_os_driver; - - -/** Make sure what's listed for CDIO_MIN_DRIVER is the last - enumeration in driver_id_t. Since we have a bogus (but useful) 0th - entry above we don't have to add one. -*/ -#define CDIO_MIN_DRIVER DRIVER_BSDI -#define CDIO_MIN_DEVICE_DRIVER CDIO_MIN_DRIVER -#define CDIO_MAX_DRIVER DRIVER_NRG -#define CDIO_MAX_DEVICE_DRIVER DRIVER_WIN32 - - typedef enum { - TRACK_FORMAT_AUDIO, /**< Audio track, e.g. CD-DA */ - TRACK_FORMAT_CDI, /**< CD-i. How this is different from DATA below? */ - TRACK_FORMAT_XA, /**< Mode2 of some sort */ - TRACK_FORMAT_DATA, /**< Mode1 of some sort */ - TRACK_FORMAT_PSX, /**< Playstation CD. Like audio but only 2336 bytes - * of user data. - */ - TRACK_FORMAT_ERROR /**< Dunno what is, or some other error. */ - } track_format_t; - - extern const char *discmode2str[]; - - /*! Printable tags for track_format_t enumeration. */ - extern const char *track_format2str[6]; - - /*! - Eject media in CD drive if there is a routine to do so. - - @param p_cdio the CD object to be acted upon. - @return 0 if success and 1 for failure, and 2 if no routine. - If the CD is ejected *p_cdio is freed and p_cdio set to NULL. - */ - int cdio_eject_media (CdIo_t **p_cdio); - - /*! - Free any resources associated with p_cdio. Call this when done using p_cdio - and using CD reading/control operations. - - @param p_cdio the CD object to eliminated. - */ - void cdio_destroy (CdIo_t *p_cdio); - - /*! - Free device list returned by cdio_get_devices or - cdio_get_devices_with_cap. - - @param device_list list returned by cdio_get_devices or - cdio_get_devices_with_cap - - @see cdio_get_devices, cdio_get_devices_with_cap - - */ - void cdio_free_device_list (char * device_list[]); - - /*! - Get the value associatied with key. - - @param p_cdio the CD object queried - @param key the key to retrieve - @return the value associatd with "key" or NULL if p_cdio is NULL - or "key" does not exist. - */ - const char * cdio_get_arg (const CdIo_t *p_cdio, const char key[]); - - /*! - Get CD-Text information for a CdIo object. - - @param p_cdio the CD object that may contain CD-Text information. - @param i_track track for which we are requesting CD-Text information. - @return the CD-Text object or NULL if obj is NULL - or CD-Text information does not exist. - - If i_track is 0 or CDIO_CDROM_LEADOUT_TRACK the track returned - is the information assocated with the CD. - */ - const cdtext_t *cdio_get_cdtext (CdIo_t *p_cdio, track_t i_track); - - /*! - Get the default CD device. - if p_cdio is NULL (we haven't initialized a specific device driver), - then find a suitable one and return the default device for that. - - @param p_cdio the CD object queried - @return a string containing the default CD device or NULL is - if we couldn't get a default device. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - char * cdio_get_default_device (const CdIo_t *p_cdio); - - /*! Return an array of device names. If you want a specific - devices for a driver, give that device. If you want hardware - devices, give DRIVER_DEVICE and if you want all possible devices, - image drivers and hardware drivers give DRIVER_UNKNOWN. - - NULL is returned if we couldn't return a list of devices. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - char ** cdio_get_devices (driver_id_t driver_id); - - /*! - Get an array of device names in search_devices that have at least - the capabilities listed by the capabities parameter. If - search_devices is NULL, then we'll search all possible CD drives. - - If "b_any" is set false then every capability listed in the - extended portion of capabilities (i.e. not the basic filesystem) - must be satisified. If "any" is set true, then if any of the - capabilities matches, we call that a success. - - To find a CD-drive of any type, use the mask CDIO_FS_MATCH_ALL. - - @return the array of device names or NULL if we couldn't get a - default device. It is also possible to return a non NULL but - after dereferencing the the value is NULL. This also means nothing - was found. - */ - char ** cdio_get_devices_with_cap (char* ppsz_search_devices[], - cdio_fs_anal_t capabilities, bool b_any); - - /*! - Like cdio_get_devices_with_cap but we return the driver we found - as well. This is because often one wants to search for kind of drive - and then *open* it afterwards. Giving the driver back facilitates this, - and speeds things up for libcdio as well. - */ - char ** cdio_get_devices_with_cap_ret (/*out*/ char* ppsz_search_devices[], - cdio_fs_anal_t capabilities, - bool b_any, - /*out*/ driver_id_t *p_driver_id); - - /*! Like cdio_get_devices, but we may change the p_driver_id if we - were given DRIVER_DEVICE or DRIVER_UNKNOWN. This is because - often one wants to get a drive name and then *open* it - afterwards. Giving the driver back facilitates this, and speeds - things up for libcdio as well. - */ - - char ** cdio_get_devices_ret (/*in/out*/ driver_id_t *p_driver_id); - - /*! - Get disc mode - the kind of CD (CD-DA, CD-ROM mode 1, CD-MIXED, etc. - that we've got. The notion of "CD" is extended a little to include - DVD's. - */ - discmode_t cdio_get_discmode (CdIo_t *p_cdio); - - /*! - Get the what kind of device we've got. - - @param p_cdio the CD object queried - @param p_read_cap pointer to return read capabilities - @param p_write_cap pointer to return write capabilities - @param p_misc_cap pointer to return miscellaneous other capabilities - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - void cdio_get_drive_cap (const CdIo_t *p_cdio, - cdio_drive_read_cap_t *p_read_cap, - cdio_drive_write_cap_t *p_write_cap, - cdio_drive_misc_cap_t *p_misc_cap); - - /*! - Get the drive capabilities for a specified device. - - @return a list of device capabilities. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - void cdio_get_drive_cap_dev (const char *device, - cdio_drive_read_cap_t *p_read_cap, - cdio_drive_write_cap_t *p_write_cap, - cdio_drive_misc_cap_t *p_misc_cap); - - /*! - Get a string containing the name of the driver in use. - - @return a string with driver name or NULL if CdIo is NULL (we - haven't initialized a specific device. - */ - const char * cdio_get_driver_name (const CdIo_t *p_cdio); - - /*! - Get the driver id. - if CdIo is NULL (we haven't initialized a specific device driver), - then return DRIVER_UNKNOWN. - - @return the driver id.. - */ - driver_id_t cdio_get_driver_id (const CdIo_t *p_cdio); - - /*! - Get the number of the first track. - - @return the track number or CDIO_INVALID_TRACK - on error. - */ - track_t cdio_get_first_track_num(const CdIo_t *p_cdio); - - /*! - Get the CD-ROM hardware info via a SCSI MMC INQUIRY command. - False is returned if we had an error getting the information. - */ - bool cdio_get_hwinfo ( const CdIo_t *p_cdio, - /* out*/ cdio_hwinfo_t *p_hw_info ); - - - /*! - Return the Joliet level recognized for p_cdio. - */ - uint8_t cdio_get_joliet_level(const CdIo_t *p_cdio); - - /*! - Get the media catalog number (MCN) from the CD. - - @return the media catalog number r NULL if there is none or we - don't have the ability to get it. - - Note: string is malloc'd so caller has to free() the returned - string when done with it. - - */ - char * cdio_get_mcn (const CdIo_t *p_cdio); - - /*! - Get the number of tracks on the CD. - - @return the number of tracks, or CDIO_INVALID_TRACK if there is - an error. - */ - track_t cdio_get_num_tracks (const CdIo_t *p_cdio); - - /*! - Get the format (audio, mode2, mode1) of track. - */ - track_format_t cdio_get_track_format(const CdIo_t *p_cdio, track_t i_track); - - /*! - Return true if we have XA data (green, mode2 form1) or - XA data (green, mode2 form2). That is track begins: - sync - header - subheader - 12 4 - 8 - - FIXME: there's gotta be a better design for this and get_track_format? - */ - bool cdio_get_track_green(const CdIo_t *p_cdio, track_t i_track); - - /*! - Get the starting LBA for track number - i_track in p_cdio. Track numbers usually start at something - greater than 0, usually 1. - - The "leadout" track is specified either by - using i_track CDIO_CDROM_LEADOUT_TRACK or the total tracks+1. - - @param p_cdio object to get information from - @param i_track the track number we want the LSN for - @return the starting LBA or CDIO_INVALID_LBA on error. - */ - lba_t cdio_get_track_lba(const CdIo_t *p_cdio, track_t i_track); - - /*! - Return the starting MSF (minutes/secs/frames) for track number - i_track in p_cdio. Track numbers usually start at something - greater than 0, usually 1. - - The "leadout" track is specified either by - using i_track CDIO_CDROM_LEADOUT_TRACK or the total tracks+1. - - @param p_cdio object to get information from - @param i_track the track number we want the LSN for - @return the starting LSN or CDIO_INVALID_LSN on error. - */ - lsn_t cdio_get_track_lsn(const CdIo_t *p_cdio, track_t i_track); - - /*! - Return the starting MSF (minutes/secs/frames) for track number - i_track in p_cdio. Track numbers usually start at something - greater than 0, usually 1. - - The "leadout" track is specified either by - using i_track CDIO_CDROM_LEADOUT_TRACK or the total tracks+1. - - @return true if things worked or false if there is no track entry. - */ - bool cdio_get_track_msf(const CdIo_t *p_cdio, track_t i_track, - /*out*/ msf_t *msf); - - /*! - Get the number of sectors between this track an the next. This - includes any pregap sectors before the start of the next track. - Track numbers usually start at something - greater than 0, usually 1. - - @return the number of sectors or 0 if there is an error. - */ - unsigned int cdio_get_track_sec_count(const CdIo_t *p_cdio, track_t i_track); - - /*! - Reposition read offset - Similar to (if not the same as) libc's lseek() - - @param p_cdio object to get information from - @param offset amount to seek - @param whence like corresponding parameter in libc's lseek, e.g. - SEEK_SET or SEEK_END. - @return (off_t) -1 on error. - */ - off_t cdio_lseek(const CdIo_t *p_cdio, off_t offset, int whence); - - /*! - Reads into buf the next size bytes. - Similar to (if not the same as) libc's read() - - @return (ssize_t) -1 on error. - */ - ssize_t cdio_read(const CdIo_t *p_cdio, void *buf, size_t size); - - /*! - Read an audio sector - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_audio_sector (const CdIo_t *p_cdio, void *buf, lsn_t lsn); - - /*! - Reads audio sectors - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - @param i_sectors number of sectors to read - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_audio_sectors (const CdIo_t *p_cdio, void *buf, lsn_t lsn, - unsigned int i_sectors); - - /*! - Reads a mode1 sector - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - @param b_form2 true for reading mode1 form2 sectors or false for - mode1 form1 sectors. - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_mode1_sector (const CdIo_t *p_cdio, void *buf, lsn_t lsn, - bool b_form2); - - /*! - Reads mode1 sectors - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - @param b_form2 true for reading mode1 form2 sectors or false for - mode1 form1 sectors. - @param i_sectors number of sectors to read - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_mode1_sectors (const CdIo_t *p_cdio, void *buf, lsn_t lsn, - bool b_form2, unsigned int i_sectors); - - /*! - Reads a mode1 sector - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - @param b_form2 true for reading mode1 form2 sectors or false for - mode1 form1 sectors. - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_mode2_sector (const CdIo_t *p_cdio, void *buf, lsn_t lsn, - bool b_form2); - - /*! - Reads mode2 sectors - - @param p_cdio object to read from - @param buf place to read data into - @param lsn sector to read - @param b_form2 true for reading mode1 form2 sectors or false for - mode1 form1 sectors. - @param i_sectors number of sectors to read - - @return 0 if no error, nonzero otherwise. - */ - int cdio_read_mode2_sectors (const CdIo_t *p_cdio, void *buf, lsn_t lsn, - bool b_form2, unsigned int i_sectors); - - /*! - Set the arg "key" with "value" in "obj". - - @param p_cdio the CD object to set - @param key the key to set - @param value the value to assocaiate with key - @return 0 if no error was found, and nonzero otherwise. - */ - int cdio_set_arg (CdIo_t *p_cdio, const char key[], const char value[]); - - /*! - Get the size of the CD in logical block address (LBA) units. - - @param p_cdio the CD object queried - @return the size - */ - uint32_t cdio_stat_size (const CdIo_t *p_cdio); - - /*! - Initialize CD Reading and control routines. Should be called first. - */ - bool cdio_init(void); - - /* True if xxx driver is available. where xxx=linux, solaris, nrg, ... - */ - - /*! True if BSDI driver is available. */ - bool cdio_have_bsdi (void); - - /*! True if FreeBSD driver is available. */ - bool cdio_have_freebsd (void); - - /*! True if GNU/Linux driver is available. */ - bool cdio_have_linux (void); - - /*! True if Sun Solaris driver is available. */ - bool cdio_have_solaris (void); - - /*! True if Apple OSX driver is available. */ - bool cdio_have_osx (void); - - /*! True if Microsoft Windows driver is available. */ - bool cdio_have_win32 (void); - - /*! True if Nero driver is available. */ - bool cdio_have_nrg (void); - - /*! True if BIN/CUE driver is available. */ - bool cdio_have_bincue (void); - - /*! True if cdrdao CDRDAO driver is available. */ - bool cdio_have_cdrdao (void); - - /*! Like cdio_have_xxx but uses an enumeration instead. */ - bool cdio_have_driver (driver_id_t driver_id); - - /*! - Get a string decribing driver_id. - - @param driver_id the driver you want the description for - @return a sring of driver description - */ - const char *cdio_driver_describe (driver_id_t driver_id); - - /*! Sets up to read from place specified by source_name and - driver_id. This or cdio_open_* should be called before using any - other routine, except cdio_init. This will call cdio_init, if - that hasn't been done previously. to call one of the specific - cdio_open_xxx routines. - - @return the cdio object or NULL on error or no device. - */ - CdIo_t * cdio_open (const char *source_name, driver_id_t driver_id); - - /*! Sets up to read from place specified by source_name, driver_id - and access mode. This or cdio_open should be called before using - any other routine, except cdio_init. This will call cdio_init, if - that hasn't been done previously. to call one of the specific - cdio_open_xxx routines. - - @return the cdio object or NULL on error or no device. - */ - CdIo_t * cdio_open_am (const char *psz_source_name, - driver_id_t driver_id, const char *psz_access_mode); - - /*! Set up BIN/CUE CD disk-image for reading. Source is the .bin or - .cue file - - @return the cdio object or NULL on error or no device. - */ - CdIo_t * cdio_open_bincue (const char *psz_cue_name); - - /*! Set up BIN/CUE CD disk-image for reading. Source is the .bin or - .cue file - - @return the cdio object or NULL on error or no device.. - */ - CdIo_t * cdio_open_am_bincue (const char *psz_cue_name, - const char *psz_access_mode); - - /*! Set up cdrdao CD disk-image for reading. Source is the .toc file - - @return the cdio object or NULL on error or no device. - */ - CdIo_t * cdio_open_cdrdao (const char *psz_toc_name); - - /*! Set up cdrdao CD disk-image for reading. Source is the .toc file - - @return the cdio object or NULL on error or no device.. - */ - CdIo_t * cdio_open_am_cdrdao (const char *psz_toc_name, - const char *psz_access_mode); - - /*! Return a string containing the default CUE file that would - be used when none is specified. - - @return the cdio object or NULL on error or no device. - */ - char * cdio_get_default_device_bincue(void); - - char **cdio_get_devices_bincue(void); - - /*! Return a string containing the default CUE file that would - be used when none is specified. - - NULL is returned on error or there is no device. - */ - char * cdio_get_default_device_cdrdao(void); - - char **cdio_get_devices_cdrdao(void); - - /*! Set up CD-ROM for reading. The device_name is - the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no driver for a some sort of hardware CD-ROM. - */ - CdIo_t * cdio_open_cd (const char *device_name); - - /*! Set up CD-ROM for reading. The device_name is - the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no driver for a some sort of hardware CD-ROM. - */ - CdIo_t * cdio_open_am_cd (const char *psz_device, - const char *psz_access_mode); - - /*! CDRWIN BIN/CUE CD disc-image routines. Source is the .cue file - - @return the cdio object for subsequent operations. - NULL on error. - */ - CdIo_t * cdio_open_cue (const char *cue_name); - - /*! Set up CD-ROM for reading using the BSDI driver. The device_name is - the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no BSDI driver. - - @see cdio_open - */ - CdIo_t * cdio_open_bsdi (const char *psz_source_name); - - /*! Set up CD-ROM for reading using the BSDI driver. The device_name is - the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no BSDI driver. - - @see cdio_open - */ - CdIo_t * cdio_open_am_bsdi (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - BSDI driver would use when none is specified. - - @return the cdio object for subsequent operations. - NULL on error or there is no BSDI driver. - - @see cdio_open_cd, cdio_open - */ - char * cdio_get_default_device_bsdi(void); - - /*! Return a list of all of the CD-ROM devices that the BSDI driver - can find. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - char **cdio_get_devices_bsdi(void); - - /*! Set up CD-ROM for reading using the FreeBSD driver. The device_name is - the some sort of device name. - - NULL is returned on error or there is no FreeBSD driver. - - @see cdio_open_cd, cdio_open - */ - CdIo_t * cdio_open_freebsd (const char *paz_source_name); - - /*! Set up CD-ROM for reading using the FreeBSD driver. The device_name is - the some sort of device name. - - NULL is returned on error or there is no FreeBSD driver. - - @see cdio_open_cd, cdio_open - */ - CdIo_t * cdio_open_am_freebsd (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - FreeBSD driver would use when none is specified. - - NULL is returned on error or there is no CD-ROM device. - */ - char * cdio_get_default_device_freebsd(void); - - /*! Return a list of all of the CD-ROM devices that the FreeBSD driver - can find. - */ - char **cdio_get_devices_freebsd(void); - - /*! Set up CD-ROM for reading using the GNU/Linux driver. The device_name is - the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no GNU/Linux driver. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - CdIo_t * cdio_open_linux (const char *source_name); - - /*! Set up CD-ROM for reading using the GNU/Linux driver. The - device_name is the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no GNU/Linux driver. - */ - CdIo_t * cdio_open_am_linux (const char *source_name, - const char *access_mode); - - /*! Return a string containing the default device name that the - GNU/Linux driver would use when none is specified. A scan is made - for CD-ROM drives with CDs in them. - - NULL is returned on error or there is no CD-ROM device. - - In some situations of drivers or OS's we can't find a CD device if - 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. - - @see cdio_open_cd, cdio_open - */ - char * cdio_get_default_device_linux(void); - - /*! Return a list of all of the CD-ROM devices that the GNU/Linux driver - can find. - */ - char **cdio_get_devices_linux(void); - - /*! Set up CD-ROM for reading using the Sun Solaris driver. The - device_name is the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no Solaris driver. - */ - CdIo_t * cdio_open_solaris (const char *source_name); - - /*! Set up CD-ROM for reading using the Sun Solaris driver. The - device_name is the some sort of device name. - - @return the cdio object for subsequent operations. - NULL on error or there is no Solaris driver. - */ - CdIo_t * cdio_open_am_solaris (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - Solaris driver would use when none is specified. A scan is made - for CD-ROM drives with CDs in them. - - NULL is returned on error or there is no CD-ROM device. - - In some situations of drivers or OS's we can't find a CD device if - 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. - - @see cdio_open_cd, cdio_open - */ - char * cdio_get_default_device_solaris(void); - - /*! Return a list of all of the CD-ROM devices that the Solaris driver - can find. - */ - char **cdio_get_devices_solaris(void); - - /*! Set up CD-ROM for reading using the Apple OSX driver. The - device_name is the some sort of device name. - - NULL is returned on error or there is no OSX driver. - - In some situations of drivers or OS's we can't find a CD device if - 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. - - @see cdio_open_cd, cdio_open - */ - CdIo_t * cdio_open_osx (const char *psz_source_name); - - /*! Set up CD-ROM for reading using the Apple OSX driver. The - device_name is the some sort of device name. - - NULL is returned on error or there is no OSX driver. - - @see cdio_open_cd, cdio_open - */ - CdIo_t * cdio_open_am_osx (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - OSX driver would use when none is specified. A scan is made - for CD-ROM drives with CDs in them. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - char * cdio_get_default_device_osx(void); - - /*! Return a list of all of the CD-ROM devices that the OSX driver - can find. - */ - char **cdio_get_devices_osx(void); - - /*! Set up CD-ROM for reading using the Microsoft Windows driver. The - device_name is the some sort of device name. - - In some situations of drivers or OS's we can't find a CD device if - 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. - */ - CdIo_t * cdio_open_win32 (const char *source_name); - - /*! Set up CD-ROM for reading using the Microsoft Windows driver. The - device_name is the some sort of device name. - - NULL is returned on error or there is no Microsof Windows driver. - */ - CdIo_t * cdio_open_am_win32 (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - Win32 driver would use when none is specified. A scan is made - for CD-ROM drives with CDs in them. - - In some situations of drivers or OS's we can't find a CD device if - 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. - - @see cdio_open_cd, cdio_open - */ - char * cdio_get_default_device_win32(void); - - char **cdio_get_devices_win32(void); - - /*! Set up CD-ROM for reading using the Nero driver. The - device_name is the some sort of device name. - - @return true on success; NULL on error or there is no Nero driver. - */ - CdIo_t * cdio_open_nrg (const char *source_name); - - /*! Set up CD-ROM for reading using the Nero driver. The - device_name is the some sort of device name. - - @return true on success; NULL on error or there is no Nero driver. - */ - CdIo_t * cdio_open_am_nrg (const char *psz_source_name, - const char *psz_access_mode); - - /*! Return a string containing the default device name that the - NRG driver would use when none is specified. A scan is made - for NRG disk images in the current directory.. - - NULL is returned on error or there is no CD-ROM device. - */ - char * cdio_get_default_device_nrg(void); - - char **cdio_get_devices_nrg(void); - - /*! - - Determine if bin_name is the bin file part of a CDRWIN CD disk image. - - @param bin_name location of presumed CDRWIN bin image file. - @return the corresponding CUE file if bin_name is a BIN file or - NULL if not a BIN file. - */ - char *cdio_is_binfile(const char *bin_name); - - /*! - Determine if cue_name is the cue sheet for a CDRWIN CD disk image. - - @return corresponding BIN file if cue_name is a CDRWIN cue file or - NULL if not a CUE file. - */ - char *cdio_is_cuefile(const char *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 cdio_is_nrg(const char *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 cdio_is_tocfile(const char *psz_toc); - - /*! - Determine if source_name refers to a real hardware CD-ROM. - - @param source_name location name of object - @param driver_id driver for reading object. Use DRIVER_UNKNOWN if you - don't know what driver to use. - @return true if source_name is a device; If false is returned we - could have a CD disk image. - */ - bool cdio_is_device(const char *source_name, driver_id_t driver_id); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __CDIO_H__ */ diff --git a/src/input/vcd/libcdio/cdio/cdtext.h b/src/input/vcd/libcdio/cdio/cdtext.h deleted file mode 100644 index 4b397a3ff..000000000 --- a/src/input/vcd/libcdio/cdio/cdtext.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - $Id: cdtext.h,v 1.1 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> - adapted from cuetools - Copyright (C) 2003 Svend Sanjay Sorensen <ssorensen@fastmail.fm> - - 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 -*/ -/*! - * \file cdtext.h - * \brief Header CD-Text information -*/ - - -#ifndef __CDIO_CDTEXT_H__ -#define __CDIO_CDTEXT_H__ - -#include <cdio/cdio.h> - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define MAX_CDTEXT_FIELDS 13 - - /*! \brief structure for holding CD-Text information - - @see cdtext_init, cdtext_destroy, cdtext_get, and cdtext_set. - */ - struct cdtext { - char *field[MAX_CDTEXT_FIELDS]; - }; - - /*! \brief A list of all of the CD-Text fields */ - typedef enum { - CDTEXT_ARRANGER = 0, /**< name(s) of the arranger(s) */ - CDTEXT_COMPOSER = 1, /**< name(s) of the composer(s) */ - CDTEXT_DISCID = 2, /**< disc identification information */ - CDTEXT_GENRE = 3, /**< genre identification and genre information */ - CDTEXT_MESSAGE = 4, /**< ISRC code of each track */ - CDTEXT_ISRC = 5, /**< message(s) from the content provider or artist */ - CDTEXT_PERFORMER = 6, /**< name(s) of the performer(s) */ - CDTEXT_SIZE_INFO = 7, /**< size information of the block */ - CDTEXT_SONGWRITER = 8, /**< name(s) of the songwriter(s) */ - CDTEXT_TITLE = 9, /**< title of album name or track titles */ - CDTEXT_TOC_INFO = 10, /**< table of contents information */ - CDTEXT_TOC_INFO2 = 11, /**< second table of contents information */ - CDTEXT_UPC_EAN = 12, - CDTEXT_INVALID = MAX_CDTEXT_FIELDS - } cdtext_field_t; - - /*! Return string representation of the enum values above */ - const char *cdtext_field2str (cdtext_field_t i); - - /*! Initialize a new cdtext structure. - When the structure is no longer needed, release the - resources using cdtext_delete. - */ - void cdtext_init (cdtext_t *cdtext); - - /*! Free memory assocated with cdtext*/ - void cdtext_destroy (cdtext_t *cdtext); - - /*! returns the string associated with the given field. NULL is - returned if key is CDTEXT_INVALID or the field is not set. - - @see cdio_get_cdtext to retrieve the cdtext structure used as - input here. - */ - const char *cdtext_get (cdtext_field_t key, const cdtext_t *cdtext); - - /*! - returns enum of keyword if key is a CD-Text keyword, - returns MAX_CDTEXT_FIELDS non-zero otherwise. - */ - cdtext_field_t cdtext_is_keyword (const char *key); - - /*! - sets cdtext's keyword entry to field - */ - void cdtext_set (cdtext_field_t key, const char *value, cdtext_t *cdtext); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __CDIO_CDTEXT_H__ */ - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/ds.h b/src/input/vcd/libcdio/cdio/ds.h deleted file mode 100644 index c811cadd4..000000000 --- a/src/input/vcd/libcdio/cdio/ds.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - $Id: ds.h,v 1.1 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - - 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 -*/ - -#ifndef __CDIO_DS_H__ -#define __CDIO_DS_H__ - -#include <cdio/types.h> - -/* opaque... */ -typedef struct _CdioList CdioList; -typedef struct _CdioListNode CdioListNode; - -typedef int (*_cdio_list_cmp_func) (void *data1, void *data2); - -typedef int (*_cdio_list_iterfunc) (void *data, void *user_data); - -/* methods */ -CdioList *_cdio_list_new (void); - -void _cdio_list_free (CdioList *list, int free_data); - -unsigned _cdio_list_length (const CdioList *list); - -void _cdio_list_prepend (CdioList *list, void *data); - -void _cdio_list_append (CdioList *list, void *data); - -void _cdio_list_foreach (CdioList *list, _cdio_list_iterfunc func, void *user_data); - -CdioListNode *_cdio_list_find (CdioList *list, _cdio_list_iterfunc cmp_func, void *user_data); - -#define _CDIO_LIST_FOREACH(node, list) \ - for (node = _cdio_list_begin (list); node; node = _cdio_list_node_next (node)) - -/* node ops */ - -CdioListNode *_cdio_list_begin (const CdioList *list); - -CdioListNode *_cdio_list_end (CdioList *list); - -CdioListNode *_cdio_list_node_next (CdioListNode *node); - -void _cdio_list_node_free (CdioListNode *node, int free_data); - -void *_cdio_list_node_data (CdioListNode *node); - -#endif /* __CDIO_DS_H__ */ - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ - diff --git a/src/input/vcd/libcdio/cdio/dvd.h b/src/input/vcd/libcdio/cdio/dvd.h deleted file mode 100644 index df58c4322..000000000 --- a/src/input/vcd/libcdio/cdio/dvd.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - $Id: dvd.h,v 1.1 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> - Modeled after GNU/Linux definitions in linux/cdrom.h - - 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 -*/ - -/*! - \file dvd.h - \brief Definitions for DVD access. -*/ - -#ifndef __CDIO_DVD_H__ -#define __CDIO_DVD_H__ - -#include <cdio/types.h> - -/*! Values used in a READ DVD STRUCTURE */ - -#define CDIO_DVD_STRUCT_PHYSICAL 0x00 -#define CDIO_DVD_STRUCT_COPYRIGHT 0x01 -#define CDIO_DVD_STRUCT_DISCKEY 0x02 -#define CDIO_DVD_STRUCT_BCA 0x03 -#define CDIO_DVD_STRUCT_MANUFACT 0x04 - -/*! Media definitions for "Book Type" */ -#define CDIO_DVD_BOOK_DVD_ROM 0 -#define CDIO_DVD_BOOK_DVD_RAM 1 -#define CDIO_DVD_BOOK_DVD_R 2 /**< DVD-R */ -#define CDIO_DVD_BOOK_DVD_RW 3 /**< DVD-RW */ -#define CDIO_DVD_BOOK_DVD_PR 8 /**< DVD+R */ -#define CDIO_DVD_BOOK_DVD_PRW 9 /**< DVD+RW */ - -typedef struct cdio_dvd_layer { - uint8_t book_version : 4; - uint8_t book_type : 4; - uint8_t min_rate : 4; - uint8_t disc_size : 4; - uint8_t layer_type : 4; - uint8_t track_path : 1; - uint8_t nlayers : 2; - uint8_t track_density : 4; - uint8_t linear_density: 4; - uint8_t bca : 1; - uint32_t start_sector; - uint32_t end_sector; - uint32_t end_sector_l0; -} cdio_dvd_layer_t; - -/*! Maximum number of layers in a DVD. */ -#define CDIO_DVD_MAX_LAYERS 4 - -typedef struct cdio_dvd_physical { - uint8_t type; - uint8_t layer_num; - cdio_dvd_layer_t layer[CDIO_DVD_MAX_LAYERS]; -} cdio_dvd_physical_t; - -typedef struct cdio_dvd_copyright { - uint8_t type; - - uint8_t layer_num; - uint8_t cpst; - uint8_t rmi; -} cdio_dvd_copyright_t; - -typedef struct cdio_dvd_disckey { - uint8_t type; - - unsigned agid : 2; - uint8_t value[2048]; -} cdio_dvd_disckey_t; - -typedef struct cdio_dvd_bca { - uint8_t type; - - int len; - uint8_t value[188]; -} cdio_dvd_bca_t; - -typedef struct cdio_dvd_manufact { - uint8_t type; - - uint8_t layer_num; - int len; - uint8_t value[2048]; -} cdio_dvd_manufact_t; - -typedef union { - uint8_t type; - - cdio_dvd_physical_t physical; - cdio_dvd_copyright_t copyright; - cdio_dvd_disckey_t disckey; - cdio_dvd_bca_t bca; - cdio_dvd_manufact_t manufact; -} cdio_dvd_struct_t; - -#endif /* __SCSI_MMC_H__ */ diff --git a/src/input/vcd/libcdio/cdio/iso9660.h b/src/input/vcd/libcdio/cdio/iso9660.h deleted file mode 100644 index 104b6ba62..000000000 --- a/src/input/vcd/libcdio/cdio/iso9660.h +++ /dev/null @@ -1,786 +0,0 @@ -/* - $Id: iso9660.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> - - See also iso9660.h by Eric Youngdale (1993). - - Copyright 1993 Yggdrasil Computing, Incorporated - Copyright (c) 1999,2000 J. Schilling - - 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 -*/ -/*! - * \file iso9660.h - * \brief Header for libiso9660: the ISO-9660 filesystem library. -*/ - - -#ifndef __CDIO_ISO9660_H__ -#define __CDIO_ISO9660_H__ - -#include <cdio/cdio.h> -#include <cdio/ds.h> -#include <cdio/xa.h> - -#include <time.h> - -#define _delta(from, to) ((to) - (from) + 1) - -#define MIN_TRACK_SIZE 4*75 -#define MIN_ISO_SIZE MIN_TRACK_SIZE - -/*! - An ISO filename is: "abcde.eee;1" -> <filename> '.' <ext> ';' <version #> - - For ISO-9660 Level 1, the maximum needed string length is: - -\verbatim - 30 chars (filename + ext) - + 2 chars ('.' + ';') - + 5 chars (strlen("32767")) - + 1 null byte - ================================ - = 38 chars -\endverbatim -*/ - -/*! size in bytes of the filename portion + null byte */ -#define LEN_ISONAME 31 - -/*! Max # characters in the entire ISO 9660 filename. */ -#define MAX_ISONAME 37 - -/*! Max # characters in the entire ISO 9660 filename. */ -#define MAX_ISOPATHNAME 255 - -/*! Max # characters in an perparer id. */ -#define ISO_MAX_PREPARER_ID 128 - -/*! Max # characters in an publisher id. */ -#define ISO_MAX_PUBLISHER_ID 128 - -/*! Max # characters in an application id. */ -#define ISO_MAX_APPLICATION_ID 128 - -/*! Max # characters in an system id. */ -#define ISO_MAX_SYSTEM_ID 32 - -/*! Max # characters in an volume id. */ -#define ISO_MAX_VOLUME_ID 32 - -/*! Max # characters in an volume-set id. */ -#define ISO_MAX_VOLUMESET_ID 128 - -/**! ISO 9660 directory flags. */ -#define ISO_FILE 0 /**< Not really a flag... */ -#define ISO_EXISTENCE 1 /**< Do not make existence known (hidden) */ -#define ISO_DIRECTORY 2 /**< This file is a directory */ -#define ISO_ASSOCIATED 4 /**< This file is an associated file */ -#define ISO_RECORD 8 /**< Record format in extended attr. != 0 */ -#define ISO_PROTECTION 16 /**< No read/execute perm. in ext. attr. */ -#define ISO_DRESERVED1 32 /**< Reserved bit 5 */ -#define ISO_DRESERVED2 64 /**< Reserved bit 6 */ -#define ISO_MULTIEXTENT 128 /**< Not final entry of a mult. ext. file */ - -/**! Volume descriptor types */ -#define ISO_VD_PRIMARY 1 -#define ISO_VD_SUPPLEMENTARY 2 /**< Used by Joliet */ -#define ISO_VD_END 255 - -/*! Sector of Primary Volume Descriptor */ -#define ISO_PVD_SECTOR 16 - -/*! Sector of End Volume Descriptor */ -#define ISO_EVD_SECTOR 17 - -/*! String inside track identifying an ISO 9660 filesystem. */ -#define ISO_STANDARD_ID "CD001" - - -/*! Number of bytes in an ISO 9660 block */ -#define ISO_BLOCKSIZE 2048 - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -enum strncpy_pad_check { - ISO9660_NOCHECK = 0, - ISO9660_7BIT, - ISO9660_ACHARS, - ISO9660_DCHARS -}; - -#ifndef EMPTY_ARRAY_SIZE -#define EMPTY_ARRAY_SIZE 0 -#endif - -PRAGMA_BEGIN_PACKED - -/*! - \brief ISO-9660 shorter-format time structure. - - @see iso9660_dtime - */ -struct iso9660_dtime { - uint8_t dt_year; - uint8_t dt_month; /**< Has value in range 1..12. Note starts - at 1, not 0 like a tm struct. */ - uint8_t dt_day; - uint8_t dt_hour; - uint8_t dt_minute; - uint8_t dt_second; - int8_t dt_gmtoff; /**< GMT values -48 .. + 52 in 15 minute - intervals */ -} GNUC_PACKED; - -typedef struct iso9660_dtime iso9660_dtime_t; - -/*! - \brief ISO-9660 longer-format time structure. - - @see iso9660_ltime - */ -struct iso9660_ltime { - char lt_year [_delta( 1, 4)]; /**< Add 1900 to value - for the Julian - year */ - char lt_month [_delta( 5, 6)]; /**< Has value in range - 1..12. Note starts - at 1, not 0 like a - tm struct. */ - char lt_day [_delta( 7, 8)]; - char lt_hour [_delta( 9, 10)]; - char lt_minute [_delta( 11, 12)]; - char lt_second [_delta( 13, 14)]; - char lt_hsecond [_delta( 15, 16)]; /**<! The value is in - units of 1/100's of - a second */ - int8_t lt_gmtoff [_delta( 17, 17)]; -} GNUC_PACKED; - -typedef struct iso9660_ltime iso9660_ltime_t; - -/*! \brief Format of an ISO-9660 directory record - - This structure may have an odd length depending on how many - characters there are in the filename! Some compilers (e.g. on - Sun3/mc68020) pad the structures to an even length. For this reason, - we cannot use sizeof (struct iso_path_table) or sizeof (struct - iso_directory_record) to compute on disk sizes. Instead, we use - offsetof(..., name) and add the name size. See mkisofs.h of the - cdrtools package. - - @see iso9660_stat -*/ -struct iso9660_dir { - uint8_t length; /*! 711 encoded */ - uint8_t xa_length; /*! 711 encoded */ - uint64_t extent; /*! 733 encoded */ - uint64_t size; /*! 733 encoded */ - iso9660_dtime_t recording_time; /*! 7 711-encoded units */ - uint8_t file_flags; - uint8_t file_unit_size; /*! 711 encoded */ - uint8_t interleave_gap; /*! 711 encoded */ - uint32_t volume_sequence_number; /*! 723 encoded */ - uint8_t filename_len; /*! 711 encoded */ - char filename[EMPTY_ARRAY_SIZE]; -} GNUC_PACKED; - -typedef struct iso9660_dir iso9660_dir_t; - -/*! - \brief ISO-9660 Primary Volume Descriptor. - */ -struct iso9660_pvd { - uint8_t type; /**< 711 encoded */ - char id[5]; - uint8_t version; /**< 711 encoded */ - char unused1[1]; - char system_id[ISO_MAX_SYSTEM_ID]; /**< each char is an achar */ - char volume_id[ISO_MAX_VOLUME_ID]; /**< each char is a dchar */ - char unused2[8]; - uint64_t volume_space_size; /**< 733 encoded */ - char unused3[32]; - uint32_t volume_set_size; /**< 723 encoded */ - uint32_t volume_sequence_number; /**< 723 encoded */ - uint32_t logical_block_size; /**< 723 encoded */ - uint64_t path_table_size; /**< 733 encoded */ - uint32_t type_l_path_table; /**< 731 encoded */ - uint32_t opt_type_l_path_table; /**< 731 encoded */ - uint32_t type_m_path_table; /**< 732 encoded */ - uint32_t opt_type_m_path_table; /**< 732 encoded */ - iso9660_dir_t root_directory_record; /**< See section 9.1 of - ISO 9660 spec. */ - char root_directory_filename; /**< Is \0 */ - char volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< dchars */ - char publisher_id[ISO_MAX_PUBLISHER_ID]; /**< achars */ - char preparer_id[ISO_MAX_PREPARER_ID]; /**< achars */ - char application_id[ISO_MAX_APPLICATION_ID]; /**< achars */ - char copyright_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar */ - char abstract_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar */ - char bibliographic_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar. */ - iso9660_ltime_t creation_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t modification_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t expiration_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t effective_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - uint8_t file_structure_version; /**< 711 encoded */ - char unused4[1]; - char application_data[512]; - char unused5[653]; -} GNUC_PACKED; - -typedef struct iso9660_pvd iso9660_pvd_t; - -/*! - \brief ISO-9660 Supplementary Volume Descriptor. - - This is used for Joliet Extentions and is almost the same as the - the primary descriptor but two unused fields, "unused1" and "unused3 - become "flags and "escape_sequences" respectively. -*/ -struct iso9660_svd { - uint8_t type; /**< 711 encoded */ - char id[5]; - uint8_t version; /**< 711 encoded */ - char flags; /**< 853 */ - char system_id[ISO_MAX_SYSTEM_ID]; /**< each char is an achar */ - char volume_id[ISO_MAX_VOLUME_ID]; /**< each char is a dchar */ - char unused2[8]; - uint64_t volume_space_size; /**< 733 encoded */ - char escape_sequences[32]; /**< 856 */ - uint32_t volume_set_size; /**< 723 encoded */ - uint32_t volume_sequence_number; /**< 723 encoded */ - uint32_t logical_block_size; /**< 723 encoded */ - uint64_t path_table_size; /**< 733 encoded */ - uint32_t type_l_path_table; /**< 731 encoded */ - uint32_t opt_type_l_path_table; /**< 731 encoded */ - uint32_t type_m_path_table; /**< 732 encoded */ - uint32_t opt_type_m_path_table; /**< 732 encoded */ - iso9660_dir_t root_directory_record; /**< See section 9.1 of - ISO 9660 spec. */ - char volume_set_id[ISO_MAX_VOLUMESET_ID]; /**< dchars */ - char publisher_id[ISO_MAX_PUBLISHER_ID]; /**< achars */ - char preparer_id[ISO_MAX_PREPARER_ID]; /**< achars */ - char application_id[ISO_MAX_APPLICATION_ID]; /**< achars */ - char copyright_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar */ - char abstract_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar */ - char bibliographic_file_id[37]; /**< See section 7.5 of - ISO 9660 spec. Each char is - a dchar. */ - iso9660_ltime_t creation_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t modification_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t expiration_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - iso9660_ltime_t effective_date; /**< See section 8.4.26.1 of - ISO 9660 spec. */ - uint8_t file_structure_version; /**< 711 encoded */ - char unused4[1]; - char application_data[512]; - char unused5[653]; -} GNUC_PACKED; - -typedef struct iso9660_svd iso9660_svd_t; - -PRAGMA_END_PACKED - -/*! \brief Unix stat-like version of iso9660_dir - - The iso9660_stat structure is not part of the ISO-9660 - specification. We use it for our to communicate information - in a C-library friendly way, e.g struct tm time structures and - a C-style filename string. - - @see iso9660_dir -*/ -struct iso9660_stat { /* big endian!! */ - struct tm tm; /**< time on entry */ - lsn_t lsn; /**< start logical sector number */ - uint32_t size; /**< total size in bytes */ - uint32_t secsize; /**< number of sectors allocated */ - iso9660_xa_t xa; /**< XA attributes */ - enum { _STAT_FILE = 1, _STAT_DIR = 2 } type; - char filename[EMPTY_ARRAY_SIZE]; /**< filename */ -}; - -typedef struct iso9660_stat iso9660_stat_t; - - -/** A mask used in iso9660_ifs_read_vd which allows what kinds - of extensions we allow, eg. Joliet, Rock Ridge, etc. */ -typedef uint8_t iso_extension_mask_t; - -#define ISO_EXTENSION_JOLIET_LEVEL1 0x01 -#define ISO_EXTENSION_JOLIET_LEVEL2 0x02 -#define ISO_EXTENSION_JOLIET_LEVEL3 0x04 -#define ISO_EXTENSION_ROCK_RIDGE 0x08 -#define ISO_EXTENSION_HIGH_SIERRA 0x10 - -#define ISO_EXTENSION_ALL 0xFF -#define ISO_EXTENSION_NONE 0x00 -#define ISO_EXTENSION_JOLIET \ - (ISO_EXTENSION_JOLIET_LEVEL1 | \ - ISO_EXTENSION_JOLIET_LEVEL2 | \ - ISO_EXTENSION_JOLIET_LEVEL3 ) - - -/** This is an opaque structure. */ -typedef struct _iso9660 iso9660_t; - -/*! - Open an ISO 9660 image for reading. Maybe in the future we will have - a mode. NULL is returned on error. -*/ - iso9660_t *iso9660_open (const char *psz_pathname /*flags, mode */); - -/*! - Open an ISO 9660 image for reading allowing various ISO 9660 - extensions. Maybe in the future we will have a mode. NULL is - returned on error. -*/ - iso9660_t *iso9660_open_ext (const char *psz_pathname, - iso_extension_mask_t iso_extension_mask); - -/*! - Close previously opened ISO 9660 image. - True is unconditionally returned. If there was an error false would - be returned. -*/ - bool iso9660_close (iso9660_t * p_iso); - - -/*! - Seek to a position and then read n bytes. Size read is returned. -*/ - long int iso9660_iso_seek_read (const iso9660_t *p_iso, void *ptr, - lsn_t start, long int i_size); - -/*! - 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 ( const CdIo *p_cdio, - /*out*/ iso9660_pvd_t *p_pvd ); - -/*! - Read the Primary Volume Descriptor for an ISO 9660 image. - True is returned if read, and false if there was an error. -*/ - bool iso9660_ifs_read_pvd (const iso9660_t *p_iso, - /*out*/ iso9660_pvd_t *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 (CdIo *p_cdio, - iso_extension_mask_t iso_extension_mask); - -/*! - Read the Supper 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_ifs_read_superblock (iso9660_t *p_iso, - iso_extension_mask_t iso_extension_mask); - - -/*==================================================== - Time conversion - ====================================================*/ -/*! - Set time in format used in ISO 9660 directory index record - from a Unix time structure. */ - void iso9660_set_dtime (const struct tm *tm, - /*out*/ iso9660_dtime_t *idr_date); - - -/*! - Set "long" time in format used in ISO 9660 primary volume descriptor - from a Unix time structure. */ - void iso9660_set_ltime (const struct tm *_tm, - /*out*/ iso9660_ltime_t *p_pvd_date); - -/*! - Get Unix time structure from format use in an ISO 9660 directory index - record. Even though tm_wday and tm_yday fields are not explicitly in - idr_date, they are calculated from the other fields. - - If tm is to reflect the localtime, set "use_localtime" true, otherwise - tm will reported in GMT. -*/ - void iso9660_get_dtime (const iso9660_dtime_t *idr_date, bool use_localtime, - /*out*/ struct tm *tm); - - -/*==================================================== - Characters used in file and directory and manipulation - ====================================================*/ -/*! - Return true if c is a DCHAR - a character that can appear in an an - 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); - -/*! - 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); - -/*! - Convert ISO-9660 file name that stored in a 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. - - The length of the translated string is returned. -*/ -int iso9660_name_translate(const char *psz_oldname, char *psz_newname); - -/*! - Convert ISO-9660 file name that stored in a directory entry into - what's usually listed as the file name in a listing. Lowercase - name if not using Joliet extension. Remove trailing ;1's or .;1's and - turn the other ;'s into version numbers. - - The length of the translated string is returned. -*/ -int iso9660_name_translate_ext(const char *old, char *new, - uint8_t i_joliet_level); - -/*! - Pad string src with spaces to size len and copy this to dst. If - len is less than the length of src, dst will be truncated to the - first len characters of src. - - src can also be scanned to see if it contains only ACHARs, DCHARs, - 7-bit ASCII chars depending on the enumeration _check. - - In addition to getting changed, dst is the return value. - Note: this string might not be NULL terminated. - */ -char *iso9660_strncpy_pad(char dst[], const char src[], size_t len, - enum strncpy_pad_check _check); - -/*===================================================================== - file/dirname's -======================================================================*/ - -/*! - Check that pathname is a valid ISO-9660 directory name. - - A valid directory name should not start out with a slash (/), - dot (.) or null byte, should be less than 37 characters long, - have no more than 8 characters in a directory component - which is separated by a /, and consist of only DCHARs. - - True is returned if pathname is valid. - */ -bool iso9660_dirname_valid_p (const char pathname[]); - -/*! - Take pathname and a version number and turn that into a ISO-9660 - pathname. (That's just the pathname followd by ";" and the version - number. For example, mydir/file.ext -> MYDIR/FILE.EXT;1 for version - 1. The resulting ISO-9660 pathname is returned. -*/ -char *iso9660_pathname_isofy (const char pathname[], uint16_t i_version); - -/*! - Check that pathname is a valid ISO-9660 pathname. - - A valid pathname contains a valid directory name, if one appears and - the filename portion should be no more than 8 characters for the - file prefix and 3 characters in the extension (or portion after a - dot). There should be exactly one dot somewhere in the filename - portion and the filename should be composed of only DCHARs. - - True is returned if pathname is valid. - */ -bool iso9660_pathname_valid_p (const char pathname[]); - -/*===================================================================== - directory tree -======================================================================*/ - -void -iso9660_dir_init_new (void *dir, uint32_t self, uint32_t ssize, - uint32_t parent, uint32_t psize, - const time_t *dir_time); - -void -iso9660_dir_init_new_su (void *dir, uint32_t self, uint32_t ssize, - const void *ssu_data, unsigned int ssu_size, - uint32_t parent, uint32_t psize, - const void *psu_data, unsigned int psu_size, - const time_t *dir_time); - -void -iso9660_dir_add_entry_su (void *dir, const char filename[], uint32_t extent, - uint32_t size, uint8_t file_flags, - const void *su_data, - unsigned int su_size, const time_t *entry_time); - -unsigned int -iso9660_dir_calc_record_size (unsigned int namelen, unsigned int su_len); - -/*! - Given a directory pointer, find the filesystem entry that contains - lsn and return information about it. - - Returns stat_t of entry if we found lsn, or NULL otherwise. - */ -iso9660_stat_t *iso9660_find_fs_lsn(CdIo *p_cdio, lsn_t i_lsn); - - -/*! - Given a directory pointer, find the filesystem entry that contains - lsn and return information about it. - - Returns stat_t of entry if we found lsn, or NULL otherwise. - */ -iso9660_stat_t *iso9660_find_ifs_lsn(const iso9660_t *p_iso, lsn_t i_lsn); - - -/*! - Get file status for pathname into stat. NULL is returned on error. - */ -iso9660_stat_t *iso9660_fs_stat (CdIo *p_cdio, const char pathname[]); - - -/*! - Get file status for pathname into stat. NULL is returned on error. - pathname version numbers in the ISO 9660 - name are dropped, i.e. ;1 is removed and if level 1 ISO-9660 names - are lowercased. - */ -iso9660_stat_t *iso9660_fs_stat_translate (CdIo *p_cdio, - const char pathname[], - bool b_mode2); - -/*! - Get file status for pathname into stat. NULL is returned on error. - */ -iso9660_stat_t *iso9660_ifs_stat (iso9660_t *p_iso, const char pathname[]); - - -/*! - Get file status for pathname into stat. NULL is returned on error. - pathname version numbers in the ISO 9660 - name are dropped, i.e. ;1 is removed and if level 1 ISO-9660 names - are lowercased. - */ -iso9660_stat_t *iso9660_ifs_stat_translate (iso9660_t *p_iso, - const char pathname[]); - -/*! - Read pathname (a directory) and return a list of iso9660_stat_t - of the files inside that. The caller must free the returned result. -*/ -CdioList * iso9660_fs_readdir (CdIo *p_cdio, const char pathname[], - bool b_mode2); - -/*! - Read pathname (a directory) and return a list of iso9660_stat_t - of the files inside that. The caller must free the returned result. -*/ -CdioList * iso9660_ifs_readdir (iso9660_t *p_iso, const char pathname[]); - -/*! - Return the PVD's application ID. - NULL is returned if there is some problem in getting this. -*/ -char * iso9660_get_application_id(iso9660_pvd_t *p_pvd); - -/*! - 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(iso9660_t *p_iso, - /*out*/ char **p_psz_app_id); - -/*! - Return the Joliet level recognized for p_iso. -*/ -uint8_t iso9660_ifs_get_joliet_level(iso9660_t *p_iso); - -uint8_t iso9660_get_dir_len(const iso9660_dir_t *p_idr); - -#if FIXME -uint8_t iso9660_get_dir_size(const iso9660_dir_t *p_idr); - -lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr); -#endif - -/*! - Return the directory name stored in the iso9660_dir_t - - A string is allocated: the caller must deallocate. -*/ -char * iso9660_dir_to_name (const iso9660_dir_t *p_iso9660_dir); - -/*! - Return a string containing the preparer id with trailing - blanks removed. -*/ -char *iso9660_get_preparer_id(const iso9660_pvd_t *p_pvd); - -/*! - 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(iso9660_t *p_iso, - /*out*/ char **p_psz_preparer_id); - -/*! - Return a string containing the PVD's publisher id with trailing - blanks removed. -*/ -char *iso9660_get_publisher_id(const iso9660_pvd_t *p_pvd); - -/*! - 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(iso9660_t *p_iso, - /*out*/ char **p_psz_publisher_id); - -uint8_t iso9660_get_pvd_type(const iso9660_pvd_t *p_pvd); - -const char * iso9660_get_pvd_id(const iso9660_pvd_t *p_pvd); - -int iso9660_get_pvd_space_size(const iso9660_pvd_t *p_pvd); - -int iso9660_get_pvd_block_size(const iso9660_pvd_t *p_pvd) ; - -/*! Return the primary volume id version number (of pvd). - If there is an error 0 is returned. - */ -int iso9660_get_pvd_version(const iso9660_pvd_t *pvd) ; - -/*! - Return a string containing the PVD's system id with trailing - blanks removed. -*/ -char *iso9660_get_system_id(const iso9660_pvd_t *p_pvd); - -/*! - 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(iso9660_t *p_iso, - /*out*/ char **p_psz_system_id); - - -/*! Return the LSN of the root directory for pvd. - If there is an error CDIO_INVALID_LSN is returned. - */ -lsn_t iso9660_get_root_lsn(const iso9660_pvd_t *p_pvd); - -/*! - Return the PVD's volume ID. -*/ -char *iso9660_get_volume_id(const iso9660_pvd_t *p_pvd); - -/*! - 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_volume_id(iso9660_t *p_iso, - /*out*/ char **p_psz_volume_id); - -/*! - Return the PVD's volumeset ID. - NULL is returned if there is some problem in getting this. -*/ -char *iso9660_get_volumeset_id(const iso9660_pvd_t *p_pvd); - -/*! - Get the systemset ID. psz_systemset_id is set to NULL if there - is some problem in getting this and false is returned. -*/ -bool iso9660_ifs_get_volumeset_id(iso9660_t *p_iso, - /*out*/ char **p_psz_volumeset_id); - -/* pathtable */ - -/*! Zero's out pathable. Do this first. */ -void iso9660_pathtable_init (void *pt); - -unsigned int iso9660_pathtable_get_size (const void *pt); - -uint16_t -iso9660_pathtable_l_add_entry (void *pt, const char name[], uint32_t extent, - uint16_t parent); - -uint16_t -iso9660_pathtable_m_add_entry (void *pt, const char name[], uint32_t extent, - uint16_t parent); - -/*===================================================================== - Volume Descriptors -======================================================================*/ - -void -iso9660_set_pvd (void *pd, const char volume_id[], const char application_id[], - const char publisher_id[], const char preparer_id[], - uint32_t iso_size, const void *root_dir, - uint32_t path_table_l_extent, uint32_t path_table_m_extent, - uint32_t path_table_size, const time_t *pvd_time); - -void -iso9660_set_evd (void *pd); - -/*! - Return true if ISO 9660 image has extended attrributes (XA). -*/ -bool iso9660_ifs_is_xa (const iso9660_t * p_iso); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __CDIO_ISO9660_H__ */ - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/logging.h b/src/input/vcd/libcdio/cdio/logging.h deleted file mode 100644 index 8c78259ea..000000000 --- a/src/input/vcd/libcdio/cdio/logging.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - $Id: logging.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000, Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2003, 2004 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 -*/ - -/** \file logging.h - * \brief Header to control logging and level of detail of output. - * - */ - -#ifndef __LOGGING_H__ -#define __LOGGING_H__ - -#include <cdio/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * The different log levels supported. - */ -typedef enum { - CDIO_LOG_DEBUG = 1, /**< Debug-level messages - helps debug what's up. */ - CDIO_LOG_INFO, /**< Informational - indicates perhaps something of - interest. */ - CDIO_LOG_WARN, /**< Warning conditions - something that looks funny. */ - CDIO_LOG_ERROR, /**< Error conditions - may terminate program. */ - CDIO_LOG_ASSERT /**< Critical conditions - may abort program. */ -} cdio_log_level_t; - -/** - * The place to save the preference concerning how much verbosity - * is desired. This is used by the internal default log handler, but - * it could be use by applications which provide their own log handler. - */ -extern cdio_log_level_t cdio_loglevel_default; - -/** - * This type defines the signature of a log handler. For every - * message being logged, the handler will receive the log level and - * the message string. - * - * @see cdio_log_set_handler - * @see cdio_log_level_t - * - * @param level The log level. - * @param message The log message. - */ -typedef void (*cdio_log_handler_t) (cdio_log_level_t level, - const char message[]); - -/** - * Set a custom log handler for libcdio. The return value is the log - * handler being replaced. If the provided parameter is NULL, then - * the handler will be reset to the default handler. - * - * @see cdio_log_handler_t - * - * @param new_handler The new log handler. - * @return The previous log handler. - */ -cdio_log_handler_t cdio_log_set_handler (cdio_log_handler_t new_handler); - -/** - * Handle an message with the given log level. - * - * @see cdio_debug - * @see cdio_info - * @see cdio_warn - * @see cdio_error - - * @param level The log level. - * @param format printf-style format string - * @param ... remaining arguments needed by format string - */ -void cdio_log (cdio_log_level_t level, - const char format[], ...) GNUC_PRINTF(2, 3); - -/** - * Handle a debugging message. - * - * @see cdio_log for a more generic routine - */ -void cdio_debug (const char format[], ...) GNUC_PRINTF(1,2); - -/** - * Handle an informative message. - * - * @see cdio_log for a more generic routine - */ -void cdio_info (const char format[], ...) GNUC_PRINTF(1,2); - -/** - * Handle a warning message. - * - * @see cdio_log for a more generic routine - */ -void cdio_warn (const char format[], ...) GNUC_PRINTF(1,2); - -/** - * Handle an error message. Execution is terminated. - * - * @see cdio_log for a more generic routine. - */ -void cdio_error (const char format[], ...) GNUC_PRINTF(1,2); - -#ifdef __cplusplus -} -#endif - -#endif /* __LOGGING_H__ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/scsi_mmc.h b/src/input/vcd/libcdio/cdio/scsi_mmc.h deleted file mode 100644 index 12860247e..000000000 --- a/src/input/vcd/libcdio/cdio/scsi_mmc.h +++ /dev/null @@ -1,415 +0,0 @@ -/* - $Id: scsi_mmc.h,v 1.1 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2003, 2004 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 -*/ - -/*! - \file scsi_mmc.h - \brief Common definitions for SCSI MMC (Multi-Media Commands). -*/ - -#ifndef __SCSI_MMC_H__ -#define __SCSI_MMC_H__ - -#include <cdio/cdio.h> -#include <cdio/types.h> -#include <cdio/dvd.h> - -/*! The generic packet command opcodes for CD/DVD Logical Units. */ - -#define CDIO_MMC_GPCMD_INQUIRY 0x12 -#define CDIO_MMC_GPCMD_MODE_SELECT_6 0x15 -#define CDIO_MMC_GPCMD_MODE_SENSE 0x1a -#define CDIO_MMC_GPCMD_START_STOP 0x1b -#define CDIO_MMC_GPCMD_ALLOW_MEDIUM_REMOVAL 0x1e -#define CDIO_MMC_GPCMD_READ_10 0x28 - -/*! - Group 2 Commands - */ -#define CDIO_MMC_GPCMD_READ_SUBCHANNEL 0x42 -#define CDIO_MMC_GPCMD_READ_TOC 0x43 -#define CDIO_MMC_GPCMD_READ_HEADER 0x44 -#define CDIO_MMC_GPCMD_PLAY_AUDIO_10 0x45 -#define CDIO_MMC_GPCMD_GET_CONFIGURATION 0x46 -#define CDIO_MMC_GPCMD_PLAY_AUDIO_MSF 0x47 -#define CDIO_MMC_GPCMD_PLAY_AUDIO_TI 0x48 -#define CDIO_MMC_GPCMD_PLAY_TRACK_REL_10 0x49 -#define CDIO_MMC_GPCMD_PAUSE_RESUME 0x4b - -#define CDIO_MMC_GPCMD_READ_DISC_INFO 0x51 -#define CDIO_MMC_GPCMD_MODE_SELECT 0x55 -#define CDIO_MMC_GPCMD_MODE_SENSE_10 0x5a - -/*! - Group 5 Commands - */ -#define CDIO_MMC_GPCMD_PLAY_AUDIO_12 0xa5 -#define CDIO_MMC_GPCMD_READ_12 0xa8 -#define CDIO_MMC_GPCMD_PLAY_TRACK_REL_12 0xa9 -#define CDIO_MMC_GPCMD_READ_DVD_STRUCTURE 0xad -#define CDIO_MMC_GPCMD_READ_CD 0xbe -#define CDIO_MMC_GPCMD_READ_MSF 0xb9 - -/*! - Group 6 Commands - */ - -#define CDIO_MMC_GPCMD_CD_PLAYBACK_STATUS 0xc4 /**< SONY unique command */ -#define CDIO_MMC_GPCMD_PLAYBACK_CONTROL 0xc9 /**< SONY unique command */ -#define CDIO_MMC_GPCMD_READ_CDDA 0xd8 /**< Vendor unique command */ -#define CDIO_MMC_GPCMD_READ_CDXA 0xdb /**< Vendor unique command */ -#define CDIO_MMC_GPCMD_READ_ALL_SUBCODES 0xdf /**< Vendor unique command */ - - - -/*! Level values that can go into READ_CD */ -#define CDIO_MMC_READ_TYPE_ANY 0 /**< All types */ -#define CDIO_MMC_READ_TYPE_CDDA 1 /**< Only CD-DA sectors */ -#define CDIO_MMC_READ_TYPE_MODE1 2 /**< mode1 sectors (user data = 2048) */ -#define CDIO_MMC_READ_TYPE_MODE2 3 /**< mode2 sectors form1 or form2 */ -#define CDIO_MMC_READ_TYPE_M2F1 4 /**< mode2 sectors form1 */ -#define CDIO_MMC_READ_TYPE_M2F2 5 /**< mode2 sectors form2 */ - -/*! Format values for READ_TOC */ -#define CDIO_MMC_READTOC_FMT_TOC 0 -#define CDIO_MMC_READTOC_FMT_SESSION 1 -#define CDIO_MMC_READTOC_FMT_FULTOC 2 -#define CDIO_MMC_READTOC_FMT_PMA 3 /**< Q subcode data */ -#define CDIO_MMC_READTOC_FMT_ATIP 4 /**< includes media type */ -#define CDIO_MMC_READTOC_FMT_CDTEXT 5 /**< CD-TEXT info */ - -/*! Page codes for MODE SENSE and MODE SET. */ -#define CDIO_MMC_R_W_ERROR_PAGE 0x01 -#define CDIO_MMC_WRITE_PARMS_PAGE 0x05 -#define CDIO_MMC_AUDIO_CTL_PAGE 0x0e -#define CDIO_MMC_CDR_PARMS_PAGE 0x0d -#define CDIO_MMC_POWER_PAGE 0x1a -#define CDIO_MMC_FAULT_FAIL_PAGE 0x1c -#define CDIO_MMC_TO_PROTECT_PAGE 0x1d -#define CDIO_MMC_CAPABILITIES_PAGE 0x2a -#define CDIO_MMC_ALL_PAGES 0x3f - -/*! Return type codes for GET_CONFIGURATION. */ -#define CDIO_MMC_GET_CONF_ALL_FEATURES 0 /**< all features without regard - to currency. */ -#define CDIO_MMC_GET_CONF_CURRENT_FEATURES 1 /**< features which are currently - in effect (e.g. based on - medium inserted). */ -#define CDIO_MMC_GET_CONF_NAMED_FEATURE 2 /**< just the feature named in - the GET_CONFIGURATION - cdb. */ - -/*! FEATURE codes used in GET CONFIGURATION. */ - -#define CDIO_MMC_FEATURE_PROFILE_LIST 0x000 /**< Profile List Feature */ -#define CDIO_MMC_FEATURE_CORE 0x001 -#define CDIO_MMC_FEATURE_REMOVABLE_MEDIUM 0x002 /**< Removable Medium - Feature */ -#define CDIO_MMC_FEATURE_WRITE_PROTECT 0x003 /**< Write Protect - Feature */ -#define CDIO_MMC_FEATURE_RANDOM_READABLE 0x010 /**< Random Readable - Feature */ -#define CDIO_MMC_FEATURE_MULTI_READ 0x01D /**< Multi-Read - Feature */ -#define CDIO_MMC_FEATURE_CD_READ 0x01E /**< CD Read - Feature */ -#define CDIO_MMC_FEATURE_DVD_READ 0x01F /**< DVD Read - Feature */ -#define CDIO_MMC_FEATURE_RANDOM_WRITABLE 0x020 /**< Random Writable - Feature */ -#define CDIO_MMC_FEATURE_INCR_WRITE 0x021 /**< Incremental - Streaming Writable - Feature */ -#define CDIO_MMC_FEATURE_SECTOR_ERASE 0x022 /**< Sector Erasable - Feature */ -#define CDIO_MMC_FEATURE_FORMATABLE 0x023 /**< Formattable - Feature */ -#define CDIO_MMC_FEATURE_DEFECT_MGMT 0x024 /**< Management - Ability of the - Logical Unit/media - system to provide - an apparently - defect-free - space.*/ -#define CDIO_MMC_FEATURE_WRITE_ONCE 0x025 /**< Write Once - Feature */ -#define CDIO_MMC_FEATURE_RESTRICT_OVERW 0x026 /**< Restricted - Overwrite - Feature */ -#define CDIO_MMC_FEATURE_CD_RW_CAV 0x027 /**< CD-RW CAV Write - Feature */ -#define CDIO_MMC_FEATURE_MRW 0x028 /**< MRW Feature */ -#define CDIO_MMC_FEATURE_DVD_PRW 0x02A /**< DVD+RW Feature */ -#define CDIO_MMC_FEATURE_DVD_PR 0x02B /**< DVD+R Feature */ -#define CDIO_MMC_FEATURE_CD_TAO 0x02D -#define CDIO_MMC_FEATURE_CD_SAO 0x02E -#define CDIO_MMC_FEATURE_POWER_MGMT 0x100 /**< Initiator and - device directed - power management */ -#define CDIO_MMC_FEATURE_CDDA_EXT_PLAY 0x103 /**< Ability to play - audio CDs via the - Logical Unit s own - analog output */ -#define CDIO_MMC_FEATURE_MCODE_UPGRADE 0x104 /* Ability for the - device to accept - new microcode via - the interface */ -#define CDIO_MMC_FEATURE_TIME_OUT 0x105 /**< Ability to - respond to all - commands within a - specific time */ -#define CDIO_MMC_FEATURE_DVD_CSS 0x106 /**< Ability to - perform DVD - CSS/CPPM - authentication and - RPC */ -#define CDIO_MMC_FEATURE_RT_STREAMING 0x107 /**< Ability to read - and write using - Initiator requested - performance - parameters - */ -#define CDIO_MMC_FEATURE_LU_SN 0x108 /**< The Logical Unit - has a unique - identifier. */ -#define CDIO_MMC_FEATURE_FIRMWARE_DATE 0x1FF /**< Firmware creation - date report */ - -/*! Profile codes used in GET_CONFIGURATION - PROFILE LIST. */ -#define CDIO_MMC_FEATURE_PROF_NON_REMOVABLE 0x0001 /**< Re-writable - disk, capable of - changing - behavior */ -#define CDIO_MMC_FEATURE_PROF_REMOVABLE 0x0002 /**< disk - Re-writable; - with removable - media */ -#define CDIO_MMC_FEATURE_PROF_MO_ERASABLE 0x0003 /**< Erasable - Magneto-Optical - disk with sector - erase - capability */ -#define CDIO_MMC_FEATURE_PROF_MO_WRITE_ONCE 0x0004 /**< Write Once - Magneto-Optical - write once */ -#define CDIO_MMC_FEATURE_PROF_AS_MO 0x0005 /**< Advance - Storage - Magneto-Optical */ -#define CDIO_MMC_FEATURE_PROF_CD_ROM 0x0008 /**< Read only - Compact Disc - capable */ -#define CDIO_MMC_FEATURE_PROF_CD_R 0x0009 /**< Write once - Compact Disc - capable */ -#define CDIO_MMC_FEATURE_PROF_CD_RW 0x000A /**< CD-RW - Re-writable - Compact Disc - capable */ -#define CDIO_MMC_FEATURE_PROF_DVD_ROM 0x0010 /**< Read only - DVD */ -#define CDIO_MMC_FEATURE_PROF_DVD_R_SEQ 0x0011 /**< Re-recordable - DVD using - Sequential - recording */ -#define CDIO_MMC_FEATURE_PROF_DVD_RAM 0x0012 /**< Re-writable - DVD */ -#define CDIO_MMC_FEATURE_PROF_DVD_RW_RO 0x0013 /**< Re-recordable - DVD using - Restricted - Overwrite */ -#define CDIO_MMC_FEATURE_PROF_DVD_RW_SEQ 0x0014 /**< Re-recordable - DVD using - Sequential - recording */ -#define CDIO_MMC_FEATURE_PROF_DVD_PRW 0x001A /**< DVD+RW - DVD - ReWritable */ -#define CDIO_MMC_FEATURE_PROF_DVD_PR 0x001B /**< DVD+R - DVD - Recordable */ -#define CDIO_MMC_FEATURE_PROF_DDCD_ROM 0x0020 /**< Read only - DDCD */ -#define CDIO_MMC_FEATURE_PROF_DDCD_R 0x0021 /**< DDCD-R Write - only DDCD */ -#define CDIO_MMC_FEATURE_PROF_DDCD_RW 0x0022 /**< Re-Write only - DDCD */ -#define CDIO_MMC_FEATURE_PROF_NON_CONFORM 0xFFFF /**< The Logical - Unit does not - conform to any - Profile. */ - -/*! This is listed as optional in ATAPI 2.6, but is (curiously) - missing from Mt. Fuji, Table 57. It _is_ mentioned in Mt. Fuji - Table 377 as an MMC command for SCSi devices though... Most ATAPI - drives support it. */ -#define CDIO_MMC_GPCMD_SET_SPEED 0xbb - - -/*! The largest Command Descriptor Buffer (CDB) size. - The possible sizes are 6, 10, and 12 bytes. - */ -#define MAX_CDB_LEN 12 - -/*! \brief A Command Descriptor Buffer (CDB) used in sending SCSI MMC - commands. - */ -typedef struct scsi_mmc_cdb { - uint8_t field[MAX_CDB_LEN]; -} scsi_mmc_cdb_t; - -/*! \brief Format of header block in data returned from a SCSI-MMC - GET_CONFIGURATION command. - */ -typedef struct scsi_mmc_feature_list_header { - unsigned char length_msb; - unsigned char length_1sb; - unsigned char length_2sb; - unsigned char length_lsb; - unsigned char reserved1; - unsigned char reserved2; - unsigned char profile_msb; - unsigned char profile_lsb; -} scs_mmc_feature_list_header_t; - -/*! An enumeration indicating whether a SCSI MMC command is sending - data or getting data. - */ -typedef enum scsi_mmc_direction { - SCSI_MMC_DATA_READ, - SCSI_MMC_DATA_WRITE -} scsi_mmc_direction_t; - -#define CDIO_MMC_SET_COMMAND(cdb, command) \ - cdb[0] = command - -#define CDIO_MMC_SET_READ_TYPE(cdb, sector_type) \ - cdb[1] = (sector_type << 2) - -#define CDIO_MMC_GET_LEN16(p) \ - (p[0]<<8) + p[1] - -#define CDIO_MMC_GET_LEN32(p) \ - (p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3]; - -#define CDIO_MMC_SET_LEN16(cdb, pos, len) \ - cdb[pos ] = (len >> 8) & 0xff; \ - cdb[pos+1] = (len ) & 0xff - -#define CDIO_MMC_SET_READ_LBA(cdb, lba) \ - cdb[2] = (lba >> 24) & 0xff; \ - cdb[3] = (lba >> 16) & 0xff; \ - cdb[4] = (lba >> 8) & 0xff; \ - cdb[5] = (lba ) & 0xff - -#define CDIO_MMC_SET_START_TRACK(cdb, command) \ - cdb[6] = command - -#define CDIO_MMC_SET_READ_LENGTH24(cdb, len) \ - cdb[6] = (len >> 16) & 0xff; \ - cdb[7] = (len >> 8) & 0xff; \ - cdb[8] = (len ) & 0xff - -#define CDIO_MMC_SET_READ_LENGTH16(cdb, len) \ - CDIO_MMC_SET_LEN16(cdb, 7, len) - -#define CDIO_MMC_SET_READ_LENGTH8(cdb, len) \ - cdb[8] = (len ) & 0xff - -#define CDIO_MMC_MCSB_ALL_HEADERS 0x78 - -#define CDIO_MMC_SET_MAIN_CHANNEL_SELECTION_BITS(cdb, val) \ - cdb[9] = val; - -/*! - Return the number of length in bytes of the Command Descriptor - buffer (CDB) for a given SCSI MMC command. The length will be - either 6, 10, or 12. -*/ -uint8_t scsi_mmc_get_cmd_len(uint8_t scsi_cmd); - - -/*! - Run a SCSI MMC command. - - cdio CD structure set by cdio_open(). - i_timeout_ms time in milliseconds we will wait for the command - to complete. - p_cdb CDB bytes. All values that are needed should be set on - input. We'll figure out what the right CDB length should be. - e_direction direction the transfer is to go. - i_buf Size of buffer - p_buf Buffer for data, both sending and receiving. - - Returns 0 if command completed successfully. - */ -int scsi_mmc_run_cmd( const CdIo *p_cdio, unsigned int i_timeout_ms, - const scsi_mmc_cdb_t *p_cdb, - scsi_mmc_direction_t e_direction, unsigned int i_buf, - /*in/out*/ void *p_buf ); - -/*! - * Eject using SCSI MMC commands. Return 0 if successful. - */ -int scsi_mmc_eject_media( const CdIo *p_cdio); - -/*! Packet driver to read mode2 sectors. - Can read only up to 25 blocks. -*/ -int scsi_mmc_read_sectors ( const CdIo *p_cdio, void *p_buf, lba_t lba, - int sector_type, unsigned int nblocks); - -/*! - Set the block size for subsequest read requests, via a SCSI MMC - MODE_SELECT 6 command. - */ -int scsi_mmc_set_blocksize ( const CdIo *p_cdio, unsigned int bsize); - -/*! - Return the the kind of drive capabilities of device. - */ -void scsi_mmc_get_drive_cap (const CdIo *p_cdio, - /*out*/ cdio_drive_read_cap_t *p_read_cap, - /*out*/ cdio_drive_write_cap_t *p_write_cap, - /*out*/ cdio_drive_misc_cap_t *p_misc_cap); - -/*! - Get the DVD type associated with cd object. -*/ -discmode_t scsi_mmc_get_dvd_struct_physical ( const CdIo *p_cdio, - cdio_dvd_struct_t *s); - -/*! - Get the CD-ROM hardware info via a SCSI MMC INQUIRY command. - False is returned if we had an error getting the information. -*/ -bool scsi_mmc_get_hwinfo ( const CdIo *p_cdio, - /* out*/ cdio_hwinfo_t *p_hw_info ); - - -/*! - Get the media catalog number (MCN) from the CD via MMC. - - @return the media catalog number r NULL if there is none or we - don't have the ability to get it. - - Note: string is malloc'd so caller has to free() the returned - string when done with it. - -*/ -char *scsi_mmc_get_mcn ( const CdIo *p_cdio ); - -#endif /* __SCSI_MMC_H__ */ diff --git a/src/input/vcd/libcdio/cdio/sector.h b/src/input/vcd/libcdio/cdio/sector.h deleted file mode 100644 index 826883aea..000000000 --- a/src/input/vcd/libcdio/cdio/sector.h +++ /dev/null @@ -1,326 +0,0 @@ -/* - $Id: sector.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2003, 2004 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 -*/ -/*! - \file sector.h - \brief Things related to CD-ROM layout: tracks, sector sizes, MSFs, LBAs. - - A CD-ROM physical sector size is 2048, 2052, 2056, 2324, 2332, 2336, - 2340, or 2352 bytes long. - - Sector types of the standard CD-ROM data formats: - -\verbatim - format sector type user data size (bytes) - ----------------------------------------------------------------------------- - 1 (Red Book) CD-DA 2352 (CDIO_CD_FRAMESIZE_RAW) - 2 (Yellow Book) Mode1 Form1 2048 (CDIO_CD_FRAMESIZE) - 3 (Yellow Book) Mode1 Form2 2336 (M2RAW_SECTOR_SIZE) - 4 (Green Book) Mode2 Form1 2048 (CDIO_CD_FRAMESIZE) - 5 (Green Book) Mode2 Form2 2328 (2324+4 spare bytes) - - - The layout of the standard CD-ROM data formats: - ----------------------------------------------------------------------------- - - audio (red): | audio_sample_bytes | - | 2352 | - - - data (yellow, mode1): | sync - head - data - EDC - zero - ECC | - | 12 - 4 - 2048 - 4 - 8 - 276 | - - - data (yellow, mode2): | sync - head - data | - | 12 - 4 - 2336 | - - - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC | - | 12 - 4 - 8 - 2048 - 4 - 276 | - - - XA data (green, mode2 form2): | sync - head - sub - data - Spare | - | 12 - 4 - 8 - 2324 - 4 | -\endverbatim - - -*/ - -#ifndef _CDIO_SECTOR_H_ -#define _CDIO_SECTOR_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -#include <cdio/types.h> - -/*! track modes (Table 350) - reference: MMC-3 draft revsion - 10g -*/ -typedef enum { - AUDIO, /**< 2352 byte block length */ - MODE1, /**< 2048 byte block length */ - MODE1_RAW, /**< 2352 byte block length */ - MODE2, /**< 2336 byte block length */ - MODE2_FORM1, /**< 2048 byte block length */ - MODE2_FORM2, /**< 2324 byte block length */ - MODE2_FORM_MIX, /**< 2336 byte block length */ - MODE2_RAW /**< 2352 byte block length */ -} trackmode_t; - -/*! disc modes. The first combined from MMC-3 5.29.2.8 (Send CUESHEET) - and GNU/Linux /usr/include/linux/cdrom.h and we've added DVD. - */ -typedef enum { - CDIO_DISC_MODE_CD_DA, /**< CD-DA */ - CDIO_DISC_MODE_CD_DATA, /**< CD-ROM form 1 */ - CDIO_DISC_MODE_CD_XA, /**< CD-ROM XA form2 */ - CDIO_DISC_MODE_CD_MIXED, /**< Some combo of above. */ - CDIO_DISC_MODE_DVD_ROM, /**< DVD ROM (e.g. movies) */ - CDIO_DISC_MODE_DVD_RAM, /**< DVD-RAM */ - CDIO_DISC_MODE_DVD_R, /**< DVD-R */ - CDIO_DISC_MODE_DVD_RW, /**< DVD-RW */ - CDIO_DISC_MODE_DVD_PR, /**< DVD+R */ - CDIO_DISC_MODE_DVD_PRW, /**< DVD+RW */ - CDIO_DISC_MODE_DVD_OTHER, /**< Unknown/unclassified DVD type */ - CDIO_DISC_MODE_NO_INFO, - CDIO_DISC_MODE_ERROR -} discmode_t; - -/*! Information that can be obtained through a Read Subchannel - command. - */ -#define CDIO_SUBCHANNEL_SUBQ_DATA 0 -#define CDIO_SUBCHANNEL_CURRENT_POSITION 1 -#define CDIO_SUBCHANNEL_MEDIA_CATALOG 2 -#define CDIO_SUBCHANNEL_TRACK_ISRC 3 - -/*! track flags - * Q Sub-channel Control Field (4.2.3.3) - */ -typedef enum { - NONE = 0x00, /* no flags set */ - PRE_EMPHASIS = 0x01, /* audio track recorded with pre-emphasis */ - COPY_PERMITTED = 0x02, /* digital copy permitted */ - DATA = 0x04, /* data track */ - FOUR_CHANNEL_AUDIO = 0x08, /* 4 audio channels */ - SCMS = 0x10 /* SCMS (5.29.2.7) */ -} flag_t; - -#define CDIO_PREGAP_SECTORS 150 -#define CDIO_POSTGAP_SECTORS 150 - -/* - Some generally useful CD-ROM information -- mostly based on the above. - This is from linux.h - not to slight other OS's. This was the first - place I came across such useful stuff. -*/ -#define CDIO_CD_MINS 74 /**< max. minutes per CD, not really - a limit */ -#define CDIO_CD_SECS_PER_MIN 60 /**< seconds per minute */ -#define CDIO_CD_FRAMES_PER_SEC 75 /**< frames per second */ -#define CDIO_CD_SYNC_SIZE 12 /**< 12 sync bytes per raw data frame */ -#define CDIO_CD_CHUNK_SIZE 24 /**< lowest-level "data bytes piece" */ -#define CDIO_CD_NUM_OF_CHUNKS 98 /**< chunks per frame */ -#define CDIO_CD_FRAMESIZE_SUB 96 /**< subchannel data "frame" size */ -#define CDIO_CD_HEADER_SIZE 4 /**< header (address) bytes per raw - data frame */ -#define CDIO_CD_SUBHEADER_SIZE 8 /**< subheader bytes per raw XA data - frame */ -#define CDIO_CD_EDC_SIZE 4 /**< bytes EDC per most raw data - frame types */ -#define CDIO_CD_M1F1_ZERO_SIZE 8 /**< bytes zero per yellow book mode - 1 frame */ -#define CDIO_CD_ECC_SIZE 276 /**< bytes ECC per most raw data frame - types */ -#define CDIO_CD_FRAMESIZE 2048 /**< bytes per frame, "cooked" mode */ -#define CDIO_CD_FRAMESIZE_RAW 2352 /**< bytes per frame, "raw" mode */ -#define CDIO_CD_FRAMESIZE_RAWER 2646 /**< The maximum possible returned - bytes */ -#define CDIO_CD_FRAMESIZE_RAW1 (CDIO_CD_CD_FRAMESIZE_RAW-CDIO_CD_SYNC_SIZE) /*2340*/ -#define CDIO_CD_FRAMESIZE_RAW0 (CDIO_CD_FRAMESIZE_RAW-CDIO_CD_SYNC_SIZE-CDIO_CD__HEAD_SIZE) /*2336*/ - -/*! "before data" part of raw XA (green, mode2) frame */ -#define CDIO_CD_XA_HEADER (CDIO_CD_HEADER_SIZE+CDIO_CD_SUBHEADER_SIZE) - -/*! "after data" part of raw XA (green, mode2 form1) frame */ -#define CDIO_CD_XA_TAIL (CDIO_CD_EDC_SIZE+CDIO_CD_ECC_SIZE) - -/*! "before data" sync bytes + header of XA (green, mode2) frame */ -#define CDIO_CD_XA_SYNC_HEADER (CDIO_CD_SYNC_SIZE+CDIO_CD_XA_HEADER) - -/*! CD-ROM address types (GNU/Linux e.g. cdrom_tocentry.cdte_format) */ -#define CDIO_CDROM_LBA 0x01 /**< "logical block": first frame is #0 */ -#define CDIO_CDROM_MSF 0x02 /**< "minute-second-frame": binary, not - BCD here! */ - -/*! CD-ROM track format types (GNU/Linux cdte_ctrl) */ -#define CDIO_CDROM_DATA_TRACK 0x04 -#define CDIO_CDROM_CDI_TRACK 0x10 -#define CDIO_CDROM_XA_TRACK 0x20 - -/*! The leadout track is always 0xAA, regardless of # of tracks on - disc, or what value may be used internally. For example although - OS X uses a different value for the lead-out track internally than - given below, programmers should use CDIO_CDROM_LEADOUT_TRACK and - not worry about this. - */ -#define CDIO_CDROM_LEADOUT_TRACK 0xAA - -#define M2F2_SECTOR_SIZE 2324 -#define M2SUB_SECTOR_SIZE 2332 -#define M2RAW_SECTOR_SIZE 2336 - -/*! Largest CD track number */ -#define CDIO_CD_MAX_TRACKS 99 -/*! Smallest CD track number */ -#define CDIO_CD_MIN_TRACK_NO 1 - -/*! Largest CD session number */ -#define CDIO_CD_MAX_SESSIONS 99 -/*! Smallest CD session number */ -#define CDIO_CD_MIN_SESSION_NO 1 - -/*! Largest LSN in a CD */ -#define CDIO_CD_MAX_LSN 450150 -/*! Smallest LSN in a CD */ -#define CDIO_CD_MIN_LSN -450150 - - -#define CDIO_CD_FRAMES_PER_MIN \ - (CDIO_CD_FRAMES_PER_SEC*CDIO_CD_SECS_PER_MIN) - -#define CDIO_CD_74MIN_SECTORS (UINT32_C(74)*CDIO_CD_FRAMES_PER_MIN) -#define CDIO_CD_80MIN_SECTORS (UINT32_C(80)*CDIO_CD_FRAMES_PER_MIN) -#define CDIO_CD_90MIN_SECTORS (UINT32_C(90)*CDIO_CD_FRAMES_PER_MIN) - -#define CDIO_CD_MAX_SECTORS \ - (UINT32_C(100)*CDIO_CD_FRAMES_PER_MIN-CDIO_PREGAP_SECTORS) - -#define msf_t_SIZEOF 3 - -/*! - Convert an LBA into a string representation of the MSF. - \warning cdio_lba_to_msf_str returns new allocated string */ -char *cdio_lba_to_msf_str (lba_t lba); - -/*! - Convert an MSF into a string representation of the MSF. - \warning cdio_msf_to_msf_str returns new allocated string */ -char *cdio_msf_to_str (const msf_t *msf); - -/*! - Convert an LBA into the corresponding LSN. -*/ -lba_t cdio_lba_to_lsn (lba_t lba); - -/*! - Convert an LBA into the corresponding MSF. -*/ -void cdio_lba_to_msf(lba_t lba, msf_t *msf); - -/*! - Convert an LSN into the corresponding LBA. - CDIO_INVALID_LBA is returned if there is an error. -*/ -lba_t cdio_lsn_to_lba (lsn_t lsn); - -/*! - Convert an LSN into the corresponding MSF. -*/ -void cdio_lsn_to_msf (lsn_t lsn, msf_t *msf); - -/*! - Convert a MSF into the corresponding LBA. - CDIO_INVALID_LBA is returned if there is an error. -*/ -lba_t cdio_msf_to_lba (const msf_t *msf); - -/*! - Convert a MSF into the corresponding LSN. - CDIO_INVALID_LSN is returned if there is an error. -*/ -lsn_t cdio_msf_to_lsn (const msf_t *msf); - -/*! - Convert a MSF - broken out as 3 integer components into the - corresponding LBA. - CDIO_INVALID_LBA is returned if there is an error. -*/ -lba_t cdio_msf3_to_lba (unsigned int minutes, unsigned int seconds, - unsigned int frames); - -/*! - Convert a string of the form MM:SS:FF into the corresponding LBA. - CDIO_INVALID_LBA is returned if there is an error. -*/ -lba_t cdio_mmssff_to_lba (const char *psz_mmssff); - -/*! - Return true if discmode is some sort of CD. -*/ -bool cdio_is_discmode_cdrom (discmode_t discmode); - -/*! - Return true if discmode is some sort of DVD. -*/ -bool cdio_is_discmode_dvd (discmode_t discmode); - - -#ifdef __cplusplus - } -#endif - -static inline bool discmode_is_cd(discmode_t discmode) -{ - switch (discmode) { - case CDIO_DISC_MODE_CD_DA: - case CDIO_DISC_MODE_CD_DATA: - case CDIO_DISC_MODE_CD_XA: - case CDIO_DISC_MODE_CD_MIXED: - return true; - default: - return false; - } -} - -static inline bool discmode_is_dvd(discmode_t discmode) -{ - switch (discmode) { - case CDIO_DISC_MODE_DVD_ROM: - case CDIO_DISC_MODE_DVD_RAM: - case CDIO_DISC_MODE_DVD_R: - case CDIO_DISC_MODE_DVD_RW: - case CDIO_DISC_MODE_DVD_PR: - case CDIO_DISC_MODE_DVD_PRW: - case CDIO_DISC_MODE_DVD_OTHER: - return true; - default: - return false; - } -} - - -#endif /* _CDIO_SECTOR_H_ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/types.h b/src/input/vcd/libcdio/cdio/types.h deleted file mode 100644 index ec84a142b..000000000 --- a/src/input/vcd/libcdio/cdio/types.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - $Id: types.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2002, 2003, 2004 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 -*/ - -/** \file types.h - * \brief Common type definitions used pervasively in libcdio. - */ - - -#ifndef __CDIO_TYPES_H__ -#define __CDIO_TYPES_H__ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - /* provide some C99 definitions */ - -#if defined(HAVE_SYS_TYPES_H) -#include <sys/types.h> -#endif - -#if defined(HAVE_STDINT_H) -# include <stdint.h> -#elif defined(HAVE_INTTYPES_H) -# include <inttypes.h> -#elif defined(AMIGA) || defined(__linux__) - typedef u_int8_t uint8_t; - typedef u_int16_t uint16_t; - typedef u_int32_t uint32_t; - typedef u_int64_t uint64_t; -#else - /* warning ISO/IEC 9899:1999 <stdint.h> was missing and even <inttypes.h> */ - /* fixme */ -#endif /* HAVE_STDINT_H */ - - /* default HP/UX macros are broken */ -#if defined(__hpux__) -# undef UINT16_C -# undef UINT32_C -# undef UINT64_C -# undef INT64_C -#endif - - /* if it's still not defined, take a good guess... should work for - most 32bit and 64bit archs */ - -#ifndef UINT16_C -# define UINT16_C(c) c ## U -#endif - -#ifndef UINT32_C -# if defined (SIZEOF_INT) && SIZEOF_INT == 4 -# define UINT32_C(c) c ## U -# elif defined (SIZEOF_LONG) && SIZEOF_LONG == 4 -# define UINT32_C(c) c ## UL -# else -# define UINT32_C(c) c ## U -# endif -#endif - -#ifndef UINT64_C -# if defined (SIZEOF_LONG) && SIZEOF_LONG == 8 -# define UINT64_C(c) c ## UL -# elif defined (SIZEOF_INT) && SIZEOF_INT == 8 -# define UINT64_C(c) c ## U -# else -# define UINT64_C(c) c ## ULL -# endif -#endif - -#ifndef INT64_C -# if defined (SIZEOF_LONG) && SIZEOF_LONG == 8 -# define INT64_C(c) c ## L -# elif defined (SIZEOF_INT) && SIZEOF_INT == 8 -# define INT64_C(c) c -# else -# define INT64_C(c) c ## LL -# endif -#endif - -#if defined(HAVE_STDBOOL_H) -#include <stdbool.h> -#else - /* ISO/IEC 9899:1999 <stdbool.h> missing -- enabling workaround */ - -# ifndef __cplusplus - typedef enum - { - false = 0, - true = 1 - } _cdio_Bool; - -# define false false -# define true true -# define bool _cdio_Bool -# endif -#endif - - /* some GCC optimizations -- gcc 2.5+ */ - -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) -#define GNUC_PRINTF( format_idx, arg_idx ) \ - __attribute__((format (printf, format_idx, arg_idx))) -#define GNUC_SCANF( format_idx, arg_idx ) \ - __attribute__((format (scanf, format_idx, arg_idx))) -#define GNUC_FORMAT( arg_idx ) \ - __attribute__((format_arg (arg_idx))) -#define GNUC_NORETURN \ - __attribute__((noreturn)) -#define GNUC_CONST \ - __attribute__((const)) -#define GNUC_UNUSED \ - __attribute__((unused)) -#define GNUC_PACKED \ - __attribute__((packed)) -#else /* !__GNUC__ */ -#define GNUC_PRINTF( format_idx, arg_idx ) -#define GNUC_SCANF( format_idx, arg_idx ) -#define GNUC_FORMAT( arg_idx ) -#define GNUC_NORETURN -#define GNUC_CONST -#define GNUC_UNUSED -#define GNUC_PACKED -#endif /* !__GNUC__ */ - -#if defined(__GNUC__) - /* for GCC we try to use GNUC_PACKED */ -# define PRAGMA_BEGIN_PACKED -# define PRAGMA_END_PACKED -#elif defined(HAVE_ISOC99_PRAGMA) - /* should work with most EDG-frontend based compilers */ -# define PRAGMA_BEGIN_PACKED _Pragma("pack(1)") -# define PRAGMA_END_PACKED _Pragma("pack()") -#else /* neither gcc nor _Pragma() available... */ - /* ...so let's be naive and hope the regression testsuite is run... */ -# define PRAGMA_BEGIN_PACKED -# define PRAGMA_END_PACKED -#endif - - /* - * user directed static branch prediction gcc 2.96+ - */ -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 95) -# define GNUC_LIKELY(x) __builtin_expect((x),true) -# define GNUC_UNLIKELY(x) __builtin_expect((x),false) -#else -# define GNUC_LIKELY(x) (x) -# define GNUC_UNLIKELY(x) (x) -#endif - -#ifndef NULL -# define NULL ((void*) 0) -#endif - - /* our own offsetof()-like macro */ -#define __cd_offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) - - /*! - \brief MSF (minute/second/frame) structure - - One CD-ROMs addressing scheme especially used in audio formats - (Red Book) is an address by minute, sector and frame which - BCD-encoded in three bytes. An alternative format is an lba_t. - - @see lba_t - */ - PRAGMA_BEGIN_PACKED - struct msf_rec { - uint8_t m, s, f; - } GNUC_PACKED; - PRAGMA_END_PACKED - - typedef struct msf_rec msf_t; - -#define msf_t_SIZEOF 3 - - /* type used for bit-fields in structs (1 <= bits <= 8) */ -#if defined(__GNUC__) - /* this is strict ISO C99 which allows only 'unsigned int', 'signed - int' and '_Bool' explicitly as bit-field type */ - typedef unsigned int bitfield_t; -#else - /* other compilers might increase alignment requirements to match the - 'unsigned int' type -- fixme: find out how unalignment accesses can - be pragma'ed on non-gcc compilers */ - typedef uint8_t bitfield_t; -#endif - - /*! The type of a Logical Block Address. We allow for an lba to be - negative to be consistent with an lba, although I'm not sure this - this is possible. - - */ - typedef int32_t lba_t; - - /*! The type of a Logical Sector Number. Note that an lba lsn be negative - and the MMC3 specs allow for a conversion of a negative lba - - @see msf_t - */ - typedef int32_t lsn_t; - - /*! The type of a track number 0..99. */ - typedef uint8_t track_t; - - /*! - Constant for invalid track number - */ -#define CDIO_INVALID_TRACK 0xFF - - /*! The type of a session number 0..99. */ - typedef uint8_t session_t; - - /*! - Constant for invalid session number - */ -#define CDIO_INVALID_SESSION 0xFF - - /*! - Constant for invalid LBA. It is 151 less than the most negative - LBA -45150. This provide slack for the 150-frame offset in - LBA to LSN 150 conversions - */ -#define CDIO_INVALID_LBA -45301 - - /*! - Constant for invalid LSN - */ -#define CDIO_INVALID_LSN CDIO_INVALID_LBA - - /*! - Number of ASCII bytes in a media catalog number (MCN). - */ -#define CDIO_MCN_SIZE 13 - - /*! - Type to hold ASCII bytes in a media catalog number (MCN). - We include an extra 0 byte so these can be used as C strings. - */ - typedef char cdio_mcn_t[CDIO_MCN_SIZE+1]; - - - /*! - Number of ASCII bytes in International Standard Recording Codes (ISRC) - */ -#define CDIO_ISRC_SIZE 12 - - /*! - Type to hold ASCII bytes in a media catalog number (MCN). - We include an extra 0 byte so these can be used as C strings. - */ - typedef char cdio_isrc_t[CDIO_ISRC_SIZE+1]; - - typedef int cdio_fs_anal_t; - - /*! The type of an drive capability bit mask. See below for values*/ - typedef uint32_t cdio_drive_read_cap_t; - typedef uint32_t cdio_drive_write_cap_t; - typedef uint32_t cdio_drive_misc_cap_t; - - /*! - \brief Drive types returned by cdio_get_drive_cap() - - NOTE: Setting a bit here means the presence of a capability. - */ - -#define CDIO_DRIVE_CAP_ERROR 0x40000 /**< Error */ -#define CDIO_DRIVE_CAP_UNKNOWN 0x80000 /**< Dunno. It can be on if we - have only partial information - or are not completely certain - */ - -#define CDIO_DRIVE_CAP_MISC_CLOSE_TRAY 0x00001 /**< caddy systems can't - close... */ -#define CDIO_DRIVE_CAP_MISC_EJECT 0x00002 /**< but can eject. */ -#define CDIO_DRIVE_CAP_MISC_LOCK 0x00004 /**< disable manual eject */ -#define CDIO_DRIVE_CAP_MISC_SELECT_SPEED 0x00008 /**< programmable speed */ -#define CDIO_DRIVE_CAP_MISC_SELECT_DISC 0x00010 /**< select disc from - juke-box */ -#define CDIO_DRIVE_CAP_MISC_MULTI_SESSION 0x00020 /**< read sessions>1 */ -#define CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED 0x00080 /**< media changed */ -#define CDIO_DRIVE_CAP_MISC_RESET 0x00100 /**< hard reset device */ -#define CDIO_DRIVE_CAP_MCN 0x00200 /**< can read MCN */ -#define CDIO_DRIVE_CAP_ISRC 0x00200 /**< can read ISRC */ -#define CDIO_DRIVE_CAP_MISC_FILE 0x20000 /**< drive is really a file, - i.e a CD file image */ - - /*! Reading masks.. */ -#define CDIO_DRIVE_CAP_READ_AUDIO 0x00001 /**< drive can play CD audio */ -#define CDIO_DRIVE_CAP_READ_CD_DA 0x00002 /**< drive can read CD-DA */ -#define CDIO_DRIVE_CAP_READ_CD_G 0x00004 /**< drive can read CD+G */ -#define CDIO_DRIVE_CAP_READ_CD_R 0x00008 /**< drive can read CD-R */ -#define CDIO_DRIVE_CAP_READ_CD_RW 0x00010 /**< drive can read CD-RW */ -#define CDIO_DRIVE_CAP_READ_DVD_R 0x00020 /**< drive can read DVD-R */ -#define CDIO_DRIVE_CAP_READ_DVD_PR 0x00040 /**< drive can read DVD+R */ -#define CDIO_DRIVE_CAP_READ_DVD_RAM 0x00080 /**< drive can read DVD-RAM */ -#define CDIO_DRIVE_CAP_READ_DVD_ROM 0x00100 /**< drive can read DVD-ROM */ -#define CDIO_DRIVE_CAP_READ_DVD_RW 0x00200 /**< drive can read DVD-RW */ -#define CDIO_DRIVE_CAP_READ_DVD_RPW 0x00400 /**< drive can read DVD+RW */ -#define CDIO_DRIVE_CAP_READ_C2_ERRS 0x00800 /**< has C2 error correction */ - - /*! Writing masks.. */ -#define CDIO_DRIVE_CAP_WRITE_CD_R 0x00001 /**< drive can write CD-R */ -#define CDIO_DRIVE_CAP_WRITE_CD_RW 0x00002 /**< drive can write CD-R */ -#define CDIO_DRIVE_CAP_WRITE_DVD_R 0x00004 /**< drive can write DVD-R */ -#define CDIO_DRIVE_CAP_WRITE_DVD_PR 0x00008 /**< drive can write DVD+R */ -#define CDIO_DRIVE_CAP_WRITE_DVD_RAM 0x00010 /**< drive can write DVD-RAM */ -#define CDIO_DRIVE_CAP_WRITE_DVD_RW 0x00020 /**< drive can write DVD-RW */ -#define CDIO_DRIVE_CAP_WRITE_DVD_RPW 0x00040 /**< drive can write DVD+RW */ -#define CDIO_DRIVE_CAP_WRITE_MT_RAINIER 0x00080 /**< Mount Rainier */ -#define CDIO_DRIVE_CAP_WRITE_BURN_PROOF 0x00100 /**< burn proof */ - -/**< Masks derived from above... */ -#define CDIO_DRIVE_CAP_WRITE_CD ( \ - CDIO_DRIVE_CAP_WRITE_CD_R \ - | CDIO_DRIVE_CAP_WRITE_CD_RW \ - ) -/**< Has some sort of CD writer ability */ - -/**< Masks derived from above... */ -#define CDIO_DRIVE_CAP_WRITE_DVD ( \ - | CDIO_DRIVE_CAP_WRITE_DVD_R \ - | CDIO_DRIVE_CAP_WRITE_DVD_PR \ - | CDIO_DRIVE_CAP_WRITE_DVD_RAM \ - | CDIO_DRIVE_CAP_WRITE_DVD_RW \ - | CDIO_DRIVE_CAP_WRITE_DVD_RPW \ - ) -/**< Has some sort of DVD writer ability */ - -#define CDIO_DRIVE_CAP_WRITE \ - (CDIO_DRIVE_CAP_WRITE_CD | CDIO_DRIVE_CAP_WRITE_DVD) -/**< Has some sort of DVD or CD writing ability */ - - /*! - track flags - Q Sub-channel Control Field (4.2.3.3) - */ - typedef enum { - CDIO_TRACK_FLAG_NONE = 0x00, /**< no flags set */ - CDIO_TRACK_FLAG_PRE_EMPHASIS = 0x01, /**< audio track recorded with - pre-emphasis */ - CDIO_TRACK_FLAG_COPY_PERMITTED = 0x02, /**< digital copy permitted */ - CDIO_TRACK_FLAG_DATA = 0x04, /**< data track */ - CDIO_TRACK_FLAG_FOUR_CHANNEL_AUDIO = 0x08, /**< 4 audio channels */ - CDIO_TRACK_FLAG_SCMS = 0x10 /**< SCMS (5.29.2.7) */ -} cdio_track_flag; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __CDIO_TYPES_H__ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/util.h b/src/input/vcd/libcdio/cdio/util.h deleted file mode 100644 index 3cea313b4..000000000 --- a/src/input/vcd/libcdio/cdio/util.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - $Id: util.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2004 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 -*/ - -#ifndef __CDIO_UTIL_H__ -#define __CDIO_UTIL_H__ - -/*! - \file util.h - \brief Miscellaneous utility functions. - - Warning: this will probably get removed/replaced by using glib.h -*/ -#include <stdlib.h> - -#undef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) - -#undef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) - -#undef IN -#define IN(x, low, high) ((x) >= (low) && (x) <= (high)) - -#undef CLAMP -#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) - -static inline unsigned -_cdio_len2blocks (unsigned len, int blocksize) -{ - unsigned blocks; - - blocks = len / blocksize; - if (len % blocksize) - blocks++; - - return blocks; -} - -/* round up to next block boundary */ -static inline unsigned -_cdio_ceil2block (unsigned offset, int blocksize) -{ - return _cdio_len2blocks (offset, blocksize) * blocksize; -} - -static inline unsigned -_cdio_ofs_add (unsigned offset, unsigned length, int blocksize) -{ - if (blocksize - (offset % blocksize) < length) - offset = _cdio_ceil2block (offset, blocksize); - - offset += length; - - return offset; -} - -static inline const char * -_cdio_bool_str (bool b) -{ - return b ? "yes" : "no"; -} - -#ifdef __cplusplus -extern "C" { -#endif - -void * -_cdio_malloc (size_t size); - -void * -_cdio_memdup (const void *mem, size_t count); - -char * -_cdio_strdup_upper (const char str[]); - -void -_cdio_strfreev(char **strv); - -char * -_cdio_strjoin (char *strv[], unsigned count, const char delim[]); - -size_t -_cdio_strlenv(char **str_array); - -char ** -_cdio_strsplit(const char str[], char delim); - -uint8_t cdio_to_bcd8(uint8_t n); -uint8_t cdio_from_bcd8(uint8_t p); - -#if defined(__GNUC__) && __GNUC__ >= 3 -static inline __attribute__((deprecated)) -uint8_t to_bcd8(uint8_t n) { - return cdio_to_bcd8(n); -} -static inline __attribute__((deprecated)) -uint8_t from_bcd8(uint8_t p) { - return cdio_from_bcd8(p); -} -#else -#define to_bcd8 cdio_to_bcd8 -#define from_bcd8 cdio_from_bcd8 -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __CDIO_UTIL_H__ */ - - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ diff --git a/src/input/vcd/libcdio/cdio/version.h b/src/input/vcd/libcdio/cdio/version.h deleted file mode 100644 index 345924cab..000000000 --- a/src/input/vcd/libcdio/cdio/version.h +++ /dev/null @@ -1,10 +0,0 @@ -/* $Id: version.h,v 1.2 2004/04/11 12:20:31 miguelfreitas Exp $ */ -/** \file version.h - * \brief A file simply containing the library version number. - */ - -/*! CDIO_VERSION can as a string in programs to show what version is used. */ -#define CDIO_VERSION "0.68" - -/*! LIBCDIO_VERSION_NUM can be used for testing in the C preprocessor */ -#define LIBCDIO_VERSION_NUM 68 diff --git a/src/input/vcd/libcdio/cdio/xa.h b/src/input/vcd/libcdio/cdio/xa.h deleted file mode 100644 index 3af27eab5..000000000 --- a/src/input/vcd/libcdio/cdio/xa.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - $Id: xa.h,v 1.3 2005/01/01 02:43:58 rockyb Exp $ - - Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org> - Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> - - See also iso9660.h by Eric Youngdale (1993) and in cdrtools. These - are - - Copyright 1993 Yggdrasil Computing, Incorporated - Copyright (c) 1999,2000 J. Schilling - - 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 -*/ -/*! - \file xa.h - \brief Things related to the ISO-9660 XA (Extended Attributes) format -*/ - - -#ifndef __CDIO_XA_H__ -#define __CDIO_XA_H__ - -#include <cdio/types.h> - -#define ISO_XA_MARKER_STRING "CD-XA001" -#define ISO_XA_MARKER_OFFSET 1024 - -/* XA attribute definitions */ -#define XA_PERM_RSYS 0x0001 /**< System Group Read */ -#define XA_PERM_XSYS 0x0004 /**< System Group Execute */ - -#define XA_PERM_RUSR 0x0010 /**< User (owner) Read */ -#define XA_PERM_XUSR 0x0040 /**< User (owner) Execute */ - -#define XA_PERM_RGRP 0x0100 /**< Group Read */ -#define XA_PERM_XGRP 0x0400 /**< Group Execute */ - -#define XA_PERM_ROTH 0x1000 /**< Other (world) Read */ -#define XA_PERM_XOTH 0x4000 /**< Other (world) Execute */ - -#define XA_ATTR_MODE2FORM1 (1 << 11) -#define XA_ATTR_MODE2FORM2 (1 << 12) -#define XA_ATTR_INTERLEAVED (1 << 13) -#define XA_ATTR_CDDA (1 << 14) -#define XA_ATTR_DIRECTORY (1 << 15) - -/* some aggregations */ -#define XA_PERM_ALL_READ (XA_PERM_RUSR | XA_PERM_RSYS | XA_PERM_RGRP) -#define XA_PERM_ALL_EXEC (XA_PERM_XUSR | XA_PERM_XSYS | XA_PERM_XGRP) -#define XA_PERM_ALL_ALL (XA_PERM_ALL_READ | XA_PERM_ALL_EXEC) - -#define XA_FORM1_DIR (XA_ATTR_DIRECTORY | XA_ATTR_MODE2FORM1 | XA_PERM_ALL_ALL) -#define XA_FORM1_FILE (XA_ATTR_MODE2FORM1 | XA_PERM_ALL_ALL) -#define XA_FORM2_FILE (XA_ATTR_MODE2FORM2 | XA_PERM_ALL_ALL) - -/*! \brief "Extended Architecture according to the Philips Yellow Book. - -CD-ROM EXtended Architecture is a modification to the CD-ROM -specification that defines two new types of sectors. CD-ROM XA was -developed jointly by Sony, Philips, and Microsoft, and announced in -August 1988. Its specifications were published in an extension to the -Yellow Book. CD-i, Photo CD, Video CD and CD-EXTRA have all -subsequently been based on CD-ROM XA. - -CD-XA defines another way of formatting sectors on a CD-ROM, including -headers in the sectors that describe the type (audio, video, data) and -some additional info (markers, resolution in case of a video or audio -sector, file numbers, etc). - -The data written on a CD-XA is consistent with and can be in ISO-9660 -file system format and therefore be readable by ISO-9660 file system -translators. But also a CD-I player can also read CD-XA discs even if -its own `Green Book' file system only resembles ISO 9660 and isn't -fully compatible. - - Note structure is big-endian. -*/ -typedef struct iso9660_xa -{ - uint16_t group_id; /**< 0 */ - uint16_t user_id; /**< 0 */ - uint16_t attributes; /**< XA_ATTR_ */ - uint8_t signature[2]; /**< { 'X', 'A' } */ - uint8_t filenum; /**< file number, see also XA subheader */ - uint8_t reserved[5]; /**< zero */ -} GNUC_PACKED iso9660_xa_t; - - -/*! - Returns a string which interpreting the extended attribute xa_attr. - For example: - \verbatim - d---1xrxrxr - ---2--r-r-r - -a--1xrxrxr - \endverbatim - - A description of the characters in the string follows - The 1st character is either "d" if the entry is a directory, or "-" if not - The 2nd character is either "a" if the entry is CDDA (audio), or "-" if not - The 3rd character is either "i" if the entry is interleaved, or "-" if not - The 4th character is either "2" if the entry is mode2 form2 or "-" if not - The 5th character is either "1" if the entry is mode2 form1 or "-" if not - Note that an entry will either be in mode2 form1 or mode form2. That - is you will either see "2-" or "-1" in the 4th & 5th positions. - - The 6th and 7th characters refer to permissions for a user while the - the 8th and 9th characters refer to permissions for a group while, and - the 10th and 11th characters refer to permissions for everyone. - - In each of these pairs the first character (6, 8, 10) is "x" if the - entry is executable. For a directory this means the directory is - allowed to be listed or "searched". - The second character of a pair (7, 9, 11) is "r" if the entry is allowed - to be read. -*/ -const char * -iso9660_get_xa_attr_str (uint16_t xa_attr); - -/*! - Allocates and initalizes a new iso9600_xa_t variable and returns - it. The caller should free the returned result. - - @see iso9660_xa -*/ -iso9660_xa_t * -iso9660_xa_init (iso9660_xa_t *_xa, uint16_t uid, uint16_t gid, uint16_t attr, - uint8_t filenum); - -#endif /* __CDIO_XA_H__ */ - -/* - * Local variables: - * c-file-style: "gnu" - * tab-width: 8 - * indent-tabs-mode: nil - * End: - */ |