Changeset 784:e87d083d0342 in freeDiameter
- Timestamp:
- Mar 30, 2012, 4:19:33 AM (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/freeDiameter/libfdproto.h
r778 r784 154 154 */ 155 155 char * fd_log_time ( struct timespec * ts, char * buf, size_t len ); 156 157 /* 158 * FUNCTION: fd_log_handler_register 159 * MACRO: 160 * 161 * PARAMETERS: 162 * fstr : Stream where the text will be sent (default: stdout) 163 * format : Same format string as in the printf function 164 * va_list : Argument list 165 * 166 * DESCRIPTION: 167 * Register an external method for logging purposes. 168 * 169 * RETURN VALUE: 170 * int : Success or failure 171 */ 172 int fd_log_handler_register ( void (*logger)(const char * format, va_list *args) ); 173 174 /* 175 * FUNCTION: fd_log_handler_unregister 176 * MACRO: 177 * 178 * PARAMETERS: 179 * 180 * DESCRIPTION: 181 * Unregister the external logging function. 182 * 183 * RETURN VALUE: 184 * int : Success or failure 185 */ 186 int fd_log_handler_unregister ( void ); 156 187 157 188 -
libfdproto/log.c
r740 r784 50 50 int fd_breakhere(void) { return ++fd_breaks; } 51 51 52 /* Allow passing of the log and debug information from base stack to extensions */ 53 void (*fd_external_logger)( const char * format, va_list *args ) = NULL; 54 55 /* Register an dexternal call back for tracing and debug */ 56 int fd_log_handler_register( void (*logger)(const char * format, va_list *args)) 57 { 58 CHECK_PARAMS( logger ); 59 60 if ( fd_external_logger != NULL ) 61 { 62 return EALREADY; /* only one registeration allowed */ 63 } 64 else 65 { 66 fd_external_logger = logger; 67 } 68 return 0; 69 } 70 71 /* Implement a simple reset function here */ 72 int fd_log_handler_unregister ( void ) 73 { 74 fd_external_logger = NULL; 75 return 0; /* Successfull in all cases. */ 76 } 77 52 78 static void fd_cleanup_mutex_silent( void * mutex ) 53 79 { … … 65 91 66 92 va_start(ap, format); 67 vfprintf( fstr ?: stdout, format, ap); 93 if ( fd_external_logger != NULL ) 94 { 95 fd_external_logger( format, &ap ); 96 } 97 else 98 { 99 vfprintf( fstr ?: stdout, format, ap); 100 fflush(fstr ?: stdout); 101 } 68 102 va_end(ap); 69 fflush(fstr ?: stdout);70 103 71 104 pthread_cleanup_pop(0);
Note: See TracChangeset
for help on using the changeset viewer.