Blame example/drives.c

Packit dd8086
/*
Packit dd8086
  Copyright (C) 2003, 2004, 2006, 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 and what CD drives are available. */
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
#include <cdio/cd_types.h>
Packit dd8086
#include <cdio/logging.h>
Packit dd8086
Packit dd8086
static void 
Packit dd8086
log_handler (cdio_log_level_t level, const char message[])
Packit dd8086
{
Packit dd8086
  switch(level) {
Packit dd8086
  case CDIO_LOG_DEBUG:
Packit dd8086
  case CDIO_LOG_INFO:
Packit dd8086
    return;
Packit dd8086
  default:
Packit dd8086
    printf("cdio %d message: %s\n", level, message);
Packit dd8086
  }
Packit dd8086
}
Packit dd8086
Packit dd8086
static void 
Packit dd8086
print_drive_class(const char *psz_msg, cdio_fs_anal_t bitmask, bool b_any) {
Packit dd8086
  char **ppsz_cd_drives=NULL, **c;
Packit dd8086
Packit dd8086
  printf("-- %s...\n", psz_msg);
Packit dd8086
  ppsz_cd_drives = cdio_get_devices_with_cap(NULL, bitmask, b_any);
Packit dd8086
  if (NULL != ppsz_cd_drives) 
Packit dd8086
    for( c = ppsz_cd_drives; *c != NULL; c++ ) {
Packit dd8086
      printf("-- Drive %s\n", *c);
Packit dd8086
    }
Packit dd8086
Packit dd8086
  cdio_free_device_list(ppsz_cd_drives);
Packit dd8086
  printf("-----\n");
Packit dd8086
}
Packit dd8086
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
  char **ppsz_cd_drives=NULL, **c;
Packit dd8086
  
Packit dd8086
  cdio_log_set_handler (log_handler);
Packit dd8086
Packit dd8086
  /* Print out a list of CD-drives */
Packit dd8086
  ppsz_cd_drives = cdio_get_devices(DRIVER_DEVICE);
Packit dd8086
  if (NULL != ppsz_cd_drives) 
Packit dd8086
    for( c = ppsz_cd_drives; *c != NULL; c++ ) {
Packit dd8086
      printf("-- Drive %s\n", *c);
Packit dd8086
    }
Packit dd8086
Packit dd8086
  cdio_free_device_list(ppsz_cd_drives);
Packit dd8086
  ppsz_cd_drives = NULL;
Packit dd8086
  
Packit dd8086
  printf("-----\n");
Packit dd8086
Packit dd8086
  /* Print out a list of CD-drives the harder way. */
Packit dd8086
  print_drive_class("-- All CD-ROM drives (again)", CDIO_FS_MATCH_ALL, false);
Packit dd8086
  print_drive_class("-- CD-ROM drives with a CD-DA loaded...",
Packit dd8086
		    CDIO_FS_AUDIO, false);
Packit dd8086
  print_drive_class("-- CD-ROM drives with some sort of ISO 9660 filesystem...", 
Packit dd8086
		    CDIO_FS_ANAL_ISO9660_ANY, true);
Packit dd8086
  print_drive_class("-- (S)VCD drives...", CDIO_FS_ANAL_VCD_ANY, true);
Packit dd8086
  return 0;
Packit dd8086
  
Packit dd8086
}