Changeset 6613


Ignore:
Timestamp:
Aug 21, 2008, 4:12:17 PM (15 years ago)
Author:
charles
Message:

more metainfo/bencode cleanup

Location:
trunk/libtransmission
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/bencode.c

    r6612 r6613  
    913913    if( len )
    914914        *len = EVBUFFER_LENGTH( out );
    915     ret = tr_strndup( (char*) EVBUFFER_DATA( out ), EVBUFFER_LENGTH( out ) );
     915    ret = tr_strndup( EVBUFFER_DATA( out ), EVBUFFER_LENGTH( out ) );
    916916    evbuffer_free( out );
    917917    return ret;
     
    12221222    if( len )
    12231223        *len = EVBUFFER_LENGTH( data.out );
    1224     ret = tr_strndup( (char*) EVBUFFER_DATA( data.out ), EVBUFFER_LENGTH( data.out ) );
     1224    ret = tr_strndup( EVBUFFER_DATA( data.out ), EVBUFFER_LENGTH( data.out ) );
    12251225    evbuffer_free( data.out );
    12261226    return ret;
  • trunk/libtransmission/clients.c

    r6499 r6613  
    376376        }
    377377
    378         tr_strlcpy( buf, (const char*)EVBUFFER_DATA(out), buflen );
     378        tr_strlcpy( buf, EVBUFFER_DATA( out ), buflen );
    379379        evbuffer_free( out );
    380380    }
  • trunk/libtransmission/metainfo.c

    r6612 r6613  
    7979{
    8080    struct stat new_sb;
    81     char * new_name = getTorrentFilename( handle, inf );
    82 
    83     if( stat( new_name, &new_sb ) || ( ( new_sb.st_mode & S_IFMT ) != S_IFREG ) )
     81    char * name = getTorrentFilename( handle, inf );
     82
     83    if( stat( name, &new_sb ) || ( ( new_sb.st_mode & S_IFMT ) != S_IFREG ) )
    8484    {
    8585        char * old_name = getOldTorrentFilename( handle, inf );
     
    9292            FILE * out;
    9393            errno = 0;
    94             out = fopen( new_name, "wb+" );
     94            out = fopen( name, "wb+" );
    9595            if( !out )
    9696            {
    97                 tr_nerr( inf->name, _( "Couldn't create \"%1$s\": %2$s" ), new_name, tr_strerror( errno ) );
     97                tr_nerr( inf->name, _( "Couldn't create \"%1$s\": %2$s" ),
     98                         name, tr_strerror( errno ) );
    9899            }
    99100            else
    100101            {
    101                 if( fwrite( content, sizeof( uint8_t ), contentLen, out ) == contentLen )
     102                if( fwrite( content, sizeof( uint8_t ), contentLen, out )
     103                        == contentLen )
    102104                {
    103105                    tr_free( inf->torrent );
    104                     inf->torrent = tr_strdup( new_name );
    105                     tr_sessionSetTorrentFile( handle, inf->hashString, new_name );
     106                    inf->torrent = tr_strdup( name );
     107                    tr_sessionSetTorrentFile( handle, inf->hashString, name );
    106108                    unlink( old_name );
    107109                }
     
    114116    }
    115117
    116     tr_free( new_name );
     118    tr_free( name );
    117119}
    118120
     
    139141        for( i=0; i<n; ++i ) {
    140142            const char * str;
    141             if( tr_bencGetStr( tr_bencListChild( path, i ), &str ) && strcmp( str, ".." ) ) {
     143            if( tr_bencGetStr( tr_bencListChild( path, i ), &str )
     144                    && strcmp( str, ".." ) ) {
    142145                evbuffer_add( buf, TR_PATH_DELIMITER_STR, 1 );
    143146                evbuffer_add( buf, str, strlen( str ) );
     
    155158
    156159static const char*
    157 parseFiles( tr_info * inf, tr_benc * files, tr_benc * length )
    158 {
    159     tr_file_index_t i;
     160parseFiles( tr_info * inf, tr_benc * files, const tr_benc * length )
     161{
     162    int64_t len;
    160163
    161164    inf->totalSize = 0;
     
    163166    if( tr_bencIsList( files ) ) /* multi-file mode */
    164167    {
     168        tr_file_index_t i;
     169
    165170        inf->isMultifile = 1;
    166171        inf->fileCount   = tr_bencListSize( files );
     
    191196        }
    192197    }
    193     else if( tr_bencIsInt( length ) ) /* single-file mode */
     198    else if( tr_bencGetInt( length, &len ) ) /* single-file mode */
    194199    {
    195200        inf->isMultifile      = 0;
     
    197202        inf->files            = tr_new0( tr_file, 1 );
    198203        inf->files[0].name    = tr_strdup( inf->name );
    199         inf->files[0].length  = length->val.i;
    200         inf->totalSize       += length->val.i;
     204        inf->files[0].length  = len;
     205        inf->totalSize       += len;
    201206    }
    202207    else
     
    226231        evbuffer_add( buf, "scrape", 6 );
    227232        evbuffer_add_printf( buf, "%s", s+8 );
    228         scrape = tr_strdup( ( char * ) EVBUFFER_DATA( buf ) );
     233        scrape = tr_strdup( EVBUFFER_DATA( buf ) );
    229234        evbuffer_free( buf );
    230235    }
     
    246251        int n;
    247252        int i, j;
     253        const int numTiers = tr_bencListSize( tiers );
    248254
    249255        n = 0;
    250         for( i=0; i<tiers->val.l.count; ++i )
    251             n += tiers->val.l.vals[i].val.l.count;
     256        for( i=0; i<numTiers; ++i )
     257            n += tr_bencListSize( tr_bencListChild( tiers, i ) );
    252258
    253259        trackers = tr_new0( tr_tracker_info, n );
    254260        trackerCount = 0;
    255261
    256         for( i=0; i<tiers->val.l.count; ++i ) {
    257             const tr_benc * tier = &tiers->val.l.vals[i];
    258             for( j=0; tr_bencIsList(tier) && j<tier->val.l.count; ++j ) {
    259                 const tr_benc * a = &tier->val.l.vals[j];
    260                 if( tr_bencIsString( a ) && tr_httpIsValidURL( a->val.s.s ) ) {
     262        for( i=0; i<numTiers; ++i ) {
     263            tr_benc * tier = tr_bencListChild( tiers, i );
     264            const int tierSize = tr_bencListSize( tier );
     265            for( j=0; j<tierSize; ++j ) {
     266                const char * str;
     267                if( tr_bencGetStr( tr_bencListChild( tier, j ), &str )
     268                        && tr_httpIsValidURL( str ) )  {
    261269                    tr_tracker_info * t = trackers + trackerCount++;
    262270                    t->tier = i;
    263                     t->announce = tr_strndup( a->val.s.s, a->val.s.i );
    264                     t->scrape = announceToScrape( a->val.s.s );
    265                     /*fprintf( stderr, "tier %d: %s\n", i, a->val.s.s );*/
     271                    t->announce = tr_strdup( str );
     272                    t->scrape = announceToScrape( str );
     273                    /*fprintf( stderr, "tier %d: %s\n", i, str );*/
    266274                }
    267275            }
  • trunk/libtransmission/rpc-server.c

    r6566 r6613  
    559559
    560560    /* the -1 is to eat the final ", " */
    561     ret = tr_strndup( (char*) EVBUFFER_DATA(out), EVBUFFER_LENGTH(out)-1 );
     561    ret = tr_strndup( EVBUFFER_DATA( out ), EVBUFFER_LENGTH( out ) - 1 );
    562562    evbuffer_free( out );
    563563    return ret;
  • trunk/libtransmission/session.c

    r6556 r6613  
    104104****
    105105***/
     106
     107static int
     108tr_stringEndsWith( const char * str, const char * end )
     109{
     110    const size_t slen = strlen( str );
     111    const size_t elen = strlen( end );
     112    return slen>=elen && !memcmp( &str[slen-elen], end, elen );
     113}
    106114
    107115static void
  • trunk/libtransmission/tracker.c

    r6517 r6613  
    634634    req->reqtype = reqtype;
    635635    req->done_func =  isStopping ? onStoppedResponse : onTrackerResponse;
    636     req->url = tr_strdup( ( char * ) EVBUFFER_DATA( url ) );
     636    req->url = tr_strdup( EVBUFFER_DATA( url ) );
    637637    memcpy( req->torrent_hash, tracker->hash, SHA_DIGEST_LENGTH );
    638638
     
    655655    req->session = session;
    656656    req->reqtype = TR_REQ_SCRAPE;
    657     req->url = tr_strdup( ( char * ) EVBUFFER_DATA( url ) );
     657    req->url = tr_strdup( EVBUFFER_DATA( url ) );
    658658    req->done_func = onScrapeResponse;
    659659    memcpy( req->torrent_hash, tracker->hash, SHA_DIGEST_LENGTH );
  • trunk/libtransmission/utils-test.c

    r6595 r6613  
    107107    tr_free( out );
    108108
    109     /* tr_stringEndsWith */
    110     check( tr_stringEndsWith( "the", "the" ) );
    111     check( tr_stringEndsWith( "dress", "dress" ) );
    112     check( tr_stringEndsWith( "address", "dress" ) );
    113     check( !tr_stringEndsWith( "foo.bin", "gfoo.bin" ) );
    114     check( !tr_stringEndsWith( "xyz", "xyw" ) );
    115 
    116109    /* simple bitfield tests */
    117110    for( l=0; l<NUM_LOOPS; ++l )
  • trunk/libtransmission/utils.c

    r6595 r6613  
    191191        va_end( args );
    192192        evbuffer_add_printf( buf, " (%s:%d)\n", basename(myfile), line );
    193         fwrite( EVBUFFER_DATA(buf), 1, EVBUFFER_LENGTH(buf), fp );
     193        fwrite( EVBUFFER_DATA( buf ), 1, EVBUFFER_LENGTH( buf ), fp );
    194194
    195195        tr_free( myfile );
     
    544544    }
    545545    if( EVBUFFER_LENGTH(evbuf) )
    546         tr_strlcpy( buf, (char*)EVBUFFER_DATA(evbuf), buflen );
     546        tr_strlcpy( buf, EVBUFFER_DATA( evbuf ), buflen );
    547547    else
    548548        *buf = '\0';
     
    665665
    666666    if( evbuffer_add_vprintf( buf, fmt, ap ) != -1 )
    667         ret = tr_strdup( (char*)EVBUFFER_DATA( buf ) );
     667        ret = tr_strdup( EVBUFFER_DATA( buf ) );
    668668
    669669    va_end( ap );
     
    939939
    940940int
    941 tr_stringEndsWith( const char * str, const char * end )
    942 {
    943     const size_t slen = strlen( str );
    944     const size_t elen = strlen( end );
    945     return slen>=elen && !memcmp( &str[slen-elen], end, elen );
    946 }
    947 
    948 int
    949941tr_snprintf( char * buf, size_t buflen, const char * fmt, ... )
    950942{
     
    964956 */
    965957size_t
    966 tr_strlcpy(char *dst, const char *src, size_t siz)
     958tr_strlcpy(char *dst, const void * src, size_t siz)
    967959{
    968960#ifdef HAVE_STRLCPY
     
    992984    }
    993985
    994     return(s - src - 1); /* count does not include NUL */
     986    return(s - (char*)src - 1); /* count does not include NUL */
    995987#endif
    996988}
  • trunk/libtransmission/utils.h

    r6595 r6613  
    194194char* tr_base64_decode( const void * input, int inlen, int *outlen ) TR_GNUC_MALLOC;
    195195
    196 size_t tr_strlcpy( char * dst, const char * src, size_t siz );
     196size_t tr_strlcpy( char * dst, const void * src, size_t siz );
    197197int tr_snprintf( char * buf, size_t buflen, const char * fmt, ... );
    198 
    199 int   tr_stringEndsWith( const char * string, const char * end );
    200198
    201199const char* tr_strerror( int );
Note: See TracChangeset for help on using the changeset viewer.