# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1324943587 0 # Node ID 308bfa8426db3f4eddfc2bbb21f4a8ff6c97a4a4 # Parent fcdd9e3c735acd1f2ac4fd81e1fd612aa305dc21 Rewrite application directory detection code for GTK... So it properly handles when the application is started with no path. diff -r fcdd9e3c735a -r 308bfa8426db gtk/dw.c --- 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); diff -r fcdd9e3c735a -r 308bfa8426db gtk3/dw.c --- 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);