aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2006-03-13 00:25:36 +0000
committerNick Mathewson <nickm@torproject.org>2006-03-13 00:25:36 +0000
commit0c132ee2a1be2a4f6ce081bc883d88dcd810e8b8 (patch)
treeb65b1a626cb3486ef8a3a3078760e9460223efb0 /src/common
parentbd8ffccae7e1bb4030f9ca5e6dd9c8918256de75 (diff)
downloadtor-0c132ee2a1be2a4f6ce081bc883d88dcd810e8b8.tar
tor-0c132ee2a1be2a4f6ce081bc883d88dcd810e8b8.tar.gz
Instead of listing a set of compilers that prefers __func__ to __FUNCTION__, use autoconf. Also, prefer __func__ in our own code: __func__ is a C99 standard, whereas __FUNCTION__ is not. [Fixes bug 254.]
svn:r6144
Diffstat (limited to 'src/common')
-rw-r--r--src/common/compat.h25
-rw-r--r--src/common/log.h24
-rw-r--r--src/common/util.h4
3 files changed, 34 insertions, 19 deletions
diff --git a/src/common/compat.h b/src/common/compat.h
index 417b40c13..08b3f7646 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -52,14 +52,29 @@
#define INLINE inline
#endif
-/* Windows compilers before VC7 don't have __FUNCTION__. */
-#if defined(_MSC_VER) && _MSC_VER < 1300
-#define __FUNCTION__ "???"
+/* Try to get a reasonable __func__ substitute in place. */
+#if defined(_MSC_VER)
+/* MSVC compilers before VC7 don't have __func__ at all; later ones call it
+ * __FUNCTION__. */
+#if _MSC_VER < 1300
+#define __func__ "???"
+#else
+#define __func__ __FUNCTION__
#endif
-#if defined(__sgi) && !defined(__GNUC__) && defined(__c99)
-#define __FUNCTION__ __func__
+#else
+/* For platforms where autoconf works, make sure __func__ is defined
+ * sanely. */
+#ifndef HAVE_MACRO__func__
+#ifdef HAVE_MACRO__FUNCTION__
+#define __func__ __FUNCTION__
+#elif HAVE_MACRO__FUNC__
+#define __func__ __FUNC__
+#else
+#define __func__ "???"
#endif
+#endif /* ifndef MAVE_MACRO__func__ */
+#endif /* if(not windows) */
/* ===== String compatibility */
#ifdef MS_WINDOWS
diff --git a/src/common/log.h b/src/common/log.h
index cf2f727f5..1b4c96e8f 100644
--- a/src/common/log.h
+++ b/src/common/log.h
@@ -149,7 +149,7 @@ void _log_warn(uint32_t domain, const char *format, ...);
void _log_err(uint32_t domain, const char *format, ...);
#if defined(_MSC_VER) && _MSC_VER < 1300
-/* MSVC 6 and earlier don't have __FUNCTION__, or even __LINE__. */
+/* MSVC 6 and earlier don't have __func__, or even __LINE__. */
#define log_fn _log_fn
#define log_debug _log_debug
#define log_info _log_info
@@ -170,18 +170,18 @@ extern const char *_log_fn_function_name;
/* 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
-#define log_debug (_log_fn_function_name=__FUNCTION__),_log_debug
-#define log_info (_log_fn_function_name=__FUNCTION__),_log_info
-#define log_notice (_log_fn_function_name=__FUNCTION__),_log_notice
-#define log_warn (_log_fn_function_name=__FUNCTION__),_log_warn
-#define log_err (_log_fn_function_name=__FUNCTION__),_log_err
+#define log_fn (_log_fn_function_name=__func__),_log_fn
+#define log_debug (_log_fn_function_name=__func__),_log_debug
+#define log_info (_log_fn_function_name=__func__),_log_info
+#define log_notice (_log_fn_function_name=__func__),_log_notice
+#define log_warn (_log_fn_function_name=__func__),_log_warn
+#define log_err (_log_fn_function_name=__func__),_log_err
/*
-#define debug (_log_fn_function_name=__FUNCTION__),_debug
-#define info (_log_fn_function_name=__FUNCTION__),_info
-#define notice (_log_fn_function_name=__FUNCTION__),_notice
-#define warn (_log_fn_function_name=__FUNCTION__),_warn
-#define err (_log_fn_function_name=__FUNCTION__),_err
+#define debug (_log_fn_function_name=__func__),_debug
+#define info (_log_fn_function_name=__func__),_info
+#define notice (_log_fn_function_name=__func__),_notice
+#define warn (_log_fn_function_name=__func__),_warn
+#define err (_log_fn_function_name=__func__),_err
*/
#endif
diff --git a/src/common/util.h b/src/common/util.h
index bed4f16c5..cdcd64f6b 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -41,9 +41,9 @@
#define tor_assert(expr) do { \
if (!(expr)) { \
log(LOG_ERR, LD_BUG, "%s:%d: %s: Assertion %s failed; aborting.", \
- _SHORT_FILE_, __LINE__, __FUNCTION__, #expr); \
+ _SHORT_FILE_, __LINE__, __func__, #expr); \
fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n", \
- _SHORT_FILE_, __LINE__, __FUNCTION__, #expr); \
+ _SHORT_FILE_, __LINE__, __func__, #expr); \
abort(); \
} } while (0)
#endif