glob :: [S.ByteString] -> [S.ByteString]
#if SIMPLE_GLOB
glob xs = [S.concat xs]
#else
glob xs = reverse (map (S.concat . reverse) (loop xs 0 [] []))
where
loop [] _ [] zss = zss
loop [] _ ys zss =
zss' `seq` zss'
where zss' = ys : zss
loop xs' l ys zss | l >= 65536 =
zss' `seq` loop xs' 0 [] zss'
where zss' = ys : zss
loop (x : xs') l ys zss =
l' `seq` ys' `seq` loop xs' l' ys' zss
where l' = S.length x + l
ys' = x : ys
#endif