in src/main_win.cpp [47:104]
int main(int argc, char **argv) {
commandLineOptions.parse(argc, argv);
#ifdef CRASHPAD_ENABLED
if (!setupCrashpadHandler()) {
std::cerr << "cannot initialize crashpad" << std::endl;
}
#endif
structRstart rstart;
Rstart Rs = &rstart;
R_setStartTime();
R_DefParams(Rs);
char* rHome = getenv("R_HOME");
if (rHome == nullptr || strlen(rHome) == 0) {
std::cerr << "R_HOME environment variable must be set\n";
return 1;
}
Rs->rhome = rHome;
Rs->home = getRUser();
Rs->CharacterMode = RGui;
Rs->ReadConsole = winMyReadConsole;
Rs->WriteConsole = nullptr;
Rs->WriteConsoleEx = myWriteConsoleEx;
Rs->CallBack = myCallBack;
Rs->ShowMessage = myShowMessage;
Rs->YesNoCancel = myYesNoCancel;
Rs->Busy = myBusy;
Rs->R_Quiet = TRUE;
Rs->R_Interactive = TRUE;
Rs->RestoreAction = SA_NORESTORE;
Rs->SaveAction = SA_NOSAVE;
R_SetParams(Rs);
std::vector<const char*> rArgv = {"rwrapper", "--quiet", "--interactive", "--no-save", "--no-restore"};
if (commandLineOptions.disableRprofile) {
rArgv.push_back("--no-init-file");
}
R_set_command_line_arguments(rArgv.size(), (char**)rArgv.data());
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
GA_initapp(0, nullptr);
readconsolecfg();
try {
initEventLoop();
initRPIService();
} catch (std::exception const &e) {
std::cerr << "Error during RWrapper startup: " << e.what() << "\n";
return 1;
}
{
WithOutputHandler withOutputHandler(rpiService->replOutputHandler);
setup_Rmainloop();
}
run_Rmainloop();
Rf_endEmbeddedR(0);
return 0;
}