Blame example/C++/OO/eject.cpp

Packit dd8086
/*
Packit dd8086
  $Id: eject.cpp,v 1.7 2008/03/24 15:30:57 karl Exp $
Packit dd8086
Packit dd8086
  Copyright (C) 2005, 2006, 2008 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 eject a CD-ROM drive door and then close it again.
Packit dd8086
Packit dd8086
   If a single argument is given, it is used as the CD-ROM device to 
Packit dd8086
   eject/close. Otherwise a CD-ROM drive will be scanned for.
Packit dd8086
Packit dd8086
   See also corresponding C program of a similar name. 
Packit dd8086
*/
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
#include <stdio.h>
Packit dd8086
#ifdef HAVE_STDLIB_H
Packit dd8086
#include <stdlib.h>
Packit dd8086
#endif
Packit dd8086
#ifdef HAVE_STRING_H
Packit dd8086
#include <string.h>
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#include <cdio++/cdio.hpp>
Packit dd8086
Packit dd8086
int
Packit dd8086
main(int argc, const char *argv[])
Packit dd8086
{
Packit dd8086
  driver_id_t driver_id = DRIVER_DEVICE;
Packit dd8086
  char *psz_drive = NULL;
Packit dd8086
  CdioDevice device;
Packit dd8086
  
Packit dd8086
  if (argc > 1) 
Packit dd8086
    psz_drive = strdup(argv[1]);
Packit dd8086
Packit dd8086
  if (!psz_drive) {
Packit dd8086
    psz_drive = getDefaultDevice(driver_id);
Packit dd8086
    if (!psz_drive) {
Packit dd8086
      printf("Can't find a CD-ROM to perform eject operation\n");
Packit dd8086
      exit(1);
Packit dd8086
    }
Packit dd8086
  }
Packit dd8086
  try {
Packit dd8086
    ejectMedia(psz_drive);
Packit dd8086
    printf("CD in CD-ROM drive %s ejected.\n", psz_drive);
Packit dd8086
  }
Packit dd8086
  catch ( DriverOpUninit e ) {
Packit dd8086
    printf("Can't Eject CD %s from CD-ROM drive: driver is not initialized.\n",
Packit dd8086
	   psz_drive);
Packit dd8086
  }
Packit dd8086
  catch ( DriverOpException e ) {
Packit dd8086
    printf("Ejecting CD from CD-ROM drive %s operation error:\n\t%s.\n", 
Packit dd8086
	   psz_drive, e.get_msg());
Packit dd8086
  }
Packit dd8086
Packit dd8086
  try {
Packit dd8086
    closeTray(psz_drive);
Packit dd8086
    printf("Closed CD-ROM %s tray.\n", psz_drive);
Packit dd8086
  }
Packit dd8086
  catch ( DriverOpException e ) {
Packit dd8086
    printf("Closing CD-ROM %s tray operation error error:\n\t%s.\n", 
Packit dd8086
	   psz_drive, e.get_msg());
Packit dd8086
  }
Packit dd8086
  free(psz_drive);
Packit dd8086
  
Packit dd8086
  return 0;
Packit dd8086
}