summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2012-04-05 12:24:20 +0200
committerKarel Zak2012-04-05 12:24:20 +0200
commit8bb4a6cb88eb65bb97fffe18bc334b3ff0ab862b (patch)
tree5a65a9ed93fad654a84b224a672d439d1bdb9d63
parenteject: check for hotplug/removable attribute (diff)
downloadkernel-qcow2-util-linux-8bb4a6cb88eb65bb97fffe18bc334b3ff0ab862b.tar.gz
kernel-qcow2-util-linux-8bb4a6cb88eb65bb97fffe18bc334b3ff0ab862b.tar.xz
kernel-qcow2-util-linux-8bb4a6cb88eb65bb97fffe18bc334b3ff0ab862b.zip
eject: add --force option
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--misc-utils/eject.16
-rw-r--r--misc-utils/eject.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/misc-utils/eject.1 b/misc-utils/eject.1
index 4839152a8..f90ebe18b 100644
--- a/misc-utils/eject.1
+++ b/misc-utils/eject.1
@@ -9,7 +9,7 @@ eject \- eject removable media
.SH SYNOPSIS
eject \-h
.br
-eject [\-vnrsfqp] [<name>]
+eject [\-vnrsfFqp] [<name>]
.br
eject [\-vn] \-d
.br
@@ -71,6 +71,10 @@ If invoked with this option,
lists the default device name.
.TP 0.5i
+.B \-F
+Force eject, don't check device type.
+
+.TP 0.5i
.B \-a on|1|off|0
This option controls the auto-eject mode, supported by some devices.
When enabled, the drive automatically ejects when the device is
diff --git a/misc-utils/eject.c b/misc-utils/eject.c
index 1d98e0828..34d7fb62e 100644
--- a/misc-utils/eject.c
+++ b/misc-utils/eject.c
@@ -77,6 +77,7 @@ static int a_option; /* command flags and arguments */
static int c_option;
static int d_option;
static int f_option;
+static int F_option;
static int n_option;
static int q_option;
static int r_option;
@@ -137,6 +138,7 @@ static void __attribute__ ((__noreturn__)) usage(FILE * out)
" -d, --default display default device\n"
" -a, --auto turn auto-eject feature on or off\n"
" -c, --changerslot switch discs on a CD-ROM changer\n"
+ " -F, --force don't care about device type\n"
" -i, --manualeject <on|off> toggle manual eject protection on/off\n"
" -t, --trayclose close tray\n"
" -T, --traytoggle toggle tray\n"
@@ -168,6 +170,7 @@ static void parse_args(int argc, char **argv, char **device)
{"verbose", no_argument, NULL, 'v'},
{"default", no_argument, NULL, 'd'},
{"auto", required_argument, NULL, 'a'},
+ {"force", no_argument, NULL, 'F'},
{"changerslot", required_argument, NULL, 'c'},
{"manualeject", required_argument, NULL, 'i'},
{"trayclose", no_argument, NULL, 't'},
@@ -187,7 +190,7 @@ static void parse_args(int argc, char **argv, char **device)
int c;
while ((c = getopt_long(argc, argv,
- "a:c:i:x:dfhnqrstTXvVpm", long_opts, NULL)) != -1) {
+ "a:c:i:x:dfFhnqrstTXvVpm", long_opts, NULL)) != -1) {
switch (c) {
case 'a':
a_option = 1;
@@ -212,6 +215,9 @@ static void parse_args(int argc, char **argv, char **device)
case 'f':
f_option = 1;
break;
+ case 'F':
+ F_option = 1;
+ break;
case 'h':
usage(stdout);
break;
@@ -947,7 +953,7 @@ int main(int argc, char **argv)
} else
verbose(_("%s: is whole-disk device"), device);
- if (!is_hotpluggable(device))
+ if (F_option == 0 && is_hotpluggable(device) == 0)
errx(EXIT_FAILURE, _("%s: is not hot-pluggable device"), device);
/* handle -n option */