ubase/eject.c

57 lines
867 B
C

/* See LICENSE file for copyright and license details. */
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "util.h"
enum {
CDROM_EJECT = 0x5309,
CDROM_CLOSE_TRAY = 0x5319,
};
static void
usage(void)
{
eprintf("usage: %s [-t] [devname]\n", argv0);
}
int
main(int argc, char *argv[])
{
int fd, out;
char *cdrom = "/dev/sr0";
int tflag = 0;
ARGBEGIN {
case 't':
tflag = 1;
break;
default:
usage();
} ARGEND;
if (argc > 1)
usage();
else if (argc == 1)
cdrom = argv[0];
fd = open(cdrom, O_RDONLY | O_NONBLOCK);
if (fd < 0)
eprintf("open %s:", cdrom);
if (tflag) {
if (ioctl(fd, CDROM_CLOSE_TRAY, &out) < 0)
eprintf("ioctl:");
} else {
if (ioctl(fd, CDROM_EJECT, &out) < 0)
eprintf("ioctl:");
}
close(fd);
return 0;
}