int main()

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;
}