#include "RtsAPI.h"
#include "RtsUtils.h"
#include "RtsFlags.h"
+#include "OSThreads.h"
#include "Storage.h" /* initStorage, exitStorage */
#include "Schedule.h" /* initScheduler */
#include "Stats.h" /* initStats */
#include <stdlib.h>
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-
#ifdef HAVE_TERMIOS_H
#include <termios.h>
#endif
/* -----------------------------------------------------------------------------
Initialise floating point unit on x86 (currently disabled. why?)
+ (see comment in ghc/compiler/nativeGen/MachInstrs.lhs).
-------------------------------------------------------------------------- */
#define X86_INIT_FPU 0
/* Parse the flags, separating the RTS flags from the programs args */
if (argc != NULL && argv != NULL) {
setupRtsFlags(argc, *argv, &rts_argc, rts_argv);
- prog_argc = *argc;
- prog_argv = *argv;
+ setProgArgv(*argc,*argv);
}
#if defined(PAR)
}
#endif
-#ifdef HAVE_LOCALE_H
- setlocale(LC_CTYPE,"");
-#endif
-
#if X86_INIT_FPU
x86_init_fpu();
#endif
startupHaskell(int argc, char *argv[], void (*init_root)(void))
{
hs_init(&argc, &argv);
- hs_add_root(init_root);
-}
-
-
-/* -----------------------------------------------------------------------------
- Getting/Setting the program's arguments.
-
- These are used by System.Environment.
- -------------------------------------------------------------------------- */
-
-void
-getProgArgv(int *argc, char **argv[])
-{
- if (argc) { *argc = prog_argc; }
- if (argv) { *argv = prog_argv; }
+ if(init_root)
+ hs_add_root(init_root);
}
-void
-setProgArgv(int argc, char *argv[])
-{
- /* 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;
-}
/* -----------------------------------------------------------------------------
Per-module initialisation