staMain init_filename arg

This commit is contained in:
James Cherry 2019-11-05 16:05:52 -07:00
parent e7d8689f70
commit bbdb4ea5bc
3 changed files with 13 additions and 6 deletions

View File

@ -49,7 +49,7 @@ main(int argc,
} }
else { else {
Sta *sta = new Sta; Sta *sta = new Sta;
staMain(sta, argc, argv, Sta_Init, sta::tcl_inits); staMain(sta, argc, argv, ".sta", Sta_Init, sta::tcl_inits);
return 0; return 0;
} }
} }

View File

@ -29,15 +29,15 @@ typedef sta::Vector<SwigInitFunc> SwigInitFuncSeq;
// "Arguments" passed to staTclAppInit. // "Arguments" passed to staTclAppInit.
static int sta_argc; static int sta_argc;
static char **sta_argv; static char **sta_argv;
static const char *sta_init_filename;
static const char **sta_tcl_inits; static const char **sta_tcl_inits;
static SwigInitFunc sta_swig_init; static SwigInitFunc sta_swig_init;
static const char *init_filename = "[file join $env(HOME) .sta]";
void void
staMain(Sta *sta, staMain(Sta *sta,
int argc, int argc,
char *argv[], char *argv[],
const char *init_filename,
SwigInitFunc swig_init, SwigInitFunc swig_init,
const char *tcl_inits[]) const char *tcl_inits[])
{ {
@ -49,7 +49,7 @@ staMain(Sta *sta,
int thread_count = parseThreadsArg(argc, argv); int thread_count = parseThreadsArg(argc, argv);
sta->setThreadCount(thread_count); sta->setThreadCount(thread_count);
staSetupAppInit(argc, argv, swig_init, tcl_inits); staSetupAppInit(argc, argv, init_filename, swig_init, tcl_inits);
// Set argc to 1 so Tcl_Main doesn't source any files. // Set argc to 1 so Tcl_Main doesn't source any files.
// Tcl_Main never returns. // Tcl_Main never returns.
Tcl_Main(1, argv, staTclAppInit); Tcl_Main(1, argv, staTclAppInit);
@ -75,11 +75,13 @@ parseThreadsArg(int &argc,
void void
staSetupAppInit(int argc, staSetupAppInit(int argc,
char *argv[], char *argv[],
const char *init_filename,
SwigInitFunc swig_init, SwigInitFunc swig_init,
const char *tcl_inits[]) const char *tcl_inits[])
{ {
sta_argc = argc; sta_argc = argc;
sta_argv = argv; sta_argv = argv;
sta_init_filename = init_filename;
sta_tcl_inits = tcl_inits; sta_tcl_inits = tcl_inits;
sta_swig_init = swig_init; sta_swig_init = swig_init;
} }
@ -110,8 +112,11 @@ staTclAppInit(Tcl_Interp *interp)
Tcl_Eval(interp, "sta::define_sta_cmds"); Tcl_Eval(interp, "sta::define_sta_cmds");
Tcl_Eval(interp, "namespace import sta::*"); Tcl_Eval(interp, "namespace import sta::*");
if (!findCmdLineFlag(argc, argv, "-no_init")) if (!findCmdLineFlag(argc, argv, "-no_init")) {
sourceTclFile(init_filename, true, true, interp); char *init_path = stringPrintTmp("[file join $env(HOME) %s]",
sta_init_filename);
sourceTclFile(init_path, true, true, interp);
}
bool exit_after_cmd_file = findCmdLineFlag(argc, argv, "-exit"); bool exit_after_cmd_file = findCmdLineFlag(argc, argv, "-exit");

View File

@ -30,6 +30,7 @@ void
staMain(Sta *sta, staMain(Sta *sta,
int argc, int argc,
char *argv[], char *argv[],
const char *init_filename,
SwigInitFunc swig_init, SwigInitFunc swig_init,
const char *tcl_inits[]); const char *tcl_inits[]);
@ -37,6 +38,7 @@ staMain(Sta *sta,
void void
staSetupAppInit(int argc, staSetupAppInit(int argc,
char *argv[], char *argv[],
const char *init_filename,
SwigInitFunc swig_init, SwigInitFunc swig_init,
const char *tcl_inits[]); const char *tcl_inits[]);