I don't think this is guaranteed to work. See top answer here [1] (which cites the standard). Also, note that the man page for exec and friends notes that the first argument *by convention* is the name of the executable. I'm not against exposing a function to return argv[0] (I thought getProgName did that), but the documentation should make clear that it is not guaranteed to work. [1]: http://stackoverflow.com/questions/2050961/is-argv0-name-of-executable-an-ac... On 13 June 2012 00:57, Johan Tibell <johan.tibell@gmail.com> wrote:
Hi,
getProgName is only useful in case you want to print the program name to the screen. You cannot actually use it to do anything interesting programmatically (like execv:ing the program.) I suggest we add getFullProgName which does the sensible thing of returning argv[0]. Here's an implementation:
getFullProgName :: IO String getFullProgName = alloca $ \ p_argc -> alloca $ \ p_argv -> do getFullProgArgv p_argc p_argv peek p_argv >>= peek >>= peekCString
foreign import ccall unsafe "getFullProgArgv" getFullProgArgv :: Ptr CInt -> Ptr (Ptr CString) -> IO ()
Discussion deadline: 2 weeks
-- Johan
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
-- Push the envelope. Watch it bend.