File: darcs-errors.hlint

package info (click to toggle)
darcs 2.18.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,960 kB
  • sloc: haskell: 47,748; sh: 13,466; ansic: 447; perl: 134; makefile: 8
file content (20 lines) | stat: -rw-r--r-- 1,384 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- The problem with Prelude readFile is that it's based on hGetContents, which
-- is lazy by definition. This also means that unless you force consumption of
-- the produced list, it will keep an fd open for the file, possibly
-- indefinitely.  This is called a fd leak. Other than being annoying and if done
-- often, leading to fd exhaustion and failure to open any new files (which is
-- usually fatal), it also prevents the file to be unlinked (deleted) on win32.

-- On the other hand, *strict* bytestring version of readFile will read the whole
-- file into a contiguous buffer, *close the fd* and return. This is perfectly
-- safe with regards to fd leaks. Btw., this is *not* the case with lazy
-- bytestring variant of readFile, so that one is unsafe as well.

error "Avoid Prelude.readFile" = Prelude.readFile ==> Data.ByteString.readFile
error "Avoid hGetContents" = System.IO.hGetContents ==> Data.ByteString.hGetContents
error "Avoid BL.hGetContents" = Data.ByteString.Lazy.hGetContents
                              ==> Data.ByteString.hGetContents
error "Avoid BL.hGetContents" = Data.ByteString.Lazy.Char8.hGetContents
                              ==> Data.ByteString.hGetContents
-- error "Avoid BL.readFile" = Data.ByteString.Lazy.Char8.readFile ==> Data.ByteString.readFile
-- error "Avoid BL.readFile" = Data.ByteString.Lazy.readFile ==> Data.ByteString.readFile