decodeModule clo f                      = (do ifc <- decodeCFile f
                                              putStrLn ("[reading " ++ show f ++ "]")
                                              return (ifc,f)) `catch`  (\e -> do let libf = Config.libDir clo ++ "/" ++ f
                                                                                 ifc <- decodeCFile libf
                                                                                 putStrLn ("[reading " ++ show libf ++ "]")
                                                                                 return (ifc,libf))
decodeModule clo f                      = (do ifc <- decodeCFile f
                                              putStrLn ("[reading " ++ show f ++ "]")
                                              return (ifc,f)) `catch`  (\e -> do let libf = Config.libDir clo ++ "/" ++ f
                                                                                 ifc <- decodeCFile libf
                                                                                 putStrLn ("[reading " ++ show libf ++ "]")
                                                                                 return (ifc,libf))
decodeModule clo f                      = (do ifc <- decodeCFile f
                                              putStrLn ("[reading " ++ show f ++ "]")
                                              return (ifc,f)) `catch`  (\e -> do let libf = Config.libDir clo ++ "/" ++ f
                                                                                 ifc <- decodeCFile libf
                                                                                 putStrLn ("[reading " ++ show libf ++ "]")
                                                                                 return (ifc,libf))