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.
+ echo "${path_phy[0]}" + return 0 + fi report_fail "no rfkill switch available on interface $INTERFACE" fi return 1 -- 1.7.12.2