summaryrefslogtreecommitdiff
path: root/Command/Find.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-11-22 14:06:31 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-11-22 14:06:31 -0400
commit7f7ae7a3b1cdfbc61879189dfe04a637690015aa (patch)
tree842546a50ff6def034f19a0e6e5c616a66d9a9d5 /Command/Find.hs
parentfc2f0e8b1a4bd016ac29606381dfb7034c88e9f5 (diff)
find: Support --print0
It would be nice if command-specific options were supported. The first difficulty is that which command is being called is not known until after getopt; but that could be worked around by finding the first non-dashed parameter. Storing the settings without putting them in the annex monad is the next difficulty; it could perhaps be handled by making the seek stage pass applicable settings into the start stage (and from there on to perform as needed). But that still leaves a problem, what data type to use to represent the options between getopt and seek?
Diffstat (limited to 'Command/Find.hs')
-rw-r--r--Command/Find.hs8
1 files changed, 6 insertions, 2 deletions
diff --git a/Command/Find.hs b/Command/Find.hs
index c816ff071..47058fa25 100644
--- a/Command/Find.hs
+++ b/Command/Find.hs
@@ -11,6 +11,7 @@ import Common.Annex
import Command
import Annex.Content
import Limit
+import qualified Annex
def :: [Command]
def = [command "find" paramPaths seek "lists available files"]
@@ -22,6 +23,9 @@ start :: FilePath -> (Key, Backend Annex) -> CommandStart
start file (key, _) = do
-- only files inAnnex are shown, unless the user has requested
-- others via a limit
- whenM (liftM2 (||) (inAnnex key) limited) $
- liftIO $ putStrLn file
+ whenM (liftM2 (||) (inAnnex key) limited) $ do
+ print0 <- Annex.getState Annex.print0
+ if print0
+ then liftIO $ putStr (file ++ "\0")
+ else liftIO $ putStrLn file
stop