module Photoname.Links ( describeHardLinkPolicy , linksTest ) where import System.Posix ( FileStatus, linkCount ) import Text.Printf ( printf ) import Photoname.Common ( Links (Exactly, NoLimit) ) import Photoname.Log ( infoM, lname ) linksTest :: Links -> FileStatus -> Bool linksTest :: Links -> FileStatus -> Bool linksTest (Exactly CNlink linkCountWanted) FileStatus fileStatus = CNlink linkCountWanted CNlink -> CNlink -> Bool forall a. Eq a => a -> a -> Bool == FileStatus -> CNlink linkCount FileStatus fileStatus linksTest Links NoLimit FileStatus _ = Bool True describeHardLinkPolicy :: Links -> IO () describeHardLinkPolicy :: Links -> IO () describeHardLinkPolicy Links l = case Links l of Exactly CNlink 1 -> String -> String -> IO () infoM String lname String "Only processing files with 1 hard link" Exactly CNlink n -> String -> String -> IO () infoM String lname (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b $ String -> Integer -> String forall r. PrintfType r => String -> r printf String "Only processing files with %d hard links" (CNlink -> Integer forall a. Integral a => a -> Integer toInteger CNlink n) Links NoLimit -> () -> IO () forall (f :: * -> *) a. Applicative f => a -> f a pure ()