Changeset 9625


Ignore:
Timestamp:
Nov 29, 2009, 7:42:39 AM (12 years ago)
Author:
charles
Message:

(trunk gtk) support adding torrents by their raw 40 character hex hashcode

Location:
trunk/gtk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/add-dialog.c

    r9570 r9625  
    487487            TrCore * core = user_data;
    488488
    489             if( gtr_is_supported_url( url ) || gtr_is_magnet_link( url ) )
     489            if( gtr_is_supported_url( url ) || gtr_is_magnet_link( url )
     490                                            || gtr_is_hex_hashcode( url ) )
    490491            {
    491492                tr_core_add_from_url( core, url );
  • trunk/gtk/tr-core.c

    r9580 r9625  
    10391039    tr_session * session = tr_core_session( core );
    10401040
    1041     if( gtr_is_magnet_link( url ) )
    1042     {
     1041    if( gtr_is_magnet_link( url ) || gtr_is_hex_hashcode( url ) )
     1042    {
     1043        int err;
     1044        char * tmp = NULL;
    10431045        tr_ctor * ctor = tr_ctorNew( session );
    1044         int err = tr_ctorSetMagnet( ctor, url );
     1046
     1047        if( gtr_is_hex_hashcode( url ) )
     1048            url = tmp = g_strdup_printf( "magnet:?xt=urn:btih:%s", url );
     1049
     1050        err = tr_ctorSetMagnet( ctor, url );
     1051
    10451052        if( !err )
    10461053        {
     
    10651072            tr_ctorFree( ctor );
    10661073        }
     1074
     1075        g_free( tmp );
    10671076    }
    10681077    else
  • trunk/gtk/util.c

    r9550 r9625  
    338338}
    339339
     340gboolean
     341gtr_is_hex_hashcode( const char * str )
     342{
     343    int i;
     344
     345    if( !str || ( strlen( str ) != 40 ) )
     346        return FALSE;
     347
     348    for( i=0; i<40; ++i )
     349        if( !isxdigit( str[i] ) )
     350            return FALSE;
     351
     352    return TRUE;
     353}
     354
    340355GSList *
    341356checkfilenames( int argc, char **argv )
     
    358373
    359374            if( g_file_test( filename, G_FILE_TEST_EXISTS ) )
     375                ret = g_slist_prepend( ret, filename );
     376            else if( gtr_is_hex_hashcode( filename ) )
    360377                ret = g_slist_prepend( ret, filename );
    361378            else
  • trunk/gtk/util.h

    r9545 r9625  
    4747
    4848gboolean gtr_is_magnet_link( const char * str );
     49
     50gboolean gtr_is_hex_hashcode( const char * str );
     51
    4952
    5053/* create a copy of a GSList of strings, this dups the actual strings too */
Note: See TracChangeset for help on using the changeset viewer.