Changeset 9346


Ignore:
Timestamp:
Oct 21, 2009, 7:33:37 PM (13 years ago)
Author:
charles
Message:

libT doesn't need to create the Incomplete directory until it's needed

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/main.c

    r9338 r9346  
    439439        if(( str = pref_string_get( TR_PREFS_KEY_DOWNLOAD_DIR )))
    440440            gtr_mkdir_with_parents( str, 0777 );
     441        if(( str = pref_string_get( TR_PREFS_KEY_INCOMPLETE_DIR )))
     442            gtr_mkdir_with_parents( str, 0777 );
    441443
    442444        /* initialize the libtransmission session */
  • trunk/libtransmission/fdlimit.c

    r9339 r9346  
    279279static int
    280280TrOpenFile( int                      i,
    281             const char             * folder,
    282             const char             * torrentFile,
     281            const char             * filename,
    283282            tr_bool                  doWrite,
    284283            tr_preallocation_mode    preallocationMode,
     
    287286    struct tr_openfile * file = &gFd->openFiles[i];
    288287    int                  flags;
    289     char               * filename;
    290288    struct stat          sb;
    291289    tr_bool              alreadyExisted;
    292290
    293     /* confirm the parent folder exists */
    294     if( stat( folder, &sb ) || !S_ISDIR( sb.st_mode ) )
    295     {
    296         tr_err( _( "Couldn't create \"%1$s\": \"%2$s\" is not a folder" ), torrentFile, folder );
    297         return ENOENT;
    298     }
    299 
    300291    /* create subfolders, if any */
    301     filename = tr_buildPath( folder, torrentFile, NULL );
    302292    if( doWrite )
    303293    {
    304         char * tmp = tr_dirname( filename );
    305         const int err = tr_mkdirp( tmp, 0777 ) ? errno : 0;
     294        char * dir = tr_dirname( filename );
     295        const int err = tr_mkdirp( dir, 0777 ) ? errno : 0;
    306296        if( err ) {
    307             tr_err( _( "Couldn't create \"%1$s\": %2$s" ), tmp, tr_strerror( err ) );
    308             tr_free( tmp );
    309             tr_free( filename );
     297            tr_err( _( "Couldn't create \"%1$s\": %2$s" ), dir, tr_strerror( err ) );
     298            tr_free( dir );
    310299            return err;
    311300        }
    312         tr_free( tmp );
     301        tr_free( dir );
    313302    }
    314303
     
    335324        const int err = errno;
    336325        tr_err( _( "Couldn't open \"%1$s\": %2$s" ), filename, tr_strerror( err ) );
    337         tr_free( filename );
    338326        return err;
    339327    }
     
    363351#endif
    364352
    365     tr_free( filename );
    366353    return 0;
    367354}
     
    426413tr_fdFileCheckout( int                      torrentId,
    427414                   tr_file_index_t          fileNum,
    428                    const char             * folder,
    429                    const char             * torrentFile,
     415                   const char             * filename,
    430416                   tr_bool                  doWrite,
    431417                   tr_preallocation_mode    preallocationMode,
     
    434420    int i, winner = -1;
    435421    struct tr_openfile * o;
    436     char filename[MAX_PATH_LENGTH];
    437422
    438423    assert( torrentId > 0 );
    439     assert( folder && *folder );
    440     assert( torrentFile && *torrentFile );
     424    assert( filename && *filename );
    441425    assert( tr_isBool( doWrite ) );
    442426
    443     tr_snprintf( filename, sizeof( filename ), "%s%c%s", folder, TR_PATH_DELIMITER, torrentFile );
    444427    dbgmsg( "looking for file '%s', writable %c", filename, doWrite ? 'y' : 'n' );
    445428
     
    505488    if( !fileIsOpen( o ) )
    506489    {
    507         const int err = TrOpenFile( winner, folder, torrentFile, doWrite,
     490        const int err = TrOpenFile( winner, filename, doWrite,
    508491                                    preallocationMode, desiredFileSize );
    509492        if( err ) {
  • trunk/libtransmission/fdlimit.h

    r9328 r9346  
    5656 * piece data.
    5757 *
    58  * - if `folder' doesn't exist, errno is set to ENOENT.
    5958 * - if doWrite is true, subfolders in torrentFile are created if necessary.
    6059 * - if doWrite is true, the target file is created if necessary.
     
    6766int  tr_fdFileCheckout( int                      torrentId,
    6867                        tr_file_index_t          fileNum,
    69                         const char             * folder,
    70                         const char             * torrentFile,
     68                        const char             * fileName,
    7169                        tr_bool                  doWrite,
    7270                        tr_preallocation_mode    preallocationMode,
  • trunk/libtransmission/inout.c

    r9341 r9346  
    122122            err = ENOENT;
    123123        }
    124         else if( ( fd = tr_fdFileCheckout( tor->uniqueId, fileIndex, base, subpath,
    125                                            doWrite, preallocationMode, file->length ) ) < 0 )
    126         {
    127             char * filename;
    128             err = errno;
    129             filename = tr_buildPath( base, subpath, NULL );
    130             tr_torerr( tor, "tr_fdFileCheckout failed for \"%s\": %s", filename, tr_strerror( err ) );
     124        else
     125        {
     126            char * filename = tr_buildPath( base, subpath, NULL );
     127
     128            if( ( fd = tr_fdFileCheckout( tor->uniqueId, fileIndex, filename,
     129                                          doWrite, preallocationMode, file->length ) ) < 0 )
     130            {
     131                err = errno;
     132                tr_torerr( tor, "tr_fdFileCheckout failed for \"%s\": %s", filename, tr_strerror( err ) );
     133            }
     134
    131135            tr_free( filename );
    132136        }
  • trunk/libtransmission/session.c

    r9337 r9346  
    969969
    970970        session->incompleteDir = tr_strdup( dir );
    971 
    972         tr_mkdirp( session->incompleteDir, 0777 );
    973971    }
    974972}
Note: See TracChangeset for help on using the changeset viewer.