diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.executable/library/eclipseMozilla.c')
-rw-r--r-- | bundles/org.eclipse.equinox.executable/library/eclipseMozilla.c | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/bundles/org.eclipse.equinox.executable/library/eclipseMozilla.c b/bundles/org.eclipse.equinox.executable/library/eclipseMozilla.c deleted file mode 100644 index a599589d5..000000000 --- a/bundles/org.eclipse.equinox.executable/library/eclipseMozilla.c +++ /dev/null @@ -1,300 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2011 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -/* Eclipse Mozilla Utility Methods */ - -#ifdef MOZILLA_FIX - -#include "eclipseMozilla.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <dirent.h> -#include <sys/stat.h> - -static char* prefixes[] = { - "xulrunner-1", - "mozilla-seamonkey-1", - "seamonkey-1", - "mozilla-1", - "mozilla-firefox-2", - "firefox-2", - "mozilla-firefox-3", - "firefox-3", - NULL -}; -static const int XULRUNNER_INDEX = 0; - -/* Filter function used by fixEnvForMozilla() for finding directories - * with a desired prefix. - */ -int filter(const struct dirent *dir) -{ -#if defined(__amd64__) || defined(__x86_64__) || defined(__powerpc64__) - char* root = "/usr/lib64/"; -#else - char* root = "/usr/lib/"; -#endif - -#if defined (SOLARIS) - /* - * The solaris compiler does not do static linking, so just check - * for a common lib to ensure that the install seems valid. - */ - char* testlib = "/libxpcom.so"; -#else - /* Ensure that the install is dynamically-linked and is built with GTK2 */ - char* testlib = "/components/libwidget_gtk2.so"; -#endif - - struct stat buf; - int index = 0; - char* dirname = (char *)dir->d_name; - - char* prefix = prefixes [index]; - while (prefix != NULL) - { - int prefixLength = strlen(prefix); - if (strncmp(dirname, prefix, prefixLength) == 0) - { - /* If a xulrunner install is found then success is immediate since - * xulrunner always provides an embeddable GRE. - */ - if (index == XULRUNNER_INDEX) return 1; /* include in scandir result */ - - int dirLength = strlen(dirname); - char* testpath = malloc (strlen(root) + dirLength + strlen(testlib) + 1); - strcpy(testpath, root); - strcat(testpath, dirname); - strcat(testpath, testlib); - int success = stat(testpath, &buf) == 0; - free(testpath); - if (success) - { - return 1; /* include in scandir result */ - } - } - prefix = prefixes [++index]; - } - return 0; /* exclude from scandir result */ -} - -#if defined (SOLARIS) -/* - * A replacement for - * scandir(const char *dir, struct dirent ***namelist, filter, alphasort); - * because scandir & alphasort don't exist on Solaris 9. - * Return the dirent->d_name that was sorted the highest according to strcoll, - * or NULL on error or if no entries matched the filter. - * The caller is responsible for freeing the returned string - */ -char * scan(const char * path) { - DIR *dir = NULL; - struct dirent * entry = NULL; - char * candidate = NULL; - - if ((dir = opendir(path)) == NULL) { - return NULL; - } - - while ((entry = readdir(dir)) != NULL) { - if (filter(entry)) { - if (candidate == NULL) { - candidate = strdup(entry->d_name); - } else if (strcoll(candidate, entry->d_name) < 0) { - free(candidate); - candidate = strdup(entry->d_name); - } - } - } - closedir(dir); - - return candidate; -} -#endif - -/* Set the environmnent required by the SWT Browser widget to bind to Mozilla. - * The SWT Browser widget relies on Mozilla on Linux. The LD_LIBRARY_PATH - * and the Mozilla environment variable MOZILLA_FIVE_HOME must point - * to the installation directory of Mozilla. - * - * 1. Use the location set by MOZILLA_FIVE_HOME if it is defined - * 2. Parse the file /etc/gre.conf if it is defined. This file is - * set by the RedtHat RPM manager. - * 3. Try some common installation locations. - */ -void fixEnvForMozilla() { - static int fixed = 0; - if (fixed) return; - { - char *ldPath = (char*)getenv("LD_LIBRARY_PATH"); - char *mozillaFiveHome = (char*)getenv("MOZILLA_FIVE_HOME"); - char *grePath = NULL; /* Gecko Runtime Environment Location */ - fixed = 1; - /* Always dup the string so we can free later */ - if (ldPath != NULL) ldPath = strdup(ldPath); - else ldPath = strdup(""); - - /* MOZILLA_FIVE_HOME (if defined) points to the Mozilla - * install directory. Don't look any further if it is set. - */ - if (mozillaFiveHome != NULL) - { - grePath = strdup(mozillaFiveHome); - } - - /* The file gre.conf (if available) points to the - * Mozilla install directory. Don't look any further if - * it is set. - */ - if (grePath == NULL) - { - struct stat buf; - FILE *file = NULL; -#if defined(__amd64__) || defined(__x86_64__) || defined(__powerpc64__) - if (stat("/etc/gre64.conf", &buf) == 0) - { - file = fopen("/etc/gre64.conf", "r"); - } - else if (stat("/etc/gre.d/gre64.conf", &buf) == 0) - { - file = fopen("/etc/gre.d/gre64.conf", "r"); - } else -#endif - if (stat("/etc/gre.conf", &buf) == 0) - { - file = fopen("/etc/gre.conf", "r"); - } - else if (stat("/etc/gre.d/gre.conf", &buf) == 0) - { - file = fopen("/etc/gre.d/gre.conf", "r"); - } - if (file != NULL) - { - char buffer[1024]; - char path[1024]; - while (fgets(buffer, 1024, file) != NULL) - { - if (sscanf(buffer, "GRE_PATH=%s", path) == 1) - { - int index = 0; - char* prefix = prefixes [index]; - while (prefix != NULL) - { - if (strstr(path, prefix)) - { - grePath = strdup(path); - break; - } - prefix = prefixes [++index]; - } - } - } - fclose(file); - } - } - - /* Try some common installation locations. */ - if (grePath == NULL) - { - /* try xulrunner-1*, mozilla-1*, firefox-2/3*, seamonkey-1* directories in /usr/lib/ */ -#if defined(__amd64__) || defined(__x86_64__) || defined(__powerpc64__) - char* dir = "/usr/lib64/"; -#else - char* dir = "/usr/lib/"; -#endif -#if defined (SOLARIS) - char * name = scan(dir); - if (name != NULL) { -#else - struct dirent **namelist; - int i; - int count = scandir(dir, &namelist, filter, alphasort); - if (count > 0) - { - /* count-1 is used below in an attempt to choose XULRunner - * any time one is found - */ - char* name = namelist [count - 1]->d_name; -#endif - grePath = malloc (strlen(dir) + strlen(name) + 1); - strcpy(grePath, dir); - strcat(grePath, name); -#if defined (SOLARIS) - free(name); -#else - for (i = 0; i < count; i++) { - free(namelist [i]); - } - free(namelist); -#endif - } - -#if defined (SOLARIS) - if (grePath == NULL) - { - /* some other typical installation locations */ - char* dirs[] = { - "/usr/sfw/lib/mozilla/", /* Solaris location */ - "/usr/lib/firefox/", /* OpenSolaris location */ - NULL - }; - - /* - * The solaris compiler does not do static linking, so just check - * for a common lib to ensure that the install seems valid. - */ - char* testlib = "libxpcom.so"; - - struct stat buf; - int index = 0; - - char* dir = dirs [index++]; - while (dir != NULL) - { - char* testpath = malloc (strlen(dir) + strlen(testlib) + 1); - strcpy(testpath, dir); - strcat(testpath, testlib); - int success = stat(testpath, &buf) == 0; - free(testpath); - if (success) - { - grePath = strdup(dir); - break; - } - dir = dirs [index++]; - } - } -#endif // SOLARIS - } - - if (grePath != NULL) - { - /* If grePath contains "xulrunner" then do not change the LD_LIBRARY_PATH, - * since it is likely that a xulrunner (not a mozilla or firefox) - * will be found at runtime. Note that MOZILLA_FIVE_HOME is still - * updated if grePath contains "xul" since this variable can act as - * a backup GRE to try if an initially-detected one fails to load. - */ - if (!strstr(grePath, "xulrunner")) { - ldPath = (char*)realloc(ldPath, strlen(ldPath) + strlen(grePath) + 2); - if (strlen(ldPath) > 0) strcat(ldPath, ":"); - strcat(ldPath, grePath); - setenv("LD_LIBRARY_PATH", ldPath, 1); - } - - if (mozillaFiveHome == NULL) setenv("MOZILLA_FIVE_HOME", grePath, 1); - free(grePath); - } - free(ldPath); - } -} -#endif /* MOZILLA_FIX */ |