/*! 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 }
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; }
/*! 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); }