in src/main/cpp/ide/nblauncher.cpp [76:159]
int NbLauncher::start(int argc, char *argv[]) {
SetErrorMode(SetErrorMode(0) | SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
DWORD parentProcID = 0;
if (!checkLoggingArg(argc, argv, true) || !setupProcess(argc, argv, parentProcID, CON_ATTACH_MSG) || !initBaseNames() || !readClusterFile()) {
return -1;
}
parseConfigFile((baseDir + "\\etc\\" + getAppName() + ".conf").c_str());
if (!parseArgs(argc, argv)) {
return -1;
}
string oldUserDir = userDir;
parseConfigFile((userDir + "\\etc\\" + getAppName() + ".conf").c_str());
userDir = oldUserDir;
addExtraClusters();
string nbexecPath;
SetDllDirectory(baseDir.c_str());
if (dirExists(platformDir.c_str())) {
nbexecPath = platformDir;
} else {
nbexecPath = baseDir + '\\' + platformDir;
}
if (!dirExists(nbexecPath.c_str())) {
logErr(false, true, "Could not find platform cluster:\n%s", nbexecPath.c_str());
return false;
}
CmdArgs newArgs(argc + 20);
addSpecificOptions(newArgs);
if (!clusters.empty()) {
newArgs.add(ARG_NAME_CLUSTERS);
newArgs.add(clusters.c_str());
}
if (!userDir.empty()) {
newArgs.add(ARG_NAME_USER_DIR);
newArgs.add(userDir.c_str());
}
if (!defUserDirRoot.empty()) {
newArgs.add(ARG_DEFAULT_USER_DIR_ROOT);
newArgs.add(defUserDirRoot.c_str());
}
if (!cacheDir.empty() && !customUserDirFound) {
newArgs.add(ARG_NAME_CACHE_DIR);
newArgs.add(cacheDir.c_str());
}
if (!nbOptions.empty()) {
newArgs.addCmdLine(nbOptions.c_str());
}
for (int i = 0; i < argc; i++) {
newArgs.add(argv[i]);
}
if (!jdkHome.empty()) {
newArgs.add(ARG_NAME_JDKHOME);
newArgs.add(jdkHome.c_str());
}
if (parentProcID) {
newArgs.add(ARG_NAME_LA_PPID);
char tmp[16] = "";
newArgs.add(itoa(parentProcID, tmp, 10));
}
nbexecPath += NBEXEC_FILE_PATH;
const char *curDir = getCurrentDir();
if (curDir) {
char olddir[MAX_PATH];
DWORD rc = GetCurrentDirectory(MAX_PATH, olddir);
if (rc == 0) {
logErr(true, false, "Failed to get current directory");
} else {
string od = string(olddir);
od.insert(0, "-J-Dnetbeans.user.dir=");
newArgs.add(od.c_str());
}
logMsg("Changing current directory to: \"%s\"", curDir);
SetCurrentDirectory(curDir);
}
NBExecLoader loader;
return loader.start(nbexecPath.c_str(), newArgs.getCount(), newArgs.getArgs());
}