mirror of
https://github.com/transmission/transmission
synced 2025-03-10 06:02:57 +00:00
(trunk libT) wrap tr_inf(), tr_msg(), tr_dbg() calls inside a check to see if that debugging level is active. That way that function calls in the vararg list won't be invoked unless that level of verbosity is actually turned on.
This commit is contained in:
parent
c52d9fedab
commit
415f04059f
3 changed files with 120 additions and 54 deletions
|
@ -59,11 +59,21 @@ static tr_msg_list ** messageQueueTail = &messageQueue;
|
||||||
static void OutputDebugString( const void * unused UNUSED ) { }
|
static void OutputDebugString( const void * unused UNUSED ) { }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
static void
|
||||||
tr_msgInit( void )
|
tr_msgInit( void )
|
||||||
{
|
{
|
||||||
if( !messageLock )
|
static tr_bool initialized = FALSE;
|
||||||
|
|
||||||
|
if( !initialized )
|
||||||
|
{
|
||||||
|
char * env = getenv( "TR_DEBUG" );
|
||||||
|
messageLevel = ( env ? atoi( env ) : 0 ) + 1;
|
||||||
|
messageLevel = MAX( 1, messageLevel );
|
||||||
|
|
||||||
messageLock = tr_lockNew( );
|
messageLock = tr_lockNew( );
|
||||||
|
|
||||||
|
initialized = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE*
|
FILE*
|
||||||
|
@ -100,7 +110,9 @@ tr_setMessageLevel( int level )
|
||||||
{
|
{
|
||||||
tr_msgInit( );
|
tr_msgInit( );
|
||||||
tr_lockLock( messageLock );
|
tr_lockLock( messageLock );
|
||||||
|
|
||||||
messageLevel = MAX( 0, level );
|
messageLevel = MAX( 0, level );
|
||||||
|
|
||||||
tr_lockUnlock( messageLock );
|
tr_lockUnlock( messageLock );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,12 +120,12 @@ int
|
||||||
tr_getMessageLevel( void )
|
tr_getMessageLevel( void )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tr_msgInit( );
|
tr_msgInit( );
|
||||||
tr_lockLock( messageLock );
|
tr_lockLock( messageLock );
|
||||||
ret = messageLevel;
|
|
||||||
tr_lockUnlock( messageLock );
|
|
||||||
|
|
||||||
|
ret = messageLevel;
|
||||||
|
|
||||||
|
tr_lockUnlock( messageLock );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +134,9 @@ tr_setMessageQueuing( tr_bool enabled )
|
||||||
{
|
{
|
||||||
tr_msgInit( );
|
tr_msgInit( );
|
||||||
tr_lockLock( messageLock );
|
tr_lockLock( messageLock );
|
||||||
|
|
||||||
messageQueuing = enabled;
|
messageQueuing = enabled;
|
||||||
|
|
||||||
tr_lockUnlock( messageLock );
|
tr_lockUnlock( messageLock );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,12 +144,12 @@ tr_bool
|
||||||
tr_getMessageQueuing( void )
|
tr_getMessageQueuing( void )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tr_msgInit( );
|
tr_msgInit( );
|
||||||
tr_lockLock( messageLock );
|
tr_lockLock( messageLock );
|
||||||
ret = messageQueuing;
|
|
||||||
tr_lockUnlock( messageLock );
|
|
||||||
|
|
||||||
|
ret = messageQueuing;
|
||||||
|
|
||||||
|
tr_lockUnlock( messageLock );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,14 +157,14 @@ tr_msg_list *
|
||||||
tr_getQueuedMessages( void )
|
tr_getQueuedMessages( void )
|
||||||
{
|
{
|
||||||
tr_msg_list * ret;
|
tr_msg_list * ret;
|
||||||
|
tr_msgInit( );
|
||||||
assert( NULL != messageLock );
|
|
||||||
tr_lockLock( messageLock );
|
tr_lockLock( messageLock );
|
||||||
|
|
||||||
ret = messageQueue;
|
ret = messageQueue;
|
||||||
messageQueue = NULL;
|
messageQueue = NULL;
|
||||||
messageQueueTail = &messageQueue;
|
messageQueueTail = &messageQueue;
|
||||||
tr_lockUnlock( messageLock );
|
|
||||||
|
|
||||||
|
tr_lockUnlock( messageLock );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,6 +262,15 @@ tr_deepLog( const char * file,
|
||||||
/***
|
/***
|
||||||
****
|
****
|
||||||
***/
|
***/
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
tr_msgLoggingIsActive( int level )
|
||||||
|
{
|
||||||
|
tr_msgInit( );
|
||||||
|
|
||||||
|
return messageLevel >= level;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
tr_msg( const char * file,
|
tr_msg( const char * file,
|
||||||
|
@ -258,19 +281,11 @@ tr_msg( const char * file,
|
||||||
... )
|
... )
|
||||||
{
|
{
|
||||||
FILE * fp;
|
FILE * fp;
|
||||||
|
tr_msgInit( );
|
||||||
if( messageLock )
|
tr_lockLock( messageLock );
|
||||||
tr_lockLock( messageLock );
|
|
||||||
|
|
||||||
fp = tr_getLog( );
|
fp = tr_getLog( );
|
||||||
|
|
||||||
if( !messageLevel )
|
|
||||||
{
|
|
||||||
char * env = getenv( "TR_DEBUG" );
|
|
||||||
messageLevel = ( env ? atoi( env ) : 0 ) + 1;
|
|
||||||
messageLevel = MAX( 1, messageLevel );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( messageLevel >= level )
|
if( messageLevel >= level )
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -315,8 +330,7 @@ tr_msg( const char * file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( messageLock )
|
tr_lockUnlock( messageLock );
|
||||||
tr_lockUnlock( messageLock );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
|
|
@ -107,22 +107,11 @@ extern "C" {
|
||||||
#define _( a ) tr_strip_positional_args( a )
|
#define _( a ) tr_strip_positional_args( a )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define tr_nerr( n, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_ERR, n, __VA_ARGS__ )
|
/****
|
||||||
#define tr_ninf( n, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_INF, n, __VA_ARGS__ )
|
*****
|
||||||
#define tr_ndbg( n, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_DBG, n, __VA_ARGS__ )
|
****/
|
||||||
|
|
||||||
#define tr_torerr( tor, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_ERR, tor->info.name, __VA_ARGS__ )
|
int tr_msgLoggingIsActive( int level );
|
||||||
#define tr_torinf( tor, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_INF, tor->info.name, __VA_ARGS__ )
|
|
||||||
#define tr_tordbg( tor, ... ) tr_msg( __FILE__, __LINE__, TR_MSG_DBG, tor->info.name, __VA_ARGS__ )
|
|
||||||
|
|
||||||
#define tr_err( ... ) tr_msg( __FILE__, __LINE__, TR_MSG_ERR, NULL, __VA_ARGS__ )
|
|
||||||
#define tr_inf( ... ) tr_msg( __FILE__, __LINE__, TR_MSG_INF, NULL, __VA_ARGS__ )
|
|
||||||
#define tr_dbg( ... ) tr_msg( __FILE__, __LINE__, TR_MSG_DBG, NULL, __VA_ARGS__ )
|
|
||||||
|
|
||||||
int tr_wildmat( const char * text,
|
|
||||||
const char * pattern );
|
|
||||||
|
|
||||||
void tr_msgInit( void );
|
|
||||||
|
|
||||||
void tr_msg( const char * file,
|
void tr_msg( const char * file,
|
||||||
int line,
|
int line,
|
||||||
|
@ -131,6 +120,62 @@ void tr_msg( const char * file,
|
||||||
const char * fmt,
|
const char * fmt,
|
||||||
... ) TR_GNUC_PRINTF( 5, 6 );
|
... ) TR_GNUC_PRINTF( 5, 6 );
|
||||||
|
|
||||||
|
#define tr_nerr( n, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_ERR ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_ERR, n, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_ninf( n, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_INF) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_INF, n, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_ndbg( n, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_DBG) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_DBG, n, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_torerr( tor, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_ERR ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_ERR, tor->info.name, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_torinf( tor, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_INF ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_INF, tor->info.name, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_tordbg( tor, ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_DBG ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_DBG, tor->info.name, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_err( ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_ERR ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_ERR, NULL, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_inf( ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_INF ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_INF, NULL, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#define tr_dbg( ... ) \
|
||||||
|
do { \
|
||||||
|
if( tr_msgLoggingIsActive( TR_MSG_DBG ) ) \
|
||||||
|
tr_msg( __FILE__, __LINE__, TR_MSG_DBG, NULL, __VA_ARGS__ ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FILE* tr_getLog( void );
|
FILE* tr_getLog( void );
|
||||||
|
|
||||||
int tr_deepLoggingIsActive( void );
|
int tr_deepLoggingIsActive( void );
|
||||||
|
@ -144,6 +189,10 @@ void tr_deepLog( const char * file,
|
||||||
char* tr_getLogTimeStr( char * buf,
|
char* tr_getLogTimeStr( char * buf,
|
||||||
int buflen );
|
int buflen );
|
||||||
|
|
||||||
|
|
||||||
|
int tr_wildmat( const char * text,
|
||||||
|
const char * pattern );
|
||||||
|
|
||||||
/** a portability wrapper for basename(). */
|
/** a portability wrapper for basename(). */
|
||||||
char* tr_basename( const char * path ) TR_GNUC_MALLOC;
|
char* tr_basename( const char * path ) TR_GNUC_MALLOC;
|
||||||
|
|
||||||
|
@ -319,29 +368,21 @@ void tr_bitfieldFree( tr_bitfield* );
|
||||||
|
|
||||||
void tr_bitfieldClear( tr_bitfield* );
|
void tr_bitfieldClear( tr_bitfield* );
|
||||||
|
|
||||||
int tr_bitfieldAdd( tr_bitfield*,
|
int tr_bitfieldAdd( tr_bitfield*, size_t bit );
|
||||||
size_t bit );
|
|
||||||
|
|
||||||
int tr_bitfieldRem( tr_bitfield*,
|
int tr_bitfieldRem( tr_bitfield*, size_t bit );
|
||||||
size_t bit );
|
|
||||||
|
|
||||||
int tr_bitfieldAddRange( tr_bitfield *,
|
int tr_bitfieldAddRange( tr_bitfield *, size_t begin, size_t end );
|
||||||
size_t begin,
|
|
||||||
size_t end );
|
|
||||||
|
|
||||||
int tr_bitfieldRemRange( tr_bitfield*,
|
int tr_bitfieldRemRange( tr_bitfield*, size_t begin, size_t end );
|
||||||
size_t begin,
|
|
||||||
size_t end );
|
|
||||||
|
|
||||||
void tr_bitfieldDifference( tr_bitfield *,
|
void tr_bitfieldDifference( tr_bitfield *, const tr_bitfield * );
|
||||||
const tr_bitfield * );
|
|
||||||
|
|
||||||
int tr_bitfieldIsEmpty( const tr_bitfield* );
|
int tr_bitfieldIsEmpty( const tr_bitfield* );
|
||||||
|
|
||||||
size_t tr_bitfieldCountTrueBits( const tr_bitfield* );
|
size_t tr_bitfieldCountTrueBits( const tr_bitfield* );
|
||||||
|
|
||||||
tr_bitfield* tr_bitfieldOr( tr_bitfield*,
|
tr_bitfield* tr_bitfieldOr( tr_bitfield*, const tr_bitfield* );
|
||||||
const tr_bitfield* );
|
|
||||||
|
|
||||||
/** A stripped-down version of bitfieldHas to be used
|
/** A stripped-down version of bitfieldHas to be used
|
||||||
for speed when you're looping quickly. This version
|
for speed when you're looping quickly. This version
|
||||||
|
|
|
@ -55,7 +55,9 @@ struct tr_web
|
||||||
long timer_ms;
|
long timer_ms;
|
||||||
CURLM * multi;
|
CURLM * multi;
|
||||||
tr_session * session;
|
tr_session * session;
|
||||||
|
#if 0
|
||||||
tr_list * easy_queue;
|
tr_list * easy_queue;
|
||||||
|
#endif
|
||||||
struct event timer_event;
|
struct event timer_event;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -144,11 +146,16 @@ addTask( void * vtask )
|
||||||
else /* don't set encoding on webseeds; it messes up binary data */
|
else /* don't set encoding on webseeds; it messes up binary data */
|
||||||
curl_easy_setopt( easy, CURLOPT_ENCODING, "" );
|
curl_easy_setopt( easy, CURLOPT_ENCODING, "" );
|
||||||
|
|
||||||
if( web->still_running >= MAX_CONCURRENT_TASKS ) {
|
#if 0
|
||||||
|
if( web->still_running >= MAX_CONCURRENT_TASKS )
|
||||||
|
{
|
||||||
tr_list_append( &web->easy_queue, easy );
|
tr_list_append( &web->easy_queue, easy );
|
||||||
dbgmsg( " >> enqueueing a task ... size is now %d",
|
dbgmsg( " >> enqueueing a task ... size is now %d",
|
||||||
tr_list_size( web->easy_queue ) );
|
tr_list_size( web->easy_queue ) );
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
const CURLMcode rc = curl_multi_add_handle( web->multi, easy );
|
const CURLMcode rc = curl_multi_add_handle( web->multi, easy );
|
||||||
if( rc == CURLM_OK )
|
if( rc == CURLM_OK )
|
||||||
++web->still_running;
|
++web->still_running;
|
||||||
|
@ -243,6 +250,7 @@ restart_timer( tr_web * g )
|
||||||
evtimer_add( &g->timer_event, &interval );
|
evtimer_add( &g->timer_event, &interval );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static void
|
static void
|
||||||
add_tasks_from_queue( tr_web * g )
|
add_tasks_from_queue( tr_web * g )
|
||||||
{
|
{
|
||||||
|
@ -263,6 +271,7 @@ add_tasks_from_queue( tr_web * g )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
web_close( tr_web * g )
|
web_close( tr_web * g )
|
||||||
|
@ -295,7 +304,9 @@ tr_multi_socket_action( tr_web * g, int fd, int mask )
|
||||||
|
|
||||||
remove_finished_tasks( g );
|
remove_finished_tasks( g );
|
||||||
|
|
||||||
|
#if 0
|
||||||
add_tasks_from_queue( g );
|
add_tasks_from_queue( g );
|
||||||
|
#endif
|
||||||
|
|
||||||
if( !g->still_running ) {
|
if( !g->still_running ) {
|
||||||
stop_timer( g );
|
stop_timer( g );
|
||||||
|
|
Loading…
Add table
Reference in a new issue