Changeset 2103
- Timestamp:
- Jun 16, 2007, 9:25:58 PM (15 years ago)
- Location:
- branches/file_selection
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/file_selection/cli/transmissioncli.c
r2097 r2103 36 36 #endif 37 37 38 /* macro to shut up "unused parameter" warnings */ 39 #ifdef __GNUC__ 40 #define UNUSED __attribute__((unused)) 41 #else 42 #define UNUSED 43 #endif 44 38 45 const char * USAGE = 39 46 "Usage: %s [options] file.torrent [options]\n\n" … … 86 93 #define LINEWIDTH 80 87 94 95 static void 96 progress_func( const meta_info_builder_t * builder UNUSED, 97 size_t pieceIndex, 98 size_t pieceCount, 99 int * abortFlag UNUSED, 100 void * userData UNUSED ) 101 { 102 double percent = (double)pieceIndex / pieceCount; 103 printf( "%d%% done (on block %lu of %lu)\n", 104 (int)(100.0*percent + 0.5), 105 pieceIndex, pieceCount ); 106 } 107 108 88 109 int main( int argc, char ** argv ) 89 110 { … … 136 157 { 137 158 meta_info_builder_t* builder = tr_metaInfoBuilderCreate( sourceFile ); 138 int ret = tr_makeMetaInfo( builder, NULL, announce, comment, isPrivate ); 159 int ret = tr_makeMetaInfo( builder, 160 progress_func, NULL, 161 NULL, announce, comment, isPrivate ); 139 162 tr_metaInfoBuilderFree( builder ); 140 163 return ret; -
branches/file_selection/gtk/make-meta-ui.c
r2097 r2103 45 45 46 46 static void 47 response_cb( GtkDialog* d, int response, gpointer user_data UNUSED ) 48 { 49 if( response == GTK_RESPONSE_ACCEPT ) 47 cancel_cb( GtkDialog *d UNUSED, int response UNUSED, gpointer cancel_flag ) 48 { 49 *(int*)cancel_flag = TRUE; 50 } 51 52 static void 53 progress_cb( const meta_info_builder_t * builder UNUSED, 54 size_t pieceIndex, 55 size_t pieceCount, 56 int * abortFlag, 57 void * user_data UNUSED) 58 { 59 g_message ("%lu of %lu", pieceIndex, pieceCount); 60 61 *abortFlag = *(gboolean*)user_data; 62 } 63 64 static void 65 response_cb( GtkDialog* d, int response, gpointer user_data ) 66 { 67 int ret; 68 gboolean cancelFlag = FALSE; 69 MakeMetaUI * ui = (MakeMetaUI*) user_data; 70 GtkWidget *w, *l, *p; 71 char *tmp, *name; 72 73 if( response != GTK_RESPONSE_ACCEPT ) 50 74 { 51 g_message( "go for it!"); 52 } 53 54 gtk_widget_destroy( GTK_WIDGET( d ) ); 75 gtk_widget_destroy( GTK_WIDGET( d ) ); 76 return; 77 } 78 79 w = gtk_dialog_new_with_buttons( _("Making Torrent..."), 80 GTK_WINDOW(d), 81 GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, 82 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 83 NULL ); 84 g_signal_connect( w, "response", G_CALLBACK(cancel_cb), &cancelFlag ); 85 86 tmp = g_path_get_basename (ui->builder->top); 87 name = g_strdup_printf ( "%s.torrent", tmp ); 88 l = gtk_label_new( name ); 89 gtk_box_pack_start_defaults ( GTK_BOX(GTK_DIALOG(w)->vbox), l ); 90 p = gtk_progress_bar_new (); 91 gtk_box_pack_start_defaults ( GTK_BOX(GTK_DIALOG(w)->vbox), l ); 92 gtk_widget_show_all ( w ); 93 g_free( name ); 94 g_free( tmp ); 95 96 ret = tr_makeMetaInfo( ui->builder, 97 progress_cb, &cancelFlag, 98 NULL, 99 gtk_entry_get_text( GTK_ENTRY( ui->announce_entry ) ), 100 gtk_entry_get_text( GTK_ENTRY( ui->comment_entry ) ), 101 gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( ui->private_check ) ) ); 102 if( !ret ) 103 gtk_widget_destroy( GTK_WIDGET( d ) ); 55 104 } 56 105 … … 118 167 GTK_STOCK_NEW, GTK_RESPONSE_ACCEPT, 119 168 NULL ); 120 g_signal_connect( d, "response", G_CALLBACK(response_cb), NULL);169 g_signal_connect( d, "response", G_CALLBACK(response_cb), ui ); 121 170 g_object_set_data_full( G_OBJECT(d), "ui", ui, g_free ); 122 171 -
branches/file_selection/libtransmission/makemeta.c
r2099 r2103 159 159 base = basename( basebuf ); 160 160 files = getFiles( dir, base, NULL ); 161 assert( files != NULL );162 161 } 163 162 … … 203 202 static uint8_t* 204 203 getHashInfo ( const meta_info_builder_t * builder, 204 makemeta_progress_func progress_func, 205 void * progress_func_user_data, 205 206 int * setmeCount ) 206 207 { 207 208 size_t i; 209 int abort = 0;; 208 210 tr_torrent_t t; 209 211 uint8_t *ret, *walk; … … 228 230 ret = (uint8_t*) malloc ( SHA_DIGEST_LENGTH * t.info.pieceCount ); 229 231 walk = ret; 232 233 /* FIXME: call the periodically while getting the SHA1 sums. 234 this will take a little tweaking to ioRecalculateHash, 235 probably will get done Sunday or Monday */ 236 (progress_func)( builder, 0, t.info.pieceCount, &abort, progress_func_user_data ); 237 230 238 for( i=0; i<(size_t)t.info.pieceCount; ++i ) { 231 239 tr_ioRecalculateHash( &t, i, walk ); … … 306 314 makeInfoDict ( benc_val_t * dict, 307 315 const meta_info_builder_t * builder, 316 makemeta_progress_func progress_func, 317 void * progress_func_user_data, 308 318 int isPrivate ) 309 319 { … … 322 332 tr_bencInitInt( val, builder->pieceSize ); 323 333 324 pch = getHashInfo( builder, &pieceCount ); 334 pch = getHashInfo( builder, 335 progress_func, 336 progress_func_user_data, 337 &pieceCount ); 325 338 val = tr_bencDictAdd( dict, "pieces" ); 326 339 tr_bencInitStr( val, pch, SHA_DIGEST_LENGTH * pieceCount, 0 ); … … 345 358 int 346 359 tr_makeMetaInfo( const meta_info_builder_t * builder, 360 makemeta_progress_func progress_func, 361 void * progress_func_user_data, 347 362 const char * outputFile, 348 363 const char * announce, … … 377 392 tr_bencInit( val, TYPE_DICT ); 378 393 tr_bencDictReserve( val, 666 ); 379 makeInfoDict( val, builder, isPrivate ); 394 makeInfoDict( val, builder, 395 progress_func, progress_func_user_data, 396 isPrivate ); 380 397 381 398 /* debugging... */ -
branches/file_selection/libtransmission/makemeta.h
r2097 r2103 42 42 tr_metaInfoBuilderCreate( const char * topFile ); 43 43 44 /* set abortFlag to nonzero to abort the checksum generation */ 45 typedef 46 void (*makemeta_progress_func)(const meta_info_builder_t * builder, 47 size_t pieceIndex, 48 size_t pieceCount, 49 int * abortFlag, 50 void * userData ); 44 51 int 45 tr_makeMetaInfo( const meta_info_builder_t * builder, 46 const char * outputFile, /* NULL for builder->top + ".torrent" */ 47 const char * announce, 48 const char * comment, 49 int isPrivate ); 52 tr_makeMetaInfo( const meta_info_builder_t * builder, 53 makemeta_progress_func progress_func, 54 void * progress_func_user_data, 55 const char * outputFile_or_NULL, 56 const char * announce, 57 const char * comment, 58 int isPrivate ); 59 50 60 51 61 void
Note: See TracChangeset
for help on using the changeset viewer.