Ticket #3072: Modifiable_web_dirv2.patch

File Modifiable_web_dirv2.patch, 2.3 KB (added by Waldorf, 12 years ago)
  • platform.c

     
    544544        else
    545545        {
    546546
    547 #ifdef SYS_DARWIN /* on Mac, look in the app package first, then the Application Support folder (for daemon, etc) */
     547#ifdef SYS_DARWIN /* on Mac, look in the Application Support folder first, then in the app bundle. */
     548            char * appString;
     549            tr_bool success;
    548550
    549551            CFURLRef appURL = CFBundleCopyBundleURL( CFBundleGetMainBundle( ) );
    550552            CFStringRef appRef = CFURLCopyFileSystemPath( appURL,
    551                                                          kCFURLPOSIXPathStyle );
    552             const char * appString = CFStringGetCStringPtr( appRef,
    553                                          CFStringGetFastestEncoding( appRef ) );
     553                                                          kCFURLPOSIXPathStyle );
     554            CFIndex appLength = CFStringGetMaximumSizeForEncoding( CFStringGetLength(appRef),
     555                                                                   CFStringGetFastestEncoding( appRef ));
     556
     557            appString = tr_malloc( appLength + 1 );
     558            success = CFStringGetCString( appRef,
     559                                          appString,
     560                                          appLength + 1,
     561                                          CFStringGetFastestEncoding( appRef ));
     562            assert( success );
     563
    554564            CFRelease( appURL );
    555565            CFRelease( appRef );
    556566
    557             s = tr_buildPath( appString, "Contents", "Resources", "web", NULL );
     567            /* Look in the Application Support folder */
     568            s = tr_buildPath( tr_sessionGetConfigDir( session ), "web", NULL );
    558569
    559570            if( !isWebClientDir( s ) ) {
    560571                tr_free( s );
    561572
    562                 /* Fallback to the Application Support folder */
    563                 s = tr_buildPath( tr_sessionGetConfigDir( session ), "web", NULL );
     573                /* Fallback to the app bundle */
     574                s = tr_buildPath( appString, "Contents", "Resources", "web", NULL );
    564575                if( !isWebClientDir( s ) ) {
    565576                    tr_free( s );
    566577                    s = NULL;
    567578                }
    568579            }
     580            tr_free( appString );
    569581
    570582#elif defined( WIN32 )
    571583