+ /* Usually this is done by startupHaskell, so we don't need to call this.
+ However, sometimes Hugs wants to change the arguments which Haskell
+ getArgs >>= ... will be fed. So you can do that by calling here
+ _after_ calling startupHaskell.
+ */
+ prog_argc = argc;
+ prog_argv = argv;
+}
+
+void
+getProgArgv(int *argc, char **argv[])
+{
+ *argc = prog_argc;
+ *argv = prog_argv;
+}
+
+
+void
+startupHaskell(int argc, char *argv[], void (*init_root)(void))
+{
+ /* To avoid repeated initialisations of the RTS */
+ if (rts_has_started_up) {
+ /* RTS is up and running, so only run the per-module initialisation code */
+ if (init_root) {
+ initModules(init_root);
+ }
+ return;
+ } else {
+ rts_has_started_up=1;
+ }