commit: a3444e9abf16ecb6145e95a891433b3a79800170
Author: Rabi Shanker Guha <guha.rabishankar <AT> gmail <DOT> com>
AuthorDate: Fri Jan 9 15:02:28 2015 +0000
Commit: Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 15:02:28 2015 +0000
URL:
http://sources.gentoo.org/gitweb/?p=proj/netifrc.git;a=commit;h=a3444e9a
Compatibility layer for multiple init systems
---
sh/functions.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 126 insertions(+)
diff --git a/sh/functions.sh b/sh/functions.sh
new file mode 100644
index 0000000..368bb73
--- /dev/null
+++ b/sh/functions.sh
@@ -0,0 +1,126 @@
+# Compatibility layer for netifrc to work with multiple init
+# systems.
+
+# First check whether e* commands are present in the environment
+# XXX [[-n RC_GOT_FUNCTIONS]] ??
+if [ -n "$(command -v ebegin >/dev/null 2>&1)" ]; then
+ :
+
+# Then check for the presence of functions.sh
+elif [ -f /lib/gentoo/functions.sh ]; then
+ . /lib/gentoo/functions.sh
+
+else
+ echo "/lib/gentoo/functions.sh not found. Exiting"
+ exit -1
+fi
+
+# runscript functions
+if [ -z "$(command -v service_set_value >/dev/null 2>&1)" ]; then
+
+ # OpenRC functions used in depend
+ after() {
+ :
+ }
+ before() {
+ :
+ }
+ program() {
+ :
+ }
+ need() {
+ :
+ }
+
+ shell_var() {
+ local output=$1 sanitized_arg=
+ shift 1
+ for arg; do
+ sanitized_arg="${arg//[^a-zA-Z0-9_]/_}"
+ output="$output $arg"
+ done
+ echo "$output"
+ }
+
+ net_fs_list="afs ceph cifs coda davfs fuse fuse.sshfs gfs glusterfs
lustre ncpfs nfs nfs4 ocfs2 shfs smbfs"
+ is_net_fs()
+ {
+ [ -z "$1" ] && return 1
+
+ local fs=$(mount | grep " on $1 " | cut -f 5 -d ' ')
+ for x in $fs; do
+ for y in $net_fs_list; do
+ [ "$x" = "$y" ] && return 0
+ done
+ done
+ return 1
+ }
+
+ service_set_value() {
+ local OPTION="$1" VALUE="$2"
+ if [ -z "$OPTION" ]; then
+ eerror "service_set_value requires parameter KEY"
+ return
+ fi
+ local file="$OPTIONSDIR/${OPTION}"
+ echo "$VALUE" > $file
+ }
+ service_get_value() {
+ local OPTION="$1"
+ if [ -z "$OPTION" ]; then
+ eerror "service_get_value requires parameter KEY"
+ return
+ fi
+ local file="$OPTIONSDIR/${OPTION}"
+ cat $file 2>/dev/null
+ }
+ STATEFILE="${STATEDIR}/state"
+ # Internal Function
+ # Stores the state of netifrc in ${SVCDIR}/${SVCNAME}/state file
+ _mark_service() {
+ local state=$1
+ echo $state > $STATEFILE
+ }
+ #Internal Function
+ # Checks whether the state of netifrc is same as $1
+ _service_state() {
+ state=$(cat $STATEFILE 2>/dev/null)
+ if [ state = $1 ]; then
+ return 1
+ fi
+ return 0
+ }
+
+ mark_service_started() {
+ _mark_service started
+ }
+ mark_service_inactive() {
+ _mark_service inactive
+ }
+ mark_service_stopped() {
+ _mark_service stopped
+ }
+ service_started() {
+ _service_state started
+ return $?
+ }
+ service_inactive() {
+ _service_state inactive
+ return $?
+ }
+fi
+
+# Extracts the interface for the current invocation
+get_interface() {
+ case $INIT in
+ openrc)
+ printf ${RC_SVCNAME#*.};;
+ systemd)
+ printf ${RC_IFACE};;
+ *)
+ eerror "Init system not supported. Aborting"
+ exit -1;;
+ esac
+}
+
+# vim: ts=4 sw=4 noexpandtab