[arch-commits] Commit in ifplugd/trunk (ifplugd ifplugd.action)

Dave Reisner dreisner at archlinux.org
Sat Apr 28 14:41:44 UTC 2012


    Date: Saturday, April 28, 2012 @ 10:41:44
  Author: dreisner
Revision: 157453

cleanup rc.d and action scripts (FS#19313)

Modified:
  ifplugd/trunk/ifplugd
  ifplugd/trunk/ifplugd.action

----------------+
 ifplugd        |  110 ++++++++++++++++++++++++++++++++++---------------------
 ifplugd.action |   17 ++++----
 2 files changed, 77 insertions(+), 50 deletions(-)

Modified: ifplugd
===================================================================
--- ifplugd	2012-04-28 13:14:16 UTC (rev 157452)
+++ ifplugd	2012-04-28 14:41:44 UTC (rev 157453)
@@ -5,47 +5,65 @@
 . /etc/rc.conf
 . /etc/rc.d/functions
 
+shopt -s extglob
+
 # env vars
-NAME=ifplugd
-CFG=/etc/ifplugd/ifplugd.conf
-IFPLUGD=/usr/sbin/ifplugd
-PID=`pidof -o %PPID $IFPLUGD`
+daemonname=ifplugd
+cfg=/etc/ifplugd/ifplugd.conf
+PID=$(pgrep -ox ifplugd)
 
 # source configuration file
-[ -f $CFG ] && . $CFG
+[[ -r $cfg ]] && . "$cfg"
 
 # discover interfaces to monitor
-# (replacing INTERFACES with NET_IFS, since AL
+# (replacing INTERFACES with net_ifs, since AL
 # already uses it in /etc/rc.conf)
-[ -z "$NET_IFS" ] && 
-  NET_IFS=$(sed -ne 's/.*\<\(eth[0-9]*\):.*/\1/p' /proc/net/dev)
+if [[ -z $net_ifs ]]; then 
+  net_ifs=(/sys/class/net/!(lo))
+  net_ifs=("${net_ifs[@]##*/}")
+fi
 
-case "$1" in
+case $1 in
   start)
-    stat_busy "Starting $NAME"
-    [ -z "$PID" ] && ( for IF in $NET_IFS ; do
-      A="`eval echo \$\{ARGS_${IF}\}`"
-      [ -z "$A" ] && A="$ARGS"
-      $IFPLUGD -i $IF $A
-      echo -n " $IF"
-    done )
-    if [ $? -gt 0 ]; then
+    stat_busy "Starting $daemonname"
+    if [[ $PID ]]; then
       stat_fail
+      exit 1
+    fi
+
+    for nic in "${net_ifs[@]}"; do
+      args=ARGS_$nic
+      [[ -z ${!args} ]] && args=$ARGS || args=${!args}
+      ifplugd -i "$nic" $args || (( ++err ))
+      printf ' %s' "$nic"
+    done
+    unset nic
+
+    if (( err )); then
+      stat_fail
+      exit 1
     else
-      add_daemon $NAME
+      add_daemon $daemonname
       stat_done
     fi
     ;;
   stop)
-    stat_busy "Stopping $NAME"
-    [ ! -z "$PID" ] && ( for IF in $NET_IFS ; do
-      $IFPLUGD -k -i $IF
-      echo -n " $IF"
-    done )
-    if [ $? -gt 0 ]; then
+    stat_busy "Stopping $daemonname"
+    if [[ -z $PID ]]; then
       stat_fail
+      exit 1
+    fi
+
+    for nic in "${net_ifs[@]}"; do
+      ifplugd -k -i "$nic" || (( ++err ))
+      printf ' %s' "$nic"
+    done
+
+    if (( err )); then
+      stat_fail
+      exit 1
     else
-      rm_daemon $NAME
+      rm_daemon $daemonname
       stat_done
     fi
     ;;
@@ -55,35 +73,43 @@
     $0 start
     ;;
   status)
-    for IF in $NET_IFS; do
-      $IFPLUGD -c -i $IF
+    for nic in "${net_ifs[@]}"; do
+      ifplugd -c -i "$nic"
     done
+    unset nic
     ;;
   suspend)
-    stat_busy "Suspending $NAME"
-    for IF in $NET_IFS; do
-      $IFPLUGD -S -i $IF
-      echo -n " $IF"
-    done 
-    if [ $? -gt 0 ]; then
+    stat_busy "Suspending $daemonname"
+    for nic in "${net_ifs[@]}"; do
+      ifplugd -S -i $nic || (( ++err ))
+      printf ' %s' "$nic"
+    done
+    unset nic
+
+    if (( err )); then
       stat_fail
+      exit 1
     else
       stat_done
-    fi      
+    fi
     ;;
   resume)
-    stat_busy "Resuming $NAME"
-    for IF in $NET_IFS; do
-      $IFPLUGD -R -i $IF
-      echo -n " $IF"
+    stat_busy "Resuming $daemonname"
+
+    for nic in "${net_ifs[@]}"; do
+      ifplugd -R -i $nic || (( ++err ))
+      printf ' %s' "$nic"
     done
-    if [ $? -gt 0 ]; then
+    unset nic
+
+    if (( err )); then
       stat_fail
+      exit 1
     else
       stat_done
-    fi      
-    ;;  
+    fi
+    ;;
   *)
-    echo "usage: $0 {start|stop|restart|status|suspend|resume}"  
+    echo "usage: $0 {start|stop|restart|status|suspend|resume}"
 esac
 exit 0

Modified: ifplugd.action
===================================================================
--- ifplugd.action	2012-04-28 13:14:16 UTC (rev 157452)
+++ ifplugd.action	2012-04-28 14:41:44 UTC (rev 157453)
@@ -1,28 +1,29 @@
-#!/bin/sh
+#!/bin/bash
 #
 # ifplugd.action script for Arch Linux
+#
 
 . /etc/rc.conf
 . /etc/rc.d/functions
 
-plugscript(){ #argumets are ifup|ifdown, interface_name
+plugscript() { # arguments are ifup|ifdown, interface_name
   for script in /etc/ifplugd/$1.d/*.sh; do
-    [ -x $script ] && $script $2
+    [[ -x $script ]] && "$script" $2
   done
   return 0
 }
 
-case "$2" in
+case $2 in
   up)
-    /etc/rc.d/network ifup $1
-    plugscript ifup $1
+    /etc/rc.d/network ifup "$1"
+    plugscript ifup "$1"
   ;;
   down)
-    plugscript ifdown $1
+    plugscript ifdown "$1"
     /etc/rc.d/network ifdown $1
   ;;
   *)
-    echo "Wrong arguments" > /dev/stderr
+    echo "Wrong arguments" >&2
   ;;
 esac
 




More information about the arch-commits mailing list