
On Mon, Dec 01, 2008 at 05:30:33PM -0800, Judah Jacobson wrote:
You can limit the size of that stub file using:
foreign import ccall "&progname" progname :: Ptr (Ptr CChar)
which lets you access that global variable and write the getters/setters in Haskell rather than C.
this solves my problems quite nicely indeed, but I still cannot figure how to write a setter function that actually works. That is to say, after: newCString "new_name" >>= poke progname this: putStrLn . show =<< peekCString =<< peek progname would return "new_name", but the library, which is using "progname" to produce some debugging messages, doesn't seem to get it correctly: the original bits are gone, but instead of "new_name" I get some garbage. Thanks to everyone for the interesting and useful hints. Andrea