SOURCES: openoffice.org-nsplugin-path.diff (NEW) - cp from ooo-bui...
glen
glen at pld-linux.org
Sun Mar 18 17:38:28 CET 2007
Author: glen Date: Sun Mar 18 16:38:28 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- cp from ooo-build-2.1.8/patches/src680/nsplugin-path.diff
also http://qa.openoffice.org/issues/show_bug.cgi?id=49590
---- Files affected:
SOURCES:
openoffice.org-nsplugin-path.diff (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/openoffice.org-nsplugin-path.diff
diff -u /dev/null SOURCES/openoffice.org-nsplugin-path.diff:1.1
--- /dev/null Sun Mar 18 17:38:28 2007
+++ SOURCES/openoffice.org-nsplugin-path.diff Sun Mar 18 17:38:23 2007
@@ -0,0 +1,110 @@
+Index: extensions/source/nsplugin/source/so_env.cxx
+===================================================================
+RCS file: /cvs/util/extensions/source/nsplugin/source/so_env.cxx,v
+retrieving revision 1.6
+diff -u -p -u -r1.6 so_env.cxx
+--- extensions/source/nsplugin/source/so_env.cxx 8 Sep 2005 19:40:59 -0000 1.6
++++ extensions/source/nsplugin/source/so_env.cxx 20 Oct 2005 12:32:16 -0000
+@@ -36,6 +36,7 @@
+ #ifdef UNIX
+ #include <sys/types.h>
+ #include <strings.h>
++#include <dlfcn.h>
+ #if defined(SOLARIS) && !defined(__GNUC__)
+ #include <varargs.h>
+ #else
+@@ -122,6 +123,80 @@ restoreUTF8(char *pPath)
+ return 0;
+ }
+
++#ifdef UNIX
++extern int nspluginOOoModuleHook (void** aResult);
++int nspluginOOoModuleHook (void** aResult)
++{
++ void *dl_handle;
++ void *thisp;
++
++ dl_handle = dlopen(NULL, RTLD_NOW);
++ if (!dl_handle)
++ {
++ fprintf (stderr, "Can't open myself '%s'\n", dlerror());
++ return 1;
++ }
++
++ Dl_info dl_info = { 0, };
++ if(!dladdr((const void *)nspluginOOoModuleHook, &dl_info))
++ {
++ fprintf (stderr, "Can't find my own address '%s'\n", dlerror());
++ return 1;
++ }
++
++ if (!dl_info.dli_fname)
++ {
++ fprintf (stderr, "Can't find my own file name\n");
++ return 1;
++ }
++
++ char cwdstr[NPP_PATH_MAX];
++ if (!getcwd (cwdstr, sizeof(cwdstr)))
++ {
++ fprintf (stderr, "Can't get cwd\n");
++ return 1;
++ }
++
++ char libFileName[NPP_PATH_MAX];
++
++ if (dl_info.dli_fname[0] != '/')
++ {
++ strcpy (libFileName, cwdstr);
++ strcat (libFileName, "/");
++ }
++ strcat (libFileName, dl_info.dli_fname);
++
++ char *clobber;
++ static char realFileName[NPP_PATH_MAX] = {0};
++# define SEARCH_SUFFIX "/program/libnpsoplug"
++
++ if (!(clobber = strstr (libFileName, SEARCH_SUFFIX)))
++ {
++ if (readlink(libFileName, realFileName, NPP_PATH_MAX) != 0)
++ {
++ fprintf (stderr, "Couldn't read link '%s'\n", libFileName);
++ return 1;
++ }
++ if (!(clobber = strstr (realFileName, "/program/libnpsoplug")))
++ {
++ fprintf (stderr, "Couldn't find suffix in '%s'\n", realFileName);
++ return 1;
++ }
++ *clobber = '\0';
++ }
++ else
++ {
++ *clobber = '\0';
++ strcpy (realFileName, libFileName);
++ }
++ *aResult = realFileName;
++
++ fprintf (stderr, "OpenOffice path is '%s'\n", realFileName);
++
++ return 0;
++}
++#endif
++
+ // *aResult points the static string holding "/opt/staroffice8"
+ int findReadSversion(void** aResult, int bWnt, const char* tag, const char* entry)
+ {
+@@ -134,6 +209,12 @@ int findReadSversion(void** aResult, int
+ // Filename of lnk file, eg. "soffice"
+ char lnkFileName[NPP_PATH_MAX] = {0};
+ char* pTempZero = NULL;
++
++ /* try to fetch a 'self' pointer */
++ if (!nspluginOOoModuleHook (aResult))
++ return 0;
++
++ /* .. now in $HOME */
+ sprintf(lnkFileName, "%s/.mozilla/plugins/libnpsoplugin%s", getenv("HOME"), SAL_DLLEXTENSION);
+ if ((0 > readlink(lnkFileName, realFileName, NPP_PATH_MAX)) ||
+ (NULL == (pTempZero = strstr(realFileName, "/program/libnpsoplugin" SAL_DLLEXTENSION))))
+
================================================================
More information about the pld-cvs-commit
mailing list