void UpnpPrintf(Upnp_LogLevel DLevel, Dbg_Module Module, const char *DbgFileName, int DbgLineNo, const char *FmtStr, ...) { va_list ArgList; if (!DebugAtThisLevel(DLevel, Module)) return; ithread_mutex_lock(&GlobalDebugMutex); va_start(ArgList, FmtStr); if (!DEBUG_TARGET) { if (DbgFileName) UpnpDisplayFileAndLine(stdout, DbgFileName, DbgLineNo); vfprintf(stdout, FmtStr, ArgList); fflush(stdout); } else if (DLevel == 0) { if (DbgFileName) UpnpDisplayFileAndLine(ErrFileHnd, DbgFileName, DbgLineNo); vfprintf(ErrFileHnd, FmtStr, ArgList); fflush(ErrFileHnd); } else { if (DbgFileName) UpnpDisplayFileAndLine(InfoFileHnd, DbgFileName, DbgLineNo); vfprintf(InfoFileHnd, FmtStr, ArgList); fflush(InfoFileHnd); } va_end(ArgList); ithread_mutex_unlock(&GlobalDebugMutex); }
/************************************************************************** * Function : UpnpPrintf * * Parameters: * IN Dbg_Level DLevel: The level of the debug logging. It will decide * whether debug statement will go to standard output, or any of the * log files. * IN Dbg_Module Module: debug will go in the name of this module * IN char *DbgFileName: Name of the file from where debug statement is * coming * IN int DbgLineNo : Line number of the file from where debug statement is * coming * IN char * FmtStr, ...: Variable number of arguments that will go in the * debug statement * * Description: * This functions prints the debug statement either on the startdard output * or log file along with the information from where this debug statement * is coming * Returns: void ***************************************************************************/ DBGONLY( void UpnpPrintf( IN Dbg_Level DLevel, IN Dbg_Module Module, IN char *DbgFileName, IN int DbgLineNo, IN char *FmtStr, ... ) { va_list ArgList; va_start( ArgList, FmtStr ); if( DEBUG_LEVEL < DLevel ) return; if( DEBUG_ALL == 0 ) { switch ( Module ) { case SSDP: if( DEBUG_SSDP == 1 ) break; else return; case SOAP: if( DEBUG_SOAP == 1 ) break; else return; case GENA: if( DEBUG_GENA == 1 ) break; else return; case TPOOL: if( DEBUG_TPOOL == 1 ) break; else return; case MSERV: if( DEBUG_MSERV == 1 ) break; else return; case DOM: if( DEBUG_DOM == 1 ) break; else return; case HTTP: if( DEBUG_HTTP == 1 ) break; else return; case API: if( DEBUG_API == 1 ) break; else return; default: return;} } ithread_mutex_lock( &GlobalDebugMutex ); if( DEBUG_TARGET == 0 ) { if( DbgFileName ) { UpnpDisplayFileAndLine( stdout, DbgFileName, DbgLineNo );} vfprintf( stdout, FmtStr, ArgList ); fflush( stdout );} else { if( DLevel == 0 ) { if( DbgFileName ) { UpnpDisplayFileAndLine( ErrFileHnd, DbgFileName, DbgLineNo );} vfprintf( ErrFileHnd, FmtStr, ArgList ); fflush( ErrFileHnd );} else { if( DbgFileName ) { UpnpDisplayFileAndLine( InfoFileHnd, DbgFileName, DbgLineNo );} vfprintf( InfoFileHnd, FmtStr, ArgList ); fflush( InfoFileHnd );} } va_end( ArgList ); ithread_mutex_unlock( &GlobalDebugMutex );}