summaryrefslogtreecommitdiffstats
path: root/sys-utils/eject.c
diff options
context:
space:
mode:
authorSami Kerola2014-09-06 19:39:24 +0200
committerSami Kerola2014-09-19 20:31:02 +0200
commit25a3fa815964813d3b89ac82b4f0d1ba1cb2e7bc (patch)
tree3b400063a68e5815389e2f66561b9fcb442ae2f8 /sys-utils/eject.c
parenteject: add struct eject_control to remove global variables (diff)
downloadkernel-qcow2-util-linux-25a3fa815964813d3b89ac82b4f0d1ba1cb2e7bc.tar.gz
kernel-qcow2-util-linux-25a3fa815964813d3b89ac82b4f0d1ba1cb2e7bc.tar.xz
kernel-qcow2-util-linux-25a3fa815964813d3b89ac82b4f0d1ba1cb2e7bc.zip
eject: make open_device() and select_speed() to use struct eject_control
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'sys-utils/eject.c')
-rw-r--r--sys-utils/eject.c54
1 files changed, 25 insertions, 29 deletions
diff --git a/sys-utils/eject.c b/sys-utils/eject.c
index 5ca1e7538..91f1102ab 100644
--- a/sys-utils/eject.c
+++ b/sys-utils/eject.c
@@ -488,10 +488,10 @@ static void toggle_tray(int fd)
* Thanks to Roland Krivanek (krivanek@fmph.uniba.sk)
* http://dmpc.dbp.fmph.uniba.sk/~krivanek/cdrom_speed/
*/
-static void select_speed(int fd, int speed)
+static void select_speed(const struct eject_control *ctl)
{
#ifdef CDROM_SELECT_SPEED
- if (ioctl(fd, CDROM_SELECT_SPEED, speed) != 0)
+ if (ioctl(ctl->fd, CDROM_SELECT_SPEED, ctl->x_arg) != 0)
err(EXIT_FAILURE, _("CD-ROM select speed command failed"));
#else
warnx(_("CD-ROM select speed command not supported by this kernel"));
@@ -560,22 +560,22 @@ static int read_speed(const char *devname)
/*
* List Speed of CD-ROM drive.
*/
-static void list_speeds(const struct eject_control *ctl)
+static void list_speeds(struct eject_control *ctl)
{
#ifdef CDROM_SELECT_SPEED
- int max_speed, curr_speed = 0, prev_speed;
+ int max_speed, curr_speed = 0;
- select_speed(ctl->fd, 0);
+ select_speed(ctl);
max_speed = read_speed(ctl->device);
while (curr_speed < max_speed) {
- prev_speed = curr_speed;
- select_speed(ctl->fd, prev_speed + 1);
+ ctl->x_arg = curr_speed + 1;
+ select_speed(ctl);
curr_speed = read_speed(ctl->device);
- if (curr_speed > prev_speed)
+ if (ctl->x_arg < curr_speed)
printf("%d ", curr_speed);
else
- curr_speed = prev_speed + 1;
+ curr_speed = ctl->x_arg + 1;
}
printf("\n");
@@ -704,15 +704,13 @@ static void umount_one(const struct eject_control *ctl, const char *name)
}
/* Open a device file. */
-static int open_device(const char *name)
+static void open_device(struct eject_control *ctl)
{
- int fd = open(name, O_RDWR|O_NONBLOCK);
-
- if (fd < 0)
- fd = open(name, O_RDONLY|O_NONBLOCK);
- if (fd == -1)
- err(EXIT_FAILURE, _("cannot open %s"), name);
- return fd;
+ ctl->fd = open(ctl->device, O_RDWR | O_NONBLOCK);
+ if (ctl->fd < 0)
+ ctl->fd = open(ctl->device, O_RDONLY | O_NONBLOCK);
+ if (ctl->fd == -1)
+ err(EXIT_FAILURE, _("cannot open %s"), ctl->device);
}
/*
@@ -932,10 +930,8 @@ done:
/* handle -x option */
-static void set_device_speed(const struct eject_control *ctl)
+static void set_device_speed(struct eject_control *ctl)
{
- int fd;
-
if (!ctl->x_option)
return;
@@ -944,8 +940,8 @@ static void set_device_speed(const struct eject_control *ctl)
else
verbose(ctl, _("setting CD-ROM speed to %ldX"), ctl->x_arg);
- fd = open_device(ctl->device);
- select_speed(fd, ctl->x_arg);
+ open_device(ctl);
+ select_speed(ctl);
exit(EXIT_SUCCESS);
}
@@ -1031,7 +1027,7 @@ int main(int argc, char **argv)
/* handle -i option */
if (ctl.i_option) {
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
manual_eject(&ctl);
return EXIT_SUCCESS;
}
@@ -1042,7 +1038,7 @@ int main(int argc, char **argv)
verbose(&ctl, _("%s: enabling auto-eject mode"), ctl.device);
else
verbose(&ctl, _("%s: disabling auto-eject mode"), ctl.device);
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
auto_eject(&ctl);
return EXIT_SUCCESS;
}
@@ -1050,7 +1046,7 @@ int main(int argc, char **argv)
/* handle -t option */
if (ctl.t_option) {
verbose(&ctl, _("%s: closing tray"), ctl.device);
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
close_tray(ctl.fd);
set_device_speed(&ctl);
return EXIT_SUCCESS;
@@ -1059,7 +1055,7 @@ int main(int argc, char **argv)
/* handle -T option */
if (ctl.T_option) {
verbose(&ctl, _("%s: toggling tray"), ctl.device);
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
toggle_tray(ctl.fd);
set_device_speed(&ctl);
return EXIT_SUCCESS;
@@ -1068,7 +1064,7 @@ int main(int argc, char **argv)
/* handle -X option */
if (ctl.X_option) {
verbose(&ctl, _("%s: listing CD-ROM speed"), ctl.device);
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
list_speeds(&ctl);
return EXIT_SUCCESS;
}
@@ -1100,7 +1096,7 @@ int main(int argc, char **argv)
/* handle -c option */
if (ctl.c_option) {
verbose(&ctl, _("%s: selecting CD-ROM disc #%ld"), ctl.device, ctl.c_arg);
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
changer_select(&ctl);
set_device_speed(&ctl);
return EXIT_SUCCESS;
@@ -1111,7 +1107,7 @@ int main(int argc, char **argv)
ctl.r_option = ctl.s_option = ctl.f_option = ctl.q_option = 1;
/* open device */
- ctl.fd = open_device(ctl.device);
+ open_device(&ctl);
/* try various methods of ejecting until it works */
if (ctl.r_option) {