[Libreoffice-commits] core.git: 2 commits - libreofficekit/Module_libreofficekit.mk libreofficekit/source

Jan Holesovsky kendy at collabora.com
Wed Jul 16 10:41:19 PDT 2014


 libreofficekit/Module_libreofficekit.mk |    2 -
 libreofficekit/source/shim.c            |   39 ++++++++++++++++++++++----------
 2 files changed, 27 insertions(+), 14 deletions(-)

New commits:
commit 73b10c81c90dc5908e48c72ee97478c8a8fbdc62
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jul 16 19:36:53 2014 +0200

    LibreOfficeKit: Check for libmerged too.
    
    And avoid some strcat's when at it.
    
    Change-Id: I0c70ee2a1abf0c9e2914f756b06bedc3a16df19b

diff --git a/libreofficekit/source/shim.c b/libreofficekit/source/shim.c
index 6a3f9a7..ac272e8 100644
--- a/libreofficekit/source/shim.c
+++ b/libreofficekit/source/shim.c
@@ -10,9 +10,9 @@
 #ifdef LINUX
 
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
-#include <osl/module.h>
 #include <sal/types.h>
 #include <LibreOfficeKit/LibreOfficeKit.h>
 
@@ -21,37 +21,52 @@
 #  include <sys/ldr.h>
 #endif
 
-#define TARGET_LIB SAL_MODULENAME( "sofficeapp" )
+#define TARGET_LIB        "lib" "sofficeapp" ".so"
+#define TARGET_MERGED_LIB "lib" "libmergedlo" ".so"
 
 typedef LibreOfficeKit *(HookFunction)( const char *install_path);
 
 SAL_DLLPUBLIC_EXPORT LibreOfficeKit *lok_init( const char *install_path )
 {
     char *imp_lib;
+    size_t partial_length;
     void *dlhandle;
     HookFunction *pSym;
 
-    if( !install_path )
+    if (!install_path)
         return NULL;
-    if( !( imp_lib = (char *) malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 ) ) )
+
+    // allocate large enough buffer
+    partial_length = strlen(install_path);
+    imp_lib = (char *) malloc(partial_length + sizeof(TARGET_LIB) + sizeof(TARGET_MERGED_LIB) + 2);
+    if (!imp_lib)
     {
         fprintf( stderr, "failed to open library : not enough memory\n");
         return NULL;
     }
 
-    strcpy( imp_lib, install_path );
-    strcat( imp_lib, "/" );
-    strcat( imp_lib, TARGET_LIB );
+    strcpy(imp_lib, install_path);
+
+    imp_lib[partial_length++] = '/';
+    strcpy(imp_lib + partial_length, TARGET_LIB);
 
-    if( !( dlhandle = dlopen( imp_lib, RTLD_LAZY ) ) )
+    dlhandle = dlopen(imp_lib, RTLD_LAZY);
+    if (!dlhandle)
     {
-        fprintf( stderr, "failed to open library '%s'\n", imp_lib );
-        free( imp_lib );
-        return NULL;
+        strcpy(imp_lib + partial_length, TARGET_MERGED_LIB);
+
+        dlhandle = dlopen(imp_lib, RTLD_LAZY);
+        if (!dlhandle)
+        {
+            fprintf(stderr, "failed to open library '%s' or '%s' in '%s/'\n", TARGET_LIB, TARGET_MERGED_LIB, install_path);
+            free(imp_lib);
+            return NULL;
+        }
     }
 
     pSym = (HookFunction *) dlsym( dlhandle, "libreofficekit_hook" );
-    if( !pSym ) {
+    if (!pSym)
+    {
         fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
         dlclose( dlhandle );
         free( imp_lib );
commit 98fb5f98d84474103a04cbad824febecb25407c2
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jul 16 08:15:30 2014 +0200

    Revert "libreofficekit does not work with libmerged"
    
    Instead, we need to make sure it works with libmerged too :-)
    
    This reverts commit 4e9d8ca44a246653894559f10bf88effba366b10.

diff --git a/libreofficekit/Module_libreofficekit.mk b/libreofficekit/Module_libreofficekit.mk
index 4c5163f..2d9b98c 100644
--- a/libreofficekit/Module_libreofficekit.mk
+++ b/libreofficekit/Module_libreofficekit.mk
@@ -15,11 +15,9 @@ $(eval $(call gb_Module_add_targets,libreofficekit,\
     StaticLibrary_libreofficekit \
 ))
 
-ifeq ($(MERGELIBS),)
 $(eval $(call gb_Module_add_check_targets,libreofficekit,\
     CppunitTest_libreofficekit_tiledrendering \
 ))
-endif
 
 ifneq ($(ENABLE_GTK),)
 $(eval $(call gb_Module_add_targets,libreofficekit,\


More information about the Libreoffice-commits mailing list