(trunk gtk) support adding torrents by their raw 40 character hex hashcode
This commit is contained in:
parent
52699591dc
commit
c841adaf56
|
@ -486,7 +486,8 @@ onAddURLResponse( GtkDialog * dialog, int response, gpointer user_data )
|
|||
{
|
||||
TrCore * core = user_data;
|
||||
|
||||
if( gtr_is_supported_url( url ) || gtr_is_magnet_link( url ) )
|
||||
if( gtr_is_supported_url( url ) || gtr_is_magnet_link( url )
|
||||
|| gtr_is_hex_hashcode( url ) )
|
||||
{
|
||||
tr_core_add_from_url( core, url );
|
||||
}
|
||||
|
|
|
@ -1038,10 +1038,17 @@ tr_core_add_from_url( TrCore * core, const char * url )
|
|||
{
|
||||
tr_session * session = tr_core_session( core );
|
||||
|
||||
if( gtr_is_magnet_link( url ) )
|
||||
if( gtr_is_magnet_link( url ) || gtr_is_hex_hashcode( url ) )
|
||||
{
|
||||
int err;
|
||||
char * tmp = NULL;
|
||||
tr_ctor * ctor = tr_ctorNew( session );
|
||||
int err = tr_ctorSetMagnet( ctor, url );
|
||||
|
||||
if( gtr_is_hex_hashcode( url ) )
|
||||
url = tmp = g_strdup_printf( "magnet:?xt=urn:btih:%s", url );
|
||||
|
||||
err = tr_ctorSetMagnet( ctor, url );
|
||||
|
||||
if( !err )
|
||||
{
|
||||
tr_session * session = tr_core_session( core );
|
||||
|
@ -1064,6 +1071,8 @@ tr_core_add_from_url( TrCore * core, const char * url )
|
|||
gtk_widget_show( w );
|
||||
tr_ctorFree( ctor );
|
||||
}
|
||||
|
||||
g_free( tmp );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
17
gtk/util.c
17
gtk/util.c
|
@ -337,6 +337,21 @@ gtr_is_magnet_link( const char * str )
|
|||
return !strncmp( str, "magnet:?", 8 );
|
||||
}
|
||||
|
||||
gboolean
|
||||
gtr_is_hex_hashcode( const char * str )
|
||||
{
|
||||
int i;
|
||||
|
||||
if( !str || ( strlen( str ) != 40 ) )
|
||||
return FALSE;
|
||||
|
||||
for( i=0; i<40; ++i )
|
||||
if( !isxdigit( str[i] ) )
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
GSList *
|
||||
checkfilenames( int argc, char **argv )
|
||||
{
|
||||
|
@ -358,6 +373,8 @@ checkfilenames( int argc, char **argv )
|
|||
|
||||
if( g_file_test( filename, G_FILE_TEST_EXISTS ) )
|
||||
ret = g_slist_prepend( ret, filename );
|
||||
else if( gtr_is_hex_hashcode( filename ) )
|
||||
ret = g_slist_prepend( ret, filename );
|
||||
else
|
||||
g_free( filename );
|
||||
}
|
||||
|
|
|
@ -47,6 +47,9 @@ gboolean gtr_is_supported_url( const char * str );
|
|||
|
||||
gboolean gtr_is_magnet_link( const char * str );
|
||||
|
||||
gboolean gtr_is_hex_hashcode( const char * str );
|
||||
|
||||
|
||||
/* create a copy of a GSList of strings, this dups the actual strings too */
|
||||
GSList * dupstrlist( GSList * list );
|
||||
|
||||
|
|
Loading…
Reference in New Issue