X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FMain.hs;h=4774c8778e5904a42378e53e2673ef112f3cdef7;hb=2404313e648301064041c12fdab8d2f976c26a64;hp=174efe28258e608ac48c488ae8225522699b7057;hpb=e47e94c4121f7b1669df1a97fbaf8e8c434c256d;p=hath.git diff --git a/src/Main.hs b/src/Main.hs index 174efe2..4774c87 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -3,6 +3,7 @@ where import Control.Monad (when) import Data.List ((\\), intercalate) +import qualified Data.List as List (sort) import Data.Maybe (catMaybes, isNothing) import System.Exit (ExitCode( ExitFailure ), exitWith) import System.IO (stderr, hPutStrLn) @@ -20,8 +21,9 @@ import Cidr ( min_octet2, min_octet3, min_octet4 ) +import qualified Cidr ( normalize ) import CommandLine( - Args( Regexed, Reduced, Duped, Diffed, Listed, barriers ), + Args( Regexed, Reduced, Duped, Diffed, Listed, barriers, normalize, sort ), get_args ) import ExitCodes ( exit_invalid_cidr ) import Octet () @@ -126,8 +128,11 @@ main = do let cidrs' = combine_all valid_cidrs let regexes = map (cidr_to_regex (barriers args)) cidrs' putStrLn $ alternate regexes - Reduced{} -> - mapM_ print (combine_all valid_cidrs) + Reduced{} -> do + -- Pre-normalize all CIDRs if the user asked for it. + let nrml_func = if (normalize args) then Cidr.normalize else id + let sort_func = if (sort args) then List.sort else id :: [Cidr] -> [Cidr] + mapM_ (print . nrml_func) (sort_func $ combine_all valid_cidrs) Duped{} -> mapM_ print dupes where