Blame example/device.c

Packit dd8086
/*
Packit dd8086
  Copyright (C) 2003, 2004, 2005, 2008, 2009, 2012
Packit dd8086
  Rocky Bernstein <rocky@gnu.org>
Packit dd8086
  
Packit dd8086
  This program is free software: you can redistribute it and/or modify
Packit dd8086
  it under the terms of the GNU General Public License as published by
Packit dd8086
  the Free Software Foundation, either version 3 of the License, or
Packit dd8086
  (at your option) any later version.
Packit dd8086
Packit dd8086
  This program is distributed in the hope that it will be useful,
Packit dd8086
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
  GNU General Public License for more details.
Packit dd8086
Packit dd8086
  You should have received a copy of the GNU General Public License
Packit dd8086
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
Packit dd8086
/* Simple program to show drivers installed and what the default
Packit dd8086
   CD-ROM drive is. See also corresponding C++ programs of similar
Packit dd8086
   names .*/
Packit dd8086
#ifdef HAVE_CONFIG_H
Packit dd8086
#include "config.h"
Packit dd8086
#define __CDIO_CONFIG_H__ 1
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#ifdef HAVE_STDIO_H
Packit dd8086
#include <stdio.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STDLIB_H
Packit dd8086
#include <stdlib.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_SYS_TYPES_H
Packit dd8086
#include <sys/types.h>
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include <cdio/cdio.h>
Packit dd8086
Packit dd8086
#define _(x) x
Packit dd8086
Packit dd8086
/* Prints out drive capabilities */
Packit dd8086
static void 
Packit dd8086
print_drive_capabilities(cdio_drive_read_cap_t  i_read_cap,
Packit dd8086
			 cdio_drive_write_cap_t i_write_cap,
Packit dd8086
			 cdio_drive_misc_cap_t  i_misc_cap)
Packit dd8086
{
Packit dd8086
  if (CDIO_DRIVE_CAP_ERROR == i_misc_cap) {
Packit dd8086
    printf("Error in getting drive hardware properties\n");
Packit dd8086
  } else {
Packit dd8086
    printf(_("-- Hardware                    : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_FILE  
Packit dd8086
	   ? "Disk Image"  : "CD-ROM or DVD");
Packit dd8086
    printf(_("-- Can eject                   : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_EJECT         ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can close tray              : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_CLOSE_TRAY    ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can disable manual eject    : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_LOCK          ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can select juke-box disc    : %s\n\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_DISC   ? "Yes" : "No");
Packit dd8086
Packit dd8086
    printf(_("-- Can set drive speed         : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_SELECT_SPEED  ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can detect if CD changed    : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_MEDIA_CHANGED ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can read multiple sessions  : %s\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_MULTI_SESSION ? "Yes" : "No");
Packit dd8086
    printf(_("-- Can hard reset device       : %s\n\n"), 
Packit dd8086
	   i_misc_cap & CDIO_DRIVE_CAP_MISC_RESET         ? "Yes" : "No");
Packit dd8086
  }
Packit dd8086
  
Packit dd8086
    
Packit dd8086
  if (CDIO_DRIVE_CAP_ERROR == i_read_cap) {
Packit dd8086
      printf("Error in getting drive reading properties\n");
Packit dd8086
  } else {
Packit dd8086
    printf("-- Reading....\n");
Packit dd8086
    printf(_("--  Can play audio            : %s\n"), 
Packit dd8086
	   i_read_cap & CDIO_DRIVE_CAP_READ_AUDIO      ? "Yes" : "No");
Packit dd8086
    printf(_("--  Can read  CD-R            : %s\n"), 
Packit dd8086
	   i_read_cap & CDIO_DRIVE_CAP_READ_CD_R       ? "Yes" : "No");
Packit dd8086
    printf(_("--  Can read  CD-RW           : %s\n"), 
Packit dd8086
	   i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW      ? "Yes" : "No");
Packit dd8086
    printf(_("--  Can read  DVD-ROM         : %s\n"), 
Packit dd8086
	   i_read_cap & CDIO_DRIVE_CAP_READ_DVD_ROM    ? "Yes" : "No");
Packit dd8086
  }
Packit dd8086
  
Packit dd8086
Packit dd8086
  if (CDIO_DRIVE_CAP_ERROR == i_write_cap) {
Packit dd8086
      printf("Error in getting drive writing properties\n");
Packit dd8086
  } else {
Packit dd8086
    printf("\n-- Writing....\n");
Packit dd8086
    printf(_("--  Can write CD-RW           : %s\n"), 
Packit dd8086
	   i_read_cap & CDIO_DRIVE_CAP_READ_CD_RW     ? "Yes" : "No");
Packit dd8086
    printf(_("--  Can write DVD-R           : %s\n"), 
Packit dd8086
	   i_write_cap & CDIO_DRIVE_CAP_READ_DVD_R    ? "Yes" : "No");
Packit dd8086
    printf(_("--  Can write DVD-RAM         : %s\n"), 
Packit dd8086
	   i_write_cap & CDIO_DRIVE_CAP_READ_DVD_RAM  ? "Yes" : "No");
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
  CdIo_t *p_cdio = cdio_open (NULL, DRIVER_UNKNOWN);
Packit dd8086
  
Packit dd8086
  if (NULL != p_cdio) {
Packit dd8086
    char *default_device = cdio_get_default_device(p_cdio);
Packit dd8086
    cdio_drive_read_cap_t  i_read_cap;
Packit dd8086
    cdio_drive_write_cap_t i_write_cap;
Packit dd8086
    cdio_drive_misc_cap_t  i_misc_cap;
Packit dd8086
    
Packit dd8086
    printf("-- The driver selected is %s\n", cdio_get_driver_name(p_cdio));
Packit dd8086
Packit dd8086
    if (default_device)
Packit dd8086
      printf("-- The default device for this driver is %s\n", default_device);
Packit dd8086
Packit dd8086
    cdio_get_drive_cap(p_cdio, &i_read_cap, &i_write_cap, &i_misc_cap);
Packit dd8086
    print_drive_capabilities(i_read_cap, i_write_cap, i_misc_cap);
Packit dd8086
      
Packit dd8086
    free(default_device);
Packit dd8086
    cdio_destroy(p_cdio);
Packit dd8086
    printf("\n");
Packit dd8086
Packit dd8086
  } else {
Packit dd8086
    printf("-- Problem in trying to find a driver.\n\n");
Packit dd8086
  }
Packit dd8086
  
Packit dd8086
  {
Packit dd8086
    const driver_id_t *driver_id_p;
Packit dd8086
    for (driver_id_p=cdio_drivers; *driver_id_p!=DRIVER_UNKNOWN; driver_id_p++)
Packit dd8086
      if (cdio_have_driver(*driver_id_p))
Packit dd8086
	printf("-- We have: %s\n", cdio_driver_describe(*driver_id_p));
Packit dd8086
      else
Packit dd8086
	printf("-- We don't have: %s\n", cdio_driver_describe(*driver_id_p));
Packit dd8086
  }
Packit dd8086
  return 0;
Packit dd8086
}