in src/main/cpp/launcher/windows/src/Launcher.c [551:642]
void setAdditionalArguments(LauncherProperties * props) {
if(isOK(props)) {
WCHARList * cmd = props->commandLine;
WCHAR ** javaArgs;
WCHAR ** appArgs;
DWORD i=0;
DWORD jArg = 0; // java arguments number
DWORD aArg = 0; // app arguments number
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0,
"Parsing rest of command line arguments to add them to java or application parameters... ", 1);
// get number for array creation
for(i=0;i<cmd->size;i++) {
if(cmd->items[i]!=NULL) {
if(searchW(cmd->items[i], javaParameterPrefix)!=NULL) {
jArg++;
} else {
aArg++;
}
}
}
// handle DefaultUserDirRoot, DefaultCacheDirRoot - increasing array size
jArg = jArg + 2;
//fill the array
if(jArg>0) {
int size = jArg + props->jvmArguments->size;
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, DWORDtoCHAR(size), 1);
javaArgs = newppWCHAR(jArg + props->jvmArguments->size);
for (i=0;i<props->jvmArguments->size;i++) {
javaArgs[i] = props->jvmArguments->items[i];
}
FREE(props->jvmArguments->items);
// cont. handle DefaultUserDirRoot, DefaultCacheDirRoot
// * add -Dnetbeans.default_userdir_root
// * add -Dnetbeans.default_cachedir_root
javaArgs[i-2] = appendStringW(toWCHAR("-Dnetbeans.default_userdir_root="), props->defaultUserDirRoot);
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "Added an JVM argument: ", 0);
writeMessageW(props, OUTPUT_LEVEL_DEBUG, 0, javaArgs[i-2], 1);
javaArgs[i-1] = appendStringW(toWCHAR("-Dnetbeans.default_cachedir_root="), props->defaultCacheDirRoot);
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "Added an JVM argument: ", 0);
writeMessageW(props, OUTPUT_LEVEL_DEBUG, 0, javaArgs[i-1], 1);
} else {
javaArgs = NULL;
}
if(aArg>0) {
appArgs = newppWCHAR(aArg + props->appArguments->size);
for (i=0; i < props->appArguments->size; i++) {
appArgs [i]= props->appArguments->items[i];
}
FREE(props->appArguments->items);
} else {
appArgs = NULL;
}
jArg = aArg = 0;
for(i=0;i<cmd->size;i++) {
if(cmd->items[i]!=NULL) {
if(searchW(cmd->items[i], javaParameterPrefix)!=NULL) {
javaArgs [ props->jvmArguments->size + jArg] = appendStringW(NULL, cmd->items[i] + getLengthW(javaParameterPrefix));
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... adding JVM argument : ", 0);
writeMessageW(props, OUTPUT_LEVEL_DEBUG, 0, javaArgs [ props->jvmArguments->size + jArg], 1);
jArg ++ ;
} else {
appArgs [ props->appArguments->size + aArg] = appendStringW(NULL, cmd->items[i]);
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... adding APP argument : ", 0);
writeMessageW(props, OUTPUT_LEVEL_DEBUG, 0, appArgs [ props->appArguments->size + aArg], 1);
aArg++;
}
FREE(cmd->items[i]);
}
}
props->appArguments->size = props->appArguments->size + aArg;
props->jvmArguments->size = props->jvmArguments->size + jArg;
if(props->jvmArguments->items==NULL) props->jvmArguments->items = javaArgs;
if(props->appArguments->items==NULL) props->appArguments->items = appArgs;
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... resolving jvm arguments", 1);
for(i=0;i<props->jvmArguments->size;i++) {
resolveString(props, &props->jvmArguments->items[i]);
}
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... resolving app arguments", 1);
for(i=0;i<props->appArguments->size;i++) {
resolveString(props, &props->appArguments->items[i]);
}
writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... finished parsing parameters", 1);
}
}