summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2012-08-01 06:28:37 +0000
committerCarsten Haitzler <raster@rasterman.com>2012-08-01 06:28:37 +0000
commit6c62ab6df5eafa27cca56c6f15dbbe5926ac053b (patch)
tree30bb232c000582fbf23609b86f91df968ef98f8d
parent5a4538e135c3e3f0130c0c1fadfc3fb2cd12726c (diff)
downloadeina-6c62ab6df5eafa27cca56c6f15dbbe5926ac053b.tar.gz
fix problem in dealing with debians multiarch on prefix finding.
SVN revision: 74709
-rw-r--r--ChangeLog6
-rw-r--r--src/lib/eina_prefix.c19
2 files changed, 25 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e73efb..7c75b01 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -314,3 +314,9 @@
2012-07-05 Raphael Kubo da Costa
* Handle NULL in all eina_*_free function.
+
+2012-08-01 Carsten Haitzler (The Rasterman)
+
+ * Modify eina_prefix to deal with debian's fun new
+ multiarch... if you are a shared library.
+
diff --git a/src/lib/eina_prefix.c b/src/lib/eina_prefix.c
index 2322311..79fecac 100644
--- a/src/lib/eina_prefix.c
+++ b/src/lib/eina_prefix.c
@@ -578,6 +578,9 @@ eina_prefix_new(const char *argv0, void *symbol, const char *envprefix,
* bin_dir = /blah/whatever/bin
* data_dir = /blah/whatever/share/enlightenment
* lib_dir = /blah/whatever/lib
+ *
+ * new case - debian multiarch goop.
+ * exe = /blah/whatever/lib/arch/libexe.so
*/
DBG("From exe %s figure out the rest", pfx->exe_path);
p = strrchr(pfx->exe_path, DSEP_C);
@@ -633,6 +636,22 @@ eina_prefix_new(const char *argv0, void *symbol, const char *envprefix,
/* magic file not there. time to start hunting! */
else
{
+ if (buf[0])
+ {
+ for (;p > pfx->exe_path; p--)
+ {
+ if (*p == DSEP_C)
+ {
+ p--;
+ break;
+ }
+ }
+ if (p > pfx->exe_path)
+ {
+ continue;
+ DBG("Go back one directory");
+ }
+ }
WRN("Magic failed");
_fallback(pfx, pkg_bin, pkg_lib, pkg_data,
pkg_locale, envprefix);