[or-cvs] Instead of listing a set of compilers that prefers __func__...

Nick Mathewson nickm at seul.org
Mon Mar 13 00:25:38 UTC 2006


Update of /home/or/cvsroot/tor/src/common
In directory moria:/tmp/cvs-serv5741/src/common

Modified Files:
	compat.h log.h util.h 
Log Message:
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.]

Index: compat.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/compat.h,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -p -d -r1.42 -r1.43
--- compat.h	9 Feb 2006 05:46:48 -0000	1.42
+++ compat.h	13 Mar 2006 00:25:36 -0000	1.43
@@ -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

Index: log.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/log.h,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -p -d -r1.67 -r1.68
--- log.h	18 Feb 2006 07:18:14 -0000	1.67
+++ log.h	13 Mar 2006 00:25:36 -0000	1.68
@@ -149,7 +149,7 @@ void _log_warn(uint32_t domain, const ch
 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
 

Index: util.h
===================================================================
RCS file: /home/or/cvsroot/tor/src/common/util.h,v
retrieving revision 1.155
retrieving revision 1.156
diff -u -p -d -r1.155 -r1.156
--- util.h	5 Mar 2006 09:50:25 -0000	1.155
+++ util.h	13 Mar 2006 00:25:36 -0000	1.156
@@ -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



More information about the tor-commits mailing list