r18940 - gnucash/trunk/src - Fixup binreloc, which wasn't working correctly on OSX
John Ralls
jralls at code.gnucash.org
Sat Mar 20 20:40:24 EDT 2010
Author: jralls
Date: 2010-03-20 20:40:24 -0400 (Sat, 20 Mar 2010)
New Revision: 18940
Trac: http://svn.gnucash.org/trac/changeset/18940
Modified:
gnucash/trunk/src/bin/gnucash-bin.c
gnucash/trunk/src/core-utils/Makefile.am
gnucash/trunk/src/core-utils/binreloc.c
gnucash/trunk/src/core-utils/binreloc.h
gnucash/trunk/src/core-utils/gnc-path.c
gnucash/trunk/src/engine/Makefile.am
gnucash/trunk/src/gnc/main.cpp
Log:
Fixup binreloc, which wasn't working correctly on OSX
Most changes are to rename the functions named gbr_* to gnc_gbr_*, so
that our modified binreloc (to provide mac bundle support) doesn't
collide with binreloc implementations in other libraries. (The instant
case was in libenchant.)
Also moved the IGE_MAC_CFLAGS and IGE_MAC_LIBS lines from
engine/Makefile.am to core-utils/Makefile.am. This was missed when
binreloc was moved.
And last, there was a minor error in the original OSX binreloc patch:
At line 68, #elif MAC_INTEGRATION should be (and now is) #elif defined
MAC_INTEGRATION.
Modified: gnucash/trunk/src/bin/gnucash-bin.c
===================================================================
--- gnucash/trunk/src/bin/gnucash-bin.c 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/bin/gnucash-bin.c 2010-03-21 00:40:24 UTC (rev 18940)
@@ -585,9 +585,10 @@
#ifdef ENABLE_BINRELOC
{
GError *binreloc_error = NULL;
- if (!gbr_init(&binreloc_error))
+ g_print("Checking for Binreloc\n");
+ if (!gnc_gbr_init(&binreloc_error))
{
- g_print("main: Error on gbr_init: %s\n", binreloc_error->message);
+ g_print("main: Error on gnc_gbr_init: %s\n", binreloc_error->message);
g_error_free(binreloc_error);
}
}
Modified: gnucash/trunk/src/core-utils/Makefile.am
===================================================================
--- gnucash/trunk/src/core-utils/Makefile.am 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/core-utils/Makefile.am 2010-03-21 00:40:24 UTC (rev 18940)
@@ -19,6 +19,7 @@
${GUILE_LIBS} \
${GLIB_LIBS} \
${BINRELOC_LIBS} \
+ ${IGE_MAC_LIBS} \
${GCONF_LIBS} \
${QOF_LIBS}
@@ -44,6 +45,7 @@
${GUILE_INCS} \
${GLIB_CFLAGS} \
${GCONF_CFLAGS} \
+ ${IGE_MAC_CFLAGS} \
${QOF_CFLAGS} \
-I${top_srcdir}/src/libqof/qof \
-I${top_srcdir}/src
Modified: gnucash/trunk/src/core-utils/binreloc.c
===================================================================
--- gnucash/trunk/src/core-utils/binreloc.c 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/core-utils/binreloc.c 2010-03-21 00:40:24 UTC (rev 18940)
@@ -40,11 +40,11 @@
* not NULL, the error code will be stored there, if an error occured.
*/
static char *
-_br_find_exe (GbrInitError *error)
+_br_find_exe (Gnc_GbrInitError *error)
{
#ifndef ENABLE_BINRELOC
if (error)
- *error = GBR_INIT_ERROR_DISABLED;
+ *error = GNC_GBR_INIT_ERROR_DISABLED;
return NULL;
#else
#ifdef G_OS_WIN32
@@ -65,20 +65,20 @@
(char*)NULL);
g_free (prefix);
return result;
-#elif MAC_INTEGRATION
+#elif defined MAC_INTEGRATION
gchar *prefix = NULL, *result = NULL;
g_type_init();
bundle = ige_mac_bundle_new();
if (!bundle)
{
- *error = GBR_INIT_ERROR_MAC_NOT_BUNDLE;
+ *error = GNC_GBR_INIT_ERROR_MAC_NOT_BUNDLE;
return NULL;
}
if (!ige_mac_bundle_get_is_app_bundle (bundle))
{
g_object_unref(bundle);
bundle = NULL;
- *error = GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE;
+ *error = GNC_GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE;
return NULL;
}
ige_mac_bundle_setup_environment(bundle);
@@ -104,7 +104,7 @@
{
/* Cannot allocate memory. */
if (error)
- *error = GBR_INIT_ERROR_NOMEM;
+ *error = GNC_GBR_INIT_ERROR_NOMEM;
return NULL;
}
path2 = (char *) g_try_malloc (buf_size);
@@ -112,7 +112,7 @@
{
/* Cannot allocate memory. */
if (error)
- *error = GBR_INIT_ERROR_NOMEM;
+ *error = GNC_GBR_INIT_ERROR_NOMEM;
g_free (path);
return NULL;
}
@@ -167,7 +167,7 @@
/* Cannot allocate memory. */
g_free (path);
if (error)
- *error = GBR_INIT_ERROR_NOMEM;
+ *error = GNC_GBR_INIT_ERROR_NOMEM;
return NULL;
}
@@ -176,7 +176,7 @@
{
g_free (line);
if (error)
- *error = GBR_INIT_ERROR_OPEN_MAPS;
+ *error = GNC_GBR_INIT_ERROR_OPEN_MAPS;
return NULL;
}
@@ -187,7 +187,7 @@
fclose (f);
g_free (line);
if (error)
- *error = GBR_INIT_ERROR_READ_MAPS;
+ *error = GNC_GBR_INIT_ERROR_READ_MAPS;
return NULL;
}
@@ -199,7 +199,7 @@
fclose (f);
g_free (line);
if (error)
- *error = GBR_INIT_ERROR_INVALID_MAPS;
+ *error = GNC_GBR_INIT_ERROR_INVALID_MAPS;
return NULL;
}
if (line[buf_size - 1] == 10)
@@ -214,7 +214,7 @@
fclose (f);
g_free (line);
if (error)
- *error = GBR_INIT_ERROR_INVALID_MAPS;
+ *error = GNC_GBR_INIT_ERROR_INVALID_MAPS;
return NULL;
}
@@ -232,17 +232,17 @@
* Returns a filename which must be freed, or NULL on error.
*/
static char *
-_br_find_exe_for_symbol (const void *symbol, GbrInitError *error)
+_br_find_exe_for_symbol (const void *symbol, Gnc_GbrInitError *error)
{
#ifndef ENABLE_BINRELOC
if (error)
- *error = GBR_INIT_ERROR_DISABLED;
+ *error = GNC_GBR_INIT_ERROR_DISABLED;
return (char *) NULL;
#else
#if defined G_OS_WIN32
g_warning ("_br_find_exe_for_symbol not implemented on win32.");
if (error)
- *error = GBR_INIT_ERROR_DISABLED;
+ *error = GNC_GBR_INIT_ERROR_DISABLED;
return (char *) NULL;
#else
#define SIZE PATH_MAX + 100
@@ -347,7 +347,7 @@
static gchar *exe = NULL;
-static void set_gerror (GError **error, GbrInitError errcode);
+static void set_gerror (GError **error, Gnc_GbrInitError errcode);
/** Initialize the BinReloc library (for applications).
@@ -356,19 +356,19 @@
* 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.
+ * gnc_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
+ * error report. See the #Gnc_GbrInitError for a list of error
* codes.
*
* @returns TRUE on success, FALSE if BinReloc failed to initialize.
*/
gboolean
-gbr_init (GError **error)
+gnc_gbr_init (GError **error)
{
- GbrInitError errcode = 0;
+ Gnc_GbrInitError errcode = 0;
/* Locate the application's filename. */
exe = _br_find_exe (&errcode);
@@ -395,9 +395,9 @@
* @returns TRUE on success, FALSE if a filename cannot be found.
*/
gboolean
-gbr_init_lib (GError **error)
+gnc_gbr_init_lib (GError **error)
{
- GbrInitError errcode = 0;
+ Gnc_GbrInitError errcode = 0;
exe = _br_find_exe_for_symbol ((const void *) "", &errcode);
if (exe != NULL)
@@ -413,7 +413,7 @@
static void
-set_gerror (GError **error, GbrInitError errcode)
+set_gerror (GError **error, Gnc_GbrInitError errcode)
{
gchar *error_message;
@@ -422,25 +422,25 @@
switch (errcode)
{
- case GBR_INIT_ERROR_NOMEM:
+ case GNC_GBR_INIT_ERROR_NOMEM:
error_message = "Cannot allocate memory.";
break;
- case GBR_INIT_ERROR_OPEN_MAPS:
+ case GNC_GBR_INIT_ERROR_OPEN_MAPS:
error_message = "Unable to open /proc/self/maps for reading.";
break;
- case GBR_INIT_ERROR_READ_MAPS:
+ case GNC_GBR_INIT_ERROR_READ_MAPS:
error_message = "Unable to read from /proc/self/maps.";
break;
- case GBR_INIT_ERROR_INVALID_MAPS:
+ case GNC_GBR_INIT_ERROR_INVALID_MAPS:
error_message = "The file format of /proc/self/maps is invalid.";
break;
- case GBR_INIT_ERROR_MAC_NOT_BUNDLE:
+ case GNC_GBR_INIT_ERROR_MAC_NOT_BUNDLE:
error_message = "Binreloc did not find a bundle";
break;
- case GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE:
+ case GNC_GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE:
error_message = "Binreloc found that the bundle is not an app bundle";
break;
- case GBR_INIT_ERROR_DISABLED:
+ case GNC_GBR_INIT_ERROR_DISABLED:
error_message = "Binary relocation support is disabled.";
break;
default:
@@ -462,7 +462,7 @@
* is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_exe (const gchar *default_exe)
+gnc_gbr_find_exe (const gchar *default_exe)
{
if (exe == NULL)
{
@@ -491,7 +491,7 @@
* returned.
*/
gchar *
-gbr_find_exe_dir (const gchar *default_dir)
+gnc_gbr_find_exe_dir (const gchar *default_dir)
{
if (exe == NULL)
{
@@ -521,7 +521,7 @@
* returned.
*/
gchar *
-gbr_find_prefix (const gchar *default_prefix)
+gnc_gbr_find_prefix (const gchar *default_prefix)
{
gchar *dir1, *dir2;
@@ -553,7 +553,7 @@
dir2 = g_path_get_dirname (dir1);
g_free (dir1);
return dir2;
-#endif //ENABLE_BINRELOC && MAC_INTEGRATION
+#endif //ENABLE_BINRELOC && defined MAC_INTEGRATION
}
@@ -571,7 +571,7 @@
* be returned. If default_bin_dir is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_bin_dir (const gchar *default_bin_dir)
+gnc_gbr_find_bin_dir (const gchar *default_bin_dir)
{
gchar *prefix, *dir;
#if defined ENABLE_BINRELOC && defined MAC_INTEGRATION
@@ -589,7 +589,7 @@
return dir;
#else
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
@@ -620,11 +620,11 @@
* be returned. If default_bin_dir is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_sbin_dir (const gchar *default_sbin_dir)
+gnc_gbr_find_sbin_dir (const gchar *default_sbin_dir)
{
gchar *prefix, *dir;
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
@@ -655,11 +655,11 @@
* returned.
*/
gchar *
-gbr_find_data_dir (const gchar *default_data_dir)
+gnc_gbr_find_data_dir (const gchar *default_data_dir)
{
gchar *prefix, *dir;
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
@@ -689,11 +689,11 @@
* If default_lib_dir is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_lib_dir (const gchar *default_lib_dir)
+gnc_gbr_find_lib_dir (const gchar *default_lib_dir)
{
gchar *prefix, *dir;
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
@@ -723,11 +723,11 @@
* If default_libexec_dir is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_libexec_dir (const gchar *default_libexec_dir)
+gnc_gbr_find_libexec_dir (const gchar *default_libexec_dir)
{
gchar *prefix, *dir;
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
@@ -757,11 +757,11 @@
* If default_etc_dir is NULL, then NULL will be returned.
*/
gchar *
-gbr_find_etc_dir (const gchar *default_etc_dir)
+gnc_gbr_find_etc_dir (const gchar *default_etc_dir)
{
gchar *prefix, *dir;
- prefix = gbr_find_prefix (NULL);
+ prefix = gnc_gbr_find_prefix (NULL);
if (prefix == NULL)
{
/* BinReloc not initialized. */
Modified: gnucash/trunk/src/core-utils/binreloc.h
===================================================================
--- gnucash/trunk/src/core-utils/binreloc.h 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/core-utils/binreloc.h 2010-03-21 00:40:24 UTC (rev 18940)
@@ -18,52 +18,52 @@
G_BEGIN_DECLS
-/** These error codes can be returned by br_init(), br_init_lib(), gbr_init() or gbr_init_lib(). */
+/** These error codes can be returned by br_init(), br_init_lib(), gnc_gbr_init() or gnc_gbr_init_lib(). */
typedef enum
{
/** Cannot allocate memory. */
- GBR_INIT_ERROR_NOMEM,
+ GNC_GBR_INIT_ERROR_NOMEM,
/** Unable to open /proc/self/maps; see errno for details. */
- GBR_INIT_ERROR_OPEN_MAPS,
+ GNC_GBR_INIT_ERROR_OPEN_MAPS,
/** Unable to read from /proc/self/maps; see errno for details. */
- GBR_INIT_ERROR_READ_MAPS,
+ GNC_GBR_INIT_ERROR_READ_MAPS,
/** The file format of /proc/self/maps is invalid; kernel bug? */
- GBR_INIT_ERROR_INVALID_MAPS,
+ GNC_GBR_INIT_ERROR_INVALID_MAPS,
/** BinReloc determined that gnucash is not running from a bundle */
- GBR_INIT_ERROR_MAC_NOT_BUNDLE,
+ GNC_GBR_INIT_ERROR_MAC_NOT_BUNDLE,
/** Binreloc determined that the bundle is not an app bundle */
- GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE,
+ GNC_GBR_INIT_ERROR_MAC_NOT_APP_BUNDLE,
/** BinReloc is disabled (the ENABLE_BINRELOC macro is not defined). */
- GBR_INIT_ERROR_DISABLED
-} GbrInitError;
+ GNC_GBR_INIT_ERROR_DISABLED
+} Gnc_GbrInitError;
#ifndef BINRELOC_RUNNING_DOXYGEN
/* Mangle symbol names to avoid symbol collisions with other ELF objects. */
-#define gbr_find_exe ffEt66859784967989_gbr_find_exe
-#define gbr_find_exe_dir ffEt66859784967989_gbr_find_exe_dir
-#define gbr_find_prefix ffEt66859784967989_gbr_find_prefix
-#define gbr_find_bin_dir ffEt66859784967989_gbr_find_bin_dir
-#define gbr_find_sbin_dir ffEt66859784967989_gbr_find_sbin_dir
-#define gbr_find_data_dir ffEt66859784967989_gbr_find_data_dir
-#define gbr_find_lib_dir ffEt66859784967989_gbr_find_lib_dir
-#define gbr_find_libexec_dir ffEt66859784967989_gbr_find_libexec_dir
-#define gbr_find_etc_dir ffEt66859784967989_gbr_find_etc_dir
+#define gnc_gbr_find_exe ffEt66859784967989_gnc_gbr_find_exe
+#define gnc_gbr_find_exe_dir ffEt66859784967989_gnc_gbr_find_exe_dir
+#define gnc_gbr_find_prefix ffEt66859784967989_gnc_gbr_find_prefix
+#define gnc_gbr_find_bin_dir ffEt66859784967989_gnc_gbr_find_bin_dir
+#define gnc_gbr_find_sbin_dir ffEt66859784967989_gnc_gbr_find_sbin_dir
+#define gnc_gbr_find_data_dir ffEt66859784967989_gnc_gbr_find_data_dir
+#define gnc_gbr_find_lib_dir ffEt66859784967989_gnc_gbr_find_lib_dir
+#define gnc_gbr_find_libexec_dir ffEt66859784967989_gnc_gbr_find_libexec_dir
+#define gnc_gbr_find_etc_dir ffEt66859784967989_gnc_gbr_find_etc_dir
#endif
-gboolean gbr_init (GError **error);
-gboolean gbr_init_lib (GError **error);
+gboolean gnc_gbr_init (GError **error);
+gboolean gnc_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_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);
+gchar *gnc_gbr_find_exe (const gchar *default_exe);
+gchar *gnc_gbr_find_exe_dir (const gchar *default_dir);
+gchar *gnc_gbr_find_prefix (const gchar *default_prefix);
+gchar *gnc_gbr_find_bin_dir (const gchar *default_bin_dir);
+gchar *gnc_gbr_find_sbin_dir (const gchar *default_sbin_dir);
+gchar *gnc_gbr_find_data_dir (const gchar *default_data_dir);
+gchar *gnc_gbr_find_lib_dir (const gchar *default_lib_dir);
+gchar *gnc_gbr_find_libexec_dir (const gchar *default_libexec_dir);
+gchar *gnc_gbr_find_etc_dir (const gchar *default_etc_dir);
G_END_DECLS
Modified: gnucash/trunk/src/core-utils/gnc-path.c
===================================================================
--- gnucash/trunk/src/core-utils/gnc-path.c 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/core-utils/gnc-path.c 2010-03-21 00:40:24 UTC (rev 18940)
@@ -27,8 +27,8 @@
gchar *gnc_path_get_prefix()
{
- //printf("Returning prefix %s\n", gbr_find_prefix (PREFIX));
- return gbr_find_prefix (PREFIX);
+ //printf("Returning prefix %s\n", gnc_gbr_find_prefix (PREFIX));
+ return gnc_gbr_find_prefix (PREFIX);
}
/** Returns the libdir path, usually
@@ -37,8 +37,8 @@
* @returns A newly allocated string. */
gchar *gnc_path_get_libdir()
{
- //printf("Returning libdir %s\n", gbr_find_lib_dir (LIBDIR));
- return gbr_find_lib_dir (LIBDIR);
+ //printf("Returning libdir %s\n", gnc_gbr_find_lib_dir (LIBDIR));
+ return gnc_gbr_find_lib_dir (LIBDIR);
}
/** Returns the datadir path, usually
@@ -47,7 +47,7 @@
* @returns A newly allocated string. */
gchar *gnc_path_get_pkgdatadir()
{
- gchar *datadir = gbr_find_data_dir (DATADIR);
+ gchar *datadir = gnc_gbr_find_data_dir (DATADIR);
gchar *result = g_build_filename (datadir, "gnucash", (char*)NULL);
g_free (datadir);
//printf("Returning pkgdatadir %s\n", result);
@@ -60,7 +60,7 @@
* @returns A newly allocated string. */
gchar *gnc_path_get_pkgsysconfdir()
{
- gchar *sysconfdir = gbr_find_etc_dir (SYSCONFDIR);
+ gchar *sysconfdir = gnc_gbr_find_etc_dir (SYSCONFDIR);
gchar *result = g_build_filename (sysconfdir, "gnucash", (char*)NULL);
g_free (sysconfdir);
//printf("Returning pkgsysconfdir %s\n", result);
@@ -126,7 +126,7 @@
* @returns A newly allocated string. */
gchar *gnc_path_get_gconfdir(gboolean force_slashes)
{
- gchar *sysconfdir = gbr_find_etc_dir (SYSCONFDIR);
+ gchar *sysconfdir = gnc_gbr_find_etc_dir (SYSCONFDIR);
gchar *separator = G_DIR_SEPARATOR_S;
gchar *result;
Modified: gnucash/trunk/src/engine/Makefile.am
===================================================================
--- gnucash/trunk/src/engine/Makefile.am 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/engine/Makefile.am 2010-03-21 00:40:24 UTC (rev 18940)
@@ -10,7 +10,6 @@
-I${top_srcdir}/src/gnc-module \
-I${top_srcdir}/src/libqof/qof \
${GLIB_CFLAGS} \
- ${IGE_MAC_CFLAGS} \
${GUILE_INCS}
libgncmod_engine_la_SOURCES = \
@@ -109,7 +108,6 @@
${GUILE_LIBS} \
${REGEX_LIBS} \
${GLIB_LIBS} \
- ${IGE_MAC_LIBS} \
${top_builddir}/lib/libc/libc-missing.la
gncmoddir = ${GNC_SHAREDIR}/guile-modules/gnucash
Modified: gnucash/trunk/src/gnc/main.cpp
===================================================================
--- gnucash/trunk/src/gnc/main.cpp 2010-03-20 22:33:59 UTC (rev 18939)
+++ gnucash/trunk/src/gnc/main.cpp 2010-03-21 00:40:24 UTC (rev 18940)
@@ -148,9 +148,9 @@
#ifdef ENABLE_BINRELOC
{
GError *binreloc_error = NULL;
- if (!gbr_init(&binreloc_error))
+ if (!gnc_gbr_init(&binreloc_error))
{
- g_print("main: Error on gbr_init: %s\n", binreloc_error->message);
+ g_print("main: Error on gnc_gbr_init: %s\n", binreloc_error->message);
g_error_free(binreloc_error);
}
}
More information about the gnucash-changes
mailing list