diff options
author | Reuben Thomas <rrt@sc3d.org> | 2017-02-02 21:06:37 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-02 21:06:37 +0000 |
commit | 8f340cadaa0b8af47ae95a0340cbaad4154fbb9c (patch) | |
tree | b2be0356320048f2014344e48145b0b9eb912805 | |
parent | 1c68fada7413d7ff2ab96393b4aa3a4de78b12db (diff) | |
parent | 735795b0ee9d1d3530337716ea340cda8a4ea89d (diff) | |
download | enchant-8f340cadaa0b8af47ae95a0340cbaad4154fbb9c.tar.gz |
Merge pull request #63 from rrthomas/master
Fix issue #51: remove unused binary relocation support
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | m4/binreloc.m4 | 77 | ||||
-rw-r--r-- | msvc/libenchant.vcproj | 8 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/enchant.c | 16 | ||||
-rw-r--r-- | src/prefix.c | 696 | ||||
-rw-r--r-- | src/prefix.h | 68 | ||||
-rw-r--r-- | unittests/EnchantTestFixture.h | 4 |
8 files changed, 2 insertions, 875 deletions
diff --git a/configure.ac b/configure.ac index a9a13c1..c7371c8 100644 --- a/configure.ac +++ b/configure.ac @@ -301,10 +301,6 @@ dnl supporting this old version. AC_SUBST(UNITTESTPP_CFLAGS) AC_SUBST(UNITTESTPP_LIBS) -dnl binreloc -dnl AM_BINRELOC -AM_CONDITIONAL(WITH_BINRELOC, test "x$br_cv_binreloc" = "xyes") - build_ispell=yes AC_ARG_ENABLE(ispell, AS_HELP_STRING([--disable-ispell],[enable the ispell backend @<:@default=auto@:>@]), build_ispell="$enableval", build_ispell=yes) @@ -558,7 +554,7 @@ AC_OUTPUT dnl =========================================================================================== relocatable_library="no" -if test "x$native_win32" = "xyes" || test "x$br_cv_binreloc" = "xyes"; then +if test "x$native_win32" = "xyes"; then relocatable_library="yes" fi diff --git a/m4/binreloc.m4 b/m4/binreloc.m4 deleted file mode 100644 index 071e49e..0000000 --- a/m4/binreloc.m4 +++ /dev/null @@ -1,77 +0,0 @@ -# Check for binary relocation support. -# Written by Hongli Lai -# http://autopackage.org/ - -AC_DEFUN([AM_BINRELOC], -[ - AC_ARG_ENABLE(binreloc, - [ --enable-binreloc compile with binary relocation support - (default=enable when available)], - enable_binreloc=$enableval,enable_binreloc=auto) - - AC_ARG_ENABLE(binreloc-threads, - [ --enable-binreloc-threads compile binary relocation with threads support - (default=yes)], - enable_binreloc_threads=$enableval,enable_binreloc_threads=yes) - - BINRELOC_CFLAGS= - BINRELOC_LIBS= - if test "x$enable_binreloc" = "xauto"; then - AC_CHECK_FILE([/proc/self/maps]) - AC_CACHE_CHECK([whether everything is installed to the same prefix], - [br_cv_valid_prefixes], [ - if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \ - "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \ - "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc' - then - br_cv_valid_prefixes=yes - else - br_cv_valid_prefixes=no - fi - ]) - fi - AC_CACHE_CHECK([whether binary relocation support should be enabled], - [br_cv_binreloc], - [if test "x$enable_binreloc" = "xyes"; then - br_cv_binreloc=yes - elif test "x$enable_binreloc" = "xauto"; then - if test "x$br_cv_valid_prefixes" = "xyes" -a \ - "x$ac_cv_file__proc_self_maps" = "xyes"; then - br_cv_binreloc=yes - else - br_cv_binreloc=no - fi - else - br_cv_binreloc=no - fi]) - - if test "x$br_cv_binreloc" = "xyes"; then - BINRELOC_CFLAGS="-DENABLE_BINRELOC" - AC_DEFINE(ENABLE_BINRELOC,,[Use binary relocation?]) - if test "x$enable_binreloc_threads" = "xyes"; then - AC_CHECK_LIB([pthread], [pthread_getspecific]) - fi - - AC_CACHE_CHECK([whether binary relocation should use threads], - [br_cv_binreloc_threads], - [if test "x$enable_binreloc_threads" = "xyes"; then - if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then - br_cv_binreloc_threads=yes - else - br_cv_binreloc_threads=no - fi - else - br_cv_binreloc_threads=no - fi]) - - if test "x$br_cv_binreloc_threads" = "xyes"; then - BINRELOC_LIBS="-lpthread" - AC_DEFINE(BR_PTHREAD,1,[Include pthread support for binary relocation?]) - else - BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0" - AC_DEFINE(BR_PTHREAD,0,[Include pthread support for binary relocation?]) - fi - fi - AC_SUBST(BINRELOC_CFLAGS) - AC_SUBST(BINRELOC_LIBS) -]) diff --git a/msvc/libenchant.vcproj b/msvc/libenchant.vcproj index 07f950e..ff1e4b2 100644 --- a/msvc/libenchant.vcproj +++ b/msvc/libenchant.vcproj @@ -205,10 +205,6 @@ >
</File>
<File
- RelativePath="..\src\prefix.h"
- >
- </File>
- <File
RelativePath="..\src\pwl.h"
>
</File>
@@ -233,10 +229,6 @@ >
</File>
<File
- RelativePath="..\src\prefix.c"
- >
- </File>
- <File
RelativePath="..\src\pwl.c"
>
</File>
diff --git a/src/Makefile.am b/src/Makefile.am index 5bfaf56..17cf8c2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -14,7 +14,7 @@ libenchant_la_LDFLAGS += -version-info $(VERSION_INFO) endif libenchant_la_DEPENDENCIES = @ENCHANT_WIN32_RESOURCE@ -libenchant_la_SOURCES = prefix.c enchant.c pwl.c enchant.h prefix.h pwl.h +libenchant_la_SOURCES = enchant.c pwl.c enchant.h pwl.h libenchant_includedir = $(includedir)/enchant libenchant_include_HEADERS = enchant.h enchant-provider.h enchant++.h diff --git a/src/enchant.c b/src/enchant.c index 87a0841..9f127f4 100644 --- a/src/enchant.c +++ b/src/enchant.c @@ -54,10 +54,6 @@ #define ENCHANT_USER_PATH_EXTENSION ".enchant" #endif -#ifdef ENABLE_BINRELOC -#include "prefix.h" -#endif - ENCHANT_PLUGIN_DECLARE("Enchant") static char * @@ -1712,18 +1708,6 @@ enchant_broker_init (void) g_return_val_if_fail (g_module_supported (), NULL); -#ifdef ENABLE_BINRELOC - { - static gboolean binreloc_initialized = FALSE; - - if (!binreloc_initialized) - { - (void)gbr_init_lib (NULL); - binreloc_initialized = TRUE; - } - } -#endif - broker = g_new0 (EnchantBroker, 1); broker->dict_map = g_hash_table_new_full (g_str_hash, g_str_equal, diff --git a/src/prefix.c b/src/prefix.c deleted file mode 100644 index ea35542..0000000 --- a/src/prefix.c +++ /dev/null @@ -1,696 +0,0 @@ -/* - * BinReloc - a library for creating relocatable executables - * Written by: Hongli Lai <h.lai@chello.nl> - * http://autopackage.org/ - * - * This source code is public domain. You can relicense this code - * under whatever license you want. - * - * See http://autopackage.org/docs/binreloc/ for - * more information and how to use this. - */ - -#ifndef __BINRELOC_C__ -#define __BINRELOC_C__ - -#ifdef ENABLE_BINRELOC - #include <sys/types.h> - #include <sys/stat.h> - #include <unistd.h> -#endif /* ENABLE_BINRELOC */ -#include <stdio.h> -#include <stdlib.h> -#include <limits.h> -#include <string.h> -#include "prefix.h" - -G_BEGIN_DECLS - - -/** @internal - * Find the canonical filename of the executable. Returns the filename - * (which must be freed) or NULL on error. If the parameter 'error' is - * not NULL, the error code will be stored there, if an error occured. - */ -static char * -_br_find_exe (GbrInitError *error) -{ -#ifndef ENABLE_BINRELOC - if (error) - *error = GBR_INIT_ERROR_DISABLED; - return NULL; -#else - char *path, *path2, *line, *result; - size_t buf_size; - ssize_t size; - struct stat stat_buf; - FILE *f; - - /* Read from /proc/self/exe (symlink) */ - if (sizeof (path) > SSIZE_MAX) - buf_size = SSIZE_MAX - 1; - else - buf_size = PATH_MAX - 1; - path = (char *) g_try_malloc (buf_size); - if (path == NULL) { - /* Cannot allocate memory. */ - if (error) - *error = GBR_INIT_ERROR_NOMEM; - return NULL; - } - path2 = (char *) g_try_malloc (buf_size); - if (path2 == NULL) { - /* Cannot allocate memory. */ - if (error) - *error = GBR_INIT_ERROR_NOMEM; - g_free (path); - return NULL; - } - - strncpy (path2, "/proc/self/exe", buf_size - 1); - - while (1) { - int i; - - size = readlink (path2, path, buf_size - 1); - if (size == -1) { - /* Error. */ - g_free (path2); - break; - } - - /* readlink() success. */ - path[size] = '\0'; - - /* Check whether the symlink's target is also a symlink. - * We want to get the final target. */ - i = stat (path, &stat_buf); - if (i == -1) { - /* Error. */ - g_free (path2); - break; - } - - /* stat() success. */ - if (!S_ISLNK (stat_buf.st_mode)) { - /* path is not a symlink. Done. */ - g_free (path2); - return path; - } - - /* path is a symlink. Continue loop and resolve this. */ - strncpy (path, path2, buf_size - 1); - } - - - /* readlink() or stat() failed; this can happen when the program is - * running in Valgrind 2.2. Read from /proc/self/maps as fallback. */ - - buf_size = PATH_MAX + 128; - line = (char *) g_try_realloc (path, buf_size); - if (line == NULL) { - /* Cannot allocate memory. */ - g_free (path); - if (error) - *error = GBR_INIT_ERROR_NOMEM; - return NULL; - } - - f = fopen ("/proc/self/maps", "r"); - if (f == NULL) { - g_free (line); - if (error) - *error = GBR_INIT_ERROR_OPEN_MAPS; - return NULL; - } - - /* The first entry should be the executable name. */ - result = fgets (line, (int) buf_size, f); - if (result == NULL) { - fclose (f); - g_free (line); - if (error) - *error = GBR_INIT_ERROR_READ_MAPS; - return NULL; - } - - /* Get rid of newline character. */ - buf_size = strlen (line); - if (buf_size <= 0) { - /* Huh? An empty string? */ - fclose (f); - g_free (line); - if (error) - *error = GBR_INIT_ERROR_INVALID_MAPS; - return NULL; - } - if (line[buf_size - 1] == 10) - line[buf_size - 1] = 0; - - /* Extract the filename; it is always an absolute path. */ - path = strchr (line, '/'); - - /* Sanity check. */ - if (strstr (line, " r-xp ") == NULL || path == NULL) { - fclose (f); - g_free (line); - if (error) - *error = GBR_INIT_ERROR_INVALID_MAPS; - return NULL; - } - - path = g_strdup (path); - g_free (line); - fclose (f); - return path; -#endif /* ENABLE_BINRELOC */ -} - - -/** @internal - * Find the canonical filename of the executable which owns symbol. - * Returns a filename which must be freed, or NULL on error. - */ -static char * -_br_find_exe_for_symbol (const void *symbol, GbrInitError *error) -{ -#ifndef ENABLE_BINRELOC - if (error) - *error = GBR_INIT_ERROR_DISABLED; - return (char *) NULL; -#else - #define SIZE PATH_MAX + 100 - FILE *f; - size_t address_string_len; - char *address_string, line[SIZE], *found; - - if (symbol == NULL) - return (char *) NULL; - - f = fopen ("/proc/self/maps", "r"); - if (f == NULL) - return (char *) NULL; - - address_string_len = 4; - address_string = (char *) g_try_malloc (address_string_len); - found = (char *) NULL; - - while (!feof (f)) { - char *start_addr, *end_addr, *end_addr_end, *file; - void *start_addr_p, *end_addr_p; - size_t len; - - if (fgets (line, SIZE, f) == NULL) - break; - - /* Sanity check. */ - if (strstr (line, " r-xp ") == NULL || strchr (line, '/') == NULL) - continue; - - /* Parse line. */ - start_addr = line; - end_addr = strchr (line, '-'); - file = strchr (line, '/'); - - /* More sanity check. */ - if (!(file > end_addr && end_addr != NULL && end_addr[0] == '-')) - continue; - - end_addr[0] = '\0'; - end_addr++; - end_addr_end = strchr (end_addr, ' '); - if (end_addr_end == NULL) - continue; - - end_addr_end[0] = '\0'; - len = strlen (file); - if (len == 0) - continue; - if (file[len - 1] == '\n') - file[len - 1] = '\0'; - - /* Get rid of "(deleted)" from the filename. */ - len = strlen (file); - if (len > 10 && strcmp (file + len - 10, " (deleted)") == 0) - file[len - 10] = '\0'; - - /* I don't know whether this can happen but better safe than sorry. */ - len = strlen (start_addr); - if (len != strlen (end_addr)) - continue; - - - /* Transform the addresses into a string in the form of 0xdeadbeef, - * then transform that into a pointer. */ - if (address_string_len < len + 3) { - address_string_len = len + 3; - address_string = (char *) g_try_realloc (address_string, address_string_len); - } - - memcpy (address_string, "0x", 2); - memcpy (address_string + 2, start_addr, len); - address_string[2 + len] = '\0'; - sscanf (address_string, "%p", &start_addr_p); - - memcpy (address_string, "0x", 2); - memcpy (address_string + 2, end_addr, len); - address_string[2 + len] = '\0'; - sscanf (address_string, "%p", &end_addr_p); - - - if (symbol >= start_addr_p && symbol < end_addr_p) { - found = file; - break; - } - } - - g_free (address_string); - fclose (f); - - if (found == NULL) - return (char *) NULL; - else - return g_strdup (found); -#endif /* ENABLE_BINRELOC */ -} - - -static gchar *exe = NULL; - -static void set_gerror (GError **error, GbrInitError errcode); - - -/** Initialize the BinReloc library (for applications). - * - * This function must be called before using any other BinReloc functions. - * It attempts to locate the application's canonical filename. - * - * @note If you want to use BinReloc for a library, then you should call - * gbr_init_lib() instead. - * - * @param error If BinReloc failed to initialize, then the error report will - * be stored in this variable. Set to NULL if you don't want an - * error report. See the #GbrInitError for a list of error - * codes. - * - * @returns TRUE on success, FALSE if BinReloc failed to initialize. - */ -gboolean -gbr_init (GError **error) -{ - GbrInitError errcode; - - /* Locate the application's filename. */ - exe = _br_find_exe (&errcode); - if (exe != NULL) - /* Success! */ - return TRUE; - else { - /* Failed :-( */ - set_gerror (error, errcode); - return FALSE; - } -} - - -/** Initialize the BinReloc library (for libraries). - * - * This function must be called before using any other BinReloc functions. - * It attempts to locate the calling library's canonical filename. - * - * @note The BinReloc source code MUST be included in your library, or this - * function won't work correctly. - * - * @returns TRUE on success, FALSE if a filename cannot be found. - */ -gboolean -gbr_init_lib (GError **error) -{ - GbrInitError errcode; - - exe = _br_find_exe_for_symbol ((const void *) "", &errcode); - if (exe != NULL) - /* Success! */ - return TRUE; - else { - /* Failed :-( */ - set_gerror (error, errcode); - return exe != NULL; - } -} - - -static void -set_gerror (GError **error, GbrInitError errcode) -{ - const gchar *error_message; - - if (error == NULL) - return; - - switch (errcode) { - case GBR_INIT_ERROR_NOMEM: - error_message = "Cannot allocate memory."; - break; - case GBR_INIT_ERROR_OPEN_MAPS: - error_message = "Unable to open /proc/self/maps for reading."; - break; - case GBR_INIT_ERROR_READ_MAPS: - error_message = "Unable to read from /proc/self/maps."; - break; - case GBR_INIT_ERROR_INVALID_MAPS: - error_message = "The file format of /proc/self/maps is invalid."; - break; - case GBR_INIT_ERROR_DISABLED: - error_message = "Binary relocation support is disabled."; - break; - default: - error_message = "Unknown error."; - break; - }; - g_set_error (error, g_quark_from_static_string ("GBinReloc"), - errcode, "%s", error_message); -} - - -/** Find the canonical filename of the current application. - * - * @param default_exe A default filename which will be used as fallback. - * @returns A string containing the application's canonical filename, - * which must be freed when no longer necessary. If BinReloc is - * not initialized, or if the initialization function failed, - * then a copy of default_exe will be returned. If default_exe - * is NULL, then NULL will be returned. - */ -gchar * -gbr_find_exe (const gchar *default_exe) -{ - if (exe == NULL) { - /* BinReloc is not initialized. */ - if (default_exe != NULL) - return g_strdup (default_exe); - else - return NULL; - } - return g_strdup (exe); -} - - -/** Locate the directory in which the current application is installed. - * - * The prefix is generated by the following pseudo-code evaluation: - * \code - * dirname(exename) - * \endcode - * - * @param default_dir A default directory which will used as fallback. - * @return A string containing the directory, which must be freed when no - * longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_dir - * will be returned. If default_dir is NULL, then NULL will be - * returned. - */ -gchar * -gbr_find_exe_dir (const gchar *default_dir) -{ - if (exe == NULL) { - /* BinReloc not initialized. */ - if (default_dir != NULL) - return g_strdup (default_dir); - else - return NULL; - } - - return g_path_get_dirname (exe); -} - - -/** Locate the prefix in which the current application is installed. - * - * The prefix is generated by the following pseudo-code evaluation: - * \code - * dirname(dirname(exename)) - * \endcode - * - * @param default_prefix A default prefix which will used as fallback. - * @return A string containing the prefix, which must be freed when no - * longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_prefix - * will be returned. If default_prefix is NULL, then NULL will be - * returned. - */ -gchar * -gbr_find_prefix (const gchar *default_prefix) -{ - gchar *dir1, *dir2; - - if (exe == NULL) { - /* BinReloc not initialized. */ - if (default_prefix != NULL) - return g_strdup (default_prefix); - else - return NULL; - } - - dir1 = g_path_get_dirname (exe); - dir2 = g_path_get_dirname (dir1); - g_free (dir1); - return dir2; -} - - -/** Locate the application's binary folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/bin" - * \endcode - * - * @param default_bin_dir A default path which will used as fallback. - * @return A string containing the bin folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_bin_dir will - * be returned. If default_bin_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_bin_dir (const gchar *default_bin_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_bin_dir != NULL) - return g_strdup (default_bin_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "bin", NULL); - g_free (prefix); - return dir; -} - - -/** Locate the application's superuser binary folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/sbin" - * \endcode - * - * @param default_sbin_dir A default path which will used as fallback. - * @return A string containing the sbin folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_sbin_dir will - * be returned. If default_bin_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_sbin_dir (const gchar *default_sbin_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_sbin_dir != NULL) - return g_strdup (default_sbin_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "sbin", NULL); - g_free (prefix); - return dir; -} - - -/** Locate the application's data folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/share" - * \endcode - * - * @param default_data_dir A default path which will used as fallback. - * @return A string containing the data folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_data_dir - * will be returned. If default_data_dir is NULL, then NULL will be - * returned. - */ -gchar * -gbr_find_data_dir (const gchar *default_data_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_data_dir != NULL) - return g_strdup (default_data_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "share", NULL); - g_free (prefix); - return dir; -} - - -/** Locate the application's localization folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/share/locale" - * \endcode - * - * @param default_locale_dir A default path which will used as fallback. - * @return A string containing the localization folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_locale_dir will be returned. - * If default_locale_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_locale_dir (const gchar *default_locale_dir) -{ - gchar *data_dir, *dir; - - data_dir = gbr_find_data_dir (NULL); - if (data_dir == NULL) { - /* BinReloc not initialized. */ - if (default_locale_dir != NULL) - return g_strdup (default_locale_dir); - else - return NULL; - } - - dir = g_build_filename (data_dir, "locale", NULL); - g_free (data_dir); - return dir; -} - - -/** Locate the application's library folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/lib" - * \endcode - * - * @param default_lib_dir A default path which will used as fallback. - * @return A string containing the library folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the - * initialization function failed, then a copy of default_lib_dir will be returned. - * If default_lib_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_lib_dir (const gchar *default_lib_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_lib_dir != NULL) - return g_strdup (default_lib_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "lib", NULL); - g_free (prefix); - return dir; -} - - -/** Locate the application's libexec folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/libexec" - * \endcode - * - * @param default_libexec_dir A default path which will used as fallback. - * @return A string containing the libexec folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the initialization - * function failed, then a copy of default_libexec_dir will be returned. - * If default_libexec_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_libexec_dir (const gchar *default_libexec_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_libexec_dir != NULL) - return g_strdup (default_libexec_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "libexec", NULL); - g_free (prefix); - return dir; -} - - -/** Locate the application's configuration files folder. - * - * The path is generated by the following pseudo-code evaluation: - * \code - * prefix + "/etc" - * \endcode - * - * @param default_etc_dir A default path which will used as fallback. - * @return A string containing the etc folder's path, which must be freed when - * no longer necessary. If BinReloc is not initialized, or if the initialization - * function failed, then a copy of default_etc_dir will be returned. - * If default_etc_dir is NULL, then NULL will be returned. - */ -gchar * -gbr_find_etc_dir (const gchar *default_etc_dir) -{ - gchar *prefix, *dir; - - prefix = gbr_find_prefix (NULL); - if (prefix == NULL) { - /* BinReloc not initialized. */ - if (default_etc_dir != NULL) - return g_strdup (default_etc_dir); - else - return NULL; - } - - dir = g_build_filename (prefix, "etc", NULL); - g_free (prefix); - return dir; -} - - -G_END_DECLS - -#endif /* __BINRELOC_C__ */ diff --git a/src/prefix.h b/src/prefix.h deleted file mode 100644 index 55d5829..0000000 --- a/src/prefix.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * BinReloc - a library for creating relocatable executables - * Written by: Hongli Lai <h.lai@chello.nl> - * http://autopackage.org/ - * - * This source code is public domain. You can relicense this code - * under whatever license you want. - * - * See http://autopackage.org/docs/binreloc/ for - * more information and how to use this. - */ - -#ifndef __BINRELOC_H__ -#define __BINRELOC_H__ - -#include <glib.h> - -G_BEGIN_DECLS - - -/** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */ -typedef enum { - /** Cannot allocate memory. */ - GBR_INIT_ERROR_NOMEM, - /** Unable to open /proc/self/maps; see errno for details. */ - GBR_INIT_ERROR_OPEN_MAPS, - /** Unable to read from /proc/self/maps; see errno for details. */ - GBR_INIT_ERROR_READ_MAPS, - /** The file format of /proc/self/maps is invalid; kernel bug? */ - GBR_INIT_ERROR_INVALID_MAPS, - /** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */ - GBR_INIT_ERROR_DISABLED -} GbrInitError; - - -#ifndef BINRELOC_RUNNING_DOXYGEN -/* Mangle symbol names to avoid symbol collisions with other ELF objects. */ - #define gbr_find_exe qYFU3719188448765_gbr_find_exe - #define gbr_find_exe_dir qYFU3719188448765_gbr_find_exe_dir - #define gbr_find_prefix qYFU3719188448765_gbr_find_prefix - #define gbr_find_bin_dir qYFU3719188448765_gbr_find_bin_dir - #define gbr_find_sbin_dir qYFU3719188448765_gbr_find_sbin_dir - #define gbr_find_data_dir qYFU3719188448765_gbr_find_data_dir - #define gbr_find_locale_dir qYFU3719188448765_gbr_find_locale_dir - #define gbr_find_lib_dir qYFU3719188448765_gbr_find_lib_dir - #define gbr_find_libexec_dir qYFU3719188448765_gbr_find_libexec_dir - #define gbr_find_etc_dir qYFU3719188448765_gbr_find_etc_dir - - -#endif -gboolean gbr_init (GError **error); -gboolean gbr_init_lib (GError **error); - -gchar *gbr_find_exe (const gchar *default_exe); -gchar *gbr_find_exe_dir (const gchar *default_dir); -gchar *gbr_find_prefix (const gchar *default_prefix); -gchar *gbr_find_bin_dir (const gchar *default_bin_dir); -gchar *gbr_find_sbin_dir (const gchar *default_sbin_dir); -gchar *gbr_find_data_dir (const gchar *default_data_dir); -gchar *gbr_find_locale_dir (const gchar *default_locale_dir); -gchar *gbr_find_lib_dir (const gchar *default_lib_dir); -gchar *gbr_find_libexec_dir (const gchar *default_libexec_dir); -gchar *gbr_find_etc_dir (const gchar *default_etc_dir); - - -G_END_DECLS - -#endif /* __BINRELOC_H__ */ diff --git a/unittests/EnchantTestFixture.h b/unittests/EnchantTestFixture.h index 301518d..be76efa 100644 --- a/unittests/EnchantTestFixture.h +++ b/unittests/EnchantTestFixture.h @@ -272,10 +272,6 @@ struct EnchantTestFixture PathRemoveFileSpec((LPWSTR)&szFilename);
result = Convert(szFilename);
-#elif defined(ENABLE_BINRELOC)
- gchar* prefix = gbr_find_prefix(NULL);
- result = std::string(prefix);
- g_free(prefix);
#endif
return result;
}
|