do not split when colons are escaped
parent
24a52ffb02
commit
e9bdde5614
|
@ -1,6 +1,5 @@
|
|||
module Monitors.Net (queryNet) where
|
||||
|
||||
import Data.List.Split
|
||||
import Data.List
|
||||
import Data.Maybe
|
||||
import System.Process
|
||||
|
@ -41,7 +40,7 @@ getDevStatus cmd = readProcess cmd args "" >>= mapM (buildDeviceData cmd) . line
|
|||
buildDeviceData :: String -> String -> IO DeviceData
|
||||
buildDeviceData cmd x =
|
||||
let
|
||||
[d,t,state] = splitOn ":" x
|
||||
[d,t,state] = splitFields x
|
||||
deviceType = readDeviceType t
|
||||
connected = state == "connected"
|
||||
in do
|
||||
|
@ -58,6 +57,11 @@ readDeviceType "wifi" = Wifi
|
|||
readDeviceType "ethernet" = Ethernet
|
||||
readDeviceType _ = OtherDevice
|
||||
|
||||
|
||||
splitFields :: String -> [String]
|
||||
splitFields = splitRegex (mkRegex "[^\\]:")
|
||||
|
||||
|
||||
getWifiSignal :: String -> DeviceType -> String -> IO (Maybe Int)
|
||||
getWifiSignal cmd Wifi dev = parseStdout <$> readProcess cmd args ""
|
||||
where
|
||||
|
@ -67,9 +71,8 @@ getWifiSignal cmd Wifi dev = parseStdout <$> readProcess cmd args ""
|
|||
, "device", "wifi", "list"
|
||||
, "ifname", dev
|
||||
]
|
||||
splt = splitOn ":"
|
||||
isActive = (=="*") . head . splt
|
||||
readVal = read . (!! 1) . splt
|
||||
isActive = (=="*") . head . splitFields
|
||||
readVal = read . (!! 1) . splitFields
|
||||
parseStdout = fmap readVal . find isActive . lines
|
||||
getWifiSignal _ _ _ = return Nothing
|
||||
|
||||
|
|
Loading…
Reference in New Issue