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 <roccati@pobox.com>

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15146 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nplourde 2005-04-13 11:46:35 +00:00
parent 82806120f4
commit 55adc096e1
2 changed files with 63 additions and 0 deletions

18
configure vendored
View File

@ -185,6 +185,7 @@ Optional features:
--disable-enca Disable using ENCA charset oracle library [autodetect]
--disable-macosx Disable Mac OS X specific features [autodetect]
--enable-macosx-finder-support Enable Mac OS X Finder invocation parameter parsing [disabled]
--enable-macosx-bundle Enable Mac OS X bundle file locations [autodetect]
--disable-inet6 Disable IPv6 support [autodetect]
--disable-gethostbyname2 gethostbyname() function is not provided by the C
library [autodetect]
@ -1400,6 +1401,7 @@ _menu=no
_qtx=auto
_macosx=auto
_macosx_finder_support=no
_macosx_bundle=auto
_sortsub=yes
_freetypeconfig='freetype-config'
_fribidi=no
@ -1684,6 +1686,8 @@ for ac_option do
--disable-macosx) _macosx=no ;;
--enable-macosx-finder-support) _macosx_finder_support=yes ;;
--disable-macosx-finder-support) _macosx_finder_support=no ;;
--enable-macosx-bundle) _macosx_bundle=yes;;
--disable-macosx-bundle) _macosx_bundle=no;;
--enable-sortsub) _sortsub=yes ;;
--disable-sortsub) _sortsub=no ;;
@ -3208,6 +3212,18 @@ else
fi
echores "$_macosx_finder_support"
echocheck "Mac OS X Bundle file locations"
if test "$_macosx_bundle" = auto ; then
_macosx_bundle=$_macosx_finder_support
fi
if test "$_macosx_bundle" = yes; then
_def_macosx_bundle='#define MACOSX_BUNDLE 1'
else
_def_macosx_bundle='#undef MACOSX_BUNDLE'
_macosx_bundle=no
fi
echores "$_macosx_bundle"
echocheck "Samba support (libsmbclient)"
if test "$_smbsupport" = yes; then
_ld_smb="-lsmbclient"
@ -6824,6 +6840,7 @@ XMMS_PLUGINS = $_xmms
XMMS_LIB = $_xmms_lib
MACOSX = $_macosx
MACOSX_FINDER_SUPPORT = $_macosx_finder_support
MACOSX_BUNDLE = $_macosx_bundle
MACOSX_FRAMEWORKS = $_macosx_frameworks
TOOLAME=$_toolame
TOOLAME_EXTRAFLAGS=$_toolame_extraflags
@ -7131,6 +7148,7 @@ $_def_dshow
/* Mac OS X specific features */
$_def_macosx
$_def_macosx_finder_support
$_def_macosx_bundle
/* Build our Win32-loader */
$_def_win32_loader

View File

@ -8,6 +8,16 @@
* by the caller.
*
*/
#ifdef MACOSX_BUNDLE
#include <Carbon/Carbon.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#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;
}