blob: 30a96028fbd692f9233039f87b6e0cf2e356ef36 [file] [log] [blame]
idea take from opensuse
http://bugs.gentoo.org/261880
--- a/eject.c
+++ b/eject.c
@@ -576,6 +576,21 @@ static void ToggleTray(int fd)
#ifdef CDROMCLOSETRAY
+ /* Ask the CDROM for info, otherwise fall back to manual */
+ switch (ioctl(fd, CDROM_DRIVE_STATUS)) {
+ case CDS_TRAY_OPEN:
+ CloseTray(fd);
+ return;
+
+ case CDS_NO_DISC:
+ case CDS_DISC_OK:
+ if (ioctl(fd, CDROMEJECT, 0) < 0) {
+ perror("ioctl");
+ exit(1);
+ }
+ return;
+ }
+
/* Try to open the CDROM tray and measure the time therefor
* needed. In my experience the function needs less than 0.05
* seconds if the tray was already open, and at least 1.5 seconds