diff libpurple/prefix.h @ 15373:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children e9c12873fae0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/prefix.h	Sat Jan 20 02:32:10 2007 +0000
@@ -0,0 +1,144 @@
+/*
+ * I made the following modifications, be sure to readd these when
+ * upgrading these files.
+ *
+ * Added this comment.
+ * Added "gaim_ ## " to the namespace
+ * Changed the lib macro to use /lib/gaim instead of just /lib
+ *  (why does gaim do that in the -DLIBDIR autoconf thing anyway?)
+ *
+ */
+
+/*
+ * BinReloc - a library for creating relocatable executables
+ * Written by: Mike Hearn <mike@theoretic.com>
+ *             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.
+ *
+ * NOTE: if you're using C++ and are getting "undefined reference
+ * to br_*", try renaming prefix.c to prefix.cpp
+ */
+
+#ifndef _PREFIX_H_
+#define _PREFIX_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* WARNING, BEFORE YOU MODIFY PREFIX.C:
+ *
+ * If you make changes to any of the functions in prefix.c, you MUST
+ * change the BR_NAMESPACE macro.
+ * This way you can avoid symbol table conflicts with other libraries
+ * that also happen to use BinReloc.
+ *
+ * Example:
+ * #define BR_NAMESPACE(funcName) foobar_ ## funcName
+ * --> expands br_locate to foobar_br_locate
+ */
+#undef BR_NAMESPACE
+#define BR_NAMESPACE(funcName) gaim_ ## funcName
+
+
+#ifdef ENABLE_BINRELOC
+
+#define br_thread_local_store BR_NAMESPACE(br_thread_local_store)
+#define br_locate BR_NAMESPACE(br_locate)
+#define br_locate_prefix BR_NAMESPACE(br_locate_prefix)
+#define br_prepend_prefix BR_NAMESPACE(br_prepend_prefix)
+
+#ifndef BR_NO_MACROS
+	/* These are convenience macros that replace the ones usually used
+	   in Autoconf/Automake projects */
+	#undef SELFPATH
+	#undef PREFIX
+	#undef PREFIXDIR
+	#undef BINDIR
+	#undef SBINDIR
+	#undef DATADIR
+	#undef LIBDIR
+	#undef LIBEXECDIR
+	#undef ETCDIR
+	#undef SYSCONFDIR
+	#undef CONFDIR
+	#undef LOCALEDIR
+
+	#define SELFPATH	(br_thread_local_store (br_locate ((void *) "")))
+	#define PREFIX		(br_thread_local_store (br_locate_prefix ((void *) "")))
+	#define PREFIXDIR	(br_thread_local_store (br_locate_prefix ((void *) "")))
+	#define BINDIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/bin")))
+	#define SBINDIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/sbin")))
+	#define DATADIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/share")))
+	#define LIBDIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/lib/gaim")))
+	#define LIBEXECDIR	(br_thread_local_store (br_prepend_prefix ((void *) "", "/libexec")))
+	#define ETCDIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
+	#define SYSCONFDIR	(br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
+	#define CONFDIR		(br_thread_local_store (br_prepend_prefix ((void *) "", "/etc")))
+	#define LOCALEDIR	(br_thread_local_store (br_prepend_prefix ((void *) "", "/share/locale")))
+#endif /* BR_NO_MACROS */
+
+
+/* The following functions are used internally by BinReloc
+   and shouldn't be used directly in applications. */
+
+char *br_locate		(void *symbol);
+char *br_locate_prefix	(void *symbol);
+char *br_prepend_prefix	(void *symbol, char *path);
+
+#endif /* ENABLE_BINRELOC */
+
+const char *br_thread_local_store (char *str);
+
+
+/* These macros and functions are not guarded by the ENABLE_BINRELOC
+ * macro because they are portable. You can use these functions.
+ */
+
+#define br_strcat BR_NAMESPACE(br_strcat)
+#define br_extract_dir BR_NAMESPACE(br_extract_dir)
+#define br_extract_prefix BR_NAMESPACE(br_extract_prefix)
+#define br_set_locate_fallback_func BR_NAMESPACE(br_set_locate_fallback_func)
+
+#ifndef BR_NO_MACROS
+	/* Convenience functions for concatenating paths */
+
+	/* Each time you call one, the previous result will be freed. So don't do this:
+	 *
+	 *   some_function( BR_DATADIR("/one"), BR_DATADIR("/two") )
+	 *
+	 * as the first parameter will now be bogus!
+	 */
+
+	#define BR_SELFPATH(suffix)	(br_thread_local_store (br_strcat (SELFPATH, suffix)))
+	#define BR_PREFIX(suffix)	(br_thread_local_store (br_strcat (PREFIX, suffix)))
+	#define BR_PREFIXDIR(suffix)	(br_thread_local_store (br_strcat (BR_PREFIX, suffix)))
+	#define BR_BINDIR(suffix)	(br_thread_local_store (br_strcat (BINDIR, suffix)))
+	#define BR_SBINDIR(suffix)	(br_thread_local_store (br_strcat (SBINDIR, suffix)))
+	#define BR_DATADIR(suffix)	(br_thread_local_store (br_strcat (DATADIR, suffix)))
+	#define BR_LIBDIR(suffix)	(br_thread_local_store (br_strcat (LIBDIR, suffix)))
+	#define BR_LIBEXECDIR(suffix)	(br_thread_local_store (br_strcat (LIBEXECDIR, suffix)))
+	#define BR_ETCDIR(suffix)	(br_thread_local_store (br_strcat (ETCDIR, suffix)))
+	#define BR_SYSCONFDIR(suffix)	(br_thread_local_store (br_strcat (SYSCONFDIR, suffix)))
+	#define BR_CONFDIR(suffix)	(br_thread_local_store (br_strcat (CONFDIR, suffix)))
+	#define BR_LOCALEDIR(suffix)	(br_thread_local_store (br_strcat (LOCALEDIR, suffix)))
+#endif
+
+char *br_strcat	(const char *str1, const char *str2);
+char *br_extract_dir	(const char *path);
+char *br_extract_prefix(const char *path);
+typedef char *(*br_locate_fallback_func) (void *symbol, void *data);
+void br_set_locate_fallback_func (br_locate_fallback_func func, void *data);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _PREFIX_H_ */