Skip to content

Commit

Permalink
feat: Use anyhow on OSX as well
Browse files Browse the repository at this point in the history
  • Loading branch information
dilawar committed Jul 17, 2024
1 parent 8ac8fb5 commit a544339
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/sys/macos.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
use crate::{Error, Result, Wifi};
use crate::Wifi;
use anyhow::Context;

/// Returns a list of WiFi hotspots in your area - (OSX/MacOS) uses `airport`
pub(crate) fn scan() -> Result<Vec<Wifi>> {
pub(crate) fn scan() -> anyhow::Result<Vec<Wifi>> {
use std::process::Command;

let output = Command::new(
"/System/Library/PrivateFrameworks/Apple80211.\
framework/Versions/Current/Resources/airport",
)
.arg("-s")
.output()
.map_err(|_| Error::CommandNotFound)?;
.output()?;

let data = String::from_utf8_lossy(&output.stdout);

parse_airport(&data)
}

fn parse_airport(network_list: &str) -> Result<Vec<Wifi>> {
fn parse_airport(network_list: &str) -> anyhow::Result<Vec<Wifi>> {
let mut wifis: Vec<Wifi> = Vec::new();
let mut lines = network_list.lines();
let headers = match lines.next() {
Expand All @@ -31,9 +32,9 @@ fn parse_airport(network_list: &str) -> Result<Vec<Wifi>> {
.map(|header| {
headers_string
.find(header)
.ok_or(Error::HeaderNotFound(header))
.context("HeaderNotFound in {header:?}")
})
.collect::<Result<Vec<_>>>()?;
.collect::<anyhow::Result<Vec<_>>>()?;
let col_mac = col_headers[0];
let col_rrsi = col_headers[1];
let col_channel = col_headers[2];
Expand Down

0 comments on commit a544339

Please sign in to comment.