mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
ugly macros to make log_fn play nice on non-GCC compilers.
svn:r2894
This commit is contained in:
parent
7a8ac5dfef
commit
5b668d8557
@ -203,7 +203,9 @@ void _log(int severity, const char *format, ...)
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Output a message to the log, prefixed with a function name <b>fn</b>. */
|
/** Output a message to the log, prefixed with a function name <b>fn</b>. */
|
||||||
|
#ifdef __GNUC__
|
||||||
void _log_fn(int severity, const char *fn, const char *format, ...)
|
void _log_fn(int severity, const char *fn, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -211,6 +213,17 @@ void _log_fn(int severity, const char *fn, const char *format, ...)
|
|||||||
logv(severity, fn, format, ap);
|
logv(severity, fn, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
const char *_log_fn_function_name=NULL;
|
||||||
|
void _log_fn(int severity, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap,format);
|
||||||
|
logv(severity, _log_fn_function_name, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
_log_fn_function_name = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Close all open log files. */
|
/** Close all open log files. */
|
||||||
void close_logs()
|
void close_logs()
|
||||||
|
@ -81,7 +81,14 @@ void _log_fn(int severity, const char *funcname, const char *format, ...)
|
|||||||
#define log_fn(severity, args...) \
|
#define log_fn(severity, args...) \
|
||||||
_log_fn(severity, __PRETTY_FUNCTION__, args)
|
_log_fn(severity, __PRETTY_FUNCTION__, args)
|
||||||
#else
|
#else
|
||||||
#define log_fn _log
|
/* We don't have GCC's varargs macros, so use a global variable to pass the
|
||||||
|
* function name to log_fn */
|
||||||
|
extern const char *_log_fn_function_name;
|
||||||
|
void _log_fn(int severity, const char *format, ...);
|
||||||
|
/* We abuse the comma operator here, since we can't use the standard
|
||||||
|
* do {...} while(0) trick to wrap this macro, since the macro can't take
|
||||||
|
* arguments. */
|
||||||
|
#define log_fn (_log_fn_function_name=__FUNCTION__),_log_fn
|
||||||
#endif
|
#endif
|
||||||
#define log _log /* hack it so we don't conflict with log() as much */
|
#define log _log /* hack it so we don't conflict with log() as much */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user