Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikael Barbero2015-09-25 15:40:34 +0000
committerArun Thondapu2015-12-21 19:16:27 +0000
commit27d08789a04d0662043439cef7ab154370272692 (patch)
treedf67ad3ccbed2038de9086969fb8745b70f516e7 /features/org.eclipse.equinox.executable.feature/library/eclipse.c
parent435dd2d09782e46095f4599e32318316a5459ab0 (diff)
downloadrt.equinox.framework-27d08789a04d0662043439cef7ab154370272692.tar.gz
rt.equinox.framework-27d08789a04d0662043439cef7ab154370272692.tar.xz
rt.equinox.framework-27d08789a04d0662043439cef7ab154370272692.zip
Bug 383545 - Remove Carbon specific code from launcher library
Change-Id: I3b1693f1d1344d8539aa989a8eb152a5bd1c6812 Signed-off-by: Mikael Barbero <mikael@eclipse.org>
Diffstat (limited to 'features/org.eclipse.equinox.executable.feature/library/eclipse.c')
-rw-r--r--features/org.eclipse.equinox.executable.feature/library/eclipse.c288
1 files changed, 141 insertions, 147 deletions
diff --git a/features/org.eclipse.equinox.executable.feature/library/eclipse.c b/features/org.eclipse.equinox.executable.feature/library/eclipse.c
index 444c89b88..8356ecd30 100644
--- a/features/org.eclipse.equinox.executable.feature/library/eclipse.c
+++ b/features/org.eclipse.equinox.executable.feature/library/eclipse.c
@@ -2,9 +2,9 @@
* Copyright (c) 2000, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
+ * which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Kevin Cornell (Rational Software Corporation)
@@ -19,27 +19,27 @@
* to start a Java VM, or alternatively it is loaded from Java to show the splash
* screen or write to the shared memory. See eclipseJNI.c for descriptions of the methods
* exposed to the Java program using JNI.
- *
- * To display a splash screen before starting the java vm, the launcher should be started
+ *
+ * To display a splash screen before starting the java vm, the launcher should be started
* with the location of the splash bitmap to use:
* -showsplash <path/to/splash.bmp>
* Otherwise, when the Java program starts, it should determine the location of
- * the splash bitmap to be used and use the JNI method show_splash.
- *
+ * the splash bitmap to be used and use the JNI method show_splash.
+ *
* When the Java program initialization is complete, the splash window
* is brought down by calling the JNI method takedown_splash.
*
- * The Java program can also call the get_splash_handle method to get the handle to the splash
+ * The Java program can also call the get_splash_handle method to get the handle to the splash
* window. This can be passed to SWT to create SWT widgets in the splash screen.
- *
+ *
* The Java application will receive two other arguments:
* -exitdata <shared memory id>
*
* The java program can call set_exit_data with this shared-memory-id
- * to provide specific exit data to the launcher.
+ * to provide specific exit data to the launcher.
*
* The exit data size must not exceed MAX_SHARED_LENGTH which is
- * 16Kb. The interpretation of the exit data is dependent on the
+ * 16Kb. The interpretation of the exit data is dependent on the
* exit value of the java application.
*
* The main launcher recognizes the following exit codes from the
@@ -83,12 +83,12 @@
* -library the location of the eclipse launcher shared library (this library) to use
* By default, the launcher exe (see eclipseMain.c) finds
* <userArgs> arguments that are passed along to the Java application
- * (i.e, -data <path>, -debug, -console, -consoleLog, etc)
+ * (i.e, -data <path>, -debug, -console, -consoleLog, etc)
* -vmargs <userVMargs> ... a list of arguments for the VM itself
*
* The -vmargs option and all user specified VM arguments must appear
* at the end of the command line, after all arguments that are
- * being passed to Java application.
+ * being passed to Java application.
*
* The argument order for the new Java VM process is as follows:
*
@@ -111,9 +111,9 @@
* [<defaultVMargs | <userVMargs>]
* -jar
* <startup jar full path>
- *
+ *
* The startup jar must be an executable jar.
- *
+ *
*
* See "Main.java" for a simple implementation of the Java
* application.
@@ -156,13 +156,7 @@
#endif
#ifdef MACOSX
-
-#ifdef COCOA
#include <Cocoa/Cocoa.h>
-#else
-#include <Carbon/Carbon.h>
-#endif
-
#endif
#include <stdio.h>
@@ -190,7 +184,7 @@ _TCHAR* exitData = NULL; /* exit data set from Java */
int initialArgc;
_TCHAR** initialArgv = NULL;
-
+
/* Define the special exit codes returned from Eclipse. */
#define RESTART_LAST_EC 23
#define RESTART_NEW_EC 24
@@ -276,16 +270,16 @@ static int noSplash = 0; /* True: do not show splash win */
static int suppressErrors = 0; /* True: do not display errors dialogs */
int secondThread = 0; /* True: start the VM on a second thread */
static int appendVmargs = 0; /* True: append cmdline vmargs to launcher.ini vmargs */
-
+
static _TCHAR* showSplashArg = NULL; /* showsplash data (main launcher window) */
static _TCHAR* splashBitmap = NULL; /* the actual splash bitmap */
static _TCHAR * startupArg = NULL; /* path of the startup.jar the user wants to run relative to the program path */
static _TCHAR* vmName = NULL; /* Java VM that the user wants to run */
-static _TCHAR* name = NULL; /* program name */
+static _TCHAR* name = NULL; /* program name */
static _TCHAR* permGen = NULL; /* perm gen size for sun */
static _TCHAR** filePath = NULL; /* list of files to open */
static _TCHAR* timeoutString = NULL; /* timeout value for opening a file */
-static _TCHAR* defaultAction = NULL; /* default action for non '-' command line arguments */
+static _TCHAR* defaultAction = NULL; /* default action for non '-' command line arguments */
static _TCHAR* iniFile = NULL; /* the launcher.ini file set if --launcher.ini was specified */
static _TCHAR* gtkVersionString = NULL; /* GTK+ version specified by --launcher.GTK_version */
static _TCHAR* protectMode = NULL; /* Process protectMode specified via -protect, to trigger the reading of eclipse.ini in the configuration (Mac specific currently) */
@@ -353,7 +347,7 @@ static int eeOptionsSize = (sizeof(eeOptions) / sizeof(eeOptions[0]));
/* Define the required VM arguments (all platforms). */
static _TCHAR* cp = NULL;
-static _TCHAR* cpValue = NULL;
+static _TCHAR* cpValue = NULL;
static _TCHAR** reqVMarg[] = { &cp, &cpValue, NULL }; /* required VM args */
static _TCHAR** userVMarg = NULL; /* user specific args for the Java VM */
static _TCHAR** eeVMarg = NULL; /* vm args specified in ee file */
@@ -423,9 +417,9 @@ JNIEXPORT int run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
#ifdef MACOSX
if (secondThread != 0) {
-
- /* --launcher.secondThread was specified, create a new thread and run the
- * vm on it. This main thread will run the CFRunLoop
+
+ /* --launcher.secondThread was specified, create a new thread and run the
+ * vm on it. This main thread will run the CFRunLoop
*/
pthread_t thread;
struct rlimit limit = {0, 0};
@@ -435,7 +429,7 @@ JNIEXPORT int run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
stackSize = limit.rlim_cur;
}
}
-
+
/* initialize thread attributes */
pthread_attr_t attributes;
pthread_attr_init(&attributes);
@@ -443,21 +437,21 @@ JNIEXPORT int run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
pthread_attr_setdetachstate(&attributes, PTHREAD_CREATE_DETACHED);
if (stackSize != 0)
pthread_attr_setstacksize(&attributes, stackSize);
-
+
/* arguments to start the vm */
StartVMArgs args;
args.argc = argc;
args.argv = argv;
args.vmArgs = vmArgs;
args.result = 0;
-
+
/* create the thread */
pthread_create( &thread, &attributes, &startThread, &args);
pthread_attr_destroy(&attributes);
-
+
CFRunLoopSourceContext sourceContext = {
.version = 0, .info = NULL, .retain = NULL, .release = NULL,
- .copyDescription = NULL, .equal = NULL, .hash = NULL,
+ .copyDescription = NULL, .equal = NULL, .hash = NULL,
.schedule = NULL, .cancel = NULL, .perform = &dummyCallback
};
CFRunLoopSourceRef sourceRef = CFRunLoopSourceCreate(NULL, 0, &sourceContext);
@@ -465,10 +459,10 @@ JNIEXPORT int run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
CFRunLoopAddSource(loopRef, sourceRef, kCFRunLoopCommonModes);
CFRunLoopRun();
CFRelease(sourceRef);
-
+
return args.result;
}
-
+
char firstThreadEnvVariable[80];
sprintf(firstThreadEnvVariable, "JAVA_STARTED_ON_FIRST_THREAD_%d", getpid());
setenv(firstThreadEnvVariable, "1", 1);
@@ -500,13 +494,13 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
JavaResults* javaResults = NULL;
int launchMode;
int running = 1;
-
+
/* arg[0] should be the full pathname of this program. */
program = _tcsdup( argv[0] );
/* Initialize official program name */
officialName = name != NULL ? _tcsdup( name ) : getDefaultOfficialName();
-
+
if (defaultAction != NULL) {
processDefaultAction(initialArgc, initialArgv);
}
@@ -542,18 +536,18 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
#ifdef MACOSX
/* Most platforms, we will initialize the window system later before trying to do any
- * graphics. On Mac, we need it initialized to get the dock icon properly, so always do
+ * graphics. On Mac, we need it initialized to get the dock icon properly, so always do
* it now.
*/
initWindowSystem( &argc, argv, !noSplash );
#elif _WIN32
/* this must be before doing any console stuff, platforms other than win32 leave this set to 0 */
consoleLauncher = isConsoleLauncher();
-
+
/*fix the DLL search path for security */
fixDLLSearchPath();
#endif
-
+
/* Find the directory where the Eclipse program is installed. */
programDir = getProgramDir();
if (programDir == NULL)
@@ -563,7 +557,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
if (!suppressErrors)
displayMessage( officialName, errorMsg );
else
- _ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), officialName, errorMsg);
+ _ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), officialName, errorMsg);
free( errorMsg );
exit( 1 );
}
@@ -582,8 +576,8 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
free( errorMsg );
free( msg );
exit(1);
- }
-
+ }
+
/* Find the startup.jar */
jarFile = findStartupJar();
if(jarFile == NULL) {
@@ -611,17 +605,17 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
showSplash(splashBitmap);
}
}
-
+
/* not using JNI launching, need some shared data */
if (launchMode == LAUNCH_EXE && createSharedData( &sharedID, MAX_SHARED_LENGTH )) {
if (debug) {
- if (!suppressErrors)
+ if (!suppressErrors)
displayMessage( officialName, shareMsg );
else
_ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), officialName, shareMsg);
}
}
-
+
#ifndef _WIN32
#ifndef MACOSX
displayMessage( officialName, gtkCheck );
@@ -639,15 +633,15 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
cpValue = malloc((_tcslen(jarFile) + 1) * sizeof(_TCHAR));
_tcscpy(cpValue, jarFile);
}
-
+
/* Get the command to start the Java VM. */
userVMarg = vmArgs;
getVMCommand( launchMode, argc, argv, &vmCommandArgs, &progCommandArgs );
-
+
if (launchMode == LAUNCH_EXE) {
vmCommand = buildLaunchCommand(javaVM, vmCommandArgs, progCommandArgs);
}
-
+
/* While the Java VM should be restarted */
while(running)
{
@@ -659,7 +653,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
} else {
javaResults = launchJavaVM(vmCommand);
}
-
+
if (javaResults == NULL) {
/* shouldn't happen, but just in case */
javaResults = malloc(sizeof(JavaResults));
@@ -667,7 +661,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
javaResults->runResult = 0;
javaResults->errorMessage = _tcsdup(javaFailureMsg);
}
-
+
switch( javaResults->launchResult + javaResults->runResult ) {
case 0: /* normal exit */
running = 0;
@@ -682,7 +676,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
running = 0;
}
break;
-
+
case RESTART_NEW_EC:
if(launchMode == LAUNCH_EXE) {
if (exitData != NULL) free(exitData);
@@ -699,7 +693,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
} else {
running = 0;
if (debug) {
- if (!suppressErrors)
+ if (!suppressErrors)
displayMessage( officialName, shareMsg );
else
_ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), officialName, shareMsg);
@@ -734,7 +728,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
}
} else {
if (debug) {
- if (!suppressErrors)
+ if (!suppressErrors)
displayMessage( title, shareMsg );
else
_ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), title, shareMsg);
@@ -754,11 +748,11 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
_stprintf( errorMsg, exitMsg, javaResults->launchResult, msg );
}
}
-
+
if (_tcslen(errorMsg) > 0) {
if (!suppressErrors)
displayMessage( title, errorMsg );
- else
+ else
_ftprintf(stderr, _T_ECLIPSE("%s:\n%s\n"), title, errorMsg);
}
free( errorMsg );
@@ -771,15 +765,15 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
if(relaunchCommand != NULL)
restartLauncher(NULL, relaunchCommand);
-
+
if (launchMode == LAUNCH_JNI)
cleanupVM(javaResults->launchResult ? javaResults->launchResult : javaResults->runResult);
-
+
if (sharedID != NULL) {
destroySharedData( sharedID );
free( sharedID );
}
-
+
/* Cleanup time. */
free( vmCommandArgs );
free( progCommandArgs );
@@ -796,7 +790,7 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
if (javaResults == NULL)
return -1;
-
+
/* reuse the running variable for convenience */
running = javaResults->launchResult != 0 ? javaResults->launchResult : javaResults->runResult;
free(javaResults);
@@ -806,10 +800,10 @@ static int _run(int argc, _TCHAR* argv[], _TCHAR* vmArgs[])
static _TCHAR** buildLaunchCommand( _TCHAR* program, _TCHAR** vmArgs, _TCHAR** progArgs ) {
int nVM = -1, nProg = -1;
_TCHAR** result;
-
+
while(vmArgs[++nVM] != NULL) {}
while(progArgs[++nProg] != NULL) {}
-
+
result = malloc((nVM + nProg + 2) * sizeof(_TCHAR*));
memset(result, 0, (nVM + nProg + 2) * sizeof(_TCHAR*));
result[0] = program;
@@ -1070,7 +1064,7 @@ static void adjustVMArgs(_TCHAR *javaVM, _TCHAR *jniLib, _TCHAR **vmArgv[]) {
* Some of the arguments returned by this function were
* passed directly from the main( argv ) array so they
* should not be deallocated.
- *
+ *
* Arguments are split into 2: vm arguments and program arguments
*/
static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmArgv[], _TCHAR **progArgv[] )
@@ -1084,10 +1078,10 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
int dst;
/* If the user specified "-vmargs", add them instead of the default VM args. */
- vmArg = (userVMarg != NULL) ? userVMarg : getArgVM( (launchMode == LAUNCH_JNI) ? jniLib : javaVM );
+ vmArg = (userVMarg != NULL) ? userVMarg : getArgVM( (launchMode == LAUNCH_JNI) ? jniLib : javaVM );
adjustVMArgs(javaVM, jniLib, &vmArg);
-
+
/* Calculate the number of VM arguments. */
while (vmArg[ nVMarg ] != NULL)
nVMarg++;
@@ -1099,7 +1093,7 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
/* VM argument list */
totalVMArgs = nVMarg + nReqVMarg + nEEargs + 1;
*vmArgv = malloc( totalVMArgs * sizeof(_TCHAR*) );
-
+
dst = 0;
for (src = 0; src < nVMarg; src++){
/*if the user specified a classpath, skip it */
@@ -1113,15 +1107,15 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
if (eeVMarg != NULL)
for (src = 0; src < nEEargs; src++)
(*vmArgv)[ dst++ ] = eeVMarg[ src ];
-
+
/* For each required VM arg */
for (src = 0; src < nReqVMarg; src++)
if( *(reqVMarg[src]) != NULL)
(*vmArgv)[ dst++ ] = *(reqVMarg[ src ]);
-
-
+
+
(*vmArgv)[dst] = NULL;
-
+
/* Program arguments */
/* OS <os> + WS <ws> + ARCH <arch> + LAUNCHER <launcher> + NAME <officialName> +
* + LIBRARY <library> + SHOWSPLASH <cmd> + EXITDATA <cmd> + STARTUP <jar> + OVERRIDE/APPEND + argv[] + VM + <vm> +
@@ -1131,7 +1125,7 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
totalProgArgs = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + argc + 2 + 1 + nVMarg + nEEargs + nReqVMarg + 1;
*progArgv = malloc( totalProgArgs * sizeof( _TCHAR* ) );
dst = 0;
-
+
/* Append the required options. */
(*progArgv)[ dst++ ] = OS;
(*progArgv)[ dst++ ] = osArg;
@@ -1149,7 +1143,7 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
if(splashBitmap != NULL)
(*progArgv)[ dst++ ] = splashBitmap;
}
-
+
/* Append the launcher command */
(*progArgv)[ dst++ ] = LAUNCHER;
(*progArgv)[ dst++ ] = program;
@@ -1157,17 +1151,17 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
/* Append the name command */
(*progArgv)[ dst++ ] = NAME;
(*progArgv)[ dst++ ] = officialName;
-
+
/* And the shared library */
if (eclipseLibrary != NULL) {
(*progArgv)[ dst++ ] = LIBRARY;
(*progArgv)[ dst++ ] = eclipseLibrary;
}
-
+
/* the startup jar */
(*progArgv)[ dst++ ] = STARTUP;
(*progArgv)[ dst++ ] = jarFile;
-
+
/* the protect mode */
if (protectMode) {
(*progArgv)[ dst++ ] = PROTECT;
@@ -1196,14 +1190,14 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
else
(*progArgv)[ dst++ ] = javaVM;
(*progArgv)[ dst++ ] = VMARGS;
-
+
for (src = 0; src < nVMarg; src++)
(*progArgv)[ dst++ ] = vmArg[ src ];
-
+
if (eeVMarg != NULL)
for (src = 0; src < nEEargs; src++)
(*progArgv)[ dst++ ] = eeVMarg[ src ];
-
+
/* For each required VM arg */
for (src = 0; src < nReqVMarg; src++)
if (*(reqVMarg[src]) != NULL)
@@ -1218,8 +1212,8 @@ static void getVMCommand( int launchMode, int argc, _TCHAR* argv[], _TCHAR **vmA
* This method formats a string with the JVM start command (and all arguments)
* that can be used in displaying error messages. The string returned from this
* method is probably not NLS compliant and must be deallocated by the caller.
- *
- * The arguments in the message are either args (if not null) or the combination
+ *
+ * The arguments in the message are either args (if not null) or the combination
* of vmArgs + progArgs
*/
static _TCHAR* formatVmCommandMsg( _TCHAR* args[], _TCHAR* vmArgs[], _TCHAR* progArgs[] )
@@ -1242,7 +1236,7 @@ static _TCHAR* formatVmCommandMsg( _TCHAR* args[], _TCHAR* vmArgs[], _TCHAR* pr
else list = NULL;
}
message = malloc( (length + 5) * sizeof(_TCHAR) );
-
+
/* Format the message such that options (args starting with '-') begin
on a new line. Otherwise, the Motif MessageBox does not automatically wrap
the messages and the message window can extend beyond both sides of the display. */
@@ -1295,18 +1289,18 @@ void setProgramPath(_TCHAR* path) {
static _TCHAR* getDefaultOfficialName()
{
_TCHAR *ch = NULL;
-
+
/* Skip the directory part */
ch = lastDirSeparator( program );
if (ch == NULL) ch = program;
else ch++;
-
+
ch = _tcsdup( ch );
#ifdef _WIN32
{
/* Search for the extension .exe and cut it */
_TCHAR *extension = _tcsrchr(ch, _T_ECLIPSE('.'));
- if (extension != NULL)
+ if (extension != NULL)
{
*extension = _T_ECLIPSE('\0');
}
@@ -1357,24 +1351,24 @@ static _TCHAR* findSplash(_TCHAR* splashArg) {
_TCHAR *ch;
_TCHAR *path, *prefix;
size_t length;
-
+
if (splashArg == NULL)
return NULL;
-
+
splashArg = _tcsdup(splashArg);
length = _tcslen(splashArg);
/* _tstat doesn't seem to like dirSeparators on the end */
while (IS_DIR_SEPARATOR(splashArg[length - 1])) {
splashArg[--length] = 0;
}
-
+
/* does splashArg exist */
if (_tstat(splashArg, &stats) == 0) {
/* pointing to a file */
- if (stats.st_mode & S_IFREG) {
+ if (stats.st_mode & S_IFREG) {
/* file, use it*/
return splashArg;
- } else if (stats.st_mode & S_IFDIR) {
+ } else if (stats.st_mode & S_IFDIR) {
/*directory, look for splash.bmp*/
ch = malloc( (length + 12) * sizeof(_TCHAR));
_stprintf( ch, _T_ECLIPSE("%s%c%s"), splashArg, dirSeparator, _T_ECLIPSE("splash.bmp") );
@@ -1387,7 +1381,7 @@ static _TCHAR* findSplash(_TCHAR* splashArg) {
free(splashArg);
return NULL;
}
-
+
/* doesn't exist, separate into path & prefix and look for a /path/prefix_<version> */
ch = lastDirSeparator( splashArg );
if (ch != NULL) {
@@ -1409,7 +1403,7 @@ static _TCHAR* findSplash(_TCHAR* splashArg) {
_stprintf(path, _T_ECLIPSE("%s%c%s"), programDir, dirSeparator, _T_ECLIPSE("plugins"));
prefix = _tcsdup(splashArg);
}
-
+
ch = findFile(path, prefix);
free(path);
free(prefix);
@@ -1427,7 +1421,7 @@ static _TCHAR* findStartupJar(){
_TCHAR * pluginsPath;
struct _stat stats;
size_t pathLength, progLength;
-
+
if( startupArg != NULL ) {
/* startup jar was specified on the command line */
ch = _tcsdup(startupArg);
@@ -1457,24 +1451,24 @@ static _TCHAR* findStartupJar(){
_tcscat(pluginsPath, _T_ECLIPSE("../../../"));
#endif
_tcscat(pluginsPath, _T_ECLIPSE("plugins"));
-
- /* equinox startup jar? */
+
+ /* equinox startup jar? */
file = findFile(pluginsPath, DEFAULT_EQUINOX_STARTUP);
if(file != NULL)
return file;
-
+
/* old startup.jar? */
ch = OLD_STARTUP;
file = checkPath(ch, programDir, 1);
if (_tstat( file, &stats ) == 0)
return (file == ch) ? _tcsdup(ch) : file;
-
+
return NULL;
}
-/*
+/*
* Return the portion of the vmCommand that should be used for relaunching
- *
+ *
* The memory allocated for the command array must be freed
*/
static _TCHAR ** getRelaunchCommand( _TCHAR **vmCommand )
@@ -1482,7 +1476,7 @@ static _TCHAR ** getRelaunchCommand( _TCHAR **vmCommand )
int i = -1, req = 0, begin = -1;
int idx = 0;
_TCHAR ** relaunch;
-
+
if (vmCommand == NULL) return NULL;
while(vmCommand[++i] != NULL){
if ( begin == -1 && _tcsicmp( vmCommand[i], *reqVMarg[req] ) == 0) {
@@ -1491,7 +1485,7 @@ static _TCHAR ** getRelaunchCommand( _TCHAR **vmCommand )
}
}
}
-
+
relaunch = malloc((1 + i + 1) * sizeof(_TCHAR *));
relaunch[idx++] = program;
if(begin == -1) {
@@ -1509,7 +1503,7 @@ static _TCHAR ** getRelaunchCommand( _TCHAR **vmCommand )
}
relaunch[idx++] = vmCommand[i];
}
- if(_tcsicmp(relaunch[idx - 1], VMARGS) == 0)
+ if(_tcsicmp(relaunch[idx - 1], VMARGS) == 0)
relaunch[idx - 1] = NULL;
relaunch[idx] = NULL;
return relaunch;
@@ -1523,9 +1517,9 @@ static void createConsole() {
intptr_t stdHandle;
int conHandle;
FILE *fp;
-
+
AllocConsole();
-
+
/* redirect stdout */
stdHandle = (intptr_t) GetStdHandle(STD_OUTPUT_HANDLE);
conHandle = _open_osfhandle(stdHandle, _O_TEXT);
@@ -1533,7 +1527,7 @@ static void createConsole() {
fp = _fdopen(conHandle, "w");
*stdout = *fp;
}
-
+
/* redirect stdin */
stdHandle = (intptr_t) GetStdHandle(STD_INPUT_HANDLE);
conHandle = _open_osfhandle(stdHandle, _O_TEXT);
@@ -1541,7 +1535,7 @@ static void createConsole() {
fp = _fdopen(conHandle, "r");
*stdin = *fp;
}
-
+
/* stderr */
stdHandle = (intptr_t) GetStdHandle(STD_ERROR_HANDLE);
conHandle = _open_osfhandle(stdHandle, _O_TEXT);
@@ -1595,19 +1589,19 @@ static int vmEEProps(_TCHAR * eeFile, _TCHAR ** msg) {
if (jniLib != NULL)
return LAUNCH_JNI;
}
-
+
if (eeConsole != NULL && (debug || needConsole || consoleLauncher) ) {
javaVM = findSymlinkCommand(eeConsole, 0);
if (javaVM != NULL)
return LAUNCH_EXE;
}
-
+
if (eeExecutable != NULL) {
javaVM = findSymlinkCommand(eeExecutable, 0);
if (javaVM != NULL)
return LAUNCH_EXE;
}
-
+
*msg = _tcsdup(eeFile);
return -1;
}
@@ -1625,12 +1619,12 @@ static int determineVM(_TCHAR** msg) {
_TCHAR* vmSearchPath = NULL;
_TCHAR* defaultJava = defaultVM; /* default exe to look for */
int type = 0;
-
+
#ifdef _WIN32
if (debug || needConsole || consoleLauncher)
defaultJava = consoleVM; /* windows will want java.exe for the console, not javaw.exe */
#endif
-
+
/* vmName is passed in on command line with -vm */
if (vmName != NULL) {
size_t length = _tcslen(vmName);
@@ -1638,7 +1632,7 @@ static int determineVM(_TCHAR** msg) {
if (vmName[length - 1] == _T_ECLIPSE('/') || vmName[length - 1] == _T_ECLIPSE('\\')) {
vmName[length - 1] = 0;
}
-
+
vmName = checkPath(vmName, programDir, 1);
type = checkProvidedVMType(vmName);
switch (type) {
@@ -1646,7 +1640,7 @@ static int determineVM(_TCHAR** msg) {
/* vmName is a directory, look for default.ee */
ch = malloc((_tcslen(vmName) + 1 + _tcslen(DEFAULT_EE) + 1) * sizeof(_TCHAR));
_stprintf( ch, _T_ECLIPSE("%s%c%s"), vmName, dirSeparator, DEFAULT_EE );
-
+
result = findCommand(ch);
free(ch);
if (result == NULL) {
@@ -1667,20 +1661,20 @@ static int determineVM(_TCHAR** msg) {
}
/* found nothing, return error */
*msg = malloc( (3 * (_tcslen(vmName) + 2) + _tcslen(DEFAULT_EE) + _tcslen(defaultJava) + _tcslen(vmLibrary) + 1) * sizeof(_TCHAR));
- _stprintf( *msg, _T_ECLIPSE("%s%c%s\n%s%c%s\n%s%c%s"), vmName, dirSeparator, DEFAULT_EE,
+ _stprintf( *msg, _T_ECLIPSE("%s%c%s\n%s%c%s\n%s%c%s"), vmName, dirSeparator, DEFAULT_EE,
vmName, dirSeparator, defaultJava,
vmName, dirSeparator, vmLibrary);
return -1;
}
break;
}
-
+
/* else default.ee does exist */
vmName = result;
/* fall through to VM_EE_PROPS*/
case VM_EE_PROPS:
return vmEEProps(vmName, msg);
-
+
case VM_LIBRARY:
ch = findCommand(vmName);
if(ch != NULL) {
@@ -1698,14 +1692,14 @@ static int determineVM(_TCHAR** msg) {
*msg = _tcsdup(vmName);
}
return -1;
-
+
default:
/*otherwise, assume executable */
javaVM = findSymlinkCommand(vmName, 0);
if(javaVM != NULL) {
#ifdef MACOSX
/* right now, we are always doing JNI on Mac */
- break;
+ break;
#else
return LAUNCH_EXE;
#endif
@@ -1721,10 +1715,10 @@ static int determineVM(_TCHAR** msg) {
return -1;
}
}
-
+
if (vmName == NULL) {
/* no vm specified, Try to find the VM shipped with eclipse. */
-
+
/* look first for default.ee */
ch = malloc( (_tcslen( programDir ) + _tcslen( shippedVMDir ) + _tcslen( DEFAULT_EE ) + 1) * sizeof(_TCHAR) );
_stprintf( ch, _T_ECLIPSE("%s%s%s"), programDir, shippedVMDir, DEFAULT_EE );
@@ -1735,16 +1729,16 @@ static int determineVM(_TCHAR** msg) {
free(result);
return type;
}
-
+
/* then look for java(w).exe */
ch = malloc( (_tcslen( programDir ) + _tcslen( shippedVMDir ) + _tcslen( defaultJava ) + 10) * sizeof(_TCHAR) );
_stprintf( ch, _T_ECLIPSE("%s%s%s"), programDir, shippedVMDir, defaultJava );
vmSearchPath = _tcsdup(ch);
-
+
javaVM = findSymlinkCommand( ch, 0 );
free(ch);
}
-
+
if (javaVM == NULL) {
/* vm not found yet, look for one on the search path, but don't resolve symlinks */
javaVM = findSymlinkCommand(defaultJava, 0);
@@ -1752,7 +1746,7 @@ static int determineVM(_TCHAR** msg) {
/* can't find vm, error */
ch = malloc( (_tcslen(pathMsg) + _tcslen(defaultJava) + 1) * sizeof(_TCHAR));
_stprintf(ch, pathMsg, defaultJava);
-
+
if(vmSearchPath != NULL) {
*msg = malloc((_tcslen(ch) + 1 + _tcslen(vmSearchPath) + 1) * sizeof(_TCHAR));
_stprintf(*msg, _T_ECLIPSE("%s\n%s"), vmSearchPath, ch);
@@ -1766,21 +1760,21 @@ static int determineVM(_TCHAR** msg) {
if (vmSearchPath != NULL)
free(vmSearchPath);
-
+
#ifndef DEFAULT_JAVA_EXEC
/* resolve symlinks for finding the library */
ch = resolveSymlinks(javaVM);
jniLib = findVMLibrary(ch);
if (ch != jniLib && ch != javaVM)
free(ch);
- if (jniLib != NULL)
+ if (jniLib != NULL)
return LAUNCH_JNI;
#endif
-
+
return LAUNCH_EXE;
}
-static int processEEProps(_TCHAR* eeFile)
+static int processEEProps(_TCHAR* eeFile)
{
_TCHAR ** argv;
_TCHAR * c1, * c2;
@@ -1789,13 +1783,13 @@ static int processEEProps(_TCHAR* eeFile)
int index, i;
int matches = 0;
Option *option;
-
+
if(readConfigFile(eeFile, &argc, &argv) != 0)
return -1;
nEEargs = argc;
eeVMarg = argv;
-
+
eeDir = _tcsdup(eeFile);
c1 = lastDirSeparator( eeDir );
while (c1 != NULL)
@@ -1805,7 +1799,7 @@ static int processEEProps(_TCHAR* eeFile)
if (!IS_DIR_SEPARATOR(*c1))
c1 = NULL;
}
-
+
for (index = 0; index < argc; index++){
/* replace ${ee.home} with eeDir, loop in case there is more than one per argument */
while( (c1 = _tcsstr(argv[index], EE_HOME_VAR)) != NULL)
@@ -1817,7 +1811,7 @@ static int processEEProps(_TCHAR* eeFile)
free(argv[index]);
argv[index] = c2;
}
-
+
/* Find the corresponding argument is a option supported by the launcher */
option = NULL;
for (i = 0; option == NULL && i < eeOptionsSize; i++)
@@ -1828,7 +1822,7 @@ static int processEEProps(_TCHAR* eeFile)
}
}
if(option != NULL) {
- ++matches;
+ ++matches;
if (option->flag & VALUE_IS_FLAG)
*((int*)option->value) = 1;
else {
@@ -1853,17 +1847,17 @@ static int processEEProps(_TCHAR* eeFile)
}
/* set ee.home, ee.filename variables, and NULL */
argv = realloc(argv, (nEEargs + 3) * sizeof(_TCHAR*));
-
+
c1 = malloc( (_tcslen(EE_HOME) + _tcslen(eeDir) + 1) * sizeof(_TCHAR));
_stprintf(c1, _T_ECLIPSE("%s%s"), EE_HOME, eeDir);
argv[nEEargs++] = c1;
-
+
c1 = malloc( (_tcslen(EE_FILENAME) + _tcslen(eeFile) + 1) * sizeof(_TCHAR));
_stprintf(c1, _T_ECLIPSE("%s%s"), EE_FILENAME, eeFile);
argv[nEEargs++] = c1;
-
+
argv[nEEargs] = NULL;
-
+
free(eeDir);
return 0;
}
@@ -1882,19 +1876,19 @@ _TCHAR ** getVMLibrarySearchPath(_TCHAR * vmLibrary) {
int numPaths = 3;
int i;
struct _stat stats;
-
- buffer = (eeLibPath != NULL) ? _tcsdup(eeLibPath) : _tcsdup(vmLibrary);
+
+ buffer = (eeLibPath != NULL) ? _tcsdup(eeLibPath) : _tcsdup(vmLibrary);
#ifdef WIN32
/* On windows we sometimes get '/' instead of '\', just always use '/' */
i = -1;
while (buffer[++i] != 0) {
- if (buffer[i] == _T_ECLIPSE('\\'))
+ if (buffer[i] == _T_ECLIPSE('\\'))
buffer[i] = _T_ECLIPSE('/');
}
#endif
-
+
separator = (eeLibPath != NULL) ? pathSeparator : _T_ECLIPSE('/');
-
+
if (eeLibPath != NULL) {
/* count number of path elements */
numPaths = 1;
@@ -1903,11 +1897,11 @@ _TCHAR ** getVMLibrarySearchPath(_TCHAR * vmLibrary) {
numPaths++;
c++;
}
- }
-
+ }
+
paths = malloc((numPaths + 1) * sizeof(_TCHAR*));
paths[numPaths] = NULL;
-
+
/* We are either splitting eeLibPath (eg path1:path2), or we are extracting
* from libPath where we want the directory containing the library and the
* parent directory of that, and also grandparent/lib/arch */
@@ -1915,9 +1909,9 @@ _TCHAR ** getVMLibrarySearchPath(_TCHAR * vmLibrary) {
c = _tcsrchr(buffer, separator);
if (c != 0) {
*c++ = 0;
- if (eeLibPath != NULL) {
+ if (eeLibPath != NULL) {
path = c; /* we want from c to the end */
- } else {
+ } else {
path = buffer; /* we want from the start to c */
}
} else {
@@ -1952,7 +1946,7 @@ _TCHAR ** getVMLibrarySearchPath(_TCHAR * vmLibrary) {
path = NULL;
}
}
-
+
free(buffer);
return paths;
}

Back to the top