Ok I’m working on unieject to improve it and find a good way to handle FreeBSD’s CD-Roms. Seems like the access to CD-Rom via ATAPI isn’t possible at all, and GENERIC kernel doesn’t enable atapicam (SCSI emulation), so I’m thinking of just adding a new GENTOO kernel configuration file with atapicam enabled.
At this point I have a working eject replacement for Linux (just CD-Roms for now, not scsi, tape and so on, also because I don’t have them at all), able to unmounting the devices if needed; and an ejecter for FreeBSD, able to eject CAM-enabled devices.
As the code to get the mountpoints and to unmount devices is way different between operating systems, I’ve autotooled unieject giving it a configure script.
Also, I started splitting it in unieject and libunieject as Sebastien suggested. It will tightly tied to libcdio, tho, as it’s not completely opaque to it. This probably is useful also, because many of the uses of libunieject could be on software which already manages CD-Rom drives.
I’ve moved from getopt_long to popt, too, as it’s way easier to manage that as the cli tool must be as simple as possible.
I’ll prepare a snapshot version of this bug I won’t do a “full” release until the FreeBSD version is able to unmount devices, too.
I’m also thinking about the versioning scheme… probably I’ll just release 1, 2, 3, and so on version, and get into minor version just when the changes are trivial.
BTW I’m using subversion locally to develop unieject, but maybe sooner or later I’ll be able to put that online directly.