diff options
author | Karel Zak | 2012-03-27 17:47:40 +0200 |
---|---|---|
committer | Karel Zak | 2012-03-27 17:47:40 +0200 |
commit | d7b0a90eacc5a4ec5886f50018679782efcd2a7b (patch) | |
tree | 533050459971a2731afa1fc3dff6029da8c8ce63 /misc-utils/eject.c | |
parent | eject: add -X from Fedora (diff) | |
download | kernel-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.c | 14 |
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")); } /* |