Win32 package should bind SHGetFolderPath
Currently Cabal binds this function so that we can find the "Program Files" directory on Windows:
foreign import stdcall unsafe "shlobj.h SHGetFolderPathA"
c_SHGetFolderPath :: Ptr () -> CInt -> Ptr () -> CInt -> CString -> IO CInt
This is fine except that it does not work in ghci because we have no way to tell ghci that it would need to link to shell32.dll
. As it happens we do not have to tell the static linker to use shell32.dll
because it appears to link to it by default. This of course means that runghc Setup
does not work on Windows for Cabal itself which trips up many users. The fact that the README
tells people to use ghc --make Setup
instead doesn't help a great deal. See Cabal ticket #325
What would be nice is if the Win32 package would bind SHGetFolderPath. Then we just import it from the Win32 package and it'll work in ghci. Apparently, according to MSDN, this function is technically deprecated, however the replacement SHGetKnownFolderPath is only available in Vista and later so we probably need to bind it anyway. Note that SHGetFolderPath
is in shell32.dll
except on Windows 2000 which include it in SHFolder.dll
which come with IE4 and later.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.1 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries (other) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |