# HG changeset patch # User nplourde # Date 1117810335 0 # Node ID 4be161b8e0ef832433bf6fe8a4840eea6a13dc79 # Parent cf7bbc26cb3debf67b8ae6901897aaa90bb37b10 compare resource url with bundle url, if its the same path do not use has conf file location. diff -r cf7bbc26cb3d -r 4be161b8e0ef get_path.c --- a/get_path.c Fri Jun 03 11:59:55 2005 +0000 +++ b/get_path.c Fri Jun 03 14:52:15 2005 +0000 @@ -29,6 +29,11 @@ int len; #ifdef MACOSX_BUNDLE struct stat dummy; + CFIndex maxlen=256; + CFURLRef res_url_ref=NULL; + CFURLRef bdl_url_ref=NULL; + char *res_url_path = NULL; + char *bdl_url_path = NULL; #endif if ((homedir = getenv("HOME")) == NULL) @@ -58,30 +63,39 @@ #ifdef MACOSX_BUNDLE if(stat(buff, &dummy)) { - CFIndex maxlen=64; - CFURLRef resources=NULL; - free(buff); - buff=NULL; + res_url_ref=CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); + bdl_url_ref=CFBundleCopyBundleURL(CFBundleGetMainBundle()); - resources=CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); - if(resources) { + if(res_url_ref&&bdl_url_ref) { + + res_url_path=malloc(maxlen); + bdl_url_path=malloc(maxlen); - buff=malloc(maxlen); - *buff=0; - - while(!CFURLGetFileSystemRepresentation(resources, true, buff, maxlen)) { + while(!CFURLGetFileSystemRepresentation(res_url_ref, true, res_url_path, maxlen)) { maxlen*=2; - buff=realloc(buff, maxlen); + res_url_path=realloc(res_url_path, maxlen); } - CFRelease(resources); + CFRelease(res_url_ref); + + while(!CFURLGetFileSystemRepresentation(bdl_url_ref, true, bdl_url_path, maxlen)) { + maxlen*=2; + bdl_url_path=realloc(bdl_url_path, maxlen); + } + CFRelease(bdl_url_ref); + + if( strcmp(res_url_path, bdl_url_path) == 0) + res_url_path = NULL; } - if(buff&&filename) { - if((strlen(filename)+strlen(buff)+2)>maxlen) { - maxlen=strlen(filename)+strlen(buff)+2; - buff=realloc(buff, maxlen); + if(res_url_path&&filename) { + if((strlen(filename)+strlen(res_url_path)+2)>maxlen) { + maxlen=strlen(filename)+strlen(res_url_path)+2; } + free(buff); + buff = (char *) malloc(maxlen); + strcpy(buff, res_url_path); + strcat(buff,"/"); strcat(buff, filename); }