Ignore:
Timestamp:
Jun 9, 2006, 7:53:35 PM (15 years ago)
Author:
joshe
Message:

Add support to libtransmission and the MacOS X GUI for saving private copies of

torrent files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/platform.c

    r261 r310  
    2727  #include <FindDirectory.h>
    2828#endif
    29 #ifdef SYS_DARWIN
    30   #include <sys/types.h>
    31   #include <dirent.h>
    32 #endif
     29#include <sys/types.h>
     30#include <dirent.h>
    3331
    3432#include "transmission.h"
     33
     34static void
     35tr_migrateResume( const char *oldDirectory, const char *newDirectory )
     36{
     37    DIR * dirh;
     38    struct dirent * dirp;
     39    char oldFile[MAX_PATH_LENGTH];
     40    char newFile[MAX_PATH_LENGTH];
     41
     42    if( ( dirh = opendir( oldDirectory ) ) )
     43    {
     44        while( ( dirp = readdir( dirh ) ) )
     45        {
     46            if( strncmp( "resume.", dirp->d_name, 7 ) )
     47            {
     48                continue;
     49            }
     50            snprintf( oldFile, MAX_PATH_LENGTH, "%s/%s",
     51                      oldDirectory, dirp->d_name );
     52            snprintf( newFile, MAX_PATH_LENGTH, "%s/%s",
     53                      newDirectory, dirp->d_name );
     54            rename( oldFile, newFile );
     55        }
     56
     57        closedir( dirh );
     58    }
     59}
    3560
    3661char * tr_getPrefsDirectory()
     
    5681#endif
    5782
    58         mkdir( prefsDirectory, 0755 );
     83    tr_mkdir( prefsDirectory );
    5984    init = 1;
    6085
    6186#ifdef SYS_DARWIN
    62     DIR * dirh;
    63     struct dirent * dirp;
    6487    char oldDirectory[MAX_PATH_LENGTH];
    65     char oldFile[MAX_PATH_LENGTH];
    66     char newFile[MAX_PATH_LENGTH];
    6788    snprintf( oldDirectory, MAX_PATH_LENGTH, "%s/.transmission",
    6889              getenv( "HOME" ) );
    69     if( ( dirh = opendir( oldDirectory ) ) )
    70     {
    71         while( ( dirp = readdir( dirh ) ) )
    72         {
    73             if( !strcmp( ".", dirp->d_name ) ||
    74                 !strcmp( "..", dirp->d_name ) )
    75             {
    76                 continue;
    77             }
    78             snprintf( oldFile, MAX_PATH_LENGTH, "%s/%s",
    79                       oldDirectory, dirp->d_name );
    80             snprintf( newFile, MAX_PATH_LENGTH, "%s/%s",
    81                       prefsDirectory, dirp->d_name );
    82             rename( oldFile, newFile );
    83         }
    84 
    85         closedir( dirh );
    86         rmdir( oldDirectory );
    87     }
     90    tr_migrateResume( oldDirectory, prefsDirectory );
     91    rmdir( oldDirectory );
    8892#endif
    8993
    9094    return prefsDirectory;
     95}
     96
     97char * tr_getCacheDirectory()
     98{
     99    static char cacheDirectory[MAX_PATH_LENGTH];
     100    static int  init = 0;
     101
     102    if( init )
     103    {
     104        return cacheDirectory;
     105    }
     106
     107#ifdef SYS_BEOS
     108    /* XXX hey Bryan, is this fine with you? */
     109    snprintf( cacheDirectory, MAX_PATH_LENGTH, "%s/Cache",
     110              tr_getPrefsDirectory() );
     111#elif defined( SYS_DARWIN )
     112    snprintf( cacheDirectory, MAX_PATH_LENGTH, "%s",
     113              tr_getPrefsDirectory() );
     114#else
     115    snprintf( cacheDirectory, MAX_PATH_LENGTH, "%s/cache",
     116              tr_getPrefsDirectory() );
     117#endif
     118
     119    tr_mkdir( cacheDirectory );
     120    init = 1;
     121
     122    if( strcmp( tr_getPrefsDirectory(), cacheDirectory ) )
     123    {
     124        tr_migrateResume( tr_getPrefsDirectory(), cacheDirectory );
     125    }
     126
     127    return cacheDirectory;
     128}
     129
     130char * tr_getTorrentsDirectory()
     131{
     132    static char torrentsDirectory[MAX_PATH_LENGTH];
     133    static int  init = 0;
     134
     135    if( init )
     136    {
     137        return torrentsDirectory;
     138    }
     139
     140#ifdef SYS_BEOS
     141    /* XXX hey Bryan, is this fine with you? */
     142    snprintf( torrentsDirectory, MAX_PATH_LENGTH, "%s/Torrents",
     143              tr_getPrefsDirectory() );
     144#elif defined( SYS_DARWIN )
     145    snprintf( torrentsDirectory, MAX_PATH_LENGTH,
     146              "%s/Library/Application Support/Transmission/Torrents",
     147              getenv( "HOME" ) );
     148#else
     149    snprintf( torrentsDirectory, MAX_PATH_LENGTH, "%s/torrents",
     150              tr_getPrefsDirectory() );
     151#endif
     152
     153    tr_mkdir( torrentsDirectory );
     154    init = 1;
     155
     156    return torrentsDirectory;
    91157}
    92158
Note: See TracChangeset for help on using the changeset viewer.