sector.h: add more DVD types.
_cdio_linux.c: Add ability in GNU/Linux to determine if a drive has a DVD in it. cd-info: show the drive type.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: sector.h,v 1.23 2004/07/24 05:42:09 rocky Exp $
|
$Id: sector.h,v 1.24 2004/07/25 03:05:18 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -85,17 +85,40 @@ typedef enum {
|
|||||||
and GNU/Linux /usr/include/linux/cdrom.h and we've added DVD.
|
and GNU/Linux /usr/include/linux/cdrom.h and we've added DVD.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CDIO_DISC_MODE_CD_DA, /**< CD-DA */
|
CDIO_DISC_MODE_CD_DA, /**< CD-DA */
|
||||||
CDIO_DISC_MODE_CD_DATA_1, /**< CD-ROM form 1 mode 1 */
|
CDIO_DISC_MODE_CD_DATA_1, /**< CD-ROM form 1 mode 1 */
|
||||||
CDIO_DISC_MODE_CD_DATA_2, /**< CD-ROM form 1 mode 2 */
|
CDIO_DISC_MODE_CD_DATA_2, /**< CD-ROM form 1 mode 2 */
|
||||||
CDIO_DISC_MODE_CD_XA_2_1, /**< CD-ROM XA form2 mode 1 */
|
CDIO_DISC_MODE_CD_XA_2_1, /**< CD-ROM XA form2 mode 1 */
|
||||||
CDIO_DISC_MODE_CD_XA_2_2, /**< CD-ROM XA form2 mode 2 */
|
CDIO_DISC_MODE_CD_XA_2_2, /**< CD-ROM XA form2 mode 2 */
|
||||||
CDIO_DISC_MODE_CD_MIXED, /**< CD-ROM XA and CD-I */
|
CDIO_DISC_MODE_CD_MIXED, /**< CD-ROM XA and CD-I */
|
||||||
CDIO_DISC_MODE_DVD, /**< some sort of DVD */
|
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_NO_INFO,
|
||||||
CDIO_DISC_MODE_ERROR
|
CDIO_DISC_MODE_ERROR
|
||||||
} discmode_t;
|
} discmode_t;
|
||||||
|
|
||||||
|
#define CDIO_DISC_MODE_DVD \
|
||||||
|
(CDIO_DISC_MODE_DVD_ROM \
|
||||||
|
| CDIO_DISC_MODE_DVD_RAM \
|
||||||
|
| CDIO_DISC_MODE_DVD_R \
|
||||||
|
| CDIO_DISC_MODE_DVD_RW \
|
||||||
|
| CDIO_DISC_MODE_DVD_PR \
|
||||||
|
| CDIO_DISC_MODE_DVD_PRW \
|
||||||
|
| CDIO_DISC_MODE_DVD_OTHER)
|
||||||
|
|
||||||
|
#define CDIO_DISC_MODE_CD \
|
||||||
|
(CDIO_DISC_MODE_CD_DA \
|
||||||
|
| CDIO_DISC_MODE_CD_DATA_1 \
|
||||||
|
| CDIO_DISC_MODE_CD_DATA_2 \
|
||||||
|
| CDIO_DISC_MODE_CD_XA_2_1 \
|
||||||
|
| CDIO_DISC_MODE_CD_XA_2_2 \
|
||||||
|
| CDIO_DISC_MODE_CD_MIXED)
|
||||||
|
|
||||||
/*! Information that can be obtained through a Read Subchannel
|
/*! Information that can be obtained through a Read Subchannel
|
||||||
command.
|
command.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: _cdio_linux.c,v 1.75 2004/07/24 05:42:09 rocky Exp $
|
$Id: _cdio_linux.c,v 1.76 2004/07/25 03:05:18 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
|
||||||
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.75 2004/07/24 05:42:09 rocky Exp $";
|
static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.76 2004/07/25 03:05:18 rocky Exp $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -168,6 +168,24 @@ _get_discmode_linux (void *p_user_data)
|
|||||||
_img_private_t *p_env = p_user_data;
|
_img_private_t *p_env = p_user_data;
|
||||||
|
|
||||||
int32_t i_discmode;
|
int32_t i_discmode;
|
||||||
|
|
||||||
|
/* See if this is a DVD. */
|
||||||
|
dvd_struct dvd; /* DVD READ STRUCT for layer 0. */
|
||||||
|
|
||||||
|
dvd.physical.type = DVD_STRUCT_PHYSICAL;
|
||||||
|
dvd.physical.layer_num = 0;
|
||||||
|
if (0 == ioctl (p_env->gen.fd, DVD_READ_STRUCT, &dvd)) {
|
||||||
|
switch(dvd.physical.layer[0].book_type) {
|
||||||
|
case 0: return CDIO_DISC_MODE_DVD_ROM;
|
||||||
|
case 1: return CDIO_DISC_MODE_DVD_RAM;
|
||||||
|
case 2: return CDIO_DISC_MODE_DVD_R;
|
||||||
|
case 3: return CDIO_DISC_MODE_DVD_RW;
|
||||||
|
case 8: return CDIO_DISC_MODE_DVD_RW;
|
||||||
|
case 9: return CDIO_DISC_MODE_DVD_RW;
|
||||||
|
default: return CDIO_DISC_MODE_DVD_OTHER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
i_discmode = ioctl (p_env->gen.fd, CDROM_DISC_STATUS);
|
i_discmode = ioctl (p_env->gen.fd, CDROM_DISC_STATUS);
|
||||||
|
|
||||||
if (i_discmode < 0) return CDIO_DISC_MODE_ERROR;
|
if (i_discmode < 0) return CDIO_DISC_MODE_ERROR;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
$Id: cd-info.c,v 1.74 2004/07/24 14:23:39 rocky Exp $
|
$Id: cd-info.c,v 1.75 2004/07/25 03:05:18 rocky Exp $
|
||||||
|
|
||||||
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
|
||||||
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
|
||||||
@@ -1031,8 +1031,26 @@ main(int argc, const char *argv[])
|
|||||||
case CDIO_DISC_MODE_CD_MIXED:
|
case CDIO_DISC_MODE_CD_MIXED:
|
||||||
printf("CD-ROM mixed mode");
|
printf("CD-ROM mixed mode");
|
||||||
break;
|
break;
|
||||||
case CDIO_DISC_MODE_DVD:
|
case CDIO_DISC_MODE_DVD_ROM:
|
||||||
printf("some sort of DVD");
|
printf("DVD-ROM");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_RAM:
|
||||||
|
printf("DVD-RAM");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_R:
|
||||||
|
printf("DVD-R");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_RW:
|
||||||
|
printf("DVD-RW");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_PR:
|
||||||
|
printf("DVD+R");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_PRW:
|
||||||
|
printf("DVD+RW");
|
||||||
|
break;
|
||||||
|
case CDIO_DISC_MODE_DVD_OTHER:
|
||||||
|
printf("Unknown/unclassified DVD");
|
||||||
break;
|
break;
|
||||||
case CDIO_DISC_MODE_NO_INFO:
|
case CDIO_DISC_MODE_NO_INFO:
|
||||||
printf("No information");
|
printf("No information");
|
||||||
|
|||||||
Reference in New Issue
Block a user