From 1aff2d5bfb554026a5c85357a2f7ac4d78ffba8e Mon Sep 17 00:00:00 2001 From: rocky Date: Wed, 25 Jan 2006 06:30:22 +0000 Subject: [PATCH] Add routine to show drives attached. Not really OO, but it is a little nicer than the corresponding C program. --- example/C++/OO/.cvsignore | 3 ++ example/C++/OO/Makefile.am | 10 ++-- example/C++/OO/drives.cpp | 98 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 example/C++/OO/drives.cpp diff --git a/example/C++/OO/.cvsignore b/example/C++/OO/.cvsignore index 1be6ba9a..c660a2bb 100644 --- a/example/C++/OO/.cvsignore +++ b/example/C++/OO/.cvsignore @@ -5,5 +5,8 @@ Makefile.am Makefile.in cdtext device +drives eject +mmc1 +mmc2 tracks diff --git a/example/C++/OO/Makefile.am b/example/C++/OO/Makefile.am index c981a16e..b2e14d10 100644 --- a/example/C++/OO/Makefile.am +++ b/example/C++/OO/Makefile.am @@ -1,6 +1,6 @@ -# $Id: Makefile.am,v 1.2 2005/11/14 01:15:33 rocky Exp $ +# $Id: Makefile.am,v 1.3 2006/01/25 06:30:22 rocky Exp $ # -# Copyright (C) 2005 Rocky Bernstein +# Copyright (C) 2005, 2006 Rocky Bernstein # # 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 @@ -20,7 +20,7 @@ # Sample C++ programs using libcdio++ (with C++ OO wrapper) ############################################################ # -noinst_PROGRAMS = cdtext device eject mmc1 mmc2 tracks +noinst_PROGRAMS = cdtext device drives eject mmc1 mmc2 tracks INCLUDES = -I$(top_srcdir)/include @@ -32,6 +32,10 @@ device_SOURCES = device.cpp device_DEPENDENCIES = $(LIBCDIO_DEPS) device_LDADD = $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) +drives_SOURCES = drives.cpp +drives_DEPENDENCIES = $(LIBCDIO_DEPS) +drives_LDADD = $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) + eject_SOURCES = eject.cpp eject_DEPENDENCIES = $(LIBCDIO_DEPS) eject_LDADD = $(LIBCDIOPP_LIBS) $(LIBCDIO_LIBS) diff --git a/example/C++/OO/drives.cpp b/example/C++/OO/drives.cpp new file mode 100644 index 00000000..d8b68bc8 --- /dev/null +++ b/example/C++/OO/drives.cpp @@ -0,0 +1,98 @@ +/* + $Id: drives.cpp,v 1.1 2006/01/25 06:30:22 rocky Exp $ + + Copyright (C) 2003, 2004, 2006 Rocky Bernstein + + 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 +*/ + +/* Simple program to show drivers installed and what the default + CD-ROM drive is and what CD drives are available. */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#include +#include +#include + +static void +log_handler (cdio_log_level_t level, const char message[]) +{ + switch(level) { + case CDIO_LOG_DEBUG: + case CDIO_LOG_INFO: + return; + default: + printf("cdio %d message: %s\n", level, message); + } +} + +int +main(int argc, const char *argv[]) +{ + char **ppsz_cd_drives=NULL, **c; + + cdio_log_set_handler (log_handler); + + /* Print out a list of CD-drives */ + printf("All CD-ROM/DVD drives...\n"); + ppsz_cd_drives = getDevices(DRIVER_DEVICE); + if (NULL != ppsz_cd_drives) + for( c = ppsz_cd_drives; *c != NULL; c++ ) { + printf("Drive %s\n", *c); + } + + freeDeviceList(ppsz_cd_drives); + ppsz_cd_drives = NULL; + + printf("-----\n"); + printf("CD-DA drives...\n"); + ppsz_cd_drives = NULL; + /* Print out a list of CD-drives with CD-DA's in them. */ + ppsz_cd_drives = getDevices(NULL, CDIO_FS_AUDIO); + + if (NULL != ppsz_cd_drives) { + for( c = ppsz_cd_drives; *c != NULL; c++ ) { + printf("drive: %s\n", *c); + } + } + freeDeviceList(ppsz_cd_drives); + + printf("-----\n"); + ppsz_cd_drives = NULL; + printf("VCD drives...\n"); + /* Print out a list of CD-drives with VCD's in them. */ + ppsz_cd_drives = getDevices(NULL, +(CDIO_FS_ANAL_SVCD|CDIO_FS_ANAL_CVD|CDIO_FS_ANAL_VIDEOCD|CDIO_FS_UNKNOWN), + true); + if (NULL != ppsz_cd_drives) { + for( c = ppsz_cd_drives; *c != NULL; c++ ) { + printf("drive: %s\n", *c); + } + } + + freeDeviceList(ppsz_cd_drives); + return 0; + +}