summaryrefslogtreecommitdiffstats
path: root/perl-install/network/monitor.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network/monitor.pm')
-rw-r--r--perl-install/network/monitor.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/perl-install/network/monitor.pm b/perl-install/network/monitor.pm
index eea814bc8..38912af97 100644
--- a/perl-install/network/monitor.pm
+++ b/perl-install/network/monitor.pm
@@ -21,8 +21,12 @@ sub list_wireless {
my %networks;
#- bssid / frequency / signal level / flags / ssid
while ($results =~ /^((?:[0-9a-f]{2}:){5}[0-9a-f]{2})\t(\d+)\t(\d+)\t(.*?)\t(.*)$/mg) {
- $networks{$1} = { frequency => $2, signal_level => $3, flags => $4, ssid => $5 };
- $networks{$1}{approx_level} = 20 + min(80, int($3/20)*20);
+ # wpa_supplicant may list the network two times, use ||=
+ $networks{$1}{frequency} ||= $2;
+ $networks{$1}{signal_level} ||= $3;
+ $networks{$1}{flags} ||= $4;
+ $networks{$1}{ssid} ||= $5 if $5 ne '<hidden>';
+ $networks{$1}{approx_level} ||= 20 + min(80, int($3/20)*20);
}
my $list;
eval { $list = $o->call_method('ListNetworks') };