summaryrefslogtreecommitdiffstats
path: root/misc-utils/eject.c
diff options
context:
space:
mode:
authorKarel Zak2012-03-27 17:47:40 +0200
committerKarel Zak2012-03-27 17:47:40 +0200
commitd7b0a90eacc5a4ec5886f50018679782efcd2a7b (patch)
tree533050459971a2731afa1fc3dff6029da8c8ce63 /misc-utils/eject.c
parenteject: add -X from Fedora (diff)
downloadkernel-qcow2-util-linux-d7b0a90eacc5a4ec5886f50018679782efcd2a7b.tar.gz
kernel-qcow2-util-linux-d7b0a90eacc5a4ec5886f50018679782efcd2a7b.tar.xz
kernel-qcow2-util-linux-d7b0a90eacc5a4ec5886f50018679782efcd2a7b.zip
eject: new auto_eject code from Fedora
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'misc-utils/eject.c')
-rw-r--r--misc-utils/eject.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/misc-utils/eject.c b/misc-utils/eject.c
index c37930177..a0f409fe9 100644
--- a/misc-utils/eject.c
+++ b/misc-utils/eject.c
@@ -303,8 +303,18 @@ static char *find_device(const char *name)
/* Set or clear auto-eject mode. */
static void auto_eject(int fd, int on)
{
- if (ioctl(fd, CDROMEJECT_SW, on) != 0)
- err(EXIT_FAILURE, _("CD-ROM auto-eject command failed"));
+ int status = -1;
+
+#if defined(CDROM_SET_OPTIONS) && defined(CDROM_CLEAR_OPTIONS)
+ if (on)
+ status = ioctl(fd, CDROM_SET_OPTIONS, CDO_AUTO_EJECT);
+ else
+ status = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_AUTO_EJECT);
+#else
+ errno = ENOSYS;
+#endif
+ if (status < 0)
+ err(EXIT_FAILURE,_("CD-ROM auto-eject command failed"));
}
/*