(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;
|
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 );
|
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 );
|
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 );
|
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 )
|
if( !err )
|
||||||
{
|
{
|
||||||
tr_session * session = tr_core_session( core );
|
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 );
|
gtk_widget_show( w );
|
||||||
tr_ctorFree( ctor );
|
tr_ctorFree( ctor );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free( tmp );
|
||||||
}
|
}
|
||||||
else
|
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 );
|
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 *
|
GSList *
|
||||||
checkfilenames( int argc, char **argv )
|
checkfilenames( int argc, char **argv )
|
||||||
{
|
{
|
||||||
|
@ -358,6 +373,8 @@ checkfilenames( int argc, char **argv )
|
||||||
|
|
||||||
if( g_file_test( filename, G_FILE_TEST_EXISTS ) )
|
if( g_file_test( filename, G_FILE_TEST_EXISTS ) )
|
||||||
ret = g_slist_prepend( ret, filename );
|
ret = g_slist_prepend( ret, filename );
|
||||||
|
else if( gtr_is_hex_hashcode( filename ) )
|
||||||
|
ret = g_slist_prepend( ret, filename );
|
||||||
else
|
else
|
||||||
g_free( filename );
|
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_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 */
|
/* create a copy of a GSList of strings, this dups the actual strings too */
|
||||||
GSList * dupstrlist( GSList * list );
|
GSList * dupstrlist( GSList * list );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue