From e9bdde561442b7e4a45a64853875545b50e68b37 Mon Sep 17 00:00:00 2001 From: Ricard Illa Date: Sun, 22 May 2022 14:09:44 +0200 Subject: [PATCH] do not split when colons are escaped --- src/Monitors/Net.hs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Monitors/Net.hs b/src/Monitors/Net.hs index 9297cac..f2e5ef3 100644 --- a/src/Monitors/Net.hs +++ b/src/Monitors/Net.hs @@ -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