From 363ecfebc32c6fe15d81634422e8607847f588fb Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Wed, 6 Jan 2016 10:44:56 -0800
Subject: [PATCH] Make file globbing work on windows.

Windows cmd doesn't expand wildcards; the application has to
do this.  So on windows we use 'glob' to expand.
---
 pandoc.cabal | 3 ++-
 pandoc.hs    | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/pandoc.cabal b/pandoc.cabal
index e0b4f6021..c52b30d3f 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -300,7 +300,8 @@ Library
      Build-Tools:   hsb2hs >= 0.3.1
      other-modules: Text.Pandoc.Data
   if os(windows)
-    Cpp-options:      -D_WINDOWS
+    Cpp-options:    -D_WINDOWS
+    Build-depends:  Glob >= 0.7 && < 0.8
   Ghc-Options:   -rtsopts -Wall -fno-warn-unused-do-bind
   Ghc-Prof-Options: -fprof-auto-exported -rtsopts
   Default-Language: Haskell98
diff --git a/pandoc.hs b/pandoc.hs
index a4906382a..26558aa61 100644
--- a/pandoc.hs
+++ b/pandoc.hs
@@ -73,6 +73,9 @@ import Text.Pandoc.Readers.Txt2Tags (getT2TMeta)
 import Paths_pandoc (getDataDir)
 import Text.Printf (printf)
 import Text.Pandoc.Error
+#ifdef _WINDOWS
+import System.FilePath.Glob (glob)
+#endif
 
 type Transform = Pandoc -> Pandoc
 
@@ -1056,7 +1059,13 @@ main = do
 
   -- thread option data structure through all supplied option actions
   opts <- foldl (>>=) (return defaultOpts) actions
+
+-- on windows we need to do our own file globbing, since the shell doesn't.
+#ifdef _WINDOWS
+  mapM glob args >>= convertWithOpts opts . concat
+#else
   convertWithOpts opts args
+#endif
 
 convertWithOpts :: Opt -> [FilePath] -> IO ()
 convertWithOpts opts args = do