From 37dda955a1ef61b8872059c5ddf582c74dbf2381 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sun, 1 Nov 2009 01:35:06 +0000 Subject: [PATCH] (trunk libT) use __attribute__((nonnull)) where appropriate. remove two unused functions tr_int2ptr(), tr_ptr2int() --- libtransmission/request-list.c | 6 ++-- libtransmission/utils.c | 20 ++----------- libtransmission/utils.h | 52 ++++++++++++++++++---------------- 3 files changed, 33 insertions(+), 45 deletions(-) diff --git a/libtransmission/request-list.c b/libtransmission/request-list.c index 7d987f2e1..8276b9947 100644 --- a/libtransmission/request-list.c +++ b/libtransmission/request-list.c @@ -75,10 +75,10 @@ reqListSortPos( const struct request_list * list, } void -reqListAppend( struct request_list * list, - const struct peer_request * req ) +reqListAppend( struct request_list * list, const struct peer_request * req ) { int low; + tr_bool exact; reqListReserve( list, list->len + 8 ); @@ -86,7 +86,7 @@ reqListAppend( struct request_list * list, list->fifo[list->len] = *req; /* insert into list->sort */ - low = reqListSortPos( list, req, NULL ); + low = reqListSortPos( list, req, &exact ); memmove( &list->sort[low+1], &list->sort[low], (list->len-low)*sizeof(struct peer_request) ); list->sort[low] = *req; diff --git a/libtransmission/utils.c b/libtransmission/utils.c index 7c5ee1933..d9a946eab 100644 --- a/libtransmission/utils.c +++ b/libtransmission/utils.c @@ -1082,18 +1082,6 @@ tr_base64_decode( const void * input, return ret; } -int -tr_ptr2int( void* v ) -{ - return (intptr_t)v; -} - -void* -tr_int2ptr( int i ) -{ - return (void*)(intptr_t)i; -} - /*** **** ***/ @@ -1109,13 +1097,12 @@ tr_lowerBound( const void * key, size_t first = 0; const char * cbase = base; tr_bool exact = FALSE; - int c; - while( nmemb ) + while( nmemb != 0 ) { const size_t half = nmemb / 2; const size_t middle = first + half; - c = compar( key, cbase + size*middle ); + const int c = compar( key, cbase + size*middle ); if( c <= 0 ) { if( c == 0 ) @@ -1127,8 +1114,7 @@ tr_lowerBound( const void * key, } } - if( exact_match ) - *exact_match = exact; + *exact_match = exact; return first; } diff --git a/libtransmission/utils.h b/libtransmission/utils.h index bc509c898..24158dff3 100644 --- a/libtransmission/utils.h +++ b/libtransmission/utils.h @@ -54,19 +54,27 @@ extern "C" { #ifndef TR_GNUC_PRINTF #ifdef __GNUC__ - #define TR_GNUC_PRINTF( fmt,\ - args ) __attribute__ ( ( format ( printf, fmt,\ - args ) ) ) + #define TR_GNUC_PRINTF( fmt, args ) __attribute__ ( ( format ( printf, fmt, args ) ) ) #else #define TR_GNUC_PRINTF( fmt, args ) #endif #endif +#ifndef TR_GNUC_NONNULL + #ifdef __GNUC__ + #define TR_GNUC_NONNULL( ... ) __attribute__((nonnull (__VA_ARGS__))) + #else + #define TR_GNUC_NONNULL( ... ) + #endif +#endif + #ifndef TR_GNUC_NULL_TERMINATED #if __GNUC__ >= 4 #define TR_GNUC_NULL_TERMINATED __attribute__ ( ( __sentinel__ ) ) + #define TR_GNUC_HOT __attribute ( ( hot ) ) #else #define TR_GNUC_NULL_TERMINATED + #define TR_GNUC_HOT #endif #endif @@ -188,14 +196,14 @@ void tr_deepLog( const char * file, int line, const char * name, const char * fmt, - ... ) TR_GNUC_PRINTF( 4, 5 ); + ... ) TR_GNUC_PRINTF( 4, 5 ) TR_GNUC_NONNULL(1,4); char* tr_getLogTimeStr( char * buf, - int buflen ); + int buflen ) TR_GNUC_NONNULL(1); int tr_wildmat( const char * text, - const char * pattern ); + const char * pattern ) TR_GNUC_NONNULL(1,2); /** @brief Portability wrapper for basename() that uses the system implementation if available */ char* tr_basename( const char * path ) TR_GNUC_MALLOC; @@ -213,7 +221,7 @@ char* tr_dirname( const char * path ) TR_GNUC_MALLOC; * (in which case errno is set appropriately). */ int tr_mkdir( const char * path, - int permissions ); + int permissions ) TR_GNUC_NONNULL(1); /** * Like mkdir, but makes parent directories as needed. @@ -221,14 +229,14 @@ int tr_mkdir( const char * path, * @return zero on success, or -1 if an error occurred * (in which case errno is set appropriately). */ -int tr_mkdirp( const char * path, int permissions ); +int tr_mkdirp( const char * path, int permissions ) TR_GNUC_NONNULL(1); /** * @brief Loads a file and returns its contents. * On failure, NULL is returned and errno is set. */ -uint8_t* tr_loadFile( const char * filename, size_t * size ) TR_GNUC_MALLOC; +uint8_t* tr_loadFile( const char * filename, size_t * size ) TR_GNUC_MALLOC TR_GNUC_NONNULL(1); /** @brief build a filename from a series of elements using the @@ -323,7 +331,7 @@ int tr_lowerBound( const void * key, size_t nmemb, size_t size, int (* compar)(const void* key, const void* arrayMember), - tr_bool * exact_match ); + tr_bool * exact_match ) TR_GNUC_HOT TR_GNUC_NONNULL(1,5,6); char* tr_strdup_printf( const char * fmt, @@ -342,7 +350,7 @@ size_t tr_strlcpy( char * dst, const void * src, size_t siz ); /** @brief Portability wrapper for snprintf() that uses the system implementation if available */ int tr_snprintf( char * buf, size_t buflen, - const char * fmt, ... ) TR_GNUC_PRINTF( 3, 4 ); + const char * fmt, ... ) TR_GNUC_PRINTF( 3, 4 ) TR_GNUC_NONNULL(1,3); const char* tr_strerror( int ); @@ -360,10 +368,8 @@ const char* tr_memmem( const char * haystack, size_t haystack_len, typedef void ( tr_set_func )( void * element, void * userData ); -void tr_set_compare( const void * a, - size_t aCount, - const void * b, - size_t bCount, +void tr_set_compare( const void * a, size_t aCount, + const void * b, size_t bCount, int compare( const void * a, const void * b ), size_t elementSize, tr_set_func in_a_cb, @@ -372,26 +378,22 @@ void tr_set_compare( const void * a, void * userData ); void tr_sha1_to_hex( char * out, - const uint8_t * sha1 ); + const uint8_t * sha1 ) TR_GNUC_NONNULL(1,2); -tr_bool tr_httpIsValidURL( const char * url ); +tr_bool tr_httpIsValidURL( const char * url ) TR_GNUC_NONNULL(1); int tr_httpParseURL( const char * url, int url_len, char ** setme_host, int * setme_port, - char ** setme_path ); + char ** setme_path ) TR_GNUC_NONNULL(1); double tr_getRatio( double numerator, double denominator ); -int* tr_parseNumberRange( const char * str, int str_len, int * setmeCount ) TR_GNUC_MALLOC; +int* tr_parseNumberRange( const char * str, int str_len, int * setmeCount ) TR_GNUC_MALLOC TR_GNUC_NONNULL(1); -int tr_ptr2int( void* ); - -void* tr_int2ptr( int ); - /* truncate a double value at a given number of decimal places. this can be used to prevent a printf() call from rounding up: call with the decimal_places argument equal to the number of @@ -412,14 +414,14 @@ double tr_truncd( double x, int decimal_places ); * @param ratio the ratio to convert to a string * @param the string represntation of "infinity" */ -char* tr_strratio( char * buf, size_t buflen, double ratio, const char * infinity ); +char* tr_strratio( char * buf, size_t buflen, double ratio, const char * infinity ) TR_GNUC_NONNULL(1,4); /** @brief Portability wrapper for localtime_r() that uses the system implementation if available */ struct tm * tr_localtime_r( const time_t *_clock, struct tm *_result ); /** on success, return 0. on failure, return -1 and set errno */ -int tr_moveFile( const char * oldpath, const char * newpath, tr_bool * renamed ); +int tr_moveFile( const char * oldpath, const char * newpath, tr_bool * renamed ) TR_GNUC_NONNULL(1,2); #ifdef __cplusplus