On Tuesday 02 October 2012 13:57:41 Dave Reisner wrote:
On Tue, Oct 02, 2012 at 09:47:05PM +0400, Ivan Shapovalov wrote:
I have rfkill switches under path "/sys/class/net/$INTERFACE/phy80211/rfkill*" but not "/sys/class/net/$INTERFACE/rfkill" on two systems with iwlagn and ath9k drivers. Guess someone else also has these.
Signed-off-by: Ivan Shapovalov <intelfx100@gmail.com> ---
src/rfkill | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/rfkill b/src/rfkill index 12e1832..330544b 100644 --- a/src/rfkill +++ b/src/rfkill @@ -29,10 +29,18 @@ get_rf_path() {
report_fail "no rfkill switch with name $RFKILL_NAME"
else
path="/sys/class/net/$INTERFACE/rfkill"
+ + # There may be many rfkill switches attached to a single PHY + # For now take the first of them + path_phy=( $(find "/sys/class/net/$INTERFACE/phy80211/" -type d -name 'rfkill*') ) +
Is find really needed here? Can't this just be a glob, or do you really not know the depth of the rfkill* directory?
path_phy=("/sys/class/net/$INTERFACE/phy80211/rfkill"*)
If it isn't, this still isn't the proper way to read the results of a command into an array. Not sure if there's other bash4 syntax in netcfg, but I'd do something like:
mapfile -t path_phy < <(find ....)
else:
IFS=$'\n' read -rd '' -a path_phy < <(find ....)
if [[ -d "$path" ]]; then
echo "$path" return 0
- fi + elif [[ -n "${path_phy[0]}" ]]; then
And in combination with the globbing advice:
elif [[ ${path_phy[0]} && -e ${path_phy[0]} ]]; then
this saves you from having to enable nullglob.
Ok, thanks for the advice. Will do and resend the patch then.
+ echo "${path_phy[0]}" + return 0 + fi
report_fail "no rfkill switch available on interface $INTERFACE"
fi return 1