fix problem in dealing with debians multiarch on prefix finding.
authorraster <raster>
Wed, 1 Aug 2012 06:28:37 +0000 (06:28 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 1 Aug 2012 06:28:37 +0000 (06:28 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@74709 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/lib/eina_prefix.c

index 2e73efb..7c75b01 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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.
+
index 2322311..79fecac 100644 (file)
@@ -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);