Sophie

Sophie

distrib > Mandriva > 2009.0 > x86_64 > by-pkgid > 514e1ab4804215e72fcbca147944180f > files > 5

eject-2.1.5-5.1mdv2009.0.src.rpm

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