summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-fs/udftools/files/pktcdvd.init')
-rw-r--r--sys-fs/udftools/files/pktcdvd.init62
1 files changed, 62 insertions, 0 deletions
diff --git a/sys-fs/udftools/files/pktcdvd.init b/sys-fs/udftools/files/pktcdvd.init
new file mode 100644
index 000000000000..81eb917b355c
--- /dev/null
+++ b/sys-fs/udftools/files/pktcdvd.init
@@ -0,0 +1,62 @@
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2
+# $Id$
+
+depend() {
+ need localmount modules
+}
+
+checkconfig() {
+ if ! [ -e /dev/pktcdvd/control ]; then
+ eerror "Could not find packet-writing control device at /dev/pktcdvd/control"
+ eerror "Please ensure that your kernel includes packet writing support,"
+ eerror "and if modular, ensure that the module is loaded."
+ return 1
+ fi
+}
+
+get_rw_devices() {
+ devices_raw=$(sed -re '/^drive name:/I!d; s/.*:\s+//' /proc/sys/dev/cdrom/info)
+ count=0
+ for i in $devices_raw; do
+ eval "devices_$count=\"\$i\""
+ count=$(( $count + 1 ))
+ done
+ devs=""
+
+ cdrw_caps=$(sed -re '/^Can write CD-RW:/I!d; s/.*:\s+//' /proc/sys/dev/cdrom/info)
+
+ count=0
+ for i in $cdrw_caps; do
+ [ "$i" -eq 1 ] && eval "devs=\"\$devs \$devices_$count\""
+ count=$(( $count + 1 ))
+ done
+
+ echo ${devs}
+}
+
+start() {
+ checkconfig || return 1
+
+ for i in $(get_rw_devices)
+ do
+ devnode="/dev/${i}"
+ [ -e "${devnode}" ] || continue
+
+ /usr/bin/pktsetup "${i}" "${devnode}" > /dev/null
+ [ -e "/dev/pktcdvd/${i}" ] || continue
+ chmod 660 "/dev/pktcdvd/${i}"
+ chgrp cdrw "/dev/pktcdvd/${i}"
+ done
+}
+
+stop() {
+ checkconfig || return 1
+
+ for i in $(get_rw_devices)
+ do
+ /usr/bin/pktsetup -d "${i}" > /dev/null
+ done
+}
+