Unchecked quick fix. Hope to test tonight after getting home.
withFileStatus :: FilePath -> (Ptr CStat -> IO a) -> IO a
withFileStatus name f = do
allocaBytes sizeof_stat $ \p ->
withFileStatus :: FilePath -> (Ptr CStat -> IO a) -> IO a
withFileStatus name f = do
allocaBytes sizeof_stat $ \p ->
- withCString name $ \s -> do
+ withCString (fileNameEndClean name) $ \s -> do
throwErrnoIfMinus1Retry_ "withFileStatus" (c_stat s p)
f p
throwErrnoIfMinus1Retry_ "withFileStatus" (c_stat s p)
f p
mode <- st_mode stat
return (s_isdir mode)
mode <- st_mode stat
return (s_isdir mode)
+fileNameEndClean :: String -> String
+fileNameEndClean name =
+ if i >= 0 && (ec == '\\' || ec == '/') then
+ fileNameEndClean (take i name)
+ else
+ name
+ where
+ i = (length name) - 1
+ ec = name !! i
+
emptyCMode :: CMode
emptyCMode = 0
emptyCMode :: CMode
emptyCMode = 0