示例#1
0
/*!
  Close media tray in CD drive if there is a routine to do so. 
  
  @param psz_drive the name of CD-ROM to be closed. If NULL, we will
  use the default device.
  @param p_driver_id is the driver to be used or that got used if
  it was DRIVER_UNKNOWN or DRIVER_DEVICE; If this is NULL, we won't
  report back the driver used.
*/
driver_return_code_t 
cdio_close_tray (const char *psz_orig_drive, /*in/out*/ driver_id_t
                 *p_driver_id)
{
	return DRIVER_OP_SUCCESS;
#if 0
  driver_id_t temp_driver_id = DRIVER_DEVICE;
  char *psz_drive;
  driver_return_code_t drc;

  if (!p_driver_id) p_driver_id = &temp_driver_id;
  
  if (!psz_orig_drive || !*psz_orig_drive)
    psz_drive = cdio_get_default_device_driver(p_driver_id);
  else 
    psz_drive = strdup(psz_orig_drive);
  
  if (DRIVER_UNKNOWN == *p_driver_id || DRIVER_DEVICE == *p_driver_id) {
    *p_driver_id = CDIO_MIN_DEVICE_DRIVER;
    
    /* Scan for driver */
    for ( ; *p_driver_id<=CDIO_MAX_DRIVER; (*p_driver_id)++) {
      if ( (*CdIo_all_drivers[*p_driver_id].have_driver)() &&
           *CdIo_all_drivers[*p_driver_id].close_tray ) {
        drc = (*CdIo_all_drivers[*p_driver_id].close_tray)(psz_drive);
        free(psz_drive);
        return drc;
      }
    }
    return DRIVER_OP_UNSUPPORTED;
  }
  
  /* The driver id was specified. Use that. */
  if ( (*CdIo_all_drivers[*p_driver_id].have_driver)() &&
       *CdIo_all_drivers[*p_driver_id].close_tray ) {
    drc = (*CdIo_all_drivers[*p_driver_id].close_tray)(psz_drive);
    free(psz_drive);
    return drc;
  }
  return DRIVER_OP_UNSUPPORTED;
#endif
}
示例#2
0
int
main(int argc, const char *argv[])
{
  driver_return_code_t ret;
  driver_id_t driver_id = DRIVER_DEVICE;
  char *psz_drive = NULL;
  
  if (argc > 1) 
    psz_drive = strdup(argv[1]);

  if (!psz_drive) {
    psz_drive = cdio_get_default_device_driver(&driver_id);
    if (!psz_drive) {
      printf("Can't find a CD-ROM to eject\n");
      exit(1);
    }
  }
  ret = cdio_eject_media_drive(psz_drive);
  switch(ret) {
  case DRIVER_OP_UNSUPPORTED:
    printf("Eject not supported for %s.\n", psz_drive);
    break;
  case DRIVER_OP_SUCCESS:
    printf("CD-ROM drive %s ejected.\n", psz_drive);
    break;
  default:
    printf("Eject of CD-ROM drive %s failed.\n", psz_drive);
    break;
  }
  
  if (DRIVER_OP_SUCCESS == cdio_close_tray(psz_drive, &driver_id)) {
    printf("Closed tray of CD-ROM drive %s.\n", psz_drive);
  } else {
    printf("Closing tray of CD-ROM drive %s failed.\n", psz_drive);
  }
  free(psz_drive);

  ret = cdio_eject_media_drive(NULL);
  switch(ret) {
  case DRIVER_OP_UNSUPPORTED:
    printf("Eject not supported for default device.\n");
    break;
  case DRIVER_OP_SUCCESS:
    printf("CD-ROM drive ejected for default device.\n");
    break;
  default:
    printf("Eject of CD-ROM drive failed for default device.\n");
    break;
  }

  driver_id = DRIVER_DEVICE;
  if (DRIVER_OP_SUCCESS == cdio_close_tray(NULL, &driver_id)) {
    printf("Closed tray of CD-ROM drive for default disc driver:\n\t%s\n", 
	   cdio_driver_describe(driver_id));
  } else {
    printf("Closing tray of CD-ROM drive failed for default "
	   "disc driver:\n\t%s\n", cdio_driver_describe(driver_id));
  }

  return 0;
}
示例#3
0
/*!
  Return a string containing the default CD device if none is specified.
  if p_driver_id is DRIVER_UNKNOWN or DRIVER_DEVICE
  then find a suitable one set the default device for that.
  
  NULL is returned if we couldn't get a default device.
*/
char *
getDefaultDevice(/*in/out*/ driver_id_t &driver_id) 
{
  return cdio_get_default_device_driver(&driver_id);
}