From a6568f5db9fc6011c02f6ee6a4b28bb359e3d9ea Mon Sep 17 00:00:00 2001 From: Silenio Quarti Date: Thu, 26 Apr 2012 10:02:03 -0400 Subject: Bug 377706 - x86 cocoa launcher does not start if OpenJDK 7 is installed --- .../library/carbon/eclipseCarbon.c | 24 ++++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'bundles') diff --git a/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbon.c b/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbon.c index 04e729860..79bed9471 100644 --- a/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbon.c +++ b/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbon.c @@ -53,12 +53,16 @@ static char * findLib(char * command); #ifdef i386 #define JAVA_ARCH "i386" +#define JAVA_HOME_ARCH "i386" #elif defined(__ppc__) || defined(__powerpc64__) #define JAVA_ARCH "ppc" +#define JAVA_HOME_ARCH "ppc" #elif defined(__amd64__) || defined(__x86_64__) #define JAVA_ARCH "amd64" +#define JAVA_HOME_ARCH "x86_64" #else #define JAVA_ARCH DEFAULT_OS_ARCH +#define JAVA_HOME_ARCH DEFAULT_OS_ARCH #endif #define LIB_PATH_VAR _T_ECLIPSE("LD_LIBRARY_PATH") @@ -511,19 +515,21 @@ char * getJavaHome() { FILE *fp; char path[4096]; char *result, *start; - fp = popen("/usr/libexec/java_home", "r"); + sprintf(path, "/usr/libexec/java_home -a %s", JAVA_HOME_ARCH); + fp = popen(path, "r"); if (fp == NULL) { return NULL; } while (fgets(path, sizeof(path)-1, fp) != NULL) { } - result = strdup(path); + result = path; start = strchr(result, '\n'); if (start) { start[0] = 0; } + sprintf(path, "%s/bin/java", result); pclose(fp); - return result; + return strdup(path); } char * findVMLibrary( char* command ) { @@ -555,21 +561,21 @@ char * findVMLibrary( char* command ) { free(version); } } - version = getJavaVersion(command); + char *java_home = NULL, *cmd = command; + if (strstr(cmd, "/JavaVM.framework/") != NULL && (strstr(cmd, "/Current/") != NULL || strstr(cmd, "/A/") != NULL)) { + java_home = cmd = getJavaHome(); + } + version = getJavaVersion(cmd); isJDK7 = version && versionCmp(version, "1.7.0") >= 0; if (version) free(version); if (isJDK7) { - char *java_home = NULL, *cmd = command; - if (strstr(cmd, "/JavaVM.framework/") != NULL && (strstr(cmd, "/Current/") != NULL || strstr(cmd, "/A/") != NULL)) { - java_home = cmd = getJavaHome(); - } start = strstr(cmd, "/Contents/"); if (start != NULL){ start[0] = 0; return cmd; } - if (java_home) free(java_home); } + if (java_home) free(java_home); if (strstr(command, "/JavaVM.framework/") == NULL) { char * lib = findLib(command); if (lib != NULL) { -- cgit v1.2.3