34
34
using namespace std ;
35
35
36
36
const char *NbLauncher::NBEXEC_FILE_PATH = NBEXEC_DLL;
37
+ const char *ENV_NETBEANS_USERDIR=" NETBEANS_USERDIR" ;
37
38
const char *NbLauncher::OPT_NB_DEFAULT_USER_DIR = " netbeans_default_userdir=" ;
38
39
const char *NbLauncher::OPT_NB_DEFAULT_CACHE_DIR = " netbeans_default_cachedir=" ;
39
40
const char *NbLauncher::OPT_NB_DEFAULT_OPTIONS = " netbeans_default_options=" ;
@@ -82,13 +83,26 @@ int NbLauncher::start(int argc, char *argv[]) {
82
83
return -1 ;
83
84
}
84
85
85
- parseConfigFile ((baseDir + " \\ etc\\ " + getAppName () + " .conf" ).c_str ());
86
+ bool skipUserDir = false ;
87
+ char *userDirViaEnv = getenv (ENV_NETBEANS_USERDIR);
88
+ if (userDirViaEnv != NULL ) {
89
+ logMsg (" NbLauncher::using NETBEANS_USERDIR env variable (%s)" , userDirViaEnv);
90
+ string udve = userDirViaEnv;
91
+ if (udve == " nope" ) {
92
+ skipUserDir = true ;
93
+ userDirViaEnv = NULL ;
94
+ } else {
95
+ userDir = userDirViaEnv;
96
+ }
97
+ }
98
+
99
+ parseConfigFile ((baseDir + " \\ etc\\ " + getAppName () + " .conf" ).c_str (), userDirViaEnv == NULL );
86
100
87
101
if (!parseArgs (argc, argv)) {
88
102
return -1 ;
89
103
}
90
104
string oldUserDir = userDir;
91
- parseConfigFile ((userDir + " \\ etc\\ " + getAppName () + " .conf" ).c_str ());
105
+ parseConfigFile ((userDir + " \\ etc\\ " + getAppName () + " .conf" ).c_str (), userDirViaEnv == NULL );
92
106
userDir = oldUserDir;
93
107
94
108
addExtraClusters ();
@@ -114,6 +128,18 @@ int NbLauncher::start(int argc, char *argv[]) {
114
128
if (!userDir.empty ()) {
115
129
newArgs.add (ARG_NAME_USER_DIR);
116
130
newArgs.add (userDir.c_str ());
131
+ if (!skipUserDir) {
132
+ string toSet = ENV_NETBEANS_USERDIR;
133
+ toSet = toSet + " =" + userDir;
134
+ putenv (toSet.c_str ());
135
+
136
+ const char * path = getenv (" PATH" );
137
+ if (path != NULL ) {
138
+ string setPath = " PATH=" ;
139
+ setPath = setPath + path + " ;" + baseDir + " \\ bin\\ " ;
140
+ putenv (setPath.c_str ());
141
+ }
142
+ }
117
143
}
118
144
if (!defUserDirRoot.empty ()) {
119
145
newArgs.add (ARG_DEFAULT_USER_DIR_ROOT);
@@ -460,7 +486,7 @@ bool NbLauncher::getOption(char *&str, const char *opt) {
460
486
return false ;
461
487
}
462
488
463
- bool NbLauncher::parseConfigFile (const char * path) {
489
+ bool NbLauncher::parseConfigFile (const char * path, const bool searchUserDir ) {
464
490
logMsg (" parseConfigFile(%s)" , path);
465
491
FILE *file = fopen (path, " r" );
466
492
if (!file) {
@@ -474,7 +500,7 @@ bool NbLauncher::parseConfigFile(const char* path) {
474
500
if (*str == ' #' ) {
475
501
continue ;
476
502
}
477
- if (getOption (str, getDefUserDirOptName ())) {
503
+ if (searchUserDir && getOption (str, getDefUserDirOptName ())) {
478
504
findUserDir (str);
479
505
logMsg (" User dir: %s" , userDir.c_str ());
480
506
} else if (getOption (str, getDefCacheDirOptName ())) {
0 commit comments