Changeset 2310
- Timestamp:
- Jul 9, 2007, 4:30:20 PM (15 years ago)
- Location:
- trunk/libtransmission
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/list.c
r2306 r2310 13 13 #include "utils.h" 14 14 15 int 16 tr_list_length( const tr_list_t * list ) 17 { 18 int i = 0; 19 while( list ) { 20 ++i; 21 list = list->next; 22 } 23 return i; 24 } 25 26 tr_list_t* 27 tr_list_alloc( void ) 15 static tr_list_t* 16 node_alloc( void ) 28 17 { 29 18 return tr_new0( tr_list_t, 1 ); 30 19 } 31 20 32 void33 tr_list_free1( tr_list_t* node )21 static void 22 node_free( tr_list_t* node ) 34 23 { 35 24 tr_free( node ); 36 25 } 26 27 /*** 28 **** 29 ***/ 37 30 38 31 void … … 43 36 tr_list_t * node = list; 44 37 list = list->next; 45 tr_list_free1( node );38 node_free( node ); 46 39 } 47 40 } … … 50 43 tr_list_prepend( tr_list_t * list, void * data ) 51 44 { 52 tr_list_t * node = tr_list_alloc ();45 tr_list_t * node = node_alloc (); 53 46 node->data = data; 54 47 node->next = list; … … 61 54 tr_list_append( tr_list_t * list, void * data ) 62 55 { 63 tr_list_t * node = list; 64 tr_list_t * l = tr_list_alloc( ); 65 l->data = data; 56 tr_list_t * node = node_alloc( ); 57 node->data = data; 66 58 if( !list ) 67 return l; 68 while( node->next ) 69 node = node->next; 70 node->next = l; 71 l->prev = node; 72 return list; 59 return node; 60 else { 61 tr_list_t * l = list; 62 while( l->next ) 63 l = l->next; 64 l->next = node; 65 node->prev = l; 66 return list; 67 } 73 68 } 74 69 … … 84 79 85 80 tr_list_t* 86 tr_list_remove ( tr_list_t * list, const void * data )81 tr_list_remove_data ( tr_list_t * list, const void * data ) 87 82 { 88 83 tr_list_t * node = tr_list_find_data( list, data ); … … 92 87 if( next ) next->prev = prev; 93 88 if( list == node ) list = next; 94 tr_list_free1( node );89 node_free( node ); 95 90 return list; 96 91 } … … 115 110 } 116 111 } 117 -
trunk/libtransmission/list.h
r2306 r2310 20 20 tr_list_t; 21 21 22 void tr_list_free_1 ( void ); 23 void tr_list_free ( tr_list_t* ); 24 int tr_list_length ( const tr_list_t* ); 25 tr_list_t* tr_list_append ( tr_list_t*, void * data ); 26 tr_list_t* tr_list_prepend ( tr_list_t*, void * data ); 27 tr_list_t* tr_list_remove ( tr_list_t*, const void * data ); 28 tr_list_t* tr_list_pop ( tr_list_t*, void ** setme ); 22 void tr_list_free ( tr_list_t* ); 23 tr_list_t* tr_list_append ( tr_list_t*, void * data ); 24 tr_list_t* tr_list_prepend ( tr_list_t*, void * data ); 25 tr_list_t* tr_list_remove_data ( tr_list_t*, const void * data ); 26 tr_list_t* tr_list_pop ( tr_list_t*, void ** setme ); 29 27 30 28 typedef int (*TrListCompareFunc)(const void * a, const void * b); 31 tr_list_t* tr_list_find ( tr_list_t*, TrListCompareFunc func, const void * b );32 tr_list_t* tr_list_find_data ( tr_list_t*, const void * data );29 tr_list_t* tr_list_find ( tr_list_t*, TrListCompareFunc func, const void * b ); 30 tr_list_t* tr_list_find_data ( tr_list_t*, const void * data ); 33 31 34 32 typedef void (*TrListForeachFunc)(void *); 35 void tr_list_foreach ( tr_list_t*, TrListForeachFunc func );33 void tr_list_foreach ( tr_list_t*, TrListForeachFunc func ); 36 34 37 35 #endif /* TR_LIST_H */ -
trunk/libtransmission/peermessages.h
r2306 r2310 124 124 r = (tr_request_t*) peer->outRequests->data; 125 125 assert( r != NULL ); 126 peer->outRequests = tr_list_remove ( peer->outRequests, r );126 peer->outRequests = tr_list_remove_data( peer->outRequests, r ); 127 127 128 128 if( !tr_cpPieceIsComplete( tor->completion, r->index ) ) /* sanity clause */ -
trunk/libtransmission/peerparse.h
r2306 r2310 418 418 req.length = length; 419 419 while(( l = tr_list_find( peer->outRequests, reqCompare, &req ) )) { 420 tr_free( l->data ); 421 peer->outRequests = tr_list_remove( peer->outRequests, l ); 420 tr_request_t * r = (tr_request_t *) l->data; 421 peer->outRequests = tr_list_remove_data( peer->outRequests, r ); 422 tr_free( r ); 422 423 } 423 424
Note: See TracChangeset
for help on using the changeset viewer.