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 ()