diff options
author | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-07-28 20:23:03 +0200 |
---|---|---|
committer | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-07-29 07:11:20 +0200 |
commit | 9e7bdb422d12d8be4b76eaf065e3aea8f9055f12 (patch) | |
tree | a1854228e61d9904edae4cb3239a3b1846db2917 /libreofficekit/source | |
parent | 300845922eec7a28bc1da337acd21f138685d759 (diff) |
Kill the libreofficekit static library / shim.c.
It looks like the cleanest method of getting lok_init into
a LibreOfficeKitInit.h header (in a c89 compatible way) is to
have it as a static function.
(inline is only available in C99 or later -- this is actually
available on Linux which is the only place that we can actually
use lok_init anyways currently, however given we have to keep
c89 for the C code (for MSVC) compatibility, selectively enabling
c99 would likely be more messy.)
Change-Id: I0493e7a68ed5397479220bb6ba8c3db870b6dd32
Diffstat (limited to 'libreofficekit/source')
-rw-r--r-- | libreofficekit/source/shim.c | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/libreofficekit/source/shim.c b/libreofficekit/source/shim.c deleted file mode 100644 index b533a61b2197..000000000000 --- a/libreofficekit/source/shim.c +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#ifdef LINUX - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <sal/types.h> -#include <LibreOfficeKit/LibreOfficeKit.h> - -#include <dlfcn.h> -#ifdef AIX -# include <sys/ldr.h> -#endif - -#define TARGET_LIB "lib" "sofficeapp" ".so" -#define TARGET_MERGED_LIB "lib" "mergedlo" ".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) - return NULL; - - // 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); - - imp_lib[partial_length++] = '/'; - strcpy(imp_lib + partial_length, TARGET_LIB); - - dlhandle = dlopen(imp_lib, RTLD_LAZY); - if (!dlhandle) - { - 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) - { - fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib ); - dlclose( dlhandle ); - free( imp_lib ); - return NULL; - } - - free( imp_lib ); - return pSym( install_path ); -} - -#endif // not LINUX => port me ! - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |