changeset 1506:308bfa8426db

Rewrite application directory detection code for GTK... So it properly handles when the application is started with no path.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 26 Dec 2011 23:53:07 +0000
parents fcdd9e3c735a
children fbe9028af341
files gtk/dw.c gtk3/dw.c
diffstat 2 files changed, 35 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Mon Dec 26 23:31:24 2011 +0000
+++ b/gtk/dw.c	Mon Dec 26 23:53:07 2011 +0000
@@ -2097,23 +2097,27 @@
    {
       char *pathcopy = strdup((*argv)[0]);
       char *pos = strrchr(pathcopy, '/');
-
+      char *binname = pathcopy;
+      
+      /* If we have a / then... 
+       * the binary name should be at the end.
+       */
       if(pos)
       {
-         char *binname = pos + 1;
-
+         binname = pos + 1;
          *pos = 0;
-         if(*binname)
-         {
-            char *binpos = strstr(pathcopy, "/bin");
-
-            if(binpos)
-               strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
-            else
-               strcpy(_dw_share_path, "/usr/local");
-            strcat(_dw_share_path, "/share/");
-            strcat(_dw_share_path, binname);
-         }
+      }
+      
+      if(*binname)
+      {
+         char *binpos = strstr(pathcopy, "/bin");
+         
+         if(binpos)
+            strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
+         else
+            strcpy(_dw_share_path, "/usr/local");
+         strcat(_dw_share_path, "/share/");
+         strcat(_dw_share_path, binname);
       }
       if(pathcopy)
          free(pathcopy);
--- a/gtk3/dw.c	Mon Dec 26 23:31:24 2011 +0000
+++ b/gtk3/dw.c	Mon Dec 26 23:53:07 2011 +0000
@@ -1800,23 +1800,27 @@
    {
       char *pathcopy = strdup((*argv)[0]);
       char *pos = strrchr(pathcopy, '/');
+      char *binname = pathcopy;
       
+      /* If we have a / then... 
+       * the binary name should be at the end.
+       */
       if(pos)
       {
-         char *binname = pos + 1;
-         
+         binname = pos + 1;
          *pos = 0;
-         if(*binname)
-         {
-            char *binpos = strstr(pathcopy, "/bin");
-            
-            if(binpos)
-               strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
-            else
-               strcpy(_dw_share_path, "/usr/local");
-            strcat(_dw_share_path, "/share/");
-            strcat(_dw_share_path, binname);
-         }
+      }
+      
+      if(*binname)
+      {
+         char *binpos = strstr(pathcopy, "/bin");
+         
+         if(binpos)
+            strncpy(_dw_share_path, pathcopy, (size_t)(binpos - pathcopy));
+         else
+            strcpy(_dw_share_path, "/usr/local");
+         strcat(_dw_share_path, "/share/");
+         strcat(_dw_share_path, binname);
       }
       if(pathcopy)
          free(pathcopy);