From 55adc096e1d1267a200b6eb2479076aa4bdc834d Mon Sep 17 00:00:00 2001 From: nplourde Date: Wed, 13 Apr 2005 11:46:35 +0000 Subject: allows the Mac OS X version of MPlayer to look for its data files inside the Resources directory of the appwrapper. patch by Chris Roccati git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15146 b3059339-0415-0410-9bf9-f77b7e298cf2 --- get_path.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'get_path.c') diff --git a/get_path.c b/get_path.c index 0cd6529773..6443f33e6c 100644 --- a/get_path.c +++ b/get_path.c @@ -8,6 +8,16 @@ * by the caller. * */ +#ifdef MACOSX_BUNDLE +#include +#include +#include +#include +#include +#include +#include +#endif + char *get_path(char *filename){ char *homedir; char *buff; @@ -17,6 +27,9 @@ char *get_path(char *filename){ static char *config_dir = "/.mplayer"; #endif int len; +#ifdef MACOSX_BUNDLE + struct stat dummy; +#endif if ((homedir = getenv("HOME")) == NULL) #if defined(__MINGW32__)||defined(__CYGWIN__) /*hack to get fonts etc. loaded outside of cygwin environment*/ @@ -42,6 +55,38 @@ char *get_path(char *filename){ return NULL; sprintf(buff, "%s%s/%s", homedir, config_dir, filename); } + +#ifdef MACOSX_BUNDLE + if(stat(buff, &dummy)) { + CFIndex maxlen=64; + CFURLRef resources=NULL; + + free(buff); + buff=NULL; + + resources=CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); + if(resources) { + + buff=malloc(maxlen); + *buff=0; + + while(!CFURLGetFileSystemRepresentation(resources, true, buff, maxlen)) { + maxlen*=2; + buff=realloc(buff, maxlen); + } + CFRelease(resources); + } + + if(buff&&filename) { + if((strlen(filename)+strlen(buff)+2)>maxlen) { + maxlen=strlen(filename)+strlen(buff)+2; + buff=realloc(buff, maxlen); + } + strcat(buff,"/"); + strcat(buff, filename); + } + } +#endif mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff); return buff; } -- cgit v1.2.3