Mercurial > mplayer.hg
changeset 15145:a7f11c8091e4
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>
author | nplourde |
---|---|
date | Wed, 13 Apr 2005 11:46:35 +0000 |
parents | 9c24be38e6c9 |
children | e518d7fd23ea |
files | configure get_path.c |
diffstat | 2 files changed, 63 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/configure Wed Apr 13 07:38:31 2005 +0000 +++ b/configure Wed Apr 13 11:46:35 2005 +0000 @@ -185,6 +185,7 @@ --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 @@ _qtx=auto _macosx=auto _macosx_finder_support=no +_macosx_bundle=auto _sortsub=yes _freetypeconfig='freetype-config' _fribidi=no @@ -1684,6 +1686,8 @@ --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 @@ 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_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 @@ /* Mac OS X specific features */ $_def_macosx $_def_macosx_finder_support +$_def_macosx_bundle /* Build our Win32-loader */ $_def_win32_loader
--- a/get_path.c Wed Apr 13 07:38:31 2005 +0000 +++ b/get_path.c Wed Apr 13 11:46:35 2005 +0000 @@ -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 @@ 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 @@ 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; }