aboutsummaryrefslogtreecommitdiffstats
path: root/main/eudev/udev-postmount.initd
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-07-17 12:53:31 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2015-07-17 12:53:31 +0000
commitb96bd6ed76c007ff0975e954d1bf20d1213eaf90 (patch)
treea332ee4ff5f3482fc9bf77e00fd849bbffd3f056 /main/eudev/udev-postmount.initd
parent8c4b85ef230ac621b88f4d7e64e09d1c5d5e84e7 (diff)
main/eudev: add udev-postmount script
Diffstat (limited to 'main/eudev/udev-postmount.initd')
-rw-r--r--main/eudev/udev-postmount.initd55
1 files changed, 55 insertions, 0 deletions
diff --git a/main/eudev/udev-postmount.initd b/main/eudev/udev-postmount.initd
new file mode 100644
index 00000000000..f1f94f48902
--- /dev/null
+++ b/main/eudev/udev-postmount.initd
@@ -0,0 +1,55 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend()
+{
+ need localmount
+ keyword -vserver -lxc
+}
+
+dir_writeable()
+{
+ touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$
+}
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules()
+{
+ # create /etc/udev/rules.d if it does not exist and /etc/udev is writable
+ [ -d /etc/udev/rules.d ] || \
+ dir_writeable /etc/udev && \
+ mkdir -p /etc/udev/rules.d
+
+ # only continue if rules-directory is writable
+ dir_writeable /etc/udev/rules.d || return 0
+
+ local file dest
+ for file in /run/udev/tmp-rules--*; do
+ dest=${file##*tmp-rules--}
+ [ "$dest" = '*' ] && break
+ type=${dest##70-persistent-}
+ type=${type%%.rules}
+ ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+ cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+ eend $? "Failed moving persistent rules!"
+ done
+}
+
+start()
+{
+ # check if this system uses udev
+ [ -d /run/udev ] || return 0
+
+ # store persistent-rules that got created while booting
+ # when / was still read-only
+ store_persistent_rules
+}
+
+stop()
+{
+ return 0
+}
+
+# vim:ts=4