[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    [OE-core] [PATCH] wpa-supplicant.sh: updated to modern init script format, refactoring, and new rest
From:       rehsack () gmail ! com (Jens Rehsack)
Date:       2016-02-29 18:59:18
Message-ID: 4FF44D88-AB08-4912-BCF0-B05DAE3B8DA7 () gmail ! com
[Download RAW message or body]


> Am 29.02.2016 um 18:49 schrieb Andrew Wichmann <awichmann at emacinc.com>:
> 
> Refactored the script by placing the logic of starting and stopping into separate \
> functions, added a switch statement to act on $1, then refactored multiple if \
> statements into one line tests.

Why don't re-use the one the Debian folks provide \
(http://lists.openembedded.org/pipermail/openembedded-core/2016-February/118235.html)?
 This would free resources to develop things we cannot steal from others ;)

Cheers

> Check_socket function was extracted to increase the readability of the start \
> function. Created restart functionality by calling stop then start
> Added a BEGIN INIT INFO comment section (should be verified for accuracy)
> Sourced the rcS default file to use the VERBOSE variable instead of VERBOSITY
> Defined WPA_COMMON_CTRL_IFACE = "/var/run/wpa_supplicant" that was previously acted \
> upon but not defined. 
> Signed-off-by: Andrew Wichmann <awichmann at emacinc.com>
> ---
> .../wpa-supplicant/wpa-supplicant.sh               | 91 +++++++++++++---------
> 1 file changed, 54 insertions(+), 37 deletions(-)
> 
> diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh \
> b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh index \
>                 5c9e5d3..3623cbe 100644
> --- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
> +++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/wpa-supplicant.sh
> @@ -1,72 +1,62 @@
> -#!/bin/sh
> +#!/bin/sh -e
> +### BEGIN INIT INFO
> +# Provides:			wpa_supplicant
> +# Required-Start:	$local_fs
> +# Required-Stop:	$local_fs
> +# Default-Start:	2 3 4 5
> +# Default-Stop:		0 1 6
> +# Short-Description: A script to start, stop, or restart the wpa_supplicant \
> daemon. +### END INIT INFO
> 
> 
> +IFACE="wlan0"
> WPA_SUP_BIN="/usr/sbin/wpa_supplicant"
> WPA_SUP_PNAME="wpa_supplicant"
> WPA_SUP_PIDFILE="/var/run/wpa_supplicant.$IFACE.pid"
> WPA_SUP_OPTIONS="-B -P $WPA_SUP_PIDFILE -i $IFACE"
> +WPA_COMMON_CTRL_IFACE="/var/run/wpa_supplicant"
> +IF_WPA_CONF="/etc/wpa_supplicant.conf"
> 
> -VERBOSITY=0
> 
> +[ -s "/etc/default/rcS" ] && . "/etc/default/rcS"
> 
> -if [ -s "$IF_WPA_CONF" ]; then
> -	WPA_SUP_CONF="-c $IF_WPA_CONF"
> -else
> -	exit 0
> -fi
> +[ ! -s "$IF_WPA_CONF" ] && exit 0
> +WPA_SUP_CONF="-c $IF_WPA_CONF"
> 
> if [ ! -x "$WPA_SUP_BIN" ]; then
> 
> -	if [ "$VERBOSITY" = "1" ]; then
> -		echo "$WPA_SUP_PNAME: binaries not executable or missing from $WPA_SUP_BIN"
> -	fi
> +	[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: binaries not executable or \
> missing from $WPA_SUP_BIN" 
> 	exit 1
> fi
> 
> -if [ "$MODE" = "start" ] ; then
> +start() {
> 	# driver type of interface, defaults to wext when undefined
> 	if [ -s "/etc/wpa_supplicant/driver.$IFACE" ]; then
> 		IF_WPA_DRIVER=$(cat "/etc/wpa_supplicant/driver.$IFACE")
> 	elif [ -z "$IF_WPA_DRIVER" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: wpa-driver not provided, using \"wext\""
> -		fi
> -
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: wpa-driver not provided, using \
> \"wext\"" +
> 		IF_WPA_DRIVER="wext"
> 	fi
> 
> 	# if we have passed the criteria, start wpa_supplicant
> 	if [ -n "$WPA_SUP_CONF" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF -D \
>                 $IF_WPA_DRIVER"
> -		fi
> -
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: $WPA_SUP_BIN $WPA_SUP_OPTIONS \
> $WPA_SUP_CONF -D $IF_WPA_DRIVER" +
> 		start-stop-daemon --start --quiet \
> 			--name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
> 			--  $WPA_SUP_OPTIONS $WPA_SUP_CONF -D $IF_WPA_DRIVER
> 	fi
> +	check_socket
> +}
> 
> -	# if the interface socket exists, then wpa_supplicant was invoked successfully
> -	if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]; then
> -
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: ctrl_interface socket located at \
>                 $WPA_COMMON_CTRL_IFACE/$IFACE"
> -		fi
> -
> -		exit 0
> -
> -	fi
> -
> -elif [ "$MODE" = "stop" ]; then
> -
> +stop() {
> 	if [ -f "$WPA_SUP_PIDFILE" ]; then
> 
> -		if [ "$VERBOSITY" = "1" ]; then
> -			echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME daemon"
> -		fi
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: terminating $WPA_SUP_PNAME \
> daemon" 
> 		start-stop-daemon --stop --quiet \
> 			--name $WPA_SUP_PNAME --pidfile	$WPA_SUP_PIDFILE
> @@ -79,7 +69,34 @@ elif [ "$MODE" = "stop" ]; then
> 			rm -f $WPA_SUP_PIDFILE
> 		fi
> 	fi
> +	exit 0
> +}
> 
> -fi
> +check_socket(){
> +	# if the interface socket exists, then wpa_supplicant was invoked successfully
> +	if [ -S "$WPA_COMMON_CTRL_IFACE/$IFACE" ]
> +	then
> +		[ "$VERBOSE" = "yes" ] && echo "$WPA_SUP_PNAME: ctrl_interface socket located \
> at$WPA_COMMON_CTRL_IFACE/$IFACE" +		exit 0
> +	fi
> +	exit 1
> +}
> +
> +case "$1" in
> +	start)
> +		start
> +		;;
> +	stop)
> +		stop
> +		;;
> +	restart)
> +		stop
> +		start
> +		;;
> +	*)
> +		echo "Usage: /etc/init.d/wpa_supplicant {start|stop|restart}"
> +		exit 1
> +
> +esac
> 
> -exit 0
> +exit 1
> --
> 1.9.1
> 
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

--
Jens Rehsack - rehsack at gmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160229/34dac5af/attachment.sig>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic