Mercurial > dwindows
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);